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

Unified Diff: chrome/browser/android/preferences/pref_service_bridge.cc

Issue 2756173002: Move code about browsing data from PrefServiceBridge to BrowsingDataBridge. (Closed)
Patch Set: fix comments Created 3 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/android/chrome_jni_registrar.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/android/preferences/pref_service_bridge.cc
diff --git a/chrome/browser/android/preferences/pref_service_bridge.cc b/chrome/browser/android/preferences/pref_service_bridge.cc
index 194474d8728ebda1cca88be61210298a250e3cd8..ea8b02f8299c0108cdcca023e62d1d30eb473af8 100644
--- a/chrome/browser/android/preferences/pref_service_bridge.cc
+++ b/chrome/browser/android/preferences/pref_service_bridge.cc
@@ -20,32 +20,21 @@
#include "base/feature_list.h"
#include "base/files/file_path.h"
#include "base/files/file_util.h"
-#include "base/metrics/histogram_macros.h"
#include "base/scoped_observer.h"
#include "base/strings/string_split.h"
#include "base/strings/string_util.h"
#include "base/values.h"
#include "chrome/browser/browser_process.h"
-#include "chrome/browser/browsing_data/browsing_data_helper.h"
-#include "chrome/browser/browsing_data/browsing_data_remover.h"
-#include "chrome/browser/browsing_data/browsing_data_remover_factory.h"
-#include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h"
#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
-#include "chrome/browser/engagement/important_sites_util.h"
-#include "chrome/browser/history/web_history_service_factory.h"
#include "chrome/browser/net/prediction_options.h"
#include "chrome/browser/prefs/incognito_mode_prefs.h"
#include "chrome/browser/profiles/profile_manager.h"
-#include "chrome/browser/sync/profile_sync_service_factory.h"
#include "chrome/browser/translate/chrome_translate_client.h"
#include "chrome/browser/ui/android/android_about_app_info.h"
-#include "chrome/common/channel_info.h"
#include "chrome/common/chrome_features.h"
#include "chrome/common/pref_names.h"
#include "chrome/grit/locale_settings.h"
-#include "components/browser_sync/profile_sync_service.h"
#include "components/browsing_data/core/browsing_data_utils.h"
-#include "components/browsing_data/core/history_notice_utils.h"
#include "components/browsing_data/core/pref_names.h"
#include "components/content_settings/core/browser/host_content_settings_map.h"
#include "components/content_settings/core/common/content_settings.h"
@@ -62,25 +51,18 @@
#include "components/version_info/version_info.h"
#include "components/web_resource/web_resource_pref_names.h"
#include "content/public/browser/browser_thread.h"
-#include "content/public/browser/browsing_data_filter_builder.h"
#include "jni/PrefServiceBridge_jni.h"
#include "third_party/icu/source/common/unicode/uloc.h"
#include "ui/base/l10n/l10n_util.h"
using base::android::AttachCurrentThread;
-using base::android::CheckException;
using base::android::ConvertJavaStringToUTF8;
using base::android::ConvertUTF8ToJavaString;
using base::android::JavaParamRef;
-using base::android::JavaRef;
using base::android::ScopedJavaLocalRef;
-using base::android::ScopedJavaGlobalRef;
-using content::BrowserThread;
namespace {
-const size_t kMaxImportantSites = 5;
-
Profile* GetOriginalProfile() {
return ProfileManager::GetActiveUserProfile()->GetOriginalProfile();
}
@@ -510,49 +492,6 @@ static ScopedJavaLocalRef<jstring> GetLatestVersionWhenClickedUpdateMenuItem(
prefs::kLatestVersionWhenClickedUpdateMenuItem));
}
-namespace {
-
-// Merges |task_count| BrowsingDataRemover completion callbacks and redirects
-// them back into Java.
-class ClearBrowsingDataObserver : public BrowsingDataRemover::Observer {
- public:
- // |obj| is expected to be the object passed into ClearBrowsingData(); e.g. a
- // ChromePreference.
- ClearBrowsingDataObserver(JNIEnv* env,
- jobject obj,
- BrowsingDataRemover* browsing_data_remover,
- int task_count)
- : task_count_(task_count),
- weak_chrome_native_preferences_(env, obj),
- observer_(this) {
- DCHECK_GT(task_count, 0);
- observer_.Add(browsing_data_remover);
- }
-
- void OnBrowsingDataRemoverDone() override {
- DCHECK(task_count_);
- if (--task_count_)
- return;
-
- // We delete ourselves when done.
- std::unique_ptr<ClearBrowsingDataObserver> auto_delete(this);
-
- JNIEnv* env = AttachCurrentThread();
- if (weak_chrome_native_preferences_.get(env).is_null())
- return;
-
- Java_PrefServiceBridge_browsingDataCleared(
- env, weak_chrome_native_preferences_.get(env));
- }
-
- private:
- int task_count_;
- JavaObjectWeakGlobalRef weak_chrome_native_preferences_;
- ScopedObserver<BrowsingDataRemover, BrowsingDataRemover::Observer> observer_;
-};
-
-} // namespace
-
static jboolean GetBrowsingDataDeletionPreference(
JNIEnv* env,
const JavaParamRef<jobject>& obj,
@@ -635,206 +574,11 @@ static void MigrateBrowsingDataPreferences(JNIEnv* env,
browsing_data::MigratePreferencesToBasic(GetOriginalProfile()->GetPrefs());
}
-static void ClearBrowsingData(
- JNIEnv* env,
- const JavaParamRef<jobject>& obj,
- const JavaParamRef<jintArray>& data_types,
- jint time_period,
- const JavaParamRef<jobjectArray>& jexcluding_domains,
- const JavaParamRef<jintArray>& jexcluding_domain_reasons,
- const JavaParamRef<jobjectArray>& jignoring_domains,
- const JavaParamRef<jintArray>& jignoring_domain_reasons) {
- BrowsingDataRemover* browsing_data_remover =
- BrowsingDataRemoverFactory::GetForBrowserContext(GetOriginalProfile());
-
- std::vector<int> data_types_vector;
- base::android::JavaIntArrayToIntVector(env, data_types, &data_types_vector);
-
- int remove_mask = 0;
- for (const int data_type : data_types_vector) {
- switch (static_cast<browsing_data::BrowsingDataType>(data_type)) {
- case browsing_data::BrowsingDataType::HISTORY:
- remove_mask |= ChromeBrowsingDataRemoverDelegate::DATA_TYPE_HISTORY;
- break;
- case browsing_data::BrowsingDataType::CACHE:
- remove_mask |= BrowsingDataRemover::DATA_TYPE_CACHE;
- break;
- case browsing_data::BrowsingDataType::COOKIES:
- remove_mask |= BrowsingDataRemover::DATA_TYPE_COOKIES;
- remove_mask |= ChromeBrowsingDataRemoverDelegate::DATA_TYPE_SITE_DATA;
- break;
- case browsing_data::BrowsingDataType::PASSWORDS:
- remove_mask |= ChromeBrowsingDataRemoverDelegate::DATA_TYPE_PASSWORDS;
- break;
- case browsing_data::BrowsingDataType::FORM_DATA:
- remove_mask |= ChromeBrowsingDataRemoverDelegate::DATA_TYPE_FORM_DATA;
- break;
- case browsing_data::BrowsingDataType::BOOKMARKS:
- // Bookmarks are deleted separately on the Java side.
- NOTREACHED();
- break;
- case browsing_data::BrowsingDataType::NUM_TYPES:
- NOTREACHED();
- }
- }
- std::vector<std::string> excluding_domains;
- std::vector<int32_t> excluding_domain_reasons;
- std::vector<std::string> ignoring_domains;
- std::vector<int32_t> ignoring_domain_reasons;
- base::android::AppendJavaStringArrayToStringVector(
- env, jexcluding_domains.obj(), &excluding_domains);
- base::android::JavaIntArrayToIntVector(env, jexcluding_domain_reasons.obj(),
- &excluding_domain_reasons);
- base::android::AppendJavaStringArrayToStringVector(
- env, jignoring_domains.obj(), &ignoring_domains);
- base::android::JavaIntArrayToIntVector(env, jignoring_domain_reasons.obj(),
- &ignoring_domain_reasons);
- std::unique_ptr<content::BrowsingDataFilterBuilder> filter_builder(
- content::BrowsingDataFilterBuilder::Create(
- content::BrowsingDataFilterBuilder::BLACKLIST));
- for (const std::string& domain : excluding_domains) {
- filter_builder->AddRegisterableDomain(domain);
- }
-
- if (!excluding_domains.empty() || !ignoring_domains.empty()) {
- ImportantSitesUtil::RecordBlacklistedAndIgnoredImportantSites(
- GetOriginalProfile(), excluding_domains, excluding_domain_reasons,
- ignoring_domains, ignoring_domain_reasons);
- }
-
- // Delete the types protected by Important Sites with a filter,
- // and the rest completely.
- int filterable_mask =
- remove_mask &
- ChromeBrowsingDataRemoverDelegate::IMPORTANT_SITES_DATA_TYPES;
- int nonfilterable_mask =
- remove_mask &
- ~ChromeBrowsingDataRemoverDelegate::IMPORTANT_SITES_DATA_TYPES;
-
- // ClearBrowsingDataObserver deletes itself when |browsing_data_remover| is
- // done with both removal tasks.
- ClearBrowsingDataObserver* observer = new ClearBrowsingDataObserver(
- env, obj, browsing_data_remover, 2 /* tasks_count */);
-
- browsing_data::TimePeriod period =
- static_cast<browsing_data::TimePeriod>(time_period);
- browsing_data::RecordDeletionForPeriod(period);
-
- if (filterable_mask) {
- browsing_data_remover->RemoveWithFilterAndReply(
- browsing_data::CalculateBeginDeleteTime(period),
- browsing_data::CalculateEndDeleteTime(period), filterable_mask,
- BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB,
- std::move(filter_builder), observer);
- } else {
- // Make sure |observer| doesn't wait for the filtered task.
- observer->OnBrowsingDataRemoverDone();
- }
-
- if (nonfilterable_mask) {
- browsing_data_remover->RemoveAndReply(
- browsing_data::CalculateBeginDeleteTime(period),
- browsing_data::CalculateEndDeleteTime(period), nonfilterable_mask,
- BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB, observer);
- } else {
- // Make sure |observer| doesn't wait for the non-filtered task.
- observer->OnBrowsingDataRemoverDone();
- }
-}
-
static jboolean CanDeleteBrowsingHistory(JNIEnv* env,
const JavaParamRef<jobject>& obj) {
return GetPrefService()->GetBoolean(prefs::kAllowDeletingBrowserHistory);
}
-static void FetchImportantSites(JNIEnv* env,
- const JavaParamRef<jclass>& clazz,
- const JavaParamRef<jobject>& java_callback) {
- Profile* profile = GetOriginalProfile();
- std::vector<ImportantSitesUtil::ImportantDomainInfo> important_sites =
- ImportantSitesUtil::GetImportantRegisterableDomains(profile,
- kMaxImportantSites);
- bool dialog_disabled = ImportantSitesUtil::IsDialogDisabled(profile);
-
- std::vector<std::string> important_domains;
- std::vector<int32_t> important_domain_reasons;
- std::vector<std::string> important_domain_examples;
- for (const ImportantSitesUtil::ImportantDomainInfo& info : important_sites) {
- important_domains.push_back(info.registerable_domain);
- important_domain_reasons.push_back(info.reason_bitfield);
- important_domain_examples.push_back(info.example_origin.spec());
- }
-
- ScopedJavaLocalRef<jobjectArray> java_domains =
- base::android::ToJavaArrayOfStrings(env, important_domains);
- ScopedJavaLocalRef<jintArray> java_reasons =
- base::android::ToJavaIntArray(env, important_domain_reasons);
- ScopedJavaLocalRef<jobjectArray> java_origins =
- base::android::ToJavaArrayOfStrings(env, important_domain_examples);
-
- Java_ImportantSitesCallback_onImportantRegisterableDomainsReady(
- env, java_callback.obj(), java_domains.obj(), java_origins.obj(),
- java_reasons.obj(), dialog_disabled);
-}
-
-// This value should not change during a sessions, as it's used for UMA metrics.
-static jint GetMaxImportantSites(JNIEnv* env,
- const JavaParamRef<jclass>& clazz) {
- return kMaxImportantSites;
-}
-
-static void MarkOriginAsImportantForTesting(
- JNIEnv* env,
- const JavaParamRef<jclass>& clazz,
- const JavaParamRef<jstring>& jorigin) {
- GURL origin(base::android::ConvertJavaStringToUTF8(jorigin));
- CHECK(origin.is_valid());
- ImportantSitesUtil::MarkOriginAsImportantForTesting(GetOriginalProfile(),
- origin);
-}
-
-static void ShowNoticeAboutOtherFormsOfBrowsingHistory(
- const JavaRef<jobject>& listener,
- bool show) {
- JNIEnv* env = AttachCurrentThread();
- UMA_HISTOGRAM_BOOLEAN(
- "History.ClearBrowsingData.HistoryNoticeShownInFooterWhenUpdated", show);
- if (!show)
- return;
- Java_OtherFormsOfBrowsingHistoryListener_showNoticeAboutOtherFormsOfBrowsingHistory(
- env, listener);
-}
-
-static void EnableDialogAboutOtherFormsOfBrowsingHistory(
- const JavaRef<jobject>& listener,
- bool enabled) {
- JNIEnv* env = AttachCurrentThread();
- if (!enabled)
- return;
- Java_OtherFormsOfBrowsingHistoryListener_enableDialogAboutOtherFormsOfBrowsingHistory(
- env, listener);
-}
-
-static void RequestInfoAboutOtherFormsOfBrowsingHistory(
- JNIEnv* env,
- const JavaParamRef<jobject>& obj,
- const JavaParamRef<jobject>& listener) {
- // The permanent notice in the footer.
- browsing_data::ShouldShowNoticeAboutOtherFormsOfBrowsingHistory(
- ProfileSyncServiceFactory::GetForProfile(GetOriginalProfile()),
- WebHistoryServiceFactory::GetForProfile(GetOriginalProfile()),
- base::Bind(&ShowNoticeAboutOtherFormsOfBrowsingHistory,
- ScopedJavaGlobalRef<jobject>(env, listener)));
-
- // The one-time notice in the dialog.
- browsing_data::ShouldPopupDialogAboutOtherFormsOfBrowsingHistory(
- ProfileSyncServiceFactory::GetForProfile(GetOriginalProfile()),
- WebHistoryServiceFactory::GetForProfile(GetOriginalProfile()),
- chrome::GetChannel(),
- base::Bind(&EnableDialogAboutOtherFormsOfBrowsingHistory,
- ScopedJavaGlobalRef<jobject>(env, listener)));
-}
-
static void SetAutoplayEnabled(JNIEnv* env,
const JavaParamRef<jobject>& obj,
jboolean allow) {
« no previous file with comments | « chrome/browser/android/chrome_jni_registrar.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698