Index: third_party/WebKit/Source/bindings/core/v8/ScriptCustomElementDefinition.cpp |
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptCustomElementDefinition.cpp b/third_party/WebKit/Source/bindings/core/v8/ScriptCustomElementDefinition.cpp |
index 342dff7dd84a2ae37a3408aa7e3997b9d989dd25..8756cbd6692a0b3f8a4e6e97bad08cb21d137200 100644 |
--- a/third_party/WebKit/Source/bindings/core/v8/ScriptCustomElementDefinition.cpp |
+++ b/third_party/WebKit/Source/bindings/core/v8/ScriptCustomElementDefinition.cpp |
@@ -82,10 +82,9 @@ |
return static_cast<ScriptCustomElementDefinition*>(definition); |
} |
-template <typename T> |
static void keepAlive(v8::Local<v8::Array>& array, uint32_t index, |
- const v8::Local<T>& value, |
- ScopedPersistent<T>& persistent, |
+ const v8::Local<v8::Object>& value, |
+ ScopedPersistent<v8::Object>& persistent, |
ScriptState* scriptState) |
{ |
if (value.IsEmpty()) |
@@ -103,9 +102,9 @@ |
const CustomElementDescriptor& descriptor, |
const v8::Local<v8::Object>& constructor, |
const v8::Local<v8::Object>& prototype, |
- const v8::Local<v8::Function>& connectedCallback, |
- const v8::Local<v8::Function>& disconnectedCallback, |
- const v8::Local<v8::Function>& attributeChangedCallback, |
+ const v8::Local<v8::Object>& connectedCallback, |
+ const v8::Local<v8::Object>& disconnectedCallback, |
+ const v8::Local<v8::Object>& attributeChangedCallback, |
const HashSet<AtomicString>& observedAttributes) |
{ |
ScriptCustomElementDefinition* definition = |
@@ -144,13 +143,14 @@ |
const CustomElementDescriptor& descriptor, |
const v8::Local<v8::Object>& constructor, |
const v8::Local<v8::Object>& prototype, |
- const v8::Local<v8::Function>& connectedCallback, |
- const v8::Local<v8::Function>& disconnectedCallback, |
- const v8::Local<v8::Function>& attributeChangedCallback, |
+ const v8::Local<v8::Object>& connectedCallback, |
+ const v8::Local<v8::Object>& disconnectedCallback, |
+ const v8::Local<v8::Object>& attributeChangedCallback, |
const HashSet<AtomicString>& observedAttributes) |
- : CustomElementDefinition(descriptor, observedAttributes) |
+ : CustomElementDefinition(descriptor) |
, m_scriptState(scriptState) |
, m_constructor(scriptState->isolate(), constructor) |
+ , m_observedAttributes(observedAttributes) |
{ |
} |
@@ -283,74 +283,4 @@ |
return ScriptValue(m_scriptState.get(), constructor()); |
} |
-bool ScriptCustomElementDefinition::hasConnectedCallback() const |
-{ |
- return !m_connectedCallback.isEmpty(); |
-} |
- |
-bool ScriptCustomElementDefinition::hasDisconnectedCallback() const |
-{ |
- return !m_disconnectedCallback.isEmpty(); |
-} |
- |
-void ScriptCustomElementDefinition::runCallback( |
- v8::Local<v8::Function> callback, |
- Element* element, int argc, v8::Local<v8::Value> argv[]) |
-{ |
- DCHECK(ScriptState::current(m_scriptState->isolate()) == m_scriptState); |
- v8::Isolate* isolate = m_scriptState->isolate(); |
- |
- // Invoke custom element reactions |
- // https://html.spec.whatwg.org/multipage/scripting.html#invoke-custom-element-reactions |
- // If this throws any exception, then report the exception. |
- v8::TryCatch tryCatch(isolate); |
- tryCatch.SetVerbose(true); |
- |
- ExecutionContext* executionContext = m_scriptState->getExecutionContext(); |
- v8::Local<v8::Value> elementHandle = toV8(element, |
- m_scriptState->context()->Global(), isolate); |
- V8ScriptRunner::callFunction( |
- callback, |
- executionContext, |
- elementHandle, |
- argc, argv, isolate); |
-} |
- |
-void ScriptCustomElementDefinition::runConnectedCallback(Element* element) |
-{ |
- if (!m_scriptState->contextIsValid()) |
- return; |
- ScriptState::Scope scope(m_scriptState.get()); |
- v8::Isolate* isolate = m_scriptState->isolate(); |
- runCallback(m_connectedCallback.newLocal(isolate), element); |
-} |
- |
-void ScriptCustomElementDefinition::runDisconnectedCallback(Element* element) |
-{ |
- if (!m_scriptState->contextIsValid()) |
- return; |
- ScriptState::Scope scope(m_scriptState.get()); |
- v8::Isolate* isolate = m_scriptState->isolate(); |
- runCallback(m_disconnectedCallback.newLocal(isolate), element); |
-} |
- |
-void ScriptCustomElementDefinition::runAttributeChangedCallback( |
- Element* element, const QualifiedName& name, |
- const AtomicString& oldValue, const AtomicString& newValue) |
-{ |
- if (!m_scriptState->contextIsValid()) |
- return; |
- ScriptState::Scope scope(m_scriptState.get()); |
- v8::Isolate* isolate = m_scriptState->isolate(); |
- const int argc = 4; |
- v8::Local<v8::Value> argv[argc] = { |
- v8String(isolate, name.localName()), |
- v8StringOrNull(isolate, oldValue), |
- v8StringOrNull(isolate, newValue), |
- v8String(isolate, name.namespaceURI()), |
- }; |
- runCallback(m_attributeChangedCallback.newLocal(isolate), element, |
- argc, argv); |
-} |
- |
} // namespace blink |