Index: Source/core/page/scrolling/ScrollingCoordinator.cpp |
diff --git a/Source/core/page/scrolling/ScrollingCoordinator.cpp b/Source/core/page/scrolling/ScrollingCoordinator.cpp |
index 44e1df16a7fe1d7cd0d587a3403a4ccef6081f5b..926e8ff06e95ddb22d8e5df8e54aaddb1dfe411d 100644 |
--- a/Source/core/page/scrolling/ScrollingCoordinator.cpp |
+++ b/Source/core/page/scrolling/ScrollingCoordinator.cpp |
@@ -790,7 +790,11 @@ static void accumulateDocumentTouchEventTargetRects(LayerHitTestRects& rects, co |
// then we can quickly mark the entire document and skip looking at any other handlers. |
// Note that technically a handler on the body doesn't cover the whole document, but it's |
// reasonable to be conservative and report the whole document anyway. |
- for (TouchEventTargetSet::const_iterator iter = targets->begin(); iter != targets->end(); ++iter) { |
+ // |
+ // Fullscreen HTML5 video when OverlayFullscreenVideo is enabled is implemented by replacing the |
+ // root cc::layer with the video layer so doing this optimization causes the compositor to think |
+ // that there are no handlers, therefore skip it. |
+ for (TouchEventTargetSet::const_iterator iter = targets->begin(); !document->renderView()->compositor()->inOverlayFullscreenVideo() && iter != targets->end(); ++iter) { |
Rick Byers
2014/06/10 20:02:24
rather than check inOverlayFullscreenVideo on each
|
Node* target = iter->key; |
if (target == document || target == document->documentElement() || target == document->body()) { |
if (RenderView* rendererView = document->renderView()) { |
@@ -805,8 +809,7 @@ static void accumulateDocumentTouchEventTargetRects(LayerHitTestRects& rects, co |
if (!target->inDocument()) |
continue; |
- if (target->isDocumentNode()) { |
- ASSERT(target != document); |
+ if (target->isDocumentNode() && target != document) { |
accumulateDocumentTouchEventTargetRects(rects, toDocument(target)); |
} else if (RenderObject* renderer = target->renderer()) { |
// If the set also contains one of our ancestor nodes then processing |