Modified: trunk/LayoutTests/ChangeLog (139168 => 139169)
--- trunk/LayoutTests/ChangeLog 2013-01-09 07:12:00 UTC (rev 139168)
+++ trunk/LayoutTests/ChangeLog 2013-01-09 07:41:38 UTC (rev 139169)
@@ -1,3 +1,26 @@
+2013-01-08 Takashi Sakamoto <ta...@google.com>
+
+ Use window.WebKitShadowRoot for checking whether a node is shadow root or not.
+ https://bugs.webkit.org/show_bug.cgi?id=88748
+
+ Reviewed by Hajime Morita.
+
+ * fast/dom/shadow/resources/shadow-dom.js:
+ (isShadowRoot):
+ Modified to use window.WebKitShadowRoot instead of node name.
+ * resources/dump-as-markup.js:
+ (Markup.get var):
+ Added shadowRootList which has information about whether the given node
+ is a shadow root or not.
+ (Markup):
+ (Markup._get):
+ If the given element is a document fragment and its address is in
+ shadowRootList, use "<shadow:root>".
+ (Markup._getShadowHostIfPossible):
+ Only this method uses internals.shadowRoot and obtains the youngest
+ shadow root from the given node. So update shadowRootList in this
+ method.
+
2013-01-08 Stephanie Lewis <sle...@apple.com>
Assertion Failure in WebCore::RenderLayerCompositor::updateCompositingLayers.
Modified: trunk/LayoutTests/fast/dom/shadow/resources/shadow-dom.js (139168 => 139169)
--- trunk/LayoutTests/fast/dom/shadow/resources/shadow-dom.js 2013-01-09 07:12:00 UTC (rev 139168)
+++ trunk/LayoutTests/fast/dom/shadow/resources/shadow-dom.js 2013-01-09 07:41:38 UTC (rev 139169)
@@ -52,8 +52,7 @@
function isShadowRoot(node)
{
- // FIXME: window.internals should have internals.isShadowRoot(node).
- return node.nodeName == "#shadow-root";
+ return node instanceof window.WebKitShadowRoot;
}
function isIframeElement(element)
Modified: trunk/LayoutTests/resources/dump-as-markup.js (139168 => 139169)
--- trunk/LayoutTests/resources/dump-as-markup.js 2013-01-09 07:12:00 UTC (rev 139168)
+++ trunk/LayoutTests/resources/dump-as-markup.js 2013-01-09 07:41:38 UTC (rev 139169)
@@ -126,7 +126,8 @@
Markup.get = function(node)
{
- var markup = Markup._getShadowHostIfPossible(node, 0);
+ var shadowRootList = {};
+ var markup = Markup._getShadowHostIfPossible(node, 0, shadowRootList);
if (markup)
return markup.substring(1);
@@ -135,13 +136,13 @@
// Don't print any markup for the root node.
for (var i = 0, len = node.childNodes.length; i < len; i++)
- markup += Markup._get(node.childNodes[i], 0);
+ markup += Markup._get(node.childNodes[i], 0, shadowRootList);
return markup.substring(1);
}
// Returns the markup for the given node. To be used for cases where a test needs
// to get the markup but not clobber the whole page.
-Markup._get = function(node, depth)
+Markup._get = function(node, depth, shadowRootList)
{
var str = Markup._indent(depth);
@@ -161,7 +162,7 @@
} catch (e) {
str += '<!-- -->';
}
- break;
+ break;
case Node.PROCESSING_INSTRUCTION_NODE:
str += '<?' + node.nodeName + node.nodeValue + '>';
@@ -218,7 +219,7 @@
break;
case Node.DOCUMENT_FRAGMENT_NODE:
- if (node.nodeName == "#shadow-root")
+ if (shadowRootList && internals.address(node) in shadowRootList)
str += "<shadow:root>";
else
str += "#document-fragment";
@@ -227,18 +228,18 @@
// HTML Template elements serialize their content DocumentFragment, and NOT their children.
if (node.namespaceURI = 'http://www.w3.org/1999/xhtml' && node.tagName == 'TEMPLATE') {
- str += Markup._get(node.content, depth + 1);
+ str += Markup._get(node.content, depth + 1, shadowRootList);
} else {
for (var i = 0, len = node.childNodes.length; i < len; i++) {
var selection = Markup._getSelectionMarker(node, i);
if (selection)
str += Markup._indent(depth + 1) + selection;
- str += Markup._get(node.childNodes[i], depth + 1);
+ str += Markup._get(node.childNodes[i], depth + 1, shadowRootList);
}
}
- str += Markup._getShadowHostIfPossible(node, depth);
+ str += Markup._getShadowHostIfPossible(node, depth, shadowRootList);
var selection = Markup._getSelectionMarker(node, i);
if (selection)
@@ -247,12 +248,14 @@
return str;
}
-Markup._getShadowHostIfPossible = function (node, depth)
+Markup._getShadowHostIfPossible = function (node, depth, shadowRootList)
{
if (!Markup._useHTML5libOutputFormat && node.nodeType == Node.ELEMENT_NODE && window.internals) {
var root = window.internals.shadowRoot(node);
- if (root)
- return Markup._get(root, depth + 1);
+ if (root) {
+ shadowRootList[internals.address(root)] = true;
+ return Markup._get(root, depth + 1, shadowRootList);
+ }
}
return '';
}