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/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/prefs/pref_service.h" | 8 #include "base/prefs/pref_service.h" |
| 9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
| 10 #include "base/stringprintf.h" | 10 #include "base/stringprintf.h" |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 22 #include "chrome/browser/history/history_types.h" | 22 #include "chrome/browser/history/history_types.h" |
| 23 #include "chrome/browser/history/top_sites.h" | 23 #include "chrome/browser/history/top_sites.h" |
| 24 #include "chrome/browser/profiles/profile.h" | 24 #include "chrome/browser/profiles/profile.h" |
| 25 #include "chrome/browser/search/instant_service.h" | 25 #include "chrome/browser/search/instant_service.h" |
| 26 #include "chrome/browser/search/instant_service_factory.h" | 26 #include "chrome/browser/search/instant_service_factory.h" |
| 27 #include "chrome/browser/search/search.h" | 27 #include "chrome/browser/search/search.h" |
| 28 #include "chrome/browser/search_engines/template_url_service.h" | 28 #include "chrome/browser/search_engines/template_url_service.h" |
| 29 #include "chrome/browser/search_engines/template_url_service_factory.h" | 29 #include "chrome/browser/search_engines/template_url_service_factory.h" |
| 30 #include "chrome/browser/themes/theme_service.h" | 30 #include "chrome/browser/themes/theme_service.h" |
| 31 #include "chrome/browser/themes/theme_service_factory.h" | 31 #include "chrome/browser/themes/theme_service_factory.h" |
| 32 #include "chrome/browser/ui/browser_list.h" | |
| 33 #include "chrome/browser/ui/browser_tabstrip.h" | |
| 32 #include "chrome/browser/ui/omnibox/omnibox_view.h" | 34 #include "chrome/browser/ui/omnibox/omnibox_view.h" |
| 33 #include "chrome/browser/ui/search/instant_commit_type.h" | 35 #include "chrome/browser/ui/search/instant_commit_type.h" |
| 34 #include "chrome/browser/ui/search/instant_ntp.h" | 36 #include "chrome/browser/ui/search/instant_ntp.h" |
| 35 #include "chrome/browser/ui/search/instant_overlay.h" | 37 #include "chrome/browser/ui/search/instant_overlay.h" |
| 36 #include "chrome/browser/ui/search/instant_tab.h" | 38 #include "chrome/browser/ui/search/instant_tab.h" |
| 37 #include "chrome/browser/ui/search/instant_test_utils.h" | 39 #include "chrome/browser/ui/search/instant_test_utils.h" |
| 38 #include "chrome/browser/ui/search/search_tab_helper.h" | 40 #include "chrome/browser/ui/search/search_tab_helper.h" |
| 39 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 41 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| 40 #include "chrome/browser/ui/webui/theme_source.h" | 42 #include "chrome/browser/ui/webui/theme_source.h" |
| 41 #include "chrome/common/chrome_notification_types.h" | 43 #include "chrome/common/chrome_notification_types.h" |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 78 public: | 80 public: |
| 79 InstantExtendedTest() | 81 InstantExtendedTest() |
| 80 : on_most_visited_change_calls_(0), | 82 : on_most_visited_change_calls_(0), |
| 81 most_visited_items_count_(0), | 83 most_visited_items_count_(0), |
| 82 first_most_visited_item_id_(0), | 84 first_most_visited_item_id_(0), |
| 83 on_native_suggestions_calls_(0), | 85 on_native_suggestions_calls_(0), |
| 84 on_change_calls_(0), | 86 on_change_calls_(0), |
| 85 submit_count_(0) { | 87 submit_count_(0) { |
| 86 } | 88 } |
| 87 protected: | 89 protected: |
| 88 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { | 90 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { |
| 89 chrome::EnableInstantExtendedAPIForTesting(); | 91 command_line->AppendSwitch(switches::kEnableInstantExtendedAPI); |
| 90 ASSERT_TRUE(https_test_server().Start()); | 92 ASSERT_TRUE(https_test_server().Start()); |
| 91 GURL instant_url = https_test_server().GetURL( | 93 GURL instant_url = https_test_server().GetURL( |
| 92 "files/instant_extended.html?strk=1&"); | 94 "files/instant_extended.html?strk=1&"); |
| 93 InstantTestBase::Init(instant_url); | 95 InstantTestBase::Init(instant_url); |
| 94 } | 96 } |
| 95 | 97 |
| 96 virtual void SetUpOnMainThread() OVERRIDE { | 98 virtual void SetUpOnMainThread() OVERRIDE { |
| 97 browser()->toolbar_model()->SetSupportsExtractionOfURLLikeSearchTerms(true); | 99 browser()->toolbar_model()->SetSupportsExtractionOfURLLikeSearchTerms(true); |
| 98 } | 100 } |
| 99 | 101 |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 146 }; | 148 }; |
| 147 | 149 |
| 148 // Test class used to verify chrome-search: scheme and access policy from the | 150 // Test class used to verify chrome-search: scheme and access policy from the |
| 149 // Instant overlay. This is a subclass of |ExtensionBrowserTest| because it | 151 // Instant overlay. This is a subclass of |ExtensionBrowserTest| because it |
| 150 // loads a theme that provides a background image. | 152 // loads a theme that provides a background image. |
| 151 class InstantPolicyTest : public ExtensionBrowserTest, public InstantTestBase { | 153 class InstantPolicyTest : public ExtensionBrowserTest, public InstantTestBase { |
| 152 public: | 154 public: |
| 153 InstantPolicyTest() {} | 155 InstantPolicyTest() {} |
| 154 | 156 |
| 155 protected: | 157 protected: |
| 158 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { | |
| 159 command_line->AppendSwitch(switches::kEnableInstantExtendedAPI); | |
| 160 } | |
| 161 | |
| 156 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { | 162 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { |
| 157 chrome::EnableInstantExtendedAPIForTesting(); | |
| 158 ASSERT_TRUE(https_test_server().Start()); | 163 ASSERT_TRUE(https_test_server().Start()); |
| 159 GURL instant_url = https_test_server().GetURL( | 164 GURL instant_url = https_test_server().GetURL( |
| 160 "files/instant_extended.html?strk=1&"); | 165 "files/instant_extended.html?strk=1&"); |
| 161 InstantTestBase::Init(instant_url); | 166 InstantTestBase::Init(instant_url); |
| 162 } | 167 } |
| 163 | 168 |
| 164 void InstallThemeSource() { | 169 void InstallThemeSource() { |
| 165 ThemeSource* theme = new ThemeSource(profile()); | 170 ThemeSource* theme = new ThemeSource(profile()); |
| 166 content::URLDataSource::Add(profile(), theme); | 171 content::URLDataSource::Add(profile(), theme); |
| 167 } | 172 } |
| (...skipping 559 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 727 EXPECT_EQ(instant()->GetLocalInstantURL(), active_tab->GetURL().spec()); | 732 EXPECT_EQ(instant()->GetLocalInstantURL(), active_tab->GetURL().spec()); |
| 728 } | 733 } |
| 729 | 734 |
| 730 IN_PROC_BROWSER_TEST_F(InstantExtendedTest, PreloadedNTPDoesntSupportInstant) { | 735 IN_PROC_BROWSER_TEST_F(InstantExtendedTest, PreloadedNTPDoesntSupportInstant) { |
| 731 // Setup Instant. | 736 // Setup Instant. |
| 732 GURL instant_url = test_server()->GetURL("files/empty.html?strk=1"); | 737 GURL instant_url = test_server()->GetURL("files/empty.html?strk=1"); |
| 733 InstantTestBase::Init(instant_url); | 738 InstantTestBase::Init(instant_url); |
| 734 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); | 739 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); |
| 735 FocusOmniboxAndWaitForInstantOverlayAndNTPSupport(); | 740 FocusOmniboxAndWaitForInstantOverlayAndNTPSupport(); |
| 736 | 741 |
| 737 // NTP contents should not be preloaded. | 742 // NTP contents should have fallen back to the local page. |
| 738 ASSERT_EQ(static_cast<InstantNTP*>(NULL), instant()->ntp()); | 743 ASSERT_TRUE(instant()->ntp_); |
|
samarth
2013/05/03 04:39:17
nit: just write:
ASSERT_NE(NULL, instant()->ntp())
David Black
2013/05/03 06:14:44
Done.
| |
| 744 content::WebContents* ntp_contents = instant()->ntp_->contents(); | |
| 745 EXPECT_TRUE(ntp_contents); | |
| 746 GURL ntp_url = ntp_contents->GetURL(); | |
| 747 EXPECT_EQ(chrome::kChromeSearchLocalNtpUrl, ntp_url.spec()); //asdf | |
| 739 | 748 |
| 740 // Open new tab. Should use local NTP. | 749 // Open new tab. Should use local NTP. |
| 741 ui_test_utils::NavigateToURLWithDisposition( | 750 ui_test_utils::NavigateToURLWithDisposition( |
| 742 browser(), | 751 browser(), |
| 743 GURL(chrome::kChromeUINewTabURL), | 752 GURL(chrome::kChromeUINewTabURL), |
| 744 NEW_FOREGROUND_TAB, | 753 NEW_FOREGROUND_TAB, |
| 745 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB); | 754 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB); |
| 746 content::WebContents* active_tab = | 755 content::WebContents* active_tab = |
| 747 browser()->tab_strip_model()->GetActiveWebContents(); | 756 browser()->tab_strip_model()->GetActiveWebContents(); |
| 748 EXPECT_EQ(instant()->GetLocalInstantURL(), active_tab->GetURL().spec()); | 757 EXPECT_EQ(instant()->GetLocalInstantURL(), active_tab->GetURL().spec()); |
| (...skipping 1233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1982 FocusOmnibox(); | 1991 FocusOmnibox(); |
| 1983 EXPECT_FALSE(instant()->overlay()->IsLocal()); | 1992 EXPECT_FALSE(instant()->overlay()->IsLocal()); |
| 1984 } | 1993 } |
| 1985 | 1994 |
| 1986 IN_PROC_BROWSER_TEST_F(InstantExtendedTest, OverlayDoesntSupportInstant) { | 1995 IN_PROC_BROWSER_TEST_F(InstantExtendedTest, OverlayDoesntSupportInstant) { |
| 1987 GURL instant_url = test_server()->GetURL("files/empty.html?strk=1"); | 1996 GURL instant_url = test_server()->GetURL("files/empty.html?strk=1"); |
| 1988 InstantTestBase::Init(instant_url); | 1997 InstantTestBase::Init(instant_url); |
| 1989 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); | 1998 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); |
| 1990 | 1999 |
| 1991 // Focus the omnibox. When the support determination response comes back, | 2000 // Focus the omnibox. When the support determination response comes back, |
| 1992 // Instant will destroy the non-Instant page. | 2001 // Instant will destroy the non-Instant page and fall back to the local page. |
| 1993 FocusOmniboxAndWaitForInstantOverlayAndNTPSupport(); | 2002 FocusOmniboxAndWaitForInstantOverlayAndNTPSupport(); |
| 1994 EXPECT_EQ(NULL, instant()->GetOverlayContents()); | 2003 ASSERT_TRUE(instant()->overlay_); |
|
samarth
2013/05/03 04:39:17
Same here and elsewhere
David Black
2013/05/03 06:14:44
Done.
| |
| 2004 content::WebContents* overlay_contents = instant()->overlay_->contents(); | |
| 2005 EXPECT_TRUE(overlay_contents);//asdf | |
| 2006 GURL overlay_url = overlay_contents->GetURL(); | |
| 2007 EXPECT_EQ(chrome::kChromeSearchLocalNtpUrl, overlay_url.spec()); | |
| 1995 | 2008 |
| 1996 // The local overlay is used on the next Update(). | 2009 // The local overlay is used on the next Update(). |
| 1997 SetOmniboxText("query"); | 2010 SetOmniboxText("query"); |
| 1998 EXPECT_TRUE(instant()->overlay()->IsLocal()); | 2011 EXPECT_TRUE(instant()->overlay()->IsLocal()); |
| 1999 | 2012 |
| 2000 // Switched back to the remote overlay when omnibox loses and regains focus. | 2013 // Switched back to the remote overlay when omnibox loses and regains focus. |
| 2001 instant()->HideOverlay(); | 2014 instant()->HideOverlay(); |
| 2002 browser()->tab_strip_model()->GetActiveWebContents()->GetView()->Focus(); | 2015 browser()->tab_strip_model()->GetActiveWebContents()->GetView()->Focus(); |
| 2003 FocusOmnibox(); | 2016 FocusOmnibox(); |
| 2004 EXPECT_FALSE(instant()->overlay()->IsLocal()); | 2017 EXPECT_FALSE(instant()->overlay()->IsLocal()); |
| 2005 | 2018 |
| 2006 // Overlay destroyed again after determining support. | 2019 // Overlay falls back to local again after determining support. |
| 2007 FocusOmniboxAndWaitForInstantOverlaySupport(); | 2020 FocusOmniboxAndWaitForInstantOverlaySupport(); |
| 2008 EXPECT_EQ(NULL, instant()->GetOverlayContents()); | 2021 ASSERT_TRUE(instant()->overlay_); |
| 2022 overlay_contents = instant()->overlay_->contents(); | |
| 2023 EXPECT_TRUE(overlay_contents);//asdf | |
| 2024 overlay_url = overlay_contents->GetURL(); | |
| 2025 EXPECT_EQ(chrome::kChromeSearchLocalNtpUrl, overlay_url.spec()); | |
| 2026 | |
| 2009 } | 2027 } |
| 2010 | 2028 |
| 2011 // Test that if Instant alters the input from URL to search, it's respected. | 2029 // Test that if Instant alters the input from URL to search, it's respected. |
| 2012 IN_PROC_BROWSER_TEST_F(InstantExtendedTest, InputChangedFromURLToSearch) { | 2030 IN_PROC_BROWSER_TEST_F(InstantExtendedTest, InputChangedFromURLToSearch) { |
| 2013 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); | 2031 ASSERT_NO_FATAL_FAILURE(SetupInstant(browser())); |
| 2014 FocusOmniboxAndWaitForInstantOverlayAndNTPSupport(); | 2032 FocusOmniboxAndWaitForInstantOverlayAndNTPSupport(); |
| 2015 | 2033 |
| 2016 content::WebContents* overlay = instant()->GetOverlayContents(); | 2034 content::WebContents* overlay = instant()->GetOverlayContents(); |
| 2017 EXPECT_TRUE(ExecuteScript("suggestions = ['mcqueen.com'];")); | 2035 EXPECT_TRUE(ExecuteScript("suggestions = ['mcqueen.com'];")); |
| 2018 | 2036 |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 2042 | 2060 |
| 2043 SendDownArrow(); | 2061 SendDownArrow(); |
| 2044 EXPECT_EQ("result 1", GetOmniboxText()); | 2062 EXPECT_EQ("result 1", GetOmniboxText()); |
| 2045 | 2063 |
| 2046 // Press Enter. | 2064 // Press Enter. |
| 2047 browser()->window()->GetLocationBar()->AcceptInput(); | 2065 browser()->window()->GetLocationBar()->AcceptInput(); |
| 2048 | 2066 |
| 2049 // Confirm that the Instant overlay was NOT committed. | 2067 // Confirm that the Instant overlay was NOT committed. |
| 2050 EXPECT_NE(overlay, browser()->tab_strip_model()->GetActiveWebContents()); | 2068 EXPECT_NE(overlay, browser()->tab_strip_model()->GetActiveWebContents()); |
| 2051 } | 2069 } |
| 2070 | |
| 2071 class InstantExtendedOnlineTest : public InProcessBrowserTest, | |
|
samarth
2013/05/03 04:39:17
nit: how about InstantExtendedFirstTabTest or some
David Black
2013/05/03 06:14:44
Done.
| |
| 2072 public InstantTestBase { | |
| 2073 public: | |
| 2074 InstantExtendedOnlineTest() {} | |
| 2075 protected: | |
| 2076 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { | |
| 2077 command_line->AppendSwitch(switches::kEnableInstantExtendedAPI); | |
| 2078 command_line->AppendSwitch(switches::kEnableLocalFirstLoadNTP); | |
| 2079 } | |
| 2080 }; | |
| 2081 | |
| 2082 IN_PROC_BROWSER_TEST_F( | |
| 2083 InstantExtendedOnlineTest, RedirectToLocalOnLoadFailure) { | |
| 2084 // Create a new window to test the first NTP load. | |
| 2085 ui_test_utils::NavigateToURLWithDisposition( | |
| 2086 browser(), | |
| 2087 GURL(chrome::kChromeUINewTabURL), | |
| 2088 NEW_WINDOW, | |
| 2089 ui_test_utils::BROWSER_TEST_WAIT_FOR_BROWSER); | |
| 2090 | |
| 2091 const BrowserList* native_browser_list = BrowserList::GetInstance( | |
| 2092 chrome::HOST_DESKTOP_TYPE_NATIVE); | |
| 2093 ASSERT_EQ(2u, native_browser_list->size()); | |
| 2094 set_browser(native_browser_list->get(1)); | |
| 2095 | |
| 2096 FocusOmniboxAndWaitForInstantOverlayAndNTPSupport(); | |
| 2097 | |
| 2098 // Also make sure our instant_tab_ is loaded. | |
| 2099 if (!instant()->instant_tab_) { | |
| 2100 content::WindowedNotificationObserver instant_tab_observer( | |
| 2101 chrome::NOTIFICATION_INSTANT_TAB_SUPPORT_DETERMINED, | |
| 2102 content::NotificationService::AllSources()); | |
| 2103 instant_tab_observer.Wait(); | |
| 2104 } | |
| 2105 | |
| 2106 // NTP contents should be preloaded. | |
|
samarth
2013/05/03 04:39:17
So you're relying on the fact that initially we tr
David Black
2013/05/03 06:14:44
Yep. I can't use the normal way of overriding the
sreeram
2013/05/05 08:40:39
I think the right way would be to set the template
| |
| 2107 ASSERT_NE(static_cast<InstantNTP*>(NULL), instant()->ntp()); | |
| 2108 content::WebContents* ntp_contents = instant()->ntp_->contents(); | |
| 2109 EXPECT_TRUE(ntp_contents); | |
| 2110 GURL ntp_url = ntp_contents->GetURL(); | |
| 2111 EXPECT_EQ(chrome::kChromeSearchLocalGoogleNtpUrl, ntp_url.spec()); | |
| 2112 | |
| 2113 // Overlay contents should be preloaded. | |
| 2114 ASSERT_NE(static_cast<InstantOverlay*>(NULL), instant()->overlay()); | |
| 2115 content::WebContents* overlay_contents = instant()->overlay_->contents(); | |
| 2116 EXPECT_TRUE(overlay_contents); | |
| 2117 GURL overlay_url = overlay_contents->GetURL(); | |
| 2118 EXPECT_EQ(chrome::kChromeSearchLocalGoogleNtpUrl, overlay_url.spec()); | |
| 2119 | |
| 2120 // Instant tab contents should be preloaded. | |
| 2121 ASSERT_NE(static_cast<InstantTab*>(NULL), instant()->instant_tab()); | |
| 2122 content::WebContents* instant_tab_contents = | |
| 2123 instant()->instant_tab_->contents(); | |
| 2124 EXPECT_TRUE(instant_tab_contents); | |
| 2125 GURL instant_tab_url = instant_tab_contents->GetURL(); | |
| 2126 EXPECT_EQ(chrome::kChromeSearchLocalGoogleNtpUrl, instant_tab_url.spec()); | |
| 2127 } | |
| OLD | NEW |