Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 98a9d341 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Make confirm lock screen use the right theme" into oc-dr1-dev

parents e2530c2f 84617256
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@
                style="@style/LockPatternIconStyle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="?attr/suwGlifHeaderGravity"
                android:src="@drawable/ic_lock" />

            <TextView
+10 −2
Original line number Diff line number Diff line
@@ -21,16 +21,15 @@ import android.app.Activity;
import android.app.Fragment;
import android.app.KeyguardManager;
import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.content.Intent;
import android.content.IntentSender;
import android.os.UserManager;
import android.provider.Settings;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.widget.LockPatternUtils;
import com.android.settings.SettingsActivity;
import com.android.settings.Utils;
import com.android.setupwizardlib.util.WizardManagerHelper;

public final class ChooseLockSettingsHelper {

@@ -278,8 +277,10 @@ public final class ChooseLockSettingsHelper {
            }
        } else {
            if (mFragment != null) {
                copyInternalExtras(mFragment.getActivity().getIntent(), intent);
                mFragment.startActivityForResult(intent, request);
            } else {
                copyInternalExtras(mActivity.getIntent(), intent);
                mActivity.startActivityForResult(intent, request);
            }
        }
@@ -304,4 +305,11 @@ public final class ChooseLockSettingsHelper {
            outIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
        }
    }

    private void copyInternalExtras(Intent inIntent, Intent outIntent) {
        String theme = inIntent.getStringExtra(WizardManagerHelper.EXTRA_THEME);
        if (theme != null) {
            outIntent.putExtra(WizardManagerHelper.EXTRA_THEME, theme);
        }
    }
}
+2 −1
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.widget.LinearLayout;

import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.SetupWizardUtils;
import com.android.settings.Utils;

public abstract class ConfirmDeviceCredentialBaseActivity extends SettingsActivity {
@@ -56,7 +57,7 @@ public abstract class ConfirmDeviceCredentialBaseActivity extends SettingsActivi
            setTheme(R.style.Theme_ConfirmDeviceCredentialsDark);
            mConfirmCredentialTheme = ConfirmCredentialTheme.DARK;
        } else {
            setTheme(R.style.GlifTheme_Light);
            setTheme(SetupWizardUtils.getTheme(getIntent()));
            mConfirmCredentialTheme = ConfirmCredentialTheme.INTERNAL;
        }
        super.onCreate(savedState);
+157 −0
Original line number Diff line number Diff line
package com.android.settings.password;

import static com.google.common.truth.Truth.assertThat;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import android.app.Activity;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Intent;
import android.os.UserHandle;

import com.android.internal.widget.LockPatternUtils;
import com.android.settings.TestConfig;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.testutils.shadow.ShadowUserManager;
import com.android.settings.testutils.shadow.ShadowUtils;
import com.android.setupwizardlib.util.WizardManagerHelper;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.Shadows;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowActivity;
import org.robolectric.shadows.ShadowActivity.IntentForResult;

@RunWith(SettingsRobolectricTestRunner.class)
@Config(
        manifest = TestConfig.MANIFEST_PATH,
        sdk = TestConfig.SDK_VERSION,
        shadows = {
                ShadowUserManager.class,
                ShadowUtils.class
        })
public class ChooseLockSettingsHelperTest {

    @Test
    public void testLaunchConfirmationActivityWithExternalAndChallenge() {

        final int userId = UserHandle.myUserId();
        final int request = 100;
        final long challenge = 10000L;

        final Activity activity = Robolectric.setupActivity(Activity.class);
        ChooseLockSettingsHelper helper = getChooseLockSettingsHelper(activity);
        helper.launchConfirmationActivityWithExternalAndChallenge(
                request, // request
                "title",
                "header",
                "description",
                true, // external
                challenge,
                userId
        );

        ShadowActivity shadowActivity = Shadows.shadowOf(activity);
        Intent startedIntent = shadowActivity.getNextStartedActivity();

        assertEquals(new ComponentName("com.android.settings",
                        ConfirmLockPattern.InternalActivity.class.getName()),
                startedIntent.getComponent());
        assertFalse(startedIntent.getBooleanExtra(
                ChooseLockSettingsHelper.EXTRA_KEY_RETURN_CREDENTIALS, false));
        assertTrue(startedIntent.getBooleanExtra(
                ChooseLockSettingsHelper.EXTRA_KEY_HAS_CHALLENGE, false));
        assertEquals(challenge, startedIntent.getLongExtra(
                ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE, 0L));
        assertEquals(
                true,
                (startedIntent.getFlags() & Intent.FLAG_ACTIVITY_FORWARD_RESULT) != 0);
        assertEquals(true, startedIntent.getBooleanExtra(
                ConfirmDeviceCredentialBaseFragment.ALLOW_FP_AUTHENTICATION, false));
        assertEquals(true, startedIntent.getBooleanExtra(
                ConfirmDeviceCredentialBaseFragment.DARK_THEME, false));
        assertEquals(true, startedIntent.getBooleanExtra(
                ConfirmDeviceCredentialBaseFragment.SHOW_CANCEL_BUTTON, false));
        assertEquals(true, startedIntent.getBooleanExtra(
                ConfirmDeviceCredentialBaseFragment.SHOW_WHEN_LOCKED, false));
    }

