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

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

Issue 1800143002: Notify Blink about start of gesture scroll through a queued event. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/events/PointerEventFactory.h" 5 #include "core/events/PointerEventFactory.h"
6 6
7 namespace blink { 7 namespace blink {
8 8
9 namespace { 9 namespace {
10 10
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 touchPoint.force(), pointerEventInit.buttons())); 159 touchPoint.force(), pointerEventInit.buttons()));
160 160
161 UIEventWithKeyState::setFromPlatformModifiers(pointerEventInit, modifiers); 161 UIEventWithKeyState::setFromPlatformModifiers(pointerEventInit, modifiers);
162 162
163 pointerEventInit.setBubbles(!isEnterOrLeave); 163 pointerEventInit.setBubbles(!isEnterOrLeave);
164 pointerEventInit.setCancelable(!isEnterOrLeave && pointState != PlatformTouc hPoint::TouchCancelled); 164 pointerEventInit.setCancelable(!isEnterOrLeave && pointState != PlatformTouc hPoint::TouchCancelled);
165 165
166 return PointerEvent::create(type, pointerEventInit); 166 return PointerEvent::create(type, pointerEventInit);
167 } 167 }
168 168
169 169 PassRefPtrWillBeRawPtr<PointerEvent> PointerEventFactory::createPointerCancel(co nst int pointerId, const WebPointerProperties::PointerType pointerType)
170 PassRefPtrWillBeRawPtr<PointerEvent> PointerEventFactory::createPointerCancel(co nst PlatformTouchPoint& touchPoint)
171 { 170 {
172 PointerEventInit pointerEventInit; 171 PointerEventInit pointerEventInit;
173 172
174 setIdTypeButtons(pointerEventInit, touchPoint.pointerProperties(), 0); 173 pointerEventInit.setPointerId(pointerId);
175 174 pointerEventInit.setPointerType(pointerTypeNameForWebPointPointerType(pointe rType));
175 pointerEventInit.setIsPrimary(isPrimary(pointerId));
176 pointerEventInit.setBubbles(true); 176 pointerEventInit.setBubbles(true);
177 pointerEventInit.setCancelable(false); 177 pointerEventInit.setCancelable(false);
178 178
179 return PointerEvent::create(EventTypeNames::pointercancel, pointerEventInit) ; 179 return PointerEvent::create(EventTypeNames::pointercancel, pointerEventInit) ;
180 } 180 }
181 181
182 PassRefPtrWillBeRawPtr<PointerEvent> PointerEventFactory::create( 182 PassRefPtrWillBeRawPtr<PointerEvent> PointerEventFactory::create(
183 PassRefPtrWillBeRawPtr<PointerEvent> pointerEvent, 183 PassRefPtrWillBeRawPtr<PointerEvent> pointerEvent,
184 const AtomicString& type, 184 const AtomicString& type,
185 PassRefPtrWillBeRawPtr<EventTarget> relatedTarget) 185 PassRefPtrWillBeRawPtr<EventTarget> relatedTarget)
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 // We do not handle the overflow of m_currentId as it should be very rare 260 // We do not handle the overflow of m_currentId as it should be very rare
261 int mappedId = m_currentId++; 261 int mappedId = m_currentId++;
262 if (!m_idCount[type]) 262 if (!m_idCount[type])
263 m_primaryId[type] = mappedId; 263 m_primaryId[type] = mappedId;
264 m_idCount[type]++; 264 m_idCount[type]++;
265 m_pointerIncomingIdMapping.add(p, mappedId); 265 m_pointerIncomingIdMapping.add(p, mappedId);
266 m_pointerIdMapping.add(mappedId, PointerAttributes(p, isActiveButtons)); 266 m_pointerIdMapping.add(mappedId, PointerAttributes(p, isActiveButtons));
267 return mappedId; 267 return mappedId;
268 } 268 }
269 269
270 bool PointerEventFactory::remove( 270 bool PointerEventFactory::remove(const int mappedId)
271 const PassRefPtrWillBeRawPtr<PointerEvent> pointerEvent)
272 { 271 {
273 int mappedId = pointerEvent->pointerId();
274 // Do not remove mouse pointer id as it should always be there 272 // Do not remove mouse pointer id as it should always be there
275 if (mappedId == s_mouseId || !m_pointerIdMapping.contains(mappedId)) 273 if (mappedId == s_mouseId || !m_pointerIdMapping.contains(mappedId))
276 return false; 274 return false;
277 275
278 IncomingId p = m_pointerIdMapping.get(mappedId).incomingId; 276 IncomingId p = m_pointerIdMapping.get(mappedId).incomingId;
279 int type = p.pointerType(); 277 int type = p.pointerType();
280 m_pointerIdMapping.remove(mappedId); 278 m_pointerIdMapping.remove(mappedId);
281 m_pointerIncomingIdMapping.remove(p); 279 m_pointerIncomingIdMapping.remove(p);
282 if (m_primaryId[type] == mappedId) 280 if (m_primaryId[type] == mappedId)
283 m_primaryId[type] = PointerEventFactory::s_invalidId; 281 m_primaryId[type] = PointerEventFactory::s_invalidId;
284 m_idCount[type]--; 282 m_idCount[type]--;
285 return true; 283 return true;
286 } 284 }
287 285
286 WillBeHeapVector<int> PointerEventFactory::getPointerIdsOfType(WebPointerPropert ies::PointerType pointerType)
287 {
288 WillBeHeapVector<int> mappedIds;
289
290 for (auto iter = m_pointerIdMapping.begin(); iter != m_pointerIdMapping.end( ); ++iter) {
291 int mappedId = iter->key;
292 if (iter->value.incomingId.pointerType() == static_cast<int>(pointerType ))
293 mappedIds.append(mappedId);
294 }
295
296 return mappedIds;
297 }
298
288 bool PointerEventFactory::isPrimary(int mappedId) const 299 bool PointerEventFactory::isPrimary(int mappedId) const
289 { 300 {
290 if (!m_pointerIdMapping.contains(mappedId)) 301 if (!m_pointerIdMapping.contains(mappedId))
291 return false; 302 return false;
292 303
293 IncomingId p = m_pointerIdMapping.get(mappedId).incomingId; 304 IncomingId p = m_pointerIdMapping.get(mappedId).incomingId;
294 return m_primaryId[p.pointerType()] == mappedId; 305 return m_primaryId[p.pointerType()] == mappedId;
295 } 306 }
296 307
297 bool PointerEventFactory::isActive(const int pointerId) 308 bool PointerEventFactory::isActive(const int pointerId)
298 { 309 {
299 return m_pointerIdMapping.contains(pointerId); 310 return m_pointerIdMapping.contains(pointerId);
300 } 311 }
301 312
302 bool PointerEventFactory::isActiveButtonsState(const int pointerId) 313 bool PointerEventFactory::isActiveButtonsState(const int pointerId)
303 { 314 {
304 return m_pointerIdMapping.contains(pointerId) 315 return m_pointerIdMapping.contains(pointerId)
305 && m_pointerIdMapping.get(pointerId).isActiveButtons; 316 && m_pointerIdMapping.get(pointerId).isActiveButtons;
306 } 317 }
307 318
308 } // namespace blink 319 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698