| Index: chrome/browser/autocomplete/autocomplete_edit_view_browsertest.cc
|
| diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_browsertest.cc b/chrome/browser/autocomplete/autocomplete_edit_view_browsertest.cc
|
| index 7a808ad1ef6c77584c127d6f75a1e3809d2c4071..266e3d4c49002d117912ac3fe1349289f2e73f3f 100644
|
| --- a/chrome/browser/autocomplete/autocomplete_edit_view_browsertest.cc
|
| +++ b/chrome/browser/autocomplete/autocomplete_edit_view_browsertest.cc
|
| @@ -659,3 +659,128 @@ IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, MAYBE_EscapeToDefaultMatch) {
|
| EXPECT_EQ(old_text, edit_view->GetText());
|
| EXPECT_EQ(old_selected_line, popup_model->selected_line());
|
| }
|
| +
|
| +IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, BasicTextOperations) {
|
| + ASSERT_NO_FATAL_FAILURE(SetupComponents());
|
| + ui_test_utils::NavigateToURL(browser(), GURL(chrome::kAboutBlankURL));
|
| + browser()->FocusLocationBar();
|
| +
|
| + AutocompleteEditView* edit_view = NULL;
|
| + ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view));
|
| +
|
| + std::wstring old_text = edit_view->GetText();
|
| + EXPECT_EQ(UTF8ToWide(chrome::kAboutBlankURL), old_text);
|
| + EXPECT_TRUE(edit_view->IsSelectAll());
|
| +
|
| + std::wstring::size_type start, end;
|
| + edit_view->GetSelectionBounds(&start, &end);
|
| + EXPECT_EQ(0U, start);
|
| + EXPECT_EQ(old_text.size(), end);
|
| +
|
| + // Move the cursor to the end.
|
| + ASSERT_NO_FATAL_FAILURE(SendKey(app::VKEY_END, false, false, false));
|
| + EXPECT_FALSE(edit_view->IsSelectAll());
|
| +
|
| + // Make sure the cursor is placed correctly.
|
| + edit_view->GetSelectionBounds(&start, &end);
|
| + EXPECT_EQ(old_text.size(), start);
|
| + EXPECT_EQ(old_text.size(), end);
|
| +
|
| + // Insert one character at the end. Make sure we won't insert anything after
|
| + // the special ZWS mark used in gtk implementation.
|
| + ASSERT_NO_FATAL_FAILURE(SendKey(app::VKEY_A, false, false, false));
|
| + EXPECT_EQ(old_text + L"a", edit_view->GetText());
|
| +
|
| + // Delete one character from the end. Make sure we won't delete the special
|
| + // ZWS mark used in gtk implementation.
|
| + ASSERT_NO_FATAL_FAILURE(SendKey(app::VKEY_BACK, false, false, false));
|
| + EXPECT_EQ(old_text, edit_view->GetText());
|
| +
|
| + edit_view->SelectAll(true);
|
| + EXPECT_TRUE(edit_view->IsSelectAll());
|
| + edit_view->GetSelectionBounds(&start, &end);
|
| + EXPECT_EQ(0U, start);
|
| + EXPECT_EQ(old_text.size(), end);
|
| +
|
| + // Delete the content
|
| + ASSERT_NO_FATAL_FAILURE(SendKey(app::VKEY_DELETE, false, false, false));
|
| + EXPECT_TRUE(edit_view->IsSelectAll());
|
| + edit_view->GetSelectionBounds(&start, &end);
|
| + EXPECT_EQ(0U, start);
|
| + EXPECT_EQ(0U, end);
|
| + EXPECT_TRUE(edit_view->GetText().empty());
|
| +
|
| + // Check if RevertAll() can set text and cursor correctly.
|
| + edit_view->RevertAll();
|
| + EXPECT_FALSE(edit_view->IsSelectAll());
|
| + EXPECT_EQ(old_text, edit_view->GetText());
|
| + edit_view->GetSelectionBounds(&start, &end);
|
| + EXPECT_EQ(old_text.size(), start);
|
| + EXPECT_EQ(old_text.size(), end);
|
| +}
|
| +
|
| +#if defined(OS_LINUX)
|
| +IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, UndoRedoLinux) {
|
| + ASSERT_NO_FATAL_FAILURE(SetupComponents());
|
| + ui_test_utils::NavigateToURL(browser(), GURL(chrome::kAboutBlankURL));
|
| + browser()->FocusLocationBar();
|
| +
|
| + AutocompleteEditView* edit_view = NULL;
|
| + ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view));
|
| +
|
| + std::wstring old_text = edit_view->GetText();
|
| + EXPECT_EQ(UTF8ToWide(chrome::kAboutBlankURL), old_text);
|
| + EXPECT_TRUE(edit_view->IsSelectAll());
|
| +
|
| + // Undo should clear the omnibox.
|
| + ASSERT_NO_FATAL_FAILURE(SendKey(app::VKEY_Z, true, false, false));
|
| + EXPECT_TRUE(edit_view->GetText().empty());
|
| +
|
| + // Nothing should happen if undo again.
|
| + ASSERT_NO_FATAL_FAILURE(SendKey(app::VKEY_Z, true, false, false));
|
| + EXPECT_TRUE(edit_view->GetText().empty());
|
| +
|
| + // Redo should restore the original text.
|
| + ASSERT_NO_FATAL_FAILURE(SendKey(app::VKEY_Z, true, true, false));
|
| + EXPECT_EQ(old_text, edit_view->GetText());
|
| +
|
| + // Looks like the undo manager doesn't support restoring selection.
|
| + EXPECT_FALSE(edit_view->IsSelectAll());
|
| +
|
| + // The cursor should be at the end.
|
| + std::wstring::size_type start, end;
|
| + edit_view->GetSelectionBounds(&start, &end);
|
| + EXPECT_EQ(old_text.size(), start);
|
| + EXPECT_EQ(old_text.size(), end);
|
| +
|
| + // Delete two characters.
|
| + ASSERT_NO_FATAL_FAILURE(SendKey(app::VKEY_BACK, false, false, false));
|
| + ASSERT_NO_FATAL_FAILURE(SendKey(app::VKEY_BACK, false, false, false));
|
| + EXPECT_EQ(old_text.substr(0, old_text.size() - 2), edit_view->GetText());
|
| +
|
| + // Undo delete.
|
| + ASSERT_NO_FATAL_FAILURE(SendKey(app::VKEY_Z, true, false, false));
|
| + EXPECT_EQ(old_text, edit_view->GetText());
|
| +
|
| + // Redo delete.
|
| + ASSERT_NO_FATAL_FAILURE(SendKey(app::VKEY_Z, true, true, false));
|
| + EXPECT_EQ(old_text.substr(0, old_text.size() - 2), edit_view->GetText());
|
| +
|
| + // Delete everything.
|
| + edit_view->SelectAll(true);
|
| + ASSERT_NO_FATAL_FAILURE(SendKey(app::VKEY_BACK, false, false, false));
|
| + EXPECT_TRUE(edit_view->GetText().empty());
|
| +
|
| + // Undo delete everything.
|
| + ASSERT_NO_FATAL_FAILURE(SendKey(app::VKEY_Z, true, false, false));
|
| + EXPECT_EQ(old_text.substr(0, old_text.size() - 2), edit_view->GetText());
|
| +
|
| + // Undo delete two characters.
|
| + ASSERT_NO_FATAL_FAILURE(SendKey(app::VKEY_Z, true, false, false));
|
| + EXPECT_EQ(old_text, edit_view->GetText());
|
| +
|
| + // Undo again.
|
| + ASSERT_NO_FATAL_FAILURE(SendKey(app::VKEY_Z, true, false, false));
|
| + EXPECT_TRUE(edit_view->GetText().empty());
|
| +}
|
| +#endif
|
|
|