| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "base/command_line.h" | 5 #include "base/command_line.h" |
| 6 #include "base/stringprintf.h" | 6 #include "base/stringprintf.h" |
| 7 #include "base/utf_string_conversions.h" | 7 #include "base/utf_string_conversions.h" |
| 8 #include "chrome/browser/autocomplete/autocomplete_edit.h" | 8 #include "chrome/browser/autocomplete/autocomplete_edit.h" |
| 9 #include "chrome/browser/content_settings/host_content_settings_map.h" | 9 #include "chrome/browser/content_settings/host_content_settings_map.h" |
| 10 #include "chrome/browser/instant/instant_controller.h" | 10 #include "chrome/browser/instant/instant_controller.h" |
| (...skipping 30 matching lines...) Expand all Loading... |
| 41 #define MAYBE_SetSuggestionsValidJson DISABLED_SetSuggestionsValidJson | 41 #define MAYBE_SetSuggestionsValidJson DISABLED_SetSuggestionsValidJson |
| 42 #define MAYBE_SetSuggestionsInvalidSuggestions \ | 42 #define MAYBE_SetSuggestionsInvalidSuggestions \ |
| 43 DISABLED_SetSuggestionsInvalidSuggestions | 43 DISABLED_SetSuggestionsInvalidSuggestions |
| 44 #define MAYBE_SetSuggestionsEmptyJson DISABLED_SetSuggestionsEmptyJson | 44 #define MAYBE_SetSuggestionsEmptyJson DISABLED_SetSuggestionsEmptyJson |
| 45 #define MAYBE_SetSuggestionsEmptySuggestions \ | 45 #define MAYBE_SetSuggestionsEmptySuggestions \ |
| 46 DISABLED_SetSuggestionsEmptySuggestions | 46 DISABLED_SetSuggestionsEmptySuggestions |
| 47 #define MAYBE_SetSuggestionsEmptySuggestion \ | 47 #define MAYBE_SetSuggestionsEmptySuggestion \ |
| 48 DISABLED_SetSuggestionsEmptySuggestion | 48 DISABLED_SetSuggestionsEmptySuggestion |
| 49 #define MAYBE_ShowPreviewNonSearch DISABLED_ShowPreviewNonSearch | 49 #define MAYBE_ShowPreviewNonSearch DISABLED_ShowPreviewNonSearch |
| 50 #define MAYBE_NonSearchToSearch DISABLED_NonSearchToSearch | 50 #define MAYBE_NonSearchToSearch DISABLED_NonSearchToSearch |
| 51 #define MAYBE_SearchToNonSearch DISABLED_SearchToNonSearch |
| 51 #define MAYBE_ValidHeight DISABLED_ValidHeight | 52 #define MAYBE_ValidHeight DISABLED_ValidHeight |
| 52 #define MAYBE_OnSubmitEvent DISABLED_OnSubmitEvent | 53 #define MAYBE_OnSubmitEvent DISABLED_OnSubmitEvent |
| 53 #define MAYBE_OnCancelEvent DISABLED_OnCancelEvent | 54 #define MAYBE_OnCancelEvent DISABLED_OnCancelEvent |
| 54 #define MAYBE_InstantCompleteNever DISABLED_InstantCompleteNever | 55 #define MAYBE_InstantCompleteNever DISABLED_InstantCompleteNever |
| 55 #define MAYBE_InstantCompleteDelayed DISABLED_InstantCompleteDelayed | 56 #define MAYBE_InstantCompleteDelayed DISABLED_InstantCompleteDelayed |
| 56 #define MAYBE_DontCrashOnBlockedJS DISABLED_DontCrashOnBlockedJS | 57 #define MAYBE_DontCrashOnBlockedJS DISABLED_DontCrashOnBlockedJS |
| 57 #define MAYBE_DontPersistSearchbox DISABLED_DontPersistSearchbox | 58 #define MAYBE_DontPersistSearchbox DISABLED_DontPersistSearchbox |
| 58 #define MAYBE_PreloadsInstant DISABLED_PreloadsInstant | 59 #define MAYBE_PreloadsInstant DISABLED_PreloadsInstant |
| 59 #define MAYBE_ExperimentEnabled DISABLED_ExperimentEnabled | 60 #define MAYBE_ExperimentEnabled DISABLED_ExperimentEnabled |
| 60 #else | 61 #else |
| 61 #define MAYBE_OnChangeEvent OnChangeEvent | 62 #define MAYBE_OnChangeEvent OnChangeEvent |
| 62 #define MAYBE_SetSuggestionsArrayOfStrings SetSuggestionsArrayOfStrings | 63 #define MAYBE_SetSuggestionsArrayOfStrings SetSuggestionsArrayOfStrings |
| 63 #define MAYBE_SetSuggestionsEmptyArray SetSuggestionsEmptyArray | 64 #define MAYBE_SetSuggestionsEmptyArray SetSuggestionsEmptyArray |
| 64 #define MAYBE_SetSuggestionsValidJson SetSuggestionsValidJson | 65 #define MAYBE_SetSuggestionsValidJson SetSuggestionsValidJson |
| 65 #define MAYBE_SetSuggestionsInvalidSuggestions SetSuggestionsInvalidSuggestions | 66 #define MAYBE_SetSuggestionsInvalidSuggestions SetSuggestionsInvalidSuggestions |
| 66 #define MAYBE_SetSuggestionsEmptyJson SetSuggestionsEmptyJson | 67 #define MAYBE_SetSuggestionsEmptyJson SetSuggestionsEmptyJson |
| 67 #define MAYBE_SetSuggestionsEmptySuggestions SetSuggestionsEmptySuggestions | 68 #define MAYBE_SetSuggestionsEmptySuggestions SetSuggestionsEmptySuggestions |
| 68 #define MAYBE_SetSuggestionsEmptySuggestion SetSuggestionsEmptySuggestion | 69 #define MAYBE_SetSuggestionsEmptySuggestion SetSuggestionsEmptySuggestion |
| 69 #define MAYBE_ShowPreviewNonSearch ShowPreviewNonSearch | 70 #define MAYBE_ShowPreviewNonSearch ShowPreviewNonSearch |
| 70 #define MAYBE_NonSearchToSearch NonSearchToSearch | 71 #define MAYBE_NonSearchToSearch NonSearchToSearch |
| 72 #define MAYBE_SearchToNonSearch SearchToNonSearch |
| 71 #define MAYBE_ValidHeight ValidHeight | 73 #define MAYBE_ValidHeight ValidHeight |
| 72 #define MAYBE_OnSubmitEvent OnSubmitEvent | 74 #define MAYBE_OnSubmitEvent OnSubmitEvent |
| 73 #define MAYBE_OnCancelEvent OnCancelEvent | 75 #define MAYBE_OnCancelEvent OnCancelEvent |
| 74 #define MAYBE_InstantCompleteNever InstantCompleteNever | 76 #define MAYBE_InstantCompleteNever InstantCompleteNever |
| 75 #define MAYBE_InstantCompleteDelayed InstantCompleteDelayed | 77 #define MAYBE_InstantCompleteDelayed InstantCompleteDelayed |
| 76 #define MAYBE_DontCrashOnBlockedJS DontCrashOnBlockedJS | 78 #define MAYBE_DontCrashOnBlockedJS DontCrashOnBlockedJS |
| 77 #define MAYBE_DontPersistSearchbox DontPersistSearchbox | 79 #define MAYBE_DontPersistSearchbox DontPersistSearchbox |
| 78 #define MAYBE_PreloadsInstant PreloadsInstant | 80 #define MAYBE_PreloadsInstant PreloadsInstant |
| 79 #define MAYBE_ExperimentEnabled ExperimentEnabled | 81 #define MAYBE_ExperimentEnabled ExperimentEnabled |
| 80 #endif | 82 #endif |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 165 ASSERT_TRUE(preview_); | 167 ASSERT_TRUE(preview_); |
| 166 ui_test_utils::WaitForNavigation(&preview_->controller()); | 168 ui_test_utils::WaitForNavigation(&preview_->controller()); |
| 167 } | 169 } |
| 168 | 170 |
| 169 // Wait for instant to load and ensure it is in the state we expect. | 171 // Wait for instant to load and ensure it is in the state we expect. |
| 170 void SetupPreview() { | 172 void SetupPreview() { |
| 171 // Wait for the preview to navigate. | 173 // Wait for the preview to navigate. |
| 172 WaitForPreviewToNavigate(); | 174 WaitForPreviewToNavigate(); |
| 173 | 175 |
| 174 ASSERT_FALSE(browser()->instant()->is_displayable()); | 176 ASSERT_FALSE(browser()->instant()->is_displayable()); |
| 175 ASSERT_TRUE(browser()->instant()->is_active()); | 177 ASSERT_TRUE(HasPreview()); |
| 176 | 178 |
| 177 // When the page loads, the initial searchBox values are set and only a | 179 // When the page loads, the initial searchBox values are set and only a |
| 178 // resize will have been sent. | 180 // resize will have been sent. |
| 179 ASSERT_EQ("true 0 0 0 true d false d false 1 1", | 181 ASSERT_EQ("true 0 0 0 true d false d false 1 1", |
| 180 GetSearchStateAsString(preview_, false)); | 182 GetSearchStateAsString(preview_, false)); |
| 181 } | 183 } |
| 182 | 184 |
| 183 void SetLocationBarText(const std::string& text) { | 185 void SetLocationBarText(const std::string& text) { |
| 184 ASSERT_NO_FATAL_FAILURE(FindLocationBar()); | 186 ASSERT_NO_FATAL_FAILURE(FindLocationBar()); |
| 185 ui_test_utils::WindowedNotificationObserver controller_shown_observer( | 187 ui_test_utils::WindowedNotificationObserver controller_shown_observer( |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 236 bool GetBoolFromJavascript(TabContents* tab_contents, | 238 bool GetBoolFromJavascript(TabContents* tab_contents, |
| 237 const std::string& function, | 239 const std::string& function, |
| 238 bool* result) { | 240 bool* result) { |
| 239 std::string script = StringPrintf( | 241 std::string script = StringPrintf( |
| 240 "window.domAutomationController.send(%s)", function.c_str()); | 242 "window.domAutomationController.send(%s)", function.c_str()); |
| 241 return ui_test_utils::ExecuteJavaScriptAndExtractBool( | 243 return ui_test_utils::ExecuteJavaScriptAndExtractBool( |
| 242 tab_contents->render_view_host(), | 244 tab_contents->render_view_host(), |
| 243 std::wstring(), UTF8ToWide(script), result); | 245 std::wstring(), UTF8ToWide(script), result); |
| 244 } | 246 } |
| 245 | 247 |
| 248 bool HasPreview() { |
| 249 return browser()->instant()->GetPreviewContents() != NULL; |
| 250 } |
| 251 |
| 246 // Returns the state of the search box as a string. This consists of the | 252 // Returns the state of the search box as a string. This consists of the |
| 247 // following: | 253 // following: |
| 248 // window.chrome.sv | 254 // window.chrome.sv |
| 249 // window.onsubmitcalls | 255 // window.onsubmitcalls |
| 250 // window.oncancelcalls | 256 // window.oncancelcalls |
| 251 // window.onchangecalls | 257 // window.onchangecalls |
| 252 // 'true' if window.onresizecalls has been sent, otherwise false. | 258 // 'true' if window.onresizecalls has been sent, otherwise false. |
| 253 // window.beforeLoadSearchBox.value | 259 // window.beforeLoadSearchBox.value |
| 254 // window.beforeLoadSearchBox.verbatim | 260 // window.beforeLoadSearchBox.verbatim |
| 255 // window.chrome.searchBox.value | 261 // window.chrome.searchBox.value |
| (...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 498 } | 504 } |
| 499 | 505 |
| 500 IN_PROC_BROWSER_TEST_F(InstantTest, MAYBE_ShowPreviewNonSearch) { | 506 IN_PROC_BROWSER_TEST_F(InstantTest, MAYBE_ShowPreviewNonSearch) { |
| 501 ASSERT_TRUE(test_server()->Start()); | 507 ASSERT_TRUE(test_server()->Start()); |
| 502 EnableInstant(); | 508 EnableInstant(); |
| 503 GURL url(test_server()->GetURL("files/instant/empty.html")); | 509 GURL url(test_server()->GetURL("files/instant/empty.html")); |
| 504 ASSERT_NO_FATAL_FAILURE(FindLocationBar()); | 510 ASSERT_NO_FATAL_FAILURE(FindLocationBar()); |
| 505 location_bar_->location_entry()->SetUserText(UTF8ToUTF16(url.spec())); | 511 location_bar_->location_entry()->SetUserText(UTF8ToUTF16(url.spec())); |
| 506 | 512 |
| 507 // The preview should not be active or showing. | 513 // The preview should not be active or showing. |
| 508 ASSERT_FALSE(browser()->instant()->is_active()); | 514 ASSERT_FALSE(HasPreview()); |
| 509 ASSERT_FALSE(browser()->instant()->is_displayable()); | 515 ASSERT_FALSE(browser()->instant()->is_displayable()); |
| 510 ASSERT_FALSE(browser()->instant()->IsCurrent()); | 516 ASSERT_FALSE(browser()->instant()->IsCurrent()); |
| 511 ASSERT_EQ(NULL, browser()->instant()->GetPreviewContents()); | 517 ASSERT_EQ(NULL, browser()->instant()->GetPreviewContents()); |
| 512 } | 518 } |
| 513 | 519 |
| 514 // Transition from non-search to search and make sure everything is shown | 520 // Transition from non-search to search and make sure everything is shown |
| 515 // correctly. | 521 // correctly. |
| 516 IN_PROC_BROWSER_TEST_F(InstantTest, MAYBE_NonSearchToSearch) { | 522 IN_PROC_BROWSER_TEST_F(InstantTest, MAYBE_NonSearchToSearch) { |
| 517 ASSERT_TRUE(test_server()->Start()); | 523 ASSERT_TRUE(test_server()->Start()); |
| 518 EnableInstant(); | 524 EnableInstant(); |
| 519 GURL url(test_server()->GetURL("files/instant/empty.html")); | 525 GURL url(test_server()->GetURL("files/instant/empty.html")); |
| 520 ASSERT_NO_FATAL_FAILURE(FindLocationBar()); | 526 ASSERT_NO_FATAL_FAILURE(FindLocationBar()); |
| 521 location_bar_->location_entry()->SetUserText(UTF8ToUTF16(url.spec())); | 527 location_bar_->location_entry()->SetUserText(UTF8ToUTF16(url.spec())); |
| 522 // The preview not should be active and not showing. | 528 // The preview not should be active and not showing. |
| 523 ASSERT_FALSE(browser()->instant()->is_active()); | 529 ASSERT_FALSE(HasPreview()); |
| 524 ASSERT_FALSE(browser()->instant()->is_displayable()); | 530 ASSERT_FALSE(browser()->instant()->is_displayable()); |
| 525 ASSERT_EQ(NULL, browser()->instant()->GetPreviewContents()); | 531 ASSERT_EQ(NULL, browser()->instant()->GetPreviewContents()); |
| 526 | 532 |
| 527 // Now type in some search text. | 533 // Now type in some search text. |
| 528 ASSERT_NO_FATAL_FAILURE(SetupInstantProvider("search.html")); | 534 ASSERT_NO_FATAL_FAILURE(SetupInstantProvider("search.html")); |
| 529 location_bar_->location_entry()->SetUserText(ASCIIToUTF16("def")); | 535 location_bar_->location_entry()->SetUserText(ASCIIToUTF16("def")); |
| 530 | 536 |
| 531 // Wait for the preview to navigate. | 537 // Wait for the preview to navigate. |
| 532 ASSERT_NO_FATAL_FAILURE(WaitForPreviewToNavigate()); | 538 ASSERT_NO_FATAL_FAILURE(WaitForPreviewToNavigate()); |
| 533 | 539 |
| 534 // The controller is still determining if the provider really supports | 540 // The controller is still determining if the provider really supports |
| 535 // instant. | 541 // instant. |
| 536 TabContentsWrapper* current_tab = browser()->instant()->GetPreviewContents(); | 542 TabContentsWrapper* current_tab = browser()->instant()->GetPreviewContents(); |
| 537 ASSERT_TRUE(current_tab); | 543 ASSERT_TRUE(current_tab); |
| 538 | 544 |
| 539 // Instant should be active. | 545 // Instant should be active. |
| 540 EXPECT_TRUE(browser()->instant()->is_active()); | 546 EXPECT_TRUE(HasPreview()); |
| 541 EXPECT_FALSE(browser()->instant()->is_displayable()); | 547 EXPECT_FALSE(browser()->instant()->is_displayable()); |
| 542 | 548 |
| 543 // Because we're waiting on the page, instant isn't current. | 549 // Because we're waiting on the page, instant isn't current. |
| 544 ASSERT_FALSE(browser()->instant()->IsCurrent()); | 550 ASSERT_FALSE(browser()->instant()->IsCurrent()); |
| 545 | 551 |
| 546 // Bounce a message to the renderer so that we know the instant has gotten a | 552 // Bounce a message to the renderer so that we know the instant has gotten a |
| 547 // response back from the renderer as to whether the page supports instant. | 553 // response back from the renderer as to whether the page supports instant. |
| 548 ASSERT_NO_FATAL_FAILURE(WaitForMessageToBeProcessedByRenderer(current_tab)); | 554 ASSERT_NO_FATAL_FAILURE(WaitForMessageToBeProcessedByRenderer(current_tab)); |
| 549 | 555 |
| 550 // Reset the user text so that the page is told the text changed. We should be | 556 // Reset the user text so that the page is told the text changed. We should be |
| 551 // able to nuke this once 66104 is fixed. | 557 // able to nuke this once 66104 is fixed. |
| 552 location_bar_->location_entry()->SetUserText(ASCIIToUTF16("defg")); | 558 location_bar_->location_entry()->SetUserText(ASCIIToUTF16("defg")); |
| 553 | 559 |
| 554 // Wait for the renderer to process it. | 560 // Wait for the renderer to process it. |
| 555 ASSERT_NO_FATAL_FAILURE(WaitForMessageToBeProcessedByRenderer(current_tab)); | 561 ASSERT_NO_FATAL_FAILURE(WaitForMessageToBeProcessedByRenderer(current_tab)); |
| 556 | 562 |
| 557 // We should have gotten a response back from the renderer that resulted in | 563 // We should have gotten a response back from the renderer that resulted in |
| 558 // committing. | 564 // committing. |
| 559 ASSERT_TRUE(browser()->instant()->is_active()); | 565 ASSERT_TRUE(HasPreview()); |
| 560 ASSERT_TRUE(browser()->instant()->is_displayable()); | 566 ASSERT_TRUE(browser()->instant()->is_displayable()); |
| 561 TabContentsWrapper* new_tab = browser()->instant()->GetPreviewContents(); | 567 TabContentsWrapper* new_tab = browser()->instant()->GetPreviewContents(); |
| 562 ASSERT_TRUE(new_tab); | 568 ASSERT_TRUE(new_tab); |
| 563 RenderWidgetHostView* new_rwhv = | 569 RenderWidgetHostView* new_rwhv = |
| 564 new_tab->tab_contents()->GetRenderWidgetHostView(); | 570 new_tab->tab_contents()->GetRenderWidgetHostView(); |
| 565 ASSERT_TRUE(new_rwhv); | 571 ASSERT_TRUE(new_rwhv); |
| 566 ASSERT_TRUE(new_rwhv->IsShowing()); | 572 ASSERT_TRUE(new_rwhv->IsShowing()); |
| 567 } | 573 } |
| 568 | 574 |
| 575 // Transition from search to non-search and make sure instant isn't displayable. |
| 576 // See bug http://crbug.com/100368 for details. |
| 577 IN_PROC_BROWSER_TEST_F(InstantTest, MAYBE_SearchToNonSearch) { |
| 578 ASSERT_TRUE(test_server()->Start()); |
| 579 EnableInstant(); |
| 580 GURL url(test_server()->GetURL("files/instant/empty.html")); |
| 581 ASSERT_NO_FATAL_FAILURE(FindLocationBar()); |
| 582 |
| 583 // Type in some search text. |
| 584 ASSERT_NO_FATAL_FAILURE(SetupInstantProvider("search.html")); |
| 585 location_bar_->location_entry()->SetUserText(ASCIIToUTF16("def")); |
| 586 |
| 587 // Load a non search url. Don't wait for the preview to navigate. It'll still |
| 588 // end up loading in the background. |
| 589 location_bar_->location_entry()->SetUserText(UTF8ToUTF16(url.spec())); |
| 590 |
| 591 // Wait for the preview to navigate. |
| 592 ASSERT_NO_FATAL_FAILURE(WaitForPreviewToNavigate()); |
| 593 |
| 594 // Send onchange so that the page sends up suggestions. |
| 595 TabContentsWrapper* current_tab = browser()->instant()->GetPreviewContents(); |
| 596 ASSERT_TRUE(ui_test_utils::ExecuteJavaScript( |
| 597 current_tab->tab_contents()->render_view_host(), std::wstring(), |
| 598 L"window.chrome.searchBox.onchange();")); |
| 599 ASSERT_NO_FATAL_FAILURE(WaitForMessageToBeProcessedByRenderer(current_tab)); |
| 600 |
| 601 // Instant should be active, but not displaying |
| 602 EXPECT_TRUE(HasPreview()); |
| 603 EXPECT_FALSE(browser()->instant()->is_displayable()); |
| 604 } |
| 605 |
| 569 // Makes sure that if the server doesn't support the instant API we don't show | 606 // Makes sure that if the server doesn't support the instant API we don't show |
| 570 // anything. | 607 // anything. |
| 571 IN_PROC_BROWSER_TEST_F(InstantTest, MAYBE_SearchServerDoesntSupportInstant) { | 608 IN_PROC_BROWSER_TEST_F(InstantTest, MAYBE_SearchServerDoesntSupportInstant) { |
| 572 ASSERT_TRUE(test_server()->Start()); | 609 ASSERT_TRUE(test_server()->Start()); |
| 573 EnableInstant(); | 610 EnableInstant(); |
| 574 ASSERT_NO_FATAL_FAILURE(SetupInstantProvider("empty.html")); | 611 ASSERT_NO_FATAL_FAILURE(SetupInstantProvider("empty.html")); |
| 575 ASSERT_NO_FATAL_FAILURE(FindLocationBar()); | 612 ASSERT_NO_FATAL_FAILURE(FindLocationBar()); |
| 576 | 613 |
| 577 ui_test_utils::WindowedNotificationObserver tab_closed_observer( | 614 ui_test_utils::WindowedNotificationObserver tab_closed_observer( |
| 578 content::NOTIFICATION_TAB_CLOSED, | 615 content::NOTIFICATION_TAB_CLOSED, |
| 579 NotificationService::AllSources()); | 616 NotificationService::AllSources()); |
| 580 | 617 |
| 581 location_bar_->location_entry()->SetUserText(ASCIIToUTF16("d")); | 618 location_bar_->location_entry()->SetUserText(ASCIIToUTF16("d")); |
| 582 ASSERT_TRUE(browser()->instant()); | 619 ASSERT_TRUE(browser()->instant()); |
| 583 // But because we're waiting to determine if the page really supports instant | 620 // But because we're waiting to determine if the page really supports instant |
| 584 // we shouldn't be showing the preview. | 621 // we shouldn't be showing the preview. |
| 585 EXPECT_FALSE(browser()->instant()->is_displayable()); | 622 EXPECT_FALSE(browser()->instant()->is_displayable()); |
| 586 // But instant should still be active. | 623 // But instant should still be active. |
| 587 EXPECT_TRUE(browser()->instant()->is_active()); | 624 EXPECT_TRUE(HasPreview()); |
| 588 | 625 |
| 589 // When the response comes back that the page doesn't support instant the tab | 626 // When the response comes back that the page doesn't support instant the tab |
| 590 // should be closed. | 627 // should be closed. |
| 591 tab_closed_observer.Wait(); | 628 tab_closed_observer.Wait(); |
| 592 EXPECT_FALSE(browser()->instant()->is_displayable()); | 629 EXPECT_FALSE(browser()->instant()->is_displayable()); |
| 593 EXPECT_TRUE(browser()->instant()->is_active()); | 630 EXPECT_FALSE(HasPreview()); |
| 594 EXPECT_FALSE(browser()->instant()->IsCurrent()); | 631 EXPECT_FALSE(browser()->instant()->IsCurrent()); |
| 595 } | 632 } |
| 596 | 633 |
| 597 // Verifies that Instant previews aren't shown for crash URLs. | 634 // Verifies that Instant previews aren't shown for crash URLs. |
| 598 IN_PROC_BROWSER_TEST_F(InstantTest, CrashUrlCancelsInstant) { | 635 IN_PROC_BROWSER_TEST_F(InstantTest, CrashUrlCancelsInstant) { |
| 599 ASSERT_TRUE(test_server()->Start()); | 636 ASSERT_TRUE(test_server()->Start()); |
| 600 EnableInstant(); | 637 EnableInstant(); |
| 601 ASSERT_NO_FATAL_FAILURE(SetupInstantProvider("empty.html")); | 638 ASSERT_NO_FATAL_FAILURE(SetupInstantProvider("empty.html")); |
| 602 ASSERT_NO_FATAL_FAILURE(FindLocationBar()); | 639 ASSERT_NO_FATAL_FAILURE(FindLocationBar()); |
| 603 location_bar_->location_entry()->SetUserText(ASCIIToUTF16("chrome://crash")); | 640 location_bar_->location_entry()->SetUserText(ASCIIToUTF16("chrome://crash")); |
| 604 ASSERT_TRUE(browser()->instant()); | 641 ASSERT_TRUE(browser()->instant()); |
| 605 EXPECT_FALSE(browser()->instant()->is_displayable()); | 642 EXPECT_FALSE(browser()->instant()->is_displayable()); |
| 606 } | 643 } |
| 607 | 644 |
| 608 // Verifies transitioning from loading a non-search string to a search string | 645 // Verifies transitioning from loading a non-search string to a search string |
| 609 // with the provider not supporting instant works (meaning we don't display | 646 // with the provider not supporting instant works (meaning we don't display |
| 610 // anything). | 647 // anything). |
| 611 IN_PROC_BROWSER_TEST_F(InstantTest, | 648 IN_PROC_BROWSER_TEST_F(InstantTest, |
| 612 MAYBE_NonSearchToSearchDoesntSupportInstant) { | 649 MAYBE_NonSearchToSearchDoesntSupportInstant) { |
| 613 ASSERT_TRUE(test_server()->Start()); | 650 ASSERT_TRUE(test_server()->Start()); |
| 614 EnableInstant(); | 651 EnableInstant(); |
| 615 ASSERT_NO_FATAL_FAILURE(SetupInstantProvider("empty.html")); | 652 ASSERT_NO_FATAL_FAILURE(SetupInstantProvider("empty.html")); |
| 616 GURL url(test_server()->GetURL("files/instant/empty.html")); | 653 GURL url(test_server()->GetURL("files/instant/empty.html")); |
| 617 ASSERT_NO_FATAL_FAILURE(FindLocationBar()); | 654 ASSERT_NO_FATAL_FAILURE(FindLocationBar()); |
| 618 location_bar_->location_entry()->SetUserText(UTF8ToUTF16(url.spec())); | 655 location_bar_->location_entry()->SetUserText(UTF8ToUTF16(url.spec())); |
| 619 // The preview should not be showing or active. | 656 // The preview should not be showing or active. |
| 620 EXPECT_FALSE(browser()->instant()->is_displayable()); | 657 EXPECT_FALSE(browser()->instant()->is_displayable()); |
| 621 EXPECT_FALSE(browser()->instant()->is_active()); | 658 EXPECT_FALSE(HasPreview()); |
| 622 | 659 |
| 623 ui_test_utils::WindowedNotificationObserver tab_closed_observer( | 660 ui_test_utils::WindowedNotificationObserver tab_closed_observer( |
| 624 content::NOTIFICATION_TAB_CLOSED, | 661 content::NOTIFICATION_TAB_CLOSED, |
| 625 NotificationService::AllSources()); | 662 NotificationService::AllSources()); |
| 626 | 663 |
| 627 // Now type in some search text. | 664 // Now type in some search text. |
| 628 location_bar_->location_entry()->SetUserText(ASCIIToUTF16("d")); | 665 location_bar_->location_entry()->SetUserText(ASCIIToUTF16("d")); |
| 629 | 666 |
| 630 // Instant should be active. | 667 // Instant should be active. |
| 631 ASSERT_TRUE(browser()->instant()->is_active()); | 668 ASSERT_TRUE(HasPreview()); |
| 632 // Instant should not be current (it's still loading). | 669 // Instant should not be current (it's still loading). |
| 633 EXPECT_FALSE(browser()->instant()->IsCurrent()); | 670 EXPECT_FALSE(browser()->instant()->IsCurrent()); |
| 634 | 671 |
| 635 // When the response comes back that the page doesn't support instant the tab | 672 // When the response comes back that the page doesn't support instant the tab |
| 636 // should be closed. | 673 // should be closed. |
| 637 tab_closed_observer.Wait(); | 674 tab_closed_observer.Wait(); |
| 638 EXPECT_FALSE(browser()->instant()->is_displayable()); | 675 EXPECT_FALSE(browser()->instant()->is_displayable()); |
| 639 // But because the omnibox is still open, instant should be active. | 676 EXPECT_FALSE(HasPreview()); |
| 640 EXPECT_TRUE(browser()->instant()->is_active()); | |
| 641 EXPECT_FALSE(browser()->instant()->is_displayable()); | |
| 642 EXPECT_FALSE(browser()->instant()->IsCurrent()); | 677 EXPECT_FALSE(browser()->instant()->IsCurrent()); |
| 643 EXPECT_EQ(NULL, browser()->instant()->GetPreviewContents()); | 678 EXPECT_EQ(NULL, browser()->instant()->GetPreviewContents()); |
| 644 } | 679 } |
| 645 | 680 |
| 646 // Verifies the page was told a non-zero height. | 681 // Verifies the page was told a non-zero height. |
| 647 IN_PROC_BROWSER_TEST_F(InstantTest, MAYBE_ValidHeight) { | 682 IN_PROC_BROWSER_TEST_F(InstantTest, MAYBE_ValidHeight) { |
| 648 ASSERT_TRUE(test_server()->Start()); | 683 ASSERT_TRUE(test_server()->Start()); |
| 649 EnableInstant(); | 684 EnableInstant(); |
| 650 ASSERT_NO_FATAL_FAILURE(SetupInstantProvider("search.html")); | 685 ASSERT_NO_FATAL_FAILURE(SetupInstantProvider("search.html")); |
| 651 ASSERT_NO_FATAL_FAILURE(SetupLocationBar()); | 686 ASSERT_NO_FATAL_FAILURE(SetupLocationBar()); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 676 | 711 |
| 677 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); | 712 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
| 678 ASSERT_NO_FATAL_FAILURE(SetupLocationBar()); | 713 ASSERT_NO_FATAL_FAILURE(SetupLocationBar()); |
| 679 ASSERT_NO_FATAL_FAILURE(SetupPreview()); | 714 ASSERT_NO_FATAL_FAILURE(SetupPreview()); |
| 680 | 715 |
| 681 ASSERT_NO_FATAL_FAILURE(SetLocationBarText("def")); | 716 ASSERT_NO_FATAL_FAILURE(SetLocationBarText("def")); |
| 682 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_RETURN)); | 717 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_RETURN)); |
| 683 | 718 |
| 684 // Check that the preview contents have been committed. | 719 // Check that the preview contents have been committed. |
| 685 ASSERT_FALSE(browser()->instant()->GetPreviewContents()); | 720 ASSERT_FALSE(browser()->instant()->GetPreviewContents()); |
| 686 ASSERT_FALSE(browser()->instant()->is_active()); | 721 ASSERT_FALSE(HasPreview()); |
| 687 TabContents* contents = browser()->GetSelectedTabContents(); | 722 TabContents* contents = browser()->GetSelectedTabContents(); |
| 688 ASSERT_TRUE(contents); | 723 ASSERT_TRUE(contents); |
| 689 | 724 |
| 690 // We should have two entries. One corresponding to the page the user was | 725 // We should have two entries. One corresponding to the page the user was |
| 691 // first on, and one for the search page. | 726 // first on, and one for the search page. |
| 692 ASSERT_EQ(2, contents->controller().entry_count()); | 727 ASSERT_EQ(2, contents->controller().entry_count()); |
| 693 | 728 |
| 694 // Check that the value is reflected and onsubmit is called. | 729 // Check that the value is reflected and onsubmit is called. |
| 695 EXPECT_EQ("true 1 0 1 true d false defghi true 3 3", | 730 EXPECT_EQ("true 1 0 1 true d false defghi true 3 3", |
| 696 GetSearchStateAsString(preview_, true)); | 731 GetSearchStateAsString(preview_, true)); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 709 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); | 744 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
| 710 ASSERT_NO_FATAL_FAILURE(SetupLocationBar()); | 745 ASSERT_NO_FATAL_FAILURE(SetupLocationBar()); |
| 711 ASSERT_NO_FATAL_FAILURE(SetupPreview()); | 746 ASSERT_NO_FATAL_FAILURE(SetupPreview()); |
| 712 | 747 |
| 713 ASSERT_NO_FATAL_FAILURE(SetLocationBarText("def")); | 748 ASSERT_NO_FATAL_FAILURE(SetLocationBarText("def")); |
| 714 ASSERT_NO_FATAL_FAILURE(ui_test_utils::ClickOnView(browser(), | 749 ASSERT_NO_FATAL_FAILURE(ui_test_utils::ClickOnView(browser(), |
| 715 VIEW_ID_TAB_CONTAINER)); | 750 VIEW_ID_TAB_CONTAINER)); |
| 716 | 751 |
| 717 // Check that the preview contents has been committed. | 752 // Check that the preview contents has been committed. |
| 718 ASSERT_FALSE(browser()->instant()->GetPreviewContents()); | 753 ASSERT_FALSE(browser()->instant()->GetPreviewContents()); |
| 719 ASSERT_FALSE(browser()->instant()->is_active()); | 754 ASSERT_FALSE(HasPreview()); |
| 720 TabContents* contents = browser()->GetSelectedTabContents(); | 755 TabContents* contents = browser()->GetSelectedTabContents(); |
| 721 ASSERT_TRUE(contents); | 756 ASSERT_TRUE(contents); |
| 722 | 757 |
| 723 // Check that the value is reflected and oncancel is called. | 758 // Check that the value is reflected and oncancel is called. |
| 724 EXPECT_EQ("true 0 1 1 true d false def false 3 3", | 759 EXPECT_EQ("true 0 1 1 true d false def false 3 3", |
| 725 GetSearchStateAsString(preview_, true)); | 760 GetSearchStateAsString(preview_, true)); |
| 726 | 761 |
| 727 // Make sure the searchbox values were reset. | 762 // Make sure the searchbox values were reset. |
| 728 EXPECT_EQ("true 0 1 1 true d false false 0 0", | 763 EXPECT_EQ("true 0 1 1 true d false false 0 0", |
| 729 GetSearchStateAsString(preview_, false)); | 764 GetSearchStateAsString(preview_, false)); |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 790 | 825 |
| 791 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); | 826 ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
| 792 ASSERT_NO_FATAL_FAILURE(SetupLocationBar()); | 827 ASSERT_NO_FATAL_FAILURE(SetupLocationBar()); |
| 793 ASSERT_NO_FATAL_FAILURE(SetupPreview()); | 828 ASSERT_NO_FATAL_FAILURE(SetupPreview()); |
| 794 | 829 |
| 795 ASSERT_NO_FATAL_FAILURE(SetLocationBarText("def")); | 830 ASSERT_NO_FATAL_FAILURE(SetLocationBarText("def")); |
| 796 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_RETURN)); | 831 ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_RETURN)); |
| 797 | 832 |
| 798 // Check that the preview contents have been committed. | 833 // Check that the preview contents have been committed. |
| 799 ASSERT_FALSE(browser()->instant()->GetPreviewContents()); | 834 ASSERT_FALSE(browser()->instant()->GetPreviewContents()); |
| 800 ASSERT_FALSE(browser()->instant()->is_active()); | 835 ASSERT_FALSE(HasPreview()); |
| 801 | 836 |
| 802 TabContents* contents = browser()->GetSelectedTabContents(); | 837 TabContents* contents = browser()->GetSelectedTabContents(); |
| 803 ASSERT_TRUE(contents); | 838 ASSERT_TRUE(contents); |
| 804 | 839 |
| 805 // Navigate to a new URL. This should reset the searchbox values. | 840 // Navigate to a new URL. This should reset the searchbox values. |
| 806 ui_test_utils::NavigateToURL( | 841 ui_test_utils::NavigateToURL( |
| 807 browser(), | 842 browser(), |
| 808 GURL(test_server()->GetURL("files/instant/empty.html"))); | 843 GURL(test_server()->GetURL("files/instant/empty.html"))); |
| 809 bool result; | 844 bool result; |
| 810 ASSERT_TRUE(GetBoolFromJavascript( | 845 ASSERT_TRUE(GetBoolFromJavascript( |
| (...skipping 26 matching lines...) Expand all Loading... |
| 837 NotificationService::AllSources()); | 872 NotificationService::AllSources()); |
| 838 | 873 |
| 839 // Focusing the omnibox should cause instant to be preloaded. | 874 // Focusing the omnibox should cause instant to be preloaded. |
| 840 FindLocationBar(); | 875 FindLocationBar(); |
| 841 location_bar_->FocusLocation(false); | 876 location_bar_->FocusLocation(false); |
| 842 TabContentsWrapper* tab_contents = browser()->instant()->GetPreviewContents(); | 877 TabContentsWrapper* tab_contents = browser()->instant()->GetPreviewContents(); |
| 843 EXPECT_TRUE(tab_contents); | 878 EXPECT_TRUE(tab_contents); |
| 844 | 879 |
| 845 instant_support_observer.Wait(); | 880 instant_support_observer.Wait(); |
| 846 | 881 |
| 847 // However, instant should still not be active. | 882 // Instant should have a preview, but not display it. |
| 848 EXPECT_FALSE(browser()->instant()->is_active()); | 883 EXPECT_TRUE(HasPreview()); |
| 849 EXPECT_FALSE(browser()->instant()->is_displayable()); | 884 EXPECT_FALSE(browser()->instant()->is_displayable()); |
| 850 | 885 |
| 851 // Adding a new tab shouldn't delete (or recreate) the TabContentsWrapper. | 886 // Adding a new tab shouldn't delete (or recreate) the TabContentsWrapper. |
| 852 AddBlankTabAndShow(browser()); | 887 AddBlankTabAndShow(browser()); |
| 853 EXPECT_EQ(tab_contents, browser()->instant()->GetPreviewContents()); | 888 EXPECT_EQ(tab_contents, browser()->instant()->GetPreviewContents()); |
| 854 | 889 |
| 855 // Doing a search should still use the same loader for the preview. | 890 // Doing a search should still use the same loader for the preview. |
| 856 SetLocationBarText("def"); | 891 SetLocationBarText("def"); |
| 857 EXPECT_EQ(tab_contents, browser()->instant()->GetPreviewContents()); | 892 EXPECT_EQ(tab_contents, browser()->instant()->GetPreviewContents()); |
| 858 | 893 |
| 859 // Verify that the preview is in fact showing instant search. | 894 // Verify that the preview is in fact showing instant search. |
| 860 EXPECT_TRUE(browser()->instant()->is_active()); | 895 EXPECT_TRUE(HasPreview()); |
| 861 EXPECT_TRUE(browser()->instant()->is_displayable()); | 896 EXPECT_TRUE(browser()->instant()->is_displayable()); |
| 862 EXPECT_TRUE(browser()->instant()->IsCurrent()); | 897 EXPECT_TRUE(browser()->instant()->IsCurrent()); |
| 863 } | 898 } |
| 864 | 899 |
| 865 // Tests the INSTANT experiment of the field trial. | 900 // Tests the INSTANT experiment of the field trial. |
| 866 class InstantFieldTrialInstantTest : public InstantTest { | 901 class InstantFieldTrialInstantTest : public InstantTest { |
| 867 public: | 902 public: |
| 868 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { | 903 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { |
| 869 command_line->AppendSwitchASCII(switches::kInstantFieldTrial, | 904 command_line->AppendSwitchASCII(switches::kInstantFieldTrial, |
| 870 switches::kInstantFieldTrialInstant); | 905 switches::kInstantFieldTrialInstant); |
| 871 } | 906 } |
| 872 }; | 907 }; |
| 873 | 908 |
| 874 // Tests that instant is active, even without calling EnableInstant(). | 909 // Tests that instant is active, even without calling EnableInstant(). |
| 875 IN_PROC_BROWSER_TEST_F(InstantFieldTrialInstantTest, MAYBE_ExperimentEnabled) { | 910 IN_PROC_BROWSER_TEST_F(InstantFieldTrialInstantTest, MAYBE_ExperimentEnabled) { |
| 876 // Check that instant is enabled, despite not setting the preference. | 911 // Check that instant is enabled, despite not setting the preference. |
| 877 Profile* profile = browser()->profile(); | 912 Profile* profile = browser()->profile(); |
| 878 EXPECT_FALSE(profile->GetPrefs()->GetBoolean(prefs::kInstantEnabled)); | 913 EXPECT_FALSE(profile->GetPrefs()->GetBoolean(prefs::kInstantEnabled)); |
| 879 EXPECT_TRUE(InstantController::IsEnabled(profile)); | 914 EXPECT_TRUE(InstantController::IsEnabled(profile)); |
| 880 | 915 |
| 881 ASSERT_TRUE(test_server()->Start()); | 916 ASSERT_TRUE(test_server()->Start()); |
| 882 SetupInstantProvider("search.html"); | 917 SetupInstantProvider("search.html"); |
| 883 SetupLocationBar(); | 918 SetupLocationBar(); |
| 884 SetupPreview(); | 919 SetupPreview(); |
| 885 SetLocationBarText("def"); | 920 SetLocationBarText("def"); |
| 886 | 921 |
| 887 // Check that instant is active and showing a preview. | 922 // Check that instant is active and showing a preview. |
| 888 EXPECT_TRUE(browser()->instant()->is_active()); | 923 EXPECT_TRUE(HasPreview()); |
| 889 EXPECT_TRUE(browser()->instant()->is_displayable()); | 924 EXPECT_TRUE(browser()->instant()->is_displayable()); |
| 890 EXPECT_TRUE(browser()->instant()->IsCurrent()); | 925 EXPECT_TRUE(browser()->instant()->IsCurrent()); |
| 891 } | 926 } |
| 892 | 927 |
| 893 // Tests the HIDDEN experiment of the field trial. | 928 // Tests the HIDDEN experiment of the field trial. |
| 894 class InstantFieldTrialHiddenTest : public InstantTest { | 929 class InstantFieldTrialHiddenTest : public InstantTest { |
| 895 public: | 930 public: |
| 896 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { | 931 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { |
| 897 command_line->AppendSwitchASCII(switches::kInstantFieldTrial, | 932 command_line->AppendSwitchASCII(switches::kInstantFieldTrial, |
| 898 switches::kInstantFieldTrialHidden); | 933 switches::kInstantFieldTrialHidden); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 912 chrome::NOTIFICATION_INSTANT_SUPPORT_DETERMINED, | 947 chrome::NOTIFICATION_INSTANT_SUPPORT_DETERMINED, |
| 913 NotificationService::AllSources()); | 948 NotificationService::AllSources()); |
| 914 SetupLocationBar(); | 949 SetupLocationBar(); |
| 915 WaitForPreviewToNavigate(); | 950 WaitForPreviewToNavigate(); |
| 916 instant_support_observer.Wait(); | 951 instant_support_observer.Wait(); |
| 917 | 952 |
| 918 // Type into the omnibox, but don't press <Enter> yet. | 953 // Type into the omnibox, but don't press <Enter> yet. |
| 919 location_bar_->location_entry()->SetUserText(UTF8ToUTF16("def")); | 954 location_bar_->location_entry()->SetUserText(UTF8ToUTF16("def")); |
| 920 | 955 |
| 921 // Check that instant is active, but the preview is not showing. | 956 // Check that instant is active, but the preview is not showing. |
| 922 EXPECT_TRUE(browser()->instant()->is_active()); | 957 EXPECT_TRUE(HasPreview()); |
| 923 EXPECT_FALSE(browser()->instant()->is_displayable()); | 958 EXPECT_FALSE(browser()->instant()->is_displayable()); |
| 924 EXPECT_FALSE(browser()->instant()->IsCurrent()); | 959 EXPECT_FALSE(browser()->instant()->IsCurrent()); |
| 925 | 960 |
| 926 TabContentsWrapper* tab_contents = browser()->instant()->GetPreviewContents(); | 961 TabContentsWrapper* tab_contents = browser()->instant()->GetPreviewContents(); |
| 927 EXPECT_TRUE(tab_contents); | 962 EXPECT_TRUE(tab_contents); |
| 928 | 963 |
| 929 // Press <Enter> in the omnibox, causing the preview to be committed. | 964 // Press <Enter> in the omnibox, causing the preview to be committed. |
| 930 SendKey(ui::VKEY_RETURN); | 965 SendKey(ui::VKEY_RETURN); |
| 931 | 966 |
| 932 // The preview contents should now be the active tab contents. | 967 // The preview contents should now be the active tab contents. |
| 933 EXPECT_FALSE(browser()->instant()->GetPreviewContents()); | 968 EXPECT_FALSE(browser()->instant()->GetPreviewContents()); |
| 934 EXPECT_FALSE(browser()->instant()->is_active()); | 969 EXPECT_FALSE(HasPreview()); |
| 935 EXPECT_FALSE(browser()->instant()->is_displayable()); | 970 EXPECT_FALSE(browser()->instant()->is_displayable()); |
| 936 EXPECT_FALSE(browser()->instant()->IsCurrent()); | 971 EXPECT_FALSE(browser()->instant()->IsCurrent()); |
| 937 EXPECT_EQ(tab_contents, browser()->GetSelectedTabContentsWrapper()); | 972 EXPECT_EQ(tab_contents, browser()->GetSelectedTabContentsWrapper()); |
| 938 } | 973 } |
| OLD | NEW |