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

Unified Diff: third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp

Issue 2657183002: Use full mapLocalToAncestor machinery in ScrollingCoordinator. (Closed)
Patch Set: Delete unused test file Created 3 years, 11 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
Index: third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp
diff --git a/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp b/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp
index b32feec3fc12bd33516f86f21e7ccee499324044..fb8d5ea45911c55f0643bdc8e47dcf69bca751b7 100644
--- a/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp
+++ b/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp
@@ -192,7 +192,7 @@ void ScrollingCoordinator::updateAfterCompositingChangeIfNeeded() {
// 3. Plugin areas.
Region shouldHandleScrollGestureOnMainThreadRegion =
computeShouldHandleScrollGestureOnMainThreadRegion(
- m_page->deprecatedLocalMainFrame(), IntPoint());
+ m_page->deprecatedLocalMainFrame());
setShouldHandleScrollGestureOnMainThreadRegion(
shouldHandleScrollGestureOnMainThreadRegion);
m_scrollGestureRegionIsDirty = false;
@@ -923,17 +923,13 @@ bool ScrollingCoordinator::coordinatesScrollingForFrameView(
}
Region ScrollingCoordinator::computeShouldHandleScrollGestureOnMainThreadRegion(
- const LocalFrame* frame,
- const IntPoint& frameLocation) const {
+ const LocalFrame* frame) const {
Region shouldHandleScrollGestureOnMainThreadRegion;
FrameView* frameView = frame->view();
if (!frameView || frameView->shouldThrottleRendering() ||
!frameView->isVisible())
return shouldHandleScrollGestureOnMainThreadRegion;
- IntPoint offset = frameLocation;
- offset.moveBy(frameView->frameRect().location());
-
if (const FrameView::ScrollableAreaSet* scrollableAreas =
frameView->scrollableAreas()) {
for (const ScrollableArea* scrollableArea : *scrollableAreas) {
@@ -944,7 +940,6 @@ Region ScrollingCoordinator::computeShouldHandleScrollGestureOnMainThreadRegion(
if (scrollableArea->usesCompositedScrolling())
continue;
IntRect box = scrollableArea->scrollableAreaBoundingBox();
- box.moveBy(offset);
shouldHandleScrollGestureOnMainThreadRegion.unite(box);
}
}
@@ -956,10 +951,17 @@ Region ScrollingCoordinator::computeShouldHandleScrollGestureOnMainThreadRegion(
if (const FrameView::ResizerAreaSet* resizerAreas =
frameView->resizerAreas()) {
for (const LayoutBox* box : *resizerAreas) {
+ PaintLayerScrollableArea* scrollableArea =
+ box->layer()->getScrollableArea();
IntRect bounds = box->absoluteBoundingBoxRect();
+ // Get the corner in local coords.
IntRect corner =
- box->layer()->getScrollableArea()->touchResizerCornerRect(bounds);
- corner.moveBy(offset);
+ scrollableArea->resizerCornerRect(bounds, ResizerForTouch);
+ // Map corner to top-frame coords.
+ corner = scrollableArea->box()
+ .localToAbsoluteQuad(FloatRect(corner),
+ TraverseDocumentBoundaries)
+ .enclosingBoundingBox();
shouldHandleScrollGestureOnMainThreadRegion.unite(corner);
}
}
@@ -971,8 +973,7 @@ Region ScrollingCoordinator::computeShouldHandleScrollGestureOnMainThreadRegion(
PluginView* pluginView = toPluginView(child.get());
if (pluginView->wantsWheelEvents()) {
- IntRect box = pluginView->frameRect();
- box.moveBy(offset);
+ IntRect box = frameView->convertToRootFrame(pluginView->frameRect());
shouldHandleScrollGestureOnMainThreadRegion.unite(box);
}
}
@@ -981,10 +982,11 @@ Region ScrollingCoordinator::computeShouldHandleScrollGestureOnMainThreadRegion(
const FrameTree& tree = frame->tree();
for (Frame* subFrame = tree.firstChild(); subFrame;
subFrame = subFrame->tree().nextSibling()) {
- if (subFrame->isLocalFrame())
+ if (subFrame->isLocalFrame()) {
shouldHandleScrollGestureOnMainThreadRegion.unite(
computeShouldHandleScrollGestureOnMainThreadRegion(
- toLocalFrame(subFrame), offset));
+ toLocalFrame(subFrame)));
+ }
}
return shouldHandleScrollGestureOnMainThreadRegion;

Powered by Google App Engine
This is Rietveld 408576698