| Index: chrome/android/java/src/org/chromium/chrome/browser/signin/ConfirmManagedSyncDataDialog.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/ConfirmManagedSyncDataDialog.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/ConfirmManagedSyncDataDialog.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..79f45aeb20aa2a65058f08591a2fb694fd67f4f2
|
| --- /dev/null
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/ConfirmManagedSyncDataDialog.java
|
| @@ -0,0 +1,165 @@
|
| +// Copyright 2016 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +package org.chromium.chrome.browser.signin;
|
| +
|
| +import android.app.Dialog;
|
| +import android.app.DialogFragment;
|
| +import android.app.FragmentManager;
|
| +import android.content.DialogInterface;
|
| +import android.content.res.Resources;
|
| +import android.os.Bundle;
|
| +import android.support.v7.app.AlertDialog;
|
| +
|
| +import org.chromium.base.VisibleForTesting;
|
| +import org.chromium.chrome.R;
|
| +
|
| +/**
|
| + * A class to display the dialogs the user may encounter when switching to/from or signing into/out
|
| + * of a managed account.
|
| + */
|
| +public class ConfirmManagedSyncDataDialog extends DialogFragment
|
| + implements DialogInterface.OnClickListener {
|
| + /**
|
| + * A listener to allow the Dialog to report on the action taken. Either
|
| + * {@link Listener#onConfirm} or {@link Listener#onCancel} will be called once.
|
| + */
|
| + public interface Listener {
|
| + /**
|
| + * The user has accepted the dialog.
|
| + */
|
| + public void onConfirm();
|
| +
|
| + /**
|
| + * The user has cancelled the dialog either through a negative response or by dismissing it.
|
| + */
|
| + public void onCancel();
|
| + }
|
| +
|
| + @VisibleForTesting
|
| + public static final String CONFIRM_IMPORT_SYNC_DATA_DIALOG_TAG =
|
| + "sync_managed_data_tag";
|
| +
|
| + private static final String KEY_TITLE = "title";
|
| + private static final String KEY_DESCRIPTION = "description";
|
| + private static final String KEY_POSITIVE_BUTTON = "positiveButton";
|
| + private static final String KEY_NEGATIVE_BUTTON = "negativeButton";
|
| +
|
| + private Listener mListener;
|
| + private boolean mListenerCalled;
|
| +
|
| + /**
|
| + * Create the dialog to show when signing in to a managed account (either through sign in or
|
| + * when switching accounts).
|
| + * @param callback Callback for result.
|
| + * @param fragmentManager FragmentManaged to display the dialog.
|
| + * @param resources Resources to load the strings.
|
| + * @param domain The domain of the managed account.
|
| + */
|
| + public static void showSignInToManagedAccountDialog(Listener callback,
|
| + FragmentManager fragmentManager, Resources resources, String domain) {
|
| + String title = resources.getString(R.string.sign_in_managed_account);
|
| + String positive = resources.getString(R.string.policy_dialog_proceed);
|
| + String negative = resources.getString(R.string.cancel);
|
| + String desc = resources.getString(R.string.sign_in_managed_account_description, domain);
|
| + showNewInstance(title, desc, positive, negative, fragmentManager, callback);
|
| + }
|
| + /**
|
| + * Create the dialog to show when signing out of a managed account (but not switching from a
|
| + * managed account).
|
| + * @param callback Callback for result.
|
| + * @param fragmentManager FragmentManaged to display the dialog.
|
| + * @param resources Resources to load the strings.
|
| + * @param domain The domain of the managed account.
|
| + */
|
| + public static void showSignOutFromManagedAccountDialog(Listener callback,
|
| + FragmentManager fragmentManager, Resources resources, String domain) {
|
| + String title = resources.getString(R.string.sign_out_managed_account);
|
| + String positive = resources.getString(R.string.accept_and_sign_out);
|
| + String negative = resources.getString(R.string.cancel);
|
| + String desc = resources.getString(R.string.sign_out_managed_account_description, domain);
|
| + showNewInstance(title, desc, positive, negative, fragmentManager, callback);
|
| + }
|
| +
|
| + /**
|
| + * Create the dialog to show when switching from a managed account.
|
| + * @param callback Callback for result.
|
| + * @param fragmentManager FragmentManaged to display the dialog.
|
| + * @param resources Resources to load the strings.
|
| + * @param domain The domain of the managed account.
|
| + * @param oldAccount The old account email address.
|
| + * @param newAccount The new account email address.
|
| + */
|
| + public static void showSwitchFromManagedAccountDialog(Listener callback,
|
| + FragmentManager fragmentManager, Resources resources, String domain, String oldAccount,
|
| + String newAccount) {
|
| + String title = resources.getString(R.string.sign_out_managed_account);
|
| + String positive = resources.getString(R.string.accept_and_switch_accounts);
|
| + String negative = resources.getString(R.string.cancel);
|
| + String desc = resources.getString(R.string.switch_from_managed_account_description,
|
| + oldAccount, newAccount, domain);
|
| + showNewInstance(title, desc, positive, negative, fragmentManager, callback);
|
| + }
|
| +
|
| + private static void showNewInstance(String title, String description, String positiveButton,
|
| + String negativeButton, FragmentManager fragmentManager, Listener callback) {
|
| + ConfirmManagedSyncDataDialog confirmSync =
|
| + newInstance(title, description, positiveButton, negativeButton);
|
| +
|
| + confirmSync.setListener(callback);
|
| + confirmSync.show(fragmentManager, CONFIRM_IMPORT_SYNC_DATA_DIALOG_TAG);
|
| + }
|
| +
|
| + private static ConfirmManagedSyncDataDialog newInstance(String title, String description,
|
| + String positiveButton, String negativeButton) {
|
| + ConfirmManagedSyncDataDialog fragment = new ConfirmManagedSyncDataDialog();
|
| + Bundle args = new Bundle();
|
| + args.putString(KEY_TITLE, title);
|
| + args.putString(KEY_DESCRIPTION, description);
|
| + args.putString(KEY_POSITIVE_BUTTON, positiveButton);
|
| + args.putString(KEY_NEGATIVE_BUTTON, negativeButton);
|
| + fragment.setArguments(args);
|
| + return fragment;
|
| + }
|
| +
|
| + @Override
|
| + public Dialog onCreateDialog(Bundle savedInstanceState) {
|
| + String title = getArguments().getString(KEY_TITLE);
|
| + String description = getArguments().getString(KEY_DESCRIPTION);
|
| + String positiveButton = getArguments().getString(KEY_POSITIVE_BUTTON);
|
| + String negativeButton = getArguments().getString(KEY_NEGATIVE_BUTTON);
|
| +
|
| + return new AlertDialog.Builder(getActivity(), R.style.AlertDialogTheme)
|
| + .setTitle(title)
|
| + .setMessage(description)
|
| + .setPositiveButton(positiveButton, this)
|
| + .setNegativeButton(negativeButton, this)
|
| + .create();
|
| + }
|
| +
|
| + private void setListener(Listener listener) {
|
| + assert mListener == null;
|
| + mListener = listener;
|
| + }
|
| +
|
| + @Override
|
| + public void onClick(DialogInterface dialog, int which) {
|
| + if (which == AlertDialog.BUTTON_POSITIVE) {
|
| + mListener.onConfirm();
|
| + } else {
|
| + assert which == AlertDialog.BUTTON_NEGATIVE;
|
| + mListener.onCancel();
|
| + }
|
| + mListenerCalled = true;
|
| + }
|
| +
|
| + @Override
|
| + public void onDismiss(DialogInterface dialog) {
|
| + super.onDismiss(dialog);
|
| + if (!mListenerCalled) {
|
| + mListener.onCancel();
|
| + }
|
| + }
|
| +}
|
| +
|
|
|