提交 17285722 编写于 作者: O Ojan Vafai

Remove some more frame-level scrolling machinery.

This includes removing a bunch of scrolling methods and
accessors on Window.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/677223002
上级 51b354f2
......@@ -461,14 +461,6 @@ int Element::scrollLeft()
if (document().documentElement() != this) {
if (RenderBox* rend = renderBox())
return adjustDoubleForAbsoluteZoom(rend->scrollLeft(), *rend);
return 0;
}
if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) {
if (FrameView* view = document().view()) {
if (RenderView* renderView = document().renderView())
return adjustDoubleForAbsoluteZoom(view->scrollX(), *renderView);
}
}
return 0;
......@@ -481,14 +473,6 @@ int Element::scrollTop()
if (document().documentElement() != this) {
if (RenderBox* rend = renderBox())
return adjustLayoutUnitForAbsoluteZoom(rend->scrollTop(), *rend);
return 0;
}
if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) {
if (FrameView* view = document().view()) {
if (RenderView* renderView = document().renderView())
return adjustDoubleForAbsoluteZoom(view->scrollY(), *renderView);
}
}
return 0;
......@@ -501,18 +485,6 @@ void Element::setScrollLeft(int newLeft)
if (document().documentElement() != this) {
if (RenderBox* rend = renderBox())
rend->setScrollLeft(LayoutUnit::fromFloatRound(newLeft * rend->style()->effectiveZoom()));
return;
}
if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) {
LocalFrame* frame = document().frame();
if (!frame)
return;
FrameView* view = frame->view();
if (!view)
return;
view->setScrollPosition(IntPoint(roundf(newLeft * frame->pageZoomFactor()), view->scrollY()));
}
}
......@@ -544,18 +516,6 @@ void Element::setScrollTop(int newTop)
if (document().documentElement() != this) {
if (RenderBox* rend = renderBox())
rend->setScrollTop(LayoutUnit::fromFloatRound(newTop * rend->style()->effectiveZoom()));
return;
}
if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) {
LocalFrame* frame = document().frame();
if (!frame)
return;
FrameView* view = frame->view();
if (!view)
return;
view->setScrollPosition(IntPoint(view->scrollX(), roundf(newTop * frame->pageZoomFactor())));
}
}
......
......@@ -209,7 +209,7 @@ HitTestResult hitTestInDocument(const Document* document, int x, int y)
return HitTestResult();
float scaleFactor = frame->pageZoomFactor();
IntPoint point = roundedIntPoint(FloatPoint(x * scaleFactor + frameView->scrollX(), y * scaleFactor + frameView->scrollY()));
IntPoint point = roundedIntPoint(FloatPoint(x * scaleFactor, y * scaleFactor));
if (!frameView->visibleContentRect().contains(point))
return HitTestResult();
......
......@@ -38,20 +38,6 @@ MouseRelatedEvent::MouseRelatedEvent()
{
}
static LayoutSize contentsScrollOffset(AbstractView* abstractView)
{
if (!abstractView)
return LayoutSize();
LocalFrame* frame = abstractView->frame();
if (!frame)
return LayoutSize();
FrameView* frameView = frame->view();
if (!frameView)
return LayoutSize();
float scaleFactor = frame->pageZoomFactor();
return LayoutSize(frameView->scrollX() / scaleFactor, frameView->scrollY() / scaleFactor);
}
MouseRelatedEvent::MouseRelatedEvent(const AtomicString& eventType, bool canBubble, bool cancelable, PassRefPtrWillBeRawPtr<AbstractView> abstractView,
int detail, const IntPoint& screenLocation, const IntPoint& windowLocation,
const IntPoint& movementDelta,
......@@ -99,7 +85,8 @@ void MouseRelatedEvent::initCoordinates(const LayoutPoint& clientLocation)
// Set up initial values for coordinates.
// Correct values are computed lazily, see computeRelativePosition.
m_clientLocation = clientLocation;
m_pageLocation = clientLocation + contentsScrollOffset(view());
// FIXME(sky): We don't need this anymore?
m_pageLocation = clientLocation;
m_layerLocation = m_pageLocation;
m_offsetLocation = m_pageLocation;
......
......@@ -1385,11 +1385,6 @@ bool FrameView::isActive() const
return page && page->focusController().isActive();
}
void FrameView::scrollTo(const IntSize& newOffset)
{
// FIXME(sky): remove
}
void FrameView::invalidateScrollbarRect(Scrollbar*, const IntRect&)
{
// FIXME(sky): remove
......@@ -1713,12 +1708,7 @@ IntPoint FrameView::convertFromRenderer(const RenderObject& renderer, const IntP
IntPoint FrameView::convertToRenderer(const RenderObject& renderer, const IntPoint& viewPoint) const
{
IntPoint point = viewPoint;
// Convert from FrameView coords into page ("absolute") coordinates.
point += IntSize(scrollX(), scrollY());
return roundedIntPoint(renderer.absoluteToLocal(point, UseTransforms));
return roundedIntPoint(renderer.absoluteToLocal(viewPoint, UseTransforms));
}
IntRect FrameView::convertToContainingView(const IntRect& localRect) const
......
......@@ -277,7 +277,6 @@ public:
// FIXME(sky): Remove
void invalidateScrollbarRect(Scrollbar*, const IntRect&);
void getTickmarks(Vector<IntRect>&) const;
void scrollTo(const IntSize&);
IntRect scrollableAreaBoundingBox() const;
bool scrollAnimatorEnabled() const;
bool usesCompositedScrolling() const;
......@@ -301,12 +300,6 @@ public:
IntPoint maximumScrollPosition() const { return IntPoint(); }
IntPoint scrollPosition() const { return IntPoint(); }
bool scheduleAnimation();
int scrollX() const { return 0; }
int scrollY() const { return 0; }
void scrollBy(const IntSize& s, ScrollBehavior behavior = ScrollBehaviorInstant) {}
void setScrollOffset(const IntPoint&) {}
// Scrollbar* horizontalScrollbar() const { return 0; }
// Scrollbar* verticalScrollbar() const { return 0; }
IntRect visibleContentRect(IncludeScrollbarsInRect = ExcludeScrollbars) const { return IntRect(IntPoint(), expandedIntSize(frameRect().size())); }
IntSize unscaledVisibleContentSize(IncludeScrollbarsInRect = ExcludeScrollbars) const { return frameRect().size(); }
IntPoint clampScrollPosition(const IntPoint& scrollPosition) const { return scrollPosition; }
......
......@@ -74,7 +74,7 @@
#include "core/page/EventHandler.h"
#include "core/page/Page.h"
#include "core/page/WindowFocusAllowedIndicator.h"
#include "core/page/scrolling/ScrollingCoordinator.h"
#include "core/rendering/style/RenderStyle.h"
#include "platform/EventDispatchForbiddenScope.h"
#include "platform/PlatformScreen.h"
#include "platform/RuntimeEnabledFeatures.h"
......@@ -573,34 +573,6 @@ int LocalDOMWindow::screenY() const
return static_cast<int>(host->chrome().windowRect().y());
}
int LocalDOMWindow::scrollX() const
{
if (!m_frame)
return 0;
FrameView* view = m_frame->view();
if (!view)
return 0;
m_frame->document()->updateLayoutIgnorePendingStylesheets();
return adjustForAbsoluteZoom(view->scrollX(), m_frame->pageZoomFactor());
}
int LocalDOMWindow::scrollY() const
{
if (!m_frame)
return 0;
FrameView* view = m_frame->view();
if (!view)
return 0;
m_frame->document()->updateLayoutIgnorePendingStylesheets();
return adjustForAbsoluteZoom(view->scrollY(), m_frame->pageZoomFactor());
}
LocalDOMWindow* LocalDOMWindow::window() const
{
if (!m_frame)
......@@ -652,54 +624,6 @@ double LocalDOMWindow::devicePixelRatio() const
return m_frame->devicePixelRatio();
}
static bool scrollBehaviorFromScrollOptions(const Dictionary& scrollOptions, ScrollBehavior& scrollBehavior, ExceptionState& exceptionState)
{
String scrollBehaviorString;
if (!DictionaryHelper::get(scrollOptions, "behavior", scrollBehaviorString)) {
scrollBehavior = ScrollBehaviorAuto;
return true;
}
if (ScrollableArea::scrollBehaviorFromString(scrollBehaviorString, scrollBehavior))
return true;
exceptionState.throwTypeError("The ScrollBehavior provided is invalid.");
return false;
}
void LocalDOMWindow::scrollBy(int x, int y, ScrollBehavior scrollBehavior) const
{
// FIXME(sky): Remove
}
void LocalDOMWindow::scrollBy(int x, int y, const Dictionary& scrollOptions, ExceptionState &exceptionState) const
{
ScrollBehavior scrollBehavior = ScrollBehaviorAuto;
if (!scrollBehaviorFromScrollOptions(scrollOptions, scrollBehavior, exceptionState))
return;
scrollBy(x, y, scrollBehavior);
}
void LocalDOMWindow::scrollTo(int x, int y, ScrollBehavior scrollBehavior) const
{
document()->updateLayoutIgnorePendingStylesheets();
RefPtr<FrameView> view = m_frame->view();
if (!view)
return;
IntPoint layoutPos(x * m_frame->pageZoomFactor(), y * m_frame->pageZoomFactor());
view->setScrollPosition(layoutPos, scrollBehavior);
}
void LocalDOMWindow::scrollTo(int x, int y, const Dictionary& scrollOptions, ExceptionState& exceptionState) const
{
ScrollBehavior scrollBehavior = ScrollBehaviorAuto;
if (!scrollBehaviorFromScrollOptions(scrollOptions, scrollBehavior, exceptionState))
return;
scrollTo(x, y, scrollBehavior);
}
void LocalDOMWindow::moveBy(float x, float y) const
{
if (!m_frame)
......
......@@ -35,7 +35,6 @@
#include "platform/LifecycleContext.h"
#include "platform/Supplementable.h"
#include "platform/heap/Handle.h"
#include "platform/scroll/ScrollableArea.h"
#include "wtf/Forward.h"
......@@ -133,10 +132,6 @@ public:
int screenY() const;
int screenLeft() const { return screenX(); }
int screenTop() const { return screenY(); }
int scrollX() const;
int scrollY() const;
int pageXOffset() const { return scrollX(); }
int pageYOffset() const { return scrollY(); }
// FIXME(sky): keeping self for now since js-test.html uses it.
LocalDOMWindow* window() const;
......@@ -164,13 +159,6 @@ public:
void printErrorMessage(const String&);
void scrollBy(int x, int y, ScrollBehavior = ScrollBehaviorAuto) const;
void scrollBy(int x, int y, const Dictionary& scrollOptions, ExceptionState&) const;
void scrollTo(int x, int y, ScrollBehavior = ScrollBehaviorAuto) const;
void scrollTo(int x, int y, const Dictionary& scrollOptions, ExceptionState&) const;
void scroll(int x, int y) const { scrollTo(x, y); }
void scroll(int x, int y, const Dictionary& scrollOptions, ExceptionState& exceptionState) const { scrollTo(x, y, scrollOptions, exceptionState); }
void moveBy(float x, float y) const;
void moveTo(float x, float y) const;
......
......@@ -59,19 +59,7 @@
[Replaceable] readonly attribute long screenY;
[Replaceable] readonly attribute long screenLeft;
[Replaceable] readonly attribute long screenTop;
[Replaceable] readonly attribute long scrollX;
[Replaceable] readonly attribute long scrollY;
readonly attribute long pageXOffset;
readonly attribute long pageYOffset;
// Overloading can be replaced by optional if RuntimeEnabled is removed, by
// changing the third argument to *optional* Dictionary scrollOptions
void scrollBy(long x, long y);
[RuntimeEnabled=CSSOMSmoothScroll, RaisesException] void scrollBy(long x, long y, Dictionary scrollOptions);
void scrollTo(long x, long y);
[RuntimeEnabled=CSSOMSmoothScroll, RaisesException] void scrollTo(long x, long y, Dictionary scrollOptions);
void scroll(long x, long y);
[RuntimeEnabled=CSSOMSmoothScroll, RaisesException] void scroll(long x, long y, Dictionary scrollOptions);
void moveBy([Default=Undefined] optional float x, [Default=Undefined] optional float y); // FIXME: this should take longs not floats.
void moveTo([Default=Undefined] optional float x, [Default=Undefined] optional float y); // FIXME: this should take longs not floats.
void resizeBy([Default=Undefined] optional float x, [Default=Undefined] optional float y); // FIXME: this should take longs not floats.
......
......@@ -668,13 +668,6 @@ void RenderBox::scrollByRecursively(const IntSize& delta, ScrollOffsetClamping c
if (frame && frame->page())
frame->page()->autoscrollController().updateAutoscrollRenderer();
}
} else if (view()->frameView()) {
// If we are here, we were called on a renderer that can be programmatically scrolled, but doesn't
// have an overflow clip. Which means that it is a document node that can be scrolled.
view()->frameView()->scrollBy(delta);
// FIXME: If we didn't scroll the whole way, do we want to try looking at the frames ownerElement?
// https://bugs.webkit.org/show_bug.cgi?id=28237
}
}
......
......@@ -109,7 +109,6 @@ public:
// The scroll offset from the top-left corner of the frame in pixels.
virtual WebSize scrollOffset() const = 0;
virtual void setScrollOffset(const WebSize&) = 0;
// The minimum and maxium scroll positions in pixels.
virtual WebSize minimumScrollOffset() const = 0;
......
......@@ -252,12 +252,6 @@ WebSize WebLocalFrameImpl::maximumScrollOffset() const
return toIntSize(view->maximumScrollPosition());
}
void WebLocalFrameImpl::setScrollOffset(const WebSize& offset)
{
if (FrameView* view = frameView())
view->setScrollOffset(IntPoint(offset.width, offset.height));
}
WebSize WebLocalFrameImpl::contentsSize() const
{
return frame()->view()->size();
......
......@@ -64,7 +64,6 @@ public:
virtual WebLocalFrame* toWebLocalFrame() override;
virtual void close() override;
virtual WebSize scrollOffset() const override;
virtual void setScrollOffset(const WebSize&) override;
virtual WebSize minimumScrollOffset() const override;
virtual WebSize maximumScrollOffset() const override;
virtual WebSize contentsSize() const override;
......
......@@ -252,6 +252,7 @@ bool WebViewImpl::handleMouseWheel(LocalFrame& mainFrame, const WebMouseWheelEve
return PageWidgetEventHandler::handleMouseWheel(mainFrame, event);
}
// FIXME(sky): This appears to be unused.
bool WebViewImpl::scrollBy(const WebFloatSize& delta, const WebFloatSize& velocity)
{
if (m_flingSourceDevice == WebGestureDeviceTouchpad) {
......
<!DOCTYPE html>
<html>
<body>
This is a test case for selecting a range within an iframe.
<iframe id='target' width='400' height='200' src='select_range_scroll.html'></iframe>
<script>
document.getElementById('target').contentWindow.focus();
</script>
</body>
</html>
<!DOCTYPE html>
<html id='root'>
<body>
<div style='height:3000px'>
<span id="target">Some offscreen test text for testing.</span>
</div>
<script>
var range = document.createRange();
range.selectNode(document.getElementById('target'));
window.getSelection().addRange(range);
window.scrollBy(0,500);
</script>
</body>
</html>
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册