Commit aaf947c1 authored by Tanmoy Mollik's avatar Tanmoy Mollik Committed by Commit Bot

[Android] Handle SyncDisabled policy for MOBILE_IDENTITY_CONSISTENCY

When SyncDisabled policy is set, show a toast saying that "Sync is
disabled by your administrator" when user taps on the sync row in main
settings page.

Screenshot: https://crbug.com/1136780#c3

Bug: 1136780
Change-Id: I9ba71843ecc191e1e4faaa24377bcaadbb6c07bd
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2505749
Commit-Queue: Tanmoy Mollik <triploblastic@chromium.org>
Reviewed-by: default avatarBoris Sazonov <bsazonov@chromium.org>
Cr-Commit-Position: refs/heads/master@{#822283}
parent 19922152
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
package org.chromium.chrome.browser.settings; package org.chromium.chrome.browser.settings;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
...@@ -345,12 +346,15 @@ public class MainSettings extends PreferenceFragmentCompat ...@@ -345,12 +346,15 @@ public class MainSettings extends PreferenceFragmentCompat
mManageSync.setIcon(SyncSettingsUtils.getSyncStatusIcon(getActivity())); mManageSync.setIcon(SyncSettingsUtils.getSyncStatusIcon(getActivity()));
mManageSync.setSummary(SyncSettingsUtils.getSyncStatusSummary(getActivity())); mManageSync.setSummary(SyncSettingsUtils.getSyncStatusSummary(getActivity()));
mManageSync.setOnPreferenceClickListener(pref -> { mManageSync.setOnPreferenceClickListener(pref -> {
if (isSyncConsentAvailable) { Context context = getContext();
if (ProfileSyncService.get().isSyncDisabledByEnterprisePolicy()) {
SyncSettingsUtils.showSyncDisabledByAdministratorToast(context);
} else if (isSyncConsentAvailable) {
SettingsLauncher settingsLauncher = new SettingsLauncherImpl(); SettingsLauncher settingsLauncher = new SettingsLauncherImpl();
settingsLauncher.launchSettingsActivity(getContext(), ManageSyncSettings.class); settingsLauncher.launchSettingsActivity(context, ManageSyncSettings.class);
} else { } else {
SigninActivityLauncherImpl.get().launchActivityForPromoDefaultFlow( SigninActivityLauncherImpl.get().launchActivityForPromoDefaultFlow(
getContext(), SigninAccessPoint.SETTINGS, primaryAccountName); context, SigninAccessPoint.SETTINGS, primaryAccountName);
} }
return true; return true;
}); });
......
...@@ -42,6 +42,7 @@ import org.chromium.components.signin.base.GoogleServiceAuthError; ...@@ -42,6 +42,7 @@ import org.chromium.components.signin.base.GoogleServiceAuthError;
import org.chromium.components.sync.KeyRetrievalTriggerForUMA; import org.chromium.components.sync.KeyRetrievalTriggerForUMA;
import org.chromium.components.sync.StopSource; import org.chromium.components.sync.StopSource;
import org.chromium.ui.UiUtils; import org.chromium.ui.UiUtils;
import org.chromium.ui.widget.Toast;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy; import java.lang.annotation.RetentionPolicy;
...@@ -426,4 +427,15 @@ public class SyncSettingsUtils { ...@@ -426,4 +427,15 @@ public class SyncSettingsUtils {
Log.e(TAG, "Error opening key retrieval dialog: ", exception); Log.e(TAG, "Error opening key retrieval dialog: ", exception);
}); });
} }
/**
* Shows a toast indicating that sync is disabled for the account by the system administrator.
*
* @param context The context where the toast will be shown.
*/
public static void showSyncDisabledByAdministratorToast(Context context) {
Toast.makeText(context, context.getString(R.string.sync_is_disabled_by_administrator),
Toast.LENGTH_LONG)
.show();
}
} }
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