| 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
|
|
|