| # Copyright 2018 The Chromium Authors. All rights reserved. |
| # 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 XrSamplePage |
| from contrib.vr_benchmarks.vr_story_set import VrStorySet |
| |
| |
| class WebXrSamplePage(XrSamplePage): |
| |
| def __init__(self, page_set, url_parameters, sample_page, |
| extra_browser_args=None): |
| super(WebXrSamplePage, 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='button[title="Enter XR"]') |
| 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. |
| action_runner.Navigate("about:blank") |
| |
| |
| class WebXrSamplePageSet(VrStorySet): |
| """A page set using the official WebXR samples with settings tweaked.""" |
| |
| def __init__(self, use_fake_pose_tracker=True): |
| super(WebXrSamplePageSet, self).__init__( |
| use_fake_pose_tracker=use_fake_pose_tracker) |
| |
| # Test cases that use the synthetic cube field page with VSync alignment |
| # turned off. |
| cube_test_cases_no_vsync = [ |
| # Standard sample app with no changes. |
| ['framebufferScale=1.0'], |
| # Increased render scale. |
| ['framebufferScale=1.4'], |
| # Default render scale, increased load. |
| ['framebufferScale=1.0', 'heavyGpu=1', 'cubeScale=0.2', 'workTime=5'], |
| # Further increased load. |
| ['framebufferScale=1.0', 'heavyGpu=1', 'cubeScale=0.3', 'workTime=10'], |
| # Absurd load for fill-rate testing. Only half the cube sea is rendered, |
| # and the page automatically rotates the view between the rendered and |
| # unrendered halves. |
| ['frameBufferScale=1.4', 'heavyGpu=1', 'cubeScale=0.4', 'workTime=4', |
| 'halfOnly=1', 'autorotate=1'], |
| ] |
| |
| for url_parameters in cube_test_cases_no_vsync: |
| self.AddStory(WebXrSamplePage(self, url_parameters, 'tests/cube-sea', |
| extra_browser_args=['--disable-features=WebVrVsyncAlign'])) |