Commit 958d2e44 authored by dominicc@chromium.org's avatar dominicc@chromium.org
Browse files

2011-06-24 Dominic Cooney <dominicc@chromium.org>

        Reviewed by Dimitri Glazkov.

        Convert shadow DOM-related tests to use window.internals
        https://bugs.webkit.org/show_bug.cgi?id=61671

        * Source/autotools/symbols.filter: Export symbols for GTK.
2011-06-24  Dominic Cooney  <dominicc@chromium.org>

        Reviewed by Dimitri Glazkov.

        Convert shadow DOM-related tests to use window.internals
        https://bugs.webkit.org/show_bug.cgi?id=61671

        Update tests to use internals.{ensureShadowRoot, shadowRoot,
        shadowPseudoId, removeShadowRoot} instead of layoutTestController.

        * fast/dom/HTMLKeygenElement/keygen-expected.txt:
        * fast/dom/HTMLKeygenElement/keygen.html:
        * fast/dom/HTMLMeterElement/meter-clone-expected.txt:
        * fast/dom/HTMLMeterElement/meter-clone.html:
        * fast/dom/HTMLProgressElement/progress-clone-expected.txt:
        * fast/dom/HTMLProgressElement/progress-clone.html:
        * fast/dom/shadow/activeelement-should-be-shadowhost.html:
        * fast/dom/shadow/create-content-element.html:
        * fast/dom/shadow/gc-shadow-expected.txt:
        * fast/dom/shadow/gc-shadow.html:
        * fast/dom/shadow/layout-tests-can-access-shadow-expected.txt: shadowRoot of non-element throws now, so verify new behavior.
        * fast/dom/shadow/layout-tests-can-access-shadow.html:
        * fast/dom/shadow/nodetype.html:
        * fast/dom/shadow/tab-order-iframe-and-shadow.html:
        * fast/events/shadow-boundary-crossing.html:
        * fast/forms/resources/common.js:
        (getValidationMessageBubbleNode):
        * fast/html/clone-keygen-expected.txt:
        * fast/html/clone-keygen.html:
        * fast/html/clone-range-expected.txt:
        * fast/html/clone-range.html:
        * fast/html/details-clone.html:
        * fullscreen/video-controls-override-expected.txt:
        * fullscreen/video-controls-override.html:
        * media/audio-controls-do-not-fade-out.html:
        * media/media-controls.js:
        (mediaControlsButtonCoordinates):
        * media/video-controls-in-media-document.html:
        * platform/win/Skipped: shadowRoot and friends now available on win.
2011-06-24  Dominic Cooney  <dominicc@chromium.org>

        Reviewed by Dimitri Glazkov.

        Convert shadow DOM-related tests to use window.internals
        https://bugs.webkit.org/show_bug.cgi?id=61671

        * WebCore.exp.in: Exports for symbols used by WebCoreTestSupport.
        * testing/Internals.cpp: The new home of shadowRoot and friends.
        (WebCore::Internals::ensureShadowRoot):
        (WebCore::Internals::shadowRoot):
        (WebCore::Internals::removeShadowRoot):
        (WebCore::Internals::shadowPseudoId):
        * testing/Internals.h:
        * testing/Internals.idl:
2011-06-24  Dominic Cooney  <dominicc@chromium.org>

        Reviewed by Dimitri Glazkov.

        Convert shadow DOM-related tests to use window.internals
        https://bugs.webkit.org/show_bug.cgi?id=61671

        Remove shadow DOM-related methods from Chromium API. These are not
        required any more.

        * public/WebElement.h:
        * src/WebElement.cpp:
2011-06-24  Dominic Cooney  <dominicc@chromium.org>

        Reviewed by Dimitri Glazkov.

        Convert shadow DOM-related tests to use window.internals
        https://bugs.webkit.org/show_bug.cgi?id=61671

        Remove shadow-DOM related methods from GTK DRT API. These are not
        required any more.

        * WebCoreSupport/DumpRenderTreeSupportGtk.cpp:
        * WebCoreSupport/DumpRenderTreeSupportGtk.h:
