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

Side by Side Diff: chrome/browser/chrome_content_browser_client_unittest.cc

Issue 2578723002: Reduce BrowsingDataRemover's dependencies on Chrome (Closed)
Patch Set: A new callsite appeared through rebase - fixed the compilation error. Created 3 years, 11 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
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/chrome_content_browser_client.h" 5 #include "chrome/browser/chrome_content_browser_client.h"
6 6
7 #include <list> 7 #include <list>
8 #include <map> 8 #include <map>
9 #include <memory> 9 #include <memory>
10 10
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 class MockBrowsingDataRemover : public BrowsingDataRemover { 348 class MockBrowsingDataRemover : public BrowsingDataRemover {
349 public: 349 public:
350 explicit MockBrowsingDataRemover(content::BrowserContext* context) 350 explicit MockBrowsingDataRemover(content::BrowserContext* context)
351 : BrowsingDataRemover(context) {} 351 : BrowsingDataRemover(context) {}
352 352
353 ~MockBrowsingDataRemover() override { 353 ~MockBrowsingDataRemover() override {
354 DCHECK(!expected_calls_.size()) 354 DCHECK(!expected_calls_.size())
355 << "Expectations were set but not verified."; 355 << "Expectations were set but not verified.";
356 } 356 }
357 357
358 void RemoveInternal(const TimeRange& time_range, 358 void RemoveInternal(const base::Time& delete_begin,
359 const base::Time& delete_end,
359 int remove_mask, 360 int remove_mask,
360 int origin_type_mask, 361 int origin_type_mask,
361 std::unique_ptr<BrowsingDataFilterBuilder> filter_builder, 362 std::unique_ptr<BrowsingDataFilterBuilder> filter_builder,
362 BrowsingDataRemover::Observer* observer) override { 363 BrowsingDataRemover::Observer* observer) override {
363 actual_calls_.emplace_back(time_range, remove_mask, origin_type_mask, 364 actual_calls_.emplace_back(delete_begin, delete_end, remove_mask,
364 std::move(filter_builder), UNKNOWN); 365 origin_type_mask, std::move(filter_builder),
366 UNKNOWN);
365 367
366 // |observer| is not recorded in |actual_calls_| to be compared with 368 // |observer| is not recorded in |actual_calls_| to be compared with
367 // expectations, because it's created internally in ClearSiteData() and 369 // expectations, because it's created internally in ClearSiteData() and
368 // it's unknown to this. However, it is tested implicitly, because we use 370 // it's unknown to this. However, it is tested implicitly, because we use
369 // it for the completion callback, so an incorrect |observer| will fail 371 // it for the completion callback, so an incorrect |observer| will fail
370 // the test by waiting for the callback forever. 372 // the test by waiting for the callback forever.
371 DCHECK(observer); 373 DCHECK(observer);
372 observer->OnBrowsingDataRemoverDone(); 374 observer->OnBrowsingDataRemoverDone();
373 } 375 }
374 376
375 void ExpectCall( 377 void ExpectCall(
376 const TimeRange& time_range, 378 const base::Time& delete_begin,
379 const base::Time& delete_end,
377 int remove_mask, 380 int remove_mask,
378 int origin_type_mask, 381 int origin_type_mask,
379 std::unique_ptr<RegistrableDomainFilterBuilder> filter_builder) { 382 std::unique_ptr<RegistrableDomainFilterBuilder> filter_builder) {
380 expected_calls_.emplace_back(time_range, remove_mask, origin_type_mask, 383 expected_calls_.emplace_back(delete_begin, delete_end, remove_mask,
381 std::move(filter_builder), 384 origin_type_mask, std::move(filter_builder),
382 REGISTRABLE_DOMAIN_FILTER_BUILDER); 385 REGISTRABLE_DOMAIN_FILTER_BUILDER);
383 } 386 }
384 387
385 void ExpectCall(const TimeRange& time_range, 388 void ExpectCall(const base::Time& delete_begin,
389 const base::Time& delete_end,
386 int remove_mask, 390 int remove_mask,
387 int origin_type_mask, 391 int origin_type_mask,
388 std::unique_ptr<OriginFilterBuilder> filter_builder) { 392 std::unique_ptr<OriginFilterBuilder> filter_builder) {
389 expected_calls_.emplace_back(time_range, remove_mask, origin_type_mask, 393 expected_calls_.emplace_back(delete_begin, delete_end, remove_mask,
390 std::move(filter_builder), 394 origin_type_mask, std::move(filter_builder),
391 ORIGIN_FILTER_BUILDER); 395 ORIGIN_FILTER_BUILDER);
392 } 396 }
393 397
394 void ExpectCallDontCareAboutFilterBuilder(const TimeRange& time_range, 398 void ExpectCallDontCareAboutFilterBuilder(const base::Time& delete_begin,
399 const base::Time& delete_end,
395 int remove_mask, 400 int remove_mask,
396 int origin_type_mask) { 401 int origin_type_mask) {
397 expected_calls_.emplace_back(time_range, remove_mask, origin_type_mask, 402 expected_calls_.emplace_back(delete_begin, delete_end, remove_mask,
403 origin_type_mask,
398 std::unique_ptr<BrowsingDataFilterBuilder>(), 404 std::unique_ptr<BrowsingDataFilterBuilder>(),
399 DONT_CARE); 405 DONT_CARE);
400 } 406 }
401 407
402 void VerifyAndClearExpectations() { 408 void VerifyAndClearExpectations() {
403 EXPECT_EQ(expected_calls_, actual_calls_); 409 EXPECT_EQ(expected_calls_, actual_calls_);
404 expected_calls_.clear(); 410 expected_calls_.clear();
405 actual_calls_.clear(); 411 actual_calls_.clear();
406 } 412 }
407 413
408 private: 414 private:
409 // Used to further specify the type and intention behind the passed 415 // Used to further specify the type and intention behind the passed
410 // std::unique_ptr<BrowsingDataFilterBuilder>. This is needed for comparison 416 // std::unique_ptr<BrowsingDataFilterBuilder>. This is needed for comparison
411 // between the expected and actual call parameters. 417 // between the expected and actual call parameters.
412 enum FilterBuilderType { 418 enum FilterBuilderType {
413 REGISTRABLE_DOMAIN_FILTER_BUILDER, // RegistrableDomainFilterBuilder 419 REGISTRABLE_DOMAIN_FILTER_BUILDER, // RegistrableDomainFilterBuilder
414 ORIGIN_FILTER_BUILDER, // OriginFilterBuilder 420 ORIGIN_FILTER_BUILDER, // OriginFilterBuilder
415 UNKNOWN, // can't static_cast<> 421 UNKNOWN, // can't static_cast<>
416 DONT_CARE // don't have to compare for equality 422 DONT_CARE // don't have to compare for equality
417 }; 423 };
418 424
419 class CallParameters { 425 class CallParameters {
420 public: 426 public:
421 CallParameters(const TimeRange& time_range, 427 CallParameters(const base::Time& delete_begin,
428 const base::Time& delete_end,
422 int remove_mask, 429 int remove_mask,
423 int origin_type_mask, 430 int origin_type_mask,
424 std::unique_ptr<BrowsingDataFilterBuilder> filter_builder, 431 std::unique_ptr<BrowsingDataFilterBuilder> filter_builder,
425 FilterBuilderType type) 432 FilterBuilderType type)
426 : time_range_(time_range), 433 : delete_begin_(delete_begin),
434 delete_end_(delete_end),
427 remove_mask_(remove_mask), 435 remove_mask_(remove_mask),
428 origin_type_mask_(origin_type_mask), 436 origin_type_mask_(origin_type_mask),
429 filter_builder_(std::move(filter_builder)), 437 filter_builder_(std::move(filter_builder)),
430 type_(type) {} 438 type_(type) {}
431 ~CallParameters() {} 439 ~CallParameters() {}
432 440
433 bool operator==(const CallParameters& other) const { 441 bool operator==(const CallParameters& other) const {
434 const CallParameters& a = *this; 442 const CallParameters& a = *this;
435 const CallParameters& b = other; 443 const CallParameters& b = other;
436 444
437 if (!(a.time_range_ == b.time_range_) || 445 if (a.delete_begin_ != b.delete_begin_ ||
446 a.delete_end_ != b.delete_end_ ||
438 a.remove_mask_ != b.remove_mask_ || 447 a.remove_mask_ != b.remove_mask_ ||
439 a.origin_type_mask_ != b.origin_type_mask_) { 448 a.origin_type_mask_ != b.origin_type_mask_) {
440 return false; 449 return false;
441 } 450 }
442 451
443 if (a.type_ == DONT_CARE || b.type_ == DONT_CARE) 452 if (a.type_ == DONT_CARE || b.type_ == DONT_CARE)
444 return true; 453 return true;
445 if (a.type_ == UNKNOWN && b.type_ == UNKNOWN) 454 if (a.type_ == UNKNOWN && b.type_ == UNKNOWN)
446 return false; 455 return false;
447 if (a.type_ != UNKNOWN && b.type_ != UNKNOWN && a.type_ != b.type_) 456 if (a.type_ != UNKNOWN && b.type_ != UNKNOWN && a.type_ != b.type_)
(...skipping 13 matching lines...) Expand all
461 a.filter_builder_.get()) == 470 a.filter_builder_.get()) ==
462 *static_cast<RegistrableDomainFilterBuilder*>( 471 *static_cast<RegistrableDomainFilterBuilder*>(
463 b.filter_builder_.get()); 472 b.filter_builder_.get());
464 } 473 }
465 474
466 NOTREACHED(); 475 NOTREACHED();
467 return false; 476 return false;
468 } 477 }
469 478
470 private: 479 private:
471 TimeRange time_range_; 480 base::Time delete_begin_;
481 base::Time delete_end_;
472 int remove_mask_; 482 int remove_mask_;
473 int origin_type_mask_; 483 int origin_type_mask_;
474 std::unique_ptr<BrowsingDataFilterBuilder> filter_builder_; 484 std::unique_ptr<BrowsingDataFilterBuilder> filter_builder_;
475 FilterBuilderType type_; 485 FilterBuilderType type_;
476 }; 486 };
477 487
478 std::list<CallParameters> actual_calls_; 488 std::list<CallParameters> actual_calls_;
479 std::list<CallParameters> expected_calls_; 489 std::list<CallParameters> expected_calls_;
480 }; 490 };
481 491
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
543 ~BrowsingDataRemover::REMOVE_PLUGIN_DATA)}, 553 ~BrowsingDataRemover::REMOVE_PLUGIN_DATA)},
544 {true, true, true, BrowsingDataRemover::REMOVE_SITE_DATA | 554 {true, true, true, BrowsingDataRemover::REMOVE_SITE_DATA |
545 BrowsingDataRemover::REMOVE_CACHE}, 555 BrowsingDataRemover::REMOVE_CACHE},
546 }; 556 };
547 557
548 for (unsigned int i = 0; i < arraysize(test_cases); ++i) { 558 for (unsigned int i = 0; i < arraysize(test_cases); ++i) {
549 SCOPED_TRACE(base::StringPrintf("Test case %d", i)); 559 SCOPED_TRACE(base::StringPrintf("Test case %d", i));
550 const TestCase& test_case = test_cases[i]; 560 const TestCase& test_case = test_cases[i];
551 561
552 // We always delete data for all time and all origin types. 562 // We always delete data for all time and all origin types.
553 BrowsingDataRemover::TimeRange all_time(base::Time(), base::Time::Max());
554 BrowsingDataHelper::OriginTypeMask all_origin_types = 563 BrowsingDataHelper::OriginTypeMask all_origin_types =
555 BrowsingDataHelper::ALL; 564 BrowsingDataHelper::ALL;
556 565
557 // Some data are deleted for the origin and some for the registrable domain. 566 // Some data are deleted for the origin and some for the registrable domain.
558 // Depending on the chosen datatypes, this might result into one or two 567 // Depending on the chosen datatypes, this might result into one or two
559 // calls. In the latter case, the removal mask will be split into two 568 // calls. In the latter case, the removal mask will be split into two
560 // parts - one for the origin deletion and one for the registrable domain. 569 // parts - one for the origin deletion and one for the registrable domain.
561 const int domain_scoped_types = BrowsingDataRemover::REMOVE_COOKIES | 570 const int domain_scoped_types = BrowsingDataRemover::REMOVE_COOKIES |
562 BrowsingDataRemover::REMOVE_CHANNEL_IDS | 571 BrowsingDataRemover::REMOVE_CHANNEL_IDS |
563 BrowsingDataRemover::REMOVE_PLUGIN_DATA; 572 BrowsingDataRemover::REMOVE_PLUGIN_DATA;
564 int registrable_domain_deletion_mask = test_case.mask & domain_scoped_types; 573 int registrable_domain_deletion_mask = test_case.mask & domain_scoped_types;
565 int origin_deletion_mask = test_case.mask & ~domain_scoped_types; 574 int origin_deletion_mask = test_case.mask & ~domain_scoped_types;
566 575
567 if (registrable_domain_deletion_mask) { 576 if (registrable_domain_deletion_mask) {
568 remover()->ExpectCallDontCareAboutFilterBuilder( 577 remover()->ExpectCallDontCareAboutFilterBuilder(
569 all_time, registrable_domain_deletion_mask, all_origin_types); 578 base::Time(), base::Time::Max(),
579 registrable_domain_deletion_mask, all_origin_types);
570 } 580 }
571 581
572 if (origin_deletion_mask) { 582 if (origin_deletion_mask) {
573 remover()->ExpectCallDontCareAboutFilterBuilder( 583 remover()->ExpectCallDontCareAboutFilterBuilder(
574 all_time, origin_deletion_mask, all_origin_types); 584 base::Time(), base::Time::Max(),
585 origin_deletion_mask, all_origin_types);
575 } 586 }
576 587
577 SetClearingFinished(false); 588 SetClearingFinished(false);
578 client.ClearSiteData( 589 client.ClearSiteData(
579 profile(), url::Origin(GURL("https://www.example.com")), 590 profile(), url::Origin(GURL("https://www.example.com")),
580 test_case.cookies, test_case.storage, test_case.cache, 591 test_case.cookies, test_case.storage, test_case.cache,
581 base::Bind( 592 base::Bind(
582 &ChromeContentBrowserClientClearSiteDataTest::SetClearingFinished, 593 &ChromeContentBrowserClientClearSiteDataTest::SetClearingFinished,
583 base::Unretained(this), true)); 594 base::Unretained(this), true));
584 EXPECT_TRUE(IsClearingFinished()); 595 EXPECT_TRUE(IsClearingFinished());
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
632 643
633 for (const TestCase& test_case : test_cases) { 644 for (const TestCase& test_case : test_cases) {
634 SCOPED_TRACE(test_case.origin); 645 SCOPED_TRACE(test_case.origin);
635 646
636 std::unique_ptr<RegistrableDomainFilterBuilder> 647 std::unique_ptr<RegistrableDomainFilterBuilder>
637 registrable_domain_filter_builder(new RegistrableDomainFilterBuilder( 648 registrable_domain_filter_builder(new RegistrableDomainFilterBuilder(
638 BrowsingDataFilterBuilder::WHITELIST)); 649 BrowsingDataFilterBuilder::WHITELIST));
639 registrable_domain_filter_builder->AddRegisterableDomain(test_case.domain); 650 registrable_domain_filter_builder->AddRegisterableDomain(test_case.domain);
640 651
641 remover()->ExpectCall( 652 remover()->ExpectCall(
642 BrowsingDataRemover::Period(browsing_data::TimePeriod::ALL_TIME), 653 base::Time(), base::Time::Max(),
643 BrowsingDataRemover::REMOVE_COOKIES | 654 BrowsingDataRemover::REMOVE_COOKIES |
644 BrowsingDataRemover::REMOVE_CHANNEL_IDS | 655 BrowsingDataRemover::REMOVE_CHANNEL_IDS |
645 BrowsingDataRemover::REMOVE_PLUGIN_DATA, 656 BrowsingDataRemover::REMOVE_PLUGIN_DATA,
646 BrowsingDataHelper::ALL, std::move(registrable_domain_filter_builder)); 657 BrowsingDataHelper::ALL, std::move(registrable_domain_filter_builder));
647 658
648 std::unique_ptr<OriginFilterBuilder> origin_filter_builder( 659 std::unique_ptr<OriginFilterBuilder> origin_filter_builder(
649 new OriginFilterBuilder(BrowsingDataFilterBuilder::WHITELIST)); 660 new OriginFilterBuilder(BrowsingDataFilterBuilder::WHITELIST));
650 origin_filter_builder->AddOrigin(url::Origin(GURL(test_case.origin))); 661 origin_filter_builder->AddOrigin(url::Origin(GURL(test_case.origin)));
651 662
652 remover()->ExpectCall( 663 remover()->ExpectCall(
653 BrowsingDataRemover::Period(browsing_data::TimePeriod::ALL_TIME), 664 base::Time(), base::Time::Max(),
654 BrowsingDataRemover::REMOVE_CACHE, BrowsingDataHelper::ALL, 665 BrowsingDataRemover::REMOVE_CACHE, BrowsingDataHelper::ALL,
655 std::move(origin_filter_builder)); 666 std::move(origin_filter_builder));
656 667
657 SetClearingFinished(false); 668 SetClearingFinished(false);
658 client.ClearSiteData( 669 client.ClearSiteData(
659 profile(), url::Origin(GURL(test_case.origin)), true /* cookies */, 670 profile(), url::Origin(GURL(test_case.origin)), true /* cookies */,
660 false /* storage */, true /* cache */, 671 false /* storage */, true /* cache */,
661 base::Bind( 672 base::Bind(
662 &ChromeContentBrowserClientClearSiteDataTest::SetClearingFinished, 673 &ChromeContentBrowserClientClearSiteDataTest::SetClearingFinished,
663 base::Unretained(this), true)); 674 base::Unretained(this), true));
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
708 client.ClearSiteData( 719 client.ClearSiteData(
709 profile(), origin, true /* cookies */, false /* storage */, 720 profile(), origin, true /* cookies */, false /* storage */,
710 true /* cache */, 721 true /* cache */,
711 base::Bind( 722 base::Bind(
712 &ChromeContentBrowserClientClearSiteDataTest::SetClearingFinished, 723 &ChromeContentBrowserClientClearSiteDataTest::SetClearingFinished,
713 base::Unretained(this), true)); 724 base::Unretained(this), true));
714 EXPECT_TRUE(IsClearingFinished()); 725 EXPECT_TRUE(IsClearingFinished());
715 } 726 }
716 727
717 } // namespace 728 } // namespace
OLDNEW
« no previous file with comments | « chrome/browser/chrome_content_browser_client.cc ('k') | chrome/browser/chromeos/profiles/profile_helper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698