summaryrefslogtreecommitdiffstats
path: root/chrome/browser/autocomplete/autocomplete_edit_view_browsertest.cc
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2010-11-18 18:32:45 +0000
committerBen Murdoch <benm@google.com>2010-11-18 18:38:07 +0000
commit513209b27ff55e2841eac0e4120199c23acce758 (patch)
treeaeba30bb08c5f47c57003544e378a377c297eee6 /chrome/browser/autocomplete/autocomplete_edit_view_browsertest.cc
parent164f7496de0fbee436b385a79ead9e3cb81a50c1 (diff)
downloadexternal_chromium-513209b27ff55e2841eac0e4120199c23acce758.zip
external_chromium-513209b27ff55e2841eac0e4120199c23acce758.tar.gz
external_chromium-513209b27ff55e2841eac0e4120199c23acce758.tar.bz2
Merge Chromium at r65505: Initial merge by git.
Change-Id: I31d8f1d8cd33caaf7f47ffa7350aef42d5fbdb45
Diffstat (limited to 'chrome/browser/autocomplete/autocomplete_edit_view_browsertest.cc')
-rw-r--r--chrome/browser/autocomplete/autocomplete_edit_view_browsertest.cc128
1 files changed, 127 insertions, 1 deletions
diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_browsertest.cc b/chrome/browser/autocomplete/autocomplete_edit_view_browsertest.cc
index 2890fdd..6a8ef27 100644
--- a/chrome/browser/autocomplete/autocomplete_edit_view_browsertest.cc
+++ b/chrome/browser/autocomplete/autocomplete_edit_view_browsertest.cc
@@ -10,9 +10,10 @@
#include "base/string_util.h"
#include "base/time.h"
#include "base/utf_string_conversions.h"
-#include "chrome/app/chrome_dll_resource.h"
+#include "chrome/app/chrome_command_ids.h"
#include "chrome/browser/autocomplete/autocomplete.h"
#include "chrome/browser/autocomplete/autocomplete_edit.h"
+#include "chrome/browser/autocomplete/autocomplete_match.h"
#include "chrome/browser/autocomplete/autocomplete_popup_model.h"
#include "chrome/browser/autocomplete/autocomplete_edit_view.h"
#include "chrome/browser/bookmarks/bookmark_model.h"
@@ -658,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