Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include <jni.h> | |
| 6 | |
| 7 #include <iterator> | |
| 8 #include <string> | |
| 9 #include <vector> | |
| 10 | |
| 11 #include "base/android/jni_array.h" | |
| 12 #include "chrome/browser/android/chrome_backup_agent.h" | |
| 13 #include "chrome/browser/profiles/profile_manager.h" | |
| 14 #include "components/prefs/pref_service.h" | |
| 15 #include "components/sync/base/pref_names.h" | |
| 16 #include "jni/ChromeBackupAgent_jni.h" | |
| 17 | |
| 18 namespace { | |
| 19 | |
| 20 const char* backed_up_preferences_[] = { | |
| 21 syncer::prefs::kSyncFirstSetupComplete, | |
| 22 syncer::prefs::kSyncKeepEverythingSynced, | |
| 23 syncer::prefs::kSyncAutofillProfile, | |
| 24 syncer::prefs::kSyncAutofillWallet, | |
| 25 syncer::prefs::kSyncAutofillWalletMetadata, | |
| 26 syncer::prefs::kSyncAutofill, | |
| 27 syncer::prefs::kSyncBookmarks, | |
| 28 syncer::prefs::kSyncDeviceInfo, | |
| 29 syncer::prefs::kSyncFaviconImages, | |
| 30 syncer::prefs::kSyncFaviconTracking, | |
| 31 syncer::prefs::kSyncHistoryDeleteDirectives, | |
| 32 syncer::prefs::kSyncPasswords, | |
| 33 syncer::prefs::kSyncPreferences, | |
| 34 syncer::prefs::kSyncPriorityPreferences, | |
| 35 syncer::prefs::kSyncSessions, | |
| 36 syncer::prefs::kSyncSupervisedUserSettings, | |
| 37 syncer::prefs::kSyncSupervisedUserSharedSettings, | |
| 38 syncer::prefs::kSyncSupervisedUserWhitelists, | |
| 39 syncer::prefs::kSyncTabs, | |
| 40 syncer::prefs::kSyncTypedUrls, | |
| 41 syncer::prefs::kSyncSuppressStart, | |
| 42 }; | |
| 43 | |
| 44 } // namespace | |
| 45 | |
| 46 static base::android::ScopedJavaLocalRef<jobjectArray> GetBoolBackupNames( | |
| 47 JNIEnv* env, | |
| 48 const base::android::JavaParamRef<jclass>& jcaller) { | |
| 49 return base::android::ToJavaArrayOfStrings( | |
| 50 env, chrome::android::GetBackupPrefNames()); | |
| 51 } | |
| 52 | |
| 53 static base::android::ScopedJavaLocalRef<jbooleanArray> GetBoolBackupValues( | |
| 54 JNIEnv* env, | |
| 55 const base::android::JavaParamRef<jclass>& jcaller) { | |
| 56 PrefService* prefs = ProfileManager::GetLastUsedProfile()->GetPrefs(); | |
| 57 constexpr int pref_count = sizeof(backed_up_preferences_) / sizeof(char*); | |
|
Bernhard Bauer
2016/11/14 10:05:38
You can use arraysize() for this.
aberent
2016/11/14 17:23:40
Done.
| |
| 58 jboolean values[pref_count]; | |
| 59 | |
| 60 for (int i = 0; i < pref_count; i++) { | |
| 61 values[i] = prefs->GetBoolean(backed_up_preferences_[i]); | |
| 62 } | |
| 63 jbooleanArray array = env->NewBooleanArray(pref_count); | |
| 64 env->SetBooleanArrayRegion(array, 0, pref_count, values); | |
| 65 return base::android::ScopedJavaLocalRef<jbooleanArray>(env, array); | |
| 66 } | |
| 67 | |
| 68 static void SetBoolBackupPrefs( | |
| 69 JNIEnv* env, | |
| 70 const base::android::JavaParamRef<jclass>& jcaller, | |
| 71 const base::android::JavaParamRef<jobjectArray>& names, | |
| 72 const base::android::JavaParamRef<jbooleanArray>& values) { | |
| 73 std::vector<std::string> pref_names; | |
| 74 base::android::AppendJavaStringArrayToStringVector(env, names, &pref_names); | |
| 75 jboolean* pref_values = env->GetBooleanArrayElements(values, nullptr); | |
| 76 std::unordered_set<std::string> valid_prefs( | |
| 77 std::begin(backed_up_preferences_), std::end(backed_up_preferences_)); | |
| 78 | |
| 79 PrefService* prefs = ProfileManager::GetLastUsedProfile()->GetPrefs(); | |
| 80 for (unsigned int i = 0; i < pref_names.size(); i++) { | |
| 81 if (valid_prefs.count(pref_names[i])) { | |
| 82 prefs->SetBoolean(pref_names[i], pref_values[i]); | |
| 83 } | |
| 84 } | |
| 85 prefs->CommitPendingWrite(); | |
| 86 } | |
| 87 | |
| 88 namespace chrome { | |
| 89 namespace android { | |
| 90 | |
| 91 std::vector<std::string> GetBackupPrefNames() { | |
| 92 return std::vector<std::string>(backed_up_preferences_, | |
|
Bernhard Bauer
2016/11/14 10:05:38
For consistency, use std::begin() here as well?
aberent
2016/11/14 17:23:40
Done.
| |
| 93 std::end(backed_up_preferences_)); | |
| 94 } | |
| 95 | |
| 96 bool RegisterBackupAgent(JNIEnv* env) { | |
| 97 return RegisterNativesImpl(env); | |
| 98 } | |
| 99 | |
| 100 } // namespace android | |
| 101 } // namespace chrome | |
| OLD | NEW |