skpicture_printer.py revision 9ab5563a3196760eb381d102cbb2bc0f7abc6a50
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import os 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)from telemetry.page import page_measurement 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 89ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)_JS = 'chrome.gpuBenchmarking.printToSkPicture("{0}");' 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 119ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 129ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochclass SkpicturePrinter(page_measurement.PageMeasurement): 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) def AddCommandLineOptions(self, parser): 14868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) parser.add_option('-s', '--skp-outdir', 15868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) help='Output directory for the SKP files') 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) def CustomizeBrowserOptions(self, options): 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) options.extra_browser_args.extend(['--enable-gpu-benchmarking', 19868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) '--no-sandbox', 20868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) '--enable-deferred-image-decoding', 21868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) '--force-compositing-mode']) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) def MeasurePage(self, page, tab, results): 24868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) skp_outdir = self.options.skp_outdir 25868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if not skp_outdir: 26868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) raise Exception('Please specify --skp-outdir') 27868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) outpath = os.path.abspath( 28868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) os.path.join(skp_outdir, 29868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) page.url_as_file_safe_name)) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # Replace win32 path separator char '\' with '\\'. 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) js = _JS.format(outpath.replace('\\', '\\\\')) 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tab.EvaluateJavaScript(js) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) results.Add('output_path', 'path', outpath) 34