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

Side by Side Diff: chrome/browser/ui/search/search_tab_helper_unittest.cc

Issue 336413006: Chrome suggestions are no longer served if the user doesn't sync his history on a given machine (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 6 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
« no previous file with comments | « chrome/browser/ui/search/search_tab_helper.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "chrome/browser/ui/search/search_tab_helper.h" 5 #include "chrome/browser/ui/search/search_tab_helper.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "chrome/browser/search/search.h" 10 #include "chrome/browser/search/search.h"
11 #include "chrome/browser/search_engines/template_url_service.h" 11 #include "chrome/browser/search_engines/template_url_service.h"
12 #include "chrome/browser/search_engines/template_url_service_factory.h" 12 #include "chrome/browser/search_engines/template_url_service_factory.h"
13 #include "chrome/browser/signin/fake_signin_manager.h" 13 #include "chrome/browser/signin/fake_signin_manager.h"
14 #include "chrome/browser/signin/signin_manager_factory.h" 14 #include "chrome/browser/signin/signin_manager_factory.h"
15 #include "chrome/browser/sync/profile_sync_service.h"
16 #include "chrome/browser/sync/profile_sync_service_factory.h"
17 #include "chrome/browser/sync/profile_sync_service_mock.h"
15 #include "chrome/browser/ui/search/search_ipc_router.h" 18 #include "chrome/browser/ui/search/search_ipc_router.h"
16 #include "chrome/browser/ui/tabs/tab_strip_model.h" 19 #include "chrome/browser/ui/tabs/tab_strip_model.h"
17 #include "chrome/common/chrome_switches.h" 20 #include "chrome/common/chrome_switches.h"
18 #include "chrome/common/ntp_logging_events.h" 21 #include "chrome/common/ntp_logging_events.h"
19 #include "chrome/common/omnibox_focus_state.h" 22 #include "chrome/common/omnibox_focus_state.h"
20 #include "chrome/common/render_messages.h" 23 #include "chrome/common/render_messages.h"
21 #include "chrome/common/url_constants.h" 24 #include "chrome/common/url_constants.h"
22 #include "chrome/test/base/browser_with_test_window_test.h" 25 #include "chrome/test/base/browser_with_test_window_test.h"
23 #include "chrome/test/base/chrome_render_view_host_test_harness.h" 26 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
24 #include "chrome/test/base/testing_profile.h" 27 #include "chrome/test/base/testing_profile.h"
25 #include "chrome/test/base/ui_test_utils.h" 28 #include "chrome/test/base/ui_test_utils.h"
26 #include "content/public/browser/navigation_controller.h" 29 #include "content/public/browser/navigation_controller.h"
27 #include "content/public/browser/navigation_entry.h" 30 #include "content/public/browser/navigation_entry.h"
28 #include "content/public/browser/web_contents.h" 31 #include "content/public/browser/web_contents.h"
29 #include "content/public/test/mock_render_process_host.h" 32 #include "content/public/test/mock_render_process_host.h"
30 #include "grit/generated_resources.h" 33 #include "grit/generated_resources.h"
31 #include "ipc/ipc_message.h" 34 #include "ipc/ipc_message.h"
32 #include "ipc/ipc_test_sink.h" 35 #include "ipc/ipc_test_sink.h"
33 #include "net/base/net_errors.h" 36 #include "net/base/net_errors.h"
34 #include "testing/gmock/include/gmock/gmock.h" 37 #include "testing/gmock/include/gmock/gmock.h"
35 #include "testing/gtest/include/gtest/gtest.h" 38 #include "testing/gtest/include/gtest/gtest.h"
36 #include "ui/base/l10n/l10n_util.h" 39 #include "ui/base/l10n/l10n_util.h"
37 #include "url/gurl.h" 40 #include "url/gurl.h"
38 41
42 using testing::Return;
43
39 namespace { 44 namespace {
40 45
41 class MockSearchIPCRouterDelegate : public SearchIPCRouter::Delegate { 46 class MockSearchIPCRouterDelegate : public SearchIPCRouter::Delegate {
42 public: 47 public:
43 virtual ~MockSearchIPCRouterDelegate() {} 48 virtual ~MockSearchIPCRouterDelegate() {}
44 49
45 MOCK_METHOD1(OnInstantSupportDetermined, void(bool supports_instant)); 50 MOCK_METHOD1(OnInstantSupportDetermined, void(bool supports_instant));
46 MOCK_METHOD1(OnSetVoiceSearchSupport, void(bool supports_voice_search)); 51 MOCK_METHOD1(OnSetVoiceSearchSupport, void(bool supports_voice_search));
47 MOCK_METHOD1(FocusOmnibox, void(OmniboxFocusState state)); 52 MOCK_METHOD1(FocusOmnibox, void(OmniboxFocusState state));
48 MOCK_METHOD3(NavigateToURL, void(const GURL&, WindowOpenDisposition, bool)); 53 MOCK_METHOD3(NavigateToURL, void(const GURL&, WindowOpenDisposition, bool));
(...skipping 15 matching lines...) Expand all
64 public: 69 public:
65 virtual void SetUp() { 70 virtual void SetUp() {
66 ChromeRenderViewHostTestHarness::SetUp(); 71 ChromeRenderViewHostTestHarness::SetUp();
67 SearchTabHelper::CreateForWebContents(web_contents()); 72 SearchTabHelper::CreateForWebContents(web_contents());
68 } 73 }
69 74
70 virtual content::BrowserContext* CreateBrowserContext() OVERRIDE { 75 virtual content::BrowserContext* CreateBrowserContext() OVERRIDE {
71 TestingProfile::Builder builder; 76 TestingProfile::Builder builder;
72 builder.AddTestingFactory(SigninManagerFactory::GetInstance(), 77 builder.AddTestingFactory(SigninManagerFactory::GetInstance(),
73 FakeSigninManagerBase::Build); 78 FakeSigninManagerBase::Build);
79 builder.AddTestingFactory(
80 ProfileSyncServiceFactory::GetInstance(),
81 ProfileSyncServiceMock::BuildMockProfileSyncService);
74 return builder.Build().release(); 82 return builder.Build().release();
75 } 83 }
76 84
77 // Creates a sign-in manager for tests. If |username| is not empty, the 85 // Creates a sign-in manager for tests. If |username| is not empty, the
78 // testing profile of the WebContents will be connected to the given account. 86 // testing profile of the WebContents will be connected to the given account.
79 void CreateSigninManager(const std::string& username) { 87 // The account can be configured to |sync_history| or not.
88 void CreateSigninManager(const std::string& username, bool sync_history) {
80 SigninManagerBase* signin_manager = static_cast<SigninManagerBase*>( 89 SigninManagerBase* signin_manager = static_cast<SigninManagerBase*>(
81 SigninManagerFactory::GetForProfile(profile())); 90 SigninManagerFactory::GetForProfile(profile()));
82 91
83 if (!username.empty()) { 92 if (!username.empty()) {
84 ASSERT_TRUE(signin_manager); 93 ASSERT_TRUE(signin_manager);
85 signin_manager->SetAuthenticatedUsername(username); 94 signin_manager->SetAuthenticatedUsername(username);
86 } 95 }
96
97 ProfileSyncServiceMock* sync_service = static_cast<ProfileSyncServiceMock*>(
98 ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile()));
99
100 EXPECT_CALL(*sync_service, sync_initialized()).WillRepeatedly(Return(true));
101 syncer::ModelTypeSet result;
102 if (sync_history) {
103 result.Put(syncer::HISTORY_DELETE_DIRECTIVES);
104 }
105 EXPECT_CALL(*sync_service, GetActiveDataTypes())
106 .WillRepeatedly(Return(result));
87 } 107 }
88 108
89 bool MessageWasSent(uint32 id) { 109 bool MessageWasSent(uint32 id) {
90 return process()->sink().GetFirstMessageMatching(id) != NULL; 110 return process()->sink().GetFirstMessageMatching(id) != NULL;
91 } 111 }
92 112
93 MockSearchIPCRouterDelegate* mock_delegate() { return &delegate_; } 113 MockSearchIPCRouterDelegate* mock_delegate() { return &delegate_; }
94 114
95 private: 115 private:
96 MockSearchIPCRouterDelegate delegate_; 116 MockSearchIPCRouterDelegate delegate_;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 SearchTabHelper::FromWebContents(web_contents()); 159 SearchTabHelper::FromWebContents(web_contents());
140 ASSERT_NE(static_cast<SearchTabHelper*>(NULL), search_tab_helper); 160 ASSERT_NE(static_cast<SearchTabHelper*>(NULL), search_tab_helper);
141 search_tab_helper->ipc_router().set_delegate_for_testing(mock_delegate()); 161 search_tab_helper->ipc_router().set_delegate_for_testing(mock_delegate());
142 search_tab_helper->DetermineIfPageSupportsInstant(); 162 search_tab_helper->DetermineIfPageSupportsInstant();
143 ASSERT_FALSE(MessageWasSent( 163 ASSERT_FALSE(MessageWasSent(
144 ChromeViewMsg_DetermineIfPageSupportsInstant::ID)); 164 ChromeViewMsg_DetermineIfPageSupportsInstant::ID));
145 } 165 }
146 166
147 TEST_F(SearchTabHelperTest, OnChromeIdentityCheckMatch) { 167 TEST_F(SearchTabHelperTest, OnChromeIdentityCheckMatch) {
148 NavigateAndCommit(GURL(chrome::kChromeSearchLocalNtpUrl)); 168 NavigateAndCommit(GURL(chrome::kChromeSearchLocalNtpUrl));
149 CreateSigninManager(std::string("foo@bar.com")); 169 CreateSigninManager(std::string("foo@bar.com"), true);
150 SearchTabHelper* search_tab_helper = 170 SearchTabHelper* search_tab_helper =
151 SearchTabHelper::FromWebContents(web_contents()); 171 SearchTabHelper::FromWebContents(web_contents());
152 ASSERT_NE(static_cast<SearchTabHelper*>(NULL), search_tab_helper); 172 ASSERT_NE(static_cast<SearchTabHelper*>(NULL), search_tab_helper);
153 173
154 const base::string16 test_identity = base::ASCIIToUTF16("foo@bar.com"); 174 const base::string16 test_identity = base::ASCIIToUTF16("foo@bar.com");
155 search_tab_helper->OnChromeIdentityCheck(test_identity); 175 search_tab_helper->OnChromeIdentityCheck(test_identity);
156 176
157 const IPC::Message* message = process()->sink().GetUniqueMessageMatching( 177 const IPC::Message* message = process()->sink().GetUniqueMessageMatching(
158 ChromeViewMsg_ChromeIdentityCheckResult::ID); 178 ChromeViewMsg_ChromeIdentityCheckResult::ID);
159 ASSERT_TRUE(message != NULL); 179 ASSERT_TRUE(message != NULL);
160 180
161 ChromeViewMsg_ChromeIdentityCheckResult::Param params; 181 ChromeViewMsg_ChromeIdentityCheckResult::Param params;
162 ChromeViewMsg_ChromeIdentityCheckResult::Read(message, &params); 182 ChromeViewMsg_ChromeIdentityCheckResult::Read(message, &params);
163 EXPECT_EQ(test_identity, params.a); 183 EXPECT_EQ(test_identity, params.a);
164 ASSERT_TRUE(params.b); 184 ASSERT_TRUE(params.b);
165 } 185 }
166 186
167 TEST_F(SearchTabHelperTest, OnChromeIdentityCheckMismatch) { 187 TEST_F(SearchTabHelperTest, OnChromeIdentityCheckMismatch) {
168 NavigateAndCommit(GURL(chrome::kChromeSearchLocalNtpUrl)); 188 NavigateAndCommit(GURL(chrome::kChromeSearchLocalNtpUrl));
169 CreateSigninManager(std::string("foo@bar.com")); 189 CreateSigninManager(std::string("foo@bar.com"), true);
170 SearchTabHelper* search_tab_helper = 190 SearchTabHelper* search_tab_helper =
171 SearchTabHelper::FromWebContents(web_contents()); 191 SearchTabHelper::FromWebContents(web_contents());
172 ASSERT_NE(static_cast<SearchTabHelper*>(NULL), search_tab_helper); 192 ASSERT_NE(static_cast<SearchTabHelper*>(NULL), search_tab_helper);
173 193
174 const base::string16 test_identity = base::ASCIIToUTF16("bar@foo.com"); 194 const base::string16 test_identity = base::ASCIIToUTF16("bar@foo.com");
175 search_tab_helper->OnChromeIdentityCheck(test_identity); 195 search_tab_helper->OnChromeIdentityCheck(test_identity);
176 196
177 const IPC::Message* message = process()->sink().GetUniqueMessageMatching( 197 const IPC::Message* message = process()->sink().GetUniqueMessageMatching(
178 ChromeViewMsg_ChromeIdentityCheckResult::ID); 198 ChromeViewMsg_ChromeIdentityCheckResult::ID);
179 ASSERT_TRUE(message != NULL); 199 ASSERT_TRUE(message != NULL);
180 200
181 ChromeViewMsg_ChromeIdentityCheckResult::Param params; 201 ChromeViewMsg_ChromeIdentityCheckResult::Param params;
182 ChromeViewMsg_ChromeIdentityCheckResult::Read(message, &params); 202 ChromeViewMsg_ChromeIdentityCheckResult::Read(message, &params);
183 EXPECT_EQ(test_identity, params.a); 203 EXPECT_EQ(test_identity, params.a);
184 ASSERT_FALSE(params.b); 204 ASSERT_FALSE(params.b);
185 } 205 }
186 206
187 TEST_F(SearchTabHelperTest, OnChromeIdentityCheckSignedOutMatch) { 207 TEST_F(SearchTabHelperTest, OnChromeIdentityCheckSignedOutMatch) {
188 NavigateAndCommit(GURL(chrome::kChromeSearchLocalNtpUrl)); 208 NavigateAndCommit(GURL(chrome::kChromeSearchLocalNtpUrl));
189 // This test does not sign in. 209 // This test does not sign in.
210 ProfileSyncServiceMock* sync_service = static_cast<ProfileSyncServiceMock*>(
211 ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile()));
212 EXPECT_CALL(*sync_service, sync_initialized()).WillRepeatedly(Return(false));
190 SearchTabHelper* search_tab_helper = 213 SearchTabHelper* search_tab_helper =
191 SearchTabHelper::FromWebContents(web_contents()); 214 SearchTabHelper::FromWebContents(web_contents());
192 ASSERT_NE(static_cast<SearchTabHelper*>(NULL), search_tab_helper); 215 ASSERT_NE(static_cast<SearchTabHelper*>(NULL), search_tab_helper);
193 216
194 const base::string16 test_identity; 217 const base::string16 test_identity;
195 search_tab_helper->OnChromeIdentityCheck(test_identity); 218 search_tab_helper->OnChromeIdentityCheck(test_identity);
196 219
197 const IPC::Message* message = process()->sink().GetUniqueMessageMatching( 220 const IPC::Message* message = process()->sink().GetUniqueMessageMatching(
198 ChromeViewMsg_ChromeIdentityCheckResult::ID); 221 ChromeViewMsg_ChromeIdentityCheckResult::ID);
199 ASSERT_TRUE(message != NULL); 222 ASSERT_TRUE(message != NULL);
200 223
201 ChromeViewMsg_ChromeIdentityCheckResult::Param params; 224 ChromeViewMsg_ChromeIdentityCheckResult::Param params;
202 ChromeViewMsg_ChromeIdentityCheckResult::Read(message, &params); 225 ChromeViewMsg_ChromeIdentityCheckResult::Read(message, &params);
203 EXPECT_EQ(test_identity, params.a); 226 EXPECT_EQ(test_identity, params.a);
204 ASSERT_TRUE(params.b); 227 ASSERT_FALSE(params.b);
205 } 228 }
206 229
207 TEST_F(SearchTabHelperTest, OnChromeIdentityCheckSignedOutMismatch) { 230 TEST_F(SearchTabHelperTest, OnChromeIdentityCheckSignedOutMismatch) {
208 NavigateAndCommit(GURL(chrome::kChromeSearchLocalNtpUrl)); 231 NavigateAndCommit(GURL(chrome::kChromeSearchLocalNtpUrl));
209 // This test does not sign in. 232 // This test does not sign in.
233 ProfileSyncServiceMock* sync_service = static_cast<ProfileSyncServiceMock*>(
234 ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile()));
235 EXPECT_CALL(*sync_service, sync_initialized()).WillRepeatedly(Return(false));
210 SearchTabHelper* search_tab_helper = 236 SearchTabHelper* search_tab_helper =
211 SearchTabHelper::FromWebContents(web_contents()); 237 SearchTabHelper::FromWebContents(web_contents());
212 ASSERT_NE(static_cast<SearchTabHelper*>(NULL), search_tab_helper); 238 ASSERT_NE(static_cast<SearchTabHelper*>(NULL), search_tab_helper);
213 239
214 const base::string16 test_identity = base::ASCIIToUTF16("bar@foo.com"); 240 const base::string16 test_identity = base::ASCIIToUTF16("bar@foo.com");
215 search_tab_helper->OnChromeIdentityCheck(test_identity); 241 search_tab_helper->OnChromeIdentityCheck(test_identity);
216 242
217 const IPC::Message* message = process()->sink().GetUniqueMessageMatching( 243 const IPC::Message* message = process()->sink().GetUniqueMessageMatching(
218 ChromeViewMsg_ChromeIdentityCheckResult::ID); 244 ChromeViewMsg_ChromeIdentityCheckResult::ID);
219 ASSERT_TRUE(message != NULL); 245 ASSERT_TRUE(message != NULL);
220 246
221 ChromeViewMsg_ChromeIdentityCheckResult::Param params; 247 ChromeViewMsg_ChromeIdentityCheckResult::Param params;
222 ChromeViewMsg_ChromeIdentityCheckResult::Read(message, &params); 248 ChromeViewMsg_ChromeIdentityCheckResult::Read(message, &params);
223 EXPECT_EQ(test_identity, params.a); 249 EXPECT_EQ(test_identity, params.a);
224 ASSERT_FALSE(params.b); 250 ASSERT_FALSE(params.b);
225 } 251 }
226 252
253 TEST_F(SearchTabHelperTest, OnChromeIdentityCheckMatchNotSyncing) {
254 NavigateAndCommit(GURL(chrome::kChromeSearchLocalNtpUrl));
255 CreateSigninManager(std::string("foo@bar.com"), false);
256 SearchTabHelper* search_tab_helper =
257 SearchTabHelper::FromWebContents(web_contents());
258 ASSERT_NE(static_cast<SearchTabHelper*>(NULL), search_tab_helper);
259
260 const base::string16 test_identity = base::ASCIIToUTF16("foo@bar.com");
261 search_tab_helper->OnChromeIdentityCheck(test_identity);
262
263 const IPC::Message* message = process()->sink().GetUniqueMessageMatching(
264 ChromeViewMsg_ChromeIdentityCheckResult::ID);
265 ASSERT_TRUE(message != NULL);
266
267 ChromeViewMsg_ChromeIdentityCheckResult::Param params;
268 ChromeViewMsg_ChromeIdentityCheckResult::Read(message, &params);
269 EXPECT_EQ(test_identity, params.a);
270 ASSERT_FALSE(params.b);
271 }
272
227 class TabTitleObserver : public content::WebContentsObserver { 273 class TabTitleObserver : public content::WebContentsObserver {
228 public: 274 public:
229 explicit TabTitleObserver(content::WebContents* contents) 275 explicit TabTitleObserver(content::WebContents* contents)
230 : WebContentsObserver(contents) {} 276 : WebContentsObserver(contents) {}
231 277
232 base::string16 title_on_start() { return title_on_start_; } 278 base::string16 title_on_start() { return title_on_start_; }
233 base::string16 title_on_commit() { return title_on_commit_; } 279 base::string16 title_on_commit() { return title_on_commit_; }
234 280
235 private: 281 private:
236 virtual void DidStartProvisionalLoadForFrame( 282 virtual void DidStartProvisionalLoadForFrame(
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 SearchTabHelper::FromWebContents(contents); 384 SearchTabHelper::FromWebContents(contents);
339 ASSERT_NE(static_cast<SearchTabHelper*>(NULL), search_tab_helper); 385 ASSERT_NE(static_cast<SearchTabHelper*>(NULL), search_tab_helper);
340 386
341 // Any other web page shouldn't be redirected when provisional load fails. 387 // Any other web page shouldn't be redirected when provisional load fails.
342 search_tab_helper->DidFailProvisionalLoad(1, base::string16(), true, 388 search_tab_helper->DidFailProvisionalLoad(1, base::string16(), true,
343 GURL("http://www.example.com"), 1, base::string16(), NULL); 389 GURL("http://www.example.com"), 1, base::string16(), NULL);
344 CommitPendingLoad(controller); 390 CommitPendingLoad(controller);
345 EXPECT_NE(GURL(chrome::kChromeSearchLocalNtpUrl), 391 EXPECT_NE(GURL(chrome::kChromeSearchLocalNtpUrl),
346 controller->GetLastCommittedEntry()->GetURL()); 392 controller->GetLastCommittedEntry()->GetURL());
347 } 393 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/search/search_tab_helper.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698