Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4459)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/sync/ui/ConfirmImportSyncDataDialog.java

Issue 2014833002: Show dialogs for syncing to managed accounts. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Replace getContext with getActivity in AccountManagementFragment. Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/sync/ui/ConfirmImportSyncDataDialog.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/ui/ConfirmImportSyncDataDialog.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/ui/ConfirmImportSyncDataDialog.java
deleted file mode 100644
index 24d2336aa6b4d6a6c53ccec65b5e6b3378a11c73..0000000000000000000000000000000000000000
--- a/chrome/android/java/src/org/chromium/chrome/browser/sync/ui/ConfirmImportSyncDataDialog.java
+++ /dev/null
@@ -1,210 +0,0 @@
-// 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.sync.ui;
-
-import android.app.Dialog;
-import android.app.DialogFragment;
-import android.app.FragmentManager;
-import android.content.DialogInterface;
-import android.os.Bundle;
-import android.support.v7.app.AlertDialog;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.widget.TextView;
-
-import org.chromium.base.VisibleForTesting;
-import org.chromium.base.metrics.RecordUserAction;
-import org.chromium.chrome.R;
-import org.chromium.chrome.browser.preferences.ManagedPreferencesUtils;
-import org.chromium.chrome.browser.signin.SigninManager;
-import org.chromium.chrome.browser.widget.RadioButtonWithDescription;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * A dialog that is displayed when the user switches the account they are syncing to. It gives the
- * option to merge the data of the two accounts or to keep them separate.
- */
-public class ConfirmImportSyncDataDialog extends DialogFragment
- implements DialogInterface.OnClickListener {
-
- /**
- * Callback for completion of the dialog. Only one of {@link Listener#onConfirm} or
- * {@link Listener#onCancel} will be called and it will only be called once.
- */
- public interface Listener {
- /**
- * The user has completed the dialog using the positive button.
- * @param wipeData Whether the user requested that existing data should be wiped.
- */
- public void onConfirm(boolean wipeData);
-
- /**
- * The user dismisses the dialog through any means other than the positive button.
- */
- public void onCancel();
- }
-
- /**
- * The situation ConfirmImportSyncDataDialog is created for - whether the user had previously
- * been signed into another account, had signed out then signed into a different one, or
- * if they directly switched accounts. This changes the strings displayed.
- */
- public enum ImportSyncType { SWITCHING_SYNC_ACCOUNTS, PREVIOUS_DATA_FOUND }
-
- @VisibleForTesting
- public static final String CONFIRM_IMPORT_SYNC_DATA_DIALOG_TAG =
- "sync_account_switch_import_data_tag";
-
- private static final String KEY_OLD_ACCOUNT_NAME = "lastAccountName";
- private static final String KEY_NEW_ACCOUNT_NAME = "newAccountName";
- private static final String KEY_IMPORT_SYNC_TYPE = "importSyncType";
-
- private RadioButtonWithDescription mConfirmImportOption;
- private RadioButtonWithDescription mKeepSeparateOption;
-
- private Listener mListener;
- private boolean mListenerCalled;
-
- private static ConfirmImportSyncDataDialog newInstance(
- String oldAccountName, String newAccountName, ImportSyncType importSyncType) {
-
- ConfirmImportSyncDataDialog fragment = new ConfirmImportSyncDataDialog();
- Bundle args = new Bundle();
- args.putString(KEY_OLD_ACCOUNT_NAME, oldAccountName);
- args.putString(KEY_NEW_ACCOUNT_NAME, newAccountName);
- args.putSerializable(KEY_IMPORT_SYNC_TYPE, importSyncType);
- fragment.setArguments(args);
- return fragment;
- }
-
- /**
- * Creates and shows a new instance of ConfirmImportSyncDataFragment, a dialog that gives the
- * user the option to merge data between the account they are attempting to sign in to and the
- * account they were previously signed into, or to keep the data separate.
- * @param oldAccountName The previous sync account name.
- * @param newAccountName The potential next sync account name.
- * @param importSyncType The situation the dialog is created in - either when directly changing
- * the sync account or signing in after being signed out (this changes
- * displayed strings).
- * @param fragmentManager FragmentManager to attach the dialog to.
- * @param callback Callback to be called if the user completes the dialog (as opposed to
- * hitting cancel).
- */
- public static void showNewInstance(String oldAccountName, String newAccountName,
- ImportSyncType importSyncType, FragmentManager fragmentManager, Listener callback) {
- ConfirmImportSyncDataDialog confirmSync =
- newInstance(oldAccountName, newAccountName, importSyncType);
-
- confirmSync.setListener(callback);
- confirmSync.show(fragmentManager, CONFIRM_IMPORT_SYNC_DATA_DIALOG_TAG);
- }
-
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- // If the dialog is being recreated it won't have the listener set and so won't be
- // functional. Therefore we dismiss, and the user will need to open the dialog again.
- if (savedInstanceState != null) {
- dismiss();
- }
- String oldAccountName = getArguments().getString(KEY_OLD_ACCOUNT_NAME);
- String newAccountName = getArguments().getString(KEY_NEW_ACCOUNT_NAME);
- ImportSyncType importSyncType =
- (ImportSyncType) getArguments().getSerializable(KEY_IMPORT_SYNC_TYPE);
-
- LayoutInflater inflater = getActivity().getLayoutInflater();
- View v = inflater.inflate(R.layout.confirm_import_sync_data, null);
-
- TextView prompt = (TextView) v.findViewById(R.id.sync_import_data_prompt);
-
- if (importSyncType == ImportSyncType.SWITCHING_SYNC_ACCOUNTS) {
- prompt.setText(getActivity().getString(
- R.string.sync_import_data_prompt_switching_accounts,
- newAccountName, oldAccountName));
- } else {
- prompt.setText(getActivity().getString(
- R.string.sync_import_data_prompt_existing_data,
- newAccountName, oldAccountName));
- }
-
- mConfirmImportOption = (RadioButtonWithDescription)
- v.findViewById(R.id.sync_confirm_import_choice);
- mKeepSeparateOption = (RadioButtonWithDescription)
- v.findViewById(R.id.sync_keep_separate_choice);
-
- mConfirmImportOption.setDescriptionText(getActivity().getString(
- R.string.sync_import_existing_data_subtext, newAccountName));
- mKeepSeparateOption.setDescriptionText(getActivity().getString(
- (importSyncType == ImportSyncType.SWITCHING_SYNC_ACCOUNTS
- ? R.string.sync_keep_existing_data_separate_subtext_switching_accounts
- : R.string.sync_keep_existing_data_separate_subtext_existing_data),
- newAccountName, oldAccountName));
-
- List<RadioButtonWithDescription> radioGroup =
- Arrays.asList(mConfirmImportOption, mKeepSeparateOption);
- mConfirmImportOption.setRadioButtonGroup(radioGroup);
- mKeepSeparateOption.setRadioButtonGroup(radioGroup);
-
- // If the account is managed, disallow merging information.
- if (SigninManager.get(getActivity()).getManagementDomain() != null) {
- mKeepSeparateOption.setChecked(true);
- mConfirmImportOption.setOnClickListener(new OnClickListener(){
- @Override
- public void onClick(View v) {
- ManagedPreferencesUtils.showManagedByAdministratorToast(getActivity());
- }
- });
- } else {
- if (importSyncType == ImportSyncType.SWITCHING_SYNC_ACCOUNTS) {
- mKeepSeparateOption.setChecked(true);
- } else {
- mConfirmImportOption.setChecked(true);
- }
- }
-
- return new AlertDialog.Builder(getActivity(), R.style.AlertDialogTheme)
- .setTitle(R.string.sync_import_data_title)
- .setPositiveButton(R.string.continue_button, this)
- .setNegativeButton(R.string.cancel, this)
- .setView(v)
- .create();
- }
-
- private void setListener(Listener listener) {
- assert mListener == null;
- mListener = listener;
- }
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- if (mListener == null) return;
-
- if (which == AlertDialog.BUTTON_POSITIVE) {
- assert mConfirmImportOption.isChecked() ^ mKeepSeparateOption.isChecked();
-
- RecordUserAction.record(mKeepSeparateOption.isChecked()
- ? "Signin_ImportDataPrompt_DontImport"
- : "Signin_ImportDataPrompt_ImportData");
- mListener.onConfirm(mKeepSeparateOption.isChecked());
- } else {
- assert which == AlertDialog.BUTTON_NEGATIVE;
-
- RecordUserAction.record("Signin_ImportDataPrompt_Cancel");
- mListener.onCancel();
- }
- mListenerCalled = true;
- }
-
- @Override
- public void onDismiss(DialogInterface dialog) {
- super.onDismiss(dialog);
- if (mListener != null && !mListenerCalled) {
- mListener.onCancel();
- }
- }
-}
-

Powered by Google App Engine
This is Rietveld 408576698