diff options
Diffstat (limited to 'chromium/third_party/WebKit/Source/core/dom/Touch.cpp')
-rw-r--r-- | chromium/third_party/WebKit/Source/core/dom/Touch.cpp | 63 |
1 files changed, 25 insertions, 38 deletions
diff --git a/chromium/third_party/WebKit/Source/core/dom/Touch.cpp b/chromium/third_party/WebKit/Source/core/dom/Touch.cpp index a955babbb5d..c2b5f6118f5 100644 --- a/chromium/third_party/WebKit/Source/core/dom/Touch.cpp +++ b/chromium/third_party/WebKit/Source/core/dom/Touch.cpp @@ -27,63 +27,45 @@ #include "core/dom/Touch.h" -#include "core/frame/Frame.h" #include "core/frame/FrameView.h" +#include "core/frame/LocalFrame.h" +#include "platform/geometry/FloatPoint.h" namespace WebCore { -static int contentsX(Frame* frame) +static FloatPoint contentsOffset(LocalFrame* frame) { if (!frame) - return 0; + return FloatPoint(); FrameView* frameView = frame->view(); if (!frameView) - return 0; - return frameView->scrollX() / frame->pageZoomFactor(); + return FloatPoint(); + float scale = 1.0f / frame->pageZoomFactor(); + return FloatPoint(frameView->scrollPosition()).scaledBy(scale); } -static int contentsY(Frame* frame) -{ - if (!frame) - return 0; - FrameView* frameView = frame->view(); - if (!frameView) - return 0; - return frameView->scrollY() / frame->pageZoomFactor(); -} - -Touch::Touch(Frame* frame, EventTarget* target, unsigned identifier, int screenX, int screenY, int pageX, int pageY, int radiusX, int radiusY, float rotationAngle, float force) +Touch::Touch(LocalFrame* frame, EventTarget* target, unsigned identifier, const FloatPoint& screenPos, const FloatPoint& pagePos, const FloatSize& radius, float rotationAngle, float force) : m_target(target) , m_identifier(identifier) - , m_clientX(pageX - contentsX(frame)) - , m_clientY(pageY - contentsY(frame)) - , m_screenX(screenX) - , m_screenY(screenY) - , m_pageX(pageX) - , m_pageY(pageY) - , m_radiusX(radiusX) - , m_radiusY(radiusY) + , m_clientPos(pagePos - contentsOffset(frame)) + , m_screenPos(screenPos) + , m_pagePos(pagePos) + , m_radius(radius) , m_rotationAngle(rotationAngle) , m_force(force) { ScriptWrappable::init(this); float scaleFactor = frame->pageZoomFactor(); - float x = pageX * scaleFactor; - float y = pageY * scaleFactor; - m_absoluteLocation = roundedLayoutPoint(FloatPoint(x, y)); + m_absoluteLocation = roundedLayoutPoint(pagePos.scaledBy(scaleFactor)); } -Touch::Touch(EventTarget* target, unsigned identifier, int clientX, int clientY, int screenX, int screenY, int pageX, int pageY, int radiusX, int radiusY, float rotationAngle, float force, LayoutPoint absoluteLocation) +Touch::Touch(EventTarget* target, unsigned identifier, const FloatPoint& clientPos, const FloatPoint& screenPos, const FloatPoint& pagePos, const FloatSize& radius, float rotationAngle, float force, LayoutPoint absoluteLocation) : m_target(target) , m_identifier(identifier) - , m_clientX(clientX) - , m_clientY(clientY) - , m_screenX(screenX) - , m_screenY(screenY) - , m_pageX(pageX) - , m_pageY(pageY) - , m_radiusX(radiusX) - , m_radiusY(radiusY) + , m_clientPos(clientPos) + , m_screenPos(screenPos) + , m_pagePos(pagePos) + , m_radius(radius) , m_rotationAngle(rotationAngle) , m_force(force) , m_absoluteLocation(absoluteLocation) @@ -91,9 +73,14 @@ Touch::Touch(EventTarget* target, unsigned identifier, int clientX, int clientY, ScriptWrappable::init(this); } -PassRefPtr<Touch> Touch::cloneWithNewTarget(EventTarget* eventTarget) const +PassRefPtrWillBeRawPtr<Touch> Touch::cloneWithNewTarget(EventTarget* eventTarget) const +{ + return adoptRefWillBeNoop(new Touch(eventTarget, m_identifier, m_clientPos, m_screenPos, m_pagePos, m_radius, m_rotationAngle, m_force, m_absoluteLocation)); +} + +void Touch::trace(Visitor* visitor) { - return adoptRef(new Touch(eventTarget, m_identifier, m_clientX, m_clientY, m_screenX, m_screenY, m_pageX, m_pageY, m_radiusX, m_radiusY, m_rotationAngle, m_force, m_absoluteLocation)); + visitor->trace(m_target); } } // namespace WebCore |