| Index: Source/core/html/HTMLBodyElement.cpp | 
| diff --git a/Source/core/html/HTMLBodyElement.cpp b/Source/core/html/HTMLBodyElement.cpp | 
| index f92220d4ea0810e8ec498bdc59061fcbb8bd4d06..183466aa90292e38b4babb89ff71646999bd1e4f 100644 | 
| --- a/Source/core/html/HTMLBodyElement.cpp | 
| +++ b/Source/core/html/HTMLBodyElement.cpp | 
| @@ -31,13 +31,9 @@ | 
| #include "core/css/StylePropertySet.h" | 
| #include "core/css/parser/CSSParser.h" | 
| #include "core/dom/Attribute.h" | 
| -#include "core/frame/FrameView.h" | 
| -#include "core/frame/LocalFrame.h" | 
| -#include "core/frame/ScrollToOptions.h" | 
| #include "core/frame/UseCounter.h" | 
| #include "core/html/HTMLFrameElementBase.h" | 
| #include "core/html/parser/HTMLParserIdioms.h" | 
| -#include "core/layout/LayoutBox.h" | 
|  | 
| namespace blink { | 
|  | 
| @@ -196,181 +192,4 @@ bool HTMLBodyElement::supportsFocus() const | 
| return hasEditableStyle() || HTMLElement::supportsFocus(); | 
| } | 
|  | 
| -static int adjustForZoom(int value, Document* document) | 
| -{ | 
| -    LocalFrame* frame = document->frame(); | 
| -    float zoomFactor = frame->pageZoomFactor(); | 
| -    if (zoomFactor == 1) | 
| -        return value; | 
| -    // Needed because of truncation (rather than rounding) when scaling up. | 
| -    if (zoomFactor > 1) | 
| -        value++; | 
| -    return static_cast<int>(value / zoomFactor); | 
| -} | 
| - | 
| -// Blink, Gecko and Presto's quirks mode implementations of overflow set to the | 
| -// body element differ from IE's: the formers can create a scrollable area for the | 
| -// body element that is not the same as the root elements's one. On IE's quirks mode | 
| -// though, as body is the root element, body's and the root element's scrollable areas, | 
| -// if any, are the same. | 
| -// In order words, a <body> will only have an overflow clip (that differs from | 
| -// documentElement's) if  both html and body nodes have its overflow set to either hidden, | 
| -// auto or scroll. | 
| -// That said, Blink's {set}scroll{Top,Left} behaviors match Gecko's: even if there is a non-overflown | 
| -// scrollable area, scrolling should not get propagated to the viewport in neither strict | 
| -// or quirks modes. | 
| -double HTMLBodyElement::scrollLeft() | 
| -{ | 
| -    Document& document = this->document(); | 
| -    document.updateLayoutIgnorePendingStylesheets(); | 
| - | 
| -    if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) { | 
| -        LayoutBox* render = layoutBox(); | 
| -        if (!render) | 
| -            return 0; | 
| -        if (render->hasOverflowClip()) | 
| -            return adjustScrollForAbsoluteZoom(render->scrollLeft(), *render); | 
| -        if (!document.inQuirksMode()) | 
| -            return 0; | 
| -    } | 
| - | 
| -    if (LocalDOMWindow* window = document.domWindow()) | 
| -        return window->scrollX(); | 
| -    return 0; | 
| -} | 
| - | 
| -void HTMLBodyElement::setScrollLeft(double scrollLeft) | 
| -{ | 
| -    Document& document = this->document(); | 
| -    document.updateLayoutIgnorePendingStylesheets(); | 
| - | 
| -    if (std::isnan(scrollLeft)) | 
| -        return; | 
| - | 
| -    if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) { | 
| -        LayoutBox* render = layoutBox(); | 
| -        if (!render) | 
| -            return; | 
| -        if (render->hasOverflowClip()) { | 
| -            // FIXME: Investigate how are other browsers casting to int (rounding, ceiling, ...). | 
| -            render->setScrollLeft(static_cast<int>(scrollLeft * render->style()->effectiveZoom())); | 
| -            return; | 
| -        } | 
| -        if (!document.inQuirksMode()) | 
| -            return; | 
| -    } | 
| - | 
| -    if (LocalDOMWindow* window = document.domWindow()) | 
| -        window->scrollTo(scrollLeft, window->scrollY()); | 
| -} | 
| - | 
| -double HTMLBodyElement::scrollTop() | 
| -{ | 
| -    Document& document = this->document(); | 
| -    document.updateLayoutIgnorePendingStylesheets(); | 
| - | 
| -    if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) { | 
| -        LayoutBox* render = layoutBox(); | 
| -        if (!render) | 
| -            return 0; | 
| -        if (render->hasOverflowClip()) | 
| -            return adjustLayoutUnitForAbsoluteZoom(render->scrollTop(), *render); | 
| -        if (!document.inQuirksMode()) | 
| -            return 0; | 
| -    } | 
| - | 
| -    if (LocalDOMWindow* window = document.domWindow()) | 
| -        return window->scrollY(); | 
| -    return 0; | 
| -} | 
| - | 
| -void HTMLBodyElement::setScrollTop(double scrollTop) | 
| -{ | 
| -    Document& document = this->document(); | 
| -    document.updateLayoutIgnorePendingStylesheets(); | 
| - | 
| -    if (std::isnan(scrollTop)) | 
| -        return; | 
| - | 
| -    if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) { | 
| -        LayoutBox* render = layoutBox(); | 
| -        if (!render) | 
| -            return; | 
| -        if (render->hasOverflowClip()) { | 
| -            // FIXME: Investigate how are other browsers casting to int (rounding, ceiling, ...). | 
| -            render->setScrollTop(static_cast<int>(scrollTop * render->style()->effectiveZoom())); | 
| -            return; | 
| -        } | 
| -        if (!document.inQuirksMode()) | 
| -            return; | 
| -    } | 
| - | 
| -    if (LocalDOMWindow* window = document.domWindow()) | 
| -        window->scrollTo(window->scrollX(), scrollTop); | 
| -} | 
| - | 
| -int HTMLBodyElement::scrollHeight() | 
| -{ | 
| -    // Update the document's layout. | 
| -    Document& document = this->document(); | 
| -    document.updateLayoutIgnorePendingStylesheets(); | 
| -    FrameView* view = document.view(); | 
| -    return view ? adjustForZoom(view->contentsHeight(), &document) : 0; | 
| -} | 
| - | 
| -int HTMLBodyElement::scrollWidth() | 
| -{ | 
| -    // Update the document's layout. | 
| -    Document& document = this->document(); | 
| -    document.updateLayoutIgnorePendingStylesheets(); | 
| -    FrameView* view = document.view(); | 
| -    return view ? adjustForZoom(view->contentsWidth(), &document) : 0; | 
| -} | 
| - | 
| -void HTMLBodyElement::scrollBy(const ScrollToOptions& scrollToOptions) | 
| -{ | 
| -    Document& document = this->document(); | 
| - | 
| -    // FIXME: This should be removed once scroll updates are processed only after | 
| -    // the compositing update. See http://crbug.com/420741. | 
| -    document.updateLayoutIgnorePendingStylesheets(); | 
| - | 
| -    if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) { | 
| -        LayoutBox* render = layoutBox(); | 
| -        if (!render) | 
| -            return; | 
| -        if (render->hasOverflowClip()) { | 
| -            scrollLayoutBoxBy(scrollToOptions); | 
| -            return; | 
| -        } | 
| -        if (!document.inQuirksMode()) | 
| -            return; | 
| -    } | 
| - | 
| -    scrollFrameBy(scrollToOptions); | 
| -} | 
| - | 
| -void HTMLBodyElement::scrollTo(const ScrollToOptions& scrollToOptions) | 
| -{ | 
| -    Document& document = this->document(); | 
| - | 
| -    // FIXME: This should be removed once scroll updates are processed only after | 
| -    // the compositing update. See http://crbug.com/420741. | 
| -    document.updateLayoutIgnorePendingStylesheets(); | 
| - | 
| -    if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) { | 
| -        LayoutBox* render = layoutBox(); | 
| -        if (!render) | 
| -            return; | 
| -        if (render->hasOverflowClip()) { | 
| -            scrollLayoutBoxTo(scrollToOptions); | 
| -            return; | 
| -        } | 
| -        if (!document.inQuirksMode()) | 
| -            return; | 
| -    } | 
| - | 
| -    scrollFrameTo(scrollToOptions); | 
| -} | 
| - | 
| } // namespace blink | 
|  |