15c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Copyright 2014 The Chromium Authors. All rights reserved. 25c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Use of this source code is governed by a BSD-style license that can be 35c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// found in the LICENSE file. 45c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 55c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chrome/browser/search/search.h" 65c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 75c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/command_line.h" 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/memory/scoped_ptr.h" 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/metrics/field_trial.h" 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/metrics/statistics_recorder.h" 115c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chrome/common/chrome_switches.h" 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "components/search/search.h" 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "components/search/search_switches.h" 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/variations/entropy_provider.h" 155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "testing/gtest/include/gtest/gtest.h" 165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liunamespace chrome { 185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 195c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liunamespace { 205c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 21116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(SearchTest, QueryExtractionEnabled) { 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Query extraction is always enabled on mobile. 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_TRUE(IsQueryExtractionEnabled()); 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass SearchUtilTest : public testing::Test { 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch protected: 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void SetUp() { 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch field_trial_list_.reset(new base::FieldTrialList( 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch new metrics::SHA1EntropyProvider("42"))); 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch base::StatisticsRecorder::Initialize(); 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private: 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch scoped_ptr<base::FieldTrialList> field_trial_list_; 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}; 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 38116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST_F(SearchUtilTest, UseDefaultEmbeddedSearchPageVersion) { 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "EmbeddedSearch", "Group1 espv:-1 query_extraction:1")); 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_TRUE(IsQueryExtractionEnabled()); 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ("espv=1&", InstantExtendedEnabledParam(true)); 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ("espv=1&", InstantExtendedEnabledParam(false)); 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 46116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST_F(SearchUtilTest, ShouldPrefetchSearchResults_InstantExtendedAPIEnabled) { 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "EmbeddedSearch", 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "Group1 espv:2 prefetch_results:1")); 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_TRUE(ShouldPrefetchSearchResults()); 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_TRUE(IsInstantExtendedAPIEnabled()); 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2ul, EmbeddedSearchPageVersion()); 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 55116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST_F(SearchUtilTest, ShouldPrefetchSearchResults_InstantExtendedAPIDisabled) { 56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "EmbeddedSearch", 58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "Group1 espv:1 prefetch_results:1")); 59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_FALSE(ShouldPrefetchSearchResults()); 60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_FALSE(IsInstantExtendedAPIEnabled()); 61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(1ul, EmbeddedSearchPageVersion()); 62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 64116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST_F(SearchUtilTest, ShouldPrefetchSearchResults_DisabledViaFieldTrials) { 65116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 66116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "EmbeddedSearch", 67116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "Group1 espv:2 prefetch_results:0")); 68116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_FALSE(ShouldPrefetchSearchResults()); 69116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2ul, EmbeddedSearchPageVersion()); 70116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 71116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 72116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST_F(SearchUtilTest, ShouldPrefetchSearchResults_EnabledViaCommandLine) { 73116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch CommandLine::ForCurrentProcess()->AppendSwitch( 74116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch switches::kPrefetchSearchResults); 75116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Command-line enable should override Finch. 76116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 77116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "EmbeddedSearch", "Group1 espv:2 prefetch_results:0")); 78116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_TRUE(ShouldPrefetchSearchResults()); 79116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2ul, EmbeddedSearchPageVersion()); 80116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 81116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 82116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST_F(SearchUtilTest, 83116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ShouldReuseInstantSearchBasePage_PrefetchResultsFlagDisabled) { 84116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 85116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "EmbeddedSearch", 86116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "Group1 espv:2 prefetch_results:0 reuse_instant_search_base_page:1")); 87116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_FALSE(ShouldPrefetchSearchResults()); 88116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_FALSE(ShouldReuseInstantSearchBasePage()); 89116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2ul, EmbeddedSearchPageVersion()); 90116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 91116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 92116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST_F(SearchUtilTest, ShouldReuseInstantSearchBasePage_EnabledViaFieldTrial) { 93116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 94116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "EmbeddedSearch", 95116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "Group1 espv:2 prefetch_results:1 reuse_instant_search_base_page:1")); 96116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_TRUE(ShouldReuseInstantSearchBasePage()); 97116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2ul, EmbeddedSearchPageVersion()); 98116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 99116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 100116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST_F(SearchUtilTest, ShouldReuseInstantSearchBasePage_DisabledViaFieldTrial) { 101116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( 102116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "EmbeddedSearch", 103116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "Group1 espv:2 prefetch_results:1 reuse_instant_search_base_page:0")); 104116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_FALSE(ShouldReuseInstantSearchBasePage()); 105116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ(2ul, EmbeddedSearchPageVersion()); 106116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 107116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1085c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} // namespace 1095c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 1105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} // namespace chrome 111