Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(58)

Unified Diff: tools/telemetry/telemetry/core/tab.py

Issue 152643010: Allow a bit of wiggle room in highlight's bounding box (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Changes from review. Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/telemetry/telemetry/core/tab.py
diff --git a/tools/telemetry/telemetry/core/tab.py b/tools/telemetry/telemetry/core/tab.py
index 22ce0352193c9ca8f8d44ac75b3b28f5d7800f18..d44fc097f83dbf521a42a47eb16408fc6838defd 100644
--- a/tools/telemetry/telemetry/core/tab.py
+++ b/tools/telemetry/telemetry/core/tab.py
@@ -142,16 +142,18 @@ class Tab(web_contents.WebContents):
self.browser.platform.StartVideoCapture(min_bitrate_mbps)
self.ClearHighlight(bitmap.WEB_PAGE_TEST_ORANGE)
- def _FindHighlightBoundingBox(self, bmp, color):
+ def _FindHighlightBoundingBox(self, bmp, color, bounds_tolerance=4,
+ color_tolerance=8):
"""Returns the bounding box of the content highlight of the given color.
Raises:
BoundingBoxNotFoundException if the hightlight could not be found.
"""
- content_box, pixel_count = bmp.GetBoundingBox(color, tolerance=8)
+ content_box, pixel_count = bmp.GetBoundingBox(color,
+ tolerance=color_tolerance)
if not content_box:
- raise BoundingBoxNotFoundException('Failed to find tab contents.')
+ return None
# We assume arbitrarily that tabs are all larger than 200x200. If this
# fails it either means that assumption has changed or something is
@@ -173,8 +175,15 @@ class Tab(web_contents.WebContents):
# TODO(tonyg): This assert doesn't seem to work.
if (self._previous_tab_contents_bounding_box and
self._previous_tab_contents_bounding_box != content_box):
- raise BoundingBoxNotFoundException(
- 'Unexpected change in tab contents box.')
+ # Check if there's just a minor variation on the bounding box. If it's
+ # just a few pixels, we can assume it's probably due to
+ # compression artifacts.
+ for i in xrange(len(content_box)):
+ bounds_difference = abs(content_box[i] -
+ self._previous_tab_contents_bounding_box[i])
+ if bounds_difference > bounds_tolerance:
+ raise BoundingBoxNotFoundException(
+ 'Unexpected change in tab contents box.')
self._previous_tab_contents_bounding_box = content_box
return content_box
@@ -196,12 +205,10 @@ class Tab(web_contents.WebContents):
# Flip through frames until we find the initial tab contents flash.
content_box = None
for _, bmp in frame_generator:
- try:
- content_box = self._FindHighlightBoundingBox(
- bmp, bitmap.WEB_PAGE_TEST_ORANGE)
+ content_box = self._FindHighlightBoundingBox(
+ bmp, bitmap.WEB_PAGE_TEST_ORANGE)
+ if content_box:
break
- except BoundingBoxNotFoundException:
- pass
if not content_box:
raise BoundingBoxNotFoundException(
@@ -210,9 +217,7 @@ class Tab(web_contents.WebContents):
# Flip through frames until the flash goes away and emit that as frame 0.
timestamp = 0
for timestamp, bmp in frame_generator:
- try:
- self._FindHighlightBoundingBox(bmp, bitmap.WEB_PAGE_TEST_ORANGE)
- except BoundingBoxNotFoundException:
+ if not self._FindHighlightBoundingBox(bmp, bitmap.WEB_PAGE_TEST_ORANGE):
yield 0, bmp.Crop(*content_box)
break
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698