Changeset 94781 in webkit


Ignore:
Timestamp:
Sep 8, 2011 12:38:18 PM (13 years ago)
Author:
arv@chromium.org
Message:

Move Element.contains to Node
https://bugs.webkit.org/show_bug.cgi?id=67651

Reviewed by Darin Adler.

This moves the contains method from Element to Node as in the DOM4 working draft:
http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-node-contains

This also special cases Document contains to make it O(1) instead of O(depth).

Source/WebCore:

Tests: fast/dom/Node/contains-method.html

perf/document-contains.html

  • dom/Element.idl:
  • dom/Node.cpp:

(WebCore::Node::contains): Added document special case.

  • dom/Node.idl:
  • editing/DeleteSelectionCommand.cpp:

(WebCore::DeleteSelectionCommand::mergeParagraphs): Added a null check.

LayoutTests:

  • fast/dom/Element/contains-method-expected.txt: Removed.
  • fast/dom/Element/script-tests/contains-method.js: Removed.
  • fast/dom/Node/contains-method-expected.txt: Added.
  • fast/dom/Node/contains-method.html: Renamed from LayoutTests/fast/dom/Element/contains-method.html.
  • fast/dom/Node/script-tests/contains-method.js: Added. Expanded tests.
  • fast/dom/Window/window-properties-expected.txt:
  • perf/document-contains-expected.txt: Added.
  • perf/document-contains.html: Added.

Perf test to ensure that document.contains is O(1).

  • platform/gtk/fast/dom/Window/window-properties-expected.txt:
  • platform/mac/fast/dom/Window/window-properties-expected.txt:
  • platform/qt-wk2/fast/dom/Window/window-properties-expected.txt:
  • platform/qt/fast/dom/Window/window-properties-expected.txt:
