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

Side by Side Diff: chrome/browser/android/preferences/pref_service_bridge.cc

Issue 1757163002: [ImportantSites] JNI bindings for CBD filtering and Important Sites. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nit Created 4 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/preferences/pref_service_bridge.h" 5 #include "chrome/browser/android/preferences/pref_service_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 <vector> 11 #include <vector>
12 12
13 #include "base/android/build_info.h" 13 #include "base/android/build_info.h"
14 #include "base/android/jni_android.h" 14 #include "base/android/jni_android.h"
15 #include "base/android/jni_array.h" 15 #include "base/android/jni_array.h"
16 #include "base/android/jni_string.h" 16 #include "base/android/jni_string.h"
17 #include "base/android/jni_weak_ref.h" 17 #include "base/android/jni_weak_ref.h"
18 #include "base/files/file_path.h" 18 #include "base/files/file_path.h"
19 #include "base/files/file_util.h" 19 #include "base/files/file_util.h"
20 #include "base/scoped_observer.h" 20 #include "base/scoped_observer.h"
21 #include "base/strings/string_util.h" 21 #include "base/strings/string_util.h"
22 #include "base/values.h" 22 #include "base/values.h"
23 #include "chrome/browser/android/preferences/important_sites_util.h"
23 #include "chrome/browser/browser_process.h" 24 #include "chrome/browser/browser_process.h"
24 #include "chrome/browser/browsing_data/browsing_data_counter_utils.h" 25 #include "chrome/browser/browsing_data/browsing_data_counter_utils.h"
26 #include "chrome/browser/browsing_data/browsing_data_filter_builder.h"
25 #include "chrome/browser/browsing_data/browsing_data_helper.h" 27 #include "chrome/browser/browsing_data/browsing_data_helper.h"
26 #include "chrome/browser/browsing_data/browsing_data_remover.h" 28 #include "chrome/browser/browsing_data/browsing_data_remover.h"
27 #include "chrome/browser/browsing_data/browsing_data_remover_factory.h" 29 #include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
30 #include "chrome/browser/browsing_data/registrable_domain_filter_builder.h"
28 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" 31 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
29 #include "chrome/browser/history/web_history_service_factory.h" 32 #include "chrome/browser/history/web_history_service_factory.h"
30 #include "chrome/browser/net/prediction_options.h" 33 #include "chrome/browser/net/prediction_options.h"
31 #include "chrome/browser/prefs/incognito_mode_prefs.h" 34 #include "chrome/browser/prefs/incognito_mode_prefs.h"
32 #include "chrome/browser/profiles/profile_manager.h" 35 #include "chrome/browser/profiles/profile_manager.h"
33 #include "chrome/browser/sync/profile_sync_service_factory.h" 36 #include "chrome/browser/sync/profile_sync_service_factory.h"
34 #include "chrome/browser/translate/chrome_translate_client.h" 37 #include "chrome/browser/translate/chrome_translate_client.h"
35 #include "chrome/browser/ui/android/android_about_app_info.h" 38 #include "chrome/browser/ui/android/android_about_app_info.h"
36 #include "chrome/common/pref_names.h" 39 #include "chrome/common/pref_names.h"
37 #include "chrome/grit/locale_settings.h" 40 #include "chrome/grit/locale_settings.h"
(...skipping 18 matching lines...) Expand all
56 59
57 using base::android::AttachCurrentThread; 60 using base::android::AttachCurrentThread;
58 using base::android::CheckException; 61 using base::android::CheckException;
59 using base::android::ConvertJavaStringToUTF8; 62 using base::android::ConvertJavaStringToUTF8;
60 using base::android::ConvertUTF8ToJavaString; 63 using base::android::ConvertUTF8ToJavaString;
61 using base::android::ScopedJavaLocalRef; 64 using base::android::ScopedJavaLocalRef;
62 using base::android::ScopedJavaGlobalRef; 65 using base::android::ScopedJavaGlobalRef;
63 using content::BrowserThread; 66 using content::BrowserThread;
64 67
65 namespace { 68 namespace {
69 const size_t kMaxImportantSites = 5;
66 70
67 Profile* GetOriginalProfile() { 71 Profile* GetOriginalProfile() {
68 return ProfileManager::GetActiveUserProfile()->GetOriginalProfile(); 72 return ProfileManager::GetActiveUserProfile()->GetOriginalProfile();
69 } 73 }
70 74
71 bool GetBooleanForContentSetting(ContentSettingsType type) { 75 bool GetBooleanForContentSetting(ContentSettingsType type) {
72 HostContentSettingsMap* content_settings = 76 HostContentSettingsMap* content_settings =
73 HostContentSettingsMapFactory::GetForProfile(GetOriginalProfile()); 77 HostContentSettingsMapFactory::GetForProfile(GetOriginalProfile());
74 switch (content_settings->GetDefaultContentSetting(type, NULL)) { 78 switch (content_settings->GetDefaultContentSetting(type, NULL)) {
75 case CONTENT_SETTING_BLOCK: 79 case CONTENT_SETTING_BLOCK:
(...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after
551 555
552 static void SetBrowsingDataDeletionTimePeriod( 556 static void SetBrowsingDataDeletionTimePeriod(
553 JNIEnv* env, 557 JNIEnv* env,
554 const JavaParamRef<jobject>& obj, 558 const JavaParamRef<jobject>& obj,
555 jint time_period) { 559 jint time_period) {
556 DCHECK_GE(time_period, 0); 560 DCHECK_GE(time_period, 0);
557 DCHECK_LE(time_period, BrowsingDataRemover::TIME_PERIOD_LAST); 561 DCHECK_LE(time_period, BrowsingDataRemover::TIME_PERIOD_LAST);
558 GetPrefService()->SetInteger(prefs::kDeleteTimePeriod, time_period); 562 GetPrefService()->SetInteger(prefs::kDeleteTimePeriod, time_period);
559 } 563 }
560 564
561 static void ClearBrowsingData(JNIEnv* env, 565 static void ClearBrowsingData(
562 const JavaParamRef<jobject>& obj, 566 JNIEnv* env,
563 const JavaParamRef<jintArray>& data_types, 567 const JavaParamRef<jobject>& obj,
564 jint time_period) { 568 const JavaParamRef<jintArray>& data_types,
569 jint time_period,
570 const JavaParamRef<jobjectArray>& jexcluding_domains) {
565 BrowsingDataRemover* browsing_data_remover = 571 BrowsingDataRemover* browsing_data_remover =
566 BrowsingDataRemoverFactory::GetForBrowserContext(GetOriginalProfile()); 572 BrowsingDataRemoverFactory::GetForBrowserContext(GetOriginalProfile());
567 // ClearBrowsingDataObserver deletes itself when |browsing_data_remover| is 573 // ClearBrowsingDataObserver deletes itself when |browsing_data_remover| is
568 // done. 574 // done.
569 new ClearBrowsingDataObserver(env, obj, browsing_data_remover); 575 new ClearBrowsingDataObserver(env, obj, browsing_data_remover);
570 576
571 std::vector<int> data_types_vector; 577 std::vector<int> data_types_vector;
572 base::android::JavaIntArrayToIntVector(env, data_types, &data_types_vector); 578 base::android::JavaIntArrayToIntVector(env, data_types, &data_types_vector);
573 579
574 int remove_mask = 0; 580 int remove_mask = 0;
(...skipping 16 matching lines...) Expand all
591 remove_mask |= BrowsingDataRemover::REMOVE_FORM_DATA; 597 remove_mask |= BrowsingDataRemover::REMOVE_FORM_DATA;
592 break; 598 break;
593 case BOOKMARKS: 599 case BOOKMARKS:
594 // Bookmarks are deleted separately on the Java side. 600 // Bookmarks are deleted separately on the Java side.
595 NOTREACHED(); 601 NOTREACHED();
596 break; 602 break;
597 case NUM_TYPES: 603 case NUM_TYPES:
598 NOTREACHED(); 604 NOTREACHED();
599 } 605 }
600 } 606 }
607 std::vector<std::string> excluding_domains;
608 base::android::AppendJavaStringArrayToStringVector(
609 env, jexcluding_domains.obj(), &excluding_domains);
610 RegistrableDomainFilterBuilder filter_builder(
611 BrowsingDataFilterBuilder::BLACKLIST);
612 for (const std::string& domain : excluding_domains) {
613 filter_builder.AddRegisterableDomain(domain);
614 }
601 615
602 browsing_data_remover->Remove( 616 browsing_data_remover->RemoveWithFilter(
603 BrowsingDataRemover::Period( 617 BrowsingDataRemover::Period(
604 static_cast<BrowsingDataRemover::TimePeriod>(time_period)), 618 static_cast<BrowsingDataRemover::TimePeriod>(time_period)),
605 remove_mask, BrowsingDataHelper::UNPROTECTED_WEB); 619 remove_mask, BrowsingDataHelper::UNPROTECTED_WEB, filter_builder);
606 } 620 }
607 621
608 static jboolean CanDeleteBrowsingHistory(JNIEnv* env, 622 static jboolean CanDeleteBrowsingHistory(JNIEnv* env,
609 const JavaParamRef<jobject>& obj) { 623 const JavaParamRef<jobject>& obj) {
610 return GetPrefService()->GetBoolean(prefs::kAllowDeletingBrowserHistory); 624 return GetPrefService()->GetBoolean(prefs::kAllowDeletingBrowserHistory);
611 } 625 }
612 626
627 static void FetchImportantSites(JNIEnv* env,
628 const JavaParamRef<jclass>& clazz,
629 const JavaParamRef<jobject>& java_callback) {
630 std::vector<std::string> important_domains =
631 ImportantSitesUtil::GetImportantRegisterableDomains(GetOriginalProfile(),
632 kMaxImportantSites);
633 ScopedJavaLocalRef<jobjectArray> string_array =
634 base::android::ToJavaArrayOfStrings(env, important_domains);
635 Java_ImportantSitesCallback_onImportantRegisterableDomainsReady(
636 env, java_callback.obj(), string_array.obj());
637 }
638
613 static void ShowNoticeAboutOtherFormsOfBrowsingHistory( 639 static void ShowNoticeAboutOtherFormsOfBrowsingHistory(
614 ScopedJavaGlobalRef<jobject>* listener, 640 ScopedJavaGlobalRef<jobject>* listener,
615 bool show) { 641 bool show) {
616 JNIEnv* env = AttachCurrentThread(); 642 JNIEnv* env = AttachCurrentThread();
617 if (!show) 643 if (!show)
618 return; 644 return;
619 Java_OtherFormsOfBrowsingHistoryListener_showNoticeAboutOtherFormsOfBrowsingHi story( 645 Java_OtherFormsOfBrowsingHistoryListener_showNoticeAboutOtherFormsOfBrowsingHi story(
620 env, listener->obj()); 646 env, listener->obj());
621 } 647 }
622 648
(...skipping 442 matching lines...) Expand 10 before | Expand all | Expand 10 after
1065 1091
1066 return ConvertJavaStringToUTF8(android_permission); 1092 return ConvertJavaStringToUTF8(android_permission);
1067 } 1093 }
1068 1094
1069 static void SetSupervisedUserId(JNIEnv* env, 1095 static void SetSupervisedUserId(JNIEnv* env,
1070 const JavaParamRef<jobject>& obj, 1096 const JavaParamRef<jobject>& obj,
1071 const JavaParamRef<jstring>& pref) { 1097 const JavaParamRef<jstring>& pref) {
1072 GetPrefService()->SetString(prefs::kSupervisedUserId, 1098 GetPrefService()->SetString(prefs::kSupervisedUserId,
1073 ConvertJavaStringToUTF8(env, pref)); 1099 ConvertJavaStringToUTF8(env, pref));
1074 } 1100 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698