Index: third_party/WebKit/Source/core/layout/ScrollAnchor.cpp |
diff --git a/third_party/WebKit/Source/core/layout/ScrollAnchor.cpp b/third_party/WebKit/Source/core/layout/ScrollAnchor.cpp |
index 8d1de54353f6f1b6df13ce4e08afc9fb9725ba54..48b648de6111c3ad0c8eb8f2742b2dce9cf49b3d 100644 |
--- a/third_party/WebKit/Source/core/layout/ScrollAnchor.cpp |
+++ b/third_party/WebKit/Source/core/layout/ScrollAnchor.cpp |
@@ -14,9 +14,12 @@ namespace blink { |
using Corner = ScrollAnchor::Corner; |
+static const int kMaxAdjustments = 20; |
ymalik
2016/07/01 01:07:11
How did you come up with this number? We do have s
skobes
2016/07/01 17:28:26
I tried to pick something high enough to preserve
|
+ |
ScrollAnchor::ScrollAnchor(ScrollableArea* scroller) |
: m_scroller(scroller) |
, m_hasBounced(false) |
+ , m_adjustmentCount(0) |
{ |
ASSERT(m_scroller); |
ASSERT(m_scroller->isFrameView() || m_scroller->isPaintLayerScrollableArea()); |
@@ -251,7 +254,8 @@ void ScrollAnchor::restore() |
m_lastAdjusted.clear(); |
return; |
} |
- adjust(adjustment); |
+ if (++m_adjustmentCount <= kMaxAdjustments) |
ymalik
2016/07/01 01:07:11
Brief comment explaining the rationale behind this
skobes
2016/07/01 17:28:26
Done.
|
+ adjust(adjustment); |
} |
void ScrollAnchor::adjust(IntSize adjustment) |
@@ -274,6 +278,7 @@ void ScrollAnchor::adjust(IntSize adjustment) |
void ScrollAnchor::clear() |
{ |
+ m_adjustmentCount = 0; |
m_current.clear(); |
} |