Index: chrome/browser/ui/search/search_unittest.cc |
diff --git a/chrome/browser/ui/search/search_unittest.cc b/chrome/browser/ui/search/search_unittest.cc |
deleted file mode 100644 |
index 6b7744eb677b065b4136ddc5e660ed1198a91776..0000000000000000000000000000000000000000 |
--- a/chrome/browser/ui/search/search_unittest.cc |
+++ /dev/null |
@@ -1,317 +0,0 @@ |
-// Copyright (c) 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "base/command_line.h" |
-#include "base/prefs/pref_service.h" |
-#include "chrome/browser/search_engines/template_url_service.h" |
-#include "chrome/browser/search_engines/template_url_service_factory.h" |
-#include "chrome/browser/ui/search/search.h" |
-#include "chrome/browser/ui/tabs/tab_strip_model.h" |
-#include "chrome/common/chrome_switches.h" |
-#include "chrome/common/pref_names.h" |
-#include "chrome/test/base/browser_with_test_window_test.h" |
-#include "chrome/test/base/ui_test_utils.h" |
-#include "content/public/browser/web_contents.h" |
- |
-namespace chrome { |
-namespace search { |
- |
-TEST(EmbeddedSearchFieldTrialTest, GetFieldTrialInfo) { |
- FieldTrialFlags flags; |
- uint64 group_number = 0; |
- const uint64 ZERO = 0; |
- |
- EXPECT_FALSE(GetFieldTrialInfo("", &flags, &group_number)); |
- EXPECT_EQ(ZERO, group_number); |
- EXPECT_EQ(ZERO, flags.size()); |
- |
- EXPECT_TRUE(GetFieldTrialInfo("Group77", &flags, &group_number)); |
- EXPECT_EQ(uint64(77), group_number); |
- EXPECT_EQ(ZERO, flags.size()); |
- |
- group_number = 0; |
- EXPECT_FALSE(GetFieldTrialInfo("Group77.2", &flags, &group_number)); |
- EXPECT_EQ(ZERO, group_number); |
- EXPECT_EQ(ZERO, flags.size()); |
- |
- EXPECT_FALSE(GetFieldTrialInfo("Invalid77", &flags, &group_number)); |
- EXPECT_EQ(ZERO, group_number); |
- EXPECT_EQ(ZERO, flags.size()); |
- |
- EXPECT_FALSE(GetFieldTrialInfo("Invalid77", &flags, NULL)); |
- EXPECT_EQ(ZERO, flags.size()); |
- |
- EXPECT_TRUE(GetFieldTrialInfo("Group77 ", &flags, &group_number)); |
- EXPECT_EQ(uint64(77), group_number); |
- EXPECT_EQ(ZERO, flags.size()); |
- |
- group_number = 0; |
- flags.clear(); |
- EXPECT_EQ(uint64(9999), GetUInt64ValueForFlagWithDefault("foo", 9999, flags)); |
- EXPECT_TRUE(GetFieldTrialInfo("Group77 foo:6", &flags, &group_number)); |
- EXPECT_EQ(uint64(77), group_number); |
- EXPECT_EQ(uint64(1), flags.size()); |
- EXPECT_EQ(uint64(6), GetUInt64ValueForFlagWithDefault("foo", 9999, flags)); |
- |
- group_number = 0; |
- flags.clear(); |
- EXPECT_TRUE(GetFieldTrialInfo( |
- "Group77 bar:1 baz:7 cat:dogs", &flags, &group_number)); |
- EXPECT_EQ(uint64(77), group_number); |
- EXPECT_EQ(uint64(3), flags.size()); |
- EXPECT_EQ(true, GetBoolValueForFlagWithDefault("bar", false, flags)); |
- EXPECT_EQ(uint64(7), GetUInt64ValueForFlagWithDefault("baz", 0, flags)); |
- EXPECT_EQ("dogs", GetStringValueForFlagWithDefault("cat", "", flags)); |
- EXPECT_EQ("default", GetStringValueForFlagWithDefault( |
- "moose", "default", flags)); |
- |
- group_number = 0; |
- flags.clear(); |
- EXPECT_FALSE(GetFieldTrialInfo( |
- "Group77 bar:1 baz:7 cat:dogs DISABLED", &flags, &group_number)); |
- EXPECT_EQ(ZERO, group_number); |
- EXPECT_EQ(ZERO, flags.size()); |
-} |
- |
-class SearchTest : public BrowserWithTestWindowTest { |
- protected: |
- virtual void SetUp() OVERRIDE { |
- BrowserWithTestWindowTest::SetUp(); |
- TemplateURLServiceFactory::GetInstance()->SetTestingFactoryAndUse( |
- profile(), &TemplateURLServiceFactory::BuildInstanceFor); |
- TemplateURLService* template_url_service = |
- TemplateURLServiceFactory::GetForProfile(profile()); |
- ui_test_utils::WaitForTemplateURLServiceToLoad(template_url_service); |
- |
- TemplateURLData data; |
- data.SetURL("http://foo.com/url?bar={searchTerms}"); |
- data.instant_url = "http://foo.com/instant?foo=foo#foo=foo"; |
- data.alternate_urls.push_back("http://foo.com/alt#quux={searchTerms}"); |
- data.search_terms_replacement_key = "strk"; |
- |
- TemplateURL* template_url = new TemplateURL(profile(), data); |
- // Takes ownership of |template_url|. |
- template_url_service->Add(template_url); |
- template_url_service->SetDefaultSearchProvider(template_url); |
- } |
-}; |
- |
-struct SearchTestCase { |
- const char* url; |
- bool expected_result; |
- const char* comment; |
-}; |
- |
-TEST_F(SearchTest, ShouldAssignURLToInstantRendererExtendedDisabled) { |
- const SearchTestCase kTestCases[] = { |
- {"chrome-search://foo/bar", true, ""}, |
- {"http://foo.com/instant", true, ""}, |
- {"http://foo.com/instant?foo=bar", true, ""}, |
- {"https://foo.com/instant", true, ""}, |
- {"https://foo.com/instant#foo=bar", true, ""}, |
- {"HtTpS://fOo.CoM/instant", true, ""}, |
- {"http://foo.com:80/instant", true, ""}, |
- {"invalid URL", false, "Invalid URL"}, |
- {"unknown://scheme/path", false, "Unknown scheme"}, |
- {"ftp://foo.com/instant", false, "Non-HTTP scheme"}, |
- {"http://sub.foo.com/instant", false, "Non-exact host"}, |
- {"http://foo.com:26/instant", false, "Non-default port"}, |
- {"http://foo.com/instant/bar", false, "Non-exact path"}, |
- {"http://foo.com/Instant", false, "Case sensitive path"}, |
- {"http://foo.com/", false, "Non-exact path"}, |
- {"https://foo.com/", false, "Non-exact path"}, |
- {kLocalOmniboxPopupURL, false, "Non-extended mode"}, |
- {"https://foo.com/url?strk", false, "Non-extended mode"}, |
- {"https://foo.com/alt?strk", false, "Non-extended mode"}, |
- }; |
- |
- for (size_t i = 0; i < arraysize(kTestCases); ++i) { |
- const SearchTestCase& test = kTestCases[i]; |
- EXPECT_EQ(test.expected_result, |
- ShouldAssignURLToInstantRenderer(GURL(test.url), profile())) |
- << test.url << " " << test.comment; |
- } |
-} |
- |
-TEST_F(SearchTest, ShouldAssignURLToInstantRendererExtendedEnabled) { |
- EnableInstantExtendedAPIForTesting(); |
- |
- const SearchTestCase kTestCases[] = { |
- {kLocalOmniboxPopupURL, true, ""}, |
- {"https://foo.com/instant?strk", true, ""}, |
- {"https://foo.com/instant#strk", true, ""}, |
- {"https://foo.com/instant?strk=0", true, ""}, |
- {"https://foo.com/url?strk", true, ""}, |
- {"https://foo.com/alt?strk", true, ""}, |
- {"http://foo.com/instant", false, "Non-HTTPS"}, |
- {"http://foo.com/instant?strk", false, "Non-HTTPS"}, |
- {"http://foo.com/instant?strk=1", false, "Non-HTTPS"}, |
- {"https://foo.com/instant", false, "No search terms replacement"}, |
- {"https://foo.com/?strk", false, "Non-exact path"}, |
- }; |
- |
- for (size_t i = 0; i < arraysize(kTestCases); ++i) { |
- const SearchTestCase& test = kTestCases[i]; |
- EXPECT_EQ(test.expected_result, |
- ShouldAssignURLToInstantRenderer(GURL(test.url), profile())) |
- << test.url << " " << test.comment; |
- } |
-} |
- |
-TEST_F(SearchTest, CoerceCommandLineURLToTemplateURL) { |
- TemplateURL* template_url = |
- TemplateURLServiceFactory::GetForProfile(profile())-> |
- GetDefaultSearchProvider(); |
- EXPECT_EQ( |
- GURL("https://foo.com/instant?bar=bar#bar=bar"), |
- CoerceCommandLineURLToTemplateURL( |
- GURL("http://myserver.com:9000/dev?bar=bar#bar=bar"), |
- template_url->instant_url_ref())); |
-} |
- |
-const SearchTestCase kInstantNTPTestCases[] = { |
- {"https://foo.com/instant?strk", true, "Valid Instant URL"}, |
- {"https://foo.com/instant#strk", true, "Valid Instant URL"}, |
- {"https://foo.com/url?strk", true, "Valid search URL"}, |
- {"https://foo.com/url#strk", true, "Valid search URL"}, |
- {"https://foo.com/alt?strk", true, "Valid alternative URL"}, |
- {"https://foo.com/alt#strk", true, "Valid alternative URL"}, |
- {"https://foo.com/url?strk&bar=", true, "No query terms"}, |
- {"https://foo.com/url?strk&q=abc", true, "No query terms key"}, |
- {"https://foo.com/url?strk#bar=abc", true, "Query terms key in ref"}, |
- {"https://foo.com/url?strk&bar=abc", false, "Has query terms"}, |
- {"http://foo.com/instant?strk=1", false, "Insecure URL"}, |
- {"https://foo.com/instant", false, "No search terms replacement"}, |
- {"chrome://blank/", false, "Chrome scheme"}, |
- {"chrome-search//foo", false, "Chrome-search scheme"}, |
- {kLocalOmniboxPopupURL, false, "Local omnibox popup"}, |
- {"https://bar.com/instant?strk=1", false, "Random non-search page"}, |
-}; |
- |
-TEST_F(SearchTest, InstantNTPExtendedEnabled) { |
- EnableInstantExtendedAPIForTesting(); |
- AddTab(browser(), GURL("chrome://blank")); |
- for (size_t i = 0; i < arraysize(kInstantNTPTestCases); ++i) { |
- const SearchTestCase& test = kInstantNTPTestCases[i]; |
- NavigateAndCommitActiveTab(GURL(test.url)); |
- const content::WebContents* contents = |
- browser()->tab_strip_model()->GetWebContentsAt(0); |
- EXPECT_EQ(test.expected_result, IsInstantNTP(contents)) |
- << test.url << " " << test.comment; |
- } |
-} |
- |
-TEST_F(SearchTest, InstantNTPExtendedDisabled) { |
- AddTab(browser(), GURL("chrome://blank")); |
- for (size_t i = 0; i < arraysize(kInstantNTPTestCases); ++i) { |
- const SearchTestCase& test = kInstantNTPTestCases[i]; |
- NavigateAndCommitActiveTab(GURL(test.url)); |
- const content::WebContents* contents = |
- browser()->tab_strip_model()->GetWebContentsAt(0); |
- EXPECT_FALSE(IsInstantNTP(contents)) << test.url << " " << test.comment; |
- } |
-} |
- |
-TEST_F(SearchTest, InstantNTPCustomNavigationEntry) { |
- EnableInstantExtendedAPIForTesting(); |
- AddTab(browser(), GURL("chrome://blank")); |
- for (size_t i = 0; i < arraysize(kInstantNTPTestCases); ++i) { |
- const SearchTestCase& test = kInstantNTPTestCases[i]; |
- NavigateAndCommitActiveTab(GURL(test.url)); |
- content::WebContents* contents = |
- browser()->tab_strip_model()->GetWebContentsAt(0); |
- content::NavigationController& controller = contents->GetController(); |
- controller.SetTransientEntry( |
- controller.CreateNavigationEntry(GURL("chrome://blank"), |
- content::Referrer(), |
- content::PAGE_TRANSITION_LINK, |
- false, |
- std::string(), |
- contents->GetBrowserContext())); |
- // The active entry is chrome://blank and not an NTP. |
- EXPECT_FALSE(IsInstantNTP(contents)); |
- EXPECT_EQ(test.expected_result, |
- NavEntryIsInstantNTP(contents, |
- controller.GetLastCommittedEntry())) |
- << test.url << " " << test.comment; |
- } |
-} |
- |
-TEST_F(SearchTest, GetInstantURLExtendedDisabled) { |
- // Instant is disabled, so no Instant URL. |
- EXPECT_EQ(GURL(), GetInstantURL(profile())); |
- |
- // Enable Instant. |
- profile()->GetPrefs()->SetBoolean(prefs::kInstantEnabled, true); |
- EXPECT_EQ(GURL("http://foo.com/instant?foo=foo#foo=foo"), |
- GetInstantURL(profile())); |
- |
- // Override the Instant URL on the commandline. |
- CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
- switches::kInstantURL, |
- "http://myserver.com:9000/dev?bar=bar#bar=bar"); |
- EXPECT_EQ(GURL("http://myserver.com:9000/dev?bar=bar#bar=bar"), |
- GetInstantURL(profile())); |
-} |
- |
-TEST_F(SearchTest, GetInstantURLExtendedEnabled) { |
- EnableInstantExtendedAPIForTesting(); |
- |
- // Instant is disabled, so no Instant URL. |
- EXPECT_EQ(GURL(), GetInstantURL(profile())); |
- |
- // Enable Instant. Still no Instant URL because "strk" is missing. |
- profile()->GetPrefs()->SetBoolean(prefs::kInstantExtendedEnabled, true); |
- EXPECT_EQ(GURL(), GetInstantURL(profile())); |
- |
- { |
- // Set an Instant URL with a valid search terms replacement key. |
- TemplateURLService* template_url_service = |
- TemplateURLServiceFactory::GetForProfile(profile()); |
- |
- TemplateURLData data; |
- data.SetURL("http://foo.com/url?bar={searchTerms}"); |
- data.instant_url = "http://foo.com/instant?foo=foo#foo=foo&strk"; |
- data.search_terms_replacement_key = "strk"; |
- |
- TemplateURL* template_url = new TemplateURL(profile(), data); |
- // Takes ownership of |template_url|. |
- template_url_service->Add(template_url); |
- template_url_service->SetDefaultSearchProvider(template_url); |
- } |
- |
- // Now there should be a valid Instant URL. Note the HTTPS "upgrade". |
- EXPECT_EQ(GURL("https://foo.com/instant?foo=foo#foo=foo&strk"), |
- GetInstantURL(profile())); |
- |
- // Enable suggest. No difference. |
- profile()->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, true); |
- EXPECT_EQ(GURL("https://foo.com/instant?foo=foo#foo=foo&strk"), |
- GetInstantURL(profile())); |
- |
- // Disable Instant. No difference, because suggest is still enabled. |
- profile()->GetPrefs()->SetBoolean(prefs::kInstantExtendedEnabled, false); |
- EXPECT_EQ(GURL("https://foo.com/instant?foo=foo#foo=foo&strk"), |
- GetInstantURL(profile())); |
- |
- // Override the Instant URL on the commandline. Oops, forgot "strk". |
- CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
- switches::kInstantURL, |
- "http://myserver.com:9000/dev?bar=bar#bar=bar"); |
- EXPECT_EQ(GURL(), GetInstantURL(profile())); |
- |
- // Override with "strk". For fun, put it in the query, instead of the ref. |
- CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
- switches::kInstantURL, |
- "http://myserver.com:9000/dev?bar=bar&strk#bar=bar"); |
- EXPECT_EQ(GURL("http://myserver.com:9000/dev?bar=bar&strk#bar=bar"), |
- GetInstantURL(profile())); |
- |
- // Disable suggest. No Instant URL. |
- profile()->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, false); |
- EXPECT_EQ(GURL(), GetInstantURL(profile())); |
-} |
- |
-} // namespace search |
-} // namespace chrome |