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

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

Issue 1479923002: Enumerate the return value of dispatchEvent so it is clear. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master_passive_uma_add
Patch Set: Fix typo 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 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2001 Dirk Mueller (mueller@kde.org) 4 * (C) 2001 Dirk Mueller (mueller@kde.org)
5 * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. 5 * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved.
6 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) 6 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org)
7 * (C) 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org> 7 * (C) 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org>
8 * 8 *
9 * Redistribution and use in source and binary forms, with or without 9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions 10 * modification, are permitted provided that the following conditions
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 } 257 }
258 if (event->isBeingDispatched()) { 258 if (event->isBeingDispatched()) {
259 exceptionState.throwDOMException(InvalidStateError, "The event is alread y being dispatched."); 259 exceptionState.throwDOMException(InvalidStateError, "The event is alread y being dispatched.");
260 return false; 260 return false;
261 } 261 }
262 262
263 if (!executionContext()) 263 if (!executionContext())
264 return false; 264 return false;
265 265
266 event->setTrusted(false); 266 event->setTrusted(false);
267 return dispatchEventInternal(event); 267
268 // Return whether the event was cancelled or not to JS not that it
269 // might have actually been default handled; so check only against
270 // CanceledByEventHandler.
271 return dispatchEventInternal(event) != DispatchEventResult::CanceledByEventH andler;
268 } 272 }
269 273
270 bool EventTarget::dispatchEvent(PassRefPtrWillBeRawPtr<Event> event) 274 DispatchEventResult EventTarget::dispatchEvent(PassRefPtrWillBeRawPtr<Event> eve nt)
271 { 275 {
272 event->setTrusted(true); 276 event->setTrusted(true);
273 return dispatchEventInternal(event); 277 return dispatchEventInternal(event);
274 } 278 }
275 279
276 bool EventTarget::dispatchEventInternal(PassRefPtrWillBeRawPtr<Event> event) 280 DispatchEventResult EventTarget::dispatchEventInternal(PassRefPtrWillBeRawPtr<Ev ent> event)
277 { 281 {
278 event->setTarget(this); 282 event->setTarget(this);
279 event->setCurrentTarget(this); 283 event->setCurrentTarget(this);
280 event->setEventPhase(Event::AT_TARGET); 284 event->setEventPhase(Event::AT_TARGET);
281 bool defaultWasNotPrevented = fireEventListeners(event.get()); 285 DispatchEventResult dispatchResult = fireEventListeners(event.get());
282 event->setEventPhase(0); 286 event->setEventPhase(0);
283 return defaultWasNotPrevented; 287 return dispatchResult;
284 } 288 }
285 289
286 void EventTarget::uncaughtExceptionInEventHandler() 290 void EventTarget::uncaughtExceptionInEventHandler()
287 { 291 {
288 } 292 }
289 293
290 static const AtomicString& legacyType(const Event* event) 294 static const AtomicString& legacyType(const Event* event)
291 { 295 {
292 if (event->type() == EventTypeNames::transitionend) 296 if (event->type() == EventTypeNames::transitionend)
293 return EventTypeNames::webkitTransitionEnd; 297 return EventTypeNames::webkitTransitionEnd;
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 if (listenersVector) 345 if (listenersVector)
342 UseCounter::count(executingWindow->document(), prefixedAndUnpref ixedFeature); 346 UseCounter::count(executingWindow->document(), prefixedAndUnpref ixedFeature);
343 else 347 else
344 UseCounter::count(executingWindow->document(), prefixedFeature); 348 UseCounter::count(executingWindow->document(), prefixedFeature);
345 } else if (listenersVector) { 349 } else if (listenersVector) {
346 UseCounter::count(executingWindow->document(), unprefixedFeature); 350 UseCounter::count(executingWindow->document(), unprefixedFeature);
347 } 351 }
348 } 352 }
349 } 353 }
350 354
351 bool EventTarget::fireEventListeners(Event* event) 355 DispatchEventResult EventTarget::fireEventListeners(Event* event)
352 { 356 {
353 ASSERT(!EventDispatchForbiddenScope::isEventDispatchForbidden()); 357 ASSERT(!EventDispatchForbiddenScope::isEventDispatchForbidden());
354 ASSERT(event && !event->type().isEmpty()); 358 ASSERT(event && !event->type().isEmpty());
355 359
356 EventTargetData* d = eventTargetData(); 360 EventTargetData* d = eventTargetData();
357 if (!d) 361 if (!d)
358 return true; 362 return DispatchEventResult::NotCanceled;
359 363
360 EventListenerVector* legacyListenersVector = nullptr; 364 EventListenerVector* legacyListenersVector = nullptr;
361 AtomicString legacyTypeName = legacyType(event); 365 AtomicString legacyTypeName = legacyType(event);
362 if (!legacyTypeName.isEmpty()) 366 if (!legacyTypeName.isEmpty())
363 legacyListenersVector = d->eventListenerMap.find(legacyTypeName); 367 legacyListenersVector = d->eventListenerMap.find(legacyTypeName);
364 368
365 EventListenerVector* listenersVector = d->eventListenerMap.find(event->type( )); 369 EventListenerVector* listenersVector = d->eventListenerMap.find(event->type( ));
366 370
367 if (listenersVector) { 371 if (listenersVector) {
368 fireEventListeners(event, d, *listenersVector); 372 fireEventListeners(event, d, *listenersVector);
369 } else if (legacyListenersVector) { 373 } else if (legacyListenersVector) {
370 AtomicString unprefixedTypeName = event->type(); 374 AtomicString unprefixedTypeName = event->type();
371 event->setType(legacyTypeName); 375 event->setType(legacyTypeName);
372 fireEventListeners(event, d, *legacyListenersVector); 376 fireEventListeners(event, d, *legacyListenersVector);
373 event->setType(unprefixedTypeName); 377 event->setType(unprefixedTypeName);
374 } 378 }
375 379
376 Editor::countEvent(executionContext(), event); 380 Editor::countEvent(executionContext(), event);
377 countLegacyEvents(legacyTypeName, listenersVector, legacyListenersVector); 381 countLegacyEvents(legacyTypeName, listenersVector, legacyListenersVector);
378 return !event->defaultPrevented(); 382 return dispatchEventResult(*event);
379 } 383 }
380 384
381 void EventTarget::fireEventListeners(Event* event, EventTargetData* d, EventList enerVector& entry) 385 void EventTarget::fireEventListeners(Event* event, EventTargetData* d, EventList enerVector& entry)
382 { 386 {
383 RefPtrWillBeRawPtr<EventTarget> protect(this); 387 RefPtrWillBeRawPtr<EventTarget> protect(this);
384 388
385 // Fire all listeners registered for this event. Don't fire listeners remove d 389 // Fire all listeners registered for this event. Don't fire listeners remove d
386 // during event dispatch. Also, don't fire event listeners added during even t 390 // during event dispatch. Also, don't fire event listeners added during even t
387 // dispatch. Conveniently, all new event listeners will be added after or at 391 // dispatch. Conveniently, all new event listeners will be added after or at
388 // index |size|, so iterating up to (but not including) |size| naturally exc ludes 392 // index |size|, so iterating up to (but not including) |size| naturally exc ludes
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
444 registeredListener.listener->handleEvent(context, event); 448 registeredListener.listener->handleEvent(context, event);
445 event->setHandlingPassive(false); 449 event->setHandlingPassive(false);
446 450
447 RELEASE_ASSERT(i <= size); 451 RELEASE_ASSERT(i <= size);
448 452
449 InspectorInstrumentation::didHandleEvent(cookie); 453 InspectorInstrumentation::didHandleEvent(cookie);
450 } 454 }
451 d->firingEventIterators->removeLast(); 455 d->firingEventIterators->removeLast();
452 } 456 }
453 457
458 DispatchEventResult EventTarget::dispatchEventResult(const Event& event)
459 {
460 if (event.defaultPrevented())
461 return DispatchEventResult::CanceledByEventHandler;
462 if (event.defaultHandled())
463 return DispatchEventResult::CanceledByDefaultEventHandler;
464 return DispatchEventResult::NotCanceled;
465 }
466
454 EventListenerVector* EventTarget::getEventListeners(const AtomicString& eventTyp e) 467 EventListenerVector* EventTarget::getEventListeners(const AtomicString& eventTyp e)
455 { 468 {
456 EventTargetData* data = eventTargetData(); 469 EventTargetData* data = eventTargetData();
457 if (!data) 470 if (!data)
458 return nullptr; 471 return nullptr;
459 return data->eventListenerMap.find(eventType); 472 return data->eventListenerMap.find(eventType);
460 } 473 }
461 474
462 Vector<AtomicString> EventTarget::eventTypes() 475 Vector<AtomicString> EventTarget::eventTypes()
463 { 476 {
(...skipping 12 matching lines...) Expand all
476 // they have one less listener to invoke. 489 // they have one less listener to invoke.
477 if (d->firingEventIterators) { 490 if (d->firingEventIterators) {
478 for (size_t i = 0; i < d->firingEventIterators->size(); ++i) { 491 for (size_t i = 0; i < d->firingEventIterators->size(); ++i) {
479 d->firingEventIterators->at(i).iterator = 0; 492 d->firingEventIterators->at(i).iterator = 0;
480 d->firingEventIterators->at(i).end = 0; 493 d->firingEventIterators->at(i).end = 0;
481 } 494 }
482 } 495 }
483 } 496 }
484 497
485 } // namespace blink 498 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/events/EventTarget.h ('k') | third_party/WebKit/Source/core/events/FocusEvent.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698