Location:
trunk
Files:
4 added
2 deleted
11 edited
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r94780 r94781  
     12011-09-08  Erik Arvidsson  <arv@chromium.org>
     2
     3        Move Element.contains to Node
     4        https://bugs.webkit.org/show_bug.cgi?id=67651
     5
     6        Reviewed by Darin Adler.
     7
     8        This moves the contains method from Element to Node as in the DOM4 working draft:
     9        http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-node-contains
     10
     11        This also special cases Document contains to make it O(1) instead of O(depth).
     12
     13        * fast/dom/Element/contains-method-expected.txt: Removed.
     14        * fast/dom/Element/script-tests/contains-method.js: Removed.
     15        * fast/dom/Node/contains-method-expected.txt: Added.
     16        * fast/dom/Node/contains-method.html: Renamed from LayoutTests/fast/dom/Element/contains-method.html.
     17        * fast/dom/Node/script-tests/contains-method.js: Added. Expanded tests.
     18        * fast/dom/Window/window-properties-expected.txt:
     19        * perf/document-contains-expected.txt: Added.
     20        * perf/document-contains.html: Added.
     21                                       Perf test to ensure that document.contains is O(1).
     22        * platform/gtk/fast/dom/Window/window-properties-expected.txt:
     23        * platform/mac/fast/dom/Window/window-properties-expected.txt:
     24        * platform/qt-wk2/fast/dom/Window/window-properties-expected.txt:
     25        * platform/qt/fast/dom/Window/window-properties-expected.txt:
     26
    1272011-09-08  Chris Rogers  <crogers@google.com>
    228
  • trunk/LayoutTests/fast/dom/Window/window-properties-expected.txt

    r93491 r94781  
    2727window.Attr.prototype.cloneNode [function]
    2828window.Attr.prototype.compareDocumentPosition [function]
     29window.Attr.prototype.contains [function]
    2930window.Attr.prototype.dispatchEvent [function]
    3031window.Attr.prototype.hasAttributes [function]
     
    180181window.CDATASection.prototype.cloneNode [function]
    181182window.CDATASection.prototype.compareDocumentPosition [function]
     183window.CDATASection.prototype.contains [function]
    182184window.CDATASection.prototype.deleteData [function]
    183185window.CDATASection.prototype.dispatchEvent [function]
     
    451453window.CharacterData.prototype.cloneNode [function]
    452454window.CharacterData.prototype.compareDocumentPosition [function]
     455window.CharacterData.prototype.contains [function]
    453456window.CharacterData.prototype.deleteData [function]
    454457window.CharacterData.prototype.dispatchEvent [function]
     
    622625window.Document.prototype.cloneNode [function]
    623626window.Document.prototype.compareDocumentPosition [function]
     627window.Document.prototype.contains [function]
    624628window.Document.prototype.createAttribute [function]
    625629window.Document.prototype.createAttributeNS [function]
     
    696700window.DocumentFragment.prototype.cloneNode [function]
    697701window.DocumentFragment.prototype.compareDocumentPosition [function]
     702window.DocumentFragment.prototype.contains [function]
    698703window.DocumentFragment.prototype.dispatchEvent [function]
    699704window.DocumentFragment.prototype.hasAttributes [function]
     
    736741window.DocumentType.prototype.cloneNode [function]
    737742window.DocumentType.prototype.compareDocumentPosition [function]
     743window.DocumentType.prototype.contains [function]
    738744window.DocumentType.prototype.dispatchEvent [function]
    739745window.DocumentType.prototype.hasAttributes [function]
     
    843849window.Entity.prototype.cloneNode [function]
    844850window.Entity.prototype.compareDocumentPosition [function]
     851window.Entity.prototype.contains [function]
    845852window.Entity.prototype.dispatchEvent [function]
    846853window.Entity.prototype.hasAttributes [function]
     
    881888window.EntityReference.prototype.cloneNode [function]
    882889window.EntityReference.prototype.compareDocumentPosition [function]
     890window.EntityReference.prototype.contains [function]
    883891window.EntityReference.prototype.dispatchEvent [function]
    884892window.EntityReference.prototype.hasAttributes [function]
     
    12531261window.Node.prototype.cloneNode [function]
    12541262window.Node.prototype.compareDocumentPosition [function]
     1263window.Node.prototype.contains [function]
    12551264window.Node.prototype.dispatchEvent [function]
    12561265window.Node.prototype.hasAttributes [function]
  • trunk/LayoutTests/platform/gtk/fast/dom/Window/window-properties-expected.txt

    r94650 r94781  
    2727window.Attr.prototype.cloneNode [function]
    2828window.Attr.prototype.compareDocumentPosition [function]
     29window.Attr.prototype.contains [function]
    2930window.Attr.prototype.dispatchEvent [function]
    3031window.Attr.prototype.hasAttributes [function]
     
    180181window.CDATASection.prototype.cloneNode [function]
    181182window.CDATASection.prototype.compareDocumentPosition [function]
     183window.CDATASection.prototype.contains [function]
    182184window.CDATASection.prototype.deleteData [function]
    183185window.CDATASection.prototype.dispatchEvent [function]
     
    451453window.CharacterData.prototype.cloneNode [function]
    452454window.CharacterData.prototype.compareDocumentPosition [function]
     455window.CharacterData.prototype.contains [function]
    453456window.CharacterData.prototype.deleteData [function]
    454457window.CharacterData.prototype.dispatchEvent [function]
     
    675678window.Document.prototype.cloneNode [function]
    676679window.Document.prototype.compareDocumentPosition [function]
     680window.Document.prototype.contains [function]
    677681window.Document.prototype.createAttribute [function]
    678682window.Document.prototype.createAttributeNS [function]
     
    749753window.DocumentFragment.prototype.cloneNode [function]
    750754window.DocumentFragment.prototype.compareDocumentPosition [function]
     755window.DocumentFragment.prototype.contains [function]
    751756window.DocumentFragment.prototype.dispatchEvent [function]
    752757window.DocumentFragment.prototype.hasAttributes [function]
     
    789794window.DocumentType.prototype.cloneNode [function]
    790795window.DocumentType.prototype.compareDocumentPosition [function]
     796window.DocumentType.prototype.contains [function]
    791797window.DocumentType.prototype.dispatchEvent [function]
    792798window.DocumentType.prototype.hasAttributes [function]
     
    896902window.Entity.prototype.cloneNode [function]
    897903window.Entity.prototype.compareDocumentPosition [function]
     904window.Entity.prototype.contains [function]
    898905window.Entity.prototype.dispatchEvent [function]
    899906window.Entity.prototype.hasAttributes [function]
     
    934941window.EntityReference.prototype.cloneNode [function]
    935942window.EntityReference.prototype.compareDocumentPosition [function]
     943window.EntityReference.prototype.contains [function]
    936944window.EntityReference.prototype.dispatchEvent [function]
    937945window.EntityReference.prototype.hasAttributes [function]
     
    13341342window.Node.prototype.cloneNode [function]
    13351343window.Node.prototype.compareDocumentPosition [function]
     1344window.Node.prototype.contains [function]
    13361345window.Node.prototype.dispatchEvent [function]
    13371346window.Node.prototype.hasAttributes [function]
  • trunk/LayoutTests/platform/mac/fast/dom/Window/window-properties-expected.txt

    r94614 r94781  
    2727window.Attr.prototype.cloneNode [function]
    2828window.Attr.prototype.compareDocumentPosition [function]
     29window.Attr.prototype.contains [function]
    2930window.Attr.prototype.dispatchEvent [function]
    3031window.Attr.prototype.hasAttributes [function]
     
    180181window.CDATASection.prototype.cloneNode [function]
    181182window.CDATASection.prototype.compareDocumentPosition [function]
     183window.CDATASection.prototype.contains [function]
    182184window.CDATASection.prototype.deleteData [function]
    183185window.CDATASection.prototype.dispatchEvent [function]
     
    451453window.CharacterData.prototype.cloneNode [function]
    452454window.CharacterData.prototype.compareDocumentPosition [function]
     455window.CharacterData.prototype.contains [function]
    453456window.CharacterData.prototype.deleteData [function]
    454457window.CharacterData.prototype.dispatchEvent [function]
     
    675678window.Document.prototype.cloneNode [function]
    676679window.Document.prototype.compareDocumentPosition [function]
     680window.Document.prototype.contains [function]
    677681window.Document.prototype.createAttribute [function]
    678682window.Document.prototype.createAttributeNS [function]
     
    749753window.DocumentFragment.prototype.cloneNode [function]
    750754window.DocumentFragment.prototype.compareDocumentPosition [function]
     755window.DocumentFragment.prototype.contains [function]
    751756window.DocumentFragment.prototype.dispatchEvent [function]
    752757window.DocumentFragment.prototype.hasAttributes [function]
     
    789794window.DocumentType.prototype.cloneNode [function]
    790795window.DocumentType.prototype.compareDocumentPosition [function]
     796window.DocumentType.prototype.contains [function]
    791797window.DocumentType.prototype.dispatchEvent [function]
    792798window.DocumentType.prototype.hasAttributes [function]
     
    896902window.Entity.prototype.cloneNode [function]
    897903window.Entity.prototype.compareDocumentPosition [function]
     904window.Entity.prototype.contains [function]
    898905window.Entity.prototype.dispatchEvent [function]
    899906window.Entity.prototype.hasAttributes [function]
     
    934941window.EntityReference.prototype.cloneNode [function]
    935942window.EntityReference.prototype.compareDocumentPosition [function]
     943window.EntityReference.prototype.contains [function]
    936944window.EntityReference.prototype.dispatchEvent [function]
    937945window.EntityReference.prototype.hasAttributes [function]
     
    13321340window.Node.prototype.cloneNode [function]
    13331341window.Node.prototype.compareDocumentPosition [function]
     1342window.Node.prototype.contains [function]
    13341343window.Node.prototype.dispatchEvent [function]
    13351344window.Node.prototype.hasAttributes [function]
  • trunk/LayoutTests/platform/qt-wk2/fast/dom/Window/window-properties-expected.txt

    r93491 r94781  
    2727window.Attr.prototype.cloneNode [function]
    2828window.Attr.prototype.compareDocumentPosition [function]
     29window.Attr.prototype.contains [function]
    2930window.Attr.prototype.dispatchEvent [function]
    3031window.Attr.prototype.hasAttributes [function]
     
    178179window.CDATASection.prototype.cloneNode [function]
    179180window.CDATASection.prototype.compareDocumentPosition [function]
     181window.CDATASection.prototype.contains [function]
    180182window.CDATASection.prototype.deleteData [function]
    181183window.CDATASection.prototype.dispatchEvent [function]
     
    449451window.CharacterData.prototype.cloneNode [function]
    450452window.CharacterData.prototype.compareDocumentPosition [function]
     453window.CharacterData.prototype.contains [function]
    451454window.CharacterData.prototype.deleteData [function]
    452455window.CharacterData.prototype.dispatchEvent [function]
     
    620623window.Document.prototype.cloneNode [function]
    621624window.Document.prototype.compareDocumentPosition [function]
     625window.Document.prototype.contains [function]
    622626window.Document.prototype.createAttribute [function]
    623627window.Document.prototype.createAttributeNS [function]
     
    695699window.DocumentFragment.prototype.cloneNode [function]
    696700window.DocumentFragment.prototype.compareDocumentPosition [function]
     701window.DocumentFragment.prototype.contains [function]
    697702window.DocumentFragment.prototype.dispatchEvent [function]
    698703window.DocumentFragment.prototype.hasAttributes [function]
     
    735740window.DocumentType.prototype.cloneNode [function]
    736741window.DocumentType.prototype.compareDocumentPosition [function]
     742window.DocumentType.prototype.contains [function]
    737743window.DocumentType.prototype.dispatchEvent [function]
    738744window.DocumentType.prototype.hasAttributes [function]
     
    839845window.Entity.prototype.cloneNode [function]
    840846window.Entity.prototype.compareDocumentPosition [function]
     847window.Entity.prototype.contains [function]
    841848window.Entity.prototype.dispatchEvent [function]
    842849window.Entity.prototype.hasAttributes [function]
     
    877884window.EntityReference.prototype.cloneNode [function]
    878885window.EntityReference.prototype.compareDocumentPosition [function]
     886window.EntityReference.prototype.contains [function]
    879887window.EntityReference.prototype.dispatchEvent [function]
    880888window.EntityReference.prototype.hasAttributes [function]
     
    12491257window.Node.prototype.cloneNode [function]
    12501258window.Node.prototype.compareDocumentPosition [function]
     1259window.Node.prototype.contains [function]
    12511260window.Node.prototype.dispatchEvent [function]
    12521261window.Node.prototype.hasAttributes [function]
  • trunk/LayoutTests/platform/qt/fast/dom/Window/window-properties-expected.txt

    r94638 r94781  
    2727window.Attr.prototype.cloneNode [function]
    2828window.Attr.prototype.compareDocumentPosition [function]
     29window.Attr.prototype.contains [function]
    2930window.Attr.prototype.dispatchEvent [function]
    3031window.Attr.prototype.hasAttributes [function]
     
    178179window.CDATASection.prototype.cloneNode [function]
    179180window.CDATASection.prototype.compareDocumentPosition [function]
     181window.CDATASection.prototype.contains [function]
    180182window.CDATASection.prototype.deleteData [function]
    181183window.CDATASection.prototype.dispatchEvent [function]
     
    449451window.CharacterData.prototype.cloneNode [function]
    450452window.CharacterData.prototype.compareDocumentPosition [function]
     453window.CharacterData.prototype.contains [function]
    451454window.CharacterData.prototype.deleteData [function]
    452455window.CharacterData.prototype.dispatchEvent [function]
     
    673676window.Document.prototype.cloneNode [function]
    674677window.Document.prototype.compareDocumentPosition [function]
     678window.Document.prototype.contains [function]
    675679window.Document.prototype.createAttribute [function]
    676680window.Document.prototype.createAttributeNS [function]
     
    748752window.DocumentFragment.prototype.cloneNode [function]
    749753window.DocumentFragment.prototype.compareDocumentPosition [function]
     754window.DocumentFragment.prototype.contains [function]
    750755window.DocumentFragment.prototype.dispatchEvent [function]
    751756window.DocumentFragment.prototype.hasAttributes [function]
     
    788793window.DocumentType.prototype.cloneNode [function]
    789794window.DocumentType.prototype.compareDocumentPosition [function]
     795window.DocumentType.prototype.contains [function]
    790796window.DocumentType.prototype.dispatchEvent [function]
    791797window.DocumentType.prototype.hasAttributes [function]
     
    892898window.Entity.prototype.cloneNode [function]
    893899window.Entity.prototype.compareDocumentPosition [function]
     900window.Entity.prototype.contains [function]
    894901window.Entity.prototype.dispatchEvent [function]
    895902window.Entity.prototype.hasAttributes [function]
     
    930937window.EntityReference.prototype.cloneNode [function]
    931938window.EntityReference.prototype.compareDocumentPosition [function]
     939window.EntityReference.prototype.contains [function]
    932940window.EntityReference.prototype.dispatchEvent [function]
    933941window.EntityReference.prototype.hasAttributes [function]
     
    13281336window.Node.prototype.cloneNode [function]
    13291337window.Node.prototype.compareDocumentPosition [function]
     1338window.Node.prototype.contains [function]
    13301339window.Node.prototype.dispatchEvent [function]
    13311340window.Node.prototype.hasAttributes [function]
  • trunk/Source/WebCore/ChangeLog

    r94780 r94781  
     12011-09-08  Erik Arvidsson  <arv@chromium.org>
     2
     3        Move Element.contains to Node
     4        https://bugs.webkit.org/show_bug.cgi?id=67651
     5
     6        Reviewed by Darin Adler.
     7
     8        This moves the contains method from Element to Node as in the DOM4 working draft:
     9        http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-node-contains
     10
     11        This also special cases Document contains to make it O(1) instead of O(depth).
     12
     13        Tests: fast/dom/Node/contains-method.html
     14               perf/document-contains.html
     15
     16        * dom/Element.idl:
     17        * dom/Node.cpp:
     18        (WebCore::Node::contains): Added document special case.
     19        * dom/Node.idl:
     20        * editing/DeleteSelectionCommand.cpp:
     21        (WebCore::DeleteSelectionCommand::mergeParagraphs): Added a null check.
     22
    1232011-09-08  Chris Rogers  <crogers@google.com>
    224
  • trunk/Source/WebCore/dom/Element.idl

    r92576 r94781  
    8585        void blur();
    8686        void scrollIntoView(in [Optional] boolean alignWithTop);
    87 
    88         // IE extensions
    89 
    90         boolean contains(in [Optional=CallWithDefaultValue] Element element);
    9187
    9288        // WebKit extensions
  • trunk/Source/WebCore/dom/Node.cpp

    r94659 r94781  
    13391339    if (!node)
    13401340        return false;
     1341    if (document() == this)
     1342        return node->document() == this && node->inDocument();
    13411343    return this == node || node->isDescendantOf(this);
    13421344}
  • trunk/Source/WebCore/dom/Node.idl

    r92433 r94781  
    119119        unsigned short     compareDocumentPosition(in [Optional=CallWithDefaultValue] Node other);
    120120
     121        // Introduced in DOM4
     122        boolean contains(in [Optional=CallWithDefaultValue] Node other);
     123
    121124#if 0
    122125        DOMObject          getFeature(in DOMString feature,
  • trunk/Source/WebCore/editing/DeleteSelectionCommand.cpp

    r93134 r94781  
    606606    // move, so just remove it.
    607607    Element* endBlock = static_cast<Element*>(enclosingBlock(m_downstreamEnd.deprecatedNode()));
    608     if (!startOfParagraphToMove.deepEquivalent().deprecatedNode() || !endBlock->contains(startOfParagraphToMove.deepEquivalent().deprecatedNode())) {
     608    if (!endBlock || !endBlock->contains(startOfParagraphToMove.deepEquivalent().deprecatedNode()) || !startOfParagraphToMove.deepEquivalent().deprecatedNode()) {
    609609        removeNode(enclosingBlock(m_downstreamEnd.deprecatedNode()));
    610610        return;
Note: See TracChangeset for help on using the changeset viewer.