Home | History | Annotate | Download | only in gpu_tests
      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 import os
      5 
      6 import screenshot_sync_expectations as expectations
      7 
      8 from telemetry import test
      9 from telemetry.core import util
     10 from telemetry.page import page
     11 from telemetry.page import page_set
     12 from telemetry.page import page_test
     13 # pylint: disable=W0401,W0614
     14 from telemetry.page.actions.all_page_actions import *
     15 
     16 data_path = os.path.join(
     17     util.GetChromiumSrcDir(), 'content', 'test', 'data', 'gpu')
     18 
     19 class _ScreenshotSyncValidator(page_test.PageTest):
     20   def CustomizeBrowserOptions(self, options):
     21     options.AppendExtraBrowserArgs('--enable-gpu-benchmarking')
     22 
     23   def ValidatePage(self, page, tab, results):
     24     test_success = tab.EvaluateJavaScript('window.__testSuccess')
     25     if not test_success:
     26       message = tab.EvaluateJavaScript('window.__testMessage')
     27       raise page_test.Failure(message)
     28 
     29 
     30 class ScreenshotSyncPage(page.Page):
     31   def __init__(self, page_set, base_dir):
     32     super(ScreenshotSyncPage, self).__init__(
     33       url='file://screenshot_sync.html',
     34       page_set=page_set,
     35       base_dir=base_dir,
     36       name='ScreenshotSync')
     37     self.user_agent_type = 'desktop'
     38 
     39   def RunNavigateSteps(self, action_runner):
     40     action_runner.NavigateToPage(self)
     41     action_runner.WaitForJavaScriptCondition(
     42         'window.__testComplete', timeout=120)
     43 
     44 
     45 class ScreenshotSyncProcess(test.Test):
     46   """Tests that screenhots are properly synchronized with the frame one which
     47   they were requested"""
     48   test = _ScreenshotSyncValidator
     49 
     50   def CreateExpectations(self, page_set):
     51     return expectations.ScreenshotSyncExpectations()
     52 
     53   def CreatePageSet(self, options):
     54     ps = page_set.PageSet(file_path=data_path, serving_dirs=[''])
     55     ps.AddPage(ScreenshotSyncPage(ps, ps.base_dir))
     56     return ps
     57