Mercurial > hg > config
comparison chrome/pageloader.js @ 200:31249cbe4f19
Bug 629691 - pageloader.xpi does not support e10s for Tp chrome testing. r=jmaher
| author | Joel Maher <jmaher@mozilla.com> |
|---|---|
| date | Sun, 30 Jan 2011 10:21:05 -0500 |
| parents | 59d4f04497dd |
| children | bffb8b1b0948 |
comparison
equal
deleted
inserted
replaced
| 199:eab9ffc922b1 | 200:31249cbe4f19 |
|---|---|
| 60 var cycle; | 60 var cycle; |
| 61 var report; | 61 var report; |
| 62 var renderReport; | 62 var renderReport; |
| 63 var noisy = false; | 63 var noisy = false; |
| 64 var timeout = -1; | 64 var timeout = -1; |
| 65 var delay = 250; | |
| 65 var timeoutEvent = -1; | 66 var timeoutEvent = -1; |
| 66 var running = false; | 67 var running = false; |
| 67 var forceCC = true; | 68 var forceCC = true; |
| 68 | 69 |
| 69 var content; | 70 var content; |
| 96 if (args.width) winWidth = parseInt(args.width); | 97 if (args.width) winWidth = parseInt(args.width); |
| 97 if (args.height) winHeight = parseInt(args.height); | 98 if (args.height) winHeight = parseInt(args.height); |
| 98 if (args.filter) pageFilterRegexp = new RegExp(args.filter); | 99 if (args.filter) pageFilterRegexp = new RegExp(args.filter); |
| 99 if (args.noisy) noisy = true; | 100 if (args.noisy) noisy = true; |
| 100 if (args.timeout) timeout = parseInt(args.timeout); | 101 if (args.timeout) timeout = parseInt(args.timeout); |
| 102 if (args.delay) delay = parseInt(args.delay); | |
| 101 forceCC = !args.noForceCC; | 103 forceCC = !args.noForceCC; |
| 102 doRenderTest = args.doRender; | 104 doRenderTest = args.doRender; |
| 103 | 105 |
| 104 if (forceCC && | 106 if (forceCC && |
| 105 !window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) | 107 !window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) |
| 166 browserWindow.resizeTo(winWidth, winHeight); | 168 browserWindow.resizeTo(winWidth, winHeight); |
| 167 browserWindow.moveTo(0, 0); | 169 browserWindow.moveTo(0, 0); |
| 168 browserWindow.focus(); | 170 browserWindow.focus(); |
| 169 | 171 |
| 170 content = browserWindow.getBrowser(); | 172 content = browserWindow.getBrowser(); |
| 173 | |
| 174 // Load the frame script for e10s / IPC message support | |
| 175 if (content.getAttribute("remote") == "true") { | |
| 176 let contentScript = "data:,addEventListener('load', function(e) { " + | |
| 177 " if (e.originalTarget.defaultView == content) { " + | |
| 178 " sendAsyncMessage('PageLoader:Load', {}); " + | |
| 179 " content.wrappedJSObject.tpRecordTime = function(t) { sendAsyncMessage('PageLoader:RecordTime', { time: t }); } " + | |
| 180 " }" + | |
| 181 "}, true);" | |
| 182 content.messageManager.loadFrameScript(contentScript, false); | |
| 183 } | |
| 184 | |
| 171 setTimeout(plLoadPage, 100); | 185 setTimeout(plLoadPage, 100); |
| 172 }, 500); | 186 }, 500); |
| 173 }; | 187 }; |
| 174 | 188 |
| 175 browserWindow.addEventListener('load', browserLoadFunc, true); | 189 browserWindow.addEventListener('load', browserLoadFunc, true); |
| 176 } else { | 190 } else { |
| 177 window.resizeTo(winWidth, winHeight); | 191 window.resizeTo(winWidth, winHeight); |
| 178 | 192 |
| 179 content = document.getElementById('contentPageloader'); | 193 content = document.getElementById('contentPageloader'); |
| 180 | 194 |
| 181 setTimeout(plLoadPage, 250); | 195 setTimeout(plLoadPage, delay); |
| 182 } | 196 } |
| 183 } catch(e) { | 197 } catch(e) { |
| 184 dumpLine(e); | 198 dumpLine(e); |
| 185 plStop(true); | 199 plStop(true); |
| 186 } | 200 } |
| 190 return pages[pageIndex].flags; | 204 return pages[pageIndex].flags; |
| 191 } | 205 } |
| 192 | 206 |
| 193 // load the current page, start timing | 207 // load the current page, start timing |
| 194 var removeLastAddedListener = null; | 208 var removeLastAddedListener = null; |
| 209 var removeLastAddedMsgListener = null; | |
| 195 function plLoadPage() { | 210 function plLoadPage() { |
| 196 var pageName = pages[pageIndex].url.spec; | 211 var pageName = pages[pageIndex].url.spec; |
| 197 | 212 |
| 198 if (removeLastAddedListener) | 213 if (removeLastAddedListener) |
| 199 removeLastAddedListener(); | 214 removeLastAddedListener(); |
| 215 | |
| 216 if (removeLastAddedMsgListener) | |
| 217 removeLastAddedMsgListener(); | |
| 200 | 218 |
| 201 if (plPageFlags() & TEST_DOES_OWN_TIMING) { | 219 if (plPageFlags() & TEST_DOES_OWN_TIMING) { |
| 202 // if the page does its own timing, use a capturing handler | 220 // if the page does its own timing, use a capturing handler |
| 203 // to make sure that we can set up the function for content to call | 221 // to make sure that we can set up the function for content to call |
| 204 content.addEventListener('load', plLoadHandlerCapturing, true); | 222 content.addEventListener('load', plLoadHandlerCapturing, true); |
| 215 removeLastAddedListener = function() { | 233 removeLastAddedListener = function() { |
| 216 content.removeEventListener('load', plLoadHandler, true); | 234 content.removeEventListener('load', plLoadHandler, true); |
| 217 }; | 235 }; |
| 218 } | 236 } |
| 219 | 237 |
| 238 // If the test browser is remote (e10s / IPC) we need to use messages to watch for page load | |
| 239 if (content.getAttribute("remote") == "true") { | |
| 240 content.messageManager.addMessageListener('PageLoader:Load', plLoadHandlerMessage); | |
| 241 content.messageManager.addMessageListener('PageLoader:RecordTime', plRecordTimeMessage); | |
| 242 removeLastAddedMsgListener = function() { | |
| 243 content.messageManager.removeMessageListener('PageLoader:Load', plLoadHandlerMessage); | |
| 244 content.messageManager.removeMessageListener('PageLoader:RecordTime', plRecordTimeMessage); | |
| 245 }; | |
| 246 } | |
| 247 | |
| 220 if (timeout > 0) { | 248 if (timeout > 0) { |
| 221 timeoutEvent = setTimeout('loadFail()', timeout); | 249 timeoutEvent = setTimeout('loadFail()', timeout); |
| 222 } | 250 } |
| 223 start_time = Date.now(); | 251 start_time = Date.now(); |
| 224 content.loadURI(pageName); | 252 content.loadURI(pageName); |
| 241 .garbageCollect(); | 269 .garbageCollect(); |
| 242 var tccend = new Date(); | 270 var tccend = new Date(); |
| 243 report.recordCCTime(tccend - tccstart); | 271 report.recordCCTime(tccend - tccstart); |
| 244 } | 272 } |
| 245 | 273 |
| 246 setTimeout(plLoadPage, 250); | 274 setTimeout(plLoadPage, delay); |
| 247 } else { | 275 } else { |
| 248 plStop(false); | 276 plStop(false); |
| 249 } | 277 } |
| 250 } | 278 } |
| 251 | 279 |
| 279 } | 307 } |
| 280 | 308 |
| 281 // set up the function for content to call | 309 // set up the function for content to call |
| 282 content.contentWindow.wrappedJSObject.tpRecordTime = function (time) { | 310 content.contentWindow.wrappedJSObject.tpRecordTime = function (time) { |
| 283 plRecordTime(time); | 311 plRecordTime(time); |
| 284 setTimeout(plNextPage, 250); | 312 setTimeout(plNextPage, delay); |
| 285 }; | 313 }; |
| 286 } | 314 } |
| 287 | 315 |
| 288 // the onload handler | 316 // the onload handler |
| 289 function plLoadHandler(evt) { | 317 function plLoadHandler(evt) { |
| 322 runRenderTest(); | 350 runRenderTest(); |
| 323 | 351 |
| 324 plNextPage(); | 352 plNextPage(); |
| 325 } | 353 } |
| 326 | 354 |
| 355 // the onload handler used for remote (e10s) browser | |
| 356 function plLoadHandlerMessage(message) { | |
| 357 if (timeout > 0) { | |
| 358 clearTimeout(timeoutEvent); | |
| 359 } | |
| 360 | |
| 361 // does this page want to do its own timing? | |
| 362 // if so, let's bail | |
| 363 if (plPageFlags() & TEST_DOES_OWN_TIMING) | |
| 364 return; | |
| 365 | |
| 366 var end_time = Date.now(); | |
| 367 var time = (end_time - start_time); | |
| 368 | |
| 369 plRecordTime(time); | |
| 370 | |
| 371 if (doRenderTest) | |
| 372 runRenderTest(); | |
| 373 | |
| 374 plNextPage(); | |
| 375 } | |
| 376 | |
| 377 // the record time handler used for remote (e10s) browser | |
| 378 function plRecordTimeMessage(message) { | |
| 379 plRecordTime(message.json.time); | |
| 380 setTimeout(plNextPage, delay); | |
| 381 } | |
| 382 | |
| 327 function runRenderTest() { | 383 function runRenderTest() { |
| 328 const redrawsPerSample = 500; | 384 const redrawsPerSample = 500; |
| 329 | 385 |
| 330 if (!Ci.nsIDOMWindowUtils) | 386 if (!Ci.nsIDOMWindowUtils) |
| 331 return; | 387 return; |
| 350 try { | 406 try { |
| 351 if (force == false) { | 407 if (force == false) { |
| 352 pageIndex = 0; | 408 pageIndex = 0; |
| 353 if (cycle < NUM_CYCLES-1) { | 409 if (cycle < NUM_CYCLES-1) { |
| 354 cycle++; | 410 cycle++; |
| 355 setTimeout(plLoadPage, 250); | 411 setTimeout(plLoadPage, delay); |
| 356 return; | 412 return; |
| 357 } | 413 } |
| 358 | 414 |
| 359 var formats = reportFormat.split(","); | 415 var formats = reportFormat.split(","); |
| 360 | 416 |
| 370 } | 426 } |
| 371 } catch (e) { | 427 } catch (e) { |
| 372 dumpLine(e); | 428 dumpLine(e); |
| 373 } | 429 } |
| 374 | 430 |
| 375 if (content) | 431 if (content) { |
| 376 content.removeEventListener('load', plLoadHandler, true); | 432 content.removeEventListener('load', plLoadHandler, true); |
| 433 if (content.getAttribute("remote") == "true") | |
| 434 content.messageManager.removeMessageListener('PageLoader:Load', plLoadHandlerMessage); | |
| 435 } | |
| 377 | 436 |
| 378 if (MozillaFileLogger) | 437 if (MozillaFileLogger) |
| 379 MozillaFileLogger.close(); | 438 MozillaFileLogger.close(); |
| 380 | 439 |
| 381 goQuitApplication(); | 440 goQuitApplication(); |
