OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <string> | 5 #include <string> |
6 #include <vector> | 6 #include <vector> |
7 | 7 |
8 #include "base/auto_reset.h" | 8 #include "base/auto_reset.h" |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
262 clipboard_writer.WriteText(ASCIIToUTF16(text)); | 262 clipboard_writer.WriteText(ASCIIToUTF16(text)); |
263 } | 263 } |
264 | 264 |
265 View* GetFocusedView() { | 265 View* GetFocusedView() { |
266 return widget_->GetFocusManager()->GetFocusedView(); | 266 return widget_->GetFocusManager()->GetFocusedView(); |
267 } | 267 } |
268 | 268 |
269 int GetCursorPositionX(int cursor_pos) { | 269 int GetCursorPositionX(int cursor_pos) { |
270 gfx::RenderText* render_text = textfield_view_->GetRenderText(); | 270 gfx::RenderText* render_text = textfield_view_->GetRenderText(); |
271 return render_text->GetCursorBounds( | 271 return render_text->GetCursorBounds( |
272 gfx::SelectionModel(cursor_pos), false).x(); | 272 gfx::SelectionModel(cursor_pos, gfx::CURSOR_FORWARD), false).x(); |
273 } | 273 } |
274 | 274 |
275 // Get the current cursor bounds. | 275 // Get the current cursor bounds. |
276 gfx::Rect GetCursorBounds() { | 276 gfx::Rect GetCursorBounds() { |
277 gfx::RenderText* render_text = textfield_view_->GetRenderText(); | 277 gfx::RenderText* render_text = textfield_view_->GetRenderText(); |
278 gfx::Rect bounds = render_text->GetUpdatedCursorBounds(); | 278 gfx::Rect bounds = render_text->GetUpdatedCursorBounds(); |
279 return bounds; | 279 return bounds; |
280 } | 280 } |
281 | 281 |
282 // Get the cursor bounds of |sel|. | 282 // Get the cursor bounds of |sel|. |
(...skipping 1060 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1343 // Reset locale. | 1343 // Reset locale. |
1344 base::i18n::SetICUDefaultLocale(locale); | 1344 base::i18n::SetICUDefaultLocale(locale); |
1345 } | 1345 } |
1346 | 1346 |
1347 TEST_F(NativeTextfieldViewsTest, HitInsideTextAreaTest) { | 1347 TEST_F(NativeTextfieldViewsTest, HitInsideTextAreaTest) { |
1348 InitTextfield(Textfield::STYLE_DEFAULT); | 1348 InitTextfield(Textfield::STYLE_DEFAULT); |
1349 textfield_->SetText(WideToUTF16(L"ab\x05E1\x5E2")); | 1349 textfield_->SetText(WideToUTF16(L"ab\x05E1\x5E2")); |
1350 std::vector<gfx::Rect> cursor_bounds; | 1350 std::vector<gfx::Rect> cursor_bounds; |
1351 | 1351 |
1352 // Save each cursor bound. | 1352 // Save each cursor bound. |
1353 gfx::SelectionModel sel(0, 0, gfx::SelectionModel::LEADING); | 1353 gfx::SelectionModel sel(0, gfx::CURSOR_FORWARD); |
1354 cursor_bounds.push_back(GetCursorBounds(sel)); | 1354 cursor_bounds.push_back(GetCursorBounds(sel)); |
1355 | 1355 |
1356 sel = gfx::SelectionModel(1, 0, gfx::SelectionModel::TRAILING); | 1356 sel = gfx::SelectionModel(1, gfx::CURSOR_BACKWARD); |
1357 gfx::Rect bound = GetCursorBounds(sel); | 1357 gfx::Rect bound = GetCursorBounds(sel); |
1358 sel = gfx::SelectionModel(1, 1, gfx::SelectionModel::LEADING); | 1358 sel = gfx::SelectionModel(1, gfx::CURSOR_FORWARD); |
1359 EXPECT_EQ(bound.x(), GetCursorBounds(sel).x()); | 1359 EXPECT_EQ(bound.x(), GetCursorBounds(sel).x()); |
1360 cursor_bounds.push_back(bound); | 1360 cursor_bounds.push_back(bound); |
1361 | 1361 |
1362 // Check that a cursor at the end of the Latin portion of the text is at the | 1362 // Check that a cursor at the end of the Latin portion of the text is at the |
1363 // same position as a cursor placed at the end of the RTL Hebrew portion. | 1363 // same position as a cursor placed at the end of the RTL Hebrew portion. |
1364 sel = gfx::SelectionModel(2, 1, gfx::SelectionModel::TRAILING); | 1364 sel = gfx::SelectionModel(2, gfx::CURSOR_BACKWARD); |
1365 bound = GetCursorBounds(sel); | 1365 bound = GetCursorBounds(sel); |
1366 sel = gfx::SelectionModel(4, 3, gfx::SelectionModel::TRAILING); | 1366 sel = gfx::SelectionModel(4, gfx::CURSOR_BACKWARD); |
1367 EXPECT_EQ(bound.x(), GetCursorBounds(sel).x()); | 1367 EXPECT_EQ(bound.x(), GetCursorBounds(sel).x()); |
1368 cursor_bounds.push_back(bound); | 1368 cursor_bounds.push_back(bound); |
1369 | 1369 |
1370 sel = gfx::SelectionModel(3, 2, gfx::SelectionModel::TRAILING); | 1370 sel = gfx::SelectionModel(3, gfx::CURSOR_BACKWARD); |
1371 bound = GetCursorBounds(sel); | 1371 bound = GetCursorBounds(sel); |
1372 sel = gfx::SelectionModel(3, 3, gfx::SelectionModel::LEADING); | 1372 sel = gfx::SelectionModel(3, gfx::CURSOR_FORWARD); |
1373 EXPECT_EQ(bound.x(), GetCursorBounds(sel).x()); | 1373 EXPECT_EQ(bound.x(), GetCursorBounds(sel).x()); |
1374 cursor_bounds.push_back(bound); | 1374 cursor_bounds.push_back(bound); |
1375 | 1375 |
1376 sel = gfx::SelectionModel(2, 2, gfx::SelectionModel::LEADING); | 1376 sel = gfx::SelectionModel(2, gfx::CURSOR_FORWARD); |
1377 bound = GetCursorBounds(sel); | 1377 bound = GetCursorBounds(sel); |
1378 sel = gfx::SelectionModel(4, 2, gfx::SelectionModel::LEADING); | 1378 sel = gfx::SelectionModel(4, gfx::CURSOR_FORWARD); |
1379 EXPECT_EQ(bound.x(), GetCursorBounds(sel).x()); | 1379 EXPECT_EQ(bound.x(), GetCursorBounds(sel).x()); |
1380 cursor_bounds.push_back(bound); | 1380 cursor_bounds.push_back(bound); |
1381 | 1381 |
1382 // Expected cursor position when clicking left and right of each character. | 1382 // Expected cursor position when clicking left and right of each character. |
1383 size_t cursor_pos_expected[] = {0, 1, 1, 2, 4, 3, 3, 2}; | 1383 size_t cursor_pos_expected[] = {0, 1, 1, 2, 4, 3, 3, 2}; |
1384 | 1384 |
1385 int index = 0; | 1385 int index = 0; |
1386 for (int i = 0; i < static_cast<int>(cursor_bounds.size() - 1); ++i) { | 1386 for (int i = 0; i < static_cast<int>(cursor_bounds.size() - 1); ++i) { |
1387 int half_width = (cursor_bounds[i + 1].x() - cursor_bounds[i].x()) / 2; | 1387 int half_width = (cursor_bounds[i + 1].x() - cursor_bounds[i].x()) / 2; |
1388 MouseClick(cursor_bounds[i], half_width / 2); | 1388 MouseClick(cursor_bounds[i], half_width / 2); |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1568 #else | 1568 #else |
1569 EXPECT_EQ(500U, textfield_->GetCursorPosition()); | 1569 EXPECT_EQ(500U, textfield_->GetCursorPosition()); |
1570 #endif | 1570 #endif |
1571 #endif // !defined(OS_WIN) | 1571 #endif // !defined(OS_WIN) |
1572 | 1572 |
1573 // Reset locale. | 1573 // Reset locale. |
1574 base::i18n::SetICUDefaultLocale(locale); | 1574 base::i18n::SetICUDefaultLocale(locale); |
1575 } | 1575 } |
1576 | 1576 |
1577 } // namespace views | 1577 } // namespace views |
OLD | NEW |