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

Unified Diff: ui/gfx/render_text_unittest.cc

Issue 9390022: Simplify handling of BiDi cursor movement (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: make set_selection_start private, fix accidental inclusion of local hacks Created 8 years, 10 months 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 side-by-side diff with in-line comments
Download patch
Index: ui/gfx/render_text_unittest.cc
diff --git a/ui/gfx/render_text_unittest.cc b/ui/gfx/render_text_unittest.cc
index 5f48fd431d437bc637a336f4d6ee4cf4ed1efc6b..8b74784b1d8823e1686d40228502d575d16c0d66 100644
--- a/ui/gfx/render_text_unittest.cc
+++ b/ui/gfx/render_text_unittest.cc
@@ -283,22 +283,16 @@ TEST_F(RenderTextTest, StyleRangesAdjust) {
void RunMoveCursorLeftRightTest(RenderText* render_text,
const std::vector<SelectionModel>& expected,
- bool move_right) {
- for (int i = 0; i < static_cast<int>(expected.size()); ++i) {
- SelectionModel sel = expected[i];
- EXPECT_TRUE(render_text->selection_model().Equals(sel));
- if (move_right)
- render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false);
- else
- render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, false);
+ VisualCursorDirection direction) {
+ for (size_t i = 0; i < expected.size(); ++i) {
+ EXPECT_EQ(expected[i], render_text->selection_model());
+ render_text->MoveCursor(CHARACTER_BREAK, direction, false);
}
-
- SelectionModel sel = expected[expected.size() - 1];
- if (move_right)
- render_text->MoveCursor(LINE_BREAK, CURSOR_RIGHT, false);
- else
- render_text->MoveCursor(LINE_BREAK, CURSOR_LEFT, false);
- EXPECT_TRUE(render_text->selection_model().Equals(sel));
+ // Check that cursoring is clamped at the line edge.
+ EXPECT_EQ(expected.back(), render_text->selection_model());
+ // Check that it is the line edge.
+ render_text->MoveCursor(LINE_BREAK, direction, false);
+ EXPECT_EQ(expected.back(), render_text->selection_model());
}
TEST_F(RenderTextTest, MoveCursorLeftRightInLtr) {
@@ -309,21 +303,20 @@ TEST_F(RenderTextTest, MoveCursorLeftRightInLtr) {
// |expected| saves the expected SelectionModel when moving cursor from left
// to right.
std::vector<SelectionModel> expected;
- expected.push_back(SelectionModel(0, 0, SelectionModel::LEADING));
- expected.push_back(SelectionModel(1, 0, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(2, 1, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(3, 2, SelectionModel::TRAILING));
- // The last element is to test the clamped line ends.
- expected.push_back(SelectionModel(3, 2, SelectionModel::TRAILING));
- RunMoveCursorLeftRightTest(render_text.get(), expected, true);
+ expected.push_back(SelectionModel(0, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(1, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(2, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(3, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(3, CURSOR_FORWARD));
+ RunMoveCursorLeftRightTest(render_text.get(), expected, CURSOR_RIGHT);
expected.clear();
- expected.push_back(SelectionModel(3, 2, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(2, 2, SelectionModel::LEADING));
- expected.push_back(SelectionModel(1, 1, SelectionModel::LEADING));
- expected.push_back(SelectionModel(0, 0, SelectionModel::LEADING));
- expected.push_back(SelectionModel(0, 0, SelectionModel::LEADING));
- RunMoveCursorLeftRightTest(render_text.get(), expected, false);
+ expected.push_back(SelectionModel(3, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(2, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(1, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(0, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(0, CURSOR_BACKWARD));
+ RunMoveCursorLeftRightTest(render_text.get(), expected, CURSOR_LEFT);
}
TEST_F(RenderTextTest, MoveCursorLeftRightInLtrRtl) {
@@ -332,27 +325,26 @@ TEST_F(RenderTextTest, MoveCursorLeftRightInLtrRtl) {
render_text->SetText(WideToUTF16(L"abc\x05d0\x05d1\x05d2"));
// The last one is the expected END position.
std::vector<SelectionModel> expected;
- expected.push_back(SelectionModel(0, 0, SelectionModel::LEADING));
- expected.push_back(SelectionModel(1, 0, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(2, 1, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(3, 2, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(5, 5, SelectionModel::LEADING));
- expected.push_back(SelectionModel(4, 4, SelectionModel::LEADING));
- expected.push_back(SelectionModel(3, 3, SelectionModel::LEADING));
- expected.push_back(SelectionModel(6, 3, SelectionModel::LEADING));
- expected.push_back(SelectionModel(6, 3, SelectionModel::LEADING));
- RunMoveCursorLeftRightTest(render_text.get(), expected, true);
+ expected.push_back(SelectionModel(0, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(1, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(2, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(3, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(5, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(4, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(3, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(6, CURSOR_FORWARD));
+ RunMoveCursorLeftRightTest(render_text.get(), expected, CURSOR_RIGHT);
expected.clear();
- expected.push_back(SelectionModel(6, 3, SelectionModel::LEADING));
- expected.push_back(SelectionModel(4, 3, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(5, 4, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(6, 5, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(2, 2, SelectionModel::LEADING));
- expected.push_back(SelectionModel(1, 1, SelectionModel::LEADING));
- expected.push_back(SelectionModel(0, 0, SelectionModel::LEADING));
- expected.push_back(SelectionModel(0, 0, SelectionModel::LEADING));
- RunMoveCursorLeftRightTest(render_text.get(), expected, false);
+ expected.push_back(SelectionModel(6, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(4, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(5, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(6, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(2, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(1, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(0, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(0, CURSOR_BACKWARD));
+ RunMoveCursorLeftRightTest(render_text.get(), expected, CURSOR_LEFT);
}
TEST_F(RenderTextTest, MoveCursorLeftRightInLtrRtlLtr) {
@@ -360,20 +352,20 @@ TEST_F(RenderTextTest, MoveCursorLeftRightInLtrRtlLtr) {
// LTR-RTL-LTR.
render_text->SetText(WideToUTF16(L"a"L"\x05d1"L"b"));
std::vector<SelectionModel> expected;
- expected.push_back(SelectionModel(0, 0, SelectionModel::LEADING));
- expected.push_back(SelectionModel(1, 0, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(1, 1, SelectionModel::LEADING));
- expected.push_back(SelectionModel(3, 2, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(3, 2, SelectionModel::TRAILING));
- RunMoveCursorLeftRightTest(render_text.get(), expected, true);
+ expected.push_back(SelectionModel(0, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(1, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(1, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(3, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(3, CURSOR_FORWARD));
+ RunMoveCursorLeftRightTest(render_text.get(), expected, CURSOR_RIGHT);
expected.clear();
- expected.push_back(SelectionModel(3, 2, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(2, 2, SelectionModel::LEADING));
- expected.push_back(SelectionModel(2, 1, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(0, 0, SelectionModel::LEADING));
- expected.push_back(SelectionModel(0, 0, SelectionModel::LEADING));
- RunMoveCursorLeftRightTest(render_text.get(), expected, false);
+ expected.push_back(SelectionModel(3, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(2, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(2, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(0, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(0, CURSOR_BACKWARD));
+ RunMoveCursorLeftRightTest(render_text.get(), expected, CURSOR_LEFT);
}
TEST_F(RenderTextTest, MoveCursorLeftRightInRtl) {
@@ -384,40 +376,36 @@ TEST_F(RenderTextTest, MoveCursorLeftRightInRtl) {
std::vector<SelectionModel> expected;
#if defined(OS_LINUX)
- expected.push_back(SelectionModel(0, 0, SelectionModel::LEADING));
+ expected.push_back(SelectionModel(0, CURSOR_BACKWARD));
#else
- expected.push_back(SelectionModel(3, 0, SelectionModel::LEADING));
+ expected.push_back(SelectionModel(3, CURSOR_FORWARD));
#endif
- expected.push_back(SelectionModel(1, 0, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(2, 1, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(3, 2, SelectionModel::TRAILING));
+ expected.push_back(SelectionModel(1, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(2, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(3, CURSOR_BACKWARD));
#if defined(OS_LINUX)
- expected.push_back(SelectionModel(3, 2, SelectionModel::TRAILING));
+ expected.push_back(SelectionModel(3, CURSOR_FORWARD));
#else
- expected.push_back(SelectionModel(0, 2, SelectionModel::TRAILING));
- // TODO(xji): expected (0, 2, TRAILING), actual (3, 0, LEADING).
- // cursor moves from leftmost to rightmost.
- // expected.push_back(SelectionModel(0, 2, SelectionModel::TRAILING));
+ expected.push_back(SelectionModel(0, CURSOR_BACKWARD));
#endif
- RunMoveCursorLeftRightTest(render_text.get(), expected, false);
+ RunMoveCursorLeftRightTest(render_text.get(), expected, CURSOR_LEFT);
expected.clear();
#if defined(OS_LINUX)
- expected.push_back(SelectionModel(3, 2, SelectionModel::TRAILING));
+ expected.push_back(SelectionModel(3, CURSOR_FORWARD));
#else
- expected.push_back(SelectionModel(0, 2, SelectionModel::TRAILING));
+ expected.push_back(SelectionModel(0, CURSOR_BACKWARD));
#endif
- expected.push_back(SelectionModel(2, 2, SelectionModel::LEADING));
- expected.push_back(SelectionModel(1, 1, SelectionModel::LEADING));
- expected.push_back(SelectionModel(0, 0, SelectionModel::LEADING));
+ expected.push_back(SelectionModel(2, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(1, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(0, CURSOR_FORWARD));
#if defined(OS_LINUX)
- expected.push_back(SelectionModel(0, 0, SelectionModel::LEADING));
+ expected.push_back(SelectionModel(0, CURSOR_BACKWARD));
#else
- expected.push_back(SelectionModel(3, 0, SelectionModel::LEADING));
- expected.push_back(SelectionModel(3, 0, SelectionModel::LEADING));
+ expected.push_back(SelectionModel(3, CURSOR_FORWARD));
#endif
- RunMoveCursorLeftRightTest(render_text.get(), expected, true);
+ RunMoveCursorLeftRightTest(render_text.get(), expected, CURSOR_RIGHT);
}
TEST_F(RenderTextTest, MoveCursorLeftRightInRtlLtr) {
@@ -427,52 +415,47 @@ TEST_F(RenderTextTest, MoveCursorLeftRightInRtlLtr) {
render_text->MoveCursor(LINE_BREAK, CURSOR_RIGHT, false);
std::vector<SelectionModel> expected;
#if defined(OS_LINUX)
- expected.push_back(SelectionModel(0, 0, SelectionModel::LEADING));
- expected.push_back(SelectionModel(1, 0, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(2, 1, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(3, 2, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(5, 5, SelectionModel::LEADING));
- expected.push_back(SelectionModel(4, 4, SelectionModel::LEADING));
- expected.push_back(SelectionModel(3, 3, SelectionModel::LEADING));
- expected.push_back(SelectionModel(6, 3, SelectionModel::LEADING));
- expected.push_back(SelectionModel(6, 3, SelectionModel::LEADING));
+ expected.push_back(SelectionModel(0, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(1, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(2, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(3, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(5, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(4, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(3, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(6, CURSOR_FORWARD));
#else
- expected.push_back(SelectionModel(6, 5, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(5, 5, SelectionModel::LEADING));
- expected.push_back(SelectionModel(4, 4, SelectionModel::LEADING));
- expected.push_back(SelectionModel(3, 3, SelectionModel::LEADING));
- expected.push_back(SelectionModel(1, 0, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(2, 1, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(3, 2, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(0, 2, SelectionModel::TRAILING));
- // TODO(xji): expected (0, 2, TRAILING), actual (3, 0, LEADING).
- // cursor moves from leftmost to middle.
- // expected.push_back(SelectionModel(0, 2, SelectionModel::TRAILING));
+ expected.push_back(SelectionModel(6, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(5, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(4, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(3, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(1, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(2, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(3, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(0, CURSOR_BACKWARD));
#endif
- RunMoveCursorLeftRightTest(render_text.get(), expected, false);
+ RunMoveCursorLeftRightTest(render_text.get(), expected, CURSOR_LEFT);
expected.clear();
#if defined(OS_LINUX)
- expected.push_back(SelectionModel(6, 3, SelectionModel::LEADING));
- expected.push_back(SelectionModel(4, 3, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(5, 4, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(6, 5, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(2, 2, SelectionModel::LEADING));
- expected.push_back(SelectionModel(1, 1, SelectionModel::LEADING));
- expected.push_back(SelectionModel(0, 0, SelectionModel::LEADING));
- expected.push_back(SelectionModel(0, 0, SelectionModel::LEADING));
+ expected.push_back(SelectionModel(6, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(4, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(5, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(6, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(2, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(1, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(0, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(0, CURSOR_BACKWARD));
#else
- expected.push_back(SelectionModel(0, 2, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(2, 2, SelectionModel::LEADING));
- expected.push_back(SelectionModel(1, 1, SelectionModel::LEADING));
- expected.push_back(SelectionModel(0, 0, SelectionModel::LEADING));
- expected.push_back(SelectionModel(4, 3, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(5, 4, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(6, 5, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(6, 5, SelectionModel::TRAILING));
+ expected.push_back(SelectionModel(0, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(2, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(1, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(0, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(4, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(5, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(6, CURSOR_BACKWARD));
#endif
- RunMoveCursorLeftRightTest(render_text.get(), expected, true);
+ RunMoveCursorLeftRightTest(render_text.get(), expected, CURSOR_RIGHT);
}
TEST_F(RenderTextTest, MoveCursorLeftRightInRtlLtrRtl) {
@@ -482,39 +465,35 @@ TEST_F(RenderTextTest, MoveCursorLeftRightInRtlLtrRtl) {
render_text->MoveCursor(LINE_BREAK, CURSOR_RIGHT, false);
std::vector<SelectionModel> expected;
#if defined(OS_LINUX)
- expected.push_back(SelectionModel(0, 0, SelectionModel::LEADING));
- expected.push_back(SelectionModel(1, 0, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(1, 1, SelectionModel::LEADING));
- expected.push_back(SelectionModel(3, 2, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(3, 2, SelectionModel::TRAILING));
+ expected.push_back(SelectionModel(0, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(1, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(1, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(3, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(3, CURSOR_FORWARD));
#else
- expected.push_back(SelectionModel(3, 2, SelectionModel::LEADING));
- expected.push_back(SelectionModel(3, 2, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(1, 1, SelectionModel::LEADING));
- expected.push_back(SelectionModel(1, 0, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(0, 0, SelectionModel::TRAILING));
- // TODO(xji): expected (0, 0, TRAILING), actual (2, 1, LEADING).
- // cursor moves from leftmost to middle.
- // expected.push_back(SelectionModel(0, 0, SelectionModel::TRAILING));
+ expected.push_back(SelectionModel(3, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(3, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(1, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(1, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(0, CURSOR_BACKWARD));
#endif
- RunMoveCursorLeftRightTest(render_text.get(), expected, false);
+ RunMoveCursorLeftRightTest(render_text.get(), expected, CURSOR_LEFT);
expected.clear();
#if defined(OS_LINUX)
- expected.push_back(SelectionModel(3, 2, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(2, 2, SelectionModel::LEADING));
- expected.push_back(SelectionModel(2, 1, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(0, 0, SelectionModel::LEADING));
- expected.push_back(SelectionModel(0, 0, SelectionModel::LEADING));
+ expected.push_back(SelectionModel(3, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(2, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(2, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(0, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(0, CURSOR_BACKWARD));
#else
- expected.push_back(SelectionModel(0, 0, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(0, 0, SelectionModel::LEADING));
- expected.push_back(SelectionModel(2, 1, SelectionModel::TRAILING));
- expected.push_back(SelectionModel(2, 2, SelectionModel::LEADING));
- expected.push_back(SelectionModel(3, 2, SelectionModel::LEADING));
- expected.push_back(SelectionModel(3, 2, SelectionModel::LEADING));
+ expected.push_back(SelectionModel(0, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(0, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(2, CURSOR_BACKWARD));
+ expected.push_back(SelectionModel(2, CURSOR_FORWARD));
+ expected.push_back(SelectionModel(3, CURSOR_FORWARD));
#endif
- RunMoveCursorLeftRightTest(render_text.get(), expected, true);
+ RunMoveCursorLeftRightTest(render_text.get(), expected, CURSOR_RIGHT);
}
// TODO(xji): temporarily disable in platform Win since the complex script
@@ -525,24 +504,24 @@ TEST_F(RenderTextTest, MoveCursorLeftRight_ComplexScript) {
scoped_ptr<RenderText> render_text(RenderText::CreateRenderText());
render_text->SetText(WideToUTF16(L"\x0915\x093f\x0915\x094d\x0915"));
- EXPECT_EQ(0U, render_text->GetCursorPosition());
+ EXPECT_EQ(0U, render_text->cursor_position());
render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false);
- EXPECT_EQ(2U, render_text->GetCursorPosition());
+ EXPECT_EQ(2U, render_text->cursor_position());
render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false);
- EXPECT_EQ(4U, render_text->GetCursorPosition());
+ EXPECT_EQ(4U, render_text->cursor_position());
render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false);
- EXPECT_EQ(5U, render_text->GetCursorPosition());
+ EXPECT_EQ(5U, render_text->cursor_position());
render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false);
- EXPECT_EQ(5U, render_text->GetCursorPosition());
+ EXPECT_EQ(5U, render_text->cursor_position());
render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, false);
- EXPECT_EQ(4U, render_text->GetCursorPosition());
+ EXPECT_EQ(4U, render_text->cursor_position());
render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, false);
- EXPECT_EQ(2U, render_text->GetCursorPosition());
+ EXPECT_EQ(2U, render_text->cursor_position());
render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, false);
- EXPECT_EQ(0U, render_text->GetCursorPosition());
+ EXPECT_EQ(0U, render_text->cursor_position());
render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, false);
- EXPECT_EQ(0U, render_text->GetCursorPosition());
+ EXPECT_EQ(0U, render_text->cursor_position());
}
#endif
@@ -606,7 +585,7 @@ TEST_F(RenderTextTest, GraphemePositions) {
}
}
-TEST_F(RenderTextTest, SelectionModels) {
+TEST_F(RenderTextTest, EdgeSelectionModels) {
// Simple Latin text.
const string16 kLatin = WideToUTF16(L"abc");
// LTR 2-character grapheme.
@@ -620,21 +599,18 @@ TEST_F(RenderTextTest, SelectionModels) {
struct {
string16 text;
- size_t expected_left_end_caret;
- SelectionModel::CaretPlacement expected_left_end_placement;
- size_t expected_right_end_caret;
- SelectionModel::CaretPlacement expected_right_end_placement;
+ base::i18n::TextDirection expected_text_direction;
} cases[] = {
- { string16(), 0, SelectionModel::LEADING, 0, SelectionModel::LEADING },
- { kLatin, 0, SelectionModel::LEADING, 2, SelectionModel::TRAILING },
- { kLTRGrapheme, 0, SelectionModel::LEADING, 0, SelectionModel::TRAILING },
- { kHindiLatin, 0, SelectionModel::LEADING, 3, SelectionModel::TRAILING },
- { kRTLGrapheme, 0, SelectionModel::TRAILING, 0, SelectionModel::LEADING },
+ { string16(), base::i18n::LEFT_TO_RIGHT },
+ { kLatin, base::i18n::LEFT_TO_RIGHT },
+ { kLTRGrapheme, base::i18n::LEFT_TO_RIGHT },
+ { kHindiLatin, base::i18n::LEFT_TO_RIGHT },
+ { kRTLGrapheme, base::i18n::RIGHT_TO_LEFT },
#if defined(OS_LINUX)
// On Linux, the whole string is displayed RTL, rather than individual runs.
- { kHebrewLatin, 3, SelectionModel::TRAILING, 0, SelectionModel::LEADING },
+ { kHebrewLatin, base::i18n::RIGHT_TO_LEFT },
#else
- { kHebrewLatin, 0, SelectionModel::TRAILING, 3, SelectionModel::LEADING },
+ { kHebrewLatin, base::i18n::LEFT_TO_RIGHT },
#endif
};
@@ -648,16 +624,15 @@ TEST_F(RenderTextTest, SelectionModels) {
scoped_ptr<RenderText> render_text(RenderText::CreateRenderText());
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); i++) {
render_text->SetText(cases[i].text);
+ bool ltr = (cases[i].expected_text_direction == base::i18n::LEFT_TO_RIGHT);
- SelectionModel model = render_text->EdgeSelectionModel(CURSOR_LEFT);
- EXPECT_EQ(cases[i].expected_left_end_caret, model.caret_pos());
- EXPECT_TRUE(render_text->IsCursorablePosition(model.caret_pos()));
- EXPECT_EQ(cases[i].expected_left_end_placement, model.caret_placement());
+ SelectionModel start_edge =
+ render_text->EdgeSelectionModel(ltr ? CURSOR_LEFT : CURSOR_RIGHT);
+ EXPECT_EQ(start_edge, SelectionModel(0, CURSOR_BACKWARD));
- model = render_text->EdgeSelectionModel(CURSOR_RIGHT);
- EXPECT_EQ(cases[i].expected_right_end_caret, model.caret_pos());
- EXPECT_TRUE(render_text->IsCursorablePosition(model.caret_pos()));
- EXPECT_EQ(cases[i].expected_right_end_placement, model.caret_placement());
+ SelectionModel end_edge =
+ render_text->EdgeSelectionModel(ltr ? CURSOR_RIGHT : CURSOR_LEFT);
+ EXPECT_EQ(end_edge, SelectionModel(cases[i].text.length(), CURSOR_FORWARD));
}
}
@@ -666,43 +641,39 @@ TEST_F(RenderTextTest, MoveCursorLeftRightWithSelection) {
render_text->SetText(WideToUTF16(L"abc\x05d0\x05d1\x05d2"));
// Left arrow on select ranging (6, 4).
render_text->MoveCursor(LINE_BREAK, CURSOR_RIGHT, false);
- EXPECT_EQ(6U, render_text->GetCursorPosition());
+ EXPECT_EQ(ui::Range(6), render_text->selection());
render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, false);
- EXPECT_EQ(4U, render_text->GetCursorPosition());
+ EXPECT_EQ(ui::Range(4), render_text->selection());
render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, false);
- EXPECT_EQ(5U, render_text->GetCursorPosition());
+ EXPECT_EQ(ui::Range(5), render_text->selection());
render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, false);
- EXPECT_EQ(6U, render_text->GetCursorPosition());
+ EXPECT_EQ(ui::Range(6), render_text->selection());
render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, true);
- EXPECT_EQ(6U, render_text->GetSelectionStart());
- EXPECT_EQ(5U, render_text->GetCursorPosition());
+ EXPECT_EQ(ui::Range(6, 5), render_text->selection());
render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, true);
- EXPECT_EQ(6U, render_text->GetSelectionStart());
- EXPECT_EQ(4U, render_text->GetCursorPosition());
+ EXPECT_EQ(ui::Range(6, 4), render_text->selection());
render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, false);
- EXPECT_EQ(6U, render_text->GetCursorPosition());
+ EXPECT_EQ(ui::Range(6), render_text->selection());
// Right arrow on select ranging (4, 6).
render_text->MoveCursor(LINE_BREAK, CURSOR_LEFT, false);
- EXPECT_EQ(0U, render_text->GetCursorPosition());
+ EXPECT_EQ(ui::Range(0), render_text->selection());
render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false);
- EXPECT_EQ(1U, render_text->GetCursorPosition());
+ EXPECT_EQ(ui::Range(1), render_text->selection());
render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false);
- EXPECT_EQ(2U, render_text->GetCursorPosition());
+ EXPECT_EQ(ui::Range(2), render_text->selection());
render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false);
- EXPECT_EQ(3U, render_text->GetCursorPosition());
+ EXPECT_EQ(ui::Range(3), render_text->selection());
render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false);
- EXPECT_EQ(5U, render_text->GetCursorPosition());
+ EXPECT_EQ(ui::Range(5), render_text->selection());
render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false);
- EXPECT_EQ(4U, render_text->GetCursorPosition());
+ EXPECT_EQ(ui::Range(4), render_text->selection());
render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, true);
- EXPECT_EQ(4U, render_text->GetSelectionStart());
- EXPECT_EQ(5U, render_text->GetCursorPosition());
+ EXPECT_EQ(ui::Range(4, 5), render_text->selection());
render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, true);
- EXPECT_EQ(4U, render_text->GetSelectionStart());
- EXPECT_EQ(6U, render_text->GetCursorPosition());
+ EXPECT_EQ(ui::Range(4, 6), render_text->selection());
render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false);
- EXPECT_EQ(4U, render_text->GetCursorPosition());
+ EXPECT_EQ(ui::Range(4), render_text->selection());
}
// TODO(xji): Make these work on Windows.
@@ -720,7 +691,7 @@ void MoveLeftRightByWordVerifier(RenderText* render_text,
SelectionModel start = render_text->selection_model();
render_text->MoveCursor(WORD_BREAK, CURSOR_RIGHT, false);
SelectionModel end = render_text->selection_model();
- if (end.Equals(start)) // reach the end.
+ if (end == start) // reach the end.
break;
// For testing simplicity, each word is a 3-character word.
@@ -729,7 +700,7 @@ void MoveLeftRightByWordVerifier(RenderText* render_text,
render_text->MoveCursorTo(start);
for (int j = 0; j < num_of_character_moves; ++j)
render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false);
- EXPECT_TRUE(render_text->selection_model().Equals(end));
+ EXPECT_EQ(end, render_text->selection_model());
// Then, test moving by word from positions inside the word, such as from
// "a|bc def" to "abc| def", and from "ab|c def" to "abc| def".
@@ -738,7 +709,7 @@ void MoveLeftRightByWordVerifier(RenderText* render_text,
for (int k = 0; k < j; ++k)
render_text->MoveCursor(CHARACTER_BREAK, CURSOR_RIGHT, false);
render_text->MoveCursor(WORD_BREAK, CURSOR_RIGHT, false);
- EXPECT_TRUE(render_text->selection_model().Equals(end));
+ EXPECT_EQ(end, render_text->selection_model());
}
}
@@ -749,7 +720,7 @@ void MoveLeftRightByWordVerifier(RenderText* render_text,
SelectionModel start = render_text->selection_model();
render_text->MoveCursor(WORD_BREAK, CURSOR_LEFT, false);
SelectionModel end = render_text->selection_model();
- if (end.Equals(start)) // reach the end.
+ if (end == start) // reach the end.
break;
int num_of_character_moves = first_word ? 3 : 4;
@@ -757,14 +728,14 @@ void MoveLeftRightByWordVerifier(RenderText* render_text,
render_text->MoveCursorTo(start);
for (int j = 0; j < num_of_character_moves; ++j)
render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, false);
- EXPECT_TRUE(render_text->selection_model().Equals(end));
+ EXPECT_EQ(end, render_text->selection_model());
for (int j = 1; j < num_of_character_moves; ++j) {
render_text->MoveCursorTo(start);
for (int k = 0; k < j; ++k)
render_text->MoveCursor(CHARACTER_BREAK, CURSOR_LEFT, false);
render_text->MoveCursor(WORD_BREAK, CURSOR_LEFT, false);
- EXPECT_TRUE(render_text->selection_model().Equals(end));
+ EXPECT_EQ(end, render_text->selection_model());
}
}
}
@@ -814,21 +785,19 @@ TEST_F(RenderTextTest, MoveLeftRightByWordInBidiText_TestEndOfText) {
// TODO(xji): Need to make it work as expected.
render_text->MoveCursor(LINE_BREAK, CURSOR_RIGHT, false);
render_text->MoveCursor(WORD_BREAK, CURSOR_LEFT, false);
- // EXPECT_TRUE(render_text->selection_model().Equals(SelectionModel(0)));
+ // EXPECT_EQ(SelectionModel(), render_text->selection_model());
// Moving the cursor by word from "|abC" to the right returns "abC|".
render_text->MoveCursor(LINE_BREAK, CURSOR_LEFT, false);
render_text->MoveCursor(WORD_BREAK, CURSOR_RIGHT, false);
- EXPECT_TRUE(render_text->selection_model().Equals(
- SelectionModel(3, 2, SelectionModel::LEADING)));
+ EXPECT_EQ(SelectionModel(3, CURSOR_FORWARD), render_text->selection_model());
render_text->SetText(WideToUTF16(L"\x05E1\x05E2"L"a"));
// For logical text "BCa", moving the cursor by word from "aCB|" to the left
// returns "|aCB".
render_text->MoveCursor(LINE_BREAK, CURSOR_RIGHT, false);
render_text->MoveCursor(WORD_BREAK, CURSOR_LEFT, false);
- EXPECT_TRUE(render_text->selection_model().Equals(
- SelectionModel(3, 2, SelectionModel::LEADING)));
+ EXPECT_EQ(SelectionModel(3, CURSOR_FORWARD), render_text->selection_model());
// Moving the cursor by word from "|aCB" to the right should return "aCB|".
// But since end of text is always treated as a word break, it returns
@@ -836,36 +805,36 @@ TEST_F(RenderTextTest, MoveLeftRightByWordInBidiText_TestEndOfText) {
// TODO(xji): Need to make it work as expected.
render_text->MoveCursor(LINE_BREAK, CURSOR_LEFT, false);
render_text->MoveCursor(WORD_BREAK, CURSOR_RIGHT, false);
- // EXPECT_TRUE(render_text->selection_model().Equals(SelectionModel(0)));
+ // EXPECT_EQ(SelectionModel(), render_text->selection_model());
}
TEST_F(RenderTextTest, MoveLeftRightByWordInTextWithMultiSpaces) {
scoped_ptr<RenderText> render_text(RenderText::CreateRenderText());
render_text->SetText(WideToUTF16(L"abc def"));
- render_text->MoveCursorTo(SelectionModel(5));
+ render_text->MoveCursorTo(SelectionModel(5, CURSOR_FORWARD));
render_text->MoveCursor(WORD_BREAK, CURSOR_RIGHT, false);
- EXPECT_EQ(11U, render_text->GetCursorPosition());
+ EXPECT_EQ(11U, render_text->cursor_position());
- render_text->MoveCursorTo(SelectionModel(5));
+ render_text->MoveCursorTo(SelectionModel(5, CURSOR_FORWARD));
render_text->MoveCursor(WORD_BREAK, CURSOR_LEFT, false);
- EXPECT_EQ(0U, render_text->GetCursorPosition());
+ EXPECT_EQ(0U, render_text->cursor_position());
}
TEST_F(RenderTextTest, MoveLeftRightByWordInChineseText) {
scoped_ptr<RenderText> render_text(RenderText::CreateRenderText());
render_text->SetText(WideToUTF16(L"\x6211\x4EEC\x53BB\x516C\x56ED\x73A9"));
render_text->MoveCursor(LINE_BREAK, CURSOR_LEFT, false);
- EXPECT_EQ(0U, render_text->GetCursorPosition());
+ EXPECT_EQ(0U, render_text->cursor_position());
render_text->MoveCursor(WORD_BREAK, CURSOR_RIGHT, false);
- EXPECT_EQ(2U, render_text->GetCursorPosition());
+ EXPECT_EQ(2U, render_text->cursor_position());
render_text->MoveCursor(WORD_BREAK, CURSOR_RIGHT, false);
- EXPECT_EQ(3U, render_text->GetCursorPosition());
+ EXPECT_EQ(3U, render_text->cursor_position());
render_text->MoveCursor(WORD_BREAK, CURSOR_RIGHT, false);
- EXPECT_EQ(5U, render_text->GetCursorPosition());
+ EXPECT_EQ(5U, render_text->cursor_position());
render_text->MoveCursor(WORD_BREAK, CURSOR_RIGHT, false);
- EXPECT_EQ(6U, render_text->GetCursorPosition());
+ EXPECT_EQ(6U, render_text->cursor_position());
render_text->MoveCursor(WORD_BREAK, CURSOR_RIGHT, false);
- EXPECT_EQ(6U, render_text->GetCursorPosition());
+ EXPECT_EQ(6U, render_text->cursor_position());
}
TEST_F(RenderTextTest, StringWidthTest) {
@@ -873,7 +842,7 @@ TEST_F(RenderTextTest, StringWidthTest) {
render_text->SetText(UTF8ToUTF16("Hello World"));
// Check that width is valid
- int width = render_text->GetStringWidth();
+ int width = render_text->GetStringSize().width();
EXPECT_GT(width, 0);
// Apply a bold style and check that the new width is greater.
@@ -881,7 +850,7 @@ TEST_F(RenderTextTest, StringWidthTest) {
bold.font_style |= gfx::Font::BOLD;
render_text->set_default_style(bold);
render_text->ApplyDefaultStyle();
- EXPECT_GT(render_text->GetStringWidth(), width);
+ EXPECT_GT(render_text->GetStringSize().width(), width);
}
#endif
@@ -890,8 +859,8 @@ TEST_F(RenderTextTest, CursorBoundsInReplacementMode) {
scoped_ptr<RenderText> render_text(RenderText::CreateRenderText());
render_text->SetText(ASCIIToUTF16("abcdefg"));
render_text->SetDisplayRect(Rect(100, 17));
- SelectionModel sel_b(1);
- SelectionModel sel_c(2);
+ SelectionModel sel_b(1, CURSOR_FORWARD);
+ SelectionModel sel_c(2, CURSOR_FORWARD);
Rect cursor_around_b = render_text->GetCursorBounds(sel_b, false);
Rect cursor_before_b = render_text->GetCursorBounds(sel_b, true);
Rect cursor_before_c = render_text->GetCursorBounds(sel_c, true);
@@ -925,8 +894,9 @@ TEST_F(RenderTextTest, OriginForSkiaDrawing) {
TEST_F(RenderTextTest, DisplayRectShowsCursorLTR) {
scoped_ptr<RenderText> render_text(RenderText::CreateRenderText());
render_text->SetText(WideToUTF16(L"abcdefghijklmnopqrstuvwxzyabcdefg"));
- render_text->MoveCursorTo(SelectionModel(render_text->text().length()));
- int width = render_text->GetStringWidth();
+ render_text->MoveCursorTo(SelectionModel(render_text->text().length(),
+ CURSOR_FORWARD));
+ int width = render_text->GetStringSize().width();
// Ensure that the cursor is placed at the width of its preceding text.
render_text->SetDisplayRect(Rect(width + 10, 1));
@@ -949,8 +919,8 @@ TEST_F(RenderTextTest, DisplayRectShowsCursorLTR) {
// Repeat the test with RTL text.
render_text->SetText(WideToUTF16(L"\x5d0\x5d1\x5d2\x5d3\x5d4\x5d5\x5d6\x5d7"
L"\x5d8\x5d9\x5da\x5db\x5dc\x5dd\x5de\x5df"));
- render_text->MoveCursorTo(SelectionModel(0));
- width = render_text->GetStringWidth();
+ render_text->MoveCursorTo(SelectionModel(0, CURSOR_FORWARD));
+ width = render_text->GetStringSize().width();
// Ensure that the cursor is placed at the width of its preceding text.
render_text->SetDisplayRect(Rect(width + 10, 1));
@@ -978,8 +948,8 @@ TEST_F(RenderTextTest, DisplayRectShowsCursorRTL) {
scoped_ptr<RenderText> render_text(RenderText::CreateRenderText());
render_text->SetText(WideToUTF16(L"abcdefghijklmnopqrstuvwxzyabcdefg"));
- render_text->MoveCursorTo(SelectionModel(0));
- int width = render_text->GetStringWidth();
+ render_text->MoveCursorTo(SelectionModel(0, CURSOR_FORWARD));
+ int width = render_text->GetStringSize().width();
// Ensure that the cursor is placed at the width of its preceding text.
render_text->SetDisplayRect(Rect(width + 10, 1));
@@ -1002,8 +972,9 @@ TEST_F(RenderTextTest, DisplayRectShowsCursorRTL) {
// Repeat the test with RTL text.
render_text->SetText(WideToUTF16(L"\x5d0\x5d1\x5d2\x5d3\x5d4\x5d5\x5d6\x5d7"
L"\x5d8\x5d9\x5da\x5db\x5dc\x5dd\x5de\x5df"));
- render_text->MoveCursorTo(SelectionModel(render_text->text().length()));
- width = render_text->GetStringWidth();
+ render_text->MoveCursorTo(SelectionModel(render_text->text().length(),
+ CURSOR_FORWARD));
+ width = render_text->GetStringSize().width();
// Ensure that the cursor is placed at the width of its preceding text.
render_text->SetDisplayRect(Rect(width + 10, 1));

Powered by Google App Engine
This is Rietveld 408576698