Diff
Modified: trunk/LayoutTests/ChangeLog (107690 => 107691)
--- trunk/LayoutTests/ChangeLog 2012-02-14 09:52:47 UTC (rev 107690)
+++ trunk/LayoutTests/ChangeLog 2012-02-14 09:55:28 UTC (rev 107691)
@@ -1,3 +1,16 @@
+2012-02-14 Sheriff Bot <[email protected]>
+
+ Unreviewed, rolling out r107661.
+ http://trac.webkit.org/changeset/107661
+ https://bugs.webkit.org/show_bug.cgi?id=78591
+
+ crash on lion/qt bots (Requested by hayato on #webkit).
+
+ * fast/dom/shadow/nodetype-expected.txt:
+ * fast/dom/shadow/nodetype.html:
+ * resources/dump-as-markup.js:
+ (Markup._get):
+
2012-02-14 Alexey Proskuryakov <[email protected]>
[Mac][Win][WK2] Switch to RFC 6455 protocol for WebSockets
Modified: trunk/LayoutTests/fast/dom/shadow/nodetype-expected.txt (107690 => 107691)
--- trunk/LayoutTests/fast/dom/shadow/nodetype-expected.txt 2012-02-14 09:52:47 UTC (rev 107690)
+++ trunk/LayoutTests/fast/dom/shadow/nodetype-expected.txt 2012-02-14 09:55:28 UTC (rev 107691)
@@ -1,9 +1,9 @@
This tests the shadow host's and shadow root's nodeType.
PASS keygen.nodeType is Node.ELEMENT_NODE
-PASS shadow.nodeType is Node.DOCUMENT_FRAGMENT_NODE
+PASS shadow.nodeType is 14
PASS shadowChild is non-null.
-PASS shadowChild.nodeType != Node.DOCUMENT_FRAGMENT_NODE is true
+PASS shadowChild.nodeType != 14 is true
PASS successfullyParsed is true
TEST COMPLETE
Modified: trunk/LayoutTests/fast/dom/shadow/nodetype.html (107690 => 107691)
--- trunk/LayoutTests/fast/dom/shadow/nodetype.html 2012-02-14 09:52:47 UTC (rev 107690)
+++ trunk/LayoutTests/fast/dom/shadow/nodetype.html 2012-02-14 09:55:28 UTC (rev 107691)
@@ -16,9 +16,9 @@
var shadow = internals.shadowRoot(keygen);
var shadowChild = shadow.firstChild;
shouldBe('keygen.nodeType', 'Node.ELEMENT_NODE');
- shouldBe('shadow.nodeType', 'Node.DOCUMENT_FRAGMENT_NODE');
+ shouldBe('shadow.nodeType', '14');
shouldBeNonNull('shadowChild');
- shouldBeTrue('shadowChild.nodeType != Node.DOCUMENT_FRAGMENT_NODE');
+ shouldBeTrue('shadowChild.nodeType != 14');
}
</script>
<script src=""
Modified: trunk/LayoutTests/resources/dump-as-markup.js (107690 => 107691)
--- trunk/LayoutTests/resources/dump-as-markup.js 2012-02-14 09:52:47 UTC (rev 107690)
+++ trunk/LayoutTests/resources/dump-as-markup.js 2012-02-14 09:55:28 UTC (rev 107691)
@@ -215,9 +215,8 @@
str += Markup._indent(depth + 1) + 'this.value="' + node.value + '"';
break;
- case Node.DOCUMENT_FRAGMENT_NODE:
- if (node.nodeName == "#shadow-root")
- str += "<shadow:root>";
+ case 14: // See SHADOW_ROOT_NODE on Node::NodeType
+ str += "<shadow:root>";
}
for (var i = 0, len = node.childNodes.length; i < len; i++) {
Modified: trunk/Source/WebCore/ChangeLog (107690 => 107691)
--- trunk/Source/WebCore/ChangeLog 2012-02-14 09:52:47 UTC (rev 107690)
+++ trunk/Source/WebCore/ChangeLog 2012-02-14 09:55:28 UTC (rev 107691)
@@ -1,3 +1,62 @@
+2012-02-14 Sheriff Bot <[email protected]>
+
+ Unreviewed, rolling out r107661.
+ http://trac.webkit.org/changeset/107661
+ https://bugs.webkit.org/show_bug.cgi?id=78591
+
+ crash on lion/qt bots (Requested by hayato on #webkit).
+
+ * bindings/js/JSNodeCustom.cpp:
+ (WebCore::createWrapperInline):
+ * bindings/objc/DOM.mm:
+ (kitClass):
+ * bindings/v8/custom/V8NodeCustom.cpp:
+ (WebCore::toV8Slow):
+ * dom/ContainerNode.cpp:
+ (WebCore::collectTargetNodes):
+ (WebCore::ContainerNode::replaceChild):
+ * dom/Document.cpp:
+ (WebCore::Document::importNode):
+ (WebCore::Document::childTypeAllowed):
+ (WebCore::Document::canReplaceChild):
+ * dom/Node.cpp:
+ (WebCore::Node::dumpStatistics):
+ (WebCore::Node::isDefaultNamespace):
+ (WebCore::Node::lookupPrefix):
+ (WebCore::Node::lookupNamespaceURI):
+ (WebCore::appendTextContent):
+ (WebCore::Node::setTextContent):
+ * dom/Node.h:
+ * dom/Range.cpp:
+ (WebCore::lengthOfContentsInNode):
+ (WebCore::Range::processContentsBetweenOffsets):
+ (WebCore::Range::insertNode):
+ (WebCore::Range::checkNodeWOffset):
+ (WebCore::Range::checkNodeBA):
+ (WebCore::Range::selectNode):
+ (WebCore::Range::selectNodeContents):
+ (WebCore::Range::surroundContents):
+ * dom/ShadowRoot.cpp:
+ (WebCore::ShadowRoot::nodeType):
+ (WebCore):
+ * dom/ShadowRoot.h:
+ (ShadowRoot):
+ (WebCore::toShadowRoot):
+ * editing/FrameSelection.cpp:
+ (WebCore::FrameSelection::textWillBeReplaced):
+ * editing/MarkupAccumulator.cpp:
+ (WebCore::MarkupAccumulator::appendStartMarkup):
+ * html/parser/HTMLElementStack.cpp:
+ (WebCore::HTMLNames::isRootNode):
+ (WebCore::HTMLElementStack::pushRootNode):
+ * html/parser/HTMLElementStack.h:
+ (WebCore::isInHTMLNamespace):
+ * inspector/InspectorDOMAgent.cpp:
+ (WebCore::InspectorDOMAgent::pushChildNodesToFrontend):
+ (WebCore::InspectorDOMAgent::buildObjectForNode):
+ * xml/XPathUtil.cpp:
+ (WebCore::XPath::isValidContextNode):
+
2012-02-14 Hayato Ito <[email protected]>
Fix typo. HTMLContentSeleciton -> HTMLContentSelection.
Modified: trunk/Source/WebCore/bindings/js/JSNodeCustom.cpp (107690 => 107691)
--- trunk/Source/WebCore/bindings/js/JSNodeCustom.cpp 2012-02-14 09:52:47 UTC (rev 107690)
+++ trunk/Source/WebCore/bindings/js/JSNodeCustom.cpp 2012-02-14 09:55:28 UTC (rev 107691)
@@ -254,12 +254,11 @@
wrapper = CREATE_DOM_WRAPPER(exec, globalObject, Notation, node);
break;
case Node::DOCUMENT_FRAGMENT_NODE:
- // In case of ShadowRoot, a cached ShadowRoot binding is always used and this
- // code path never be used in current API set.
- // Once we have such APIs, we should call CREATE_DOM_WRAPPER using ShadowRoot.
- ASSERT(!node->isShadowRoot());
wrapper = CREATE_DOM_WRAPPER(exec, globalObject, DocumentFragment, node);
break;
+ case Node::SHADOW_ROOT_NODE:
+ wrapper = CREATE_DOM_WRAPPER(exec, globalObject, Node, node);
+ break;
case Node::ENTITY_REFERENCE_NODE:
wrapper = CREATE_DOM_WRAPPER(exec, globalObject, EntityReference, node);
break;
Modified: trunk/Source/WebCore/bindings/objc/DOM.mm (107690 => 107691)
--- trunk/Source/WebCore/bindings/objc/DOM.mm 2012-02-14 09:52:47 UTC (rev 107690)
+++ trunk/Source/WebCore/bindings/objc/DOM.mm 2012-02-14 09:55:28 UTC (rev 107691)
@@ -327,6 +327,8 @@
// FIXME: Create an XPath objective C wrapper
// See http://bugs.webkit.org/show_bug.cgi?id=8755
return nil;
+ case WebCore::Node::SHADOW_ROOT_NODE:
+ return [DOMNode class];
}
ASSERT_NOT_REACHED();
return nil;
Modified: trunk/Source/WebCore/bindings/v8/custom/V8NodeCustom.cpp (107690 => 107691)
--- trunk/Source/WebCore/bindings/v8/custom/V8NodeCustom.cpp 2012-02-14 09:52:47 UTC (rev 107690)
+++ trunk/Source/WebCore/bindings/v8/custom/V8NodeCustom.cpp 2012-02-14 09:55:28 UTC (rev 107691)
@@ -163,13 +163,10 @@
case Node::DOCUMENT_TYPE_NODE:
return toV8(static_cast<DocumentType*>(impl), forceNewObject);
case Node::DOCUMENT_FRAGMENT_NODE:
- // In case of ShadowRoot, a cached ShadowRoot is always used and this
- // code path never be used in current API set.
- // Once we have such APIs, we should call toV8(static_cast<ShadowRoot*>..).
- ASSERT(!impl->isShadowRoot());
return toV8(static_cast<DocumentFragment*>(impl), forceNewObject);
case Node::NOTATION_NODE:
return toV8(static_cast<Notation*>(impl), forceNewObject);
+ case Node::SHADOW_ROOT_NODE: // There's no IDL class for ShadowRoot, fall-through to default and use Node instead.
default: break; // XPATH_NAMESPACE_NODE
}
return V8Node::wrap(impl, forceNewObject);
Modified: trunk/Source/WebCore/dom/ContainerNode.cpp (107690 => 107691)
--- trunk/Source/WebCore/dom/ContainerNode.cpp 2012-02-14 09:52:47 UTC (rev 107690)
+++ trunk/Source/WebCore/dom/ContainerNode.cpp 2012-02-14 09:55:28 UTC (rev 107691)
@@ -69,7 +69,7 @@
static void collectTargetNodes(Node* node, NodeVector& nodes)
{
- if (node->nodeType() != Node::DOCUMENT_FRAGMENT_NODE || node->isShadowRoot()) {
+ if (node->nodeType() != Node::DOCUMENT_FRAGMENT_NODE) {
nodes.append(node);
return;
}
@@ -298,7 +298,7 @@
// that no callers call with ref count == 0 and parent = 0 (as of this
// writing, there are definitely callers who call that way).
- bool isFragment = newChild->nodeType() == DOCUMENT_FRAGMENT_NODE && !newChild->isShadowRoot();
+ bool isFragment = newChild->nodeType() == DOCUMENT_FRAGMENT_NODE;
// Add the new child(ren)
RefPtr<Node> child = isFragment ? newChild->firstChild() : newChild;
Modified: trunk/Source/WebCore/dom/Document.cpp (107690 => 107691)
--- trunk/Source/WebCore/dom/Document.cpp 2012-02-14 09:52:47 UTC (rev 107690)
+++ trunk/Source/WebCore/dom/Document.cpp 2012-02-14 09:55:28 UTC (rev 107691)
@@ -876,11 +876,6 @@
case ATTRIBUTE_NODE:
return Attr::create(0, this, static_cast<Attr*>(importedNode)->attr()->clone());
case DOCUMENT_FRAGMENT_NODE: {
- if (importedNode->isShadowRoot()) {
- // ShadowRoot nodes should not be explicitly importable.
- // Either they are imported along with their host node, or created implicitly.
- break;
- }
DocumentFragment* oldFragment = static_cast<DocumentFragment*>(importedNode);
RefPtr<DocumentFragment> newFragment = createDocumentFragment();
if (deep) {
@@ -903,6 +898,9 @@
case DOCUMENT_NODE:
case DOCUMENT_TYPE_NODE:
case XPATH_NAMESPACE_NODE:
+ case SHADOW_ROOT_NODE:
+ // ShadowRoot nodes should not be explicitly importable.
+ // Either they are imported along with their host node, or created implicitly.
break;
}
ec = NOT_SUPPORTED_ERR;
@@ -2858,6 +2856,7 @@
case NOTATION_NODE:
case TEXT_NODE:
case XPATH_NAMESPACE_NODE:
+ case SHADOW_ROOT_NODE:
return false;
case COMMENT_NODE:
case PROCESSING_INSTRUCTION_NODE:
@@ -2927,6 +2926,9 @@
case ELEMENT_NODE:
numElements++;
break;
+ case SHADOW_ROOT_NODE:
+ ASSERT_NOT_REACHED();
+ return false;
}
}
} else {
@@ -2940,6 +2942,7 @@
case NOTATION_NODE:
case TEXT_NODE:
case XPATH_NAMESPACE_NODE:
+ case SHADOW_ROOT_NODE:
return false;
case COMMENT_NODE:
case PROCESSING_INSTRUCTION_NODE:
Modified: trunk/Source/WebCore/dom/Node.cpp (107690 => 107691)
--- trunk/Source/WebCore/dom/Node.cpp 2012-02-14 09:52:47 UTC (rev 107690)
+++ trunk/Source/WebCore/dom/Node.cpp 2012-02-14 09:55:28 UTC (rev 107691)
@@ -227,10 +227,7 @@
break;
}
case DOCUMENT_FRAGMENT_NODE: {
- if (node->isShadowRoot())
- ++shadowRootNodes;
- else
- ++fragmentNodes;
+ ++fragmentNodes;
break;
}
case NOTATION_NODE: {
@@ -241,6 +238,10 @@
++xpathNSNodes;
break;
}
+ case SHADOW_ROOT_NODE: {
+ ++shadowRootNodes;
+ break;
+ }
}
}
@@ -1844,6 +1845,7 @@
case NOTATION_NODE:
case DOCUMENT_TYPE_NODE:
case DOCUMENT_FRAGMENT_NODE:
+ case SHADOW_ROOT_NODE:
return false;
case ATTRIBUTE_NODE: {
const Attr* attr = static_cast<const Attr*>(this);
@@ -1877,6 +1879,7 @@
case NOTATION_NODE:
case DOCUMENT_FRAGMENT_NODE:
case DOCUMENT_TYPE_NODE:
+ case SHADOW_ROOT_NODE:
return String();
case ATTRIBUTE_NODE: {
const Attr *attr = static_cast<const Attr *>(this);
@@ -1935,6 +1938,7 @@
case NOTATION_NODE:
case DOCUMENT_TYPE_NODE:
case DOCUMENT_FRAGMENT_NODE:
+ case SHADOW_ROOT_NODE:
return String();
case ATTRIBUTE_NODE: {
const Attr *attr = static_cast<const Attr *>(this);
@@ -2002,6 +2006,7 @@
case Node::ENTITY_NODE:
case Node::ENTITY_REFERENCE_NODE:
case Node::DOCUMENT_FRAGMENT_NODE:
+ case Node::SHADOW_ROOT_NODE:
isNullString = false;
for (Node* child = node->firstChild(); child; child = child->nextSibling()) {
if (child->nodeType() == Node::COMMENT_NODE || child->nodeType() == Node::PROCESSING_INSTRUCTION_NODE)
@@ -2039,7 +2044,8 @@
case ATTRIBUTE_NODE:
case ENTITY_NODE:
case ENTITY_REFERENCE_NODE:
- case DOCUMENT_FRAGMENT_NODE: {
+ case DOCUMENT_FRAGMENT_NODE:
+ case SHADOW_ROOT_NODE: {
ContainerNode* container = toContainerNode(this);
#if ENABLE(MUTATION_OBSERVERS)
ChildListMutationScope mutation(this);
Modified: trunk/Source/WebCore/dom/Node.h (107690 => 107691)
--- trunk/Source/WebCore/dom/Node.h 2012-02-14 09:52:47 UTC (rev 107690)
+++ trunk/Source/WebCore/dom/Node.h 2012-02-14 09:55:28 UTC (rev 107691)
@@ -122,6 +122,7 @@
DOCUMENT_FRAGMENT_NODE = 11,
NOTATION_NODE = 12,
XPATH_NAMESPACE_NODE = 13,
+ SHADOW_ROOT_NODE = 14
};
enum DocumentPosition {
DOCUMENT_POSITION_EQUIVALENT = 0x00,
Modified: trunk/Source/WebCore/dom/Range.cpp (107690 => 107691)
--- trunk/Source/WebCore/dom/Range.cpp 2012-02-14 09:52:47 UTC (rev 107690)
+++ trunk/Source/WebCore/dom/Range.cpp 2012-02-14 09:55:28 UTC (rev 107691)
@@ -677,6 +677,7 @@
case Node::DOCUMENT_FRAGMENT_NODE:
case Node::NOTATION_NODE:
case Node::XPATH_NAMESPACE_NODE:
+ case Node::SHADOW_ROOT_NODE:
return node->childNodeCount();
}
ASSERT_NOT_REACHED();
@@ -839,6 +840,7 @@
case Node::DOCUMENT_FRAGMENT_NODE:
case Node::NOTATION_NODE:
case Node::XPATH_NAMESPACE_NODE:
+ case Node::SHADOW_ROOT_NODE:
// FIXME: Should we assert that some nodes never appear here?
if (action == EXTRACT_CONTENTS || action == CLONE_CONTENTS) {
if (fragment)
@@ -995,7 +997,7 @@
Node::NodeType newNodeType = newNode->nodeType();
int numNewChildren;
- if (newNodeType == Node::DOCUMENT_FRAGMENT_NODE && !newNode->isShadowRoot()) {
+ if (newNodeType == Node::DOCUMENT_FRAGMENT_NODE) {
// check each child node, not the DocumentFragment itself
numNewChildren = 0;
for (Node* c = newNode->firstChild(); c; c = c->nextSibling()) {
@@ -1026,13 +1028,10 @@
case Node::ENTITY_NODE:
case Node::NOTATION_NODE:
case Node::DOCUMENT_NODE:
+ case Node::SHADOW_ROOT_NODE:
ec = RangeException::INVALID_NODE_TYPE_ERR;
return;
default:
- if (newNode->isShadowRoot()) {
- ec = RangeException::INVALID_NODE_TYPE_ERR;
- return;
- }
break;
}
@@ -1218,7 +1217,8 @@
case Node::DOCUMENT_NODE:
case Node::ELEMENT_NODE:
case Node::ENTITY_REFERENCE_NODE:
- case Node::XPATH_NAMESPACE_NODE: {
+ case Node::XPATH_NAMESPACE_NODE:
+ case Node::SHADOW_ROOT_NODE: {
if (!offset)
return 0;
Node* childBefore = n->childNode(offset - 1);
@@ -1243,6 +1243,7 @@
case Node::DOCUMENT_NODE:
case Node::ENTITY_NODE:
case Node::NOTATION_NODE:
+ case Node::SHADOW_ROOT_NODE:
ec = RangeException::INVALID_NODE_TYPE_ERR;
return;
case Node::CDATA_SECTION_NODE:
@@ -1264,6 +1265,7 @@
case Node::ATTRIBUTE_NODE:
case Node::DOCUMENT_NODE:
case Node::DOCUMENT_FRAGMENT_NODE:
+ case Node::SHADOW_ROOT_NODE:
break;
case Node::CDATA_SECTION_NODE:
case Node::COMMENT_NODE:
@@ -1395,6 +1397,7 @@
case Node::PROCESSING_INSTRUCTION_NODE:
case Node::TEXT_NODE:
case Node::XPATH_NAMESPACE_NODE:
+ case Node::SHADOW_ROOT_NODE:
break;
case Node::DOCUMENT_TYPE_NODE:
case Node::ENTITY_NODE:
@@ -1419,6 +1422,7 @@
case Node::DOCUMENT_NODE:
case Node::ENTITY_NODE:
case Node::NOTATION_NODE:
+ case Node::SHADOW_ROOT_NODE:
ec = RangeException::INVALID_NODE_TYPE_ERR;
return;
}
@@ -1459,6 +1463,7 @@
case Node::PROCESSING_INSTRUCTION_NODE:
case Node::TEXT_NODE:
case Node::XPATH_NAMESPACE_NODE:
+ case Node::SHADOW_ROOT_NODE:
break;
case Node::DOCUMENT_TYPE_NODE:
case Node::ENTITY_NODE:
@@ -1507,6 +1512,7 @@
case Node::PROCESSING_INSTRUCTION_NODE:
case Node::TEXT_NODE:
case Node::XPATH_NAMESPACE_NODE:
+ case Node::SHADOW_ROOT_NODE:
break;
}
Modified: trunk/Source/WebCore/dom/ShadowRoot.cpp (107690 => 107691)
--- trunk/Source/WebCore/dom/ShadowRoot.cpp 2012-02-14 09:52:47 UTC (rev 107690)
+++ trunk/Source/WebCore/dom/ShadowRoot.cpp 2012-02-14 09:55:28 UTC (rev 107691)
@@ -125,6 +125,11 @@
return "#shadow-root";
}
+Node::NodeType ShadowRoot::nodeType() const
+{
+ return SHADOW_ROOT_NODE;
+}
+
PassRefPtr<Node> ShadowRoot::cloneNode(bool)
{
// ShadowRoot should not be arbitrarily cloned.
Modified: trunk/Source/WebCore/dom/ShadowRoot.h (107690 => 107691)
--- trunk/Source/WebCore/dom/ShadowRoot.h 2012-02-14 09:52:47 UTC (rev 107690)
+++ trunk/Source/WebCore/dom/ShadowRoot.h 2012-02-14 09:55:28 UTC (rev 107691)
@@ -83,6 +83,7 @@
virtual ~ShadowRoot();
virtual String nodeName() const;
+ virtual NodeType nodeType() const;
virtual PassRefPtr<Node> cloneNode(bool deep);
virtual bool childTypeAllowed(NodeType) const;
@@ -112,7 +113,7 @@
inline ShadowRoot* toShadowRoot(Node* node)
{
- ASSERT(!node || node->isShadowRoot());
+ ASSERT(!node || node->nodeType() == Node::SHADOW_ROOT_NODE);
return static_cast<ShadowRoot*>(node);
}
Modified: trunk/Source/WebCore/editing/FrameSelection.cpp (107690 => 107691)
--- trunk/Source/WebCore/editing/FrameSelection.cpp 2012-02-14 09:52:47 UTC (rev 107690)
+++ trunk/Source/WebCore/editing/FrameSelection.cpp 2012-02-14 09:55:28 UTC (rev 107691)
@@ -425,17 +425,10 @@
position.moveToOffset(positionOffset - oldLength + newLength);
}
-static inline bool nodeIsDetachedFromDocument(Node* node)
-{
- ASSERT(node);
- Node* highest = highestAncestor(node);
- return highest->nodeType() == Node::DOCUMENT_FRAGMENT_NODE && !highest->isShadowRoot();
-}
-
void FrameSelection::textWillBeReplaced(CharacterData* node, unsigned offset, unsigned oldLength, unsigned newLength)
{
// The fragment check is a performance optimization. See http://trac.webkit.org/changeset/30062.
- if (isNone() || !node || nodeIsDetachedFromDocument(node))
+ if (isNone() || !node || highestAncestor(node)->nodeType() == Node::DOCUMENT_FRAGMENT_NODE)
return;
Position base = m_selection.base();
Modified: trunk/Source/WebCore/editing/MarkupAccumulator.cpp (107690 => 107691)
--- trunk/Source/WebCore/editing/MarkupAccumulator.cpp 2012-02-14 09:52:47 UTC (rev 107690)
+++ trunk/Source/WebCore/editing/MarkupAccumulator.cpp 2012-02-14 09:55:28 UTC (rev 107691)
@@ -444,6 +444,7 @@
case Node::ENTITY_REFERENCE_NODE:
case Node::NOTATION_NODE:
case Node::XPATH_NAMESPACE_NODE:
+ case Node::SHADOW_ROOT_NODE:
ASSERT_NOT_REACHED();
break;
}
Modified: trunk/Source/WebCore/html/parser/HTMLElementStack.cpp (107690 => 107691)
--- trunk/Source/WebCore/html/parser/HTMLElementStack.cpp 2012-02-14 09:52:47 UTC (rev 107690)
+++ trunk/Source/WebCore/html/parser/HTMLElementStack.cpp 2012-02-14 09:55:28 UTC (rev 107691)
@@ -53,6 +53,7 @@
inline bool isRootNode(ContainerNode* node)
{
return node->nodeType() == Node::DOCUMENT_FRAGMENT_NODE
+ || node->nodeType() == Node::SHADOW_ROOT_NODE
|| node->hasTagName(htmlTag);
}
@@ -309,7 +310,7 @@
void HTMLElementStack::pushRootNode(PassRefPtr<ContainerNode> rootNode)
{
- ASSERT(rootNode->nodeType() == Node::DOCUMENT_FRAGMENT_NODE);
+ ASSERT(rootNode->nodeType() == Node::DOCUMENT_FRAGMENT_NODE || rootNode->nodeType() == Node::SHADOW_ROOT_NODE);
pushRootNodeCommon(rootNode);
}
Modified: trunk/Source/WebCore/html/parser/HTMLElementStack.h (107690 => 107691)
--- trunk/Source/WebCore/html/parser/HTMLElementStack.h 2012-02-14 09:52:47 UTC (rev 107690)
+++ trunk/Source/WebCore/html/parser/HTMLElementStack.h 2012-02-14 09:55:28 UTC (rev 107691)
@@ -180,7 +180,8 @@
// A DocumentFragment takes the place of the document element when parsing
// fragments and should be considered in the HTML namespace.
return node->namespaceURI() == HTMLNames::xhtmlNamespaceURI
- || node->nodeType() == Node::DOCUMENT_FRAGMENT_NODE; // FIXME: Does this also apply to ShadowRoot?
+ || node->nodeType() == Node::DOCUMENT_FRAGMENT_NODE
+ || node->nodeType() == Node::SHADOW_ROOT_NODE; // FIXME: Does this also apply to ShadowRoot?
}
Modified: trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp (107690 => 107691)
--- trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp 2012-02-14 09:52:47 UTC (rev 107690)
+++ trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp 2012-02-14 09:55:28 UTC (rev 107691)
@@ -402,7 +402,7 @@
void InspectorDOMAgent::pushChildNodesToFrontend(int nodeId)
{
Node* node = nodeForId(nodeId);
- if (!node || (node->nodeType() != Node::ELEMENT_NODE && node->nodeType() != Node::DOCUMENT_NODE && node->nodeType() != Node::DOCUMENT_FRAGMENT_NODE) || node->isShadowRoot())
+ if (!node || (node->nodeType() != Node::ELEMENT_NODE && node->nodeType() != Node::DOCUMENT_NODE && node->nodeType() != Node::DOCUMENT_FRAGMENT_NODE))
return;
if (m_childrenRequested.contains(nodeId))
return;
@@ -1160,9 +1160,7 @@
localName = node->localName();
break;
case Node::DOCUMENT_FRAGMENT_NODE:
- if (!node->isShadowRoot())
- break;
- // Fall through
+ break;
case Node::DOCUMENT_NODE:
case Node::ELEMENT_NODE:
default:
Modified: trunk/Source/WebCore/xml/XPathUtil.cpp (107690 => 107691)
--- trunk/Source/WebCore/xml/XPathUtil.cpp 2012-02-14 09:52:47 UTC (rev 107690)
+++ trunk/Source/WebCore/xml/XPathUtil.cpp 2012-02-14 09:55:28 UTC (rev 107691)
@@ -85,6 +85,7 @@
case Node::ENTITY_NODE:
case Node::ENTITY_REFERENCE_NODE:
case Node::NOTATION_NODE:
+ case Node::SHADOW_ROOT_NODE:
return false;
case Node::TEXT_NODE:
return !(node->parentNode() && node->parentNode()->isAttributeNode());
Modified: trunk/Source/WebKit/chromium/ChangeLog (107690 => 107691)
--- trunk/Source/WebKit/chromium/ChangeLog 2012-02-14 09:52:47 UTC (rev 107690)
+++ trunk/Source/WebKit/chromium/ChangeLog 2012-02-14 09:55:28 UTC (rev 107691)
@@ -1,3 +1,14 @@
+2012-02-14 Sheriff Bot <[email protected]>
+
+ Unreviewed, rolling out r107661.
+ http://trac.webkit.org/changeset/107661
+ https://bugs.webkit.org/show_bug.cgi?id=78591
+
+ crash on lion/qt bots (Requested by hayato on #webkit).
+
+ * src/WebPageSerializerImpl.cpp:
+ (WebKit::WebPageSerializerImpl::buildContentForNode):
+
2012-02-14 Yuzhu Shen <[email protected]>
[chromium] Pepper plugins don't receive mouse movement information in
Modified: trunk/Source/WebKit/chromium/src/WebPageSerializerImpl.cpp (107690 => 107691)
--- trunk/Source/WebKit/chromium/src/WebPageSerializerImpl.cpp 2012-02-14 09:52:47 UTC (rev 107690)
+++ trunk/Source/WebKit/chromium/src/WebPageSerializerImpl.cpp 2012-02-14 09:55:28 UTC (rev 107691)
@@ -417,6 +417,7 @@
case Node::ATTRIBUTE_NODE:
case Node::DOCUMENT_NODE:
case Node::DOCUMENT_FRAGMENT_NODE:
+ case Node::SHADOW_ROOT_NODE:
// Should not exist.
ASSERT_NOT_REACHED();
break;