summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/bindings/core/v8/script_custom_element_definition.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/bindings/core/v8/script_custom_element_definition.cc')
-rw-r--r--chromium/third_party/blink/renderer/bindings/core/v8/script_custom_element_definition.cc110
1 files changed, 70 insertions, 40 deletions
diff --git a/chromium/third_party/blink/renderer/bindings/core/v8/script_custom_element_definition.cc b/chromium/third_party/blink/renderer/bindings/core/v8/script_custom_element_definition.cc
index 0ed5ed957f3..db2db818149 100644
--- a/chromium/third_party/blink/renderer/bindings/core/v8/script_custom_element_definition.cc
+++ b/chromium/third_party/blink/renderer/bindings/core/v8/script_custom_element_definition.cc
@@ -5,12 +5,17 @@
#include "third_party/blink/renderer/bindings/core/v8/script_custom_element_definition.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h"
+#include "third_party/blink/renderer/bindings/core/v8/v8_custom_element_adopted_callback.h"
+#include "third_party/blink/renderer/bindings/core/v8/v8_custom_element_attribute_changed_callback.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_custom_element_constructor.h"
+#include "third_party/blink/renderer/bindings/core/v8/v8_custom_element_disabled_state_changed_callback.h"
+#include "third_party/blink/renderer/bindings/core/v8/v8_custom_element_form_associated_callback.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_custom_element_registry.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_element.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_function.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_script_runner.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_throw_dom_exception.h"
+#include "third_party/blink/renderer/bindings/core/v8/v8_void_function.h"
#include "third_party/blink/renderer/core/dom/document.h"
#include "third_party/blink/renderer/core/events/error_event.h"
#include "third_party/blink/renderer/core/execution_context/execution_context.h"
@@ -74,15 +79,23 @@ ScriptCustomElementDefinition* ScriptCustomElementDefinition::Create(
const CustomElementDescriptor& descriptor,
CustomElementDefinition::Id id,
V8CustomElementConstructor* constructor,
- V8Function* connected_callback,
- V8Function* disconnected_callback,
- V8Function* adopted_callback,
- V8Function* attribute_changed_callback,
- HashSet<AtomicString>&& observed_attributes) {
- ScriptCustomElementDefinition* definition = new ScriptCustomElementDefinition(
- script_state, descriptor, constructor, connected_callback,
- disconnected_callback, adopted_callback, attribute_changed_callback,
- std::move(observed_attributes));
+ V8VoidFunction* connected_callback,
+ V8VoidFunction* disconnected_callback,
+ V8CustomElementAdoptedCallback* adopted_callback,
+ V8CustomElementAttributeChangedCallback* attribute_changed_callback,
+ V8CustomElementFormAssociatedCallback* form_associated_callback,
+ V8CustomElementDisabledStateChangedCallback*
+ disabled_state_changed_callback,
+ HashSet<AtomicString>&& observed_attributes,
+ const Vector<String>& disabled_features,
+ FormAssociationFlag form_association_flag) {
+ ScriptCustomElementDefinition* definition =
+ MakeGarbageCollected<ScriptCustomElementDefinition>(
+ script_state, descriptor, constructor, connected_callback,
+ disconnected_callback, adopted_callback, attribute_changed_callback,
+ form_associated_callback, disabled_state_changed_callback,
+ std::move(observed_attributes), disabled_features,
+ form_association_flag);
// Tag the JavaScript constructor object with its ID.
v8::Local<v8::Value> id_value =
@@ -100,18 +113,28 @@ ScriptCustomElementDefinition::ScriptCustomElementDefinition(
ScriptState* script_state,
const CustomElementDescriptor& descriptor,
V8CustomElementConstructor* constructor,
- V8Function* connected_callback,
- V8Function* disconnected_callback,
- V8Function* adopted_callback,
- V8Function* attribute_changed_callback,
- HashSet<AtomicString>&& observed_attributes)
- : CustomElementDefinition(descriptor, std::move(observed_attributes)),
+ V8VoidFunction* connected_callback,
+ V8VoidFunction* disconnected_callback,
+ V8CustomElementAdoptedCallback* adopted_callback,
+ V8CustomElementAttributeChangedCallback* attribute_changed_callback,
+ V8CustomElementFormAssociatedCallback* form_associated_callback,
+ V8CustomElementDisabledStateChangedCallback*
+ disabled_state_changed_callback,
+ HashSet<AtomicString>&& observed_attributes,
+ const Vector<String>& disabled_features,
+ FormAssociationFlag form_association_flag)
+ : CustomElementDefinition(descriptor,
+ std::move(observed_attributes),
+ disabled_features,
+ form_association_flag),
script_state_(script_state),
constructor_(constructor),
connected_callback_(connected_callback),
disconnected_callback_(disconnected_callback),
adopted_callback_(adopted_callback),
- attribute_changed_callback_(attribute_changed_callback) {}
+ attribute_changed_callback_(attribute_changed_callback),
+ form_associated_callback_(form_associated_callback),
+ disabled_state_changed_callback_(disabled_state_changed_callback) {}
void ScriptCustomElementDefinition::Trace(Visitor* visitor) {
visitor->Trace(script_state_);
@@ -120,6 +143,8 @@ void ScriptCustomElementDefinition::Trace(Visitor* visitor) {
visitor->Trace(disconnected_callback_);
visitor->Trace(adopted_callback_);
visitor->Trace(attribute_changed_callback_);
+ visitor->Trace(form_associated_callback_);
+ visitor->Trace(disabled_state_changed_callback_);
CustomElementDefinition::Trace(visitor);
}
@@ -260,19 +285,26 @@ bool ScriptCustomElementDefinition::HasAdoptedCallback() const {
return adopted_callback_;
}
+bool ScriptCustomElementDefinition::HasFormAssociatedCallback() const {
+ return form_associated_callback_;
+}
+
+bool ScriptCustomElementDefinition::HasDisabledStateChangedCallback() const {
+ return disabled_state_changed_callback_;
+}
+
void ScriptCustomElementDefinition::RunConnectedCallback(Element* element) {
if (!connected_callback_)
return;
- connected_callback_->InvokeAndReportException(element, Vector<ScriptValue>());
+ connected_callback_->InvokeAndReportException(element);
}
void ScriptCustomElementDefinition::RunDisconnectedCallback(Element* element) {
if (!disconnected_callback_)
return;
- disconnected_callback_->InvokeAndReportException(element,
- Vector<ScriptValue>());
+ disconnected_callback_->InvokeAndReportException(element);
}
void ScriptCustomElementDefinition::RunAdoptedCallback(Element* element,
@@ -281,15 +313,7 @@ void ScriptCustomElementDefinition::RunAdoptedCallback(Element* element,
if (!adopted_callback_)
return;
- ScriptState* script_state = adopted_callback_->CallbackRelevantScriptState();
- if (!script_state->ContextIsValid())
- return;
- ScriptState::Scope scope(script_state);
- Vector<ScriptValue> args({
- ScriptValue(script_state, ToV8(old_owner, script_state)),
- ScriptValue(script_state, ToV8(new_owner, script_state)),
- });
- adopted_callback_->InvokeAndReportException(element, args);
+ adopted_callback_->InvokeAndReportException(element, old_owner, new_owner);
}
void ScriptCustomElementDefinition::RunAttributeChangedCallback(
@@ -300,19 +324,25 @@ void ScriptCustomElementDefinition::RunAttributeChangedCallback(
if (!attribute_changed_callback_)
return;
- v8::Isolate* isolate = attribute_changed_callback_->GetIsolate();
- ScriptState* script_state =
- attribute_changed_callback_->CallbackRelevantScriptState();
- if (!script_state->ContextIsValid())
+ attribute_changed_callback_->InvokeAndReportException(
+ element, name.LocalName(), old_value, new_value, name.NamespaceURI());
+}
+
+void ScriptCustomElementDefinition::RunFormAssociatedCallback(
+ Element* element,
+ HTMLFormElement* nullable_form) {
+ if (!form_associated_callback_)
+ return;
+ form_associated_callback_->InvokeAndReportException(element, nullable_form);
+}
+
+void ScriptCustomElementDefinition::RunDisabledStateChangedCallback(
+ Element* element,
+ bool is_disabled) {
+ if (!disabled_state_changed_callback_)
return;
- ScriptState::Scope scope(script_state);
- Vector<ScriptValue> args({
- ScriptValue(script_state, V8String(isolate, name.LocalName())),
- ScriptValue(script_state, V8StringOrNull(isolate, old_value)),
- ScriptValue(script_state, V8StringOrNull(isolate, new_value)),
- ScriptValue(script_state, V8StringOrNull(isolate, name.NamespaceURI())),
- });
- attribute_changed_callback_->InvokeAndReportException(element, args);
+ disabled_state_changed_callback_->InvokeAndReportException(element,
+ is_disabled);
}
} // namespace blink