OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |