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

Side by Side Diff: components/suggestions/suggestions_service_unittest.cc

Issue 2568133005: [SuggestionsService] Split SuggestionsService interface from impl (Closed)
Patch Set: Created 4 years 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "components/suggestions/suggestions_service.h" 5 #include "components/suggestions/suggestions_service.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <utility> 10 #include <utility>
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 token_service_.set_auto_post_fetch_response_on_message_loop(true); 206 token_service_.set_auto_post_fetch_response_on_message_loop(true);
207 } 207 }
208 208
209 ~SuggestionsServiceTest() override {} 209 ~SuggestionsServiceTest() override {}
210 210
211 void SetUp() override { 211 void SetUp() override {
212 request_context_ = 212 request_context_ =
213 new net::TestURLRequestContextGetter(io_message_loop_.task_runner()); 213 new net::TestURLRequestContextGetter(io_message_loop_.task_runner());
214 } 214 }
215 215
216 SuggestionsService* CreateSuggestionsServiceWithMocks() { 216 std::unique_ptr<SuggestionsServiceImpl> CreateSuggestionsServiceWithMocks() {
217 mock_sync_service_.reset(new MockSyncService); 217 mock_sync_service_.reset(new MockSyncService);
218 ON_CALL(*mock_sync_service_, CanSyncStart()).WillByDefault(Return(true)); 218 ON_CALL(*mock_sync_service_, CanSyncStart()).WillByDefault(Return(true));
219 ON_CALL(*mock_sync_service_, IsSyncActive()).WillByDefault(Return(true)); 219 ON_CALL(*mock_sync_service_, IsSyncActive()).WillByDefault(Return(true));
220 ON_CALL(*mock_sync_service_, ConfigurationDone()) 220 ON_CALL(*mock_sync_service_, ConfigurationDone())
221 .WillByDefault(Return(true)); 221 .WillByDefault(Return(true));
222 ON_CALL(*mock_sync_service_, GetActiveDataTypes()) 222 ON_CALL(*mock_sync_service_, GetActiveDataTypes())
223 .WillByDefault( 223 .WillByDefault(
224 Return(syncer::ModelTypeSet(syncer::HISTORY_DELETE_DIRECTIVES))); 224 Return(syncer::ModelTypeSet(syncer::HISTORY_DELETE_DIRECTIVES)));
225 225
226 // These objects are owned by the returned SuggestionsService, but we keep 226 // These objects are owned by the returned SuggestionsService, but we keep
227 // the pointer around for testing. 227 // the pointer around for testing.
228 test_suggestions_store_ = new TestSuggestionsStore(); 228 test_suggestions_store_ = new TestSuggestionsStore();
229 mock_thumbnail_manager_ = new StrictMock<MockImageManager>(); 229 mock_thumbnail_manager_ = new StrictMock<MockImageManager>();
230 mock_blacklist_store_ = new StrictMock<MockBlacklistStore>(); 230 mock_blacklist_store_ = new StrictMock<MockBlacklistStore>();
231 return new SuggestionsService( 231 return base::MakeUnique<SuggestionsServiceImpl>(
232 nullptr /* signin_manager */, &token_service_, mock_sync_service_.get(), 232 nullptr /* signin_manager */, &token_service_, mock_sync_service_.get(),
233 request_context_.get(), base::WrapUnique(test_suggestions_store_), 233 request_context_.get(), base::WrapUnique(test_suggestions_store_),
234 base::WrapUnique(mock_thumbnail_manager_), 234 base::WrapUnique(mock_thumbnail_manager_),
235 base::WrapUnique(mock_blacklist_store_)); 235 base::WrapUnique(mock_blacklist_store_));
236 } 236 }
237 237
238 void Blacklist(SuggestionsService* suggestions_service, GURL url) { 238 void Blacklist(SuggestionsService* suggestions_service, GURL url) {
239 blacklisting_failed_ = !suggestions_service->BlacklistURL(url); 239 blacklisting_failed_ = !suggestions_service->BlacklistURL(url);
240 } 240 }
241 241
242 void UndoBlacklist(SuggestionsService* suggestions_service, GURL url) { 242 void UndoBlacklist(SuggestionsService* suggestions_service, GURL url) {
243 undo_blacklisting_failed_ = !suggestions_service->UndoBlacklistURL(url); 243 undo_blacklisting_failed_ = !suggestions_service->UndoBlacklistURL(url);
244 } 244 }
245 245
246 // Helper for Undo failure tests. Depending on |is_uploaded|, tests either 246 // Helper for Undo failure tests. Depending on |is_uploaded|, tests either
247 // the case where the URL is no longer in the local blacklist or the case 247 // the case where the URL is no longer in the local blacklist or the case
248 // in which it's not yet candidate for upload. 248 // in which it's not yet candidate for upload.
249 void UndoBlacklistURLFailsHelper(bool is_uploaded) { 249 void UndoBlacklistURLFailsHelper(bool is_uploaded) {
250 std::unique_ptr<SuggestionsService> suggestions_service( 250 std::unique_ptr<SuggestionsServiceImpl> suggestions_service(
251 CreateSuggestionsServiceWithMocks()); 251 CreateSuggestionsServiceWithMocks());
252 EXPECT_TRUE(suggestions_service != nullptr); 252 EXPECT_TRUE(suggestions_service != nullptr);
253 // Ensure scheduling the request doesn't happen before undo. 253 // Ensure scheduling the request doesn't happen before undo.
254 base::TimeDelta delay = base::TimeDelta::FromHours(1); 254 base::TimeDelta delay = base::TimeDelta::FromHours(1);
255 suggestions_service->set_blacklist_delay(delay); 255 suggestions_service->set_blacklist_delay(delay);
256 256
257 auto subscription = suggestions_service->AddCallback(base::Bind( 257 auto subscription = suggestions_service->AddCallback(base::Bind(
258 &SuggestionsServiceTest::CheckCallback, base::Unretained(this))); 258 &SuggestionsServiceTest::CheckCallback, base::Unretained(this)));
259 259
260 SuggestionsProfile suggestions_profile = CreateSuggestionsProfile(); 260 SuggestionsProfile suggestions_profile = CreateSuggestionsProfile();
(...skipping 22 matching lines...) Expand all
283 } 283 }
284 284
285 Blacklist(suggestions_service.get(), blacklisted_url); 285 Blacklist(suggestions_service.get(), blacklisted_url);
286 UndoBlacklist(suggestions_service.get(), blacklisted_url); 286 UndoBlacklist(suggestions_service.get(), blacklisted_url);
287 287
288 EXPECT_EQ(1, suggestions_data_callback_count_); 288 EXPECT_EQ(1, suggestions_data_callback_count_);
289 EXPECT_FALSE(blacklisting_failed_); 289 EXPECT_FALSE(blacklisting_failed_);
290 EXPECT_TRUE(undo_blacklisting_failed_); 290 EXPECT_TRUE(undo_blacklisting_failed_);
291 } 291 }
292 292
293 bool HasPendingSuggestionsRequest(SuggestionsService* suggestions_service) { 293 bool HasPendingSuggestionsRequest(
294 SuggestionsServiceImpl* suggestions_service) {
294 return !!suggestions_service->pending_request_.get(); 295 return !!suggestions_service->pending_request_.get();
295 } 296 }
296 297
297 protected: 298 protected:
298 base::MessageLoopForIO io_message_loop_; 299 base::MessageLoopForIO io_message_loop_;
299 net::FakeURLFetcherFactory factory_; 300 net::FakeURLFetcherFactory factory_;
300 FakeProfileOAuth2TokenService token_service_; 301 FakeProfileOAuth2TokenService token_service_;
301 std::unique_ptr<MockSyncService> mock_sync_service_; 302 std::unique_ptr<MockSyncService> mock_sync_service_;
302 // Only used if the SuggestionsService is built with mocks. Not owned. 303 // Only used if the SuggestionsService is built with mocks. Not owned.
303 MockImageManager* mock_thumbnail_manager_; 304 MockImageManager* mock_thumbnail_manager_;
304 MockBlacklistStore* mock_blacklist_store_; 305 MockBlacklistStore* mock_blacklist_store_;
305 TestSuggestionsStore* test_suggestions_store_; 306 TestSuggestionsStore* test_suggestions_store_;
306 scoped_refptr<net::TestURLRequestContextGetter> request_context_; 307 scoped_refptr<net::TestURLRequestContextGetter> request_context_;
307 308
308 private: 309 private:
309 DISALLOW_COPY_AND_ASSIGN(SuggestionsServiceTest); 310 DISALLOW_COPY_AND_ASSIGN(SuggestionsServiceTest);
310 }; 311 };
311 312
312 TEST_F(SuggestionsServiceTest, FetchSuggestionsData) { 313 TEST_F(SuggestionsServiceTest, FetchSuggestionsData) {
313 std::unique_ptr<SuggestionsService> suggestions_service( 314 std::unique_ptr<SuggestionsService> suggestions_service(
314 CreateSuggestionsServiceWithMocks()); 315 CreateSuggestionsServiceWithMocks());
315 ASSERT_TRUE(suggestions_service != nullptr); 316 ASSERT_TRUE(suggestions_service != nullptr);
316 auto subscription = suggestions_service->AddCallback(base::Bind( 317 auto subscription = suggestions_service->AddCallback(base::Bind(
317 &SuggestionsServiceTest::CheckCallback, base::Unretained(this))); 318 &SuggestionsServiceTest::CheckCallback, base::Unretained(this)));
318 319
319 SuggestionsProfile suggestions_profile = CreateSuggestionsProfile(); 320 SuggestionsProfile suggestions_profile = CreateSuggestionsProfile();
320 321
321 // Set up net::FakeURLFetcherFactory. 322 // Set up net::FakeURLFetcherFactory.
322 factory_.SetFakeResponse(SuggestionsService::BuildSuggestionsURL(), 323 factory_.SetFakeResponse(SuggestionsServiceImpl::BuildSuggestionsURL(),
323 suggestions_profile.SerializeAsString(), 324 suggestions_profile.SerializeAsString(),
324 net::HTTP_OK, net::URLRequestStatus::SUCCESS); 325 net::HTTP_OK, net::URLRequestStatus::SUCCESS);
325 326
326 // Expectations. 327 // Expectations.
327 EXPECT_CALL(*mock_thumbnail_manager_, Initialize(_)); 328 EXPECT_CALL(*mock_thumbnail_manager_, Initialize(_));
328 EXPECT_CALL(*mock_blacklist_store_, FilterSuggestions(_)); 329 EXPECT_CALL(*mock_blacklist_store_, FilterSuggestions(_));
329 EXPECT_CALL(*mock_blacklist_store_, GetTimeUntilReadyForUpload(_)) 330 EXPECT_CALL(*mock_blacklist_store_, GetTimeUntilReadyForUpload(_))
330 .WillOnce(Return(false)); 331 .WillOnce(Return(false));
331 332
332 // Send the request. The data should be returned to the callback. 333 // Send the request. The data should be returned to the callback.
(...skipping 29 matching lines...) Expand all
362 EXPECT_EQ(0, suggestions_data_callback_count_); 363 EXPECT_EQ(0, suggestions_data_callback_count_);
363 364
364 // |test_suggestions_store_| should still contain the default values. 365 // |test_suggestions_store_| should still contain the default values.
365 SuggestionsProfile suggestions; 366 SuggestionsProfile suggestions;
366 test_suggestions_store_->LoadSuggestions(&suggestions); 367 test_suggestions_store_->LoadSuggestions(&suggestions);
367 EXPECT_EQ(CreateSuggestionsProfile().SerializeAsString(), 368 EXPECT_EQ(CreateSuggestionsProfile().SerializeAsString(),
368 suggestions.SerializeAsString()); 369 suggestions.SerializeAsString());
369 } 370 }
370 371
371 TEST_F(SuggestionsServiceTest, FetchSuggestionsDataSyncDisabled) { 372 TEST_F(SuggestionsServiceTest, FetchSuggestionsDataSyncDisabled) {
372 std::unique_ptr<SuggestionsService> suggestions_service( 373 std::unique_ptr<SuggestionsServiceImpl> suggestions_service(
373 CreateSuggestionsServiceWithMocks()); 374 CreateSuggestionsServiceWithMocks());
374 ASSERT_TRUE(suggestions_service != nullptr); 375 ASSERT_TRUE(suggestions_service != nullptr);
375 EXPECT_CALL(*mock_sync_service_, CanSyncStart()) 376 EXPECT_CALL(*mock_sync_service_, CanSyncStart())
376 .WillRepeatedly(Return(false)); 377 .WillRepeatedly(Return(false));
377 378
378 auto subscription = suggestions_service->AddCallback(base::Bind( 379 auto subscription = suggestions_service->AddCallback(base::Bind(
379 &SuggestionsServiceTest::CheckCallback, base::Unretained(this))); 380 &SuggestionsServiceTest::CheckCallback, base::Unretained(this)));
380 381
381 // Tell SuggestionsService that the sync state changed. The cache should be 382 // Tell SuggestionsService that the sync state changed. The cache should be
382 // cleared and empty data returned to the callback. 383 // cleared and empty data returned to the callback.
(...skipping 10 matching lines...) Expand all
393 // Let any network request run. 394 // Let any network request run.
394 base::RunLoop().RunUntilIdle(); 395 base::RunLoop().RunUntilIdle();
395 396
396 // Ensure that CheckCallback didn't run again. 397 // Ensure that CheckCallback didn't run again.
397 EXPECT_EQ(1, suggestions_data_callback_count_); 398 EXPECT_EQ(1, suggestions_data_callback_count_);
398 } 399 }
399 400
400 TEST_F(SuggestionsServiceTest, FetchSuggestionsDataNoAccessToken) { 401 TEST_F(SuggestionsServiceTest, FetchSuggestionsDataNoAccessToken) {
401 token_service_.RevokeCredentials(kAccountId); 402 token_service_.RevokeCredentials(kAccountId);
402 403
403 std::unique_ptr<SuggestionsService> suggestions_service( 404 std::unique_ptr<SuggestionsServiceImpl> suggestions_service(
404 CreateSuggestionsServiceWithMocks()); 405 CreateSuggestionsServiceWithMocks());
405 ASSERT_TRUE(suggestions_service != nullptr); 406 ASSERT_TRUE(suggestions_service != nullptr);
406 407
407 auto subscription = suggestions_service->AddCallback(base::Bind( 408 auto subscription = suggestions_service->AddCallback(base::Bind(
408 &SuggestionsServiceTest::CheckCallback, base::Unretained(this))); 409 &SuggestionsServiceTest::CheckCallback, base::Unretained(this)));
409 410
410 EXPECT_CALL(*mock_blacklist_store_, GetTimeUntilReadyForUpload(_)) 411 EXPECT_CALL(*mock_blacklist_store_, GetTimeUntilReadyForUpload(_))
411 .WillOnce(Return(false)); 412 .WillOnce(Return(false));
412 413
413 suggestions_service->FetchSuggestionsData(); 414 suggestions_service->FetchSuggestionsData();
414 415
415 // No network request should be sent. 416 // No network request should be sent.
416 base::RunLoop().RunUntilIdle(); 417 base::RunLoop().RunUntilIdle();
417 EXPECT_FALSE(HasPendingSuggestionsRequest(suggestions_service.get())); 418 EXPECT_FALSE(HasPendingSuggestionsRequest(suggestions_service.get()));
418 EXPECT_EQ(0, suggestions_data_callback_count_); 419 EXPECT_EQ(0, suggestions_data_callback_count_);
419 } 420 }
420 421
421 TEST_F(SuggestionsServiceTest, IssueRequestIfNoneOngoingError) { 422 TEST_F(SuggestionsServiceTest, IssueRequestIfNoneOngoingError) {
422 std::unique_ptr<SuggestionsService> suggestions_service( 423 std::unique_ptr<SuggestionsServiceImpl> suggestions_service(
423 CreateSuggestionsServiceWithMocks()); 424 CreateSuggestionsServiceWithMocks());
424 ASSERT_TRUE(suggestions_service != nullptr); 425 ASSERT_TRUE(suggestions_service != nullptr);
425 426
426 // Fake a request error. 427 // Fake a request error.
427 factory_.SetFakeResponse(SuggestionsService::BuildSuggestionsURL(), 428 factory_.SetFakeResponse(SuggestionsServiceImpl::BuildSuggestionsURL(),
428 "irrelevant", net::HTTP_OK, 429 "irrelevant", net::HTTP_OK,
429 net::URLRequestStatus::FAILED); 430 net::URLRequestStatus::FAILED);
430 431
431 EXPECT_CALL(*mock_blacklist_store_, GetTimeUntilReadyForUpload(_)) 432 EXPECT_CALL(*mock_blacklist_store_, GetTimeUntilReadyForUpload(_))
432 .WillOnce(Return(false)); 433 .WillOnce(Return(false));
433 434
434 // Send the request. Empty data will be returned to the callback. 435 // Send the request. Empty data will be returned to the callback.
435 suggestions_service->IssueRequestIfNoneOngoing( 436 suggestions_service->IssueRequestIfNoneOngoing(
436 SuggestionsService::BuildSuggestionsURL()); 437 SuggestionsServiceImpl::BuildSuggestionsURL());
437 438
438 // (Testing only) wait until suggestion fetch is complete. 439 // (Testing only) wait until suggestion fetch is complete.
439 base::RunLoop().RunUntilIdle(); 440 base::RunLoop().RunUntilIdle();
440 } 441 }
441 442
442 TEST_F(SuggestionsServiceTest, IssueRequestIfNoneOngoingResponseNotOK) { 443 TEST_F(SuggestionsServiceTest, IssueRequestIfNoneOngoingResponseNotOK) {
443 std::unique_ptr<SuggestionsService> suggestions_service( 444 std::unique_ptr<SuggestionsServiceImpl> suggestions_service(
444 CreateSuggestionsServiceWithMocks()); 445 CreateSuggestionsServiceWithMocks());
445 ASSERT_TRUE(suggestions_service != nullptr); 446 ASSERT_TRUE(suggestions_service != nullptr);
446 447
447 // Fake a non-200 response code. 448 // Fake a non-200 response code.
448 factory_.SetFakeResponse(SuggestionsService::BuildSuggestionsURL(), 449 factory_.SetFakeResponse(SuggestionsServiceImpl::BuildSuggestionsURL(),
449 "irrelevant", net::HTTP_BAD_REQUEST, 450 "irrelevant", net::HTTP_BAD_REQUEST,
450 net::URLRequestStatus::SUCCESS); 451 net::URLRequestStatus::SUCCESS);
451 452
452 // Expect that an upload to the blacklist is scheduled. 453 // Expect that an upload to the blacklist is scheduled.
453 EXPECT_CALL(*mock_blacklist_store_, GetTimeUntilReadyForUpload(_)) 454 EXPECT_CALL(*mock_blacklist_store_, GetTimeUntilReadyForUpload(_))
454 .WillOnce(Return(false)); 455 .WillOnce(Return(false));
455 456
456 // Send the request. Empty data will be returned to the callback. 457 // Send the request. Empty data will be returned to the callback.
457 suggestions_service->IssueRequestIfNoneOngoing( 458 suggestions_service->IssueRequestIfNoneOngoing(
458 SuggestionsService::BuildSuggestionsURL()); 459 SuggestionsServiceImpl::BuildSuggestionsURL());
459 460
460 // (Testing only) wait until suggestion fetch is complete. 461 // (Testing only) wait until suggestion fetch is complete.
461 base::RunLoop().RunUntilIdle(); 462 base::RunLoop().RunUntilIdle();
462 463
463 // Expect no suggestions in the cache. 464 // Expect no suggestions in the cache.
464 SuggestionsProfile empty_suggestions; 465 SuggestionsProfile empty_suggestions;
465 EXPECT_FALSE(test_suggestions_store_->LoadSuggestions(&empty_suggestions)); 466 EXPECT_FALSE(test_suggestions_store_->LoadSuggestions(&empty_suggestions));
466 } 467 }
467 468
468 TEST_F(SuggestionsServiceTest, BlacklistURL) { 469 TEST_F(SuggestionsServiceTest, BlacklistURL) {
469 std::unique_ptr<SuggestionsService> suggestions_service( 470 std::unique_ptr<SuggestionsServiceImpl> suggestions_service(
470 CreateSuggestionsServiceWithMocks()); 471 CreateSuggestionsServiceWithMocks());
471 EXPECT_TRUE(suggestions_service != nullptr); 472 EXPECT_TRUE(suggestions_service != nullptr);
472 base::TimeDelta no_delay = base::TimeDelta::FromSeconds(0); 473 base::TimeDelta no_delay = base::TimeDelta::FromSeconds(0);
473 suggestions_service->set_blacklist_delay(no_delay); 474 suggestions_service->set_blacklist_delay(no_delay);
474 475
475 auto subscription = suggestions_service->AddCallback(base::Bind( 476 auto subscription = suggestions_service->AddCallback(base::Bind(
476 &SuggestionsServiceTest::CheckCallback, base::Unretained(this))); 477 &SuggestionsServiceTest::CheckCallback, base::Unretained(this)));
477 478
478 GURL blacklisted_url(kBlacklistedUrl); 479 GURL blacklisted_url(kBlacklistedUrl);
479 GURL request_url( 480 GURL request_url(
480 SuggestionsService::BuildSuggestionsBlacklistURL(blacklisted_url)); 481 SuggestionsServiceImpl::BuildSuggestionsBlacklistURL(blacklisted_url));
481 SuggestionsProfile suggestions_profile = CreateSuggestionsProfile(); 482 SuggestionsProfile suggestions_profile = CreateSuggestionsProfile();
482 factory_.SetFakeResponse(request_url, 483 factory_.SetFakeResponse(request_url,
483 suggestions_profile.SerializeAsString(), 484 suggestions_profile.SerializeAsString(),
484 net::HTTP_OK, net::URLRequestStatus::SUCCESS); 485 net::HTTP_OK, net::URLRequestStatus::SUCCESS);
485 EXPECT_CALL(*mock_thumbnail_manager_, Initialize(_)).Times(2); 486 EXPECT_CALL(*mock_thumbnail_manager_, Initialize(_)).Times(2);
486 487
487 // Expected calls to the blacklist store. 488 // Expected calls to the blacklist store.
488 EXPECT_CALL(*mock_blacklist_store_, BlacklistUrl(Eq(blacklisted_url))) 489 EXPECT_CALL(*mock_blacklist_store_, BlacklistUrl(Eq(blacklisted_url)))
489 .WillOnce(Return(true)); 490 .WillOnce(Return(true));
490 EXPECT_CALL(*mock_blacklist_store_, FilterSuggestions(_)).Times(2); 491 EXPECT_CALL(*mock_blacklist_store_, FilterSuggestions(_)).Times(2);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
523 .WillOnce(Return(false)); 524 .WillOnce(Return(false));
524 525
525 Blacklist(suggestions_service.get(), blacklisted_url); 526 Blacklist(suggestions_service.get(), blacklisted_url);
526 527
527 EXPECT_TRUE(blacklisting_failed_); 528 EXPECT_TRUE(blacklisting_failed_);
528 EXPECT_EQ(0, suggestions_data_callback_count_); 529 EXPECT_EQ(0, suggestions_data_callback_count_);
529 } 530 }
530 531
531 // Initial blacklist request fails, triggering a second which succeeds. 532 // Initial blacklist request fails, triggering a second which succeeds.
532 TEST_F(SuggestionsServiceTest, BlacklistURLRequestFails) { 533 TEST_F(SuggestionsServiceTest, BlacklistURLRequestFails) {
533 std::unique_ptr<SuggestionsService> suggestions_service( 534 std::unique_ptr<SuggestionsServiceImpl> suggestions_service(
534 CreateSuggestionsServiceWithMocks()); 535 CreateSuggestionsServiceWithMocks());
535 ASSERT_TRUE(suggestions_service != nullptr); 536 ASSERT_TRUE(suggestions_service != nullptr);
536 base::TimeDelta no_delay = base::TimeDelta::FromSeconds(0); 537 base::TimeDelta no_delay = base::TimeDelta::FromSeconds(0);
537 suggestions_service->set_blacklist_delay(no_delay); 538 suggestions_service->set_blacklist_delay(no_delay);
538 539
539 auto subscription = suggestions_service->AddCallback(base::Bind( 540 auto subscription = suggestions_service->AddCallback(base::Bind(
540 &SuggestionsServiceTest::CheckCallback, base::Unretained(this))); 541 &SuggestionsServiceTest::CheckCallback, base::Unretained(this)));
541 542
542 GURL blacklisted_url(kBlacklistedUrl); 543 GURL blacklisted_url(kBlacklistedUrl);
543 GURL request_url( 544 GURL request_url(
544 SuggestionsService::BuildSuggestionsBlacklistURL(blacklisted_url)); 545 SuggestionsServiceImpl::BuildSuggestionsBlacklistURL(blacklisted_url));
545 GURL blacklisted_url_alt(kBlacklistedUrlAlt); 546 GURL blacklisted_url_alt(kBlacklistedUrlAlt);
546 GURL request_url_alt( 547 GURL request_url_alt(SuggestionsServiceImpl::BuildSuggestionsBlacklistURL(
547 SuggestionsService::BuildSuggestionsBlacklistURL(blacklisted_url_alt)); 548 blacklisted_url_alt));
548 SuggestionsProfile suggestions_profile = CreateSuggestionsProfile(); 549 SuggestionsProfile suggestions_profile = CreateSuggestionsProfile();
549 550
550 // Note: we want to set the response for the blacklist URL to first 551 // Note: we want to set the response for the blacklist URL to first
551 // succeed, then fail. This doesn't seem possible. For simplicity of testing, 552 // succeed, then fail. This doesn't seem possible. For simplicity of testing,
552 // we'll pretend the URL changed in the BlacklistStore between the first and 553 // we'll pretend the URL changed in the BlacklistStore between the first and
553 // the second request, and adjust expectations accordingly. 554 // the second request, and adjust expectations accordingly.
554 factory_.SetFakeResponse(request_url, "irrelevant", net::HTTP_OK, 555 factory_.SetFakeResponse(request_url, "irrelevant", net::HTTP_OK,
555 net::URLRequestStatus::FAILED); 556 net::URLRequestStatus::FAILED);
556 factory_.SetFakeResponse(request_url_alt, 557 factory_.SetFakeResponse(request_url_alt,
557 suggestions_profile.SerializeAsString(), 558 suggestions_profile.SerializeAsString(),
(...skipping 21 matching lines...) Expand all
579 580
580 // Wait for the first scheduling, the first request, the second scheduling, 581 // Wait for the first scheduling, the first request, the second scheduling,
581 // second request and the third scheduling. Again, note that calling 582 // second request and the third scheduling. Again, note that calling
582 // RunUntilIdle on the MessageLoop only works when the task is not posted for 583 // RunUntilIdle on the MessageLoop only works when the task is not posted for
583 // the future. 584 // the future.
584 base::RunLoop().RunUntilIdle(); 585 base::RunLoop().RunUntilIdle();
585 CheckSuggestionsData(); 586 CheckSuggestionsData();
586 } 587 }
587 588
588 TEST_F(SuggestionsServiceTest, UndoBlacklistURL) { 589 TEST_F(SuggestionsServiceTest, UndoBlacklistURL) {
589 std::unique_ptr<SuggestionsService> suggestions_service( 590 std::unique_ptr<SuggestionsServiceImpl> suggestions_service(
590 CreateSuggestionsServiceWithMocks()); 591 CreateSuggestionsServiceWithMocks());
591 ASSERT_TRUE(suggestions_service != nullptr); 592 ASSERT_TRUE(suggestions_service != nullptr);
592 // Ensure scheduling the request doesn't happen before undo. 593 // Ensure scheduling the request doesn't happen before undo.
593 base::TimeDelta delay = base::TimeDelta::FromHours(1); 594 base::TimeDelta delay = base::TimeDelta::FromHours(1);
594 suggestions_service->set_blacklist_delay(delay); 595 suggestions_service->set_blacklist_delay(delay);
595 596
596 auto subscription = suggestions_service->AddCallback(base::Bind( 597 auto subscription = suggestions_service->AddCallback(base::Bind(
597 &SuggestionsServiceTest::CheckCallback, base::Unretained(this))); 598 &SuggestionsServiceTest::CheckCallback, base::Unretained(this)));
598 599
599 SuggestionsProfile suggestions_profile = CreateSuggestionsProfile(); 600 SuggestionsProfile suggestions_profile = CreateSuggestionsProfile();
(...skipping 18 matching lines...) Expand all
618 619
619 Blacklist(suggestions_service.get(), blacklisted_url); 620 Blacklist(suggestions_service.get(), blacklisted_url);
620 UndoBlacklist(suggestions_service.get(), blacklisted_url); 621 UndoBlacklist(suggestions_service.get(), blacklisted_url);
621 622
622 EXPECT_EQ(2, suggestions_data_callback_count_); 623 EXPECT_EQ(2, suggestions_data_callback_count_);
623 EXPECT_FALSE(blacklisting_failed_); 624 EXPECT_FALSE(blacklisting_failed_);
624 EXPECT_FALSE(undo_blacklisting_failed_); 625 EXPECT_FALSE(undo_blacklisting_failed_);
625 } 626 }
626 627
627 TEST_F(SuggestionsServiceTest, ClearBlacklist) { 628 TEST_F(SuggestionsServiceTest, ClearBlacklist) {
628 std::unique_ptr<SuggestionsService> suggestions_service( 629 std::unique_ptr<SuggestionsServiceImpl> suggestions_service(
629 CreateSuggestionsServiceWithMocks()); 630 CreateSuggestionsServiceWithMocks());
630 ASSERT_TRUE(suggestions_service != nullptr); 631 ASSERT_TRUE(suggestions_service != nullptr);
631 // Ensure scheduling the request doesn't happen before undo. 632 // Ensure scheduling the request doesn't happen before undo.
632 base::TimeDelta delay = base::TimeDelta::FromHours(1); 633 base::TimeDelta delay = base::TimeDelta::FromHours(1);
633 suggestions_service->set_blacklist_delay(delay); 634 suggestions_service->set_blacklist_delay(delay);
634 635
635 auto subscription = suggestions_service->AddCallback(base::Bind( 636 auto subscription = suggestions_service->AddCallback(base::Bind(
636 &SuggestionsServiceTest::CheckCallback, base::Unretained(this))); 637 &SuggestionsServiceTest::CheckCallback, base::Unretained(this)));
637 638
638 SuggestionsProfile suggestions_profile = CreateSuggestionsProfile(); 639 SuggestionsProfile suggestions_profile = CreateSuggestionsProfile();
639 GURL blacklisted_url(kBlacklistedUrl); 640 GURL blacklisted_url(kBlacklistedUrl);
640 641
641 factory_.SetFakeResponse( 642 factory_.SetFakeResponse(
642 SuggestionsService::BuildSuggestionsBlacklistClearURL(), 643 SuggestionsServiceImpl::BuildSuggestionsBlacklistClearURL(),
643 suggestions_profile.SerializeAsString(), net::HTTP_OK, 644 suggestions_profile.SerializeAsString(), net::HTTP_OK,
644 net::URLRequestStatus::SUCCESS); 645 net::URLRequestStatus::SUCCESS);
645 646
646 // Blacklist expectations. 647 // Blacklist expectations.
647 EXPECT_CALL(*mock_blacklist_store_, BlacklistUrl(Eq(blacklisted_url))) 648 EXPECT_CALL(*mock_blacklist_store_, BlacklistUrl(Eq(blacklisted_url)))
648 .WillOnce(Return(true)); 649 .WillOnce(Return(true));
649 EXPECT_CALL(*mock_thumbnail_manager_, 650 EXPECT_CALL(*mock_thumbnail_manager_,
650 Initialize(EqualsProto(suggestions_profile))) 651 Initialize(EqualsProto(suggestions_profile)))
651 .Times(AnyNumber()); 652 .Times(AnyNumber());
652 EXPECT_CALL(*mock_blacklist_store_, FilterSuggestions(_)).Times(AnyNumber()); 653 EXPECT_CALL(*mock_blacklist_store_, FilterSuggestions(_)).Times(AnyNumber());
(...skipping 18 matching lines...) Expand all
671 672
672 TEST_F(SuggestionsServiceTest, GetBlacklistedUrl) { 673 TEST_F(SuggestionsServiceTest, GetBlacklistedUrl) {
673 std::unique_ptr<GURL> request_url; 674 std::unique_ptr<GURL> request_url;
674 std::unique_ptr<net::FakeURLFetcher> fetcher; 675 std::unique_ptr<net::FakeURLFetcher> fetcher;
675 GURL retrieved_url; 676 GURL retrieved_url;
676 677
677 // Not a blacklist request. 678 // Not a blacklist request.
678 request_url.reset(new GURL("http://not-blacklisting.com/a?b=c")); 679 request_url.reset(new GURL("http://not-blacklisting.com/a?b=c"));
679 fetcher = CreateURLFetcher(*request_url, nullptr, "", net::HTTP_OK, 680 fetcher = CreateURLFetcher(*request_url, nullptr, "", net::HTTP_OK,
680 net::URLRequestStatus::SUCCESS); 681 net::URLRequestStatus::SUCCESS);
681 EXPECT_FALSE(SuggestionsService::GetBlacklistedUrl(*fetcher, &retrieved_url)); 682 EXPECT_FALSE(
683 SuggestionsServiceImpl::GetBlacklistedUrl(*fetcher, &retrieved_url));
682 684
683 // An actual blacklist request. 685 // An actual blacklist request.
684 std::string blacklisted_url = "http://blacklisted.com/a?b=c&d=e"; 686 std::string blacklisted_url = "http://blacklisted.com/a?b=c&d=e";
685 std::string encoded_blacklisted_url = 687 std::string encoded_blacklisted_url =
686 "http%3A%2F%2Fblacklisted.com%2Fa%3Fb%3Dc%26d%3De"; 688 "http%3A%2F%2Fblacklisted.com%2Fa%3Fb%3Dc%26d%3De";
687 std::string blacklist_request_prefix( 689 std::string blacklist_request_prefix(
688 SuggestionsService::BuildSuggestionsBlacklistURLPrefix()); 690 SuggestionsServiceImpl::BuildSuggestionsBlacklistURLPrefix());
689 request_url.reset( 691 request_url.reset(
690 new GURL(blacklist_request_prefix + encoded_blacklisted_url)); 692 new GURL(blacklist_request_prefix + encoded_blacklisted_url));
691 fetcher.reset(); 693 fetcher.reset();
692 fetcher = CreateURLFetcher(*request_url, nullptr, "", net::HTTP_OK, 694 fetcher = CreateURLFetcher(*request_url, nullptr, "", net::HTTP_OK,
693 net::URLRequestStatus::SUCCESS); 695 net::URLRequestStatus::SUCCESS);
694 EXPECT_TRUE(SuggestionsService::GetBlacklistedUrl(*fetcher, &retrieved_url)); 696 EXPECT_TRUE(
697 SuggestionsServiceImpl::GetBlacklistedUrl(*fetcher, &retrieved_url));
695 EXPECT_EQ(blacklisted_url, retrieved_url.spec()); 698 EXPECT_EQ(blacklisted_url, retrieved_url.spec());
696 } 699 }
697 700
698 TEST_F(SuggestionsServiceTest, UpdateBlacklistDelay) { 701 TEST_F(SuggestionsServiceTest, UpdateBlacklistDelay) {
699 std::unique_ptr<SuggestionsService> suggestions_service( 702 std::unique_ptr<SuggestionsServiceImpl> suggestions_service(
700 CreateSuggestionsServiceWithMocks()); 703 CreateSuggestionsServiceWithMocks());
701 base::TimeDelta initial_delay = suggestions_service->blacklist_delay(); 704 base::TimeDelta initial_delay = suggestions_service->blacklist_delay();
702 705
703 // Delay unchanged on success. 706 // Delay unchanged on success.
704 suggestions_service->UpdateBlacklistDelay(true); 707 suggestions_service->UpdateBlacklistDelay(true);
705 EXPECT_EQ(initial_delay, suggestions_service->blacklist_delay()); 708 EXPECT_EQ(initial_delay, suggestions_service->blacklist_delay());
706 709
707 // Delay increases on failure. 710 // Delay increases on failure.
708 suggestions_service->UpdateBlacklistDelay(false); 711 suggestions_service->UpdateBlacklistDelay(false);
709 EXPECT_GT(suggestions_service->blacklist_delay(), initial_delay); 712 EXPECT_GT(suggestions_service->blacklist_delay(), initial_delay);
710 713
711 // Delay resets on success. 714 // Delay resets on success.
712 suggestions_service->UpdateBlacklistDelay(true); 715 suggestions_service->UpdateBlacklistDelay(true);
713 EXPECT_EQ(initial_delay, suggestions_service->blacklist_delay()); 716 EXPECT_EQ(initial_delay, suggestions_service->blacklist_delay());
714 } 717 }
715 718
716 TEST_F(SuggestionsServiceTest, CheckDefaultTimeStamps) { 719 TEST_F(SuggestionsServiceTest, CheckDefaultTimeStamps) {
717 std::unique_ptr<SuggestionsService> suggestions_service( 720 std::unique_ptr<SuggestionsServiceImpl> suggestions_service(
718 CreateSuggestionsServiceWithMocks()); 721 CreateSuggestionsServiceWithMocks());
719 SuggestionsProfile suggestions = 722 SuggestionsProfile suggestions =
720 CreateSuggestionsProfileWithExpiryTimestamps(); 723 CreateSuggestionsProfileWithExpiryTimestamps();
721 suggestions_service->SetDefaultExpiryTimestamp(&suggestions, 724 suggestions_service->SetDefaultExpiryTimestamp(&suggestions,
722 kTestDefaultExpiry); 725 kTestDefaultExpiry);
723 EXPECT_EQ(kTestSetExpiry, suggestions.suggestions(0).expiry_ts()); 726 EXPECT_EQ(kTestSetExpiry, suggestions.suggestions(0).expiry_ts());
724 EXPECT_EQ(kTestDefaultExpiry, suggestions.suggestions(1).expiry_ts()); 727 EXPECT_EQ(kTestDefaultExpiry, suggestions.suggestions(1).expiry_ts());
725 } 728 }
726 729
727 TEST_F(SuggestionsServiceTest, GetPageThumbnail) { 730 TEST_F(SuggestionsServiceTest, GetPageThumbnail) {
728 std::unique_ptr<SuggestionsService> suggestions_service( 731 std::unique_ptr<SuggestionsService> suggestions_service(
729 CreateSuggestionsServiceWithMocks()); 732 CreateSuggestionsServiceWithMocks());
730 ASSERT_TRUE(suggestions_service != nullptr); 733 ASSERT_TRUE(suggestions_service != nullptr);
731 734
732 GURL test_url(kTestUrl); 735 GURL test_url(kTestUrl);
733 GURL thumbnail_url("https://www.thumbnails.com/thumb.jpg"); 736 GURL thumbnail_url("https://www.thumbnails.com/thumb.jpg");
734 base::Callback<void(const GURL&, const gfx::Image&)> dummy_callback; 737 base::Callback<void(const GURL&, const gfx::Image&)> dummy_callback;
735 738
736 EXPECT_CALL(*mock_thumbnail_manager_, GetImageForURL(test_url, _)); 739 EXPECT_CALL(*mock_thumbnail_manager_, GetImageForURL(test_url, _));
737 suggestions_service->GetPageThumbnail(test_url, dummy_callback); 740 suggestions_service->GetPageThumbnail(test_url, dummy_callback);
738 741
739 EXPECT_CALL(*mock_thumbnail_manager_, AddImageURL(test_url, thumbnail_url)); 742 EXPECT_CALL(*mock_thumbnail_manager_, AddImageURL(test_url, thumbnail_url));
740 EXPECT_CALL(*mock_thumbnail_manager_, GetImageForURL(test_url, _)); 743 EXPECT_CALL(*mock_thumbnail_manager_, GetImageForURL(test_url, _));
741 suggestions_service->GetPageThumbnailWithURL(test_url, thumbnail_url, 744 suggestions_service->GetPageThumbnailWithURL(test_url, thumbnail_url,
742 dummy_callback); 745 dummy_callback);
743 746
744 } 747 }
745 748
746 } // namespace suggestions 749 } // namespace suggestions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698