Changeset 67618 in webkit


Ignore:
Timestamp:
Sep 16, 2010 8:05:58 AM (14 years ago)
Author:
ap@apple.com
Message:

2010-09-16 Alexey Proskuryakov <ap@apple.com>

Reviewed by Adam Barth.

https://bugs.webkit.org/show_bug.cgi?id=45852
Range::selectNode and selectNodeContents misbehave when argument is in another document

  • fast/dom/Range/select-node-different-document-expected.txt: Added.
  • fast/dom/Range/select-node-different-document.html: Added.

2010-09-16 Alexey Proskuryakov <ap@apple.com>

Reviewed by Adam Barth.

https://bugs.webkit.org/show_bug.cgi?id=45852
Range::selectNode and selectNodeContents misbehave when argument is in another document

Test: fast/dom/Range/select-node-different-document.html

There is nothing in DOM Traversal spec that says this shouldn't work, and it does work in
Firefox.

  • dom/Range.cpp: (WebCore::Range::setDocument): (WebCore::Range::selectNode): (WebCore::Range::selectNodeContents):
  • dom/Range.h:
Location:
trunk
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r67617 r67618  
     12010-09-16  Alexey Proskuryakov  <ap@apple.com>
     2
     3        Reviewed by Adam Barth.
     4
     5        https://bugs.webkit.org/show_bug.cgi?id=45852
     6        Range::selectNode and selectNodeContents misbehave when argument is in another document
     7
     8        * fast/dom/Range/select-node-different-document-expected.txt: Added.
     9        * fast/dom/Range/select-node-different-document.html: Added.
     10
    1112010-09-16  Satish Sampath  <satish@chromium.org>
    212
  • trunk/WebCore/ChangeLog

    r67615 r67618  
     12010-09-16  Alexey Proskuryakov  <ap@apple.com>
     2
     3        Reviewed by Adam Barth.
     4
     5        https://bugs.webkit.org/show_bug.cgi?id=45852
     6        Range::selectNode and selectNodeContents misbehave when argument is in another document
     7
     8        Test: fast/dom/Range/select-node-different-document.html
     9
     10        There is nothing in DOM Traversal spec that says this shouldn't work, and it does work in
     11        Firefox.
     12
     13        * dom/Range.cpp:
     14        (WebCore::Range::setDocument):
     15        (WebCore::Range::selectNode):
     16        (WebCore::Range::selectNodeContents):
     17        * dom/Range.h:
     18
    1192010-09-16  Andrey Kosyakov  <caseq@chromium.org>
    220
  • trunk/WebCore/dom/Range.cpp

    r65372 r67618  
    106106    rangeCounter.decrement();
    107107#endif
     108}
     109
     110void Range::setDocument(Document* document)
     111{
     112    ASSERT(m_ownerDocument != document);
     113    if (m_ownerDocument)
     114        m_ownerDocument->detachRange(this);
     115    m_ownerDocument = document;
     116    m_start.setToStartOfNode(document);
     117    m_end.setToStartOfNode(document);
     118    m_ownerDocument->attachRange(this);
    108119}
    109120
     
    13171328    }
    13181329
     1330    if (m_ownerDocument != refNode->document())
     1331        setDocument(refNode->document());
     1332
    13191333    ec = 0;
    13201334    setStartBefore(refNode, ec);
     
    13591373    }
    13601374
     1375    if (m_ownerDocument != refNode->document())
     1376        setDocument(refNode->document());
     1377
    13611378    m_start.setToStartOfNode(refNode);
    13621379    m_end.setToEndOfNode(refNode);
  • trunk/WebCore/dom/Range.h

    r59098 r67618  
    136136    Range(PassRefPtr<Document>, PassRefPtr<Node> startContainer, int startOffset, PassRefPtr<Node> endContainer, int endOffset);
    137137
     138    void setDocument(Document*);
     139
    138140    Node* checkNodeWOffset(Node*, int offset, ExceptionCode&) const;
    139141    void checkNodeBA(Node*, ExceptionCode&) const;
Note: See TracChangeset for help on using the changeset viewer.