OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/browsing_data/browsing_data_remover.h" | 5 #include "chrome/browser/browsing_data/browsing_data_remover.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 25 matching lines...) Expand all Loading... |
36 #if defined(OS_CHROMEOS) | 36 #if defined(OS_CHROMEOS) |
37 #include "chromeos/dbus/dbus_thread_manager.h" | 37 #include "chromeos/dbus/dbus_thread_manager.h" |
38 #include "chromeos/dbus/fake_dbus_thread_manager.h" | 38 #include "chromeos/dbus/fake_dbus_thread_manager.h" |
39 #include "chromeos/dbus/mock_cryptohome_client.h" | 39 #include "chromeos/dbus/mock_cryptohome_client.h" |
40 #endif | 40 #endif |
41 #include "components/autofill/core/browser/autofill_profile.h" | 41 #include "components/autofill/core/browser/autofill_profile.h" |
42 #include "components/autofill/core/browser/autofill_test_utils.h" | 42 #include "components/autofill/core/browser/autofill_test_utils.h" |
43 #include "components/autofill/core/browser/credit_card.h" | 43 #include "components/autofill/core/browser/credit_card.h" |
44 #include "components/autofill/core/browser/personal_data_manager.h" | 44 #include "components/autofill/core/browser/personal_data_manager.h" |
45 #include "components/autofill/core/browser/personal_data_manager_observer.h" | 45 #include "components/autofill/core/browser/personal_data_manager_observer.h" |
| 46 #include "components/domain_reliability/clear_mode.h" |
| 47 #include "components/domain_reliability/monitor.h" |
46 #include "content/public/browser/cookie_store_factory.h" | 48 #include "content/public/browser/cookie_store_factory.h" |
47 #include "content/public/browser/dom_storage_context.h" | 49 #include "content/public/browser/dom_storage_context.h" |
48 #include "content/public/browser/local_storage_usage_info.h" | 50 #include "content/public/browser/local_storage_usage_info.h" |
49 #include "content/public/browser/notification_service.h" | 51 #include "content/public/browser/notification_service.h" |
50 #include "content/public/browser/storage_partition.h" | 52 #include "content/public/browser/storage_partition.h" |
51 #include "content/public/test/test_browser_thread.h" | 53 #include "content/public/test/test_browser_thread.h" |
52 #include "content/public/test/test_browser_thread_bundle.h" | 54 #include "content/public/test/test_browser_thread_bundle.h" |
53 #include "content/public/test/test_utils.h" | 55 #include "content/public/test/test_utils.h" |
54 #include "net/cookies/cookie_store.h" | 56 #include "net/cookies/cookie_store.h" |
55 #include "net/ssl/server_bound_cert_service.h" | 57 #include "net/ssl/server_bound_cert_service.h" |
56 #include "net/ssl/server_bound_cert_store.h" | 58 #include "net/ssl/server_bound_cert_store.h" |
57 #include "net/ssl/ssl_client_cert_type.h" | 59 #include "net/ssl/ssl_client_cert_type.h" |
58 #include "net/url_request/url_request_context.h" | 60 #include "net/url_request/url_request_context.h" |
59 #include "net/url_request/url_request_context_getter.h" | 61 #include "net/url_request/url_request_context_getter.h" |
60 #include "testing/gmock/include/gmock/gmock.h" | 62 #include "testing/gmock/include/gmock/gmock.h" |
61 #include "testing/gtest/include/gtest/gtest.h" | 63 #include "testing/gtest/include/gtest/gtest.h" |
62 | 64 |
63 using content::BrowserThread; | 65 using content::BrowserThread; |
64 using content::StoragePartition; | 66 using content::StoragePartition; |
| 67 using domain_reliability::CLEAR_BEACONS; |
| 68 using domain_reliability::CLEAR_CONTEXTS; |
| 69 using domain_reliability::DomainReliabilityClearMode; |
| 70 using domain_reliability::DomainReliabilityMonitor; |
65 using testing::_; | 71 using testing::_; |
66 using testing::Invoke; | 72 using testing::Invoke; |
67 using testing::WithArgs; | 73 using testing::WithArgs; |
68 | 74 |
69 namespace { | 75 namespace { |
70 | 76 |
71 const char kTestOrigin1[] = "http://host1:1/"; | 77 const char kTestOrigin1[] = "http://host1:1/"; |
72 const char kTestOrigin2[] = "http://host2:1/"; | 78 const char kTestOrigin2[] = "http://host2:1/"; |
73 const char kTestOrigin3[] = "http://host3:1/"; | 79 const char kTestOrigin3[] = "http://host3:1/"; |
74 const char kTestOriginExt[] = "chrome-extension://abcdefghijklmnopqrstuvwxyz/"; | 80 const char kTestOriginExt[] = "chrome-extension://abcdefghijklmnopqrstuvwxyz/"; |
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
567 // We don't own these pointers. | 573 // We don't own these pointers. |
568 TestingProfile* profile_; | 574 TestingProfile* profile_; |
569 content::DOMStorageContext* dom_storage_context_; | 575 content::DOMStorageContext* dom_storage_context_; |
570 | 576 |
571 std::vector<content::LocalStorageUsageInfo> infos_; | 577 std::vector<content::LocalStorageUsageInfo> infos_; |
572 base::Closure quit_closure_; | 578 base::Closure quit_closure_; |
573 | 579 |
574 DISALLOW_COPY_AND_ASSIGN(RemoveLocalStorageTester); | 580 DISALLOW_COPY_AND_ASSIGN(RemoveLocalStorageTester); |
575 }; | 581 }; |
576 | 582 |
| 583 class TestingProfileWithDomainReliabilityMonitor : public TestingProfile { |
| 584 public: |
| 585 TestingProfileWithDomainReliabilityMonitor() : |
| 586 TestingProfile(), |
| 587 upload_reporter_string_("test-reporter"), |
| 588 monitor_(GetRequestContext()->GetURLRequestContext(), |
| 589 upload_reporter_string_) {} |
| 590 |
| 591 virtual void ClearDomainReliabilityMonitor( |
| 592 DomainReliabilityClearMode mode, |
| 593 const base::Closure& completion) OVERRIDE { |
| 594 monitor_.ClearBrowsingData(mode); |
| 595 completion.Run(); |
| 596 } |
| 597 |
| 598 DomainReliabilityMonitor* monitor() { return &monitor_; } |
| 599 |
| 600 private: |
| 601 std::string upload_reporter_string_; |
| 602 DomainReliabilityMonitor monitor_; |
| 603 }; |
| 604 |
577 // Test Class ---------------------------------------------------------------- | 605 // Test Class ---------------------------------------------------------------- |
578 | 606 |
579 class BrowsingDataRemoverTest : public testing::Test, | 607 class BrowsingDataRemoverTest : public testing::Test, |
580 public content::NotificationObserver { | 608 public content::NotificationObserver { |
581 public: | 609 public: |
582 BrowsingDataRemoverTest() | 610 BrowsingDataRemoverTest() |
583 : profile_(new TestingProfile()) { | 611 : profile_(new TestingProfile()) { |
584 registrar_.Add(this, chrome::NOTIFICATION_BROWSING_DATA_REMOVED, | 612 registrar_.Add(this, chrome::NOTIFICATION_BROWSING_DATA_REMOVED, |
585 content::Source<Profile>(profile_.get())); | 613 content::Source<Profile>(profile_.get())); |
586 } | 614 } |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
672 | 700 |
673 // We're not taking ownership of the details object, but storing a copy of | 701 // We're not taking ownership of the details object, but storing a copy of |
674 // it locally. | 702 // it locally. |
675 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails( | 703 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails( |
676 *content::Details<BrowsingDataRemover::NotificationDetails>( | 704 *content::Details<BrowsingDataRemover::NotificationDetails>( |
677 details).ptr())); | 705 details).ptr())); |
678 | 706 |
679 registrar_.RemoveAll(); | 707 registrar_.RemoveAll(); |
680 } | 708 } |
681 | 709 |
| 710 DomainReliabilityMonitor *UseProfileWithDomainReliabilityMonitor() { |
| 711 TestingProfileWithDomainReliabilityMonitor* new_profile = |
| 712 new TestingProfileWithDomainReliabilityMonitor(); |
| 713 DomainReliabilityMonitor* monitor = new_profile->monitor(); |
| 714 profile_.reset(new_profile); |
| 715 return monitor; |
| 716 } |
| 717 |
682 protected: | 718 protected: |
683 scoped_ptr<BrowsingDataRemover::NotificationDetails> called_with_details_; | 719 scoped_ptr<BrowsingDataRemover::NotificationDetails> called_with_details_; |
684 | 720 |
685 private: | 721 private: |
686 content::NotificationRegistrar registrar_; | 722 content::NotificationRegistrar registrar_; |
687 | 723 |
688 content::TestBrowserThreadBundle thread_bundle_; | 724 content::TestBrowserThreadBundle thread_bundle_; |
689 scoped_ptr<TestingProfile> profile_; | 725 scoped_ptr<TestingProfile> profile_; |
690 | 726 |
691 StoragePartitionRemovalData storage_partition_removal_data_; | 727 StoragePartitionRemovalData storage_partition_removal_data_; |
(...skipping 919 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1611 EXPECT_CALL(*cryptohome_client, TpmAttestationDeleteKeys(_, _, _, _)) | 1647 EXPECT_CALL(*cryptohome_client, TpmAttestationDeleteKeys(_, _, _, _)) |
1612 .WillOnce(WithArgs<3>(Invoke(FakeDBusCall))); | 1648 .WillOnce(WithArgs<3>(Invoke(FakeDBusCall))); |
1613 | 1649 |
1614 BlockUntilBrowsingDataRemoved( | 1650 BlockUntilBrowsingDataRemoved( |
1615 BrowsingDataRemover::EVERYTHING, | 1651 BrowsingDataRemover::EVERYTHING, |
1616 BrowsingDataRemover::REMOVE_CONTENT_LICENSES, false); | 1652 BrowsingDataRemover::REMOVE_CONTENT_LICENSES, false); |
1617 | 1653 |
1618 chromeos::DBusThreadManager::Shutdown(); | 1654 chromeos::DBusThreadManager::Shutdown(); |
1619 } | 1655 } |
1620 #endif | 1656 #endif |
| 1657 |
| 1658 TEST_F(BrowsingDataRemoverTest, DomainReliability_Null) { |
| 1659 DomainReliabilityMonitor* monitor = UseProfileWithDomainReliabilityMonitor(); |
| 1660 EXPECT_FALSE(monitor->was_cleared_for_testing()); |
| 1661 } |
| 1662 |
| 1663 TEST_F(BrowsingDataRemoverTest, DomainReliability_Beacons) { |
| 1664 DomainReliabilityMonitor* monitor = UseProfileWithDomainReliabilityMonitor(); |
| 1665 BlockUntilBrowsingDataRemoved( |
| 1666 BrowsingDataRemover::EVERYTHING, |
| 1667 BrowsingDataRemover::REMOVE_HISTORY, false); |
| 1668 EXPECT_TRUE(monitor->was_cleared_for_testing()); |
| 1669 EXPECT_EQ(CLEAR_BEACONS, monitor->cleared_mode_for_testing()); |
| 1670 } |
| 1671 |
| 1672 TEST_F(BrowsingDataRemoverTest, DomainReliability_Beacons_ProtectedOrigins) { |
| 1673 DomainReliabilityMonitor* monitor = UseProfileWithDomainReliabilityMonitor(); |
| 1674 BlockUntilBrowsingDataRemoved( |
| 1675 BrowsingDataRemover::EVERYTHING, |
| 1676 BrowsingDataRemover::REMOVE_HISTORY, true); |
| 1677 EXPECT_TRUE(monitor->was_cleared_for_testing()); |
| 1678 EXPECT_EQ(CLEAR_BEACONS, monitor->cleared_mode_for_testing()); |
| 1679 } |
| 1680 |
| 1681 TEST_F(BrowsingDataRemoverTest, DomainReliability_Contexts) { |
| 1682 DomainReliabilityMonitor* monitor = UseProfileWithDomainReliabilityMonitor(); |
| 1683 BlockUntilBrowsingDataRemoved( |
| 1684 BrowsingDataRemover::EVERYTHING, |
| 1685 BrowsingDataRemover::REMOVE_COOKIES, false); |
| 1686 EXPECT_TRUE(monitor->was_cleared_for_testing()); |
| 1687 EXPECT_EQ(CLEAR_CONTEXTS, monitor->cleared_mode_for_testing()); |
| 1688 } |
| 1689 |
| 1690 TEST_F(BrowsingDataRemoverTest, DomainReliability_Contexts_ProtectedOrigins) { |
| 1691 DomainReliabilityMonitor* monitor = UseProfileWithDomainReliabilityMonitor(); |
| 1692 BlockUntilBrowsingDataRemoved( |
| 1693 BrowsingDataRemover::EVERYTHING, |
| 1694 BrowsingDataRemover::REMOVE_COOKIES, true); |
| 1695 EXPECT_TRUE(monitor->was_cleared_for_testing()); |
| 1696 EXPECT_EQ(CLEAR_CONTEXTS, monitor->cleared_mode_for_testing()); |
| 1697 } |
OLD | NEW |