Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 # Copyright 2017 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 | |
| 5 import logging | |
| 6 import os | |
| 7 import py_utils | |
| 8 import time | |
| 9 | |
| 10 from telemetry.page import legacy_page_test | |
| 11 from telemetry.value import scalar | |
| 12 from telemetry.util import image_util | |
| 13 | |
| 14 class Screenshot(legacy_page_test.LegacyPageTest): | |
| 15 """Takes a PNG screenshot of the page.""" | |
| 16 | |
| 17 def __init__(self, png_outdir, wait_time=0, disable_javascript=False): | |
| 18 super(Screenshot, self).__init__() | |
| 19 self._png_outdir = png_outdir | |
| 20 self._wait_time = wait_time | |
| 21 # Javascript flag not yet implemented | |
|
nednguyen
2017/06/08 20:18:26
I suggest just leave this part out until someone i
| |
| 22 # self._disable_javascript = disable_javascript | |
| 23 | |
| 24 def ValidateAndMeasurePage(self, page, tab, results): | |
| 25 if not tab.screenshot_supported: | |
| 26 raise legacy_page_test.MeasurementFailure( | |
| 27 'Screenshotting not supported on this platform') | |
| 28 | |
| 29 try: | |
| 30 tab.WaitForDocumentReadyStateToBeComplete() | |
| 31 except py_utils.TimeoutException: | |
| 32 logging.info("WaitForDocumentReadyStateToBeComplete() timeout, page: %s", | |
| 33 page.display_name) | |
|
nednguyen
2017/06/08 20:18:26
if this timeout, this should return instead of kee
| |
| 34 | |
| 35 time.sleep(self._wait_time) | |
| 36 | |
| 37 if not os.path.exists(self._png_outdir): | |
| 38 logging.info("Creating directory %s", self._png_outdir) | |
| 39 try: | |
| 40 os.makedirs(self._png_outdir) | |
| 41 except OSError: | |
| 42 logging.info("Directory %s could not be created", self._png_outdir) | |
| 43 raise | |
| 44 | |
| 45 outpath = os.path.abspath( | |
| 46 os.path.join(self._png_outdir, page.file_safe_name)) + '.png' | |
| 47 # Replace win32 path separator char '\' with '\\'. | |
| 48 outpath = outpath.replace('\\', '\\\\') | |
| 49 | |
| 50 logging.info("Taking screenshot of %s", page.display_name) | |
|
nednguyen
2017/06/08 20:18:26
this log doesn't seem particularly useful IMO
| |
| 51 screenshot = tab.Screenshot() | |
| 52 | |
| 53 last_mod_time = 0 | |
| 54 if os.path.exists(outpath): | |
| 55 last_mod_time = os.path.getmtime(outpath) | |
| 56 | |
| 57 # TODO(lchoi): Add logging to image_util.py and/or augment error handling of | |
| 58 # image_util.WritePngFile | |
| 59 logging.info("Writing PNG file to %s", outpath) | |
| 60 image_util.WritePngFile(screenshot, outpath) | |
| 61 logging.info("PNG file written successfully") | |
| 62 | |
| 63 saved_picture_count = 0 | |
| 64 if os.path.exists(outpath) and os.path.getmtime(outpath) > last_mod_time: | |
|
nednguyen
2017/06/08 20:18:25
Why we need this logic? If the pgn file are not wr
lchoi
2017/06/08 20:38:34
I see. Do you want me to remove this and everythin
nednguyen
2017/06/08 21:39:26
sgtm
| |
| 65 saved_picture_count = 1 | |
| 66 results.AddValue(scalar.ScalarValue( | |
| 67 results.current_page, 'saved_picture_count', 'count', | |
|
nednguyen
2017/06/08 20:18:26
is this saved_picture_count value used by Cluster
lchoi
2017/06/08 20:38:34
Not sure if it will be used by CT - I was just fol
nednguyen
2017/06/08 21:39:26
Yeah. Code is liability, so it's usually better to
| |
| 68 saved_picture_count)) | |
| 69 | |
|
nednguyen
2017/06/08 20:18:26
style nits: remove 3 blank lines
| |
| 70 | |
| 71 | |
| OLD | NEW |