Home | History | Annotate | Download | only in timer
      1 <head>
      2 <style>
      3 tr {
      4   white-space: nowrap;
      5 }
      6 .results {
      7   text-align: right;
      8   min-width: 6em;
      9   color: black;
     10 }
     11 </style>
     12 <script>
     13 if (!chrome.benchmarking) {
     14   alert("Warning:  Looks like you forgot to run chrome with " +
     15         " --enable-benchmarking set.");
     16   return;
     17 }
     18 
     19 function setChildTextNode(elementId, text) {
     20   document.getElementById(elementId).innerText = text;
     21 }
     22 
     23 // Tests the roundtrip time of sendRequest().
     24 function testRequest() {
     25   setChildTextNode("resultsRequest", "running...");
     26 
     27   chrome.tabs.getSelected(null, function(tab) {
     28     var timer = new chrome.Interval();
     29     timer.start();
     30 
     31     chrome.tabs.sendRequest(tab.id, {counter: 1}, function handler(response) {
     32       if (response.counter < 1000) {
     33         chrome.tabs.sendRequest(tab.id, {counter: response.counter}, handler);
     34       } else {
     35         timer.stop();
     36         var usec = Math.round(timer.microseconds() / response.counter);
     37         setChildTextNode("resultsRequest", usec + "usec");
     38       }
     39     });
     40   });
     41 }
     42 
     43 // Tests the roundtrip time of Port.postMessage() after opening a channel.
     44 function testConnect() {
     45   setChildTextNode("resultsConnect", "running...");
     46 
     47   chrome.tabs.getSelected(null, function(tab) {
     48     var timer = new chrome.Interval();
     49     timer.start();
     50 
     51     var port = chrome.tabs.connect(tab.id);
     52     port.postMessage({counter: 1});
     53     port.onMessage.addListener(function getResp(response) {
     54       if (response.counter < 1000) {
     55         port.postMessage({counter: response.counter});
     56       } else {
     57         timer.stop();
     58         var usec = Math.round(timer.microseconds() / response.counter);
     59         setChildTextNode("resultsConnect", usec + "usec");
     60       }
     61     });
     62   });
     63 }
     64 </script>
     65 </head>
     66 <body>
     67 <table>
     68   <tr>
     69     <td><button onclick="testRequest()">Measure sendRequest</button></td>
     70     <td id="resultsRequest" class="results">(results)</td>
     71   </tr>
     72   <tr>
     73     <td><button onclick="testConnect()">Measure postMessage</button></td>
     74     <td id="resultsConnect" class="results">(results)</td>
     75   </tr>
     76 </table>
     77 </body>
     78