Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2017 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 package org.chromium.chrome.browser.signin; | |
| 6 | |
| 7 import android.app.Dialog; | |
| 8 import android.content.Context; | |
| 9 import android.content.DialogInterface; | |
| 10 import android.support.v7.app.AlertDialog; | |
| 11 import android.view.LayoutInflater; | |
| 12 | |
| 13 import org.chromium.chrome.R; | |
| 14 | |
| 15 /** | |
| 16 * Class to decouple ConfirmSyncDataStateMachine from UI code and dialog managem ent. | |
| 17 */ | |
| 18 public class ConfirmSyncDataStateMachineDelegate { | |
| 19 /** | |
| 20 * Listener to receive events from progress dialog. If dialog is not dismiss ed by calling | |
|
msarda
2017/03/28 11:09:02
Nit: I would add a *the* in: "If *the* dialog ..."
bsazonov
2017/03/28 12:59:58
Done. I've also changed the same sentence in Timeo
msarda
2017/03/28 13:41:05
Acknowledged.
| |
| 21 * {@link ConfirmSyncDataStateMachineDelegate#dismissProgressDialog}, then | |
| 22 * {@link #onCancel} will be called once. | |
| 23 */ | |
| 24 public interface ProgressDialogListener { | |
| 25 /** | |
| 26 * This method is called when user cancels the dialog in any way. | |
| 27 */ | |
| 28 void onCancel(); | |
| 29 } | |
| 30 | |
| 31 /** | |
| 32 * Listener to receive events from timeout dialog. If dialog is not dismisse d by calling | |
| 33 * {@link ConfirmSyncDataStateMachineDelegate#dismissTimeoutDialog}, then | |
| 34 * either {@link #onCancel} or {@link #onRetry} will be called once. | |
| 35 */ | |
| 36 public interface TimeoutDialogListener { | |
| 37 /** | |
| 38 * This method is called when user cancels the dialog in any way. | |
| 39 */ | |
| 40 void onCancel(); | |
| 41 | |
| 42 /** | |
| 43 * This method is called when user clicks retry button. | |
| 44 */ | |
| 45 void onRetry(); | |
| 46 } | |
| 47 | |
| 48 private final Context mContext; | |
| 49 | |
| 50 private Dialog mProgressDialog; | |
| 51 private AlertDialog mTimeoutAlertDialog; | |
| 52 | |
| 53 public ConfirmSyncDataStateMachineDelegate(Context context) { | |
| 54 mContext = context; | |
| 55 } | |
| 56 | |
| 57 /** | |
| 58 * Shows progress dialog. Will dismiss previous progress dialog, if any. | |
| 59 * | |
| 60 * @param listener The {@link ProgressDialogListener} that will be notified about user actions. | |
| 61 */ | |
| 62 public void showProgressDialog(final ProgressDialogListener listener) { | |
|
msarda
2017/03/28 11:09:02
My understand is that this delegate is the generic
bsazonov
2017/03/28 12:59:58
Done. I think that "Management" fits better than "
| |
| 63 dismissProgressDialog(); | |
|
msarda
2017/03/28 11:09:02
Why does the previous dialog need to be dismissed
bsazonov
2017/03/28 12:59:58
Thanks for bringing this up. I've made this functi
msarda
2017/03/28 13:41:05
I think we should not have this call be done in th
bsazonov
2017/03/29 13:05:05
Done. I've added dismissAllDialogs instead of sepa
| |
| 64 AlertDialog.Builder builder = new AlertDialog.Builder(mContext, R.style. AlertDialogTheme); | |
|
msarda
2017/03/28 11:09:02
For consistency with the code below (and if it is
bsazonov
2017/03/28 12:59:58
See next comment.
| |
| 65 LayoutInflater inflater = LayoutInflater.from(builder.getContext()); | |
|
msarda
2017/03/28 11:09:02
Stupid question: Is builder.getContext() the same
bsazonov
2017/03/28 12:59:58
AFAIK, these context can be different (at least in
| |
| 66 builder.setView(inflater.inflate(R.layout.signin_progress_bar_dialog, nu ll)); | |
| 67 builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickLi stener() { | |
| 68 @Override | |
| 69 public void onClick(DialogInterface dialogInterface, int i) { | |
|
msarda
2017/03/28 11:09:02
For consistency, use dialog instead of dialogInter
bsazonov
2017/03/28 12:59:58
Done.
| |
| 70 listener.onCancel(); | |
|
msarda
2017/03/28 11:09:02
For consistency, please call dialogInterface.cance
bsazonov
2017/03/28 12:59:58
Done.
| |
| 71 } | |
| 72 }); | |
| 73 builder.setOnCancelListener(new DialogInterface.OnCancelListener() { | |
| 74 @Override | |
| 75 public void onCancel(DialogInterface dialogInterface) { | |
| 76 listener.onCancel(); | |
| 77 } | |
| 78 }); | |
| 79 mProgressDialog = builder.create(); | |
| 80 mProgressDialog.show(); | |
| 81 } | |
| 82 | |
| 83 /** | |
| 84 * Dismisses progress dialog. | |
| 85 */ | |
| 86 public void dismissProgressDialog() { | |
| 87 if (mProgressDialog != null) mProgressDialog.dismiss(); | |
| 88 mProgressDialog = null; | |
| 89 } | |
| 90 | |
| 91 /** | |
| 92 * Shows timeout dialog. Will dismiss previous timeout dialog, if any. | |
| 93 * | |
| 94 * @param listener The {@link TimeoutDialogListener} that will be notified a bout user actions. | |
| 95 */ | |
| 96 public void showTimeoutDialog(final TimeoutDialogListener listener) { | |
|
msarda
2017/03/28 11:09:02
Same here: showFetchManagedPolicyTimeoutDialog
bsazonov
2017/03/28 12:59:58
Done.
| |
| 97 dismissTimeoutDialog(); | |
| 98 mTimeoutAlertDialog = | |
| 99 new AlertDialog.Builder(mContext, R.style.AlertDialogTheme) | |
| 100 .setTitle(R.string.sign_in_timeout_title) | |
| 101 .setMessage(R.string.sign_in_timeout_message) | |
| 102 .setNegativeButton(R.string.cancel, | |
| 103 new DialogInterface.OnClickListener() { | |
| 104 @Override | |
| 105 public void onClick(DialogInterface dialog, int which) { | |
| 106 dialog.cancel(); | |
| 107 } | |
| 108 }) | |
| 109 .setPositiveButton(R.string.retry, | |
| 110 new DialogInterface.OnClickListener() { | |
| 111 @Override | |
| 112 public void onClick(DialogInterface dialog, int which) { | |
| 113 listener.onRetry(); | |
| 114 } | |
| 115 }) | |
| 116 .setOnCancelListener(new DialogInterface.OnCancelListene r() { | |
| 117 @Override | |
| 118 public void onCancel(DialogInterface dialogInterface ) { | |
| 119 listener.onCancel(); | |
| 120 } | |
| 121 }) | |
| 122 .create(); | |
| 123 mTimeoutAlertDialog.show(); | |
| 124 } | |
| 125 | |
| 126 /** | |
| 127 * Dismisses timeout dialog. | |
| 128 */ | |
| 129 public void dismissTimeoutDialog() { | |
| 130 if (mTimeoutAlertDialog != null) mTimeoutAlertDialog.dismiss(); | |
| 131 mTimeoutAlertDialog = null; | |
| 132 } | |
| 133 } | |
| OLD | NEW |