Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(413)

Side by Side Diff: third_party/WebKit/Source/core/editing/VisibleUnitsTest.cpp

Issue 1404423005: Make most{Backward,Forward}CaretPosition() to handle first-letter pseudo element (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 2015-11-02T14:06:55 Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698