2011-06-24  Dominic Cooney  <dominicc@chromium.org>

        Reviewed by Dimitri Glazkov.

        Convert shadow DOM-related tests to use window.internals
        https://bugs.webkit.org/show_bug.cgi?id=61671

        Remove shadow DOM-related methods from Mac API. These are not
        required any more.

        * DOM/WebDOMOperations.mm:
        * DOM/WebDOMOperationsPrivate.h:
2011-06-24  Dominic Cooney  <dominicc@chromium.org>

        Reviewed by Dimitri Glazkov.

        Convert shadow-DOM related tests to use window.internals
        https://bugs.webkit.org/show_bug.cgi?id=61671

        Remove shadow-DOM related methods from Qt DRT API. These are not
        required any more.

        * WebCoreSupport/DumpRenderTreeSupportQt.cpp:
        * WebCoreSupport/DumpRenderTreeSupportQt.h:
2011-06-24  Dominic Cooney  <dominicc@chromium.org>

        Reviewed by Dimitri Glazkov.

        Convert shadow DOM-related tests to use window.internals
        https://bugs.webkit.org/show_bug.cgi?id=61671

        Remove shadow DOM-related methods from WebKit2 API. These are not
        required any more.

        * WebProcess/InjectedBundle/API/c/WKBundleNodeHandle.cpp:
        * WebProcess/InjectedBundle/API/c/WKBundleNodeHandlePrivate.h:
        * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:
        * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h:
        * win/WebKit2.def: Re-exports for symbols used by WebCoreTestSupport.
        * win/WebKit2CFLite.def: Same for Cairo.
2011-06-24  Dominic Cooney   <dominicc@chromium.org>

        Reviewed by Dimitri Glazkov.

        Convert shadow DOM-related tests to use window.internals
        https://bugs.webkit.org/show_bug.cgi?id=61671

        Remove ensureShadowRoot, shadowRoot, shadowPseudoId and
        removeShadowRoot from layoutTestController; these have been
        replaced by equivalents in window.internals instead.

        * DumpRenderTree/LayoutTestController.cpp:
        (LayoutTestController::staticFunctions):
        * DumpRenderTree/LayoutTestController.h:
        * DumpRenderTree/chromium/LayoutTestController.cpp:
        (LayoutTestController::LayoutTestController):
        * DumpRenderTree/chromium/LayoutTestController.h:
        * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
        * DumpRenderTree/mac/LayoutTestControllerMac.mm:
        * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
        * DumpRenderTree/qt/LayoutTestControllerQt.h:
        * DumpRenderTree/win/LayoutTestControllerWin.cpp:
        * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
        * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
        * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
        * WebKitTestRunner/InjectedBundle/LayoutTestController.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@89682 268f45cc-cd09-0410-ab3c-d52691b4dbfc
parent 4bbcff9b
2011-06-24 Dominic Cooney <dominicc@chromium.org>
Reviewed by Dimitri Glazkov.
Convert shadow DOM-related tests to use window.internals
https://bugs.webkit.org/show_bug.cgi?id=61671
* Source/autotools/symbols.filter: Export symbols for GTK.
2011-06-24 Carlos Garcia Campos <cgarcia@igalia.com>
 
Reviewed by Martin Robinson.
......
2011-06-24 Dominic Cooney <dominicc@chromium.org>
Reviewed by Dimitri Glazkov.
Convert shadow DOM-related tests to use window.internals
https://bugs.webkit.org/show_bug.cgi?id=61671
Update tests to use internals.{ensureShadowRoot, shadowRoot,
shadowPseudoId, removeShadowRoot} instead of layoutTestController.
* fast/dom/HTMLKeygenElement/keygen-expected.txt:
* fast/dom/HTMLKeygenElement/keygen.html:
* fast/dom/HTMLMeterElement/meter-clone-expected.txt:
* fast/dom/HTMLMeterElement/meter-clone.html:
* fast/dom/HTMLProgressElement/progress-clone-expected.txt:
* fast/dom/HTMLProgressElement/progress-clone.html:
* fast/dom/shadow/activeelement-should-be-shadowhost.html:
* fast/dom/shadow/create-content-element.html:
* fast/dom/shadow/gc-shadow-expected.txt:
* fast/dom/shadow/gc-shadow.html:
* fast/dom/shadow/layout-tests-can-access-shadow-expected.txt: shadowRoot of non-element throws now, so verify new behavior.
* fast/dom/shadow/layout-tests-can-access-shadow.html:
* fast/dom/shadow/nodetype.html:
* fast/dom/shadow/tab-order-iframe-and-shadow.html:
* fast/events/shadow-boundary-crossing.html:
* fast/forms/resources/common.js:
(getValidationMessageBubbleNode):
* fast/html/clone-keygen-expected.txt:
* fast/html/clone-keygen.html:
* fast/html/clone-range-expected.txt:
* fast/html/clone-range.html:
* fast/html/details-clone.html:
* fullscreen/video-controls-override-expected.txt:
* fullscreen/video-controls-override.html:
* media/audio-controls-do-not-fade-out.html:
* media/media-controls.js:
(mediaControlsButtonCoordinates):
* media/video-controls-in-media-document.html:
* platform/win/Skipped: shadowRoot and friends now available on win.
2011-06-24 Matthew Delaney <mdelaney@apple.com>
 
