Changeset 84251 in webkit
- Timestamp:
- Apr 19, 2011 6:41:54 AM (13 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r84249 r84251 1 2011-04-19 Sheriff Bot <webkit.review.bot@gmail.com> 2 3 Unreviewed, rolling out r84050. 4 http://trac.webkit.org/changeset/84050 5 https://bugs.webkit.org/show_bug.cgi?id=58892 6 7 fast/dom/HTMLKeygenElement/keygen.html is crashing on Chromium 8 (Requested by jknotten on #webkit). 9 10 * dom/ContainerNode.cpp: 11 (WebCore::ContainerNode::takeAllChildrenFrom): 12 (WebCore::ContainerNode::removeBetween): 13 (WebCore::ContainerNode::removeChildren): 14 (WebCore::ContainerNode::parserAddChild): 15 * dom/Document.cpp: 16 (WebCore::Document::Document): 17 (WebCore::Document::~Document): 18 (WebCore::Document::setDocType): 19 * dom/Element.h: 20 * dom/Node.cpp: 21 (WebCore::Node::treeScope): 22 (WebCore::Node::setTreeScope): 23 (WebCore::Node::setTreeScopeRecursively): 24 * dom/Node.h: 25 (WebCore::Node::document): 26 * dom/ShadowRoot.cpp: 27 (WebCore::ShadowRoot::ShadowRoot): 28 * dom/ShadowRoot.h: 29 * dom/TreeScope.cpp: 30 (WebCore::TreeScope::TreeScope): 31 (WebCore::TreeScope::setParentTreeScope): 32 * dom/TreeScope.h: 33 * rendering/RenderSlider.cpp: 34 1 35 2011-04-19 Kinuko Yasuda <kinuko@chromium.org> 2 36 -
trunk/Source/WebCore/dom/ContainerNode.cpp
r84056 r84251 91 91 ASSERT(!ec); 92 92 parserAddChild(child.get()); 93 // FIXME: Together with adoptNode above, the tree scope might get updated recursively twice94 // (if the document changed or oldParent was in a shadow tree, AND *this is in a shadow tree).95 // Can we do better?96 child->setTreeScopeRecursively(treeScope());97 93 if (attached() && !child->attached()) 98 94 child->attach(); … … 486 482 oldChild->setParent(0); 487 483 488 oldChild->setTreeScopeRecursively(document());489 490 484 allowEventDispatch(); 491 485 } … … 537 531 n->setNextSibling(0); 538 532 n->setParent(0); 539 n->setTreeScopeRecursively(document());540 533 541 534 m_firstChild = next; … … 656 649 // FIXME: This method should take a PassRefPtr. 657 650 appendChildToContainer<Node, ContainerNode>(newChild.get(), this); 658 newChild->setTreeScopeRecursively(treeScope());659 660 651 allowEventDispatch(); 661 652 -
trunk/Source/WebCore/dom/Document.cpp
r84169 r84251 378 378 379 379 Document::Document(Frame* frame, const KURL& url, bool isXHTML, bool isHTML) 380 : TreeScope( 0)380 : TreeScope(this) 381 381 , m_guardRefCount(0) 382 382 , m_compatibilityMode(NoQuirksMode) … … 434 434 , m_writeRecursionDepth(0) 435 435 { 436 437 436 m_document = this; 438 437 … … 515 514 ASSERT(!m_styleRecalcTimer.isActive()); 516 515 ASSERT(!m_parentTreeScope); 517 ASSERT(!m_guardRefCount);518 516 519 517 m_scriptRunner.clear(); … … 673 671 m_docType = docType; 674 672 if (m_docType) 675 m_docType->setTreeScope Recursively(this);673 m_docType->setTreeScope(this); 676 674 } 677 675 -
trunk/Source/WebCore/dom/Element.h
r84050 r84251 40 40 class ElementRareData; 41 41 class IntSize; 42 class ShadowRoot;43 42 class WebKitAnimationList; 44 43 … … 231 230 virtual void recalcStyle(StyleChange = NoChange); 232 231 233 // FIXME: Make these return a proper ShadowRoot* (bug 58703).234 232 ContainerNode* shadowRoot() const; 235 233 ContainerNode* ensureShadowRoot(); -
trunk/Source/WebCore/dom/Node.cpp
r84225 r84251 78 78 #include "ScriptController.h" 79 79 #include "SelectorNodeList.h" 80 #include "ShadowRoot.h"81 80 #include "StaticNodeList.h" 82 81 #include "TagNodeList.h" … … 470 469 TreeScope* Node::treeScope() const 471 470 { 472 // FIXME: Using m_document directly is not good -> see comment with document() in the header file.473 471 if (!hasRareData()) 474 return m_document;472 return document(); 475 473 TreeScope* scope = rareData()->treeScope(); 476 return scope ? scope : m_document; 477 } 478 479 void Node::setTreeScopeRecursively(TreeScope* newTreeScope, bool includeRoot) 480 { 481 ASSERT(this); 482 ASSERT(!includeRoot || !isDocumentNode()); 474 // FIXME: Until we land shadow scopes, there should be no non-document scopes. 475 ASSERT(!scope); 476 return scope ? scope : document(); 477 } 478 479 void Node::setTreeScope(TreeScope* newTreeScope) 480 { 481 ASSERT(!isDocumentNode()); 483 482 ASSERT(newTreeScope); 484 ASSERT(!m_deletionHasBegun); 485 486 TreeScope* currentTreeScope = treeScope(); 487 if (currentTreeScope == newTreeScope) 483 ASSERT(!inDocument() || treeScope() == newTreeScope); 484 485 if (newTreeScope->isDocumentNode()) { 486 if (hasRareData()) 487 rareData()->setTreeScope(0); 488 // Setting the new document scope will be handled implicitly 489 // by setDocument() below. 490 } else { 491 // FIXME: Until we land shadow scopes, this branch should be inert. 492 ASSERT_NOT_REACHED(); 493 ensureRareData()->setTreeScope(newTreeScope); 494 } 495 496 setDocument(newTreeScope->document()); 497 } 498 499 void Node::setTreeScopeRecursively(TreeScope* newTreeScope) 500 { 501 ASSERT(!isDocumentNode()); 502 ASSERT(newTreeScope); 503 if (treeScope() == newTreeScope) 488 504 return; 489 505 … … 497 513 currentDocument->incDOMTreeVersion(); 498 514 499 for (Node* node = includeRoot ? this : traverseNextNode(this); node; node = node->traverseNextNode(this)) { 500 if (newTreeScope == newDocument) { 501 if (node->hasRareData()) 502 node->rareData()->setTreeScope(0); 503 // Setting the new document tree scope will be handled implicitly 504 // by setDocument() below. 505 } else 506 node->ensureRareData()->setTreeScope(newTreeScope); 507 508 node->setDocument(newDocument); 509 510 if (!node->isElementNode()) 511 continue; 512 // FIXME: Remove toShadowRoot() once shadowRoot() returns a proper ShadowRoot* (bug 58703). 513 if (ShadowRoot* shadowRoot = toShadowRoot(toElement(node)->shadowRoot())) { 514 shadowRoot->setParentTreeScope(newTreeScope); 515 if (currentDocument != newDocument) 516 shadowRoot->setDocumentRecursively(newDocument); 517 } 515 for (Node* node = this; node; node = node->traverseNextNode(this)) { 516 node->setTreeScope(newTreeScope); 517 // FIXME: Once shadow scopes are landed, update parent scope, etc. 518 518 } 519 519 } -
trunk/Source/WebCore/dom/Node.h
r84225 r84251 360 360 { 361 361 ASSERT(this); 362 // FIXME: below ASSERT is useful, but prevents the use of document() in the constructor or destructor363 // due to the virtual function call to nodeType().364 362 ASSERT(m_document || (nodeType() == DOCUMENT_TYPE_NODE && !inDocument())); 365 363 return m_document; … … 368 366 TreeScope* treeScope() const; 369 367 368 // Do not use this method to change the scope of a node until after the node has been 369 // removed from its previous scope. Do not use to change documents. 370 void setTreeScope(TreeScope*); 371 370 372 // Used by the basic DOM methods (e.g., appendChild()). 371 void setTreeScopeRecursively(TreeScope* , bool includeRoot = true);373 void setTreeScopeRecursively(TreeScope*); 372 374 373 375 // Returns true if this node is associated with a document and is in its associated document's -
trunk/Source/WebCore/dom/ShadowRoot.cpp
r84050 r84251 28 28 #include "ShadowRoot.h" 29 29 30 #include "Document.h"31 #include "NodeRareData.h"32 33 30 namespace WebCore { 34 31 35 32 ShadowRoot::ShadowRoot(Document* document) 36 : TreeScope(document)33 : DocumentFragment(document) 37 34 { 38 35 ASSERT(document); 39 40 // Assume document as parent scope.41 setParentTreeScope(document);42 // Shadow tree scopes have the scope pointer point to themselves.43 // This way, direct children will receive the correct scope pointer.44 ensureRareData()->setTreeScope(this);45 }46 47 ShadowRoot::~ShadowRoot()48 {49 36 } 50 37 … … 52 39 { 53 40 return "#shadow-root"; 54 }55 56 Node::NodeType ShadowRoot::nodeType() const57 {58 // FIXME: Decide correct node type (bug 58704).59 return DOCUMENT_FRAGMENT_NODE;60 }61 62 PassRefPtr<Node> ShadowRoot::cloneNode(bool)63 {64 // ShadowRoot should not be arbitrarily cloned.65 return 0;66 }67 68 bool ShadowRoot::childTypeAllowed(NodeType type) const69 {70 switch (type) {71 case ELEMENT_NODE:72 case PROCESSING_INSTRUCTION_NODE:73 case COMMENT_NODE:74 case TEXT_NODE:75 case CDATA_SECTION_NODE:76 case ENTITY_REFERENCE_NODE:77 return true;78 default:79 return false;80 }81 41 } 82 42 -
trunk/Source/WebCore/dom/ShadowRoot.h
r84050 r84251 28 28 #define ShadowRoot_h 29 29 30 #include " TreeScope.h"30 #include "DocumentFragment.h" 31 31 32 32 namespace WebCore { … … 34 34 class Document; 35 35 36 class ShadowRoot : public TreeScope{36 class ShadowRoot : public DocumentFragment { 37 37 public: 38 38 static PassRefPtr<ShadowRoot> create(Document*); … … 43 43 private: 44 44 ShadowRoot(Document*); 45 virtual ~ShadowRoot();46 47 45 virtual String nodeName() const; 48 virtual NodeType nodeType() const;49 virtual PassRefPtr<Node> cloneNode(bool deep);50 virtual bool childTypeAllowed(NodeType) const;51 46 }; 52 47 … … 56 51 } 57 52 58 inline ShadowRoot* toShadowRoot(Node* node)59 {60 ASSERT(!node || node->isShadowBoundary());61 return static_cast<ShadowRoot*>(node);62 }63 64 53 } // namespace 65 54 -
trunk/Source/WebCore/dom/TreeScope.cpp
r84050 r84251 37 37 using namespace HTMLNames; 38 38 39 TreeScope::TreeScope(Document* document )40 : ContainerNode( document)39 TreeScope::TreeScope(Document* document, ConstructionType constructionType) 40 : ContainerNode(0, constructionType) 41 41 , m_parentTreeScope(0) 42 42 , m_accessKeyMapValid(false) 43 43 , m_numNodeListCaches(0) 44 44 { 45 m_document = document; 46 if (document != this) { 47 // Assume document as parent scope 48 m_parentTreeScope = document; 49 // FIXME: This branch should be inert until shadow scopes are landed. 50 ASSERT_NOT_REACHED(); 51 } 45 52 } 46 53 … … 63 70 ASSERT(!isDocumentNode()); 64 71 // Every scope other than document needs a parent scope. 72 ASSERT(m_parentTreeScope); 65 73 ASSERT(newParentScope); 66 74 -
trunk/Source/WebCore/dom/TreeScope.h
r84050 r84251 40 40 public: 41 41 TreeScope* parentTreeScope() const { return m_parentTreeScope; } 42 void setParentTreeScope(TreeScope*);43 42 44 43 Element* getElementById(const AtomicString&) const; … … 67 66 68 67 protected: 69 TreeScope(Document*); 68 TreeScope(Document*, ConstructionType = CreateContainer); 69 70 70 virtual ~TreeScope(); 71 71 72 72 void destroyTreeScopeData(); 73 74 void setParentTreeScope(TreeScope*); 73 75 74 76 private: -
trunk/Source/WebCore/rendering/RenderSlider.cpp
r84050 r84251 38 38 #include "RenderTheme.h" 39 39 #include "RenderView.h" 40 #include "Shadow Root.h"40 #include "ShadowElement.h" 41 41 #include "SliderThumbElement.h" 42 42 #include "StepRange.h"
Note: See TracChangeset
for help on using the changeset viewer.