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

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: Added *Bridge class, shared enum 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 df1c27c22efd31d592eb1b53987e5abd1182a51f..5b864d446ea699f3b5d25c6f6afa14ed2c3524e4 100644
--- a/chrome/browser/android/preferences/pref_service_bridge.cc
+++ b/chrome/browser/android/preferences/pref_service_bridge.cc
@@ -6,9 +6,11 @@
#include <jni.h>
#include <stddef.h>
+#include <vector>
#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"
@@ -18,6 +20,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/content_settings/host_content_settings_map_factory.h"
@@ -492,15 +495,49 @@ class ClearBrowsingDataObserver : public BrowsingDataRemover::Observer {
private:
JavaObjectWeakGlobalRef weak_chrome_native_preferences_;
};
+
} // namespace
+static jboolean GetBrowsingDataDeletionPreference(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ jint data_type) {
+ DCHECK_GE(data_type, 0);
+ DCHECK_LE(data_type, ClankBrowsingDataType::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<ClankBrowsingDataType>(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_LE(data_type, ClankBrowsingDataType::NUM_TYPES);
+
+ std::string pref;
+ if (!GetDeletionPreferenceFromDataType(
+ static_cast<ClankBrowsingDataType>(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 deletes itself.
BrowsingDataRemover* browsing_data_remover =
BrowsingDataRemover::CreateForPeriod(
@@ -509,19 +546,33 @@ static void ClearBrowsingData(JNIEnv* env,
BrowsingDataRemover::EVERYTHING));
browsing_data_remover->AddObserver(new ClearBrowsingDataObserver(env, obj));
+ 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) {
newt (away) 2016/01/12 18:55:26 Rather than converting from ClankBrowsingDataType
msramek 2016/01/13 15:27:53 Hmm, that's a bit tricky. I would like to have re
newt (away) 2016/01/13 20:01:49 Thanks for the detailed explanation. I hadn't loo
msramek 2016/01/14 15:45:43 On Android, we show bookmarks only in the ClearSyn
+ switch (static_cast<ClankBrowsingDataType>(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(remove_mask,
BrowsingDataHelper::UNPROTECTED_WEB);
}

Powered by Google App Engine
This is Rietveld 408576698