Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(34)

Side by Side Diff: chrome/browser/search/instant_service_unittest.cc

Issue 273153004: Revert of Handle TemplateURLService load failure better, and make some test correctness fixes that will be ne… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 <string> 5 #include <string>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/metrics/field_trial.h" 9 #include "base/metrics/field_trial.h"
10 #include "base/strings/string_util.h" 10 #include "base/strings/string_util.h"
(...skipping 11 matching lines...) Expand all
22 #include "content/public/browser/notification_types.h" 22 #include "content/public/browser/notification_types.h"
23 #include "content/public/test/mock_render_process_host.h" 23 #include "content/public/test/mock_render_process_host.h"
24 #include "ipc/ipc_message.h" 24 #include "ipc/ipc_message.h"
25 #include "ipc/ipc_test_sink.h" 25 #include "ipc/ipc_test_sink.h"
26 #include "testing/gmock/include/gmock/gmock.h" 26 #include "testing/gmock/include/gmock/gmock.h"
27 #include "url/gurl.h" 27 #include "url/gurl.h"
28 28
29 class MockInstantServiceObserver : public InstantServiceObserver { 29 class MockInstantServiceObserver : public InstantServiceObserver {
30 public: 30 public:
31 MOCK_METHOD0(DefaultSearchProviderChanged, void()); 31 MOCK_METHOD0(DefaultSearchProviderChanged, void());
32 MOCK_METHOD0(GoogleURLUpdated, void());
32 MOCK_METHOD1(OmniboxStartMarginChanged, void(int)); 33 MOCK_METHOD1(OmniboxStartMarginChanged, void(int));
33 }; 34 };
34 35
35 class InstantServiceTest : public InstantUnitTestBase { 36 class InstantServiceTest : public InstantUnitTestBase {
36 protected: 37 protected:
37 virtual void SetUp() OVERRIDE { 38 virtual void SetUp() OVERRIDE {
38 InstantUnitTestBase::SetUp(); 39 InstantUnitTestBase::SetUp();
39 40
40 instant_service_observer_.reset(new MockInstantServiceObserver()); 41 instant_service_observer_.reset(new MockInstantServiceObserver());
41 instant_service_->AddObserver(instant_service_observer_.get()); 42 instant_service_->AddObserver(instant_service_observer_.get());
42 } 43 }
43 44
44 virtual void TearDown() OVERRIDE { 45 virtual void TearDown() OVERRIDE {
45 instant_service_->RemoveObserver(instant_service_observer_.get()); 46 instant_service_->RemoveObserver(instant_service_observer_.get());
46 InstantUnitTestBase::TearDown(); 47 InstantUnitTestBase::TearDown();
47 } 48 }
48 49
49 InstantSearchPrerenderer* GetInstantSearchPrerenderer() { 50 InstantSearchPrerenderer* GetInstantSearchPrerenderer() {
50 return instant_service_->instant_search_prerenderer(); 51 return instant_service_->instant_search_prerenderer();
51 } 52 }
52 53
53 void UpdateOmniboxStartMargin(int start_margin) { 54 void UpdateOmniboxStartMargin(int start_margin) {
54 instant_service_->OnOmniboxStartMarginChanged(start_margin); 55 instant_service_->OnOmniboxStartMarginChanged(start_margin);
55 } 56 }
56 57
57 scoped_ptr<MockInstantServiceObserver> instant_service_observer_; 58 scoped_ptr<MockInstantServiceObserver> instant_service_observer_;
58 }; 59 };
59 60
60 class InstantServiceEnabledTest : public InstantServiceTest { 61 TEST_F(InstantServiceTest, DispatchDefaultSearchProviderChanged) {
61 protected:
62 virtual void SetUp() OVERRIDE {
63 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
64 "EmbeddedSearch", "Group1 use_cacheable_ntp:1 prefetch_results:1"));
65 InstantServiceTest::SetUp();
66 }
67 };
68
69 TEST_F(InstantServiceEnabledTest, DispatchDefaultSearchProviderChanged) {
70 EXPECT_CALL(*instant_service_observer_.get(), DefaultSearchProviderChanged()) 62 EXPECT_CALL(*instant_service_observer_.get(), DefaultSearchProviderChanged())
71 .Times(1); 63 .Times(1);
72 64
73 const std::string new_base_url = "https://bar.com/"; 65 const std::string& new_base_url = "https://bar.com/";
74 SetUserSelectedDefaultSearchProvider(new_base_url); 66 SetUserSelectedDefaultSearchProvider(new_base_url);
75 } 67 }
76 68
77 TEST_F(InstantServiceTest, DontDispatchGoogleURLUpdatedForNonGoogleURLs) { 69 TEST_F(InstantServiceTest, DispatchGoogleURLUpdated) {
78 EXPECT_CALL(*instant_service_observer_.get(), DefaultSearchProviderChanged()) 70 EXPECT_CALL(*instant_service_observer_.get(), GoogleURLUpdated()).Times(1);
79 .Times(1);
80 const std::string new_dsp_url = "https://bar.com/";
81 SetUserSelectedDefaultSearchProvider(new_dsp_url);
82 testing::Mock::VerifyAndClearExpectations(instant_service_observer_.get());
83 71
84 EXPECT_CALL(*instant_service_observer_.get(), DefaultSearchProviderChanged()) 72 const std::string& new_base_url = "https://www.google.es/";
85 .Times(0);
86 const std::string new_base_url = "https://www.google.es/";
87 NotifyGoogleBaseURLUpdate(new_base_url); 73 NotifyGoogleBaseURLUpdate(new_base_url);
88 } 74 }
89 75
90 TEST_F(InstantServiceTest, DispatchGoogleURLUpdated) { 76 TEST_F(InstantServiceTest, SendsSearchURLsToRenderer) {
91 EXPECT_CALL(*instant_service_observer_.get(), DefaultSearchProviderChanged()) 77 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial("EmbeddedSearch",
92 .Times(1); 78 "Group1 use_cacheable_ntp:1"));
93
94 const std::string new_base_url = "https://www.google.es/";
95 NotifyGoogleBaseURLUpdate(new_base_url);
96 }
97
98 TEST_F(InstantServiceEnabledTest, SendsSearchURLsToRenderer) {
99 scoped_ptr<content::MockRenderProcessHost> rph( 79 scoped_ptr<content::MockRenderProcessHost> rph(
100 new content::MockRenderProcessHost(profile())); 80 new content::MockRenderProcessHost(profile()));
101 rph->sink().ClearMessages(); 81 rph->sink().ClearMessages();
102 instant_service_->Observe( 82 instant_service_->Observe(
103 content::NOTIFICATION_RENDERER_PROCESS_CREATED, 83 content::NOTIFICATION_RENDERER_PROCESS_CREATED,
104 content::Source<content::MockRenderProcessHost>(rph.get()), 84 content::Source<content::MockRenderProcessHost>(rph.get()),
105 content::NotificationService::NoDetails()); 85 content::NotificationService::NoDetails());
106 EXPECT_EQ(1U, rph->sink().message_count()); 86 EXPECT_EQ(1U, rph->sink().message_count());
107 const IPC::Message* msg = rph->sink().GetMessageAt(0); 87 const IPC::Message* msg = rph->sink().GetMessageAt(0);
108 ASSERT_TRUE(msg); 88 ASSERT_TRUE(msg);
109 std::vector<GURL> search_urls; 89 std::vector<GURL> search_urls;
110 GURL new_tab_page_url; 90 GURL new_tab_page_url;
111 ChromeViewMsg_SetSearchURLs::Read(msg, &search_urls, &new_tab_page_url); 91 ChromeViewMsg_SetSearchURLs::Read(msg, &search_urls, &new_tab_page_url);
112 EXPECT_EQ(2U, search_urls.size()); 92 EXPECT_EQ(2U, search_urls.size());
113 EXPECT_EQ("https://www.google.com/alt#quux=", search_urls[0].spec()); 93 EXPECT_EQ("https://www.google.com/alt#quux=", search_urls[0].spec());
114 EXPECT_EQ("https://www.google.com/url?bar=", search_urls[1].spec()); 94 EXPECT_EQ("https://www.google.com/url?bar=", search_urls[1].spec());
115 EXPECT_EQ("https://www.google.com/newtab", new_tab_page_url.spec()); 95 EXPECT_EQ("https://www.google.com/newtab", new_tab_page_url.spec());
116 } 96 }
117 97
118 TEST_F(InstantServiceTest, InstantSearchDisabled) { 98 TEST_F(InstantServiceTest, InstantSearchDisabled) {
119 // 'prefetch_results' flag is not enabled in field trials. Make sure 99 // 'prefetch_results' flag is not enabled in field trials. Make sure
120 // InstantSearchPrerenderer is not initialized. 100 // InstantSearchPrerenderer is not initialized.
121 EXPECT_EQ(static_cast<InstantSearchPrerenderer*>(NULL), 101 EXPECT_EQ(static_cast<InstantSearchPrerenderer*>(NULL),
122 GetInstantSearchPrerenderer()); 102 GetInstantSearchPrerenderer());
123 } 103 }
124 104
125 TEST_F(InstantServiceEnabledTest, 105 TEST_F(InstantServiceTest,
126 ResetInstantSearchPrerenderer_DefaultProviderChanged) { 106 ResetInstantSearchPrerenderer_DefaultProviderChanged) {
107 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
108 "EmbeddedSearch", "Group1 use_cacheable_ntp:1 prefetch_results:1"));
127 EXPECT_CALL(*instant_service_observer_.get(), DefaultSearchProviderChanged()) 109 EXPECT_CALL(*instant_service_observer_.get(), DefaultSearchProviderChanged())
128 .Times(2); 110 .Times(2);
129 111
130 // Set a default search provider that doesn't support Instant. 112 // Set a default search provider that doesn't support Instant.
131 TemplateURLData data; 113 TemplateURLData data;
132 data.SetURL("https://foobar.com/url?bar={searchTerms}"); 114 data.SetURL("https://foobar.com/url?bar={searchTerms}");
133 TemplateURL* template_url = new TemplateURL(profile(), data); 115 TemplateURL* template_url = new TemplateURL(profile(), data);
134 // Takes ownership of |template_url|. 116 // Takes ownership of |template_url|.
135 template_url_service_->Add(template_url); 117 template_url_service_->Add(template_url);
136 template_url_service_->SetUserSelectedDefaultSearchProvider(template_url); 118 template_url_service_->SetUserSelectedDefaultSearchProvider(template_url);
137 119
138 EXPECT_EQ(static_cast<InstantSearchPrerenderer*>(NULL), 120 EXPECT_EQ(static_cast<InstantSearchPrerenderer*>(NULL),
139 GetInstantSearchPrerenderer()); 121 GetInstantSearchPrerenderer());
140 122
141 // Set a default search provider that supports Instant and make sure 123 // Set a default search provider that supports Instant and make sure
142 // InstantSearchPrerenderer is valid. 124 // InstantSearchPrerenderer is valid.
143 SetUserSelectedDefaultSearchProvider("https://google.com/"); 125 SetUserSelectedDefaultSearchProvider("https://google.com/");
144 EXPECT_NE(static_cast<InstantSearchPrerenderer*>(NULL), 126 EXPECT_NE(static_cast<InstantSearchPrerenderer*>(NULL),
145 GetInstantSearchPrerenderer()); 127 GetInstantSearchPrerenderer());
146 } 128 }
147 129
148 TEST_F(InstantServiceEnabledTest, 130 TEST_F(InstantServiceTest, ResetInstantSearchPrerenderer_GoogleBaseURLUpdated) {
149 ResetInstantSearchPrerenderer_GoogleBaseURLUpdated) { 131 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
132 "EmbeddedSearch", "Group1 use_cacheable_ntp:1 prefetch_results:1"));
150 EXPECT_CALL(*instant_service_observer_.get(), DefaultSearchProviderChanged()) 133 EXPECT_CALL(*instant_service_observer_.get(), DefaultSearchProviderChanged())
151 .Times(1); 134 .Times(1);
135 EXPECT_CALL(*instant_service_observer_.get(), GoogleURLUpdated()).Times(1);
152 136
137 SetUserSelectedDefaultSearchProvider("https://google.com/");
153 InstantSearchPrerenderer* old_prerenderer = GetInstantSearchPrerenderer(); 138 InstantSearchPrerenderer* old_prerenderer = GetInstantSearchPrerenderer();
154 EXPECT_TRUE(old_prerenderer != NULL); 139 EXPECT_NE(static_cast<InstantSearchPrerenderer*>(NULL), old_prerenderer);
155 140
156 const std::string new_base_url = "https://www.google.es/"; 141 const std::string& new_base_url = "https://www.google.es/";
157 NotifyGoogleBaseURLUpdate(new_base_url); 142 NotifyGoogleBaseURLUpdate(new_base_url);
158 EXPECT_NE(old_prerenderer, GetInstantSearchPrerenderer()); 143 EXPECT_NE(old_prerenderer, GetInstantSearchPrerenderer());
159 } 144 }
160 145
161 TEST_F(InstantServiceTest, OmniboxStartMarginChanged) { 146 TEST_F(InstantServiceTest, OmniboxStartMarginChanged) {
162 int new_start_margin = 92; 147 int new_start_margin = 92;
163 EXPECT_CALL(*instant_service_observer_.get(), 148 EXPECT_CALL(*instant_service_observer_.get(),
164 OmniboxStartMarginChanged(new_start_margin)).Times(1); 149 OmniboxStartMarginChanged(new_start_margin)).Times(1);
165 UpdateOmniboxStartMargin(new_start_margin); 150 UpdateOmniboxStartMargin(new_start_margin);
166 } 151 }
OLDNEW
« no previous file with comments | « chrome/browser/search/instant_service_observer.cc ('k') | chrome/browser/search/instant_unittest_base.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698