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

Commit c7e0fd90 authored by Maurice Lam's avatar Maurice Lam
Browse files

Enable redaction interstitial after setting up pattern

Test: cd tests/robotests && mma
Bug: 37514884
Change-Id: Ie9342ca0ea893a687284d8b864c6d53a79f88086
parent 09317a65
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -75,7 +75,7 @@ public class SetupChooseLockPattern extends ChooseLockPattern {
        protected Intent getRedactionInterstitialIntent(Context context) {
            // Setup wizard's redaction interstitial is deferred to optional step. Enable that
            // optional step if the lock screen was set up.
            SetupRedactionInterstitial.setEnabled(context, false);
            SetupRedactionInterstitial.setEnabled(context, true);
            return null;
        }
    }
+16 −0
Original line number Diff line number Diff line
@@ -77,6 +77,22 @@ public class SettingsRobolectricTestRunner extends RobolectricTestRunner {
                        getPackageName(),
                        Fs.fileFromPath("./frameworks/base/core/res/res"),
                        null));
                paths.add(new ResourcePath(
                        getPackageName(),
                        Fs.fileFromPath("./frameworks/opt/setupwizard/library/main/res"),
                        null));
                paths.add(new ResourcePath(
                        getPackageName(),
                        Fs.fileFromPath("./frameworks/opt/setupwizard/library/gingerbread/res"),
                        null));
                paths.add(new ResourcePath(
                        getPackageName(),
                        Fs.fileFromPath("./frameworks/opt/setupwizard/library/recyclerview/res"),
                        null));
                paths.add(new ResourcePath(
                        getPackageName(),
                        Fs.fileFromPath("./frameworks/support/v7/appcompat/res"),
                        null));
                return paths;
            }
        };
+89 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2017 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License
 */

package com.android.settings;

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

import static org.robolectric.RuntimeEnvironment.application;

import android.app.Activity;
import android.content.ComponentName;
import android.content.pm.PackageManager;
import android.os.UserHandle;

import com.android.settings.ChooseLockPattern.ChooseLockPatternFragment;
import com.android.settings.testutils.shadow.SettingsShadowResources;
import com.android.settings.testutils.shadow.ShadowDynamicIndexableContentMonitor;
import com.android.settings.testutils.shadow.ShadowEventLogWriter;
import com.android.settings.testutils.shadow.ShadowUtils;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.res.builder.RobolectricPackageManager.ComponentState;

@RunWith(SettingsRobolectricTestRunner.class)
@Config(
        manifest = TestConfig.MANIFEST_PATH,
        sdk = TestConfig.SDK_VERSION,
        shadows = {
                SettingsShadowResources.class,
                SettingsShadowResources.SettingsShadowTheme.class,
                ShadowDynamicIndexableContentMonitor.class,
                ShadowEventLogWriter.class,
                ShadowUtils.class
        })
public class SetupChooseLockPatternTest {

    private SetupChooseLockPattern mActivity;

    @Before
    public void setUp() {
        RuntimeEnvironment.getRobolectricPackageManager().setComponentEnabledSetting(
                new ComponentName(application, SetupRedactionInterstitial.class),
                PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
                PackageManager.DONT_KILL_APP);

        mActivity =  Robolectric.buildActivity(
                SetupChooseLockPattern.class,
                SetupChooseLockPattern.createIntent(
                        application,
                        false, /* requirePassword */
                        false, /* confirmCredentials */
                        UserHandle.myUserId()))
                .setup().get();
    }

    @Test
    public void chooseLockSaved_shouldEnableRedactionInterstitial() {
        findFragment(mActivity).onChosenLockSaveFinished(false, null);

        ComponentState redactionComponentState =
                RuntimeEnvironment.getRobolectricPackageManager().getComponentState(
                        new ComponentName(application, SetupRedactionInterstitial.class));
        assertThat(redactionComponentState.newState).named("Redaction component state")
                .isEqualTo(PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
    }

    private ChooseLockPatternFragment findFragment(Activity activity) {
        return (ChooseLockPatternFragment)
                activity.getFragmentManager().findFragmentById(R.id.main_content);
    }
}
+33 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2017 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.settings.testutils.shadow;

import android.content.Context;

import com.android.settings.Utils;

import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;

@Implements(Utils.class)
public class ShadowUtils {

    @Implementation
    public static int enforceSameOwner(Context context, int userId) {
        return userId;
    }
}