Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / tools / perf / benchmarks / jsgamebench.py
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 """Runs Facebook's JSGameBench benchmark."""
6
7 import os
8
9 from metrics import power
10 from telemetry import test
11 from telemetry.page import page_measurement
12 from telemetry.page import page_set
13
14
15 class _JsgamebenchMeasurement(page_measurement.PageMeasurement):
16   def __init__(self):
17     super(_JsgamebenchMeasurement, self).__init__()
18     self._power_metric = power.PowerMetric()
19
20   def CustomizeBrowserOptions(self, options):
21     power.PowerMetric.CustomizeBrowserOptions(options)
22
23   def DidNavigateToPage(self, page, tab):
24     self._power_metric.Start(page, tab)
25
26   def MeasurePage(self, page, tab, results):
27     tab.ExecuteJavaScript('UI.call({}, "perftest")')
28     tab.WaitForJavaScriptExpression(
29         'document.getElementById("perfscore0") != null', 1800)
30
31     self._power_metric.Stop(page, tab)
32     self._power_metric.AddResults(tab, results)
33
34     js_get_results = 'document.getElementById("perfscore0").innerHTML'
35     result = int(tab.EvaluateJavaScript(js_get_results))
36     results.Add('Score', 'score (bigger is better)', result)
37
38
39 class Jsgamebench(test.Test):
40   """Counts how many animating sprites can move around on the screen at once."""
41   test = _JsgamebenchMeasurement
42
43   def CreatePageSet(self, options):
44     return page_set.PageSet.FromDict({
45         'archive_data_file': '../page_sets/data/jsgamebench.json',
46         'pages': [
47           { 'url': 'http://localhost/' }
48           ]
49         }, os.path.dirname(__file__))