OLD | NEW |
---|---|
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" | |
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | |
3 <html xmlns="http://www.w3.org/1999/xhtml"> | |
4 <head> | |
5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | |
6 <meta http-equiv="refresh" content="9999999999"/> | |
7 <title>BuildBot: Chromium</title> | |
8 <link rel="stylesheet" href="default.css" type="text/css" /> | |
9 <link rel="alternate" type="application/rss+xml" title="RSS" href="rss"> | |
10 | |
11 <script type='text/javascript'> | |
12 // <![CDATA[ | |
13 // | |
14 | 1 |
15 // | |
16 // Functions used to display the build status bubble on box click. | |
17 // | |
18 | |
19 // show the build status box. This is called when the user clicks on a block. | |
20 function showBuildBox(url, event) { | |
21 // Find the current curson position. | |
22 var cursorPosTop = (window.event ? window.event.clientY : event.pageY) | |
23 var cursorPosLeft = (window.event ? window.event.clientX : event.pageX) | |
24 | |
25 // Offset the position by 5, to make the window appears under the cursor. | |
26 cursorPosTop = cursorPosTop + document.body.scrollTop -5 ; | |
27 cursorPosLeft = cursorPosLeft + document.body.scrollLeft - 5; | |
28 | |
29 // Move the div (hidden) under the cursor. | |
30 var divBox = document.getElementById('divBox'); | |
31 divBox.style.top = parseInt(cursorPosTop) + 'px'; | |
32 divBox.style.left = parseInt(cursorPosLeft) + 'px'; | |
33 | |
34 // Reload the hidden frame with the build page we want to show. | |
35 // The onload even on this frame will update the div and make it visible. | |
36 document.getElementById("frameBox").src = url | |
37 | |
38 // We don't want to reload the page. | |
39 return false; | |
40 } | |
41 | |
42 // OnLoad handler for the iframe containing the build to show. | |
43 function updateDiv(event) { | |
44 // Get the frame innerHTML. | |
45 var iframeContent = document.getElementById("frameBox").contentWindow.docume nt.body.innerHTML; | |
46 | |
47 // If there is any content, update the div, and make it visible. | |
48 if (iframeContent) { | |
49 var divBox = document.getElementById('divBox'); | |
50 divBox.innerHTML = iframeContent ; | |
51 divBox.style.display = "block"; | |
52 } | |
53 } | |
54 | |
55 // Util functions to know if an element is contained inside another element. | |
56 // We use this to know when we mouse out our build status div. | |
57 function containsDOM (container, containee) { | |
58 var isParent = false; | |
59 do { | |
60 if ((isParent = container == containee)) | |
61 break; | |
62 containee = containee.parentNode; | |
63 } while (containee != null); | |
64 | |
65 return isParent; | |
66 } | |
67 | |
68 // OnMouseOut handler. Returns true if the mouse moved out of the element. | |
69 // It is false if the mouse is still in the element, but in a blank part of it, | |
70 // like in an empty table cell. | |
71 function checkMouseLeave(element, event) { | |
72 if (element.contains && event.toElement) { | |
73 return !element.contains(event.toElement); | |
74 } | |
75 else if (event.relatedTarget) { | |
76 return !containsDOM(element, event.relatedTarget); | |
77 } | |
78 } | |
79 | |
80 // Creates a new cookie. | |
81 function createCookie(name, value, day) { | |
82 var date = new Date(); | |
83 date.setTime(date.getTime() + (day * 24 * 60 * 60 * 1000)); | |
84 var expires = "; expires=" + date.toGMTString(); | |
85 document.cookie = name + "=" + value+expires + "; path=/"; | |
86 } | |
87 | |
88 // Returns the vaue of a cookie, or null if it does not exist. | |
89 function readCookie(name) { | |
90 var begin = name + "="; | |
91 var data = document.cookie.split(';'); | |
92 for(var i = 0; i < data.length; i++) { | |
93 var cookie = data[i]; | |
94 while (cookie.charAt(0) == ' ') | |
95 cookie = cookie.substring(1, cookie.length); | |
96 if (cookie.indexOf(begin) == 0) | |
97 return cookie.substring(begin.length, cookie.length); | |
98 } | |
99 | |
100 return null; | |
101 } | |
102 | |
103 // Deletes a cookie. | |
104 function eraseCookie(name) { | |
105 createCookie(name, "", -1); | |
106 } | |
107 | |
108 // Hides all "details" and "comments" section. | |
109 function collapse() { | |
110 // Hide all Comments sections. | |
111 var comments = document.querySelectorAll('.DevComment'); | |
112 for(var i = 0; i < comments.length; i++) { | |
113 comments[i].style.display = "none"; | |
114 } | |
115 | |
116 // Hide all details sections. | |
117 var details = document.querySelectorAll('.DevDetails'); | |
118 for(var i = 0; i < details.length; i++) { | |
119 details[i].style.display = "none"; | |
120 } | |
121 | |
122 // Fix the rounding on the Revision box. (Lower right corner must be round) | |
123 var revisions = document.querySelectorAll('.DevRev'); | |
124 for(var i = 0; i < revisions.length; i++) { | |
125 revisions[i].className = revisions[i].className + ' DevRevCollapse'; | |
126 } | |
127 | |
128 // Fix the rounding on the last category box. (Lower left corner must be rou nd) | |
129 var status = document.querySelectorAll('.last'); | |
130 for(var i = 0; i < status.length; i++) { | |
131 status[i].className = status[i].className + ' DevStatusCollapse'; | |
132 } | |
133 | |
134 // Create a cookie to remember that we want the view to be collapsed. | |
135 createCookie('collapsed', 'true', 30) | |
136 | |
137 // Hide the collapse and the unmerge buttons. | |
138 document.querySelectorAll('.collapse')[0].style.display = 'none' | |
139 document.querySelectorAll('.unmerge')[0].style.display = 'none' | |
140 | |
141 // Activate the merge and expand buttons. | |
142 document.querySelectorAll('.uncollapse')[0].style.display = 'inline' | |
143 document.querySelectorAll('.merge')[0].style.display = 'inline' | |
144 } | |
145 | |
146 // Expands the view. This is the opposite of "Collapse" | |
147 function uncollapse() { | |
148 unmerge(); | |
149 | |
150 // Make the comments visible. | |
151 var comments = document.querySelectorAll('.DevComment'); | |
152 for(var i = 0; i < comments.length; i++) { | |
153 comments[i].style.display = ""; | |
154 } | |
155 | |
156 // Make the details visible. | |
157 var details = document.querySelectorAll('.DevDetails'); | |
158 for(var i = 0; i < details.length; i++) { | |
159 details[i].style.display = ""; | |
160 } | |
161 | |
162 // Remove the round corner (lower right) for the Revision box. | |
163 var revisions = document.querySelectorAll('.DevRev'); | |
164 for(var i = 0; i < revisions.length; i++) { | |
165 revisions[i].className = revisions[i].className.replace('DevRevCollapse' , ''); | |
166 } | |
167 | |
168 // Remoe the round corner (lower left) for the last category box. | |
169 var status = document.querySelectorAll('.DevStatus'); | |
170 for(var i = 0; i < status.length; i++) { | |
171 status[i].className = status[i].className.replace('DevStatusCollapse', ' '); | |
172 } | |
173 | |
174 // Delete the cookies that say that we want to be collapsed or merged. | |
175 eraseCookie('collapsed') | |
176 eraseCookie('merged') | |
177 | |
178 // Display the "collapse" and "merge" buttons. | |
179 document.querySelectorAll('.collapse')[0].style.display = 'inline' | |
180 document.querySelectorAll('.merge')[0].style.display = 'inline' | |
181 | |
182 // Remove the "uncollapse" and "unmerge" buttons. | |
183 document.querySelectorAll('.uncollapse')[0].style.display = 'none' | |
184 document.querySelectorAll('.unmerge')[0].style.display = 'none' | |
185 } | |
186 | |
187 // Merge all the status boxes together. | |
188 function merge() { | |
189 collapse(); | |
190 | |
191 // Hide all the spacing. | |
192 var spacing = document.querySelectorAll('.DevStatusSpacing'); | |
193 for(var i = 0; i < spacing.length; i++) { | |
194 spacing[i].style.display = "none"; | |
195 } | |
196 | |
197 // Each boxes have, in the className, a tag that uniquely represents the | |
198 // build where this data comes from. | |
199 // Since we want to merge all the boxes coming from the same build, we | |
200 // parse the document to find all the builds, and then, for each build, we | |
201 // concatenate the boxes. | |
202 | |
203 var allTags = []; | |
204 all = document.getElementsByTagName('*') | |
205 for(var i = 0; i < all.length; i++) { | |
206 var element = all[i]; | |
207 start = element.className.indexOf('Tag') | |
208 if (start != -1) { | |
209 var className = "" | |
210 end = element.className.indexOf(' ', start) | |
211 if (end != -1) { | |
212 className = element.className.substring(start, end); | |
213 } else { | |
214 className = element.className.substring(start); | |
215 } | |
216 allTags[className] = 1; | |
217 } | |
218 } | |
219 | |
220 // Mergeall tags that we found | |
221 for (i in allTags) { | |
222 var current = document.querySelectorAll('.' + i); | |
223 | |
224 // We do the work only if there is more than 1 box with the same | |
225 // build. | |
226 if (current.length > 1) { | |
227 // Add the noround class to all the boxes. | |
228 for(var i = 0; i < current.length; i++) { | |
229 current[i].className = current[i].className + ' noround'; | |
230 } | |
231 | |
232 // Add the begin class to the first box. | |
233 current[0].className = current[0].className + ' begin'; | |
234 | |
235 // Add the end class to the last box. | |
236 last = current.length - 1; | |
237 current[last].className = current[last].className + ' end'; | |
238 } | |
239 } | |
240 | |
241 // Display the "unmerge" button. | |
242 document.querySelectorAll('.unmerge')[0].style.display = 'inline' | |
243 document.querySelectorAll('.uncollapse')[0].style.display = 'inline' | |
244 | |
245 // Remove the "merge" button. | |
246 document.querySelectorAll('.collapse')[0].style.display = 'none' | |
247 document.querySelectorAll('.merge')[0].style.display = 'none' | |
248 | |
249 // Create a cookie to remember that we want to be merged. | |
250 createCookie('merged', 'true', 30) | |
251 } | |
252 | |
253 // Un-merge the view. This is the opposite of "merge". | |
254 function unmerge() { | |
255 // We put back all the spacing. | |
256 var spacing = document.querySelectorAll('.DevStatusSpacing'); | |
257 for(var i = 0; i < spacing.length; i++) { | |
258 spacing[i].style.display = ""; | |
259 } | |
260 | |
261 // We remove the class added to all the boxes we modified. | |
262 var noround = document.querySelectorAll('.noround'); | |
263 for(var i = 0; i < noround.length; i++) { | |
264 noround[i].className = noround[i].className.replace("begin", ''); | |
265 noround[i].className = noround[i].className.replace("end", ''); | |
266 noround[i].className = noround[i].className.replace("noround", ''); | |
267 } | |
268 | |
269 // Delete the cookie, we don't want to be merged anymore. | |
270 eraseCookie('merged') | |
271 | |
272 // Display the "merge" button. | |
273 document.querySelectorAll('.merge')[0].style.display = 'inline' | |
274 | |
275 // Hide the "unmerge" button. | |
276 document.querySelectorAll('.unmerge')[0].style.display = 'none' | |
277 } | |
278 | |
279 function SetupView() { | |
280 if (readCookie('merged')) { | |
281 merge(); | |
282 } else if (readCookie('collapsed')) { | |
283 collapse(); | |
284 } | |
285 } | |
286 | |
287 document.addEventListener("DOMContentLoaded", SetupView, false); | |
288 | |
289 // ]]> | |
290 </script> | |
291 </head> | |
292 <body class="interface"> | |
293 <div class="header"> | |
294 <a href="http://build.chromium.org/p/chromium/.">Home</a> | |
295 - <a href="http://build.chromium.org/p/chromium/waterfall">Waterfall</a> | |
296 <a href="http://build.chromium.org/p/chromium/grid">Grid</a> | |
297 <a href="http://build.chromium.org/p/chromium/tgrid">T-Grid</a> | |
298 <a href="http://build.chromium.org/p/chromium/console">Console</a> | |
299 <a href="http://build.chromium.org/p/chromium/builders">Builders</a> | |
300 <a href="http://build.chromium.org/p/chromium/one_line_per_build">Recent Builds</a> | |
301 <a href="http://build.chromium.org/p/chromium/buildslaves">Buildslaves</ a> | |
302 <a href="http://build.chromium.org/p/chromium/changes">Changesources</a> | |
303 - <a href="http://build.chromium.org/p/chromium/json/help">JSON API</a> | |
304 - <a href="http://build.chromium.org/p/chromium/about">About</a> | |
305 </div> | |
306 | |
307 <hr/> | |
308 <script> | 2 <script> |
309 /** | 3 /** |
310 * Pseudo namespace for chromium - keep it short because we are in a very | 4 * Pseudo namespace for chromium - keep it short because we are in a very |
311 * narrow scope for this file. | 5 * narrow scope for this file. |
312 * @type {Object} | 6 * @type {Object} |
313 */ | 7 */ |
314 var c = {}; | 8 var c = {}; |
315 | 9 |
316 /** | 10 /** |
317 * Replaces html references with anchor tags to the same. | 11 * Replaces html references with anchor tags to the same. |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
478 <a href="http://code.google.com/p/chromium/issues/list?can=2&q=&so rt=pri+mstone&colspec=ID%20Stars%20Pri%20Area%20Type%20Status%20Summary%20Modifi ed%20Owner%20Mstone">bugs</a> | | 172 <a href="http://code.google.com/p/chromium/issues/list?can=2&q=&so rt=pri+mstone&colspec=ID%20Stars%20Pri%20Area%20Type%20Status%20Summary%20Modifi ed%20Owner%20Mstone">bugs</a> | |
479 <a href="http://dev.chromium.org/Home">dev</a> | | 173 <a href="http://dev.chromium.org/Home">dev</a> | |
480 <a href="http://www.google.com/support/chrome/">support</a> | 174 <a href="http://www.google.com/support/chrome/">support</a> |
481 </td> | 175 </td> |
482 </tr> | 176 </tr> |
483 <tr> | 177 <tr> |
484 <td style="text-align: right;"> | 178 <td style="text-align: right;"> |
485 <b>Sheriffs:</b> | 179 <b>Sheriffs:</b> |
486 </td> | 180 </td> |
487 <td> | 181 <td> |
488 <script>document.write('sheriff1')</script>,<br> | 182 <script>None</script>,<br> |
M-A Ruel
2012/05/29 18:46:33
That's expected by the unit test?
cmp
2012/05/29 19:38:03
Yes, that's expected.
I don't prime the app first
| |
489 <script>document.write('sheriff2')</script>(WebKit), | 183 <script>None</script>(WebKit), |
490 <script>document.write('sheriff3')</script>(Memory), | 184 <script>None</script>(Memory), |
491 <script>document.write('sheriff4')</script>(NaCl),<br> | 185 <script>None</script>(NaCl),<br> |
492 <script>document.write('sheriff5')</script>(Perf), | 186 <script>None</script>(Perf), |
493 <script>document.write('sheriff6, sheriff7')</script>, | 187 <script>None</script>, |
494 <script>document.write('sheriff8')</script>(CrOS),<br> | 188 <script>None</script>(CrOS),<br> |
495 <a href="https://www.google.com/calendar/render?cid=google.com_iqf ka4i9asiva67vlqqf1es094%40group.calendar.google.com">trooper schedule</a> | 189 <a href="https://www.google.com/calendar/render?cid=google.com_iqf ka4i9asiva67vlqqf1es094%40group.calendar.google.com">trooper schedule</a> |
496 </td> | 190 </td> |
497 </tr> | 191 </tr> |
498 <tr> | 192 <tr> |
499 <td style="text-align: right;"> | 193 <td style="text-align: right;"> |
500 <b>Navigate:</b> | 194 <b>Navigate:</b> |
501 </td> | 195 </td> |
502 <td colspan="2"> | 196 <td colspan="2"> |
503 <script> | 197 <script> |
504 document.write([ | 198 document.write([ |
(...skipping 9823 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
10328 }, false); | 10022 }, false); |
10329 </script> | 10023 </script> |
10330 | 10024 |
10331 </div><div class="footer" style="clear:both"> | 10025 </div><div class="footer" style="clear:both"> |
10332 <hr/> | 10026 <hr/> |
10333 [ <a class='collapse' href='#' OnClick='collapse(); return false;'>collapse</a > | 10027 [ <a class='collapse' href='#' OnClick='collapse(); return false;'>collapse</a > |
10334 <a class='uncollapse' href='#' OnClick='uncollapse(); return false;'>un-collap se</a> | 10028 <a class='uncollapse' href='#' OnClick='uncollapse(); return false;'>un-collap se</a> |
10335 <a class='merge' href="#" OnClick="merge(); return false;">merge</a> | 10029 <a class='merge' href="#" OnClick="merge(); return false;">merge</a> |
10336 <a class='unmerge' style='display: none' href="#" OnClick="unmerge(); return f alse;">un-merge</a> ] | 10030 <a class='unmerge' style='display: none' href="#" OnClick="unmerge(); return f alse;">un-merge</a> ] |
10337 </div> | 10031 </div> |
10338 </body> | |
10339 </html> | |
OLD | NEW |