1 # Copyright 2014 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 from telemetry
.story
import story_set
as story_set_module
6 from gpu_tests
import gpu_test_base
8 class GpuProcessTestsPage(gpu_test_base
.PageBase
):
10 def __init__(self
, url
, name
, story_set
, expectations
):
11 super(GpuProcessTestsPage
, self
).__init
__(url
=url
, page_set
=story_set
,
13 expectations
=expectations
)
16 class FunctionalVideoPage(GpuProcessTestsPage
):
18 def __init__(self
, story_set
, expectations
):
19 super(FunctionalVideoPage
, self
).__init
__(
20 url
='file://../../data/gpu/functional_video.html',
21 name
='GpuProcess.video',
23 expectations
=expectations
)
25 def RunNavigateSteps(self
, action_runner
):
26 super(FunctionalVideoPage
, self
).RunNavigateSteps(action_runner
)
27 action_runner
.WaitForJavaScriptCondition(
28 'domAutomationController._finished', timeout_in_seconds
=30)
31 class GpuInfoCompletePage(GpuProcessTestsPage
):
33 def __init__(self
, story_set
, expectations
):
34 super(GpuInfoCompletePage
, self
).__init
__(
35 url
='file://../../data/gpu/functional_3d_css.html',
36 name
='GpuProcess.gpu_info_complete',
38 expectations
=expectations
)
40 def Validate(self
, tab
, results
):
41 # Regression test for crbug.com/454906
42 if not tab
.browser
.supports_system_info
:
43 raise page_test
.Failure('Browser must support system info')
44 system_info
= tab
.browser
.GetSystemInfo()
45 if not system_info
.gpu
:
46 raise page_test
.Failure('Target machine must have a GPU')
47 if not system_info
.gpu
.aux_attributes
:
48 raise page_test
.Failure('Browser must support GPU aux attributes')
49 if not 'gl_renderer' in system_info
.gpu
.aux_attributes
:
50 raise page_test
.Failure('Browser must have gl_renderer in aux attribs')
51 if len(system_info
.gpu
.aux_attributes
['gl_renderer']) <= 0:
52 raise page_test
.Failure('Must have a non-empty gl_renderer string')
55 class GpuProcessTestsStorySet(story_set_module
.StorySet
):
57 """ Tests that accelerated content triggers the creation of a GPU process """
59 def __init__(self
, expectations
):
60 super(GpuProcessTestsStorySet
, self
).__init
__(
61 serving_dirs
=set(['../../../../content/test/data']))
63 urls_and_names_list
= [
64 ('file://../../data/gpu/functional_canvas_demo.html',
65 'GpuProcess.canvas2d'),
66 ('file://../../data/gpu/functional_3d_css.html',
68 ('file://../../data/gpu/functional_webgl.html',
72 for url
, name
in urls_and_names_list
:
73 self
.AddStory(GpuProcessTestsPage(url
, name
, self
, expectations
))
75 self
.AddStory(FunctionalVideoPage(self
, expectations
))
76 self
.AddStory(GpuInfoCompletePage(self
, expectations
))