Diff
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Buildbot.js (184878 => 184879)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Buildbot.js 2015-05-26 21:50:39 UTC (rev 184878)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Buildbot.js 2015-05-26 22:06:05 UTC (rev 184879)
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
+ * Copyright (C) 2013-2015 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -31,16 +31,24 @@
console.assert(queuesInfo);
this.baseURL = baseURL;
+ this.queuesInfo = queuesInfo;
this.queues = {};
+ this._normalizeQueuesInfo();
+
// We regard _needsAuthentication as a hint whether this Buildbot requires authentication so that we can show
// an appropriate initial status message (say, an "unauthorized" status if the Buildbot requires authentication)
// for its associated queues before we make the actual HTTP request for the status of each queue.
this._needsAuthentication = typeof options === "object" && options.needsAuthentication === true;
this._authenticationStatus = Buildbot.AuthenticationStatus.Unauthenticated;
- for (var id in queuesInfo)
- this.queues[id] = new BuildbotQueue(this, id, queuesInfo[id]);
+ for (var id in queuesInfo) {
+ if (queuesInfo[id].combinedQueues) {
+ for (var combinedQueueID in queuesInfo[id].combinedQueues)
+ this.queues[combinedQueueID] = new BuildbotQueue(this, combinedQueueID, queuesInfo[id].combinedQueues[combinedQueueID]);
+ } else
+ this.queues[id] = new BuildbotQueue(this, id, queuesInfo[id]);
+ }
};
BaseObject.addConstructorFunctions(Buildbot);
@@ -92,6 +100,35 @@
this._authenticationStatus = value ? Buildbot.AuthenticationStatus.Authenticated : Buildbot.AuthenticationStatus.InvalidCredentials;
},
+ _normalizeQueueInfo: function(queueInfo)
+ {
+ queueInfo.branch = queueInfo.branch || { openSource: "trunk", internal: "trunk" };
+ queueInfo.debug = queueInfo.debug || false;
+ queueInfo.builder = queueInfo.builder || false;
+ queueInfo.tester = queueInfo.tester || false;
+ queueInfo.performance = queueInfo.performance || false;
+ queueInfo.staticAnalyzer = queueInfo.staticAnalyzer || false;
+ queueInfo.leaks = queueInfo.leaks || false;
+ queueInfo.architecture = queueInfo.architecture || null;
+ queueInfo.testCategory = queueInfo.testCategory || null;
+ queueInfo.heading = queueInfo.heading || null;
+ queueInfo.crashesOnly = queueInfo.crashesOnly || false;
+ },
+
+ _normalizeQueuesInfo: function()
+ {
+ for (queueName in this.queuesInfo) {
+ var queueInfo = this.queuesInfo[queueName];
+ this._normalizeQueueInfo(queueInfo);
+ if (queueInfo.combinedQueues) {
+ for (combinedQueueName in queueInfo.combinedQueues) {
+ queueInfo.combinedQueues[combinedQueueName].platform = queueInfo.platform;
+ this._normalizeQueueInfo(queueInfo.combinedQueues[combinedQueueName]);
+ }
+ }
+ }
+ },
+
updateQueues: function(updateReason)
{
var shouldReauthenticate = updateReason === Buildbot.UpdateReason.Reauthenticate;
Added: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotCombinedQueueView.js (0 => 184879)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotCombinedQueueView.js (rev 0)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotCombinedQueueView.js 2015-05-26 22:06:05 UTC (rev 184879)
@@ -0,0 +1,211 @@
+/*
+ * Copyright (C) 2013, 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+BuildbotCombinedQueueView = function(queue)
+{
+ for (var i = 1, end = queue.combinedQueues.length; i < end; ++i) {
+ console.assert(queue.combinedQueues[0].buildbot === queue.combinedQueues[i].buildbot);
+ console.assert(queue.combinedQueues[0].branch.openSource === queue.combinedQueues[i].branch.openSource);
+ console.assert(queue.combinedQueues[0].branch.internal === queue.combinedQueues[i].branch.internal);
+ }
+
+ BuildbotQueueView.call(this, queue.combinedQueues);
+
+ this._alwaysExpand = false;
+ this.combinedQueue = queue;
+ this.update();
+};
+
+BaseObject.addConstructorFunctions(BuildbotCombinedQueueView);
+
+BuildbotCombinedQueueView.prototype = {
+ constructor: BuildbotCombinedQueueView,
+ __proto__: BuildbotQueueView.prototype,
+
+ update: function()
+ {
+ BuildbotQueueView.prototype.update.call(this);
+
+ this.element.removeChildren();
+
+ if (!this._alwaysExpand && this._queuesShouldDisplayCombined()) {
+ var releaseLabel = document.createElement("a");
+ releaseLabel.classList.add("queueLabel");
+ releaseLabel.href = ""
+ releaseLabel.textContent = this.combinedQueue.heading;
+ releaseLabel._onclick_ = function() { this._alwaysExpand = true; this.update(); return false; }.bind(this);
+ this.element.appendChild(releaseLabel);
+
+ var queue = this.queues[0]; // All queues in the combined queue are from the same buildbot.
+ if (queue.buildbot.needsAuthentication && !queue.buildbot.isAuthenticated) {
+ this._appendUnauthorizedLineView(queue);
+ return;
+ }
+
+ // Show the revision for the slowest queue, because we don't know if any newer revisions are green on all queues.
+ // This can be slightly misleading after fixing a problem, because we can show a known broken revision as green.
+ var slowestQueue = this.queues.slice().sort(function(a, b) { return BuildbotQueue.prototype.compareIterationsByRevisions(a.mostRecentSuccessfulIteration, b.mostRecentSuccessfulIteration); }).pop();
+ this._appendPendingRevisionCount(slowestQueue);
+
+ var message = this.revisionContentForIteration(slowestQueue.mostRecentSuccessfulIteration);
+ var status = new StatusLineView(message, StatusLineView.Status.Good, "all tests passed", null, null);
+ new PopoverTracker(status.statusBubbleElement, this._presentPopoverForCombinedGreenBubble.bind(this));
+ this.element.appendChild(status.element);
+ } else {
+ this.appendBuildStyle.call(this, this.queues, null, function(queue) {
+ if (queue.buildbot.needsAuthentication && !queue.buildbot.isAuthenticated) {
+ this._appendUnauthorizedLineView(queue);
+ return;
+ }
+
+ this._appendPendingRevisionCount(queue);
+
+ var firstRecentUnsuccessfulIteration = queue.firstRecentUnsuccessfulIteration;
+ var mostRecentFinishedIteration = queue.mostRecentFinishedIteration;
+ var mostRecentSuccessfulIteration = queue.mostRecentSuccessfulIteration;
+
+ if (firstRecentUnsuccessfulIteration && firstRecentUnsuccessfulIteration.loaded && mostRecentFinishedIteration && mostRecentFinishedIteration.loaded) {
+ console.assert(!mostRecentFinishedIteration.successful);
+ var message = this.revisionContentForIteration(mostRecentFinishedIteration, mostRecentFinishedIteration.productive ? mostRecentSuccessfulIteration : null);
+ if (mostRecentFinishedIteration.failed) {
+ // Direct links to some common logs.
+ var url = "" log");
+ if (!url)
+ url = ""
+ var status = StatusLineView.Status.Bad;
+ } else
+ var status = StatusLineView.Status.Danger;
+
+ // Show a popover when the URL is not a main build page one, because there are usually multiple logs, and it's good to provide a choice.
+ var needsPopover = !url;
+
+ // Some other step failed, link to main buildbot page for the iteration.
+ if (!url)
+ url = ""
+ var status = new StatusLineView(message, status, mostRecentFinishedIteration.text, null, url);
+ this.element.appendChild(status.element);
+
+ if (needsPopover)
+ new PopoverTracker(status.statusBubbleElement, this._presentIndividualQueuePopover.bind(this), mostRecentFinishedIteration);
+ }
+
+ if (mostRecentSuccessfulIteration && mostRecentSuccessfulIteration.loaded) {
+ var message = this.revisionContentForIteration(mostRecentSuccessfulIteration);
+ var url = ""
+ var status = new StatusLineView(message, StatusLineView.Status.Good, firstRecentUnsuccessfulIteration ? "last succeeded" : "all tests passed", null, url);
+ this.element.appendChild(status.element);
+ } else {
+ var status = new StatusLineView("unknown", StatusLineView.Status.Neutral, firstRecentUnsuccessfulIteration ? "last succeeded" : "all tests passed");
+ this.element.appendChild(status.element);
+
+ if (firstRecentUnsuccessfulIteration) {
+ // We have a failed iteration but no successful. It might be further back in time.
+ queue.loadMoreHistoricalIterations();
+ }
+ }
+ });
+ }
+ },
+
+ // All queues are green, or all are unauthorized (the latter case always applies to all queues, because they are all from the same buildbot).
+ _queuesShouldDisplayCombined: function()
+ {
+ for (var i = 0, end = this.queues.length; i < end; ++i) {
+ var queue = this.queues[i];
+ if (queue.buildbot.needsAuthentication && !queue.buildbot.isAuthenticated)
+ return true;
+ if (!queue.mostRecentFinishedIteration || !queue.mostRecentFinishedIteration.successful)
+ return false;
+ }
+ return true;
+ },
+
+ _presentPopoverForCombinedGreenBubble: function(element, popover)
+ {
+ var content = document.createElement("div");
+ content.className = "combined-queue-popover";
+
+ var title = document.createElement("div");
+ title.className = "popover-iteration-heading";
+ title.textContent = "latest tested revisions";
+ content.appendChild(title);
+
+ this._addDividerToPopover(content);
+
+ function addQueue(queue, view) {
+ var line = document.createElement("div");
+ var link = document.createElement("a");
+ link.className = "queue-link";
+ link.href = ""
+ link.textContent = queue.heading;
+ link.target = "_blank";
+ line.appendChild(link);
+ var revision = document.createElement("span");
+ revision.className = "revision";
+ revision.appendChild(view.revisionContentForIteration(queue.mostRecentSuccessfulIteration));
+ line.appendChild(revision);
+ content.appendChild(line);
+ }
+
+ for (var i = 0, end = this.queues.length; i < end; ++i)
+ addQueue(this.queues[i], this);
+
+ var rect = Dashboard.Rect.rectFromClientRect(element.getBoundingClientRect());
+ popover.content = content;
+ popover.present(rect, [Dashboard.RectEdge.MIN_Y, Dashboard.RectEdge.MAX_Y, Dashboard.RectEdge.MAX_X, Dashboard.RectEdge.MIN_X]);
+ return true;
+ },
+
+ _presentIndividualQueuePopover: function(element, popover, iteration)
+ {
+ var content = document.createElement("div");
+ content.className = "build-logs-popover";
+
+ function addLog(name, url) {
+ var line = document.createElement("a");
+ line.className = "build-log-link";
+ line.href = ""
+ line.textContent = name;
+ line.target = "_blank";
+ content.appendChild(line);
+ }
+
+ this._addIterationHeadingToPopover(iteration, content);
+ this._addDividerToPopover(content);
+
+ var logsHeadingLine = document.createElement("div");
+ logsHeadingLine.className = "build-logs-heading";
+ logsHeadingLine.textContent = iteration.firstFailedStepName + " failed";
+ content.appendChild(logsHeadingLine);
+
+ for (var i = 0, end = iteration.failureLogs.length; i < end; ++i)
+ addLog(iteration.failureLogs[i][0], iteration.failureLogs[i][1]);
+
+ var rect = Dashboard.Rect.rectFromClientRect(element.getBoundingClientRect());
+ popover.content = content;
+ popover.present(rect, [Dashboard.RectEdge.MIN_Y, Dashboard.RectEdge.MAX_Y, Dashboard.RectEdge.MAX_X, Dashboard.RectEdge.MIN_X]);
+ return true;
+ },
+};
Property changes on: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotCombinedQueueView.js
___________________________________________________________________
Added: svn:mime-type
Added: svn:eol-style
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotQueue.js (184878 => 184879)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotQueue.js 2015-05-26 21:50:39 UTC (rev 184878)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotQueue.js 2015-05-26 22:06:05 UTC (rev 184879)
@@ -33,18 +33,19 @@
this.buildbot = buildbot;
this.id = id;
- this.branch = info.branch || { openSource: "trunk", internal: "trunk" };
- this.platform = info.platform.name || "unknown";
- this.debug = info.debug || false;
- this.builder = info.builder || false;
- this.tester = info.tester || false;
- this.performance = info.performance || false;
- this.staticAnalyzer = info.staticAnalyzer || false;
- this.leaks = info.leaks || false;
- this.architecture = info.architecture || null;
- this.testCategory = info.testCategory || null;
- this.heading = info.heading || null;
- this.crashesOnly = info.crashesOnly || false;
+ // FIXME: Some of these are presentation only, and should be handled above BuildbotQueue level.
+ this.branch = info.branch;
+ this.platform = info.platform.name;
+ this.debug = info.debug;
+ this.builder = info.builder;
+ this.tester = info.tester;
+ this.performance = info.performance;
+ this.staticAnalyzer = info.staticAnalyzer;
+ this.leaks = info.leaks;
+ this.architecture = info.architecture;
+ this.testCategory = info.testCategory;
+ this.heading = info.heading;
+ this.crashesOnly = info.crashesOnly;
this.iterations = [];
this._knownIterations = {};
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Main.js (184878 => 184879)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Main.js 2015-05-26 21:50:39 UTC (rev 184878)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Main.js 2015-05-26 22:06:05 UTC (rev 184879)
@@ -30,11 +30,23 @@
for (var i = 0; i < buildbots.length; ++i) {
var buildbot = buildbots[i];
- for (var id in buildbot.queues) {
- var queue = buildbot.queues[id];
- var platform = categorizedQueuesByPlatformAndBuildType[queue.platform];
+ for (var id in buildbot.queuesInfo) {
+ if (buildbot.queuesInfo[id].combinedQueues) {
+ var info = buildbot.queuesInfo[id];
+ var queue = {
+ id: id,
+ branch: info.branch,
+ platform: info.platform.name,
+ heading: info.heading,
+ combinedQueues: Object.keys(info.combinedQueues).map(function(combinedQueueID) { return buildbot.queues[combinedQueueID]; }),
+ };
+ } else
+ var queue = buildbot.queues[id];
+
+ var platformName = queue.platform;
+ var platform = categorizedQueuesByPlatformAndBuildType[platformName];
if (!platform)
- platform = categorizedQueuesByPlatformAndBuildType[queue.platform] = {};
+ platform = categorizedQueuesByPlatformAndBuildType[platformName] = {};
if (!platform.builders)
platform.builders = [];
@@ -49,6 +61,8 @@
categoryName = "leaks";
else if (queue.staticAnalyzer)
categoryName = "staticAnalyzer";
+ else if ("combinedQueues" in queue)
+ categoryName = "combinedQueues";
else {
console.assert("Unknown queue type.");
continue;
@@ -220,17 +234,21 @@
cell.appendChild(view.element);
}
- row.appendChild(cell);
+ if (platformQueues[BubblesCategory]) {
+ var view = new BubbleQueueView(platformQueues[BubblesCategory]);
+ cell.appendChild(view.element);
+ }
- if (hasBubbles) {
- if (platformQueues[BubblesCategory]) {
- var view = new BubbleQueueView(platformQueues[BubblesCategory]);
+ // Currently, all combined queues are in Other column.
+ if (platformQueues.combinedQueues) {
+ for (var i = 0; i < platformQueues.combinedQueues.length; ++i) {
+ var view = new BuildbotCombinedQueueView(platformQueues.combinedQueues[i]);
cell.appendChild(view.element);
}
-
- row.appendChild(cell);
}
+ row.appendChild(cell);
+
table.appendChild(row);
}
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/WebKitBuildbot.js (184878 => 184879)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/WebKitBuildbot.js 2015-05-26 21:50:39 UTC (rev 184878)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/WebKitBuildbot.js 2015-05-26 22:06:05 UTC (rev 184879)
@@ -33,6 +33,10 @@
"Apple Mavericks Release WK1 (Tests)": {platform: Dashboard.Platform.MacOSXMavericks, debug: false, tester: true, testCategory: Buildbot.TestCategory.WebKit1},
"Apple Mavericks Release WK2 (Tests)": {platform: Dashboard.Platform.MacOSXMavericks, debug: false, tester: true, testCategory: Buildbot.TestCategory.WebKit2},
"Apple Mavericks Release WK2 (Perf)": {platform: Dashboard.Platform.MacOSXMavericks, debug: false, performance: true, heading: "Performance"},
+ "Apple Mavericks JSC": {platform: Dashboard.Platform.MacOSXMavericks, heading: "_javascript_", combinedQueues: {
+ "Apple Mavericks 32-bit JSC (BuildAndTest)": {heading: "32-bit JSC (BuildAndTest)"},
+ "Apple Mavericks LLINT CLoop (BuildAndTest)": {heading: "LLINT CLoop (BuildAndTest)"},
+ }},
"Apple Yosemite Debug (Build)": {platform: Dashboard.Platform.MacOSXYosemite, debug: true, builder: true, architecture: Buildbot.BuildArchitecture.SixtyFourBit},
"Apple Yosemite Release (Build)": {platform: Dashboard.Platform.MacOSXYosemite, debug: false, builder: true, architecture: Buildbot.BuildArchitecture.SixtyFourBit},
"Apple Yosemite Release (32-bit Build)": {platform: Dashboard.Platform.MacOSXYosemite, builder: true, architecture: Buildbot.BuildArchitecture.ThirtyTwoBit},
@@ -42,6 +46,12 @@
"Apple Yosemite Release WK2 (Tests)": {platform: Dashboard.Platform.MacOSXYosemite, debug: false, tester: true, testCategory: Buildbot.TestCategory.WebKit2},
"Apple Yosemite Release WK2 (Perf)": {platform: Dashboard.Platform.MacOSXYosemite, debug: false, performance: true, heading: "Performance"},
"Apple Yosemite (Leaks)": {platform: Dashboard.Platform.MacOSXYosemite, debug: true, leaks: true},
+ "Apple Yosemite JSC": {platform: Dashboard.Platform.MacOSXYosemite, heading: "_javascript_", combinedQueues: {
+ "Apple Yosemite 32-bit JSC (BuildAndTest)": {heading: "32-bit JSC (BuildAndTest)"},
+ "Apple Yosemite LLINT CLoop (BuildAndTest)": {heading: "LLINT CLoop (BuildAndTest)"},
+ "Apple Yosemite Debug JSC (Tests)": {heading: "Debug JSC (Tests)"},
+ "Apple Yosemite Release JSC (Tests)": {heading: "Release JSC (Tests)"},
+ }},
"Apple Win Debug (Build)": {platform: Dashboard.Platform.Windows7, debug: true, builder: true, architecture: Buildbot.BuildArchitecture.ThirtyTwoBit},
"Apple Win Release (Build)": {platform: Dashboard.Platform.Windows7, builder: true, architecture: Buildbot.BuildArchitecture.ThirtyTwoBit},
"Apple Win 7 Debug (Tests)": {platform: Dashboard.Platform.Windows7, debug: true, tester: true, testCategory: Buildbot.TestCategory.WebKit1},
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Styles/QueueView.css (184878 => 184879)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Styles/QueueView.css 2015-05-26 21:50:39 UTC (rev 184878)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Styles/QueueView.css 2015-05-26 22:06:05 UTC (rev 184879)
@@ -121,7 +121,8 @@
.bubble-server-popover,
.performance-popover,
-.leaks-popover {
+.leaks-popover,
+.combined-queue-popover {
font-family: "HelveticaNeue-Light", "Helvetica Neue", sans-serif;
color: rgb(145, 135, 95);
font-size: 12px;
@@ -152,3 +153,7 @@
.performance-popover .dashboard-link {
color: blue;
}
+
+.combined-queue-popover .revision {
+ padding-left: 7px;
+}
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/index.html (184878 => 184879)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/index.html 2015-05-26 21:50:39 UTC (rev 184878)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/index.html 2015-05-26 22:06:05 UTC (rev 184879)
@@ -50,6 +50,7 @@
<script src=""
<script src=""
<script src=""
+ <script src=""
<script src=""
<script src=""
<script src=""
Modified: trunk/Tools/ChangeLog (184878 => 184879)
--- trunk/Tools/ChangeLog 2015-05-26 21:50:39 UTC (rev 184878)
+++ trunk/Tools/ChangeLog 2015-05-26 22:06:05 UTC (rev 184879)
@@ -1,3 +1,46 @@
+2015-05-26 Alexey Proskuryakov <a...@apple.com>
+
+ Botwatcher's dashboard doesn't show JSC test regressions on Apple bots
+ https://bugs.webkit.org/show_bug.cgi?id=143091
+ rdar://problem/19330328
+
+ Reviewed by Darin Adler and Timothy Hatcher.
+
+ We have many of these, which are hard to fit on the dashboard. Added a view that
+ collapses to a single green bubble when everything is good, and expands when there
+ are failures (or manually).
+
+ * BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/index.html: Added BuildbotCombinedQueueView.js
+
+ * BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Buildbot.js:
+ (Buildbot.prototype.set isAuthenticated):
+ (Buildbot.prototype._normalizeQueueInfo):
+ (Buildbot.prototype._normalizeQueuesInfo):
+ (Buildbot.prototype.updateQueues):
+ Moved queue info normalization here from BuildbitQueue. The latter is a model class
+ that shouldn't have to know about presentation, and this lets us leep the knowledge
+ about combined queues out if it. Later, we can refactor existing code, and move out
+ all knowledge about headings and such.
+
+ * BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotCombinedQueueView.js:
+ Added the new view. It's not quite universal, and doesn't have as helpful popovers
+ as other views, but we can extend it when/if we use it for more than JSC.
+
+ * BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotQueue.js:
+ (BuildbotQueue): Now that info is normalized before creating a queue, don't do that here.
+
+ * BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Main.js:
+ (documentReady): Added support for combined queues. These are currently always ending up
+ in Other column, but it's easy to customize in the future if we need to.
+
+ * BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/WebKitBuildbot.js:
+ (WebKitBuildbot): Added JSC queus.
+
+ * BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Styles/QueueView.css:
+ (.combined-queue-popover):
+ (.combined-queue-popover .revision):
+ Added styles for the combined view.
+
2015-05-26 Dan Bernstein <m...@apple.com>
Changed a file to use Unix line endings.