a1f943bbb2f30fa14835f1def7118b35090c0e1e
[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 test
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 ValidatePage(self, page, tab, results):
30     feature = page.feature
31     if not tab.EvaluateJavaScript('VerifyHardwareAccelerated("%s")' % feature):
32       raise page_test.Failure('%s not hardware accelerated' % feature)
33
34 def safe_feature_name(feature):
35   return feature.lower().replace(' ', '_')
36
37 class ChromeGpuPage(page_module.Page):
38   def __init__(self, page_set, feature):
39     super(ChromeGpuPage, self).__init__(
40       url='chrome://gpu', page_set=page_set, base_dir=page_set.base_dir,
41       name=('HardwareAcceleratedFeature.%s_accelerated' %
42             safe_feature_name(feature)))
43     self.feature = feature
44     self.script_to_evaluate_on_commit = test_harness_script
45
46 class HardwareAcceleratedFeature(test.Test):
47   """Tests GPU acceleration is reported as active for various features"""
48   test = _HardwareAcceleratedFeatureValidator
49
50   def CreateExpectations(self, page_set):
51     return expectations.HardwareAcceleratedFeatureExpectations()
52
53   def CreatePageSet(self, options):
54     features = ['WebGL', 'Canvas']
55
56     ps = page_set.PageSet(user_agent_type='desktop', file_path='')
57
58     for feature in features:
59       ps.AddPage(ChromeGpuPage(page_set=ps, feature=feature))
60     return ps