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

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

Issue 1530123002: Prepare ClearBrowsingDataDialogFragment for browsing data counters. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@utils
Patch Set: s/default/NUM_TYPES/ Created 4 years, 11 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
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 e2947588881cf3f3d0c37de53272d1649c4a8cf7..905664dde7fba9dc00a2c0f1431f0548356abd98 100644
--- a/chrome/browser/android/preferences/pref_service_bridge.cc
+++ b/chrome/browser/android/preferences/pref_service_bridge.cc
@@ -10,6 +10,7 @@
#include "base/android/build_info.h"
#include "base/android/jni_android.h"
+#include "base/android/jni_array.h"
#include "base/android/jni_string.h"
#include "base/android/jni_weak_ref.h"
#include "base/files/file_path.h"
@@ -20,6 +21,7 @@
#include "base/strings/string_util.h"
#include "base/values.h"
#include "chrome/browser/browser_process.h"
+#include "chrome/browser/browsing_data/browsing_data_counter_utils.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"
@@ -500,32 +502,79 @@ class ClearBrowsingDataObserver : public BrowsingDataRemover::Observer {
} // namespace
+static jboolean GetBrowsingDataDeletionPreference(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ jint data_type) {
+ DCHECK_GE(data_type, 0);
+ DCHECK_LT(data_type, BrowsingDataType::NUM_TYPES);
+
+ // If there is no corresponding preference for this |data_type|, pretend
+ // that it's set to false.
+ // TODO(msramek): Consider defining native-side preferences for all Java UI
+ // data types for consistency.
+ std::string pref;
+ if (!GetDeletionPreferenceFromDataType(
+ static_cast<BrowsingDataType>(data_type), &pref)) {
+ return false;
+ }
+
+ return GetOriginalProfile()->GetPrefs()->GetBoolean(pref);
+}
+
+static void SetBrowsingDataDeletionPreference(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ jint data_type,
+ jboolean value) {
+ DCHECK_GE(data_type, 0);
+ DCHECK_LT(data_type, BrowsingDataType::NUM_TYPES);
+
+ std::string pref;
+ if (!GetDeletionPreferenceFromDataType(
+ static_cast<BrowsingDataType>(data_type), &pref)) {
+ return;
+ }
+
+ GetOriginalProfile()->GetPrefs()->SetBoolean(pref, value);
+}
+
static void ClearBrowsingData(JNIEnv* env,
const JavaParamRef<jobject>& obj,
- jboolean history,
- jboolean cache,
- jboolean cookies_and_site_data,
- jboolean passwords,
- jboolean form_data) {
+ const JavaParamRef<jintArray>& data_types) {
BrowsingDataRemover* browsing_data_remover =
BrowsingDataRemoverFactory::GetForBrowserContext(GetOriginalProfile());
- // ClearBrowsingDataObserver removes itself when |browsing_data_remover| is
+ // ClearBrowsingDataObserver deletes itself when |browsing_data_remover| is
// done.
new ClearBrowsingDataObserver(env, obj, browsing_data_remover);
+ std::vector<int> data_types_vector;
+ base::android::JavaIntArrayToIntVector(env, data_types, &data_types_vector);
+
int remove_mask = 0;
- if (history)
- remove_mask |= BrowsingDataRemover::REMOVE_HISTORY;
- if (cache)
- remove_mask |= BrowsingDataRemover::REMOVE_CACHE;
- if (cookies_and_site_data) {
- remove_mask |= BrowsingDataRemover::REMOVE_COOKIES;
- remove_mask |= BrowsingDataRemover::REMOVE_SITE_DATA;
+ for (const int data_type : data_types_vector) {
+ switch (static_cast<BrowsingDataType>(data_type)) {
+ case HISTORY:
+ remove_mask |= BrowsingDataRemover::REMOVE_HISTORY;
+ break;
+ case CACHE:
+ remove_mask |= BrowsingDataRemover::REMOVE_CACHE;
+ break;
+ case COOKIES:
+ remove_mask |= BrowsingDataRemover::REMOVE_COOKIES;
+ remove_mask |= BrowsingDataRemover::REMOVE_SITE_DATA;
+ break;
+ case PASSWORDS:
+ remove_mask |= BrowsingDataRemover::REMOVE_PASSWORDS;
+ break;
+ case FORM_DATA:
+ remove_mask |= BrowsingDataRemover::REMOVE_FORM_DATA;
+ break;
+ default:
+ NOTREACHED();
+ }
}
- if (passwords)
- remove_mask |= BrowsingDataRemover::REMOVE_PASSWORDS;
- if (form_data)
- remove_mask |= BrowsingDataRemover::REMOVE_FORM_DATA;
+
browsing_data_remover->Remove(BrowsingDataRemover::Unbounded(), remove_mask,
BrowsingDataHelper::UNPROTECTED_WEB);
}
« no previous file with comments | « chrome/browser/android/chrome_jni_registrar.cc ('k') | chrome/browser/browsing_data/browsing_data_counter_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698