    @Test
    public void testLaunchConfirmationActivityInternalAndChallenge() {

        final int userId = UserHandle.myUserId();
        final int request = 100;
        final long challenge = 10000L;

        final Activity activity = Robolectric.setupActivity(Activity.class);
        ChooseLockSettingsHelper helper = getChooseLockSettingsHelper(activity);
        helper.launchConfirmationActivityWithExternalAndChallenge(
                request,
                "title",
                "header",
                "description",
                false, // external
                challenge,
                userId
        );
        ShadowActivity shadowActivity = Shadows.shadowOf(activity);
        Intent startedIntent = shadowActivity.getNextStartedActivity();

        assertEquals(new ComponentName("com.android.settings",
                        ConfirmLockPattern.InternalActivity.class.getName()),
                startedIntent.getComponent());
        assertFalse(startedIntent.getBooleanExtra(
                ChooseLockSettingsHelper.EXTRA_KEY_RETURN_CREDENTIALS, false));
        assertTrue(startedIntent.getBooleanExtra(
                ChooseLockSettingsHelper.EXTRA_KEY_HAS_CHALLENGE, false));
        assertEquals(challenge, startedIntent.getLongExtra(
                ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE, 0L));
        assertEquals(
                false,
                (startedIntent.getFlags() & Intent.FLAG_ACTIVITY_FORWARD_RESULT) != 0);
        assertEquals(false, startedIntent.getBooleanExtra(
                ConfirmDeviceCredentialBaseFragment.ALLOW_FP_AUTHENTICATION, false));
        assertEquals(false, startedIntent.getBooleanExtra(
                ConfirmDeviceCredentialBaseFragment.DARK_THEME, false));
        assertEquals(false, startedIntent.getBooleanExtra(
                ConfirmDeviceCredentialBaseFragment.SHOW_CANCEL_BUTTON, false));
        assertEquals(false, startedIntent.getBooleanExtra(
                ConfirmDeviceCredentialBaseFragment.SHOW_WHEN_LOCKED, false));
    }

    @Test
    public void testLaunchConfirmationActivity_internal_shouldPropagateTheme() {
        Intent intent = new Intent()
                .putExtra(WizardManagerHelper.EXTRA_THEME, WizardManagerHelper.THEME_GLIF_V2);
        Activity activity = Robolectric.buildActivity(Activity.class)
                .withIntent(intent)
                .get();
        ChooseLockSettingsHelper helper = getChooseLockSettingsHelper(activity);
        helper.launchConfirmationActivity(123, "test title", true, 0 /* userId */);

        ShadowActivity shadowActivity = Shadows.shadowOf(activity);
        IntentForResult startedActivity = shadowActivity.getNextStartedActivityForResult();
        assertThat(startedActivity.requestCode).isEqualTo(123);
        assertThat(startedActivity.intent.getStringExtra(WizardManagerHelper.EXTRA_THEME))
                .isEqualTo(WizardManagerHelper.THEME_GLIF_V2);
    }


    private ChooseLockSettingsHelper getChooseLockSettingsHelper(Activity activity) {
        LockPatternUtils mockLockPatternUtils = mock(LockPatternUtils.class);
        when(mockLockPatternUtils.getKeyguardStoredPasswordQuality(anyInt()))
                .thenReturn(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);

        ChooseLockSettingsHelper helper = new ChooseLockSettingsHelper(activity);
        helper.mLockPatternUtils = mockLockPatternUtils;
        return helper;
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ import java.util.List;
 * This class provides the API 24 implementation of UserManager.get(Context).
 */
@Implements(UserManager.class)
public class ShadowUserManager {
public class ShadowUserManager extends org.robolectric.shadows.ShadowUserManager {

    private SparseArray<UserInfo> mUserInfos = new SparseArray<>();

Loading