Index: third_party/WebKit/Source/bindings/core/v8/custom/V8EventTargetCustom.cpp |
diff --git a/third_party/WebKit/Source/bindings/core/v8/custom/V8EventTargetCustom.cpp b/third_party/WebKit/Source/bindings/core/v8/custom/V8EventTargetCustom.cpp |
index 5852d683bb8b00753f17cc6b1823dba7353127ca..f86d14dcfdf8d4606d48a2802c3eb1bf3b920ce7 100644 |
--- a/third_party/WebKit/Source/bindings/core/v8/custom/V8EventTargetCustom.cpp |
+++ b/third_party/WebKit/Source/bindings/core/v8/custom/V8EventTargetCustom.cpp |
@@ -41,10 +41,6 @@ namespace { |
void addEventListenerMethodPrologueCustom(const v8::FunctionCallbackInfo<v8::Value>& info, EventTarget*) |
{ |
- if (info.Length() < 2) { |
- UseCounter::countIfNotPrivateScript(info.GetIsolate(), callingExecutionContext(info.GetIsolate()), |
- info.Length() == 0 ? UseCounter::AddEventListenerNoArguments : UseCounter::AddEventListenerOneArgument); |
- } |
if (info.Length() >= 3 && info[2]->IsObject()) { |
UseCounter::countIfNotPrivateScript(info.GetIsolate(), callingExecutionContext(info.GetIsolate()), |
UseCounter::AddEventListenerThirdArgumentIsObject); |
@@ -59,10 +55,6 @@ void addEventListenerMethodEpilogueCustom(const v8::FunctionCallbackInfo<v8::Val |
void removeEventListenerMethodPrologueCustom(const v8::FunctionCallbackInfo<v8::Value>& info, EventTarget*) |
{ |
- if (info.Length() < 2) { |
- UseCounter::countIfNotPrivateScript(info.GetIsolate(), callingExecutionContext(info.GetIsolate()), |
- info.Length() == 0 ? UseCounter::RemoveEventListenerNoArguments : UseCounter::RemoveEventListenerOneArgument); |
- } |
if (info.Length() >= 3 && info[2]->IsObject()) { |
UseCounter::countIfNotPrivateScript(info.GetIsolate(), callingExecutionContext(info.GetIsolate()), |
UseCounter::RemoveEventListenerThirdArgumentIsObject); |
@@ -80,6 +72,11 @@ void removeEventListenerMethodEpilogueCustom(const v8::FunctionCallbackInfo<v8:: |
void V8EventTarget::addEventListenerMethodCustom(const v8::FunctionCallbackInfo<v8::Value>& info) |
{ |
ExceptionState exceptionState(ExceptionState::ExecutionContext, "addEventListener", "EventTarget", info.Holder(), info.GetIsolate()); |
+ if (UNLIKELY(info.Length() < 2)) { |
+ setMinimumArityTypeError(exceptionState, 2, info.Length()); |
+ exceptionState.throwIfNeeded(); |
+ return; |
+ } |
EventTarget* impl = V8EventTarget::toImpl(info.Holder()); |
if (LocalDOMWindow* window = impl->toDOMWindow()) { |
if (!BindingSecurity::shouldAllowAccessToFrame(info.GetIsolate(), callingDOMWindow(info.GetIsolate()), window->frame(), exceptionState)) { |
@@ -89,22 +86,14 @@ void V8EventTarget::addEventListenerMethodCustom(const v8::FunctionCallbackInfo< |
if (!window->document()) |
return; |
} |
- V8StringResource<TreatNullAsNullString> type; |
+ V8StringResource<> type; |
RefPtrWillBeRawPtr<EventListener> listener; |
EventListenerOptionsOrBoolean options; |
{ |
- if (!info[0]->IsUndefined()) { |
- type = info[0]; |
- if (!type.prepare()) |
- return; |
- } else { |
- type = nullptr; |
- } |
- if (!info[1]->IsUndefined()) { |
- listener = V8EventListenerList::getEventListener(ScriptState::current(info.GetIsolate()), info[1], false, ListenerFindOrCreate); |
- } else { |
- listener = nullptr; |
- } |
+ type = info[0]; |
+ if (!type.prepare()) |
+ return; |
+ listener = V8EventListenerList::getEventListener(ScriptState::current(info.GetIsolate()), info[1], false, ListenerFindOrCreate); |
// TODO(dtapuska): This custom binding code can be eliminated once |
// EventListenerOptions runtime enabled feature is removed. |
// http://crbug.com/545163 |
@@ -126,6 +115,11 @@ void V8EventTarget::addEventListenerMethodCustom(const v8::FunctionCallbackInfo< |
void V8EventTarget::removeEventListenerMethodCustom(const v8::FunctionCallbackInfo<v8::Value>& info) |
{ |
ExceptionState exceptionState(ExceptionState::ExecutionContext, "removeEventListener", "EventTarget", info.Holder(), info.GetIsolate()); |
+ if (UNLIKELY(info.Length() < 2)) { |
+ setMinimumArityTypeError(exceptionState, 2, info.Length()); |
+ exceptionState.throwIfNeeded(); |
+ return; |
+ } |
EventTarget* impl = V8EventTarget::toImpl(info.Holder()); |
if (LocalDOMWindow* window = impl->toDOMWindow()) { |
if (!BindingSecurity::shouldAllowAccessToFrame(info.GetIsolate(), callingDOMWindow(info.GetIsolate()), window->frame(), exceptionState)) { |
@@ -135,22 +129,14 @@ void V8EventTarget::removeEventListenerMethodCustom(const v8::FunctionCallbackIn |
if (!window->document()) |
return; |
} |
- V8StringResource<TreatNullAsNullString> type; |
+ V8StringResource<> type; |
RefPtrWillBeRawPtr<EventListener> listener; |
EventListenerOptionsOrBoolean options; |
{ |
- if (!info[0]->IsUndefined()) { |
- type = info[0]; |
- if (!type.prepare()) |
- return; |
- } else { |
- type = nullptr; |
- } |
- if (!info[1]->IsUndefined()) { |
- listener = V8EventListenerList::getEventListener(ScriptState::current(info.GetIsolate()), info[1], false, ListenerFindOnly); |
- } else { |
- listener = nullptr; |
- } |
+ type = info[0]; |
+ if (!type.prepare()) |
+ return; |
+ listener = V8EventListenerList::getEventListener(ScriptState::current(info.GetIsolate()), info[1], false, ListenerFindOnly); |
// TODO(dtapuska): This custom binding code can be eliminated once |
// EventListenerOptions runtime enabled feature is removed. |
// http://crbug.com/545163 |