Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / content / test / gpu / gpu_tests / hardware_accelerated_feature.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 import hardware_accelerated_feature_expectations as expectations
5
6 from telemetry import benchmark
7 from telemetry.page import page as page_module
8 from telemetry.page import page_set
9 from telemetry.page import page_test
10
11 test_harness_script = r"""
12   function VerifyHardwareAccelerated(feature) {
13     feature += ': '
14     var list = document.querySelector('.feature-status-list');
15     for (var i=0; i < list.childElementCount; i++) {
16       var span_list = list.children[i].getElementsByTagName('span');
17       var feature_str = span_list[0].textContent;
18       var value_str = span_list[1].textContent;
19       if ((feature_str == feature) &&
20           (value_str == 'Hardware accelerated')) {
21         return true;
22       }
23     }
24     return false;
25   };
26 """;
27
28 class _HardwareAcceleratedFeatureValidator(page_test.PageTest):
29   def ValidateAndMeasurePage(self, page, tab, results):
30     feature = page.feature
31     if not tab.EvaluateJavaScript('VerifyHardwareAccelerated("%s")' % feature):
32       print 'Test failed. Printing page contents:'
33       print tab.EvaluateJavaScript('document.body.innerHTML')
34       raise page_test.Failure('%s not hardware accelerated' % feature)
35
36 def safe_feature_name(feature):
37   return feature.lower().replace(' ', '_')
38
39 class ChromeGpuPage(page_module.Page):
40   def __init__(self, page_set, feature):
41     super(ChromeGpuPage, self).__init__(
42       url='chrome://gpu', page_set=page_set, base_dir=page_set.base_dir,
43       name=('HardwareAcceleratedFeature.%s_accelerated' %
44             safe_feature_name(feature)))
45     self.feature = feature
46     self.script_to_evaluate_on_commit = test_harness_script
47
48 class HardwareAcceleratedFeature(benchmark.Benchmark):
49   """Tests GPU acceleration is reported as active for various features"""
50   test = _HardwareAcceleratedFeatureValidator
51
52   def CreateExpectations(self, page_set):
53     return expectations.HardwareAcceleratedFeatureExpectations()
54
55   def CreatePageSet(self, options):
56     features = ['WebGL', 'Canvas']
57
58     ps = page_set.PageSet(user_agent_type='desktop', file_path='')
59
60     for feature in features:
61       ps.AddPage(ChromeGpuPage(page_set=ps, feature=feature))
62     return ps