| OLD | NEW |
| 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 578 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 589 } | 589 } |
| 590 return false; | 590 return false; |
| 591 } | 591 } |
| 592 | 592 |
| 593 bool EventTarget::fireEventListeners(Event* event, | 593 bool EventTarget::fireEventListeners(Event* event, |
| 594 EventTargetData* d, | 594 EventTargetData* d, |
| 595 EventListenerVector& entry) { | 595 EventListenerVector& entry) { |
| 596 // Fire all listeners registered for this event. Don't fire listeners removed | 596 // Fire all listeners registered for this event. Don't fire listeners removed |
| 597 // during event dispatch. Also, don't fire event listeners added during event | 597 // during event dispatch. Also, don't fire event listeners added during event |
| 598 // dispatch. Conveniently, all new event listeners will be added after or at | 598 // dispatch. Conveniently, all new event listeners will be added after or at |
| 599 // index |size|, so iterating up to (but not including) |size| naturally exclu
des | 599 // index |size|, so iterating up to (but not including) |size| naturally |
| 600 // new event listeners. | 600 // excludes new event listeners. |
| 601 | 601 |
| 602 if (checkTypeThenUseCount(event, EventTypeNames::beforeunload, | 602 if (checkTypeThenUseCount(event, EventTypeNames::beforeunload, |
| 603 UseCounter::DocumentBeforeUnloadFired)) { | 603 UseCounter::DocumentBeforeUnloadFired)) { |
| 604 if (LocalDOMWindow* executingWindow = this->executingWindow()) { | 604 if (LocalDOMWindow* executingWindow = this->executingWindow()) { |
| 605 if (executingWindow != executingWindow->top()) | 605 if (executingWindow != executingWindow->top()) |
| 606 UseCounter::count(executingWindow->document(), | 606 UseCounter::count(executingWindow->document(), |
| 607 UseCounter::SubFrameBeforeUnloadFired); | 607 UseCounter::SubFrameBeforeUnloadFired); |
| 608 } | 608 } |
| 609 } else if (checkTypeThenUseCount(event, EventTypeNames::unload, | 609 } else if (checkTypeThenUseCount(event, EventTypeNames::unload, |
| 610 UseCounter::DocumentUnloadFired)) { | 610 UseCounter::DocumentUnloadFired)) { |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 669 ++i; | 669 ++i; |
| 670 | 670 |
| 671 if (event->eventPhase() == Event::kCapturingPhase && | 671 if (event->eventPhase() == Event::kCapturingPhase && |
| 672 !registeredListener.capture()) | 672 !registeredListener.capture()) |
| 673 continue; | 673 continue; |
| 674 if (event->eventPhase() == Event::kBubblingPhase && | 674 if (event->eventPhase() == Event::kBubblingPhase && |
| 675 registeredListener.capture()) | 675 registeredListener.capture()) |
| 676 continue; | 676 continue; |
| 677 | 677 |
| 678 EventListener* listener = registeredListener.listener(); | 678 EventListener* listener = registeredListener.listener(); |
| 679 // The listener will be retained by Member<EventListener> in the registeredL
istener, | 679 // The listener will be retained by Member<EventListener> in the |
| 680 // i and size are updated with the firing event iterator | 680 // registeredListener, i and size are updated with the firing event iterator |
| 681 // in case the listener is removed from the listener vector below. | 681 // in case the listener is removed from the listener vector below. |
| 682 if (registeredListener.once()) | 682 if (registeredListener.once()) |
| 683 removeEventListener(event->type(), listener, | 683 removeEventListener(event->type(), listener, |
| 684 registeredListener.capture()); | 684 registeredListener.capture()); |
| 685 | 685 |
| 686 // If stopImmediatePropagation has been called, we just break out immediatel
y, without | 686 // If stopImmediatePropagation has been called, we just break out |
| 687 // handling any more events on this target. | 687 // immediately, without handling any more events on this target. |
| 688 if (event->immediatePropagationStopped()) | 688 if (event->immediatePropagationStopped()) |
| 689 break; | 689 break; |
| 690 | 690 |
| 691 event->setHandlingPassive(eventPassiveMode(registeredListener)); | 691 event->setHandlingPassive(eventPassiveMode(registeredListener)); |
| 692 bool passiveForced = registeredListener.passiveForcedForDocumentTarget(); | 692 bool passiveForced = registeredListener.passiveForcedForDocumentTarget(); |
| 693 | 693 |
| 694 InspectorInstrumentation::NativeBreakpoint nativeBreakpoint(context, this, | 694 InspectorInstrumentation::NativeBreakpoint nativeBreakpoint(context, this, |
| 695 event); | 695 event); |
| 696 | 696 |
| 697 // To match Mozilla, the AT_TARGET phase fires both capturing and bubbling | 697 // To match Mozilla, the AT_TARGET phase fires both capturing and bubbling |
| 698 // event listeners, even though that violates some versions of the DOM spec. | 698 // event listeners, even though that violates some versions of the DOM spec. |
| 699 listener->handleEvent(context, event); | 699 listener->handleEvent(context, event); |
| 700 firedListener = true; | 700 firedListener = true; |
| 701 | 701 |
| 702 // If we're about to report this event listener as blocking, make sure it wa
sn't | 702 // If we're about to report this event listener as blocking, make sure it |
| 703 // removed while handling the event. | 703 // wasn't removed while handling the event. |
| 704 if (shouldReportBlockedEvent && i > 0 && | 704 if (shouldReportBlockedEvent && i > 0 && |
| 705 entry[i - 1].listener() == listener && !entry[i - 1].passive() && | 705 entry[i - 1].listener() == listener && !entry[i - 1].passive() && |
| 706 !entry[i - 1].blockedEventWarningEmitted() && | 706 !entry[i - 1].blockedEventWarningEmitted() && |
| 707 !event->defaultPrevented()) { | 707 !event->defaultPrevented()) { |
| 708 reportBlockedEvent(context, event, &entry[i - 1], | 708 reportBlockedEvent(context, event, &entry[i - 1], |
| 709 now - event->platformTimeStamp()); | 709 now - event->platformTimeStamp()); |
| 710 } | 710 } |
| 711 | 711 |
| 712 if (passiveForced) { | 712 if (passiveForced) { |
| 713 DEFINE_STATIC_LOCAL(EnumerationHistogram, passiveForcedHistogram, | 713 DEFINE_STATIC_LOCAL(EnumerationHistogram, passiveForcedHistogram, |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 759 // they have one less listener to invoke. | 759 // they have one less listener to invoke. |
| 760 if (d->firingEventIterators) { | 760 if (d->firingEventIterators) { |
| 761 for (size_t i = 0; i < d->firingEventIterators->size(); ++i) { | 761 for (size_t i = 0; i < d->firingEventIterators->size(); ++i) { |
| 762 d->firingEventIterators->at(i).iterator = 0; | 762 d->firingEventIterators->at(i).iterator = 0; |
| 763 d->firingEventIterators->at(i).end = 0; | 763 d->firingEventIterators->at(i).end = 0; |
| 764 } | 764 } |
| 765 } | 765 } |
| 766 } | 766 } |
| 767 | 767 |
| 768 } // namespace blink | 768 } // namespace blink |
| OLD | NEW |