Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 import os | 4 import os |
| 5 | 5 |
| 6 from telemetry import test as test_module | 6 from telemetry import test as test_module |
| 7 from telemetry.core import util | 7 from telemetry.core import util |
| 8 from telemetry.page import page | |
| 8 from telemetry.page import page_set | 9 from telemetry.page import page_set |
| 10 # pylint: disable=W0401,W0614 | |
| 9 from telemetry.page import page_test | 11 from telemetry.page import page_test |
| 12 from telemetry.page.actions.all_page_actions import * | |
| 10 | 13 |
| 11 data_path = os.path.join( | 14 data_path = os.path.join( |
| 12 util.GetChromiumSrcDir(), 'content', 'test', 'data', 'gpu') | 15 util.GetChromiumSrcDir(), 'content', 'test', 'data', 'gpu') |
| 13 | 16 |
| 14 wait_timeout = 20 # seconds | 17 wait_timeout = 20 # seconds |
| 15 | 18 |
| 16 harness_script = r""" | 19 harness_script = r""" |
| 17 var domAutomationController = {}; | 20 var domAutomationController = {}; |
| 18 | 21 |
| 19 domAutomationController._loaded = false; | 22 domAutomationController._loaded = false; |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 84 pass | 87 pass |
| 85 new_tab.Close() | 88 new_tab.Close() |
| 86 if not completed: | 89 if not completed: |
| 87 raise page_test.Failure( | 90 raise page_test.Failure( |
| 88 'Test didn\'t complete (no context lost event?)') | 91 'Test didn\'t complete (no context lost event?)') |
| 89 if not tab.EvaluateJavaScript( | 92 if not tab.EvaluateJavaScript( |
| 90 'window.domAutomationController._succeeded'): | 93 'window.domAutomationController._succeeded'): |
| 91 raise page_test.Failure( | 94 raise page_test.Failure( |
| 92 'Test failed (context not restored properly?)') | 95 'Test failed (context not restored properly?)') |
| 93 | 96 |
| 97 class WebGLContextLostFromGPUProcessExitPage(page.Page): | |
|
Ken Russell (switch to Gerrit)
2014/04/28 20:56:21
This will collide with https://codereview.chromium
| |
| 98 def __init__(self, page_set, base_dir): | |
| 99 super(WebGLContextLostFromGPUProcessExitPage, self).__init__( | |
| 100 url='file://webgl.html?query=kill_after_notification', | |
| 101 page_set=page_set, | |
| 102 base_dir=base_dir) | |
| 103 self.name = 'ContextLost.WebGLContextLostFromGPUProcessExit' | |
| 104 self.script_to_evaluate_on_commit = harness_script | |
| 105 self.kill_gpu_process = True | |
| 106 self.number_of_gpu_process_kills = 1 | |
| 107 | |
| 108 def RunNavigateSteps(self, action_runner): | |
| 109 action_runner.RunAction(NavigateAction()) | |
| 110 action_runner.RunAction(WaitAction( | |
| 111 {'javascript': 'window.domAutomationController._loaded'})) | |
| 112 | |
| 113 | |
| 114 class WebGLContextLostFromLoseContextExtensionPage(page.Page): | |
| 115 def __init__(self, page_set, base_dir): | |
| 116 super(WebGLContextLostFromLoseContextExtensionPage, self).__init__( | |
| 117 url='file://webgl.html?query=WEBGL_lose_context', | |
| 118 page_set=page_set, | |
| 119 base_dir=base_dir) | |
| 120 self.name = 'ContextLost.WebGLContextLostFromLoseContextExtension', | |
| 121 self.script_to_evaluate_on_commit = harness_script | |
| 122 self.kill_gpu_process = False | |
| 123 | |
| 124 def RunNavigateSteps(self, action_runner): | |
| 125 action_runner.RunAction(NavigateAction()) | |
| 126 action_runner.RunAction(WaitAction( | |
| 127 {'javascript': 'window.domAutomationController._finished'})) | |
| 128 | |
| 129 | |
| 94 class ContextLost(test_module.Test): | 130 class ContextLost(test_module.Test): |
| 95 enabled = True | 131 enabled = True |
| 96 test = _ContextLostValidator | 132 test = _ContextLostValidator |
| 97 # For the record, this would have been another way to get the pages | 133 # For the record, this would have been another way to get the pages |
| 98 # to repeat. pageset_repeat would be another option. | 134 # to repeat. pageset_repeat would be another option. |
| 99 # options = {'page_repeat': 5} | 135 # options = {'page_repeat': 5} |
| 100 def CreatePageSet(self, options): | 136 def CreatePageSet(self, options): |
| 101 page_set_dict = { | 137 ps = page_set.PageSet( |
| 102 'description': 'Test cases for real and synthetic context lost events', | 138 file_path=data_path, |
| 103 'user_agent_type': 'desktop', | 139 description='Test cases for real and synthetic context lost events', |
| 104 'serving_dirs': [''], | 140 user_agent_type='desktop', |
| 105 'pages': [ | 141 serving_dirs=set([''])) |
| 106 { | 142 ps.AddPage(WebGLContextLostFromGPUProcessExitPage(ps, ps.base_dir)) |
| 107 'name': 'ContextLost.WebGLContextLostFromGPUProcessExit', | 143 ps.AddPage(WebGLContextLostFromLoseContextExtensionPage(ps, ps.base_dir)) |
| 108 'url': 'file://webgl.html?query=kill_after_notification', | 144 return ps |
| 109 'script_to_evaluate_on_commit': harness_script, | |
| 110 'navigate_steps': [ | |
| 111 { 'action': 'navigate' }, | |
| 112 { 'action': 'wait', | |
| 113 'javascript': 'window.domAutomationController._loaded' } | |
| 114 ], | |
| 115 'kill_gpu_process': True, | |
| 116 'number_of_gpu_process_kills': 1, | |
| 117 }, | |
| 118 { | |
| 119 'name': 'ContextLost.WebGLContextLostFromLoseContextExtension', | |
| 120 'url': 'file://webgl.html?query=WEBGL_lose_context', | |
| 121 'script_to_evaluate_on_commit': harness_script, | |
| 122 'navigate_steps': [ | |
| 123 { 'action': 'navigate' }, | |
| 124 { 'action': 'wait', | |
| 125 'javascript': 'window.domAutomationController._finished' } | |
| 126 ], | |
| 127 'kill_gpu_process': False | |
| 128 }, | |
| 129 ] | |
| 130 } | |
| 131 return page_set.PageSet.FromDict(page_set_dict, data_path) | |
| OLD | NEW |