Chromium Code Reviews| Index: Source/core/events/EventTarget.cpp |
| diff --git a/Source/core/events/EventTarget.cpp b/Source/core/events/EventTarget.cpp |
| index 3f1b07283c7ce7667810b795c23d42d9ec96b560..fa2becc13517105c0a18a8b43e955d7d451b6cdc 100644 |
| --- a/Source/core/events/EventTarget.cpp |
| +++ b/Source/core/events/EventTarget.cpp |
| @@ -32,6 +32,8 @@ |
| #include "config.h" |
| #include "core/events/EventTarget.h" |
| +#include "EventTypeNames.h" |
| +#include "HTMLNames.h" |
| #include "RuntimeEnabledFeatures.h" |
| #include "bindings/v8/ExceptionState.h" |
| #include "core/dom/ExceptionCode.h" |
| @@ -39,6 +41,7 @@ |
| #include "core/events/Event.h" |
| #include "core/inspector/InspectorInstrumentation.h" |
| #include "core/frame/DOMWindow.h" |
| +#include "core/frame/UseCounter.h" |
| #include "wtf/StdLibExtras.h" |
| #include "wtf/Vector.h" |
| @@ -80,12 +83,45 @@ inline DOMWindow* EventTarget::executingWindow() |
| return 0; |
| } |
| +static void countByObjectType(const EventTarget* eventTarget, UseCounter::Feature featureOnInput, UseCounter::Feature featureOnTextArea, UseCounter::Feature featureOnContentEditable, UseCounter::Feature featureOnNonNode) |
| +{ |
| + UseCounter::Feature feature = featureOnNonNode; |
| + if (const Node* node = const_cast<EventTarget*>(eventTarget)->toNode()) { |
| + if (node->hasTagName(HTMLNames::inputTag)) |
| + feature = featureOnInput; |
| + else if (node->hasTagName(HTMLNames::textareaTag)) |
| + feature = featureOnTextArea; |
| + else |
| + feature = featureOnContentEditable; |
| + } |
| + if (ExecutionContext* context = eventTarget->executionContext()) |
| + UseCounter::count(context, feature); |
| +} |
| + |
| bool EventTarget::addEventListener(const AtomicString& eventType, PassRefPtr<EventListener> listener, bool useCapture) |
| { |
| // FIXME: listener null check should throw TypeError (and be done in |
| // generated bindings), but breaks legacy content. http://crbug.com/249598 |
| if (!listener) |
| return false; |
| + |
| + if (eventType == EventTypeNames::textInput) { |
|
tkent
2014/06/10 08:19:59
EventTarget is a generic interface, and I feel add
yosin_UTC9
2014/06/11 00:48:20
Done.
|
| + countByObjectType(this, UseCounter::TextInputEventOnInput, |
| + UseCounter::TextInputEventOnTextArea, |
| + UseCounter::TextInputEventOnContentEditable, |
| + UseCounter::TextInputEventOnNotNode); |
| + } else if (eventType == EventTypeNames::webkitBeforeTextInserted) { |
| + countByObjectType(this, UseCounter::WebkitBeforeTextInsertedOnInput, |
| + UseCounter::WebkitBeforeTextInsertedOnTextArea, |
| + UseCounter::WebkitBeforeTextInsertedOnContentEditable, |
| + UseCounter::WebkitBeforeTextInsertedOnNotNode); |
| + } else if (eventType == EventTypeNames::webkitEditableContentChanged) { |
| + countByObjectType(this, UseCounter::WebkitEditableContentChangedOnInput, |
| + UseCounter::WebkitEditableContentChangedOnTextArea, |
| + UseCounter::WebkitEditableContentChangedOnContentEditable, |
| + UseCounter::WebkitEditableContentChangedOnNotNode); |
| + } |
| + |
| return ensureEventTargetData().eventListenerMap.add(eventType, listener, useCapture); |
| } |