OLD | NEW |
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/android/browsing_data/browsing_data_bridge.h" | 5 #include "chrome/browser/android/browsing_data/browsing_data_bridge.h" |
6 | 6 |
7 #include <jni.h> | 7 #include <jni.h> |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 | 9 |
10 #include <memory> | 10 #include <memory> |
11 #include <set> | 11 #include <set> |
12 #include <string> | 12 #include <string> |
13 #include <vector> | 13 #include <vector> |
14 | 14 |
15 #include "base/android/jni_android.h" | 15 #include "base/android/jni_android.h" |
16 #include "base/android/jni_array.h" | 16 #include "base/android/jni_array.h" |
17 #include "base/android/jni_string.h" | 17 #include "base/android/jni_string.h" |
18 #include "base/android/jni_weak_ref.h" | 18 #include "base/android/jni_weak_ref.h" |
19 #include "base/metrics/histogram_macros.h" | 19 #include "base/metrics/histogram_macros.h" |
20 #include "base/scoped_observer.h" | 20 #include "base/scoped_observer.h" |
21 #include "base/values.h" | 21 #include "base/values.h" |
| 22 #include "chrome/browser/browsing_data/browsing_data_important_sites_util.h" |
22 #include "chrome/browser/browsing_data/browsing_data_remover_factory.h" | 23 #include "chrome/browser/browsing_data/browsing_data_remover_factory.h" |
23 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h" | 24 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h" |
24 #include "chrome/browser/engagement/important_sites_util.h" | 25 #include "chrome/browser/engagement/important_sites_util.h" |
25 #include "chrome/browser/history/web_history_service_factory.h" | 26 #include "chrome/browser/history/web_history_service_factory.h" |
26 #include "chrome/browser/profiles/profile_manager.h" | 27 #include "chrome/browser/profiles/profile_manager.h" |
27 #include "chrome/browser/sync/profile_sync_service_factory.h" | 28 #include "chrome/browser/sync/profile_sync_service_factory.h" |
28 #include "chrome/common/channel_info.h" | 29 #include "chrome/common/channel_info.h" |
29 #include "components/browser_sync/profile_sync_service.h" | 30 #include "components/browser_sync/profile_sync_service.h" |
30 #include "components/browsing_data/core/history_notice_utils.h" | 31 #include "components/browsing_data/core/history_notice_utils.h" |
31 #include "components/prefs/pref_service.h" | 32 #include "components/prefs/pref_service.h" |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
151 for (const std::string& domain : excluding_domains) { | 152 for (const std::string& domain : excluding_domains) { |
152 filter_builder->AddRegisterableDomain(domain); | 153 filter_builder->AddRegisterableDomain(domain); |
153 } | 154 } |
154 | 155 |
155 if (!excluding_domains.empty() || !ignoring_domains.empty()) { | 156 if (!excluding_domains.empty() || !ignoring_domains.empty()) { |
156 ImportantSitesUtil::RecordBlacklistedAndIgnoredImportantSites( | 157 ImportantSitesUtil::RecordBlacklistedAndIgnoredImportantSites( |
157 GetOriginalProfile(), excluding_domains, excluding_domain_reasons, | 158 GetOriginalProfile(), excluding_domains, excluding_domain_reasons, |
158 ignoring_domains, ignoring_domain_reasons); | 159 ignoring_domains, ignoring_domain_reasons); |
159 } | 160 } |
160 | 161 |
161 // Delete the types protected by Important Sites with a filter, | |
162 // and the rest completely. | |
163 int filterable_mask = | |
164 remove_mask & | |
165 ChromeBrowsingDataRemoverDelegate::IMPORTANT_SITES_DATA_TYPES; | |
166 int nonfilterable_mask = | |
167 remove_mask & | |
168 ~ChromeBrowsingDataRemoverDelegate::IMPORTANT_SITES_DATA_TYPES; | |
169 | |
170 // ClearBrowsingDataObserver deletes itself when |browsing_data_remover| is | 162 // ClearBrowsingDataObserver deletes itself when |browsing_data_remover| is |
171 // done with both removal tasks. | 163 // done with both removal tasks. |
172 ClearBrowsingDataObserver* observer = new ClearBrowsingDataObserver( | 164 ClearBrowsingDataObserver* observer = new ClearBrowsingDataObserver( |
173 env, obj, browsing_data_remover, 2 /* tasks_count */); | 165 env, obj, browsing_data_remover, 2 /* tasks_count */); |
174 | 166 |
175 browsing_data::TimePeriod period = | 167 browsing_data::TimePeriod period = |
176 static_cast<browsing_data::TimePeriod>(time_period); | 168 static_cast<browsing_data::TimePeriod>(time_period); |
177 browsing_data::RecordDeletionForPeriod(period); | |
178 | 169 |
179 if (filterable_mask) { | 170 browsing_data_important_sites_util::Remove( |
180 browsing_data_remover->RemoveWithFilterAndReply( | 171 remove_mask, BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB, period, |
181 browsing_data::CalculateBeginDeleteTime(period), | 172 std::move(filter_builder), browsing_data_remover, observer); |
182 browsing_data::CalculateEndDeleteTime(period), filterable_mask, | |
183 BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB, | |
184 std::move(filter_builder), observer); | |
185 } else { | |
186 // Make sure |observer| doesn't wait for the filtered task. | |
187 observer->OnBrowsingDataRemoverDone(); | |
188 } | |
189 | |
190 if (nonfilterable_mask) { | |
191 browsing_data_remover->RemoveAndReply( | |
192 browsing_data::CalculateBeginDeleteTime(period), | |
193 browsing_data::CalculateEndDeleteTime(period), nonfilterable_mask, | |
194 BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB, observer); | |
195 } else { | |
196 // Make sure |observer| doesn't wait for the non-filtered task. | |
197 observer->OnBrowsingDataRemoverDone(); | |
198 } | |
199 } | 173 } |
200 | 174 |
201 static void ShowNoticeAboutOtherFormsOfBrowsingHistory( | 175 static void ShowNoticeAboutOtherFormsOfBrowsingHistory( |
202 const JavaRef<jobject>& listener, | 176 const JavaRef<jobject>& listener, |
203 bool show) { | 177 bool show) { |
204 JNIEnv* env = AttachCurrentThread(); | 178 JNIEnv* env = AttachCurrentThread(); |
205 UMA_HISTOGRAM_BOOLEAN( | 179 UMA_HISTOGRAM_BOOLEAN( |
206 "History.ClearBrowsingData.HistoryNoticeShownInFooterWhenUpdated", show); | 180 "History.ClearBrowsingData.HistoryNoticeShownInFooterWhenUpdated", show); |
207 if (!show) | 181 if (!show) |
208 return; | 182 return; |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
278 | 252 |
279 static void MarkOriginAsImportantForTesting( | 253 static void MarkOriginAsImportantForTesting( |
280 JNIEnv* env, | 254 JNIEnv* env, |
281 const JavaParamRef<jclass>& clazz, | 255 const JavaParamRef<jclass>& clazz, |
282 const JavaParamRef<jstring>& jorigin) { | 256 const JavaParamRef<jstring>& jorigin) { |
283 GURL origin(base::android::ConvertJavaStringToUTF8(jorigin)); | 257 GURL origin(base::android::ConvertJavaStringToUTF8(jorigin)); |
284 CHECK(origin.is_valid()); | 258 CHECK(origin.is_valid()); |
285 ImportantSitesUtil::MarkOriginAsImportantForTesting(GetOriginalProfile(), | 259 ImportantSitesUtil::MarkOriginAsImportantForTesting(GetOriginalProfile(), |
286 origin); | 260 origin); |
287 } | 261 } |
OLD | NEW |