| Index: Source/core/dom/Element.cpp
|
| diff --git a/Source/core/dom/Element.cpp b/Source/core/dom/Element.cpp
|
| index 04d7e8fce0c9f31e9161920b8de3170e22aafe06..867994d7436361809eae0a4b2ccf62a810a3fd3e 100644
|
| --- a/Source/core/dom/Element.cpp
|
| +++ b/Source/core/dom/Element.cpp
|
| @@ -444,6 +444,9 @@ bool Element::shouldIgnoreAttributeCase() const
|
|
|
| void Element::scrollIntoView(bool alignToTop)
|
| {
|
| + if (!inActiveDocument())
|
| + return;
|
| +
|
| document().updateLayoutIgnorePendingStylesheets();
|
|
|
| if (!layoutObject())
|
| @@ -459,6 +462,9 @@ void Element::scrollIntoView(bool alignToTop)
|
|
|
| void Element::scrollIntoViewIfNeeded(bool centerIfNeeded)
|
| {
|
| + if (!inActiveDocument())
|
| + return;
|
| +
|
| document().updateLayoutIgnorePendingStylesheets();
|
|
|
| if (!layoutObject())
|
| @@ -578,6 +584,8 @@ static double adjustForLocalZoom(LayoutUnit value, LayoutObject& layoutObject)
|
|
|
| int Element::offsetLeft()
|
| {
|
| + if (inActiveDocument())
|
| + return 0;
|
| document().updateLayoutIgnorePendingStylesheets();
|
| if (LayoutBoxModelObject* layoutObject = layoutBoxModelObject())
|
| return lroundf(adjustForLocalZoom(layoutObject->offsetLeft(), *layoutObject));
|
| @@ -586,6 +594,8 @@ int Element::offsetLeft()
|
|
|
| int Element::offsetTop()
|
| {
|
| + if (inActiveDocument())
|
| + return 0;
|
| document().updateLayoutIgnorePendingStylesheets();
|
| if (LayoutBoxModelObject* layoutObject = layoutBoxModelObject())
|
| return lroundf(adjustForLocalZoom(layoutObject->pixelSnappedOffsetTop(), *layoutObject));
|
| @@ -594,6 +604,8 @@ int Element::offsetTop()
|
|
|
| int Element::offsetWidth()
|
| {
|
| + if (inActiveDocument())
|
| + return 0;
|
| document().updateLayoutIgnorePendingStylesheets();
|
| if (LayoutBoxModelObject* layoutObject = layoutBoxModelObject())
|
| return adjustLayoutUnitForAbsoluteZoom(layoutObject->pixelSnappedOffsetWidth(), *layoutObject).round();
|
| @@ -602,6 +614,8 @@ int Element::offsetWidth()
|
|
|
| int Element::offsetHeight()
|
| {
|
| + if (inActiveDocument())
|
| + return 0;
|
| document().updateLayoutIgnorePendingStylesheets();
|
| if (LayoutBoxModelObject* layoutObject = layoutBoxModelObject())
|
| return adjustLayoutUnitForAbsoluteZoom(layoutObject->pixelSnappedOffsetHeight(), *layoutObject).round();
|
| @@ -610,6 +624,9 @@ int Element::offsetHeight()
|
|
|
| Element* Element::offsetParent()
|
| {
|
| + if (inActiveDocument())
|
| + return nullptr;
|
| +
|
| document().updateLayoutIgnorePendingStylesheets();
|
|
|
| LayoutObject* layoutObject = this->layoutObject();
|
| @@ -628,6 +645,9 @@ Element* Element::offsetParent()
|
|
|
| int Element::clientLeft()
|
| {
|
| + if (inActiveDocument())
|
| + return 0;
|
| +
|
| document().updateLayoutIgnorePendingStylesheets();
|
|
|
| if (LayoutBox* layoutObject = layoutBox())
|
| @@ -637,6 +657,9 @@ int Element::clientLeft()
|
|
|
| int Element::clientTop()
|
| {
|
| + if (inActiveDocument())
|
| + return 0;
|
| +
|
| document().updateLayoutIgnorePendingStylesheets();
|
|
|
| if (LayoutBox* layoutObject = layoutBox())
|
| @@ -646,6 +669,9 @@ int Element::clientTop()
|
|
|
| int Element::clientWidth()
|
| {
|
| + if (inActiveDocument())
|
| + return 0;
|
| +
|
| document().updateLayoutIgnorePendingStylesheets();
|
|
|
| // When in strict mode, clientWidth for the document element should return the width of the containing frame.
|
| @@ -669,6 +695,9 @@ int Element::clientWidth()
|
|
|
| int Element::clientHeight()
|
| {
|
| + if (inActiveDocument())
|
| + return 0;
|
| +
|
| document().updateLayoutIgnorePendingStylesheets();
|
|
|
| // When in strict mode, clientHeight for the document element should return the height of the containing frame.
|
| @@ -693,6 +722,9 @@ int Element::clientHeight()
|
|
|
| double Element::scrollLeft()
|
| {
|
| + if (inActiveDocument())
|
| + return 0;
|
| +
|
| document().updateLayoutIgnorePendingStylesheets();
|
|
|
| if (document().scrollingElement() == this) {
|
| @@ -709,6 +741,9 @@ double Element::scrollLeft()
|
|
|
| double Element::scrollTop()
|
| {
|
| + if (inActiveDocument())
|
| + return 0;
|
| +
|
| document().updateLayoutIgnorePendingStylesheets();
|
|
|
| if (document().scrollingElement() == this) {
|
| @@ -725,6 +760,9 @@ double Element::scrollTop()
|
|
|
| void Element::setScrollLeft(double newLeft)
|
| {
|
| + if (!inActiveDocument())
|
| + return;
|
| +
|
| document().updateLayoutIgnorePendingStylesheets();
|
|
|
| newLeft = ScrollableArea::normalizeNonFiniteScroll(newLeft);
|
| @@ -741,6 +779,9 @@ void Element::setScrollLeft(double newLeft)
|
|
|
| void Element::setScrollTop(double newTop)
|
| {
|
| + if (!inActiveDocument())
|
| + return;
|
| +
|
| document().updateLayoutIgnorePendingStylesheets();
|
|
|
| newTop = ScrollableArea::normalizeNonFiniteScroll(newTop);
|
| @@ -757,6 +798,9 @@ void Element::setScrollTop(double newTop)
|
|
|
| int Element::scrollWidth()
|
| {
|
| + if (!inActiveDocument())
|
| + return 0;
|
| +
|
| document().updateLayoutIgnorePendingStylesheets();
|
|
|
| if (document().scrollingElement() == this) {
|
| @@ -772,6 +816,9 @@ int Element::scrollWidth()
|
|
|
| int Element::scrollHeight()
|
| {
|
| + if (!inActiveDocument())
|
| + return 0;
|
| +
|
| document().updateLayoutIgnorePendingStylesheets();
|
|
|
| if (document().scrollingElement() == this) {
|
| @@ -795,6 +842,9 @@ 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().updateLayoutIgnorePendingStylesheets();
|
| @@ -816,6 +866,9 @@ 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().updateLayoutIgnorePendingStylesheets();
|
| @@ -914,6 +967,9 @@ void Element::decrementProxyCount()
|
|
|
| bool Element::hasNonEmptyLayoutSize() const
|
| {
|
| + if (!inActiveDocument())
|
| + return false;
|
| +
|
| document().updateLayoutIgnorePendingStylesheets();
|
|
|
| if (LayoutBoxModelObject* box = layoutBoxModelObject())
|
| @@ -923,6 +979,9 @@ bool Element::hasNonEmptyLayoutSize() const
|
|
|
| IntRect Element::boundsInViewportSpace()
|
| {
|
| + if (!inActiveDocument())
|
| + return IntRect();
|
| +
|
| document().updateLayoutIgnorePendingStylesheets();
|
|
|
| FrameView* view = document().view();
|
| @@ -954,6 +1013,9 @@ IntRect Element::boundsInViewportSpace()
|
|
|
| ClientRectList* Element::getClientRects()
|
| {
|
| + if (!inActiveDocument())
|
| + return ClientRectList::create();
|
| +
|
| document().updateLayoutIgnorePendingStylesheets();
|
|
|
| LayoutObject* elementLayoutObject = layoutObject();
|
| @@ -971,6 +1033,9 @@ ClientRectList* Element::getClientRects()
|
|
|
| ClientRect* Element::getBoundingClientRect()
|
| {
|
| + if (!inActiveDocument())
|
| + return ClientRect::create();
|
| +
|
| document().updateLayoutIgnorePendingStylesheets();
|
|
|
| Vector<FloatQuad> quads;
|
| @@ -1009,14 +1074,16 @@ IntRect Element::screenRect() const
|
|
|
| const AtomicString& Element::computedRole()
|
| {
|
| - document().updateLayoutIgnorePendingStylesheets();
|
| + if (inActiveDocument())
|
| + document().updateLayoutIgnorePendingStylesheets();
|
| OwnPtr<ScopedAXObjectCache> cache = ScopedAXObjectCache::create(document());
|
| return cache->get()->computedRoleForNode(this);
|
| }
|
|
|
| String Element::computedName()
|
| {
|
| - document().updateLayoutIgnorePendingStylesheets();
|
| + if (inActiveDocument())
|
| + document().updateLayoutIgnorePendingStylesheets();
|
| OwnPtr<ScopedAXObjectCache> cache = ScopedAXObjectCache::create(document());
|
| return cache->get()->computedNameForNode(this);
|
| }
|
| @@ -2270,15 +2337,12 @@ bool Element::hasAttributeNS(const AtomicString& namespaceURI, const AtomicStrin
|
|
|
| void Element::focus(bool restorePreviousSelection, WebFocusType type, InputDeviceCapabilities* sourceCapabilities)
|
| {
|
| - if (!inDocument())
|
| + if (!inActiveDocument())
|
| return;
|
|
|
| if (document().focusedElement() == this)
|
| return;
|
|
|
| - if (!document().isActive())
|
| - return;
|
| -
|
| document().updateLayoutIgnorePendingStylesheets();
|
| if (!isFocusable())
|
| return;
|
| @@ -2557,7 +2621,8 @@ void Element::insertAdjacentHTML(const String& where, const String& markup, Exce
|
| String Element::innerText()
|
| {
|
| // We need to update layout, since plainText uses line boxes in the layout tree.
|
| - document().updateLayoutIgnorePendingStylesheets();
|
| + if (inActiveDocument())
|
| + document().updateLayoutIgnorePendingStylesheets();
|
|
|
| if (!layoutObject())
|
| return textContent(true);
|
|
|