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

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

Issue 2618323004: Don't force-update style and layout in Document::scrollingElement (Closed)
Patch Set: none 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/dom/Element.cpp
diff --git a/third_party/WebKit/Source/core/dom/Element.cpp b/third_party/WebKit/Source/core/dom/Element.cpp
index 7a778aa8dfc8f2c070747c7e2903ea11cfa59b25..caf5c7ed77ddb838af6063eb06c90b85c048f2b5 100644
--- a/third_party/WebKit/Source/core/dom/Element.cpp
+++ b/third_party/WebKit/Source/core/dom/Element.cpp
@@ -774,9 +774,12 @@ int Element::clientHeight() {
}
double Element::scrollLeft() {
+ if (!inActiveDocument())
chrishtr 2017/01/11 21:43:19 These were needed because updateStyleAndLayoutIgno
+ return 0;
+
document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
- if (document().scrollingElement() == this) {
+ if (document().scrollingElementNoLayout() == this) {
if (document().domWindow())
return document().domWindow()->scrollX();
return 0;
@@ -789,9 +792,12 @@ double Element::scrollLeft() {
}
double Element::scrollTop() {
+ if (!inActiveDocument())
+ return 0;
+
document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
- if (document().scrollingElement() == this) {
+ if (document().scrollingElementNoLayout() == this) {
if (document().domWindow())
return document().domWindow()->scrollY();
return 0;
@@ -804,11 +810,14 @@ double Element::scrollTop() {
}
void Element::setScrollLeft(double newLeft) {
+ if (!inActiveDocument())
+ return;
+
document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
newLeft = ScrollableArea::normalizeNonFiniteScroll(newLeft);
- if (document().scrollingElement() == this) {
+ if (document().scrollingElementNoLayout() == this) {
if (LocalDOMWindow* window = document().domWindow())
window->scrollTo(newLeft, window->scrollY());
} else {
@@ -820,11 +829,14 @@ void Element::setScrollLeft(double newLeft) {
}
void Element::setScrollTop(double newTop) {
+ if (!inActiveDocument())
+ return;
+
document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
newTop = ScrollableArea::normalizeNonFiniteScroll(newTop);
- if (document().scrollingElement() == this) {
+ if (document().scrollingElementNoLayout() == this) {
if (LocalDOMWindow* window = document().domWindow())
window->scrollTo(window->scrollX(), newTop);
} else {
@@ -836,9 +848,12 @@ void Element::setScrollTop(double newTop) {
}
int Element::scrollWidth() {
+ if (!inActiveDocument())
+ return 0;
+
document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
- if (document().scrollingElement() == this) {
+ if (document().scrollingElementNoLayout() == this) {
if (document().view())
return adjustForAbsoluteZoom(document().view()->contentsWidth(),
document().frame()->pageZoomFactor());
@@ -851,9 +866,12 @@ int Element::scrollWidth() {
}
int Element::scrollHeight() {
+ if (!inActiveDocument())
+ return 0;
+
document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
- if (document().scrollingElement() == this) {
+ if (document().scrollingElementNoLayout() == this) {
if (document().view())
return adjustForAbsoluteZoom(document().view()->contentsHeight(),
document().frame()->pageZoomFactor());
@@ -873,11 +891,14 @@ void Element::scrollBy(double x, double y) {
}
void Element::scrollBy(const ScrollToOptions& scrollToOptions) {
+ if (!inActiveDocument())
+ return;
+
// FIXME: This should be removed once scroll updates are processed only after
// the compositing update. See http://crbug.com/420741.
document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
- if (document().scrollingElement() == this) {
+ if (document().scrollingElementNoLayout() == this) {
scrollFrameBy(scrollToOptions);
} else {
scrollLayoutBoxBy(scrollToOptions);
@@ -892,11 +913,14 @@ void Element::scrollTo(double x, double y) {
}
void Element::scrollTo(const ScrollToOptions& scrollToOptions) {
+ if (!inActiveDocument())
+ return;
+
// FIXME: This should be removed once scroll updates are processed only after
// the compositing update. See http://crbug.com/420741.
document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
- if (document().scrollingElement() == this) {
+ if (document().scrollingElementNoLayout() == this) {
scrollFrameTo(scrollToOptions);
} else {
scrollLayoutBoxTo(scrollToOptions);

Powered by Google App Engine
This is Rietveld 408576698