Chromium Code Reviews| 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); |
| } |