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