Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / tools / perf / benchmarks / html5gaming.py
1 # Copyright 2013 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 """Impact HTML5 Gaming benchmark.
6
7 Tests one very specific use case: smooth running games rendered with the
8 <canvas> element. The score for the HTML5-Benchmark takes the total time the
9 browser spent rendering frames (formula is 1000000/(sqrt(totalTime) + lagTime *
10 0.1)). The benchmark automatically runs at a reasonable screen size. Final
11 score is a indicator for the browser's ability to smoothly run HTML5 games."""
12
13 import os
14
15 from telemetry import benchmark
16 from telemetry.page import page_set
17 from telemetry.page import page_test
18 from telemetry.value import scalar
19
20
21 class _HTML5GamingMeasurement(page_test.PageTest):
22   def ValidateAndMeasurePage(self, _, tab, results):
23     tab.ExecuteJavaScript('benchmark();')
24     # Default value of score element is 87485, its value is updated with actual
25     # score when test finish.
26     tab.WaitForJavaScriptExpression(
27         'document.getElementById("score").innerHTML != "87485"', 200)
28     result = int(tab.EvaluateJavaScript(
29         'document.getElementById("score").innerHTML'))
30     results.AddValue(
31         scalar.ScalarValue(results.current_page, 'Score', 'score', result))
32
33
34
35 @benchmark.Disabled
36 class HTML5Gaming(benchmark.Benchmark):
37   """Imapct HTML5 smooth running games benchmark suite."""
38   test = _HTML5GamingMeasurement
39   def CreatePageSet(self, options):
40     ps = page_set.PageSet(
41       file_path=os.path.abspath(__file__),
42       archive_data_file='../page_sets/data/html5gaming.json',
43       make_javascript_deterministic=False)
44     ps.AddPageWithDefaultRunNavigate('http://html5-benchmark.com/')
45     return ps