summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/html/custom
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-07-16 11:45:35 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-07-17 08:59:23 +0000
commit552906b0f222c5d5dd11b9fd73829d510980461a (patch)
tree3a11e6ed0538a81dd83b20cf3a4783e297f26d91 /chromium/third_party/blink/renderer/core/html/custom
parent1b05827804eaf047779b597718c03e7d38344261 (diff)
downloadqtwebengine-chromium-552906b0f222c5d5dd11b9fd73829d510980461a.tar.gz
BASELINE: Update Chromium to 83.0.4103.122
Change-Id: Ie3a82f5bb0076eec2a7c6a6162326b4301ee291e Reviewed-by: Michael Brüning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/third_party/blink/renderer/core/html/custom')
-rw-r--r--chromium/third_party/blink/renderer/core/html/custom/custom_element.cc19
-rw-r--r--chromium/third_party/blink/renderer/core/html/custom/custom_element.h6
-rw-r--r--chromium/third_party/blink/renderer/core/html/custom/custom_element_definition.cc48
-rw-r--r--chromium/third_party/blink/renderer/core/html/custom/custom_element_definition.h2
-rw-r--r--chromium/third_party/blink/renderer/core/html/custom/custom_element_reaction_test_helpers.h4
-rw-r--r--chromium/third_party/blink/renderer/core/html/custom/custom_element_registry.cc4
-rw-r--r--chromium/third_party/blink/renderer/core/html/custom/custom_element_registry.idl4
-rw-r--r--chromium/third_party/blink/renderer/core/html/custom/custom_element_registry_test.cc6
-rw-r--r--chromium/third_party/blink/renderer/core/html/custom/custom_element_test.cc5
-rw-r--r--chromium/third_party/blink/renderer/core/html/custom/custom_element_test_helpers.h5
-rw-r--r--chromium/third_party/blink/renderer/core/html/custom/custom_element_upgrade_sorter_test.cc2
-rw-r--r--chromium/third_party/blink/renderer/core/html/custom/element_internals.cc31
-rw-r--r--chromium/third_party/blink/renderer/core/html/custom/element_internals.h12
-rw-r--r--chromium/third_party/blink/renderer/core/html/custom/v0_custom_element_microtask_resolution_step.cc2
14 files changed, 104 insertions, 46 deletions
diff --git a/chromium/third_party/blink/renderer/core/html/custom/custom_element.cc b/chromium/third_party/blink/renderer/core/html/custom/custom_element.cc
index d21c582052c..1a031cecfab 100644
--- a/chromium/third_party/blink/renderer/core/html/custom/custom_element.cc
+++ b/chromium/third_party/blink/renderer/core/html/custom/custom_element.cc
@@ -56,8 +56,7 @@ Vector<AtomicString>& CustomElement::EmbedderCustomElementNames() {
void CustomElement::AddEmbedderCustomElementName(const AtomicString& name) {
DCHECK_EQ(name, name.LowerASCII());
DCHECK(Document::IsValidName(name)) << name;
- DCHECK_EQ(HTMLElementType::kHTMLUnknownElement, htmlElementTypeForTag(name))
- << name;
+ DCHECK(!IsKnownBuiltinTagName(name)) << name;
DCHECK(!IsValidName(name, false)) << name;
if (EmbedderCustomElementNames().Contains(name))
@@ -69,8 +68,7 @@ void CustomElement::AddEmbedderCustomElementNameForTesting(
const AtomicString& name,
ExceptionState& exception_state) {
if (name != name.LowerASCII() || !Document::IsValidName(name) ||
- HTMLElementType::kHTMLUnknownElement != htmlElementTypeForTag(name) ||
- IsValidName(name, false)) {
+ IsKnownBuiltinTagName(name) || IsValidName(name, false)) {
exception_state.ThrowDOMException(DOMExceptionCode::kSyntaxError,
"Name cannot be used");
return;
@@ -105,14 +103,16 @@ bool CustomElement::ShouldCreateCustomElement(const QualifiedName& tag_name) {
}
bool CustomElement::ShouldCreateCustomizedBuiltinElement(
- const AtomicString& local_name) {
- return htmlElementTypeForTag(local_name) !=
+ const AtomicString& local_name,
+ const Document& document) {
+ return htmlElementTypeForTag(local_name, &document) !=
HTMLElementType::kHTMLUnknownElement;
}
bool CustomElement::ShouldCreateCustomizedBuiltinElement(
- const QualifiedName& tag_name) {
- return ShouldCreateCustomizedBuiltinElement(tag_name.LocalName()) &&
+ const QualifiedName& tag_name,
+ const Document& document) {
+ return ShouldCreateCustomizedBuiltinElement(tag_name.LocalName(), document) &&
tag_name.NamespaceURI() == html_names::xhtmlNamespaceURI;
}
@@ -205,7 +205,8 @@ Element* CustomElement::CreateUncustomizedOrUndefinedElement(
HTMLElement* CustomElement::CreateFailedElement(Document& document,
const QualifiedName& tag_name) {
- DCHECK(ShouldCreateCustomElement(tag_name));
+ CHECK(ShouldCreateCustomElement(tag_name))
+ << "HTMLUnknownElement with built-in tag name: " << tag_name;
// "create an element for a token":
// https://html.spec.whatwg.org/C/#create-an-element-for-the-token
diff --git a/chromium/third_party/blink/renderer/core/html/custom/custom_element.h b/chromium/third_party/blink/renderer/core/html/custom/custom_element.h
index 172a3dc7eb8..16e077eb151 100644
--- a/chromium/third_party/blink/renderer/core/html/custom/custom_element.h
+++ b/chromium/third_party/blink/renderer/core/html/custom/custom_element.h
@@ -77,8 +77,10 @@ class CORE_EXPORT CustomElement {
static bool ShouldCreateCustomElement(const AtomicString& local_name);
static bool ShouldCreateCustomElement(const QualifiedName&);
static bool ShouldCreateCustomizedBuiltinElement(
- const AtomicString& local_name);
- static bool ShouldCreateCustomizedBuiltinElement(const QualifiedName&);
+ const AtomicString& local_name,
+ const Document&);
+ static bool ShouldCreateCustomizedBuiltinElement(const QualifiedName&,
+ const Document&);
// Look up a definition, and create an autonomous custom element if
// it's found.
diff --git a/chromium/third_party/blink/renderer/core/html/custom/custom_element_definition.cc b/chromium/third_party/blink/renderer/core/html/custom/custom_element_definition.cc
index 6126e0d04c4..c5e4a121416 100644
--- a/chromium/third_party/blink/renderer/core/html/custom/custom_element_definition.cc
+++ b/chromium/third_party/blink/renderer/core/html/custom/custom_element_definition.cc
@@ -112,7 +112,7 @@ HTMLElement* CustomElementDefinition::CreateElementForConstructor(
document);
}
// TODO(davaajav): write this as one call to setCustomElementState instead of
- // two
+ // two.
element->SetCustomElementState(CustomElementState::kUndefined);
element->SetCustomElementDefinition(this);
return element;
@@ -123,8 +123,9 @@ HTMLElement* CustomElementDefinition::CreateElement(
Document& document,
const QualifiedName& tag_name,
CreateElementFlags flags) {
- DCHECK(CustomElement::ShouldCreateCustomElement(tag_name) ||
- CustomElement::ShouldCreateCustomizedBuiltinElement(tag_name))
+ DCHECK(
+ CustomElement::ShouldCreateCustomElement(tag_name) ||
+ CustomElement::ShouldCreateCustomizedBuiltinElement(tag_name, document))
<< tag_name;
// 5. If definition is non-null, and definition’s name is not equal to
@@ -142,14 +143,19 @@ HTMLElement* CustomElementDefinition::CreateElement(
result->SetCustomElementState(CustomElementState::kUndefined);
result->SetIsValue(Descriptor().GetName());
- // 5.3. If the synchronous custom elements flag is set, upgrade
- // element using definition.
- // 5.4. Otherwise, enqueue a custom element upgrade reaction given
- // result and definition.
- if (!flags.IsAsyncCustomElements())
+ if (!flags.IsAsyncCustomElements()) {
+ // 5.3 If the synchronous custom elements flag is set, then run this step
+ // while catching any exceptions:
+ // 1. Upgrade element using definition.
+ // If this step threw an exception, then:
+ // 1. Report the exception.
+ // 2. Set result's custom element state to "failed".
Upgrade(*result);
- else
+ } else {
+ // 5.4. Otherwise, enqueue a custom element upgrade reaction given
+ // result and definition.
EnqueueUpgradeReaction(*result);
+ }
return To<HTMLElement>(result);
}
@@ -175,7 +181,7 @@ HTMLElement* CustomElementDefinition::CreateElement(
CustomElementDefinition::ConstructionStackScope::ConstructionStackScope(
CustomElementDefinition& definition,
Element& element)
- : construction_stack_(definition.construction_stack_), element_(element) {
+ : construction_stack_(definition.construction_stack_), element_(&element) {
// Push the construction stack.
construction_stack_.push_back(&element);
depth_ = construction_stack_.size();
@@ -190,21 +196,39 @@ CustomElementDefinition::ConstructionStackScope::~ConstructionStackScope() {
// https://html.spec.whatwg.org/C/#concept-upgrade-an-element
void CustomElementDefinition::Upgrade(Element& element) {
- DCHECK_EQ(element.GetCustomElementState(), CustomElementState::kUndefined);
+ // 4.13.5.1 If element is custom, then return.
+ // 4.13.5.2 If element's custom element state is "failed", then return.
+ if (element.GetCustomElementState() == CustomElementState::kCustom ||
+ element.GetCustomElementState() == CustomElementState::kFailed) {
+ return;
+ }
+
+ // 4.13.5.3. Set element's custom element state to "failed".
+ element.SetCustomElementState(CustomElementState::kFailed);
+ // 4.13.5.4: For each attribute in element's attribute list, in order, enqueue
+ // a custom element callback reaction with element, callback name
+ // "attributeChangedCallback", and an argument list containing attribute's
+ // local name, null, attribute's value, and attribute's namespace.
if (!observed_attributes_.IsEmpty())
EnqueueAttributeChangedCallbackForAllAttributes(element);
+ // 4.13.5.5: If element is connected, then enqueue a custom element callback
+ // reaction with element, callback name "connectedCallback", and an empty
+ // argument list.
if (element.isConnected() && HasConnectedCallback())
EnqueueConnectedCallback(element);
bool succeeded = false;
{
+ // 4.13.5.6: Add element to the end of definition's construction stack.
ConstructionStackScope construction_stack_scope(*this, element);
+ // 4.13.5.8: Run the constructor, catching exceptions.
succeeded = RunConstructor(element);
}
if (!succeeded) {
- element.SetCustomElementState(CustomElementState::kFailed);
+ // 4.13.5.?: If the above steps threw an exception, then element's custom
+ // element state will remain "failed".
CustomElementReactionStack::Current().ClearQueue(element);
return;
}
diff --git a/chromium/third_party/blink/renderer/core/html/custom/custom_element_definition.h b/chromium/third_party/blink/renderer/core/html/custom/custom_element_definition.h
index e2c73857658..a3610a2c26f 100644
--- a/chromium/third_party/blink/renderer/core/html/custom/custom_element_definition.h
+++ b/chromium/third_party/blink/renderer/core/html/custom/custom_element_definition.h
@@ -136,7 +136,7 @@ class CORE_EXPORT CustomElementDefinition
private:
ConstructionStack& construction_stack_;
- Member<Element> element_;
+ Element* element_;
size_t depth_;
};
diff --git a/chromium/third_party/blink/renderer/core/html/custom/custom_element_reaction_test_helpers.h b/chromium/third_party/blink/renderer/core/html/custom/custom_element_reaction_test_helpers.h
index d2f544c3fb2..6450df0d6ec 100644
--- a/chromium/third_party/blink/renderer/core/html/custom/custom_element_reaction_test_helpers.h
+++ b/chromium/third_party/blink/renderer/core/html/custom/custom_element_reaction_test_helpers.h
@@ -143,8 +143,8 @@ class ResetCustomElementReactionStackForTest final {
CustomElementReactionStack& Stack() { return *stack_; }
private:
- Member<CustomElementReactionStack> stack_;
- Member<CustomElementReactionStack> old_stack_;
+ CustomElementReactionStack* stack_;
+ CustomElementReactionStack* old_stack_;
DISALLOW_COPY_AND_ASSIGN(ResetCustomElementReactionStackForTest);
};
diff --git a/chromium/third_party/blink/renderer/core/html/custom/custom_element_registry.cc b/chromium/third_party/blink/renderer/core/html/custom/custom_element_registry.cc
index 216efea305a..59e806f5309 100644
--- a/chromium/third_party/blink/renderer/core/html/custom/custom_element_registry.cc
+++ b/chromium/third_party/blink/renderer/core/html/custom/custom_element_registry.cc
@@ -11,9 +11,9 @@
#include "third_party/blink/renderer/bindings/core/v8/script_custom_element_definition_builder.h"
#include "third_party/blink/renderer/bindings/core/v8/script_promise.h"
#include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
+#include "third_party/blink/renderer/bindings/core/v8/v8_element_definition_options.h"
#include "third_party/blink/renderer/core/dom/document.h"
#include "third_party/blink/renderer/core/dom/element.h"
-#include "third_party/blink/renderer/core/dom/element_definition_options.h"
#include "third_party/blink/renderer/core/dom/element_traversal.h"
#include "third_party/blink/renderer/core/dom/shadow_root.h"
#include "third_party/blink/renderer/core/frame/local_dom_window.h"
@@ -150,7 +150,7 @@ CustomElementDefinition* CustomElementRegistry::DefineInternal(
if (ThrowIfValidName(AtomicString(options->extends()), exception_state))
return nullptr;
// 7.2. If element interface is undefined element, throw exception
- if (htmlElementTypeForTag(extends) ==
+ if (htmlElementTypeForTag(extends, owner_->document()) ==
HTMLElementType::kHTMLUnknownElement) {
exception_state.ThrowDOMException(
DOMExceptionCode::kNotSupportedError,
diff --git a/chromium/third_party/blink/renderer/core/html/custom/custom_element_registry.idl b/chromium/third_party/blink/renderer/core/html/custom/custom_element_registry.idl
index 986991b7968..144566b51d2 100644
--- a/chromium/third_party/blink/renderer/core/html/custom/custom_element_registry.idl
+++ b/chromium/third_party/blink/renderer/core/html/custom/custom_element_registry.idl
@@ -2,11 +2,11 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// https://html.spec.whatwg.org/C/custom-elements.html#customelementregistry
+// https://html.spec.whatwg.org/C/#customelementregistry
[Exposed=Window]
interface CustomElementRegistry {
- [CallWith=ScriptState, CEReactions, CustomElementCallbacks, RaisesException, MeasureAs=CustomElementRegistryDefine] void define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions options);
+ [CallWith=ScriptState, CEReactions, CustomElementCallbacks, RaisesException, MeasureAs=CustomElementRegistryDefine] void define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions options = {});
any get(DOMString name);
[CallWith=ScriptState,RaisesException] Promise<void> whenDefined(DOMString name);
[CEReactions] void upgrade(Node root);
diff --git a/chromium/third_party/blink/renderer/core/html/custom/custom_element_registry_test.cc b/chromium/third_party/blink/renderer/core/html/custom/custom_element_registry_test.cc
index c2b430f64f2..c50d69d521f 100644
--- a/chromium/third_party/blink/renderer/core/html/custom/custom_element_registry_test.cc
+++ b/chromium/third_party/blink/renderer/core/html/custom/custom_element_registry_test.cc
@@ -8,13 +8,13 @@
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/blink/public/web/web_custom_element.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h"
-#include "third_party/blink/renderer/core/css/css_style_sheet_init.h"
+#include "third_party/blink/renderer/bindings/core/v8/v8_css_style_sheet_init.h"
+#include "third_party/blink/renderer/bindings/core/v8/v8_element_definition_options.h"
+#include "third_party/blink/renderer/bindings/core/v8/v8_shadow_root_init.h"
#include "third_party/blink/renderer/core/css/style_sheet_contents.h"
#include "third_party/blink/renderer/core/dom/document.h"
#include "third_party/blink/renderer/core/dom/element.h"
-#include "third_party/blink/renderer/core/dom/element_definition_options.h"
#include "third_party/blink/renderer/core/dom/shadow_root.h"
-#include "third_party/blink/renderer/core/dom/shadow_root_init.h"
#include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/core/html/custom/ce_reactions_scope.h"
#include "third_party/blink/renderer/core/html/custom/custom_element.h"
diff --git a/chromium/third_party/blink/renderer/core/html/custom/custom_element_test.cc b/chromium/third_party/blink/renderer/core/html/custom/custom_element_test.cc
index 1ea5764c0cd..d28b73f5cbc 100644
--- a/chromium/third_party/blink/renderer/core/html/custom/custom_element_test.cc
+++ b/chromium/third_party/blink/renderer/core/html/custom/custom_element_test.cc
@@ -9,6 +9,7 @@
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h"
+#include "third_party/blink/renderer/bindings/core/v8/v8_element_definition_options.h"
#include "third_party/blink/renderer/core/dom/document.h"
#include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/core/html/custom/custom_element_definition.h"
@@ -159,7 +160,7 @@ TEST(CustomElementTest, StateByParser) {
"<font-face id=v0></font-face>";
auto page_holder = std::make_unique<DummyPageHolder>();
Document& document = page_holder->GetDocument();
- document.body()->SetInnerHTMLFromString(String::FromUTF8(body_content));
+ document.body()->setInnerHTML(String::FromUTF8(body_content));
struct {
const char* id;
@@ -234,7 +235,7 @@ TEST(CustomElementTest,
// create an element with an uppercase tag name
Document& document = holder->GetDocument();
- EXPECT_TRUE(document.IsHTMLDocument())
+ EXPECT_TRUE(IsA<HTMLDocument>(document))
<< "this test requires a HTML document";
Element* element = document.CreateElementForBinding("A-A", should_not_throw);
EXPECT_EQ(definition, element->GetCustomElementDefinition());
diff --git a/chromium/third_party/blink/renderer/core/html/custom/custom_element_test_helpers.h b/chromium/third_party/blink/renderer/core/html/custom/custom_element_test_helpers.h
index af5cc4358fe..915324b0e8b 100644
--- a/chromium/third_party/blink/renderer/core/html/custom/custom_element_test_helpers.h
+++ b/chromium/third_party/blink/renderer/core/html/custom/custom_element_test_helpers.h
@@ -8,7 +8,6 @@
#include "base/macros.h"
#include "third_party/blink/renderer/core/dom/document.h"
#include "third_party/blink/renderer/core/dom/element.h"
-#include "third_party/blink/renderer/core/dom/element_definition_options.h"
#include "third_party/blink/renderer/core/dom/qualified_name.h"
#include "third_party/blink/renderer/core/html/custom/ce_reactions_scope.h"
#include "third_party/blink/renderer/core/html/custom/custom_element_definition.h"
@@ -153,7 +152,7 @@ class CreateElement {
}
operator Element*() const {
- Document* document = document_.Get();
+ Document* document = document_;
if (!document)
document = MakeGarbageCollected<HTMLDocument>();
NonThrowableExceptionState no_exceptions;
@@ -166,7 +165,7 @@ class CreateElement {
}
private:
- Member<Document> document_;
+ Document* document_ = nullptr;
AtomicString namespace_uri_;
AtomicString local_name_;
AtomicString is_value_;
diff --git a/chromium/third_party/blink/renderer/core/html/custom/custom_element_upgrade_sorter_test.cc b/chromium/third_party/blink/renderer/core/html/custom/custom_element_upgrade_sorter_test.cc
index 8f03e5412f5..f82ce78f372 100644
--- a/chromium/third_party/blink/renderer/core/html/custom/custom_element_upgrade_sorter_test.cc
+++ b/chromium/third_party/blink/renderer/core/html/custom/custom_element_upgrade_sorter_test.cc
@@ -7,10 +7,10 @@
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/blink/renderer/bindings/core/v8/string_or_element_creation_options.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h"
+#include "third_party/blink/renderer/bindings/core/v8/v8_shadow_root_init.h"
#include "third_party/blink/renderer/core/dom/document.h"
#include "third_party/blink/renderer/core/dom/element.h"
#include "third_party/blink/renderer/core/dom/shadow_root.h"
-#include "third_party/blink/renderer/core/dom/shadow_root_init.h"
#include "third_party/blink/renderer/core/html/html_document.h"
#include "third_party/blink/renderer/core/html_names.h"
#include "third_party/blink/renderer/core/testing/page_test_base.h"
diff --git a/chromium/third_party/blink/renderer/core/html/custom/element_internals.cc b/chromium/third_party/blink/renderer/core/html/custom/element_internals.cc
index 946528c5dbd..d207f394d88 100644
--- a/chromium/third_party/blink/renderer/core/html/custom/element_internals.cc
+++ b/chromium/third_party/blink/renderer/core/html/custom/element_internals.cc
@@ -4,13 +4,13 @@
#include "third_party/blink/renderer/core/html/custom/element_internals.h"
+#include "third_party/blink/renderer/bindings/core/v8/v8_validity_state_flags.h"
#include "third_party/blink/renderer/core/accessibility/ax_object_cache.h"
#include "third_party/blink/renderer/core/dom/dom_token_list.h"
#include "third_party/blink/renderer/core/dom/node_lists_node_data.h"
#include "third_party/blink/renderer/core/fileapi/file.h"
#include "third_party/blink/renderer/core/html/custom/custom_element.h"
#include "third_party/blink/renderer/core/html/custom/custom_element_registry.h"
-#include "third_party/blink/renderer/core/html/custom/validity_state_flags.h"
#include "third_party/blink/renderer/core/html/forms/form_controller.h"
#include "third_party/blink/renderer/core/html/forms/form_data.h"
#include "third_party/blink/renderer/core/html/forms/html_form_element.h"
@@ -47,7 +47,6 @@ class CustomStatesTokenList : public DOMTokenList {
};
ElementInternals::ElementInternals(HTMLElement& target) : target_(target) {
- value_.SetUSVString(String());
}
void ElementInternals::Trace(Visitor* visitor) {
@@ -301,6 +300,27 @@ Element* ElementInternals::GetElementAttribute(const QualifiedName& name) {
return element_vector->at(0);
}
+base::Optional<HeapVector<Member<Element>>>
+ElementInternals::GetElementArrayAttribute(const QualifiedName& name) const {
+ const auto& iter = explicitly_set_attr_elements_map_.find(name);
+ if (iter != explicitly_set_attr_elements_map_.end()) {
+ return *(iter->value);
+ }
+ return base::nullopt;
+}
+
+void ElementInternals::SetElementArrayAttribute(
+ const QualifiedName& name,
+ const base::Optional<HeapVector<Member<Element>>>& elements) {
+ if (elements) {
+ explicitly_set_attr_elements_map_.Set(
+ name,
+ MakeGarbageCollected<HeapVector<Member<Element>>>(elements.value()));
+ } else {
+ explicitly_set_attr_elements_map_.erase(name);
+ }
+}
+
HeapVector<Member<Element>> ElementInternals::GetElementArrayAttribute(
const QualifiedName& name,
bool is_null) {
@@ -328,8 +348,13 @@ void ElementInternals::SetElementArrayAttribute(
bool ElementInternals::IsTargetFormAssociated() const {
if (Target().IsFormAssociatedCustomElement())
return true;
- if (Target().GetCustomElementState() != CustomElementState::kUndefined)
+ // Custom element could be in the process of upgrading here, during which
+ // it will have state kFailed according to:
+ // https://html.spec.whatwg.org/multipage/custom-elements.html#upgrades
+ if (Target().GetCustomElementState() != CustomElementState::kUndefined &&
+ Target().GetCustomElementState() != CustomElementState::kFailed) {
return false;
+ }
// An element is in "undefined" state in its constructor JavaScript code.
// ElementInternals needs to handle elements to be form-associated same as
// form-associated custom elements because web authors want to call
diff --git a/chromium/third_party/blink/renderer/core/html/custom/element_internals.h b/chromium/third_party/blink/renderer/core/html/custom/element_internals.h
index 1b5185eb781..dc4133e64e7 100644
--- a/chromium/third_party/blink/renderer/core/html/custom/element_internals.h
+++ b/chromium/third_party/blink/renderer/core/html/custom/element_internals.h
@@ -7,6 +7,7 @@
#include "third_party/blink/renderer/bindings/core/v8/file_or_usv_string_or_form_data.h"
#include "third_party/blink/renderer/core/dom/qualified_name.h"
+#include "third_party/blink/renderer/core/html/forms/labels_node_list.h"
#include "third_party/blink/renderer/core/html/forms/listed_element.h"
#include "third_party/blink/renderer/platform/bindings/script_wrappable.h"
#include "third_party/blink/renderer/platform/wtf/casting.h"
@@ -15,7 +16,6 @@ namespace blink {
class DOMTokenList;
class HTMLElement;
-class LabelsNodeList;
class ValidityStateFlags;
class CORE_EXPORT ElementInternals : public ScriptWrappable,
@@ -62,12 +62,18 @@ class CORE_EXPORT ElementInternals : public ScriptWrappable,
void SetElementAttribute(const QualifiedName& name, Element* element);
Element* GetElementAttribute(const QualifiedName& name);
+ base::Optional<HeapVector<Member<Element>>> GetElementArrayAttribute(
+ const QualifiedName& name) const;
+ void SetElementArrayAttribute(
+ const QualifiedName& name,
+ const base::Optional<HeapVector<Member<Element>>>& elements);
+ // TODO(crbug.com/1060971): Remove |is_null| version.
HeapVector<Member<Element>> GetElementArrayAttribute(
const QualifiedName& name,
- bool is_null);
+ bool is_null); // DEPRECATED
void SetElementArrayAttribute(const QualifiedName&,
HeapVector<Member<Element>>,
- bool is_null);
+ bool is_null); // DEPRECATED
bool HasAttribute(const QualifiedName& attribute) const;
const HashMap<QualifiedName, AtomicString>& GetAttributes() const;
diff --git a/chromium/third_party/blink/renderer/core/html/custom/v0_custom_element_microtask_resolution_step.cc b/chromium/third_party/blink/renderer/core/html/custom/v0_custom_element_microtask_resolution_step.cc
index 546036951ef..22b212dbb61 100644
--- a/chromium/third_party/blink/renderer/core/html/custom/v0_custom_element_microtask_resolution_step.cc
+++ b/chromium/third_party/blink/renderer/core/html/custom/v0_custom_element_microtask_resolution_step.cc
@@ -59,7 +59,7 @@ void V0CustomElementMicrotaskResolutionStep::Trace(Visitor* visitor) {
#if !defined(NDEBUG)
void V0CustomElementMicrotaskResolutionStep::Show(unsigned indent) {
fprintf(stderr, "%*sResolution: ", indent, "");
- element_->OuterHTMLAsString().Show();
+ element_->outerHTML().Show();
}
#endif