Chromium Code Reviews| Index: chrome/browser/ui/omnibox/omnibox_view_browsertest.cc |
| =================================================================== |
| --- chrome/browser/ui/omnibox/omnibox_view_browsertest.cc (revision 118845) |
| +++ chrome/browser/ui/omnibox/omnibox_view_browsertest.cc (working copy) |
| @@ -747,7 +747,7 @@ |
| // Keyword should also be accepted by typing an ideographic space. |
| omnibox_view->OnBeforePossibleChange(); |
| omnibox_view->SetWindowTextAndCaretPos(text + WideToUTF16(L"\x3000"), |
| - text.length() + 1); |
| + text.length() + 1, false, false); |
| omnibox_view->OnAfterPossibleChange(); |
| ASSERT_FALSE(omnibox_view->model()->is_keyword_hint()); |
| ASSERT_EQ(text, omnibox_view->model()->keyword()); |
| @@ -762,7 +762,7 @@ |
| // Keyword shouldn't be accepted by pressing space with a trailing |
| // whitespace. |
| omnibox_view->SetWindowTextAndCaretPos( |
| - text + char16(' '), text.length() + 1); |
| + text + char16(' '), text.length() + 1, false, false); |
| ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_SPACE, 0)); |
| ASSERT_TRUE(omnibox_view->model()->is_keyword_hint()); |
| ASSERT_EQ(text, omnibox_view->model()->keyword()); |
| @@ -799,7 +799,7 @@ |
| omnibox_view->OnBeforePossibleChange(); |
| omnibox_view->model()->on_paste(); |
| omnibox_view->SetWindowTextAndCaretPos(text + ASCIIToUTF16(" bar"), |
| - text.length() + 4); |
| + text.length() + 4, false, false); |
| omnibox_view->OnAfterPossibleChange(); |
| ASSERT_FALSE(omnibox_view->model()->is_keyword_hint()); |
| ASSERT_TRUE(omnibox_view->model()->keyword().empty()); |
| @@ -1013,59 +1013,94 @@ |
| ASSERT_TRUE(omnibox_view->IsSelectAll()); |
| } |
| - void TabMoveCursorToEndTest() { |
| + void TabAcceptKeyword() { |
| OmniboxView* omnibox_view = NULL; |
| ASSERT_NO_FATAL_FAILURE(GetOmniboxView(&omnibox_view)); |
| - omnibox_view->SetUserText(ASCIIToUTF16("Hello world")); |
| + string16 text = ASCIIToUTF16(kSearchKeyword); |
| - // Move cursor to the beginning. |
| -#if defined(OS_MACOSX) |
| - // Home doesn't work on Mac trybot. |
| - ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_A, ui::EF_CONTROL_DOWN)); |
| -#else |
| - ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_HOME, 0)); |
| -#endif |
| + // Trigger keyword hint mode. |
| + ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchKeywordKeys)); |
| + ASSERT_TRUE(omnibox_view->model()->is_keyword_hint()); |
| + ASSERT_EQ(text, omnibox_view->model()->keyword()); |
| + ASSERT_EQ(text, omnibox_view->GetText()); |
| - size_t start, end; |
| - omnibox_view->GetSelectionBounds(&start, &end); |
| - EXPECT_EQ(0U, start); |
| - EXPECT_EQ(0U, end); |
| - |
| - // Pressing tab should move cursor to the end. |
| + // Trigger keyword mode by tab. |
| ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_TAB, 0)); |
| + ASSERT_FALSE(omnibox_view->model()->is_keyword_hint()); |
| + ASSERT_EQ(text, omnibox_view->model()->keyword()); |
| + ASSERT_TRUE(omnibox_view->GetText().empty()); |
| - omnibox_view->GetSelectionBounds(&start, &end); |
| - EXPECT_EQ(omnibox_view->GetText().size(), start); |
| - EXPECT_EQ(omnibox_view->GetText().size(), end); |
| + // Revert to keyword hint mode. |
| + ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, 0)); |
| + ASSERT_TRUE(omnibox_view->model()->is_keyword_hint()); |
| + ASSERT_EQ(text, omnibox_view->model()->keyword()); |
| + ASSERT_EQ(text, omnibox_view->GetText()); |
| // The location bar should still have focus. |
| ASSERT_TRUE(ui_test_utils::IsViewFocused(browser(), |
| location_bar_focus_view_id_)); |
| - // Select all text. |
| - omnibox_view->SelectAll(true); |
| - EXPECT_TRUE(omnibox_view->IsSelectAll()); |
| - omnibox_view->GetSelectionBounds(&start, &end); |
| - EXPECT_EQ(0U, start); |
| - EXPECT_EQ(omnibox_view->GetText().size(), end); |
| - |
| - // Pressing tab should move cursor to the end. |
| + // Trigger keyword mode by tab. |
| ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_TAB, 0)); |
| + ASSERT_FALSE(omnibox_view->model()->is_keyword_hint()); |
| + ASSERT_EQ(text, omnibox_view->model()->keyword()); |
| + ASSERT_TRUE(omnibox_view->GetText().empty()); |
| - omnibox_view->GetSelectionBounds(&start, &end); |
| - EXPECT_EQ(omnibox_view->GetText().size(), start); |
| - EXPECT_EQ(omnibox_view->GetText().size(), end); |
| + // Revert to keyword hint mode with SHIFT+TAB. |
| +#if defined(OS_MACOSX) |
| + ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACKTAB, 0)); |
| +#else |
| + ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_TAB, ui::EF_SHIFT_DOWN)); |
| +#endif |
| + ASSERT_TRUE(omnibox_view->model()->is_keyword_hint()); |
| + ASSERT_EQ(text, omnibox_view->model()->keyword()); |
| + ASSERT_EQ(text, omnibox_view->GetText()); |
| - // The location bar should still have focus. |
| ASSERT_TRUE(ui_test_utils::IsViewFocused(browser(), |
| location_bar_focus_view_id_)); |
| + } |
| - // Pressing tab when cursor is at the end should change focus. |
| + void TabTraverseResultsTest() { |
| + OmniboxView* omnibox_view = NULL; |
| + ASSERT_NO_FATAL_FAILURE(GetOmniboxView(&omnibox_view)); |
| + AutocompletePopupModel* popup_model = omnibox_view->model()->popup_model(); |
| + ASSERT_TRUE(popup_model); |
| + |
| + // Input something to trigger results. |
| + ASSERT_NO_FATAL_FAILURE(SendKeySequence(kDesiredTLDKeys)); |
| + ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); |
| + ASSERT_TRUE(popup_model->IsOpen()); |
| + |
| + size_t old_selected_line = popup_model->selected_line(); |
| + EXPECT_EQ(0U, old_selected_line); |
| + |
| + // Move down the results. |
| + size_t size = popup_model->result().size(); |
|
Peter Kasting
2012/01/25 05:53:05
Nit: Optional form:
for (size_t size = popup_
|
| + while (popup_model->selected_line() < size - 1) { |
| + ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_TAB, 0)); |
| + ASSERT_LT(old_selected_line, popup_model->selected_line()); |
| + old_selected_line = popup_model->selected_line(); |
| + } |
| + |
| + // Don't move past the end. |
| ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_TAB, 0)); |
| + ASSERT_EQ(old_selected_line, popup_model->selected_line()); |
| + ASSERT_TRUE(ui_test_utils::IsViewFocused(browser(), |
| + location_bar_focus_view_id_)); |
| - ASSERT_FALSE(ui_test_utils::IsViewFocused(browser(), |
| - location_bar_focus_view_id_)); |
| + // Move back up the results. |
| + while (popup_model->selected_line() > 0U) { |
| + ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_TAB, ui::EF_SHIFT_DOWN)); |
| + ASSERT_GT(old_selected_line, popup_model->selected_line()); |
| + old_selected_line = popup_model->selected_line(); |
| + } |
| + |
| + // Don't move past the beginning. |
| + ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_TAB, ui::EF_SHIFT_DOWN)); |
| + ASSERT_EQ(0U, popup_model->selected_line()); |
| + ASSERT_TRUE(ui_test_utils::IsViewFocused(browser(), |
| + location_bar_focus_view_id_)); |
| } |
| void PersistKeywordModeOnTabSwitch() { |
| @@ -1191,10 +1226,17 @@ |
| DeleteItemTest(); |
| } |
| -IN_PROC_BROWSER_TEST_F(OmniboxViewTest, TabMoveCursorToEnd) { |
| - TabMoveCursorToEndTest(); |
| +IN_PROC_BROWSER_TEST_F(OmniboxViewTest, TabAcceptKeyword) { |
| + TabAcceptKeyword(); |
| } |
| +#if !defined(OS_MACOSX) |
| +// Mac intentionally does not support this behavior. |
| +IN_PROC_BROWSER_TEST_F(OmniboxViewTest, TabTraverseResultsTest) { |
| + TabTraverseResultsTest(); |
| +} |
| +#endif |
| + |
| IN_PROC_BROWSER_TEST_F(OmniboxViewTest, |
| PersistKeywordModeOnTabSwitch) { |
| PersistKeywordModeOnTabSwitch(); |