- add sources.
[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_set
8 from telemetry.page import page_test
9
10 test_harness_script = r"""
11   function VerifyHardwareAccelerated(feature) {
12     feature += ': '
13     var list = document.querySelector('.feature-status-list');
14     for (var i=0; i < list.childElementCount; i++) {
15       var span_list = list.children[i].getElementsByTagName('span');
16       var feature_str = span_list[0].textContent;
17       var value_str = span_list[1].textContent;
18       if ((feature_str == feature) &&
19           (value_str == 'Hardware accelerated')) {
20         return true;
21       }
22     }
23     return false;
24   };
25 """;
26
27 class HardwareAcceleratedFeatureValidator(page_test.PageTest):
28   def __init__(self):
29     super(HardwareAcceleratedFeatureValidator, self).__init__('ValidatePage')
30
31   def ValidatePage(self, page, tab, results):
32     feature = page.feature
33     if not tab.EvaluateJavaScript('VerifyHardwareAccelerated("%s")' % feature):
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 HardwareAcceleratedFeature(test.Test):
40   """Tests GPU acceleration is reported as active for various features"""
41   test = HardwareAcceleratedFeatureValidator
42
43   def CreateExpectations(self, page_set):
44     return expectations.HardwareAcceleratedFeatureExpectations()
45
46   def CreatePageSet(self, options):
47     features = ['WebGL', 'Canvas', '3D CSS']
48
49     page_set_dict = {
50       'description': 'Tests GPU acceleration is reported as active',
51       'user_agent_type': 'desktop',
52       'pages': []
53     }
54
55     pages = page_set_dict['pages']
56
57     for feature in features:
58       pages.append({
59         'name': 'HardwareAcceleratedFeature.%s_accelerated' %
60             safe_feature_name(feature),
61         'url': 'chrome://gpu',
62         'navigate_steps': [
63           { "action": 'navigate' }
64         ],
65         'script_to_evaluate_on_commit': test_harness_script,
66         'feature': feature
67       })
68
69     return page_set.PageSet.FromDict(page_set_dict, '')