| Index: tools/telemetry/telemetry/wait_interaction.py
|
| diff --git a/tools/telemetry/telemetry/wait_interaction.py b/tools/telemetry/telemetry/wait_interaction.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0d0923b210de45b1dee303e7f5c350a3f66b1d5d
|
| --- /dev/null
|
| +++ b/tools/telemetry/telemetry/wait_interaction.py
|
| @@ -0,0 +1,58 @@
|
| +# 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.
|
| +from telemetry import page_interaction
|
| +from telemetry import util
|
| +
|
| +class WaitInteraction(page_interaction.PageInteraction):
|
| + def __init__(self, attributes=None):
|
| + super(WaitInteraction, self).__init__(attributes)
|
| +
|
| + def PerformInteraction(self, page, tab):
|
| + duration = 10
|
| + if hasattr(self, 'duration'):
|
| + duration = self.duration
|
| +
|
| + wait_js = """
|
| + window.__renderingStatsDeltas = null;
|
| +
|
| + var getTimeMs = (function() {
|
| + if (window.performance)
|
| + return (performance.now ||
|
| + performance.mozNow ||
|
| + performance.msNow ||
|
| + performance.oNow ||
|
| + performance.webkitNow).bind(window.performance);
|
| + else
|
| + return function() { return new Date().getTime(); };
|
| + })();
|
| +
|
| + var getRenderingStats = function() {
|
| + var renderingStats = {};
|
| + if (chrome &&
|
| + chrome.gpuBenchmarking &&
|
| + chrome.gpuBenchmarking.renderingStats)
|
| + renderingStats = chrome.gpuBenchmarking.renderingStats();
|
| + renderingStats.totalTimeInSeconds = getTimeMs() / 1000;
|
| + return renderingStats;
|
| + }
|
| +
|
| + var initialStats = getRenderingStats();
|
| +
|
| + var waitFinishedCallback = function(init) {
|
| + return function() {
|
| + var final = getRenderingStats();
|
| + for (var key in final)
|
| + final[key] -= init[key];
|
| + window.__renderingStatsDeltas = final;
|
| + };
|
| + }
|
| +
|
| + window.setTimeout(waitFinishedCallback(initialStats), %d);
|
| + """ % (duration * 1000)
|
| +
|
| + tab.runtime.Evaluate(wait_js)
|
| +
|
| + # Poll for scroll benchmark completion.
|
| + util.WaitFor(lambda: tab.runtime.Evaluate(
|
| + 'window.__renderingStatsDeltas'), 60)
|
|
|