Index: third_party/WebKit/Source/core/input/ScrollManager.cpp |
diff --git a/third_party/WebKit/Source/core/input/ScrollManager.cpp b/third_party/WebKit/Source/core/input/ScrollManager.cpp |
index ec6c58ab46b0aeff70daf543c4fe97ad78bc7aff..96bd5fc9d5ad501ca66ffbc3bf1274e68c216d73 100644 |
--- a/third_party/WebKit/Source/core/input/ScrollManager.cpp |
+++ b/third_party/WebKit/Source/core/input/ScrollManager.cpp |
@@ -85,8 +85,8 @@ AutoscrollController* ScrollManager::GetAutoscrollController() const { |
return nullptr; |
} |
-static bool CanPropagate(const ScrollState& scroll_state, |
- const Element& element) { |
+bool ScrollManager::CanPropagate(const ScrollState& scroll_state, |
+ const Element& element) { |
// ScrollBoundaryBehavior may have different values on x-axis and y-axis. |
// We need to find out the dominant axis of user's intended scroll to decide |
// which node's ScrollBoundaryBehavior should be applied, i.e. which the |
@@ -95,7 +95,8 @@ static bool CanPropagate(const ScrollState& scroll_state, |
// axis of scroll gesture. |
bool x_dominant = |
std::abs(scroll_state.deltaXHint()) > std::abs(scroll_state.deltaYHint()); |
- return (x_dominant && element.GetComputedStyle()->ScrollBoundaryBehaviorX() == |
+ return (element == frame_->GetDocument()->ViewportDefiningElement(nullptr)) || |
+ (x_dominant && element.GetComputedStyle()->ScrollBoundaryBehaviorX() == |
EScrollBoundaryBehavior::kAuto) || |
(!x_dominant && |
element.GetComputedStyle()->ScrollBoundaryBehaviorY() == |