Adjust getHTML behavior to match recent consensus
This includes two changes:
1. Rename includeShadowRoots to serializableShadowRoots
2. Do not throw an exception if serializableShadowRoots is false
but shadowRoots is non-empty.
I also added IDL defaults for both parameters to clean up the C++.
I also added a test of the use counter for getHTML().
Bug: 41490936
Change-Id: Ieedd81b5165d9652c3a7b68dea4a4fa5fb088560
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5304121
Auto-Submit: Mason Freed <masonf@chromium.org>
Commit-Queue: Mason Freed <masonf@chromium.org>
Reviewed-by: Di Zhang <dizhangg@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1262930}
diff --git a/shadow-dom/declarative/gethtml.tentative.html b/shadow-dom/declarative/gethtml.tentative.html
index c48230c..eabd391 100644
--- a/shadow-dom/declarative/gethtml.tentative.html
+++ b/shadow-dom/declarative/gethtml.tentative.html
@@ -69,29 +69,28 @@
const emptyElement = `<${elementType}></${elementType}>`;
if (isOpen) {
if (expectedSerializable) {
- assert_equals(wrapper.getHTML({includeShadowRoots: true}), correctHtml);
+ assert_equals(wrapper.getHTML({serializableShadowRoots: true}), correctHtml);
} else {
- assert_equals(wrapper.getHTML({includeShadowRoots: true}), emptyElement);
+ assert_equals(wrapper.getHTML({serializableShadowRoots: true}), emptyElement);
}
} else {
// Closed shadow roots should not be returned unless shadowRoots specifically contains the shadow root:
- assert_equals(wrapper.getHTML({includeShadowRoots: true}), emptyElement);
- assert_equals(wrapper.getHTML({includeShadowRoots: true, shadowRoots: []}), emptyElement);
+ assert_equals(wrapper.getHTML({serializableShadowRoots: true}), emptyElement);
+ assert_equals(wrapper.getHTML({serializableShadowRoots: true, shadowRoots: []}), emptyElement);
}
- // If we provide the shadow root, serialize it, regardless of includeShadowRoots.
- assert_equals(wrapper.getHTML({includeShadowRoots: true, shadowRoots: [shadowRoot]}),correctHtml);
+ // If we provide the shadow root, serialize it, regardless of serializableShadowRoots.
+ assert_equals(wrapper.getHTML({serializableShadowRoots: true, shadowRoots: [shadowRoot]}),correctHtml);
+ assert_equals(wrapper.getHTML({serializableShadowRoots: false, shadowRoots: [shadowRoot]}),correctHtml);
assert_equals(wrapper.getHTML({shadowRoots: [shadowRoot]}),correctHtml);
- // This should always throw - includeShadowRoots false, but we've provided roots.
- assert_throws_dom("NotSupportedError",() => wrapper.getHTML({includeShadowRoots: false, shadowRoots: [shadowRoot]}));
} else {
// For non-shadow hosts, getHTML() should also match .innerHTML
- assert_equals(wrapper.getHTML({includeShadowRoots: true}),wrapper.innerHTML);
+ assert_equals(wrapper.getHTML({serializableShadowRoots: true}),wrapper.innerHTML);
}
- // Either way, make sure getHTML({includeShadowRoots: false}) matches .innerHTML
- assert_equals(wrapper.getHTML({includeShadowRoots: false}),wrapper.innerHTML,'getHTML() with includeShadowRoots false should return the same as .innerHTML');
- // ...and that the default for includeShadowRoots is false.
- assert_equals(wrapper.getHTML(),wrapper.innerHTML,'The default for includeShadowRoots should be false');
+ // Either way, make sure getHTML({serializableShadowRoots: false}) matches .innerHTML
+ assert_equals(wrapper.getHTML({serializableShadowRoots: false}),wrapper.innerHTML,'getHTML() with serializableShadowRoots false should return the same as .innerHTML');
+ // ...and that the default for serializableShadowRoots is false.
+ assert_equals(wrapper.getHTML(),wrapper.innerHTML,'The default for serializableShadowRoots should be false');
}, `${runGetHTMLOnShadowRoot ? 'ShadowRoot' : 'Element'}.getHTML() on <${elementType}>${allowsShadowDom ? `, with ${declarativeShadowDom ? 'declarative' : 'imperative'} shadow, mode=${mode}, delegatesFocus=${delegatesFocus}, serializable=${serializable}, clonable=${clonable}.` : ''}`);
}