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

Side by Side Diff: chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc

Issue 2829683004: Reporting: Plumb from //chrome/browser/browsing_data. (Closed)
Patch Set: Created 3 years, 8 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 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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/chrome_browsing_data_remover_delegate.h" 5 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h"
6 6
7 #include "base/guid.h" 7 #include "base/guid.h"
8 #include "base/run_loop.h" 8 #include "base/run_loop.h"
9 #include "base/strings/string_number_conversions.h" 9 #include "base/strings/string_number_conversions.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 #include "components/password_manager/core/browser/password_manager_test_utils.h " 56 #include "components/password_manager/core/browser/password_manager_test_utils.h "
57 #include "components/password_manager/core/browser/password_store_consumer.h" 57 #include "components/password_manager/core/browser/password_store_consumer.h"
58 #include "components/prefs/testing_pref_service.h" 58 #include "components/prefs/testing_pref_service.h"
59 #include "components/translate/core/browser/language_model.h" 59 #include "components/translate/core/browser/language_model.h"
60 #include "content/public/browser/browsing_data_filter_builder.h" 60 #include "content/public/browser/browsing_data_filter_builder.h"
61 #include "content/public/test/mock_download_manager.h" 61 #include "content/public/test/mock_download_manager.h"
62 #include "content/public/test/test_browser_thread_bundle.h" 62 #include "content/public/test/test_browser_thread_bundle.h"
63 #include "content/public/test/test_utils.h" 63 #include "content/public/test/test_utils.h"
64 #include "net/cookies/cookie_store.h" 64 #include "net/cookies/cookie_store.h"
65 #include "net/http/http_transaction_factory.h" 65 #include "net/http/http_transaction_factory.h"
66 #include "net/reporting/reporting_browsing_data_remover.h"
67 #include "net/reporting/reporting_service.h"
66 #include "net/url_request/url_request_context.h" 68 #include "net/url_request/url_request_context.h"
67 #include "net/url_request/url_request_context_getter.h" 69 #include "net/url_request/url_request_context_getter.h"
68 #include "third_party/skia/include/core/SkBitmap.h" 70 #include "third_party/skia/include/core/SkBitmap.h"
69 #include "ui/gfx/favicon_size.h" 71 #include "ui/gfx/favicon_size.h"
70 72
71 #if defined(OS_ANDROID) 73 #if defined(OS_ANDROID)
72 #include "chrome/browser/android/webapps/webapp_registry.h" 74 #include "chrome/browser/android/webapps/webapp_registry.h"
73 #endif 75 #endif
74 76
75 #if defined(OS_CHROMEOS) 77 #if defined(OS_CHROMEOS)
(...skipping 757 matching lines...) Expand 10 before | Expand all | Expand 10 after
833 835
834 private: 836 private:
835 void OnPersonalDataChanged() override { 837 void OnPersonalDataChanged() override {
836 base::MessageLoop::current()->QuitWhenIdle(); 838 base::MessageLoop::current()->QuitWhenIdle();
837 } 839 }
838 840
839 autofill::PersonalDataManager* personal_data_manager_; 841 autofill::PersonalDataManager* personal_data_manager_;
840 DISALLOW_COPY_AND_ASSIGN(RemoveAutofillTester); 842 DISALLOW_COPY_AND_ASSIGN(RemoveAutofillTester);
841 }; 843 };
842 844
845 class MockReportingService : public net::ReportingService {
846 public:
847 MockReportingService() {}
848
849 // net::ReportingService implementation:
850
851 ~MockReportingService() override {}
852
853 void QueueReport(const GURL& url,
854 const std::string& group,
855 const std::string& type,
856 std::unique_ptr<const base::Value> body) override {
857 NOTREACHED();
858 }
859
860 void ProcessHeader(const GURL& url,
861 const std::string& header_value) override {
862 NOTREACHED();
863 }
864
865 void RemoveBrowsingData(
866 int data_type_mask,
867 base::Callback<bool(const GURL&)> origin_filter) override {
868 ++remove_calls_;
869 last_data_type_mask_ = data_type_mask;
870 last_origin_filter_ = origin_filter;
871 }
872
873 int remove_calls() const { return remove_calls_; }
874 int last_data_type_mask() const { return last_data_type_mask_; }
875 base::Callback<bool(const GURL&)> last_origin_filter() const {
876 return last_origin_filter_;
877 }
878
879 private:
880 int remove_calls_ = 0;
881 int last_data_type_mask_ = 0;
882 base::Callback<bool(const GURL&)> last_origin_filter_;
883
884 DISALLOW_COPY_AND_ASSIGN(MockReportingService);
885 };
886
887 class ClearReportingCacheTester {
888 public:
889 ClearReportingCacheTester(TestingProfile* profile, bool create_service)
890 : profile_(profile) {
891 if (create_service)
892 service_ = base::MakeUnique<MockReportingService>();
893
894 base::RunLoop run_loop;
895 content::BrowserThread::PostTaskAndReply(
896 content::BrowserThread::IO, FROM_HERE,
897 base::Bind(&ClearReportingCacheTester::SetUpOnIOThread,
898 base::Unretained(this)),
899 run_loop.QuitClosure());
900 run_loop.Run();
901 }
902
903 void SetUpOnIOThread() {
904 net::URLRequestContext* request_context =
905 profile_->GetRequestContext()->GetURLRequestContext();
906 old_service_ = request_context->reporting_service();
907 request_context->set_reporting_service(service_.get());
908 }
909
910 ~ClearReportingCacheTester() {
911 base::RunLoop run_loop;
912 content::BrowserThread::PostTaskAndReply(
913 content::BrowserThread::IO, FROM_HERE,
914 base::Bind(&ClearReportingCacheTester::TearDownOnIOThread,
915 base::Unretained(this)),
916 run_loop.QuitClosure());
917 run_loop.Run();
918 }
919
920 void TearDownOnIOThread() {
921 net::URLRequestContext* request_context =
922 profile_->GetRequestContext()->GetURLRequestContext();
923 DCHECK_EQ(service_.get(), request_context->reporting_service());
924 request_context->set_reporting_service(old_service_);
925 }
926
927 void GetMockInfo(int* remove_calls_out,
928 int* last_data_type_mask_out,
929 base::Callback<bool(const GURL&)>* last_origin_filter_out) {
930 DCHECK_NE(nullptr, service_.get());
931
932 base::RunLoop run_loop;
933 content::BrowserThread::PostTaskAndReply(
934 content::BrowserThread::IO, FROM_HERE,
935 base::Bind(&ClearReportingCacheTester::GetMockInfoOnIOThread,
936 base::Unretained(this), remove_calls_out,
937 last_data_type_mask_out, last_origin_filter_out),
938 run_loop.QuitClosure());
939 run_loop.Run();
940 }
941
942 void GetMockInfoOnIOThread(
943 int* remove_calls_out,
944 int* last_data_type_mask_out,
945 base::Callback<bool(const GURL&)>* last_origin_filter_out) {
946 *remove_calls_out = service_->remove_calls();
947 *last_data_type_mask_out = service_->last_data_type_mask();
948 *last_origin_filter_out = service_->last_origin_filter();
949 }
950
951 private:
952 TestingProfile* profile_;
953 std::unique_ptr<MockReportingService> service_;
954 net::ReportingService* old_service_;
955 };
956
843 // Test Class ----------------------------------------------------------------- 957 // Test Class -----------------------------------------------------------------
844 958
845 class ChromeBrowsingDataRemoverDelegateTest : public testing::Test { 959 class ChromeBrowsingDataRemoverDelegateTest : public testing::Test {
846 public: 960 public:
847 ChromeBrowsingDataRemoverDelegateTest() 961 ChromeBrowsingDataRemoverDelegateTest()
848 : profile_(new TestingProfile()), 962 : profile_(new TestingProfile()),
849 clear_domain_reliability_tester_(profile_.get()) { 963 clear_domain_reliability_tester_(profile_.get()) {
850 remover_ = BrowsingDataRemoverFactory::GetForBrowserContext(profile_.get()); 964 remover_ = BrowsingDataRemoverFactory::GetForBrowserContext(profile_.get());
851 965
852 #if defined(OS_ANDROID) 966 #if defined(OS_ANDROID)
(...skipping 1135 matching lines...) Expand 10 before | Expand all | Expand 10 after
1988 EXPECT_FALSE(Match(kOrigin1, kProtected, nullptr)); 2102 EXPECT_FALSE(Match(kOrigin1, kProtected, nullptr));
1989 EXPECT_FALSE(Match(kOriginExt, kProtected, nullptr)); 2103 EXPECT_FALSE(Match(kOriginExt, kProtected, nullptr));
1990 EXPECT_FALSE(Match(kOriginDevTools, kProtected, nullptr)); 2104 EXPECT_FALSE(Match(kOriginDevTools, kProtected, nullptr));
1991 2105
1992 #if BUILDFLAG(ENABLE_EXTENSIONS) 2106 #if BUILDFLAG(ENABLE_EXTENSIONS)
1993 EXPECT_FALSE(Match(kOrigin1, kExtension, nullptr)); 2107 EXPECT_FALSE(Match(kOrigin1, kExtension, nullptr));
1994 EXPECT_TRUE(Match(kOriginExt, kExtension, nullptr)); 2108 EXPECT_TRUE(Match(kOriginExt, kExtension, nullptr));
1995 EXPECT_FALSE(Match(kOriginDevTools, kExtension, nullptr)); 2109 EXPECT_FALSE(Match(kOriginDevTools, kExtension, nullptr));
1996 #endif 2110 #endif
1997 } 2111 }
2112
2113 TEST_F(ChromeBrowsingDataRemoverDelegateTest, ReportingCache_NoService) {
2114 ClearReportingCacheTester tester(GetProfile(), false);
2115
2116 BlockUntilBrowsingDataRemoved(
2117 base::Time(), base::Time::Max(),
2118 BrowsingDataRemover::DATA_TYPE_COOKIES |
2119 ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY,
2120 true);
2121
2122 // Nothing to check, since there's no mock service; we're just making sure
2123 // nothing crashes without a service.
2124 }
2125
2126 TEST_F(ChromeBrowsingDataRemoverDelegateTest, ReportingCache_Cookies) {
2127 ClearReportingCacheTester tester(GetProfile(), true);
2128
2129 BlockUntilBrowsingDataRemoved(base::Time(), base::Time::Max(),
2130 BrowsingDataRemover::DATA_TYPE_COOKIES, true);
2131
2132 int remove_count;
2133 int data_type_mask;
2134 base::Callback<bool(const GURL&)> origin_filter;
2135 tester.GetMockInfo(&remove_count, &data_type_mask, &origin_filter);
2136
2137 EXPECT_EQ(1, remove_count);
2138 EXPECT_EQ(net::ReportingBrowsingDataRemover::DATA_TYPE_CLIENTS,
2139 data_type_mask);
2140 EXPECT_TRUE(ProbablySameFilters(BrowsingDataFilterBuilder::BuildNoopFilter(),
2141 origin_filter));
2142 }
2143
2144 TEST_F(ChromeBrowsingDataRemoverDelegateTest,
2145 ReportingCache_Cookies_WithFilter) {
2146 ClearReportingCacheTester tester(GetProfile(), true);
2147
2148 std::unique_ptr<BrowsingDataFilterBuilder> builder(
2149 BrowsingDataFilterBuilder::Create(BrowsingDataFilterBuilder::WHITELIST));
2150 builder->AddRegisterableDomain(kTestRegisterableDomain1);
2151
2152 BlockUntilOriginDataRemoved(base::Time(), base::Time::Max(),
2153 BrowsingDataRemover::DATA_TYPE_COOKIES,
2154 builder->Copy());
2155
2156 int remove_count;
2157 int data_type_mask;
2158 base::Callback<bool(const GURL&)> origin_filter;
2159 tester.GetMockInfo(&remove_count, &data_type_mask, &origin_filter);
2160
2161 EXPECT_EQ(1, remove_count);
2162 EXPECT_EQ(net::ReportingBrowsingDataRemover::DATA_TYPE_CLIENTS,
2163 data_type_mask);
2164 EXPECT_TRUE(
2165 ProbablySameFilters(builder->BuildGeneralFilter(), origin_filter));
2166 }
2167
2168 TEST_F(ChromeBrowsingDataRemoverDelegateTest, ReportingCache_History) {
2169 ClearReportingCacheTester tester(GetProfile(), true);
2170
2171 BlockUntilBrowsingDataRemoved(
2172 base::Time(), base::Time::Max(),
2173 ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY, true);
2174
2175 int remove_count;
2176 int data_type_mask;
2177 base::Callback<bool(const GURL&)> origin_filter;
2178 tester.GetMockInfo(&remove_count, &data_type_mask, &origin_filter);
2179
2180 EXPECT_EQ(1, remove_count);
2181 EXPECT_EQ(net::ReportingBrowsingDataRemover::DATA_TYPE_REPORTS,
2182 data_type_mask);
2183 EXPECT_TRUE(ProbablySameFilters(BrowsingDataFilterBuilder::BuildNoopFilter(),
2184 origin_filter));
2185 }
2186
2187 // Disabled because history is not iterable yet.
2188 TEST_F(ChromeBrowsingDataRemoverDelegateTest,
2189 DISABLED_ReportingCache_History_WithFilter) {
2190 ClearReportingCacheTester tester(GetProfile(), true);
2191
2192 std::unique_ptr<BrowsingDataFilterBuilder> builder(
2193 BrowsingDataFilterBuilder::Create(BrowsingDataFilterBuilder::WHITELIST));
2194 builder->AddRegisterableDomain(kTestRegisterableDomain1);
2195
2196 BlockUntilOriginDataRemoved(
2197 base::Time(), base::Time::Max(),
2198 ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY, builder->Copy());
2199
2200 int remove_count;
2201 int data_type_mask;
2202 base::Callback<bool(const GURL&)> origin_filter;
2203 tester.GetMockInfo(&remove_count, &data_type_mask, &origin_filter);
2204
2205 EXPECT_EQ(1, remove_count);
2206 EXPECT_EQ(net::ReportingBrowsingDataRemover::DATA_TYPE_REPORTS,
2207 data_type_mask);
2208 EXPECT_TRUE(
2209 ProbablySameFilters(builder->BuildGeneralFilter(), origin_filter));
2210 }
2211
2212 TEST_F(ChromeBrowsingDataRemoverDelegateTest,
2213 ReportingCache_CookiesAndHistory) {
2214 ClearReportingCacheTester tester(GetProfile(), true);
2215
2216 BlockUntilBrowsingDataRemoved(
2217 base::Time(), base::Time::Max(),
2218 BrowsingDataRemover::DATA_TYPE_COOKIES |
2219 ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY,
2220 true);
2221
2222 int remove_count;
2223 int data_type_mask;
2224 base::Callback<bool(const GURL&)> origin_filter;
2225 tester.GetMockInfo(&remove_count, &data_type_mask, &origin_filter);
2226
2227 EXPECT_EQ(1, remove_count);
2228 EXPECT_EQ(net::ReportingBrowsingDataRemover::DATA_TYPE_REPORTS |
2229 net::ReportingBrowsingDataRemover::DATA_TYPE_CLIENTS,
2230 data_type_mask);
2231 EXPECT_TRUE(ProbablySameFilters(BrowsingDataFilterBuilder::BuildNoopFilter(),
2232 origin_filter));
2233 }
2234
2235 // Disabled because history is not iterable yet.
shivanisha 2017/04/20 18:21:52 Is iterable history something that is being worked
Julia Tuttle 2017/04/21 13:34:53 I have no idea -- I just know that the similar Dom
2236 TEST_F(ChromeBrowsingDataRemoverDelegateTest,
2237 DISABLED_ReportingCache_CookiesAndHistory_WithFilter) {
2238 ClearReportingCacheTester tester(GetProfile(), true);
2239
2240 std::unique_ptr<BrowsingDataFilterBuilder> builder(
2241 BrowsingDataFilterBuilder::Create(BrowsingDataFilterBuilder::WHITELIST));
2242 builder->AddRegisterableDomain(kTestRegisterableDomain1);
2243
2244 BlockUntilOriginDataRemoved(
2245 base::Time(), base::Time::Max(),
2246 BrowsingDataRemover::DATA_TYPE_COOKIES |
2247 ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY,
2248 builder->Copy());
2249
2250 int remove_count;
2251 int data_type_mask;
2252 base::Callback<bool(const GURL&)> origin_filter;
2253 tester.GetMockInfo(&remove_count, &data_type_mask, &origin_filter);
2254
2255 EXPECT_EQ(1, remove_count);
2256 EXPECT_EQ(net::ReportingBrowsingDataRemover::DATA_TYPE_REPORTS |
2257 net::ReportingBrowsingDataRemover::DATA_TYPE_CLIENTS,
2258 data_type_mask);
2259 EXPECT_TRUE(
2260 ProbablySameFilters(builder->BuildGeneralFilter(), origin_filter));
2261 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698