OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "config.h" | 5 #include "config.h" |
6 #include "core/editing/VisibleUnits.h" | 6 #include "core/editing/VisibleUnits.h" |
7 | 7 |
8 #include "core/dom/Text.h" | 8 #include "core/dom/Text.h" |
9 #include "core/editing/EditingTestBase.h" | 9 #include "core/editing/EditingTestBase.h" |
10 #include "core/editing/VisiblePosition.h" | 10 #include "core/editing/VisiblePosition.h" |
(...skipping 744 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
755 setBodyContent(bodyContent); | 755 setBodyContent(bodyContent); |
756 setShadowContent(shadowContent, "host"); | 756 setShadowContent(shadowContent, "host"); |
757 updateLayoutAndStyleForPainting(); | 757 updateLayoutAndStyleForPainting(); |
758 | 758 |
759 RefPtrWillBeRawPtr<Element> host = document().getElementById("host"); | 759 RefPtrWillBeRawPtr<Element> host = document().getElementById("host"); |
760 | 760 |
761 EXPECT_EQ(Position::lastPositionInNode(host.get()), mostForwardCaretPosition
(Position::afterNode(host.get()))); | 761 EXPECT_EQ(Position::lastPositionInNode(host.get()), mostForwardCaretPosition
(Position::afterNode(host.get()))); |
762 EXPECT_EQ(PositionInComposedTree::lastPositionInNode(host.get()), mostForwar
dCaretPosition(PositionInComposedTree::afterNode(host.get()))); | 762 EXPECT_EQ(PositionInComposedTree::lastPositionInNode(host.get()), mostForwar
dCaretPosition(PositionInComposedTree::afterNode(host.get()))); |
763 } | 763 } |
764 | 764 |
| 765 TEST_F(VisibleUnitsTest, mostBackwardCaretPositionFirstLetter) |
| 766 { |
| 767 // Note: first-letter pseudo element contains letter and punctuations. |
| 768 const char* bodyContent = "<style>p:first-letter {color:red;}</style><p id=s
ample> (2)45 </p>"; |
| 769 setBodyContent(bodyContent); |
| 770 updateLayoutAndStyleForPainting(); |
| 771 |
| 772 Node* sample = document().getElementById("sample")->firstChild(); |
| 773 |
| 774 EXPECT_EQ(Position(sample->parentNode(), 0), mostBackwardCaretPosition(Posit
ion(sample, 0))); |
| 775 EXPECT_EQ(Position(sample->parentNode(), 0), mostBackwardCaretPosition(Posit
ion(sample, 1))); |
| 776 EXPECT_EQ(Position(sample, 2), mostBackwardCaretPosition(Position(sample, 2)
)); |
| 777 EXPECT_EQ(Position(sample, 3), mostBackwardCaretPosition(Position(sample, 3)
)); |
| 778 EXPECT_EQ(Position(sample, 4), mostBackwardCaretPosition(Position(sample, 4)
)); |
| 779 EXPECT_EQ(Position(sample, 5), mostBackwardCaretPosition(Position(sample, 5)
)); |
| 780 EXPECT_EQ(Position(sample, 6), mostBackwardCaretPosition(Position(sample, 6)
)); |
| 781 EXPECT_EQ(Position(sample, 6), mostBackwardCaretPosition(Position(sample, 7)
)); |
| 782 EXPECT_EQ(Position(sample, 6), mostBackwardCaretPosition(Position::lastPosit
ionInNode(sample->parentNode()))); |
| 783 EXPECT_EQ(Position(sample, 6), mostBackwardCaretPosition(Position::afterNode
(sample->parentNode()))); |
| 784 EXPECT_EQ(Position::lastPositionInNode(document().body()), mostBackwardCaret
Position(Position::lastPositionInNode(document().body()))); |
| 785 } |
| 786 |
765 TEST_F(VisibleUnitsTest, mostForwardCaretPositionAfterAnchor) | 787 TEST_F(VisibleUnitsTest, mostForwardCaretPositionAfterAnchor) |
766 { | 788 { |
767 const char* bodyContent = "<p id='host'><b id='one'>1</b></p>"; | 789 const char* bodyContent = "<p id='host'><b id='one'>1</b></p>"; |
768 const char* shadowContent = "<b id='two'>22</b><content select=#one></conten
t><b id='three'>333</b>"; | 790 const char* shadowContent = "<b id='two'>22</b><content select=#one></conten
t><b id='three'>333</b>"; |
769 setBodyContent(bodyContent); | 791 setBodyContent(bodyContent); |
770 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = setShadowContent(shadowContent,
"host"); | 792 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = setShadowContent(shadowContent,
"host"); |
771 updateLayoutAndStyleForPainting(); | 793 updateLayoutAndStyleForPainting(); |
772 | 794 |
773 RefPtrWillBeRawPtr<Element> host = document().getElementById("host"); | 795 RefPtrWillBeRawPtr<Element> host = document().getElementById("host"); |
774 RefPtrWillBeRawPtr<Element> one = document().getElementById("one"); | 796 RefPtrWillBeRawPtr<Element> one = document().getElementById("one"); |
775 RefPtrWillBeRawPtr<Element> three = shadowRoot->getElementById("three"); | 797 RefPtrWillBeRawPtr<Element> three = shadowRoot->getElementById("three"); |
776 | 798 |
777 EXPECT_EQ(Position(one->firstChild(), 1), mostBackwardCaretPosition(Position
::afterNode(host.get()))); | 799 EXPECT_EQ(Position(one->firstChild(), 1), mostBackwardCaretPosition(Position
::afterNode(host.get()))); |
778 EXPECT_EQ(PositionInComposedTree(three->firstChild(), 3), mostBackwardCaretP
osition(PositionInComposedTree::afterNode(host.get()))); | 800 EXPECT_EQ(PositionInComposedTree(three->firstChild(), 3), mostBackwardCaretP
osition(PositionInComposedTree::afterNode(host.get()))); |
779 } | 801 } |
780 | 802 |
| 803 TEST_F(VisibleUnitsTest, mostForwardCaretPositionFirstLetter) |
| 804 { |
| 805 // Note: first-letter pseudo element contains letter and punctuations. |
| 806 const char* bodyContent = "<style>p:first-letter {color:red;}</style><p id=s
ample> (2)45 </p>"; |
| 807 setBodyContent(bodyContent); |
| 808 updateLayoutAndStyleForPainting(); |
| 809 |
| 810 Node* sample = document().getElementById("sample")->firstChild(); |
| 811 |
| 812 EXPECT_EQ(Position(document().body(), 0), mostForwardCaretPosition(Position:
:firstPositionInNode(document().body()))); |
| 813 EXPECT_EQ(Position(sample, 1), mostForwardCaretPosition(Position::beforeNode
(sample->parentNode()))); |
| 814 EXPECT_EQ(Position(sample, 1), mostForwardCaretPosition(Position::firstPosit
ionInNode(sample->parentNode()))); |
| 815 EXPECT_EQ(Position(sample, 1), mostForwardCaretPosition(Position(sample, 0))
); |
| 816 EXPECT_EQ(Position(sample, 1), mostForwardCaretPosition(Position(sample, 1))
); |
| 817 EXPECT_EQ(Position(sample, 2), mostForwardCaretPosition(Position(sample, 2))
); |
| 818 EXPECT_EQ(Position(sample, 3), mostForwardCaretPosition(Position(sample, 3))
); |
| 819 EXPECT_EQ(Position(sample, 4), mostForwardCaretPosition(Position(sample, 4))
); |
| 820 EXPECT_EQ(Position(sample, 5), mostForwardCaretPosition(Position(sample, 5))
); |
| 821 EXPECT_EQ(Position(sample, 7), mostForwardCaretPosition(Position(sample, 6))
); |
| 822 EXPECT_EQ(Position(sample, 7), mostForwardCaretPosition(Position(sample, 7))
); |
| 823 } |
| 824 |
781 TEST_F(VisibleUnitsTest, nextPositionOf) | 825 TEST_F(VisibleUnitsTest, nextPositionOf) |
782 { | 826 { |
783 const char* bodyContent = "<b id=zero>0</b><p id=host><b id=one>1</b><b id=t
wo>22</b></p><b id=three>333</b>"; | 827 const char* bodyContent = "<b id=zero>0</b><p id=host><b id=one>1</b><b id=t
wo>22</b></p><b id=three>333</b>"; |
784 const char* shadowContent = "<b id=four>4444</b><content select=#two></conte
nt><content select=#one></content><b id=five>55555</b>"; | 828 const char* shadowContent = "<b id=four>4444</b><content select=#two></conte
nt><content select=#one></content><b id=five>55555</b>"; |
785 setBodyContent(bodyContent); | 829 setBodyContent(bodyContent); |
786 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = setShadowContent(shadowContent,
"host"); | 830 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = setShadowContent(shadowContent,
"host"); |
787 updateLayoutAndStyleForPainting(); | 831 updateLayoutAndStyleForPainting(); |
788 | 832 |
789 Element* zero = document().getElementById("zero"); | 833 Element* zero = document().getElementById("zero"); |
790 Element* one = document().getElementById("one"); | 834 Element* one = document().getElementById("one"); |
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1065 EXPECT_EQ(PositionInComposedTree(space, 1), startOfWord(createVisiblePositio
nInComposedTree(*three, 1)).deepEquivalent()); | 1109 EXPECT_EQ(PositionInComposedTree(space, 1), startOfWord(createVisiblePositio
nInComposedTree(*three, 1)).deepEquivalent()); |
1066 | 1110 |
1067 EXPECT_EQ(Position(four, 0), startOfWord(createVisiblePositionInDOMTree(*fou
r, 1)).deepEquivalent()); | 1111 EXPECT_EQ(Position(four, 0), startOfWord(createVisiblePositionInDOMTree(*fou
r, 1)).deepEquivalent()); |
1068 EXPECT_EQ(PositionInComposedTree(four, 0), startOfWord(createVisiblePosition
InComposedTree(*four, 1)).deepEquivalent()); | 1112 EXPECT_EQ(PositionInComposedTree(four, 0), startOfWord(createVisiblePosition
InComposedTree(*four, 1)).deepEquivalent()); |
1069 | 1113 |
1070 EXPECT_EQ(Position(space, 1), startOfWord(createVisiblePositionInDOMTree(*fi
ve, 1)).deepEquivalent()); | 1114 EXPECT_EQ(Position(space, 1), startOfWord(createVisiblePositionInDOMTree(*fi
ve, 1)).deepEquivalent()); |
1071 EXPECT_EQ(PositionInComposedTree(space, 1), startOfWord(createVisiblePositio
nInComposedTree(*five, 1)).deepEquivalent()); | 1115 EXPECT_EQ(PositionInComposedTree(space, 1), startOfWord(createVisiblePositio
nInComposedTree(*five, 1)).deepEquivalent()); |
1072 } | 1116 } |
1073 | 1117 |
1074 } // namespace blink | 1118 } // namespace blink |
OLD | NEW |