| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| if (!chrome.benchmarking) { |
| alert("Warning: Looks like you forgot to run chrome with " + |
| " --enable-benchmarking set."); |
| return; |
| } |
| |
| function setChildTextNode(elementId, text) { |
| document.getElementById(elementId).innerText = text; |
| } |
| |
| // Tests the roundtrip time of sendRequest(). |
| function testRequest() { |
| setChildTextNode("resultsRequest", "running..."); |
| |
| chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { |
| var timer = new chrome.Interval(); |
| timer.start(); |
| var tab = tabs[0]; |
| chrome.tabs.sendRequest(tab.id, {counter: 1}, function handler(response) { |
| if (response.counter < 1000) { |
| chrome.tabs.sendRequest(tab.id, {counter: response.counter}, handler); |
| } else { |
| timer.stop(); |
| var usec = Math.round(timer.microseconds() / response.counter); |
| setChildTextNode("resultsRequest", usec + "usec"); |
| } |
| }); |
| }); |
| } |
| |
| // Tests the roundtrip time of Port.postMessage() after opening a channel. |
| function testConnect() { |
| setChildTextNode("resultsConnect", "running..."); |
| |
| chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { |
| var timer = new chrome.Interval(); |
| timer.start(); |
| |
| var port = chrome.tabs.connect(tabs[0].id); |
| port.postMessage({counter: 1}); |
| port.onMessage.addListener(function getResp(response) { |
| if (response.counter < 1000) { |
| port.postMessage({counter: response.counter}); |
| } else { |
| timer.stop(); |
| var usec = Math.round(timer.microseconds() / response.counter); |
| setChildTextNode("resultsConnect", usec + "usec"); |
| } |
| }); |
| }); |
| } |
| |
| document.addEventListener('DOMContentLoaded', function() { |
| document.querySelector('#testRequest').addEventListener( |
| 'click', testRequest); |
| document.querySelector('#testConnect').addEventListener( |
| 'click', testConnect); |
| }); |