| 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 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 90 if (registeredListener->listener()->type() != EventListener::JSEventListener
Type) | 90 if (registeredListener->listener()->type() != EventListener::JSEventListener
Type) |
| 91 return; | 91 return; |
| 92 | 92 |
| 93 V8AbstractEventListener* v8Listener = V8AbstractEventListener::cast(register
edListener->listener()); | 93 V8AbstractEventListener* v8Listener = V8AbstractEventListener::cast(register
edListener->listener()); |
| 94 v8::HandleScope handles(v8Listener->isolate()); | 94 v8::HandleScope handles(v8Listener->isolate()); |
| 95 v8::Local<v8::Object> handler = v8Listener->getListenerObject(context); | 95 v8::Local<v8::Object> handler = v8Listener->getListenerObject(context); |
| 96 | 96 |
| 97 String messageText = String::format( | 97 String messageText = String::format( |
| 98 "Handling of '%s' input event was delayed for %ld ms due to main thread
being busy. " | 98 "Handling of '%s' input event was delayed for %ld ms due to main thread
being busy. " |
| 99 "Consider marking event handler as 'passive' to make the page more respo
nive.", | 99 "Consider marking event handler as 'passive' to make the page more respo
nive.", |
| 100 event->type().characters8(), lround(delayedSeconds * 1000)); | 100 event->type().getString().utf8().data(), lround(delayedSeconds * 1000)); |
| 101 ConsoleMessage* message = nullptr; | 101 ConsoleMessage* message = nullptr; |
| 102 | 102 |
| 103 v8::Local<v8::Function> function = eventListenerEffectiveFunction(v8Listener
->isolate(), handler); | 103 v8::Local<v8::Function> function = eventListenerEffectiveFunction(v8Listener
->isolate(), handler); |
| 104 if (!function.IsEmpty()) | 104 if (!function.IsEmpty()) |
| 105 message = ConsoleMessage::create(JSMessageSource, WarningMessageLevel, m
essageText, String(), function->GetScriptLineNumber() + 1, function->GetScriptCo
lumnNumber() + 1, nullptr, function->ScriptId()); | 105 message = ConsoleMessage::create(JSMessageSource, WarningMessageLevel, m
essageText, String(), function->GetScriptLineNumber() + 1, function->GetScriptCo
lumnNumber() + 1, nullptr, function->ScriptId()); |
| 106 else | 106 else |
| 107 message = ConsoleMessage::create(JSMessageSource, WarningMessageLevel, m
essageText, String(), 0, 0); | 107 message = ConsoleMessage::create(JSMessageSource, WarningMessageLevel, m
essageText, String(), 0, 0); |
| 108 context->addConsoleMessage(message); | 108 context->addConsoleMessage(message); |
| 109 registeredListener->setBlockedEventWarningEmitted(); | 109 registeredListener->setBlockedEventWarningEmitted(); |
| 110 } | 110 } |
| (...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 569 | 569 |
| 570 // If stopImmediatePropagation has been called, we just break out immedi
ately, without | 570 // If stopImmediatePropagation has been called, we just break out immedi
ately, without |
| 571 // handling any more events on this target. | 571 // handling any more events on this target. |
| 572 if (event->immediatePropagationStopped()) | 572 if (event->immediatePropagationStopped()) |
| 573 break; | 573 break; |
| 574 | 574 |
| 575 event->setHandlingPassive(registeredListener.passive()); | 575 event->setHandlingPassive(registeredListener.passive()); |
| 576 | 576 |
| 577 InspectorInstrumentation::NativeBreakpoint nativeBreakpoint(context, thi
s, event); | 577 InspectorInstrumentation::NativeBreakpoint nativeBreakpoint(context, thi
s, event); |
| 578 | 578 |
| 579 EventListener* listener = registeredListener.listener(); |
| 580 |
| 579 // To match Mozilla, the AT_TARGET phase fires both capturing and bubbli
ng | 581 // To match Mozilla, the AT_TARGET phase fires both capturing and bubbli
ng |
| 580 // event listeners, even though that violates some versions of the DOM s
pec. | 582 // event listeners, even though that violates some versions of the DOM s
pec. |
| 581 registeredListener.listener()->handleEvent(context, event); | 583 listener->handleEvent(context, event); |
| 582 firedListener = true; | 584 firedListener = true; |
| 583 | 585 |
| 584 if (shouldReportBlockedEvent && !registeredListener.passive() && !regist
eredListener.blockedEventWarningEmitted() && !event->defaultPrevented()) | 586 // If we're about to report this event listener as blocking, make sure i
t wasn't |
| 585 reportBlockedEvent(context, event, ®isteredListener, now - event-
>platformTimeStamp()); | 587 // removed while handling the event. |
| 588 if (shouldReportBlockedEvent && i > 0 && entry[i - 1].listener() == list
ener |
| 589 && !entry[i - 1].passive() && !entry[i - 1].blockedEventWarningEmitt
ed() && !event->defaultPrevented()) { |
| 590 reportBlockedEvent(context, event, &entry[i - 1], now - event->platf
ormTimeStamp()); |
| 591 } |
| 586 | 592 |
| 587 event->setHandlingPassive(false); | 593 event->setHandlingPassive(false); |
| 588 | 594 |
| 589 RELEASE_ASSERT(i <= size); | 595 RELEASE_ASSERT(i <= size); |
| 590 } | 596 } |
| 591 d->firingEventIterators->removeLast(); | 597 d->firingEventIterators->removeLast(); |
| 592 return firedListener; | 598 return firedListener; |
| 593 } | 599 } |
| 594 | 600 |
| 595 DispatchEventResult EventTarget::dispatchEventResult(const Event& event) | 601 DispatchEventResult EventTarget::dispatchEventResult(const Event& event) |
| (...skipping 30 matching lines...) Expand all Loading... |
| 626 // they have one less listener to invoke. | 632 // they have one less listener to invoke. |
| 627 if (d->firingEventIterators) { | 633 if (d->firingEventIterators) { |
| 628 for (size_t i = 0; i < d->firingEventIterators->size(); ++i) { | 634 for (size_t i = 0; i < d->firingEventIterators->size(); ++i) { |
| 629 d->firingEventIterators->at(i).iterator = 0; | 635 d->firingEventIterators->at(i).iterator = 0; |
| 630 d->firingEventIterators->at(i).end = 0; | 636 d->firingEventIterators->at(i).end = 0; |
| 631 } | 637 } |
| 632 } | 638 } |
| 633 } | 639 } |
| 634 | 640 |
| 635 } // namespace blink | 641 } // namespace blink |
| OLD | NEW |