| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 document.cookie = "__navigated_to_report=0; path=/"; | |
| 6 document.cookie = "__pc_done=0; path=/"; | |
| 7 document.cookie = "__pc_timings=; path=/"; | |
| 8 | |
| 9 function dirname(path) { | |
| 10 var match = path.match(/(.*)\//); | |
| 11 if (match) { | |
| 12 return match[1]; | |
| 13 } else { | |
| 14 return "."; | |
| 15 } | |
| 16 } | |
| 17 | |
| 18 function IsWprRecordMode() { | |
| 19 var kStatusUrl = "http://wprwprwpr/web-page-replay-command-status"; | |
| 20 var isRecordMode; | |
| 21 var xhr = new XMLHttpRequest(); | |
| 22 var useAsync = false; | |
| 23 xhr.open("GET", kStatusUrl, useAsync); | |
| 24 xhr.onreadystatechange = function() { | |
| 25 if (xhr.readyState == 4 && xhr.status == 200) { | |
| 26 var status = JSON.parse(xhr.responseText); | |
| 27 isRecordMode = status["is_record_mode"]; | |
| 28 console.log("WPR record mode?: " + isRecordMode); | |
| 29 } | |
| 30 }; | |
| 31 try { | |
| 32 xhr.send(); | |
| 33 } catch(e) { | |
| 34 throw "Web Page Replay is not responding. Start WPR to continue." | |
| 35 } | |
| 36 return isRecordMode; | |
| 37 } | |
| 38 | |
| 39 | |
| 40 function TryStart() { | |
| 41 console.log("try start"); | |
| 42 var status_element = document.getElementById("status"); | |
| 43 | |
| 44 var config_json; | |
| 45 var config; | |
| 46 try { | |
| 47 config_json = document.getElementById("json").textContent; | |
| 48 config = JSON.parse(config_json); | |
| 49 } catch(err) { | |
| 50 console.log("Bad json data: " + config_json); | |
| 51 status_element.textContent = "Exception: " + err + "\njson data: " + | |
| 52 config_json; | |
| 53 return; | |
| 54 } | |
| 55 var isRecordMode = false; | |
| 56 try { | |
| 57 isRecordMode = IsWprRecordMode(); | |
| 58 } catch (err) { | |
| 59 status_element.textContent = err; | |
| 60 setTimeout(TryStart, 5000); | |
| 61 return; | |
| 62 } | |
| 63 | |
| 64 if (!config["shouldStart"]) { | |
| 65 status_element.textContent = | |
| 66 "Press 'Start' to continue (or load this page with 'auto=1')."; | |
| 67 return; | |
| 68 } | |
| 69 | |
| 70 try { | |
| 71 var reportDir = dirname(dirname(window.location.pathname)) + "/common"; | |
| 72 config["reportUrl"] = "file://" + reportDir + "/report.html"; | |
| 73 config["isRecordMode"] = isRecordMode; | |
| 74 var port = chrome.runtime.connect(); | |
| 75 port.postMessage({message: "start", benchmark: config}); | |
| 76 console.log("sending start message: page count, " + | |
| 77 config["pageSets"].length); | |
| 78 } catch(err) { | |
| 79 console.log("TryStart retrying after exception: " + err); | |
| 80 status_element.textContent = "Exception: " + err; | |
| 81 setTimeout(TryStart, 1000); | |
| 82 return; | |
| 83 } | |
| 84 status_element.textContent = "STARTING"; | |
| 85 } | |
| 86 | |
| 87 // We wait before starting the test just to let chrome warm up better. | |
| 88 setTimeout(TryStart, 250); | |
| OLD | NEW |