Chromium Code Reviews| Index: third_party/WebKit/Source/core/dom/RangeTest.cpp |
| diff --git a/third_party/WebKit/Source/core/dom/RangeTest.cpp b/third_party/WebKit/Source/core/dom/RangeTest.cpp |
| index 7ae205521ee296e463e1b17d26021359b859acb5..5b8085c8887f165a9651ff6c9ecb0d72eb8dcde3 100644 |
| --- a/third_party/WebKit/Source/core/dom/RangeTest.cpp |
| +++ b/third_party/WebKit/Source/core/dom/RangeTest.cpp |
| @@ -8,6 +8,8 @@ |
| #include "core/dom/Element.h" |
| #include "core/dom/NodeList.h" |
| #include "core/dom/Text.h" |
| +#include "core/editing/FrameSelection.h" |
|
yosin_UTC9
2016/08/19 06:02:43
nit: RangeTest.cpp should not include files in "in
Xiaocheng
2016/08/19 06:37:45
Whoops, I forgot to remove them.
|
| +#include "core/frame/LocalFrame.h" |
| #include "core/html/HTMLBodyElement.h" |
| #include "core/html/HTMLDocument.h" |
| #include "core/html/HTMLElement.h" |
| @@ -155,4 +157,48 @@ TEST_F(RangeTest, updateOwnerDocumentIfNeeded) |
| EXPECT_EQ(1, range->endOffset()); |
| } |
| +// Regression test for crbug.com/639184 |
| +TEST_F(RangeTest, NotMarkedValidByIrrelevantTextInsert) |
| +{ |
| + document().body()->setInnerHTML("<div><span id=span1>foo</span>bar<span id=span2>baz</span></div>", ASSERT_NO_EXCEPTION); |
| + |
| + Element* div = document().querySelector("div"); |
| + Element* span1 = document().getElementById("span1"); |
| + Element* span2 = document().getElementById("span2"); |
| + Text* text = toText(div->childNodes()->item(1)); |
| + |
| + Range* range = Range::create(document(), span2, 0, div, 3); |
| + |
| + div->removeChild(span1, ASSERT_NO_EXCEPTION); |
| + text->insertData(0, "bar", ASSERT_NO_EXCEPTION); |
| + |
| + EXPECT_TRUE(range->boundaryPointsValid()); |
| + EXPECT_EQ(span2, range->startContainer()); |
| + EXPECT_EQ(0, range->startOffset()); |
| + EXPECT_EQ(div, range->endContainer()); |
| + EXPECT_EQ(2, range->endOffset()); |
| +} |
| + |
| +// Regression test for crbug.com/639184 |
| +TEST_F(RangeTest, NotMarkedValidByIrrelevantTextRemove) |
| +{ |
| + document().body()->setInnerHTML("<div><span id=span1>foofoo</span>bar<span id=span2>baz</span></div>", ASSERT_NO_EXCEPTION); |
| + |
| + Element* div = document().querySelector("div"); |
| + Element* span1 = document().getElementById("span1"); |
| + Element* span2 = document().getElementById("span2"); |
| + Text* text = toText(div->childNodes()->item(1)); |
| + |
| + Range* range = Range::create(document(), span2, 0, div, 3); |
| + |
| + div->removeChild(span1, ASSERT_NO_EXCEPTION); |
| + text->deleteData(0, 3, ASSERT_NO_EXCEPTION); |
| + |
| + EXPECT_TRUE(range->boundaryPointsValid()); |
| + EXPECT_EQ(span2, range->startContainer()); |
| + EXPECT_EQ(0, range->startOffset()); |
| + EXPECT_EQ(div, range->endContainer()); |
| + EXPECT_EQ(2, range->endOffset()); |
| +} |
| + |
| } // namespace blink |