| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "core/html/HTMLTextFormControlElement.h" | 5 #include "core/html/HTMLTextFormControlElement.h" |
| 6 | 6 |
| 7 #include "core/dom/Document.h" | 7 #include "core/dom/Document.h" |
| 8 #include "core/dom/Text.h" | 8 #include "core/dom/Text.h" |
| 9 #include "core/editing/FrameSelection.h" | 9 #include "core/editing/FrameSelection.h" |
| 10 #include "core/editing/Position.h" | 10 #include "core/editing/Position.h" |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 122 EXPECT_EQ(startLayoutCount, layoutCount()); | 122 EXPECT_EQ(startLayoutCount, layoutCount()); |
| 123 newCaretRect = LayoutRect(frameSelection.absoluteCaretBounds()); | 123 newCaretRect = LayoutRect(frameSelection.absoluteCaretBounds()); |
| 124 EXPECT_NE(oldCaretRect, newCaretRect); | 124 EXPECT_NE(oldCaretRect, newCaretRect); |
| 125 } | 125 } |
| 126 | 126 |
| 127 typedef Position (*PositionFunction)(const Position&); | 127 typedef Position (*PositionFunction)(const Position&); |
| 128 typedef VisiblePosition(*VisblePositionFunction)(const VisiblePosition&); | 128 typedef VisiblePosition(*VisblePositionFunction)(const VisiblePosition&); |
| 129 | 129 |
| 130 void testFunctionEquivalence(const Position& position, PositionFunction position
Function, VisblePositionFunction visibleFunction) | 130 void testFunctionEquivalence(const Position& position, PositionFunction position
Function, VisblePositionFunction visibleFunction) |
| 131 { | 131 { |
| 132 VisiblePosition visiblePosition = createVisiblePositionDeprecated(position); | 132 VisiblePosition visiblePosition = createVisiblePosition(position); |
| 133 VisiblePosition expected = visibleFunction(visiblePosition); | 133 VisiblePosition expected = visibleFunction(visiblePosition); |
| 134 VisiblePosition actual = createVisiblePositionDeprecated(positionFunction(po
sition)); | 134 VisiblePosition actual = createVisiblePosition(positionFunction(position)); |
| 135 EXPECT_EQ(expected.deepEquivalent(), actual.deepEquivalent()); | 135 EXPECT_EQ(expected.deepEquivalent(), actual.deepEquivalent()); |
| 136 } | 136 } |
| 137 | 137 |
| 138 static VisiblePosition startOfWord(const VisiblePosition& position) | 138 static VisiblePosition startOfWord(const VisiblePosition& position) |
| 139 { | 139 { |
| 140 return startOfWord(position, LeftWordIfOnBoundary); | 140 return startOfWord(position, LeftWordIfOnBoundary); |
| 141 } | 141 } |
| 142 | 142 |
| 143 static VisiblePosition endOfWord(const VisiblePosition& position) | 143 static VisiblePosition endOfWord(const VisiblePosition& position) |
| 144 { | 144 { |
| 145 return endOfWord(position, RightWordIfOnBoundary); | 145 return endOfWord(position, RightWordIfOnBoundary); |
| 146 } | 146 } |
| 147 | 147 |
| 148 void testBoundary(Document& document, HTMLTextFormControlElement& textControl) | 148 void testBoundary(Document& document, HTMLTextFormControlElement& textControl) |
| 149 { | 149 { |
| 150 document.updateStyleAndLayout(); |
| 150 for (unsigned i = 0; i < textControl.innerEditorValue().length(); i++) { | 151 for (unsigned i = 0; i < textControl.innerEditorValue().length(); i++) { |
| 151 textControl.setSelectionRange(i, i); | 152 textControl.setSelectionRange(i, i); |
| 152 Position position = document.frame()->selection().start(); | 153 Position position = document.frame()->selection().start(); |
| 153 SCOPED_TRACE(::testing::Message() << "offset " << position.computeEditin
gOffset() << " of " << nodePositionAsStringForTesting(position.anchorNode()).asc
ii().data()); | 154 SCOPED_TRACE(::testing::Message() << "offset " << position.computeEditin
gOffset() << " of " << nodePositionAsStringForTesting(position.anchorNode()).asc
ii().data()); |
| 154 { | 155 { |
| 155 SCOPED_TRACE("HTMLTextFormControlElement::startOfWord"); | 156 SCOPED_TRACE("HTMLTextFormControlElement::startOfWord"); |
| 156 testFunctionEquivalence(position, HTMLTextFormControlElement::startO
fWord, startOfWord); | 157 testFunctionEquivalence(position, HTMLTextFormControlElement::startO
fWord, startOfWord); |
| 157 } | 158 } |
| 158 { | 159 { |
| 159 SCOPED_TRACE("HTMLTextFormControlElement::endOfWord"); | 160 SCOPED_TRACE("HTMLTextFormControlElement::endOfWord"); |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 218 | 219 |
| 219 TEST_F(HTMLTextFormControlElementTest, IndexForPosition) | 220 TEST_F(HTMLTextFormControlElementTest, IndexForPosition) |
| 220 { | 221 { |
| 221 HTMLInputElement* input = toHTMLInputElement(document().getElementById("inpu
t")); | 222 HTMLInputElement* input = toHTMLInputElement(document().getElementById("inpu
t")); |
| 222 input->setValue("Hello"); | 223 input->setValue("Hello"); |
| 223 HTMLElement* innerEditor = input->innerEditorElement(); | 224 HTMLElement* innerEditor = input->innerEditorElement(); |
| 224 EXPECT_EQ(5, HTMLTextFormControlElement::indexForPosition(innerEditor, Posit
ion(innerEditor, PositionAnchorType::AfterAnchor))); | 225 EXPECT_EQ(5, HTMLTextFormControlElement::indexForPosition(innerEditor, Posit
ion(innerEditor, PositionAnchorType::AfterAnchor))); |
| 225 } | 226 } |
| 226 | 227 |
| 227 } // namespace blink | 228 } // namespace blink |
| OLD | NEW |