| Index: third_party/WebKit/Source/core/html/HTMLElement.cpp
|
| diff --git a/third_party/WebKit/Source/core/html/HTMLElement.cpp b/third_party/WebKit/Source/core/html/HTMLElement.cpp
|
| index 97f7595717213225f3016ec684e83d20fafde47f..7d232d27b792980f594d03353f394ffd3b571dda 100644
|
| --- a/third_party/WebKit/Source/core/html/HTMLElement.cpp
|
| +++ b/third_party/WebKit/Source/core/html/HTMLElement.cpp
|
| @@ -54,6 +54,7 @@
|
| #include "core/html/HTMLTemplateElement.h"
|
| #include "core/html/HTMLTextFormControlElement.h"
|
| #include "core/html/parser/HTMLParserIdioms.h"
|
| +#include "core/layout/LayoutBoxModelObject.h"
|
| #include "core/layout/LayoutObject.h"
|
| #include "core/page/SpatialNavigation.h"
|
| #include "platform/Language.h"
|
| @@ -1051,6 +1052,52 @@ const AtomicString& HTMLElement::eventParameterName()
|
| return eventString;
|
| }
|
|
|
| +int HTMLElement::offsetLeftForBinding()
|
| +{
|
| + document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
|
| + if (LayoutBoxModelObject* layoutObject = layoutBoxModelObject())
|
| + return adjustLayoutUnitForAbsoluteZoom(LayoutUnit(layoutObject->pixelSnappedOffsetLeft(unclosedOffsetParent())), layoutObject->styleRef()).round();
|
| + return 0;
|
| +}
|
| +
|
| +int HTMLElement::offsetTopForBinding()
|
| +{
|
| + document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
|
| + if (LayoutBoxModelObject* layoutObject = layoutBoxModelObject())
|
| + return adjustLayoutUnitForAbsoluteZoom(LayoutUnit(layoutObject->pixelSnappedOffsetTop(unclosedOffsetParent())), layoutObject->styleRef()).round();
|
| + return 0;
|
| +}
|
| +
|
| +int HTMLElement::offsetWidthForBinding()
|
| +{
|
| + document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
|
| + if (LayoutBoxModelObject* layoutObject = layoutBoxModelObject())
|
| + return adjustLayoutUnitForAbsoluteZoom(LayoutUnit(layoutObject->pixelSnappedOffsetWidth(unclosedOffsetParent())), layoutObject->styleRef()).round();
|
| + return 0;
|
| +}
|
| +
|
| +int HTMLElement::offsetHeightForBinding()
|
| +{
|
| + document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
|
| + if (LayoutBoxModelObject* layoutObject = layoutBoxModelObject())
|
| + return adjustLayoutUnitForAbsoluteZoom(LayoutUnit(layoutObject->pixelSnappedOffsetHeight(unclosedOffsetParent())), layoutObject->styleRef()).round();
|
| + return 0;
|
| +}
|
| +
|
| +Element* HTMLElement::unclosedOffsetParent()
|
| +{
|
| + document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
|
| +
|
| + LayoutObject* layoutObject = this->layoutObject();
|
| + if (!layoutObject)
|
| + return nullptr;
|
| +
|
| + Element* element = layoutObject->offsetParent();
|
| + while (element && (!element->isUnclosedNodeOf(*this) || (element->isInShadowTree() && element->containingShadowRoot()->type() == ShadowRootType::UserAgent)))
|
| + element = element->layoutObject()->offsetParent();
|
| + return element;
|
| +}
|
| +
|
| } // namespace blink
|
|
|
| #ifndef NDEBUG
|
|
|