Reviewed by Simon Fraser.
......
......@@ -3,8 +3,7 @@ This tests the keygen element.
PASS keygen.options is undefined
PASS shadow.firstChild.tagName is "SELECT"
PASS layoutTestController.shadowRoot(shadow) is null
PASS layoutTestController.shadowRoot(shadow.firstChild) is null
PASS internals.shadowRoot(shadow.firstChild) is null
PASS successfullyParsed is true
TEST COMPLETE
......
......@@ -13,11 +13,10 @@ This tests the keygen element.
var keygen = document.getElementById('keys');
shouldBe('keygen.options', 'undefined'); // keygen is not a select
if (window.layoutTestController) {
var shadow = layoutTestController.shadowRoot(keygen);
if (window.internals) {
var shadow = internals.shadowRoot(keygen);
shouldBe('shadow.firstChild.tagName', '"SELECT"');
shouldBe('layoutTestController.shadowRoot(shadow)', 'null');
shouldBe('layoutTestController.shadowRoot(shadow.firstChild)', 'null');
shouldBe('internals.shadowRoot(shadow.firstChild)', 'null');
}
var successfullyParsed = true;
......
PASS cloned.value is target.value
PASS layoutTestController.shadowPseudoId(clonedShadowRoot.firstChild) is layoutTestController.shadowPseudoId(targetShadowRoot.firstChild)
PASS layoutTestController.shadowPseudoId(clonedShadowRoot.firstChild.firstChild) is layoutTestController.shadowPseudoId(targetShadowRoot.firstChild.firstChild)
PASS internals.shadowPseudoId(clonedShadowRoot.firstChild) is internals.shadowPseudoId(targetShadowRoot.firstChild)
PASS internals.shadowPseudoId(clonedShadowRoot.firstChild.firstChild) is internals.shadowPseudoId(targetShadowRoot.firstChild.firstChild)
PASS clonedShadowRoot.firstChild.firstChild.style.width is "70%"
PASS targetShadowRoot.firstChild.firstChild.style.width is "50%"
PASS successfullyParsed is true
......
......@@ -13,17 +13,17 @@
cloned = target.cloneNode();
document.body.insertBefore(cloned, target.nextSibling);
if (!window.layoutTestController) {
debug("You need layoutTestController to run this test.");
if (!window.internals) {
debug("You need internals to run this test.");
return;
}
targetShadowRoot = layoutTestController.shadowRoot(target);
clonedShadowRoot = layoutTestController.shadowRoot(cloned);
targetShadowRoot = internals.shadowRoot(target);
clonedShadowRoot = internals.shadowRoot(cloned);
shouldBe("cloned.value", "target.value");
shouldBe("layoutTestController.shadowPseudoId(clonedShadowRoot.firstChild)", "layoutTestController.shadowPseudoId(targetShadowRoot.firstChild)");
shouldBe("layoutTestController.shadowPseudoId(clonedShadowRoot.firstChild.firstChild)", "layoutTestController.shadowPseudoId(targetShadowRoot.firstChild.firstChild)");
shouldBe("internals.shadowPseudoId(clonedShadowRoot.firstChild)", "internals.shadowPseudoId(targetShadowRoot.firstChild)");
shouldBe("internals.shadowPseudoId(clonedShadowRoot.firstChild.firstChild)", "internals.shadowPseudoId(targetShadowRoot.firstChild.firstChild)");
cloned.value = 70;
shouldBe("clonedShadowRoot.firstChild.firstChild.style.width", '"70%"');
shouldBe("targetShadowRoot.firstChild.firstChild.style.width", '"50%"');
......
PASS cloned.value is target.value
PASS layoutTestController.shadowPseudoId(clonedShadowRoot.firstChild) is layoutTestController.shadowPseudoId(targetShadowRoot.firstChild)
PASS layoutTestController.shadowPseudoId(clonedShadowRoot.firstChild.firstChild) is layoutTestController.shadowPseudoId(targetShadowRoot.firstChild.firstChild)
PASS internals.shadowPseudoId(clonedShadowRoot.firstChild) is internals.shadowPseudoId(targetShadowRoot.firstChild)
PASS internals.shadowPseudoId(clonedShadowRoot.firstChild.firstChild) is internals.shadowPseudoId(targetShadowRoot.firstChild.firstChild)
PASS clonedShadowRoot.firstChild.firstChild.style.width is "70%"
PASS targetShadowRoot.firstChild.firstChild.style.width is "50%"
PASS successfullyParsed is true
......
......@@ -13,17 +13,17 @@
cloned = target.cloneNode();
document.body.insertBefore(cloned, target.nextSibling);
if (!window.layoutTestController) {
debug("You need layoutTestController to run this test.");
if (!window.internals) {
debug("You need internals to run this test.");
return;
}
targetShadowRoot = layoutTestController.shadowRoot(target);
clonedShadowRoot = layoutTestController.shadowRoot(cloned);
targetShadowRoot = internals.shadowRoot(target);
clonedShadowRoot = internals.shadowRoot(cloned);
shouldBe("cloned.value", "target.value");
shouldBe("layoutTestController.shadowPseudoId(clonedShadowRoot.firstChild)", "layoutTestController.shadowPseudoId(targetShadowRoot.firstChild)");
shouldBe("layoutTestController.shadowPseudoId(clonedShadowRoot.firstChild.firstChild)", "layoutTestController.shadowPseudoId(targetShadowRoot.firstChild.firstChild)");
shouldBe("internals.shadowPseudoId(clonedShadowRoot.firstChild)", "internals.shadowPseudoId(targetShadowRoot.firstChild)");
shouldBe("internals.shadowPseudoId(clonedShadowRoot.firstChild.firstChild)", "internals.shadowPseudoId(targetShadowRoot.firstChild.firstChild)");
cloned.value = 70;
shouldBe("clonedShadowRoot.firstChild.firstChild.style.width", '"70%"');
......
......@@ -29,7 +29,7 @@ if (window.layoutTestController) {
layoutTestController.dumpAsText();
function shadowRoot(shadowHost) {
return layoutTestController.ensureShadowRoot(shadowHost);
return internals.ensureShadowRoot(shadowHost);
}
function appendChildToShadow(shadowHost, child) {
......
......@@ -24,7 +24,7 @@ function setupTargetTree()
{
var target = document.createElement("div");
target.innerHTML = "<span>content</span>";
var root = layoutTestController.ensureShadowRoot(target);
var root = internals.ensureShadowRoot(target);
var child0 = document.createElement("span");
child0.innerHTML = "Hello,";
......
This tests that the JavaScript wrapper objects of shadow DOM objects
are not prematurely garbage collected.
PASS layoutTestController.shadowRoot(ps[0]).tattoo is "I <3 WebKit"
PASS layoutTestController.shadowRoot(ps[1]).tattoo is "I <3 WebKit"
PASS layoutTestController.shadowRoot(ps[2]).tattoo is "I <3 WebKit"
PASS layoutTestController.shadowRoot(ps[3]).tattoo is "I <3 WebKit"
PASS layoutTestController.shadowRoot(ps[4]).tattoo is "I <3 WebKit"
PASS layoutTestController.shadowRoot(ps[5]).tattoo is "I <3 WebKit"
PASS layoutTestController.shadowRoot(ps[6]).tattoo is "I <3 WebKit"
PASS layoutTestController.shadowRoot(ps[7]).tattoo is "I <3 WebKit"
PASS layoutTestController.shadowRoot(ps[8]).tattoo is "I <3 WebKit"
PASS layoutTestController.shadowRoot(ps[9]).tattoo is "I <3 WebKit"
PASS internals.shadowRoot(ps[0]).tattoo is "I <3 WebKit"
PASS internals.shadowRoot(ps[1]).tattoo is "I <3 WebKit"
PASS internals.shadowRoot(ps[2]).tattoo is "I <3 WebKit"
PASS internals.shadowRoot(ps[3]).tattoo is "I <3 WebKit"
PASS internals.shadowRoot(ps[4]).tattoo is "I <3 WebKit"
PASS internals.shadowRoot(ps[5]).tattoo is "I <3 WebKit"
PASS internals.shadowRoot(ps[6]).tattoo is "I <3 WebKit"
PASS internals.shadowRoot(ps[7]).tattoo is "I <3 WebKit"
PASS internals.shadowRoot(ps[8]).tattoo is "I <3 WebKit"
PASS internals.shadowRoot(ps[9]).tattoo is "I <3 WebKit"
PASS successfullyParsed is true
TEST COMPLETE
......
......@@ -20,14 +20,14 @@ function gc() {
new String(i);
}
if (window.layoutTestController) {
if (window.internals) {
var ps = [];
for (var i = 0; i < 10; i++) {
var p = document.createElement('p');
ps.push(p);
var shadow = layoutTestController.ensureShadowRoot(p);
var shadow = internals.ensureShadowRoot(p);
shadow.tattoo = 'I <3 WebKit';
shadow = null;
}
......@@ -35,7 +35,7 @@ if (window.layoutTestController) {
gc();
for (i = 0; i < ps.length; i++) {
shouldBe('layoutTestController.shadowRoot(ps[' + i + ']).tattoo', '"I <3 WebKit"');
shouldBe('internals.shadowRoot(ps[' + i + ']).tattoo', '"I <3 WebKit"');
}
}
......
This tests that LayoutTestController can access shadow DOM.
This tests that layout tests can access shadow DOM.
PASS shadow.nodeName is "#shadow-root"
PASS layoutTestController.shadowRoot(shadow) is null
PASS layoutTestController.shadowRoot(p) is null
PASS exceptionCode is DOMException.INVALID_ACCESS_ERR
PASS internals.shadowRoot(p) is null
PASS shadow.nodeName is "#shadow-root"
PASS shadow === layoutTestController.shadowRoot(p) is true
PASS layoutTestController.shadowRoot(keygen) is null
PASS shadow === internals.shadowRoot(p) is true
PASS internals.shadowRoot(keygen) is null
PASS successfullyParsed is true
TEST COMPLETE
......
......@@ -7,31 +7,38 @@
<keygen id="keys" />
<p id="peas" />
<pre id="console">
This tests that LayoutTestController can access shadow DOM.
This tests that layout tests can access shadow DOM.
</pre>
<script>
if (window.layoutTestController) {
if (window.internals) {
// Make assertions about a built-in shadow
var keygen = document.getElementById('keys');
var shadow = layoutTestController.shadowRoot(keygen);
var shadow = internals.shadowRoot(keygen);
shouldBe('shadow.nodeName', '"#shadow-root"');
// Shadow roots should not have shadows
shouldBe('layoutTestController.shadowRoot(shadow)', 'null');
// Shadow roots aren't elements, so accessing their shadow should
// raise
var exceptionCode;
try {
internals.shadowRoot(shadow);
} catch (e) {
exceptionCode = e.code;
}
shouldBe('exceptionCode', 'DOMException.INVALID_ACCESS_ERR');
// Ordinary element should not have shadow
var p = document.getElementById('peas');
shouldBe('layoutTestController.shadowRoot(p)', 'null');
shouldBe('internals.shadowRoot(p)', 'null');
// LayoutTestController can bless ordinary elements with shadows
shadow = layoutTestController.ensureShadowRoot(p);
// Can bless ordinary elements with shadows
shadow = internals.ensureShadowRoot(p);
shouldBe('shadow.nodeName', '"#shadow-root"');
shouldBe('shadow === layoutTestController.shadowRoot(p)', 'true');
shouldBe('shadow === internals.shadowRoot(p)', 'true');
// LayoutTestController can strip elements of shadows
layoutTestController.removeShadowRoot(keygen);
shouldBe('layoutTestController.shadowRoot(keygen)', 'null');
// Can strip elements of shadows
internals.removeShadowRoot(keygen);
shouldBe('internals.shadowRoot(keygen)', 'null');
}
var successfullyParsed = true;
......
......@@ -13,7 +13,7 @@ This tests the shadow host's and shadow root's nodeType.
layoutTestController.dumpAsText();
var keygen = document.getElementById('keys');
var shadow = layoutTestController.shadowRoot(keygen);
var shadow = internals.shadowRoot(keygen);
var shadowChild = shadow.firstChild;
shouldBe('keygen.nodeType', 'Node.ELEMENT_NODE');
shouldBe('shadow.nodeType', '14');
......
......@@ -45,7 +45,7 @@ if (window.layoutTestController) {
function addShadowHost(doc) {
var shadowHost = doc.createElement('p');
shadowHost.tabIndex = -1; // This shadow host (and a shadow tree in that) should be skipped.
var shadow = layoutTestController.ensureShadowRoot(shadowHost);
var shadow = internals.ensureShadowRoot(shadowHost);
doc.body.appendChild(shadowHost);
shadow.appendChild(createTextInputElement(doc, 'shadow-input-03', 0));
}
......@@ -65,7 +65,7 @@ if (window.layoutTestController) {
function addShadowHost(doc) {
var shadowHost = doc.createElement('p');
shadowHost.tabIndex = 1;
var shadow = layoutTestController.ensureShadowRoot(shadowHost);
var shadow = internals.ensureShadowRoot(shadowHost);
doc.body.appendChild(shadowHost);
shadow.appendChild(createTextInputElement(doc, 'iframe-shadow-input-08', 0));
......
......@@ -122,7 +122,7 @@ var tests = {
document.body.appendChild(relatedTarget);
var target = document.createElement('div');
target.style.cssText = 'width: 50px; height: 50px';
layoutTestController.ensureShadowRoot(relatedTarget).appendChild(target);
internals.ensureShadowRoot(relatedTarget).appendChild(target);
moveOverLeftQuarterOf(relatedTarget);
var countEventDispatch = function()
{
......@@ -144,7 +144,7 @@ var tests = {
document.body.appendChild(target);
var relatedTarget = document.createElement('div');
relatedTarget.style.cssText = 'width: 50px; height: 50px';
layoutTestController.ensureShadowRoot(target).appendChild(relatedTarget);
internals.ensureShadowRoot(target).appendChild(relatedTarget);
moveOverRightQuarterOf(target);
var countEventDispatch = function(evt)
{
......
......@@ -4,7 +4,7 @@ function $(id) {
function getValidationMessageBubbleNode(host) {
// FIXME: We should search for a pseudo ID.
return layoutTestController.shadowRoot(host).lastChild;
return internals.shadowRoot(host).lastChild;
}
function getAbsoluteRect(element) {
......
......@@ -2,7 +2,7 @@ Tests that a cloned keygen has the right shadow pseudo ID. You should see two bi
PASS specialK.clientHeight is k.clientHeight
PASS layoutTestController.shadowPseudoId(cloneShadow.firstChild) is layoutTestController.shadowPseudoId(kShadow.firstChild)
PASS internals.shadowPseudoId(cloneShadow.firstChild) is internals.shadowPseudoId(kShadow.firstChild)
PASS successfullyParsed is true
TEST COMPLETE
......
......@@ -25,11 +25,11 @@ k.insertAdjacentElement('afterEnd', specialK);
shouldBe('specialK.clientHeight', 'k.clientHeight');
if (window.layoutTestController) {
var kShadow = layoutTestController.shadowRoot(k);
var cloneShadow = layoutTestController.shadowRoot(specialK);
shouldBe('layoutTestController.shadowPseudoId(cloneShadow.firstChild)',
'layoutTestController.shadowPseudoId(kShadow.firstChild)');
if (window.internals) {
var kShadow = internals.shadowRoot(k);
var cloneShadow = internals.shadowRoot(specialK);
shouldBe('internals.shadowPseudoId(cloneShadow.firstChild)',
'internals.shadowPseudoId(kShadow.firstChild)');
}
var successfullyParsed = true;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment