Commit 58808a99 authored by Marc Treib's avatar Marc Treib Committed by Commit Bot

Sync Android UI: Use GetChosenDataTypes over GetPreferredDataTypes

We were already using SetChosenDataTypes.
Unfortunately, GetPreferredDataTypes must still be exposed to the Java
side because invalidations code needs it.

Bug: 884159
Change-Id: I42745e28a312a3ad0494392d2a283c75fa36b08e
Reviewed-on: https://chromium-review.googlesource.com/c/1339865Reviewed-by: default avatarMikel Astiz <mastiz@chromium.org>
Reviewed-by: default avatarBoris Sazonov <bsazonov@chromium.org>
Commit-Queue: Marc Treib <treib@chromium.org>
Cr-Commit-Position: refs/heads/master@{#608754}
parent 851cff7b
......@@ -531,7 +531,7 @@ public class SyncAndServicesPreferences extends PreferenceFragment
if (!mIsSyncEnabled) return;
boolean syncEverything = UnifiedConsentServiceBridge.isUnifiedConsentGiven();
mProfileSyncService.setPreferredDataTypes(syncEverything, getSelectedModelTypes());
mProfileSyncService.setChosenDataTypes(syncEverything, getSelectedModelTypes());
// Update the invalidation listener with the set of types we are enabling.
InvalidationController invController = InvalidationController.get();
invController.ensureStartedAndUpdateRegisteredTypes();
......@@ -689,7 +689,7 @@ public class SyncAndServicesPreferences extends PreferenceFragment
}
Set<Integer> syncTypes =
mIsSyncEnabled ? mProfileSyncService.getPreferredDataTypes() : new ArraySet<>();
mIsSyncEnabled ? mProfileSyncService.getChosenDataTypes() : new ArraySet<>();
mSyncAutofill.setChecked(syncTypes.contains(ModelType.AUTOFILL));
mSyncAutofill.setEnabled(true);
mSyncBookmarks.setChecked(syncTypes.contains(ModelType.BOOKMARKS));
......
......@@ -263,7 +263,7 @@ public class ProfileSyncService {
/**
* Turns on encryption of all data types. This only takes effect after sync configuration is
* completed and setPreferredDataTypes() is invoked.
* completed and setChosenDataTypes() is invoked.
*/
public void enableEncryptEverything() {
assert isEngineInitialized();
......@@ -310,7 +310,21 @@ public class ProfileSyncService {
}
/**
* Gets the set of data types that are enabled in sync.
* Gets the set of data types that are enabled in sync. This will always
* return a subset of syncer::UserSelectableTypes().
*
* This is unaffected by whether sync is on.
*
* @return Set of chosen types.
*/
public Set<Integer> getChosenDataTypes() {
int[] modelTypeArray = nativeGetChosenDataTypes(mNativeProfileSyncServiceAndroid);
return modelTypeArrayToSet(modelTypeArray);
}
/**
* Gets the set of data types that are "preferred" in sync. Those are the
* "chosen" ones (see above), plus any that are implied by them.
*
* This is unaffected by whether sync is on.
*
......@@ -350,9 +364,9 @@ public class ProfileSyncService {
* @param enabledTypes The set of types to enable. Ignored (can be null) if
* syncEverything is true.
*/
public void setPreferredDataTypes(boolean syncEverything, Set<Integer> enabledTypes) {
nativeSetPreferredDataTypes(mNativeProfileSyncServiceAndroid, syncEverything, syncEverything
? ALL_SELECTABLE_TYPES : modelTypeSetToArray(enabledTypes));
public void setChosenDataTypes(boolean syncEverything, Set<Integer> enabledTypes) {
nativeSetChosenDataTypes(mNativeProfileSyncServiceAndroid, syncEverything,
syncEverything ? ALL_SELECTABLE_TYPES : modelTypeSetToArray(enabledTypes));
}
public void setFirstSetupComplete() {
......@@ -569,8 +583,9 @@ public class ProfileSyncService {
private native String nativeGetSyncEnterCustomPassphraseBodyText(
long nativeProfileSyncServiceAndroid);
private native int[] nativeGetActiveDataTypes(long nativeProfileSyncServiceAndroid);
private native int[] nativeGetChosenDataTypes(long nativeProfileSyncServiceAndroid);
private native int[] nativeGetPreferredDataTypes(long nativeProfileSyncServiceAndroid);
private native void nativeSetPreferredDataTypes(
private native void nativeSetChosenDataTypes(
long nativeProfileSyncServiceAndroid, boolean syncEverything, int[] modelTypeArray);
private native void nativeSetSetupInProgress(
long nativeProfileSyncServiceAndroid, boolean inProgress);
......
......@@ -368,7 +368,7 @@ public class SyncCustomizationFragment extends PreferenceFragment
if (maybeDisableSync()) return;
boolean syncEverything = mSyncEverything.isChecked();
mProfileSyncService.setPreferredDataTypes(syncEverything, getSelectedModelTypes());
mProfileSyncService.setChosenDataTypes(syncEverything, getSelectedModelTypes());
// Update the invalidation listener with the set of types we are enabling.
InvalidationController invController = InvalidationController.get();
invController.ensureStartedAndUpdateRegisteredTypes();
......@@ -554,7 +554,7 @@ public class SyncCustomizationFragment extends PreferenceFragment
private void updateDataTypeState() {
boolean isSyncEnabled = mSyncSwitchPreference.isChecked();
boolean syncEverything = mSyncEverything.isChecked();
Set<Integer> syncTypes = mProfileSyncService.getPreferredDataTypes();
Set<Integer> syncTypes = mProfileSyncService.getChosenDataTypes();
boolean syncAutofill = syncTypes.contains(ModelType.AUTOFILL);
for (CheckBoxPreference pref : mAllTypes) {
boolean canSyncType = true;
......
......@@ -185,26 +185,26 @@ public class SyncTestRule extends ChromeActivityTestRule<ChromeActivity> {
}
/*
* Enable the |modelType| Sync data type. This also forces all types to be
* USER_SELECTABLE_TYPES.
* Enables the |modelType| Sync data type, which must be in USER_SELECTABLE_TYPES.
*/
public void enableDataType(final int modelType) {
ThreadUtils.runOnUiThreadBlocking(() -> {
Set<Integer> preferredTypes = mProfileSyncService.getPreferredDataTypes();
preferredTypes.retainAll(USER_SELECTABLE_TYPES);
preferredTypes.add(modelType);
mProfileSyncService.setPreferredDataTypes(false, preferredTypes);
Set<Integer> chosenTypes = mProfileSyncService.getChosenDataTypes();
chosenTypes.add(modelType);
mProfileSyncService.setChosenDataTypes(false, chosenTypes);
});
}
/*
* Disables the |modelType| Sync data type, which must be in USER_SELECTABLE_TYPES.
*/
public void disableDataType(final int modelType) {
ThreadUtils.runOnUiThreadBlocking(new Runnable() {
@Override
public void run() {
Set<Integer> preferredTypes = mProfileSyncService.getPreferredDataTypes();
preferredTypes.retainAll(USER_SELECTABLE_TYPES);
preferredTypes.remove(modelType);
mProfileSyncService.setPreferredDataTypes(false, preferredTypes);
Set<Integer> chosenTypes = mProfileSyncService.getChosenDataTypes();
chosenTypes.remove(modelType);
mProfileSyncService.setChosenDataTypes(false, chosenTypes);
}
});
}
......
......@@ -210,6 +210,14 @@ ScopedJavaLocalRef<jintArray> ProfileSyncServiceAndroid::GetActiveDataTypes(
return JNI_ProfileSyncService_ModelTypeSetToJavaIntArray(env, types);
}
ScopedJavaLocalRef<jintArray> ProfileSyncServiceAndroid::GetChosenDataTypes(
JNIEnv* env,
const JavaParamRef<jobject>& obj) {
syncer::ModelTypeSet types =
sync_service_->GetUserSettings()->GetChosenDataTypes();
return JNI_ProfileSyncService_ModelTypeSetToJavaIntArray(env, types);
}
ScopedJavaLocalRef<jintArray> ProfileSyncServiceAndroid::GetPreferredDataTypes(
JNIEnv* env,
const JavaParamRef<jobject>& obj) {
......@@ -217,7 +225,7 @@ ScopedJavaLocalRef<jintArray> ProfileSyncServiceAndroid::GetPreferredDataTypes(
return JNI_ProfileSyncService_ModelTypeSetToJavaIntArray(env, types);
}
void ProfileSyncServiceAndroid::SetPreferredDataTypes(
void ProfileSyncServiceAndroid::SetChosenDataTypes(
JNIEnv* env,
const JavaParamRef<jobject>& obj,
jboolean sync_everything,
......
......@@ -71,10 +71,13 @@ class ProfileSyncServiceAndroid : public syncer::SyncServiceObserver {
base::android::ScopedJavaLocalRef<jintArray> GetActiveDataTypes(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& obj);
base::android::ScopedJavaLocalRef<jintArray> GetChosenDataTypes(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& obj);
base::android::ScopedJavaLocalRef<jintArray> GetPreferredDataTypes(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& obj);
void SetPreferredDataTypes(
void SetChosenDataTypes(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& obj,
jboolean sync_everything,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment