import android.app.Fragment;
import android.content.Context;
import android.content.DialogInterface;
+import android.content.Intent;
import android.os.Bundle;
import android.os.Process;
+import android.os.UserHandle;
import android.support.v7.preference.PreferenceScreen;
import android.view.View;
import android.view.View.OnClickListener;
private Account mAccount;
private Fragment mParentFragment;
+ private UserHandle mUserHandle;
public RemoveAccountPreferenceController(Context context, Fragment parent) {
super(context);
@Override
public void onClick(View v) {
- ConfirmRemoveAccountDialog.show(mParentFragment, mAccount);
+ ConfirmRemoveAccountDialog.show(mParentFragment, mAccount, mUserHandle);
}
- public void setAccount(Account account) {
+ public void init(Account account, UserHandle userHandle) {
mAccount = account;
+ mUserHandle = userHandle;
}
/**
*/
public static class ConfirmRemoveAccountDialog extends InstrumentedDialogFragment implements
DialogInterface.OnClickListener {
- private static final String SAVE_ACCOUNT = "account";
+ private static final String KEY_ACCOUNT = "account";
private static final String REMOVE_ACCOUNT_DIALOG = "confirmRemoveAccount";
private Account mAccount;
+ private UserHandle mUserHandle;
- public static ConfirmRemoveAccountDialog show(Fragment parent, Account account) {
+ public static ConfirmRemoveAccountDialog show(
+ Fragment parent, Account account, UserHandle userHandle) {
if (!parent.isAdded()) {
return null;
}
final ConfirmRemoveAccountDialog dialog = new ConfirmRemoveAccountDialog();
- dialog.mAccount = account;
+ Bundle bundle = new Bundle();
+ bundle.putParcelable(KEY_ACCOUNT, account);
+ bundle.putParcelable(Intent.EXTRA_USER, userHandle);
+ dialog.setArguments(bundle);
dialog.setTargetFragment(parent, 0);
dialog.show(parent.getFragmentManager(), REMOVE_ACCOUNT_DIALOG);
return dialog;
}
@Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ final Bundle arguments = getArguments();
+ mAccount = arguments.getParcelable(KEY_ACCOUNT);
+ mUserHandle = arguments.getParcelable(Intent.EXTRA_USER);
+ }
+
+ @Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Context context = getActivity();
- if (savedInstanceState != null) {
- mAccount = (Account) savedInstanceState.getParcelable(SAVE_ACCOUNT);
- }
return new AlertDialog.Builder(context)
.setTitle(R.string.really_remove_account_title)
.setMessage(R.string.really_remove_account_message)
}
@Override
- public void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- outState.putParcelable(SAVE_ACCOUNT, mAccount);
- }
-
- @Override
public int getMetricsCategory() {
return MetricsProto.MetricsEvent.DIALOG_ACCOUNT_SYNC_REMOVE;
}
activity.finish();
}
}
- }, null, Process.myUserHandle());
+ }, null, mUserHandle);
}
}
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.Context;
+import android.os.Bundle;
import android.os.Handler;
import android.os.UserHandle;
import android.support.v7.preference.PreferenceScreen;
when(mFragment.getActivity()).thenReturn(activity);
Account account = new Account("Account11", "com.acct1");
+ UserHandle userHandle = new UserHandle(10);
RemoveAccountPreferenceController.ConfirmRemoveAccountDialog dialog =
- RemoveAccountPreferenceController.ConfirmRemoveAccountDialog.show(mFragment, account);
-
+ RemoveAccountPreferenceController.ConfirmRemoveAccountDialog.show(
+ mFragment, account, userHandle);
+ dialog.onCreate(new Bundle());
dialog.onClick(null, 0);
verify(mAccountManager).removeAccountAsUser(eq(account), any(Activity.class),
- any(AccountManagerCallback.class), any(Handler.class), any(UserHandle.class));
+ any(AccountManagerCallback.class), any(Handler.class), eq(userHandle));
}
}
\ No newline at end of file