Commit 06142497 authored by Boris Sazonov's avatar Boris Sazonov Committed by Commit Bot

[Unity][Android] Disable Back button in consent bump screen

This CL disables Back button on the main consent bump screen. If
SigninActivity is not in consent bump mode or there are entries in
fragment manager back stack, Back button works as usual.

Bug: 869426
Change-Id: Iec128e6cd01b9354f9da587da131a27776599c3d
Reviewed-on: https://chromium-review.googlesource.com/1169605Reviewed-by: default avatarTheresa <twellington@chromium.org>
Commit-Queue: Boris Sazonov <bsazonov@chromium.org>
Cr-Commit-Position: refs/heads/master@{#582544}
parent 144eff60
......@@ -21,6 +21,9 @@ public class SigninActivity extends SynchronousInitializationActivity {
private static final String TAG = "SigninActivity";
private static final String ARGUMENT_FRAGMENT_NAME = "SigninActivity.FragmentName";
private static final String ARGUMENT_FRAGMENT_ARGS = "SigninActivity.FragmentArgs";
private static final String ARGUMENT_INTERCEPT_BACK = "SigninActivity.InterceptBack";
private boolean mInterceptBack;
/**
* Creates an {@link Intent} which can be used to start sign-in flow.
......@@ -29,7 +32,7 @@ public class SigninActivity extends SynchronousInitializationActivity {
public static Intent createIntent(
Context context, @AccountSigninActivity.AccessPoint int accessPoint) {
return createIntentInternal(
context, SigninFragment.class, SigninFragment.createArguments(accessPoint));
context, SigninFragment.class, SigninFragment.createArguments(accessPoint), false);
}
/**
......@@ -40,7 +43,7 @@ public class SigninActivity extends SynchronousInitializationActivity {
public static Intent createIntentForPromoDefaultFlow(
Context context, @SigninAccessPoint int accessPoint, String accountName) {
return createIntentInternal(context, SigninFragment.class,
SigninFragment.createArgumentsForPromoDefaultFlow(accessPoint, accountName));
SigninFragment.createArgumentsForPromoDefaultFlow(accessPoint, accountName), false);
}
/**
......@@ -52,7 +55,8 @@ public class SigninActivity extends SynchronousInitializationActivity {
public static Intent createIntentForPromoChooseAccountFlow(
Context context, @SigninAccessPoint int accessPoint, String accountName) {
return createIntentInternal(context, SigninFragment.class,
SigninFragment.createArgumentsForPromoChooseAccountFlow(accessPoint, accountName));
SigninFragment.createArgumentsForPromoChooseAccountFlow(accessPoint, accountName),
false);
}
/**
......@@ -63,7 +67,7 @@ public class SigninActivity extends SynchronousInitializationActivity {
public static Intent createIntentForPromoAddAccountFlow(
Context context, @SigninAccessPoint int accessPoint) {
return createIntentInternal(context, SigninFragment.class,
SigninFragment.createArgumentsForPromoAddAccountFlow(accessPoint));
SigninFragment.createArgumentsForPromoAddAccountFlow(accessPoint), false);
}
/**
......@@ -72,15 +76,15 @@ public class SigninActivity extends SynchronousInitializationActivity {
*/
public static Intent createIntentForConsentBump(Context context, String accountName) {
return createIntentInternal(context, ConsentBumpFragment.class,
ConsentBumpFragment.createArguments(accountName));
ConsentBumpFragment.createArguments(accountName), true);
}
private static Intent createIntentInternal(
Context context, Class<? extends Fragment> fragmentName, Bundle fragmentArgs) {
private static Intent createIntentInternal(Context context,
Class<? extends Fragment> fragmentName, Bundle fragmentArgs, boolean interceptBack) {
Intent intent = new Intent(context, SigninActivity.class);
intent.putExtra(ARGUMENT_FRAGMENT_NAME, fragmentName.getName());
intent.putExtra(ARGUMENT_FRAGMENT_ARGS, fragmentArgs);
intent.putExtras(fragmentArgs);
intent.putExtra(ARGUMENT_INTERCEPT_BACK, interceptBack);
return intent;
}
......@@ -97,5 +101,19 @@ public class SigninActivity extends SynchronousInitializationActivity {
fragment = Fragment.instantiate(this, fragmentName, fragmentArgs);
fragmentManager.beginTransaction().add(R.id.fragment_container, fragment).commit();
}
mInterceptBack = getIntent().getBooleanExtra(ARGUMENT_INTERCEPT_BACK, false);
}
@Override
public void onBackPressed() {
if (!mInterceptBack) {
super.onBackPressed();
return;
}
int backStackEntryCount = getSupportFragmentManager().getBackStackEntryCount();
// Ditch the button click if fragment manager back stack is empty.
if (backStackEntryCount == 0) return;
// Let FragmentActivity pop the stack, as it has additional safety checks.
super.onBackPressed();
}
}
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