Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(100)

Unified Diff: third_party/WebKit/Source/bindings/core/v8/ScriptCustomElementDefinition.cpp

Issue 2066813003: Revert of Implement script-side of callback reactions for Custom Elements V1 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@callback-ce
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698