Chromium Code Reviews| Index: third_party/WebKit/Source/core/editing/EphemeralRangeTest.cpp |
| diff --git a/third_party/WebKit/Source/core/editing/EphemeralRangeTest.cpp b/third_party/WebKit/Source/core/editing/EphemeralRangeTest.cpp |
| index fe6bc1115e6861bef28187d856c7e06a0aeb23eb..79f7f4b6a06be2b026947e83cd32f919729fbeee 100644 |
| --- a/third_party/WebKit/Source/core/editing/EphemeralRangeTest.cpp |
| +++ b/third_party/WebKit/Source/core/editing/EphemeralRangeTest.cpp |
| @@ -18,6 +18,10 @@ class EphemeralRangeTest : public EditingTestBase { |
| template <typename Strategy> |
| std::string traverseRange(const EphemeralRangeTemplate<Strategy>&) const; |
| + template <typename Strategy> |
| + std::string commonAncesstorNode( |
| + const EphemeralRangeTemplate<Strategy>&) const; |
| + |
| Range* getBodyRange() const; |
| }; |
| @@ -48,6 +52,16 @@ Range* EphemeralRangeTest::getBodyRange() const { |
| return range; |
| } |
| +template <typename Strategy> |
| +std::string EphemeralRangeTest::commonAncesstorNode( |
| + const EphemeralRangeTemplate<Strategy>& range) const { |
| + std::stringstream nodesContent; |
| + |
| + nodesContent << "[" << *range.commonAncestorContainer() << "]"; |
| + |
| + return nodesContent.str(); |
| +} |
| + |
| // Tests that |EphemeralRange::nodes()| will traverse the whole range exactly as |
| // |for (Node* n = firstNode(); n != pastLastNode(); n = Traversal::next(*n))| |
| // does. |
| @@ -148,4 +162,31 @@ TEST_F(EphemeralRangeTest, traversalEmptyRanges) { |
| singlePositionRange.endPosition().nodeAsRangePastLastNode()); |
| } |
| +TEST_F(EphemeralRangeTest, commonAncesstor) { |
|
Xiaocheng
2017/03/02 20:00:16
Each test case is supposed to be minimized.
So, w
tanvir
2017/03/04 13:55:31
Separate test cases for DOM and Flat tree is added
|
| + const char* bodyContent = |
| + "<p id='host'><b id='one'></b><input type='text' " |
|
Xiaocheng
2017/03/02 20:00:16
Hmm... I don't like the existing test cases at all
tanvir
2017/03/04 13:55:31
New HTML used.
|
| + "value='some'><span " |
| + "id='two'></p>"; |
| + |
| + setBodyContent(bodyContent); |
| + |
| + Range* range = getBodyRange(); |
| + range->setStart(document().getElementById("one"), 0, |
| + IGNORE_EXCEPTION_FOR_TESTING); |
| + |
| + // Range* endPos = getBodyRange(); |
| + range->setEnd(document().getElementById("two"), 0, |
| + IGNORE_EXCEPTION_FOR_TESTING); |
| + |
| + const EphemeralRange ephemeralRange(range->startPosition(), |
| + range->endPosition()); |
| + EXPECT_EQ("[P id=\"host\"]", commonAncesstorNode<>(ephemeralRange)); |
|
Xiaocheng
2017/03/02 20:00:16
There's no need to do string comparison, as there
tanvir
2017/03/04 13:55:31
Done!!
|
| + |
| + // CommonAncesstorCotainer for FlatTree |
| + EXPECT_EQ("[P id=\"host\"]", |
|
Xiaocheng
2017/03/02 20:00:16
For the test case for flat tree, to make the test
tanvir
2017/03/04 13:55:31
Taken care of this scenario. This tree is returnin
|
| + commonAncesstorNode(EphemeralRangeInFlatTree( |
| + toPositionInFlatTree(range->startPosition()), |
| + toPositionInFlatTree(range->endPosition())))); |
| +} |
| + |
| } // namespace blink |