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

Commit 70a5a0fd authored by Chris Antol's avatar Chris Antol
Browse files

Restrict Settings Homepage prior to provisioning

Bug: 327749022
Test: manual test
1. factory reset + launch Settings via ADB during Setup -> verify app closes
2. factory reset + bypass Setup + tap Settings icon in launcher -> verify app closes

Change-Id: I8cbe38109ebf88a0f68f3917e95468a81c6463c1
parent 6263205f
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -187,6 +187,15 @@ public class SettingsHomepageActivity extends FragmentActivity implements
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Ensure device is provisioned in order to access Settings home
        // TODO(b/331254029): This should later be replaced in favor of an allowlist
        boolean unprovisioned = android.provider.Settings.Global.getInt(getContentResolver(),
                android.provider.Settings.Global.DEVICE_PROVISIONED, 0) == 0;
        if (unprovisioned) {
            Log.e(TAG, "Device is not provisioned, exiting Settings");
            finish();
        }

        mIsEmbeddingActivityEnabled = ActivityEmbeddingUtils.isEmbeddingActivityEnabled(this);
        if (mIsEmbeddingActivityEnabled) {
            final UserManager um = getSystemService(UserManager.class);
+19 −0
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.provider.Settings;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
@@ -54,6 +55,7 @@ import com.android.settings.testutils.shadow.ShadowUserManager;
import com.android.settingslib.core.lifecycle.HideNonSystemOverlayMixin;

import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -80,11 +82,28 @@ public class SettingsHomepageActivityTest {
    @Rule
    public final MockitoRule mMockitoRule = MockitoJUnit.rule();

    @Before
    public void setup() {
        Settings.Global.putInt(ApplicationProvider.getApplicationContext().getContentResolver(),
                Settings.Global.DEVICE_PROVISIONED, 1);
    }

    @After
    public void tearDown() {
        ShadowPasswordUtils.reset();
    }

    @Test
    public void launch_deviceUnprovisioned_finish() {
        Settings.Global.putInt(ApplicationProvider.getApplicationContext().getContentResolver(),
                Settings.Global.DEVICE_PROVISIONED, 0);

        SettingsHomepageActivity activity = Robolectric.buildActivity(
                SettingsHomepageActivity.class).create().get();

        assertThat(activity.isFinishing()).isTrue();
    }

    @Test
    public void launch_shouldHaveAnimationForIaFragment() {
        final SettingsHomepageActivity activity = Robolectric.buildActivity(