# Copyright 2014 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. import cloud_storage_test_base import optparse import page_sets test_harness_script = r""" var domAutomationController = {}; domAutomationController._succeeded = false; domAutomationController._finished = false; domAutomationController.setAutomationId = function(id) {} domAutomationController.send = function(msg) { domAutomationController._finished = true; if (msg.toLowerCase() == "success") domAutomationController._succeeded = true; else domAutomationController._succeeded = false; } window.domAutomationController = domAutomationController; """ def _DidTestSucceed(tab): return tab.EvaluateJavaScript('domAutomationController._succeeded') class _GpuRasterizationValidator(cloud_storage_test_base.ValidatorBase): def CustomizeBrowserOptions(self, options): options.AppendExtraBrowserArgs(['--force-compositing-mode', '--enable-threaded-compositing', '--enable-impl-side-painting', '--force-gpu-rasterization', '--enable-gpu-benchmarking']) def ValidatePage(self, page, tab, results): if not _DidTestSucceed(tab): raise page_test.Failure('Page indicated a failure') if not hasattr(page, 'expectations') or not page.expectations: raise page_test.Failure('Expectations not specified') if not tab.screenshot_supported: raise page_test.Failure('Browser does not support screenshot capture') screenshot = tab.Screenshot() if not screenshot: raise page_test.Failure('Could not capture screenshot') device_pixel_ratio = tab.EvaluateJavaScript('window.devicePixelRatio') if hasattr(page, 'test_rect'): test_rect = [int(x * device_pixel_ratio) for x in page.test_rect] screenshot = screenshot.Crop( test_rect[0], test_rect[1], test_rect[2], test_rect[3]) self._ValidateScreenshotSamples( page.display_name, screenshot, page.expectations, device_pixel_ratio) class GpuRasterization(cloud_storage_test_base.TestBase): """Tests that GPU rasterization produces valid content""" test = _GpuRasterizationValidator page_set = page_sets.GpuRasterizationTestsPageSet def CreatePageSet(self, options): page_set = super(GpuRasterization, self).CreatePageSet(options) for page in page_set.pages: page.script_to_evaluate_on_commit = test_harness_script return page_set