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

Unified Diff: Source/core/dom/Element.cpp

Issue 69143002: Guard the rework of documentElement|body.scrollTop/Left under a runtime flag (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years, 1 month 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 | « LayoutTests/jquery/offset-expected.txt ('k') | Source/core/html/HTMLBodyElement.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/dom/Element.cpp
diff --git a/Source/core/dom/Element.cpp b/Source/core/dom/Element.cpp
index 01a776123369040ba8f456d07d240bc9561a6aba..0fb87fd82ba96ed9c6922149e4532f81f10bc1bc 100644
--- a/Source/core/dom/Element.cpp
+++ b/Source/core/dom/Element.cpp
@@ -677,7 +677,13 @@ int Element::scrollLeft()
{
document().updateLayoutIgnorePendingStylesheets();
- if (document().documentElement() == this) {
+ if (document().documentElement() != this) {
+ if (RenderBox* rend = renderBox())
+ return adjustForAbsoluteZoom(rend->scrollLeft(), rend);
+ return 0;
+ }
+
+ if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) {
if (document().inQuirksMode())
return 0;
@@ -687,8 +693,6 @@ int Element::scrollLeft()
}
}
- if (RenderBox* rend = renderBox())
- return adjustForAbsoluteZoom(rend->scrollLeft(), rend);
return 0;
}
@@ -696,7 +700,13 @@ int Element::scrollTop()
{
document().updateLayoutIgnorePendingStylesheets();
- if (document().documentElement() == this) {
+ if (document().documentElement() != this) {
+ if (RenderBox* rend = renderBox())
+ return adjustForAbsoluteZoom(rend->scrollTop(), rend);
+ return 0;
+ }
+
+ if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) {
if (document().inQuirksMode())
return 0;
@@ -706,8 +716,6 @@ int Element::scrollTop()
}
}
- if (RenderBox* rend = renderBox())
- return adjustForAbsoluteZoom(rend->scrollTop(), rend);
return 0;
}
@@ -715,7 +723,13 @@ void Element::setScrollLeft(int newLeft)
{
document().updateLayoutIgnorePendingStylesheets();
- if (document().documentElement() == this) {
+ if (document().documentElement() != this) {
+ if (RenderBox* rend = renderBox())
+ rend->setScrollLeft(static_cast<int>(newLeft * rend->style()->effectiveZoom()));
+ return;
+ }
+
+ if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) {
if (document().inQuirksMode())
return;
@@ -726,24 +740,21 @@ void Element::setScrollLeft(int newLeft)
if (!view)
return;
- // WHATWG spec says [1]: "If the element is the root element invoke scroll()
- // with x as first argument and zero as second". Blink intentionally matches
- // other engine's behaviors here, instead, where the 'y' scroll position is
- // preversed. See [2].
- // [1] http://dev.w3.org/csswg/cssom-view/#dom-element-scrollleft
- // [2] https://www.w3.org/Bugs/Public/show_bug.cgi?id=23448
view->setScrollPosition(IntPoint(static_cast<int>(newLeft * frame->pageZoomFactor()), view->scrollY()));
}
-
- if (RenderBox* rend = renderBox())
- rend->setScrollLeft(static_cast<int>(newLeft * rend->style()->effectiveZoom()));
}
void Element::setScrollTop(int newTop)
{
document().updateLayoutIgnorePendingStylesheets();
- if (document().documentElement() == this) {
+ if (document().documentElement() != this) {
+ if (RenderBox* rend = renderBox())
+ rend->setScrollTop(static_cast<int>(newTop * rend->style()->effectiveZoom()));
+ return;
+ }
+
+ if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) {
if (document().inQuirksMode())
return;
@@ -754,17 +765,8 @@ void Element::setScrollTop(int newTop)
if (!view)
return;
- // WHATWG spec says [1]: "If the element is the root element invoke scroll()
- // with zero as first argument and y as second". Blink intentionally
- // matches other engine's behaviors here, instead, where the 'x' scroll
- // position is preversed. See [2].
- // [1] http://dev.w3.org/csswg/cssom-view/#dom-element-scrolltop
- // [2] https://www.w3.org/Bugs/Public/show_bug.cgi?id=23448
view->setScrollPosition(IntPoint(view->scrollX(), static_cast<int>(newTop * frame->pageZoomFactor())));
}
-
- if (RenderBox* rend = renderBox())
- rend->setScrollTop(static_cast<int>(newTop * rend->style()->effectiveZoom()));
}
int Element::scrollWidth()
« no previous file with comments | « LayoutTests/jquery/offset-expected.txt ('k') | Source/core/html/HTMLBodyElement.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698