Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 <sstream> | 5 #include <sstream> |
| 6 | 6 |
| 7 #include "base/prefs/pref_service.h" | 7 #include "base/prefs/pref_service.h" |
| 8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
| 9 #include "base/stringprintf.h" | 9 #include "base/stringprintf.h" |
| 10 #include "base/utf_string_conversions.h" | 10 #include "base/utf_string_conversions.h" |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 111 GetIntFromJS(contents, "mostVisitedItemsCount", | 111 GetIntFromJS(contents, "mostVisitedItemsCount", |
| 112 &most_visited_items_count_) && | 112 &most_visited_items_count_) && |
| 113 GetIntFromJS(contents, "firstMostVisitedItemId", | 113 GetIntFromJS(contents, "firstMostVisitedItemId", |
| 114 &first_most_visited_item_id_) && | 114 &first_most_visited_item_id_) && |
| 115 GetIntFromJS(contents, "onNativeSuggestionsCalls", | 115 GetIntFromJS(contents, "onNativeSuggestionsCalls", |
| 116 &on_native_suggestions_calls_) && | 116 &on_native_suggestions_calls_) && |
| 117 GetIntFromJS(contents, "onChangeCalls", | 117 GetIntFromJS(contents, "onChangeCalls", |
| 118 &on_change_calls_); | 118 &on_change_calls_); |
| 119 } | 119 } |
| 120 | 120 |
| 121 // A convenience function to explicitly blur the omnibox and focus |contents|. | |
| 122 // TODO(msw|jered|sreeram): Fix test focus issues; see http://crbug.com/226189 | |
| 123 void BlurOmniboxAndFocusContents(content::WebContents* contents) { | |
| 124 omnibox()->model()->OnWillKillFocus(contents->GetView()->GetNativeView()); | |
| 125 omnibox()->model()->OnKillFocus(); | |
| 126 contents->GetView()->Focus(); | |
| 127 EXPECT_FALSE(omnibox()->model()->has_focus()); | |
| 128 EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_TAB_CONTAINER)); | |
| 129 } | |
| 130 | |
| 121 int on_most_visited_change_calls_; | 131 int on_most_visited_change_calls_; |
| 122 int most_visited_items_count_; | 132 int most_visited_items_count_; |
| 123 int first_most_visited_item_id_; | 133 int first_most_visited_item_id_; |
| 124 int on_native_suggestions_calls_; | 134 int on_native_suggestions_calls_; |
| 125 int on_change_calls_; | 135 int on_change_calls_; |
| 126 }; | 136 }; |
| 127 | 137 |
| 128 // Test class used to verify chrome-search: scheme and access policy from the | 138 // Test class used to verify chrome-search: scheme and access policy from the |
| 129 // Instant overlay. This is a subclass of |ExtensionBrowserTest| because it | 139 // Instant overlay. This is a subclass of |ExtensionBrowserTest| because it |
| 130 // loads a theme that provides a background image. | 140 // loads a theme that provides a background image. |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 164 | 174 |
| 165 IN_PROC_BROWSER_TEST_F(InstantExtendedTest, ExtendedModeIsOn) { | 175 IN_PROC_BROWSER_TEST_F(InstantExtendedTest, ExtendedModeIsOn) { |
| 166 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); | 176 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); |
| 167 EXPECT_TRUE(instant()->extended_enabled_); | 177 EXPECT_TRUE(instant()->extended_enabled_); |
| 168 } | 178 } |
| 169 | 179 |
| 170 // Test that Instant is preloaded when the omnibox is focused. | 180 // Test that Instant is preloaded when the omnibox is focused. |
| 171 IN_PROC_BROWSER_TEST_F(InstantExtendedTest, OmniboxFocusLoadsInstant) { | 181 IN_PROC_BROWSER_TEST_F(InstantExtendedTest, OmniboxFocusLoadsInstant) { |
| 172 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); | 182 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); |
| 173 | 183 |
| 174 // Explicitly unfocus the omnibox. | 184 // Blur the omnibox and focus the active web contents. |
| 175 EXPECT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); | 185 BlurOmniboxAndFocusContents( |
|
Jered
2013/04/05 16:27:07
The new code does not do this. Is it unnecessary?
msw
2013/04/05 16:39:02
I suspect not if the test didn't break, but I rest
| |
| 176 ui_test_utils::ClickOnView(browser(), VIEW_ID_TAB_CONTAINER); | 186 browser()->tab_strip_model()->GetActiveWebContents()); |
| 177 | |
| 178 EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_TAB_CONTAINER)); | |
| 179 EXPECT_FALSE(omnibox()->model()->has_focus()); | |
| 180 | 187 |
| 181 // Delete any existing overlay. | 188 // Delete any existing overlay. |
| 182 instant()->overlay_.reset(); | 189 instant()->overlay_.reset(); |
| 183 EXPECT_FALSE(instant()->GetOverlayContents()); | 190 EXPECT_FALSE(instant()->GetOverlayContents()); |
| 184 | 191 |
| 185 // Refocus the omnibox. The InstantController should've preloaded Instant. | 192 // Refocus the omnibox. The InstantController should've preloaded Instant. |
| 186 FocusOmniboxAndWaitForInstantExtendedSupport(); | 193 FocusOmniboxAndWaitForInstantExtendedSupport(); |
| 187 | 194 |
| 188 EXPECT_FALSE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_TAB_CONTAINER)); | 195 EXPECT_FALSE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_TAB_CONTAINER)); |
| 189 EXPECT_TRUE(omnibox()->model()->has_focus()); | 196 EXPECT_TRUE(omnibox()->model()->has_focus()); |
| 190 | 197 |
| 191 content::WebContents* overlay = instant()->GetOverlayContents(); | 198 content::WebContents* overlay = instant()->GetOverlayContents(); |
| 192 EXPECT_TRUE(overlay); | 199 EXPECT_TRUE(overlay); |
| 193 | 200 |
| 194 // Check that the page supports Instant, but it isn't showing. | 201 // Check that the page supports Instant, but it isn't showing. |
| 195 EXPECT_TRUE(instant()->overlay_->supports_instant()); | 202 EXPECT_TRUE(instant()->overlay_->supports_instant()); |
| 196 EXPECT_FALSE(instant()->IsOverlayingSearchResults()); | 203 EXPECT_FALSE(instant()->IsOverlayingSearchResults()); |
| 197 EXPECT_TRUE(instant()->model()->mode().is_default()); | 204 EXPECT_TRUE(instant()->model()->mode().is_default()); |
| 198 | 205 |
| 199 // Adding a new tab shouldn't delete or recreate the overlay; otherwise, | 206 // Adding a new tab shouldn't delete or recreate the overlay; otherwise, |
| 200 // what's the point of preloading? | 207 // what's the point of preloading? |
| 201 AddBlankTabAndShow(browser()); | 208 AddBlankTabAndShow(browser()); |
| 202 EXPECT_EQ(overlay, instant()->GetOverlayContents()); | 209 EXPECT_EQ(overlay, instant()->GetOverlayContents()); |
| 203 | 210 |
| 204 // Unfocusing and refocusing the omnibox should also preserve the overlay. | 211 // Unfocusing and refocusing the omnibox should also preserve the overlay. |
| 205 ui_test_utils::ClickOnView(browser(), VIEW_ID_TAB_CONTAINER); | 212 BlurOmniboxAndFocusContents( |
| 206 EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_TAB_CONTAINER)); | 213 browser()->tab_strip_model()->GetActiveWebContents()); |
| 207 | |
| 208 FocusOmnibox(); | 214 FocusOmnibox(); |
| 209 EXPECT_FALSE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_TAB_CONTAINER)); | 215 EXPECT_FALSE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_TAB_CONTAINER)); |
| 210 EXPECT_EQ(overlay, instant()->GetOverlayContents()); | 216 EXPECT_EQ(overlay, instant()->GetOverlayContents()); |
| 211 } | 217 } |
| 212 | 218 |
| 213 IN_PROC_BROWSER_TEST_F(InstantExtendedTest, InputShowsOverlay) { | 219 IN_PROC_BROWSER_TEST_F(InstantExtendedTest, InputShowsOverlay) { |
| 214 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); | 220 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); |
| 215 | 221 |
| 216 // Focus omnibox and confirm overlay isn't shown. | 222 // Focus omnibox and confirm overlay isn't shown. |
| 217 FocusOmniboxAndWaitForInstantExtendedSupport(); | 223 FocusOmniboxAndWaitForInstantExtendedSupport(); |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 360 content::WindowedNotificationObserver observer( | 366 content::WindowedNotificationObserver observer( |
| 361 chrome::NOTIFICATION_INSTANT_TAB_SUPPORT_DETERMINED, | 367 chrome::NOTIFICATION_INSTANT_TAB_SUPPORT_DETERMINED, |
| 362 content::NotificationService::AllSources()); | 368 content::NotificationService::AllSources()); |
| 363 | 369 |
| 364 // Do a search and commit it. | 370 // Do a search and commit it. |
| 365 SetOmniboxTextAndWaitForOverlayToShow("hello k"); | 371 SetOmniboxTextAndWaitForOverlayToShow("hello k"); |
| 366 EXPECT_EQ(ASCIIToUTF16("hello k"), omnibox()->GetText()); | 372 EXPECT_EQ(ASCIIToUTF16("hello k"), omnibox()->GetText()); |
| 367 browser()->window()->GetLocationBar()->AcceptInput(); | 373 browser()->window()->GetLocationBar()->AcceptInput(); |
| 368 observer.Wait(); | 374 observer.Wait(); |
| 369 | 375 |
| 370 // With a committed results page, do a search by unfocusing the omnibox and | 376 // With a committed results page, do a search by bluring the omnibox and |
|
Jered
2013/04/05 16:27:07
bluring -> blurring
msw
2013/04/05 16:39:02
Done.
| |
| 371 // focusing the contents. | 377 // focusing the contents. Call handleOnChange before focusing the contents. |
| 372 SetOmniboxText("hello"); | 378 SetOmniboxText("hello"); |
| 373 // Calling handleOnChange manually to make sure it is called before the | |
| 374 // Focus() call below. | |
| 375 EXPECT_TRUE(content::ExecuteScript(instant()->instant_tab()->contents(), | 379 EXPECT_TRUE(content::ExecuteScript(instant()->instant_tab()->contents(), |
| 376 "suggestion = 'hello kitty';" | 380 "suggestion = 'hello kitty';" |
| 377 "handleOnChange();")); | 381 "handleOnChange();")); |
| 378 instant()->instant_tab()->contents()->GetView()->Focus(); | 382 BlurOmniboxAndFocusContents(instant()->instant_tab()->contents()); |
| 379 | 383 |
| 380 // Search term extraction should kick in with the autocompleted text. | 384 // Search term extraction should kick in with the autocompleted text. |
| 381 EXPECT_EQ(ASCIIToUTF16("hello kitty"), omnibox()->GetText()); | 385 EXPECT_EQ(ASCIIToUTF16("hello kitty"), omnibox()->GetText()); |
| 382 | 386 |
| 383 // Suggestion should be cleared at this point. | 387 // Suggestion should be cleared at this point. |
| 384 EXPECT_EQ(ASCIIToUTF16(""), GetGrayText()); | 388 EXPECT_EQ(ASCIIToUTF16(""), GetGrayText()); |
| 385 } | 389 } |
| 386 | 390 |
| 387 // Checks that a previous Navigation suggestion is not re-used when a search | 391 // Checks that a previous Navigation suggestion is not re-used when a search |
| 388 // suggestion comes in. Disabled on Mac because omnibox focus loss is not | 392 // suggestion comes in. Disabled on Mac because omnibox focus loss is not |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 405 "behavior = 1;")); | 409 "behavior = 1;")); |
| 406 SetOmniboxTextAndWaitForOverlayToShow("exa"); | 410 SetOmniboxTextAndWaitForOverlayToShow("exa"); |
| 407 EXPECT_EQ(ASCIIToUTF16("example.com"), omnibox()->GetText()); | 411 EXPECT_EQ(ASCIIToUTF16("example.com"), omnibox()->GetText()); |
| 408 | 412 |
| 409 // Now send a search suggestion and see that Navigation suggestion is no | 413 // Now send a search suggestion and see that Navigation suggestion is no |
| 410 // longer kept. | 414 // longer kept. |
| 411 SetOmniboxText("exam"); | 415 SetOmniboxText("exam"); |
| 412 EXPECT_TRUE(ExecuteScript("suggestion = 'exams are great';" | 416 EXPECT_TRUE(ExecuteScript("suggestion = 'exams are great';" |
| 413 "behavior = 2;" | 417 "behavior = 2;" |
| 414 "handleOnChange();")); | 418 "handleOnChange();")); |
| 415 instant()->overlay()->contents()->GetView()->Focus(); | 419 BlurOmniboxAndFocusContents(instant()->overlay()->contents()); |
| 416 EXPECT_EQ(ASCIIToUTF16("exams are great"), omnibox()->GetText()); | 420 EXPECT_EQ(ASCIIToUTF16("exams are great"), omnibox()->GetText()); |
| 417 | 421 |
| 418 // TODO(jered): Remove this after fixing OnBlur(). | 422 // TODO(jered): Remove this after fixing OnBlur(). |
| 419 omnibox()->RevertAll(); | 423 omnibox()->RevertAll(); |
| 420 } | 424 } |
| 421 | 425 |
| 422 // This test simulates a search provider using the InstantExtended API to | 426 // This test simulates a search provider using the InstantExtended API to |
| 423 // navigate through the suggested results and back to the original user query. | 427 // navigate through the suggested results and back to the original user query. |
| 424 IN_PROC_BROWSER_TEST_F(InstantExtendedTest, NavigateSuggestionsWithArrowKeys) { | 428 IN_PROC_BROWSER_TEST_F(InstantExtendedTest, NavigateSuggestionsWithArrowKeys) { |
| 425 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); | 429 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); |
| (...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 638 content::WebContents* active_tab = | 642 content::WebContents* active_tab = |
| 639 browser()->tab_strip_model()->GetActiveWebContents(); | 643 browser()->tab_strip_model()->GetActiveWebContents(); |
| 640 EXPECT_NE(ntp_url, active_tab->GetURL()); | 644 EXPECT_NE(ntp_url, active_tab->GetURL()); |
| 641 } | 645 } |
| 642 | 646 |
| 643 IN_PROC_BROWSER_TEST_F(InstantExtendedTest, OmniboxHasFocusOnNewTab) { | 647 IN_PROC_BROWSER_TEST_F(InstantExtendedTest, OmniboxHasFocusOnNewTab) { |
| 644 // Setup Instant. | 648 // Setup Instant. |
| 645 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); | 649 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); |
| 646 FocusOmniboxAndWaitForInstantExtendedSupport(); | 650 FocusOmniboxAndWaitForInstantExtendedSupport(); |
| 647 | 651 |
| 648 // Explicitly unfocus the omnibox. | 652 // Explicitly blur the omnibox. |
| 649 EXPECT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); | 653 BlurOmniboxAndFocusContents( |
|
Jered
2013/04/05 16:27:07
Same question here.
msw
2013/04/05 16:39:02
Done.
| |
| 650 ui_test_utils::ClickOnView(browser(), VIEW_ID_TAB_CONTAINER); | 654 browser()->tab_strip_model()->GetActiveWebContents()); |
| 651 EXPECT_FALSE(omnibox()->model()->has_focus()); | |
| 652 | 655 |
| 653 // Open new tab. Preloaded NTP contents should have been used. | 656 // Open new tab. Preloaded NTP contents should have been used. |
| 654 ui_test_utils::NavigateToURLWithDisposition( | 657 ui_test_utils::NavigateToURLWithDisposition( |
| 655 browser(), | 658 browser(), |
| 656 GURL(chrome::kChromeUINewTabURL), | 659 GURL(chrome::kChromeUINewTabURL), |
| 657 NEW_FOREGROUND_TAB, | 660 NEW_FOREGROUND_TAB, |
| 658 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB); | 661 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB); |
| 659 | 662 |
| 660 // Omnibox should have focus. | 663 // Omnibox should have focus. |
| 661 EXPECT_TRUE(omnibox()->model()->has_focus()); | 664 EXPECT_TRUE(omnibox()->model()->has_focus()); |
| (...skipping 767 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1429 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); | 1432 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); |
| 1430 | 1433 |
| 1431 EXPECT_EQ(instant_url(), instant()->ntp_->contents()->GetURL()); | 1434 EXPECT_EQ(instant_url(), instant()->ntp_->contents()->GetURL()); |
| 1432 | 1435 |
| 1433 // The second argument says to use only the local overlay. | 1436 // The second argument says to use only the local overlay. |
| 1434 instant()->SetInstantEnabled(false, true); | 1437 instant()->SetInstantEnabled(false, true); |
| 1435 | 1438 |
| 1436 EXPECT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl), | 1439 EXPECT_EQ(GURL(chrome::kChromeSearchLocalNtpUrl), |
| 1437 instant()->ntp_->contents()->GetURL()); | 1440 instant()->ntp_->contents()->GetURL()); |
| 1438 } | 1441 } |
| OLD | NEW |