Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(59)

Side by Side Diff: third_party/WebKit/Source/core/events/MouseEvent.cpp

Issue 2650403006: Remove PlatformMouseEvent and use WebMouseEvent instead (Closed)
Patch Set: Fix nits Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2001 Peter Kelly (pmk@post.com) 2 * Copyright (C) 2001 Peter Kelly (pmk@post.com)
3 * Copyright (C) 2001 Tobias Anton (anton@stud.fbi.fh-darmstadt.de) 3 * Copyright (C) 2001 Tobias Anton (anton@stud.fbi.fh-darmstadt.de)
4 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) 4 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com)
5 * Copyright (C) 2003, 2005, 2006, 2008 Apple Inc. All rights reserved. 5 * Copyright (C) 2003, 2005, 2006, 2008 Apple Inc. All rights reserved.
6 * 6 *
7 * This library is free software; you can redistribute it and/or 7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public 8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either 9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version. 10 * version 2 of the License, or (at your option) any later version.
(...skipping 14 matching lines...) Expand all
25 #include "bindings/core/v8/DOMWrapperWorld.h" 25 #include "bindings/core/v8/DOMWrapperWorld.h"
26 #include "bindings/core/v8/ScriptState.h" 26 #include "bindings/core/v8/ScriptState.h"
27 #include "core/dom/Element.h" 27 #include "core/dom/Element.h"
28 #include "core/events/EventDispatcher.h" 28 #include "core/events/EventDispatcher.h"
29 #include "core/frame/FrameView.h" 29 #include "core/frame/FrameView.h"
30 #include "core/frame/LocalDOMWindow.h" 30 #include "core/frame/LocalDOMWindow.h"
31 #include "core/frame/LocalFrame.h" 31 #include "core/frame/LocalFrame.h"
32 #include "core/layout/LayoutObject.h" 32 #include "core/layout/LayoutObject.h"
33 #include "core/paint/PaintLayer.h" 33 #include "core/paint/PaintLayer.h"
34 #include "core/svg/SVGElement.h" 34 #include "core/svg/SVGElement.h"
35 #include "platform/PlatformMouseEvent.h"
36 #include "public/platform/WebPointerProperties.h" 35 #include "public/platform/WebPointerProperties.h"
37 36
38 namespace blink { 37 namespace blink {
39 38
40 namespace { 39 namespace {
41 40
42 LayoutSize contentsScrollOffset(AbstractView* abstractView) { 41 LayoutSize contentsScrollOffset(AbstractView* abstractView) {
43 if (!abstractView || !abstractView->isLocalDOMWindow()) 42 if (!abstractView || !abstractView->isLocalDOMWindow())
44 return LayoutSize(); 43 return LayoutSize();
45 LocalFrame* frame = toLocalDOMWindow(abstractView)->frame(); 44 LocalFrame* frame = toLocalDOMWindow(abstractView)->frame();
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 const MouseEventInit& initializer) { 83 const MouseEventInit& initializer) {
85 if (scriptState && scriptState->world().isIsolatedWorld()) 84 if (scriptState && scriptState->world().isIsolatedWorld())
86 UIEventWithKeyState::didCreateEventInIsolatedWorld( 85 UIEventWithKeyState::didCreateEventInIsolatedWorld(
87 initializer.ctrlKey(), initializer.altKey(), initializer.shiftKey(), 86 initializer.ctrlKey(), initializer.altKey(), initializer.shiftKey(),
88 initializer.metaKey()); 87 initializer.metaKey());
89 return new MouseEvent(type, initializer); 88 return new MouseEvent(type, initializer);
90 } 89 }
91 90
92 MouseEvent* MouseEvent::create(const AtomicString& eventType, 91 MouseEvent* MouseEvent::create(const AtomicString& eventType,
93 AbstractView* view, 92 AbstractView* view,
94 const PlatformMouseEvent& event, 93 const WebMouseEvent& event,
95 int detail, 94 int detail,
95 const String& canvasRegionId,
96 Node* relatedTarget) { 96 Node* relatedTarget) {
97 bool isMouseEnterOrLeave = eventType == EventTypeNames::mouseenter || 97 bool isMouseEnterOrLeave = eventType == EventTypeNames::mouseenter ||
98 eventType == EventTypeNames::mouseleave; 98 eventType == EventTypeNames::mouseleave;
99 bool isCancelable = !isMouseEnterOrLeave; 99 bool isCancelable = !isMouseEnterOrLeave;
100 bool isBubbling = !isMouseEnterOrLeave; 100 bool isBubbling = !isMouseEnterOrLeave;
101 101 return new MouseEvent(eventType, isBubbling, isCancelable, view, event,
102 return MouseEvent::create( 102 detail, canvasRegionId, relatedTarget);
103 eventType, isBubbling, isCancelable, view, detail,
104 event.globalPosition().x(), event.globalPosition().y(),
105 event.position().x(), event.position().y(), event.movementDelta().x(),
106 event.movementDelta().y(), event.getModifiers(),
107 static_cast<short>(event.pointerProperties().button),
108 platformModifiersToButtons(event.getModifiers()), relatedTarget,
109 event.timestamp(), event.getSyntheticEventType(), event.region(), &event);
110 }
111
112 MouseEvent* MouseEvent::create(
113 const AtomicString& type,
114 bool canBubble,
115 bool cancelable,
116 AbstractView* view,
117 int detail,
118 int screenX,
119 int screenY,
120 int windowX,
121 int windowY,
122 int movementX,
123 int movementY,
124 PlatformEvent::Modifiers modifiers,
125 short button,
126 unsigned short buttons,
127 EventTarget* relatedTarget,
128 TimeTicks platformTimeStamp,
129 PlatformMouseEvent::SyntheticEventType syntheticEventType,
130 const String& region,
131 const PlatformMouseEvent* mouseEvent) {
132 return new MouseEvent(
133 type, canBubble, cancelable, view, detail, screenX, screenY, windowX,
134 windowY, movementX, movementY, modifiers, button, buttons, relatedTarget,
135 platformTimeStamp, syntheticEventType, region, mouseEvent);
136 } 103 }
137 104
138 MouseEvent* MouseEvent::create(const AtomicString& eventType, 105 MouseEvent* MouseEvent::create(const AtomicString& eventType,
139 AbstractView* view, 106 AbstractView* view,
140 Event* underlyingEvent, 107 Event* underlyingEvent,
141 SimulatedClickCreationScope creationScope) { 108 SimulatedClickCreationScope creationScope) {
142 PlatformEvent::Modifiers modifiers = PlatformEvent::NoModifiers; 109 PlatformEvent::Modifiers modifiers = PlatformEvent::NoModifiers;
143 if (UIEventWithKeyState* keyStateEvent = 110 if (UIEventWithKeyState* keyStateEvent =
144 findEventWithKeyState(underlyingEvent)) { 111 findEventWithKeyState(underlyingEvent)) {
145 modifiers = keyStateEvent->modifiers(); 112 modifiers = keyStateEvent->modifiers();
146 } 113 }
147 114
148 PlatformMouseEvent::SyntheticEventType syntheticType = 115 SyntheticEventType syntheticType = Positionless;
149 PlatformMouseEvent::Positionless;
150 int screenX = 0; 116 int screenX = 0;
151 int screenY = 0; 117 int screenY = 0;
152 if (underlyingEvent && underlyingEvent->isMouseEvent()) { 118 if (underlyingEvent && underlyingEvent->isMouseEvent()) {
153 syntheticType = PlatformMouseEvent::RealOrIndistinguishable; 119 syntheticType = RealOrIndistinguishable;
154 MouseEvent* mouseEvent = toMouseEvent(underlyingEvent); 120 MouseEvent* mouseEvent = toMouseEvent(underlyingEvent);
155 screenX = mouseEvent->screenX(); 121 screenX = mouseEvent->screenX();
156 screenY = mouseEvent->screenY(); 122 screenY = mouseEvent->screenY();
157 } 123 }
158 124
159 TimeTicks timestamp = 125 TimeTicks timestamp =
160 underlyingEvent ? underlyingEvent->platformTimeStamp() : TimeTicks::Now(); 126 underlyingEvent ? underlyingEvent->platformTimeStamp() : TimeTicks::Now();
161 MouseEvent* createdEvent = MouseEvent::create( 127 MouseEvent* createdEvent = new MouseEvent(
162 eventType, true, true, view, 0, screenX, screenY, 0, 0, 0, 0, modifiers, 128 eventType, true, true, view, 0, screenX, screenY, 0, 0, 0, 0, modifiers,
163 0, 0, nullptr, timestamp, syntheticType, String(), nullptr); 129 0, 0, nullptr, timestamp, syntheticType, String());
164 130
165 createdEvent->setTrusted(creationScope == 131 createdEvent->setTrusted(creationScope ==
166 SimulatedClickCreationScope::FromUserAgent); 132 SimulatedClickCreationScope::FromUserAgent);
167 createdEvent->setUnderlyingEvent(underlyingEvent); 133 createdEvent->setUnderlyingEvent(underlyingEvent);
168 if (syntheticType == PlatformMouseEvent::RealOrIndistinguishable) { 134 if (syntheticType == RealOrIndistinguishable) {
169 MouseEvent* mouseEvent = toMouseEvent(createdEvent->underlyingEvent()); 135 MouseEvent* mouseEvent = toMouseEvent(createdEvent->underlyingEvent());
170 createdEvent->initCoordinates(mouseEvent->clientX(), mouseEvent->clientY()); 136 createdEvent->initCoordinates(mouseEvent->clientX(), mouseEvent->clientY());
171 } 137 }
172 138
173 return createdEvent; 139 return createdEvent;
174 } 140 }
175 141
176 MouseEvent::MouseEvent() 142 MouseEvent::MouseEvent()
177 : m_positionType(PositionType::Position), 143 : m_positionType(PositionType::Position),
178 m_hasCachedRelativePosition(false), 144 m_hasCachedRelativePosition(false),
179 m_button(0), 145 m_button(0),
180 m_buttons(0), 146 m_buttons(0),
181 m_relatedTarget(nullptr), 147 m_relatedTarget(nullptr),
182 m_syntheticEventType(PlatformMouseEvent::RealOrIndistinguishable) {} 148 m_syntheticEventType(RealOrIndistinguishable) {}
183 149
184 MouseEvent::MouseEvent( 150 MouseEvent::MouseEvent(const AtomicString& eventType,
185 const AtomicString& eventType, 151 bool canBubble,
186 bool canBubble, 152 bool cancelable,
187 bool cancelable, 153 AbstractView* abstractView,
188 AbstractView* abstractView, 154 const WebMouseEvent& event,
189 PlatformMouseEvent::SyntheticEventType syntheticEventType, 155 int detail,
190 const String& region, 156 const String& region,
191 const WebMouseEvent& event) 157 EventTarget* relatedTarget)
192 : UIEventWithKeyState( 158 : UIEventWithKeyState(
193 eventType, 159 eventType,
194 canBubble, 160 canBubble,
195 cancelable, 161 cancelable,
196 abstractView, 162 abstractView,
197 0, 163 detail,
198 static_cast<PlatformEvent::Modifiers>(event.modifiers()), 164 static_cast<PlatformEvent::Modifiers>(event.modifiers()),
199 TimeTicks::FromSeconds(event.timeStampSeconds()), 165 TimeTicks::FromSeconds(event.timeStampSeconds()),
200 syntheticEventType == PlatformMouseEvent::FromTouch 166 event.fromTouch()
201 ? InputDeviceCapabilities::firesTouchEventsSourceCapabilities() 167 ? InputDeviceCapabilities::firesTouchEventsSourceCapabilities()
202 : InputDeviceCapabilities:: 168 : InputDeviceCapabilities::
203 doesntFireTouchEventsSourceCapabilities()), 169 doesntFireTouchEventsSourceCapabilities()),
204 m_screenLocation(event.globalX, event.globalY), 170 m_screenLocation(event.globalX, event.globalY),
205 m_movementDelta(flooredIntPoint(event.movementInRootFrame())), 171 m_movementDelta(flooredIntPoint(event.movementInRootFrame())),
206 m_positionType(syntheticEventType == PlatformMouseEvent::Positionless 172 m_positionType(PositionType::Position),
207 ? PositionType::Positionless 173 m_button(static_cast<short>(event.button)),
208 : PositionType::Position),
209 m_button(0),
210 m_buttons(platformModifiersToButtons(event.modifiers())), 174 m_buttons(platformModifiersToButtons(event.modifiers())),
211 m_syntheticEventType(syntheticEventType), 175 m_relatedTarget(relatedTarget),
176 m_syntheticEventType(event.fromTouch() ? FromTouch
177 : RealOrIndistinguishable),
212 m_region(region) { 178 m_region(region) {
213 IntPoint rootFrameCoordinates = flooredIntPoint(event.positionInRootFrame()); 179 IntPoint rootFrameCoordinates = flooredIntPoint(event.positionInRootFrame());
214 initCoordinatesFromRootFrame(rootFrameCoordinates.x(), 180 initCoordinatesFromRootFrame(rootFrameCoordinates.x(),
215 rootFrameCoordinates.y()); 181 rootFrameCoordinates.y());
216 } 182 }
217 183
218 MouseEvent::MouseEvent( 184 MouseEvent::MouseEvent(const AtomicString& eventType,
219 const AtomicString& eventType, 185 bool canBubble,
220 bool canBubble, 186 bool cancelable,
221 bool cancelable, 187 AbstractView* abstractView,
222 AbstractView* abstractView, 188 int detail,
223 int detail, 189 int screenX,
224 int screenX, 190 int screenY,
225 int screenY, 191 int windowX,
226 int windowX, 192 int windowY,
227 int windowY, 193 int movementX,
228 int movementX, 194 int movementY,
229 int movementY, 195 PlatformEvent::Modifiers modifiers,
230 PlatformEvent::Modifiers modifiers, 196 short button,
231 short button, 197 unsigned short buttons,
232 unsigned short buttons, 198 EventTarget* relatedTarget,
233 EventTarget* relatedTarget, 199 TimeTicks platformTimeStamp,
234 TimeTicks platformTimeStamp, 200 SyntheticEventType syntheticEventType,
235 PlatformMouseEvent::SyntheticEventType syntheticEventType, 201 const String& region)
236 const String& region,
237 const PlatformMouseEvent* mouseEvent)
238 : UIEventWithKeyState( 202 : UIEventWithKeyState(
239 eventType, 203 eventType,
240 canBubble, 204 canBubble,
241 cancelable, 205 cancelable,
242 abstractView, 206 abstractView,
243 detail, 207 detail,
244 modifiers, 208 modifiers,
245 platformTimeStamp, 209 platformTimeStamp,
246 syntheticEventType == PlatformMouseEvent::FromTouch 210 syntheticEventType == FromTouch
247 ? InputDeviceCapabilities::firesTouchEventsSourceCapabilities() 211 ? InputDeviceCapabilities::firesTouchEventsSourceCapabilities()
248 : InputDeviceCapabilities:: 212 : InputDeviceCapabilities::
249 doesntFireTouchEventsSourceCapabilities()), 213 doesntFireTouchEventsSourceCapabilities()),
250 m_screenLocation(screenX, screenY), 214 m_screenLocation(screenX, screenY),
251 m_movementDelta(movementX, movementY), 215 m_movementDelta(movementX, movementY),
252 m_positionType(syntheticEventType == PlatformMouseEvent::Positionless 216 m_positionType(syntheticEventType == Positionless
253 ? PositionType::Positionless 217 ? PositionType::Positionless
254 : PositionType::Position), 218 : PositionType::Position),
255 m_button(button), 219 m_button(button),
256 m_buttons(buttons), 220 m_buttons(buttons),
257 m_relatedTarget(relatedTarget), 221 m_relatedTarget(relatedTarget),
258 m_syntheticEventType(syntheticEventType), 222 m_syntheticEventType(syntheticEventType),
259 m_region(region) { 223 m_region(region) {
260 if (mouseEvent)
261 m_mouseEvent.reset(new PlatformMouseEvent(*mouseEvent));
262 initCoordinatesFromRootFrame(windowX, windowY); 224 initCoordinatesFromRootFrame(windowX, windowY);
263 } 225 }
264 226
265 MouseEvent::MouseEvent(const AtomicString& eventType, 227 MouseEvent::MouseEvent(const AtomicString& eventType,
266 const MouseEventInit& initializer) 228 const MouseEventInit& initializer)
267 : UIEventWithKeyState(eventType, initializer), 229 : UIEventWithKeyState(eventType, initializer),
268 m_screenLocation( 230 m_screenLocation(
269 DoublePoint(initializer.screenX(), initializer.screenY())), 231 DoublePoint(initializer.screenX(), initializer.screenY())),
270 m_movementDelta( 232 m_movementDelta(
271 IntPoint(initializer.movementX(), initializer.movementY())), 233 IntPoint(initializer.movementX(), initializer.movementY())),
272 m_positionType(PositionType::Position), 234 m_positionType(PositionType::Position),
273 m_button(initializer.button()), 235 m_button(initializer.button()),
274 m_buttons(initializer.buttons()), 236 m_buttons(initializer.buttons()),
275 m_relatedTarget(initializer.relatedTarget()), 237 m_relatedTarget(initializer.relatedTarget()),
276 m_syntheticEventType(PlatformMouseEvent::RealOrIndistinguishable), 238 m_syntheticEventType(RealOrIndistinguishable),
277 m_region(initializer.region()) { 239 m_region(initializer.region()) {
278 initCoordinates(initializer.clientX(), initializer.clientY()); 240 initCoordinates(initializer.clientX(), initializer.clientY());
279 } 241 }
280 242
281 void MouseEvent::initCoordinates(const double clientX, const double clientY) { 243 void MouseEvent::initCoordinates(const double clientX, const double clientY) {
282 // Set up initial values for coordinates. 244 // Set up initial values for coordinates.
283 // Correct values are computed lazily, see computeRelativePosition. 245 // Correct values are computed lazily, see computeRelativePosition.
284 m_clientLocation = DoublePoint(clientX, clientY); 246 m_clientLocation = DoublePoint(clientX, clientY);
285 m_pageLocation = m_clientLocation + DoubleSize(contentsScrollOffset(view())); 247 m_pageLocation = m_clientLocation + DoubleSize(contentsScrollOffset(view()));
286 248
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after
599 561
600 int MouseEvent::offsetY() { 562 int MouseEvent::offsetY() {
601 if (!hasPosition()) 563 if (!hasPosition())
602 return 0; 564 return 0;
603 if (!m_hasCachedRelativePosition) 565 if (!m_hasCachedRelativePosition)
604 computeRelativePosition(); 566 computeRelativePosition();
605 return std::round(m_offsetLocation.y()); 567 return std::round(m_offsetLocation.y());
606 } 568 }
607 569
608 } // namespace blink 570 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/events/MouseEvent.h ('k') | third_party/WebKit/Source/core/events/PointerEventFactory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698