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> |
(...skipping 25 matching lines...) Expand all Loading... |
36 | 36 |
37 using base::android::AttachCurrentThread; | 37 using base::android::AttachCurrentThread; |
38 using base::android::JavaParamRef; | 38 using base::android::JavaParamRef; |
39 using base::android::JavaRef; | 39 using base::android::JavaRef; |
40 using base::android::ScopedJavaLocalRef; | 40 using base::android::ScopedJavaLocalRef; |
41 using base::android::ScopedJavaGlobalRef; | 41 using base::android::ScopedJavaGlobalRef; |
42 using content::BrowsingDataRemover; | 42 using content::BrowsingDataRemover; |
43 | 43 |
44 namespace { | 44 namespace { |
45 | 45 |
46 const size_t kMaxImportantSites = 5; | |
47 | |
48 Profile* GetOriginalProfile() { | 46 Profile* GetOriginalProfile() { |
49 return ProfileManager::GetActiveUserProfile()->GetOriginalProfile(); | 47 return ProfileManager::GetActiveUserProfile()->GetOriginalProfile(); |
50 } | 48 } |
51 | 49 |
52 // Merges |task_count| BrowsingDataRemover completion callbacks and redirects | 50 // Merges |task_count| BrowsingDataRemover completion callbacks and redirects |
53 // them back into Java. | 51 // them back into Java. |
54 class ClearBrowsingDataObserver : public BrowsingDataRemover::Observer { | 52 class ClearBrowsingDataObserver : public BrowsingDataRemover::Observer { |
55 public: | 53 public: |
56 // |obj| is expected to be the object passed into ClearBrowsingData(); e.g. a | 54 // |obj| is expected to be the object passed into ClearBrowsingData(); e.g. a |
57 // ChromePreference. | 55 // ChromePreference. |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
214 chrome::GetChannel(), | 212 chrome::GetChannel(), |
215 base::Bind(&EnableDialogAboutOtherFormsOfBrowsingHistory, | 213 base::Bind(&EnableDialogAboutOtherFormsOfBrowsingHistory, |
216 ScopedJavaGlobalRef<jobject>(env, listener))); | 214 ScopedJavaGlobalRef<jobject>(env, listener))); |
217 } | 215 } |
218 | 216 |
219 static void FetchImportantSites(JNIEnv* env, | 217 static void FetchImportantSites(JNIEnv* env, |
220 const JavaParamRef<jclass>& clazz, | 218 const JavaParamRef<jclass>& clazz, |
221 const JavaParamRef<jobject>& java_callback) { | 219 const JavaParamRef<jobject>& java_callback) { |
222 Profile* profile = GetOriginalProfile(); | 220 Profile* profile = GetOriginalProfile(); |
223 std::vector<ImportantSitesUtil::ImportantDomainInfo> important_sites = | 221 std::vector<ImportantSitesUtil::ImportantDomainInfo> important_sites = |
224 ImportantSitesUtil::GetImportantRegisterableDomains(profile, | 222 ImportantSitesUtil::GetImportantRegisterableDomains( |
225 kMaxImportantSites); | 223 profile, ImportantSitesUtil::kMaxImportantSites); |
226 bool dialog_disabled = ImportantSitesUtil::IsDialogDisabled(profile); | 224 bool dialog_disabled = ImportantSitesUtil::IsDialogDisabled(profile); |
227 | 225 |
228 std::vector<std::string> important_domains; | 226 std::vector<std::string> important_domains; |
229 std::vector<int32_t> important_domain_reasons; | 227 std::vector<int32_t> important_domain_reasons; |
230 std::vector<std::string> important_domain_examples; | 228 std::vector<std::string> important_domain_examples; |
231 for (const ImportantSitesUtil::ImportantDomainInfo& info : important_sites) { | 229 for (const ImportantSitesUtil::ImportantDomainInfo& info : important_sites) { |
232 important_domains.push_back(info.registerable_domain); | 230 important_domains.push_back(info.registerable_domain); |
233 important_domain_reasons.push_back(info.reason_bitfield); | 231 important_domain_reasons.push_back(info.reason_bitfield); |
234 important_domain_examples.push_back(info.example_origin.spec()); | 232 important_domain_examples.push_back(info.example_origin.spec()); |
235 } | 233 } |
236 | 234 |
237 ScopedJavaLocalRef<jobjectArray> java_domains = | 235 ScopedJavaLocalRef<jobjectArray> java_domains = |
238 base::android::ToJavaArrayOfStrings(env, important_domains); | 236 base::android::ToJavaArrayOfStrings(env, important_domains); |
239 ScopedJavaLocalRef<jintArray> java_reasons = | 237 ScopedJavaLocalRef<jintArray> java_reasons = |
240 base::android::ToJavaIntArray(env, important_domain_reasons); | 238 base::android::ToJavaIntArray(env, important_domain_reasons); |
241 ScopedJavaLocalRef<jobjectArray> java_origins = | 239 ScopedJavaLocalRef<jobjectArray> java_origins = |
242 base::android::ToJavaArrayOfStrings(env, important_domain_examples); | 240 base::android::ToJavaArrayOfStrings(env, important_domain_examples); |
243 | 241 |
244 Java_ImportantSitesCallback_onImportantRegisterableDomainsReady( | 242 Java_ImportantSitesCallback_onImportantRegisterableDomainsReady( |
245 env, java_callback.obj(), java_domains.obj(), java_origins.obj(), | 243 env, java_callback.obj(), java_domains.obj(), java_origins.obj(), |
246 java_reasons.obj(), dialog_disabled); | 244 java_reasons.obj(), dialog_disabled); |
247 } | 245 } |
248 | 246 |
249 // This value should not change during a sessions, as it's used for UMA metrics. | 247 // This value should not change during a sessions, as it's used for UMA metrics. |
250 static jint GetMaxImportantSites(JNIEnv* env, | 248 static jint GetMaxImportantSites(JNIEnv* env, |
251 const JavaParamRef<jclass>& clazz) { | 249 const JavaParamRef<jclass>& clazz) { |
252 return kMaxImportantSites; | 250 return ImportantSitesUtil::kMaxImportantSites; |
253 } | 251 } |
254 | 252 |
255 static void MarkOriginAsImportantForTesting( | 253 static void MarkOriginAsImportantForTesting( |
256 JNIEnv* env, | 254 JNIEnv* env, |
257 const JavaParamRef<jclass>& clazz, | 255 const JavaParamRef<jclass>& clazz, |
258 const JavaParamRef<jstring>& jorigin) { | 256 const JavaParamRef<jstring>& jorigin) { |
259 GURL origin(base::android::ConvertJavaStringToUTF8(jorigin)); | 257 GURL origin(base::android::ConvertJavaStringToUTF8(jorigin)); |
260 CHECK(origin.is_valid()); | 258 CHECK(origin.is_valid()); |
261 ImportantSitesUtil::MarkOriginAsImportantForTesting(GetOriginalProfile(), | 259 ImportantSitesUtil::MarkOriginAsImportantForTesting(GetOriginalProfile(), |
262 origin); | 260 origin); |
263 } | 261 } |
OLD | NEW |