Use GLIF theme for screen lock confirmation

Theme the confirm password screen similar to setup wizard and screen
lock enrollment flow, so that we can start showing it during setup
wizard.
The new layouts are called "internal" because it's supposed to be
used only when another settings screen starts it. For external
intents from CONFIRM_DEVICE_CREDENTIAL, the existing theme and layout
are unchanged.

Bug: 32373672
Test: Run ConfirmLockPasswordTest with `am instrument`
Change-Id: Ib887a763a073e6e4b96264d08846827b2e5cbf52
This commit is contained in:
Maurice Lam
2017-03-10 15:31:30 -08:00
parent 0ef2a55b08
commit daaf8f8bc9
10 changed files with 466 additions and 43 deletions

View File

@@ -22,16 +22,23 @@ import android.os.Bundle;
import android.os.UserManager;
import android.view.MenuItem;
import android.view.WindowManager;
import android.widget.LinearLayout;
public abstract class ConfirmDeviceCredentialBaseActivity extends SettingsActivity {
private static final String STATE_IS_KEYGUARD_LOCKED = "STATE_IS_KEYGUARD_LOCKED";
enum ConfirmCredentialTheme {
INTERNAL,
DARK,
WORK
}
private boolean mRestoring;
private boolean mDark;
private boolean mEnterAnimationPending;
private boolean mFirstTimeVisible = true;
private boolean mIsKeyguardLocked = false;
private ConfirmCredentialTheme mConfirmCredentialTheme;
@Override
protected void onCreate(Bundle savedState) {
@@ -39,12 +46,24 @@ public abstract class ConfirmDeviceCredentialBaseActivity extends SettingsActivi
Utils.getUserIdFromBundle(this, getIntent().getExtras()));
if (UserManager.get(this).isManagedProfile(credentialOwnerUserId)) {
setTheme(R.style.Theme_ConfirmDeviceCredentialsWork);
mConfirmCredentialTheme = ConfirmCredentialTheme.WORK;
} else if (getIntent().getBooleanExtra(
ConfirmDeviceCredentialBaseFragment.DARK_THEME, false)) {
setTheme(R.style.Theme_ConfirmDeviceCredentialsDark);
mDark = true;
mConfirmCredentialTheme = ConfirmCredentialTheme.DARK;
} else {
setTheme(R.style.SetupWizardTheme_Light);
mConfirmCredentialTheme = ConfirmCredentialTheme.INTERNAL;
}
super.onCreate(savedState);
if (mConfirmCredentialTheme == ConfirmCredentialTheme.INTERNAL) {
// Prevent the content parent from consuming the window insets because GlifLayout uses
// it to show the status bar background.
LinearLayout layout = (LinearLayout) findViewById(R.id.content_parent);
layout.setFitsSystemWindows(false);
}
mIsKeyguardLocked = savedState == null
? getSystemService(KeyguardManager.class).isKeyguardLocked()
: savedState.getBoolean(STATE_IS_KEYGUARD_LOCKED, false);
@@ -85,7 +104,8 @@ public abstract class ConfirmDeviceCredentialBaseActivity extends SettingsActivi
@Override
public void onResume() {
super.onResume();
if (!isChangingConfigurations() && !mRestoring && mDark && mFirstTimeVisible) {
if (!isChangingConfigurations() && !mRestoring
&& mConfirmCredentialTheme == ConfirmCredentialTheme.DARK && mFirstTimeVisible) {
mFirstTimeVisible = false;
prepareEnterAnimation();
mEnterAnimationPending = true;
@@ -116,4 +136,8 @@ public abstract class ConfirmDeviceCredentialBaseActivity extends SettingsActivi
public void startEnterAnimation() {
getFragment().startEnterAnimation();
}
public ConfirmCredentialTheme getConfirmCredentialTheme() {
return mConfirmCredentialTheme;
}
}