Index: third_party/WebKit/Source/bindings/core/v8/ScriptCustomElementDefinitionBuilder.cpp |
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptCustomElementDefinitionBuilder.cpp b/third_party/WebKit/Source/bindings/core/v8/ScriptCustomElementDefinitionBuilder.cpp |
index 158a6dfe6008f250db694e66517f97cd2e86a60c..616d518cfbd18ee83d4dfc2d7814e168efd3d805 100644 |
--- a/third_party/WebKit/Source/bindings/core/v8/ScriptCustomElementDefinitionBuilder.cpp |
+++ b/third_party/WebKit/Source/bindings/core/v8/ScriptCustomElementDefinitionBuilder.cpp |
@@ -113,7 +113,7 @@ bool ScriptCustomElementDefinitionBuilder::checkPrototype() |
} |
bool ScriptCustomElementDefinitionBuilder::callableForName(const String& name, |
- v8::Local<v8::Object>& callback) const |
+ v8::Local<v8::Function>& callback) const |
{ |
v8::Local<v8::Value> value; |
if (!valueForName(m_prototype, name, value)) |
@@ -121,17 +121,12 @@ bool ScriptCustomElementDefinitionBuilder::callableForName(const String& name, |
// "undefined" means "omitted", so return true. |
if (value->IsUndefined()) |
return true; |
- if (!value->IsObject()) { |
+ if (!value->IsFunction()) { |
m_exceptionState.throwTypeError( |
- String::format("\"%s\" is not an object", name.ascii().data())); |
- return false; |
- } |
- callback = value.As<v8::Object>(); |
- if (!callback->IsCallable()) { |
- m_exceptionState.throwTypeError( |
- String::format("\"%s\" is not callable", name.ascii().data())); |
+ String::format("\"%s\" is not a callable object", name.ascii().data())); |
return false; |
} |
+ callback = value.As<v8::Function>(); |
return true; |
} |
@@ -162,10 +157,10 @@ bool ScriptCustomElementDefinitionBuilder::rememberOriginalProperties() |
const String kConnectedCallback = "connectedCallback"; |
const String kDisconnectedCallback = "disconnectedCallback"; |
const String kAttributeChangedCallback = "attributeChangedCallback"; |
- return retrieveObservedAttributes() |
- && callableForName(kConnectedCallback, m_connectedCallback) |
+ return callableForName(kConnectedCallback, m_connectedCallback) |
&& callableForName(kDisconnectedCallback, m_disconnectedCallback) |
- && callableForName(kAttributeChangedCallback, m_attributeChangedCallback); |
+ && callableForName(kAttributeChangedCallback, m_attributeChangedCallback) |
+ && (m_attributeChangedCallback.IsEmpty() || retrieveObservedAttributes()); |
} |
CustomElementDefinition* ScriptCustomElementDefinitionBuilder::build( |