# Copyright 2017 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from contrib.vr_benchmarks.vr_sample_page import VrSamplePage
from contrib.vr_benchmarks.vr_story_set import VrStorySet
class WebVrSamplePage(VrSamplePage):
def __init__(self, page_set, url_parameters, sample_page,
extra_browser_args=None,):
super(WebVrSamplePage, self).__init__(
sample_page=sample_page,
page_set=page_set,
url_parameters=url_parameters,
extra_browser_args=extra_browser_args)
def RunPageInteractions(self, action_runner):
action_runner.TapElement(selector='canvas[id="webgl-canvas"]')
action_runner.MeasureMemory(True)
# We don't want to be in VR or on a page with a WebGL canvas at the end of
# the test, as this generates unnecessary heat while the trace data is being
# processed, so navigate to a blank page if we're on a platform that cares
# about the heat generation.
if self._shared_page_state.ShouldNavigateToBlankPageBeforeFinishing():
action_runner.Navigate("about:blank")
class WebVrSamplePageSet(VrStorySet):
"""A page set using the official WebVR sample with settings tweaked."""
def __init__(self, use_fake_pose_tracker=True):
super(WebVrSamplePageSet, self).__init__(
use_fake_pose_tracker=use_fake_pose_tracker)
# Test cases that use the synthetic cube field page
cube_test_cases = [
# Standard sample app with no changes
['canvasClickPresents=1', 'renderScale=1'],
# Increased render scale
['canvasClickPresents=1', 'renderScale=1.5'],
# Default render scale, increased load
['canvasClickPresents=1', 'renderScale=1', 'heavyGpu=1', 'cubeScale=0.2',
'workTime=5'],
# Further increased load
['canvasClickPresents=1', 'renderScale=1', 'heavyGpu=1', 'cubeScale=0.3',
'workTime=10'],
# Absurd load for fill-rate testing
['canvasClickPresents=1', 'renderScale=1.6', 'heavyGpu=1',
'cubeScale=0.3', 'workTime=4'],
]
for url_parameters in cube_test_cases:
# Standard set of pages with defaults
self.AddStory(WebVrSamplePage(self, url_parameters, 'test-slow-render'))
# Set of pages with standardized render size
self.AddStory(WebVrSamplePage(self, url_parameters + ['standardSize=1'],
'test-slow-render'))
# Test cases that use the 360 video page
video_test_cases = [
# Test using the default, low resolution video
['canvasClickPresents=1'],
]
for url_parameters in video_test_cases:
self.AddStory(WebVrSamplePage(self, url_parameters, 'XX-360-video'))