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
This commit is contained in:
@@ -187,6 +187,15 @@ public class SettingsHomepageActivity extends FragmentActivity implements
|
|||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(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);
|
mIsEmbeddingActivityEnabled = ActivityEmbeddingUtils.isEmbeddingActivityEnabled(this);
|
||||||
if (mIsEmbeddingActivityEnabled) {
|
if (mIsEmbeddingActivityEnabled) {
|
||||||
final UserManager um = getSystemService(UserManager.class);
|
final UserManager um = getSystemService(UserManager.class);
|
||||||
|
@@ -38,6 +38,7 @@ import android.content.Intent;
|
|||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
|
import android.provider.Settings;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.Window;
|
import android.view.Window;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
@@ -54,6 +55,7 @@ import com.android.settings.testutils.shadow.ShadowUserManager;
|
|||||||
import com.android.settingslib.core.lifecycle.HideNonSystemOverlayMixin;
|
import com.android.settingslib.core.lifecycle.HideNonSystemOverlayMixin;
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
|
import org.junit.Before;
|
||||||
import org.junit.Rule;
|
import org.junit.Rule;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
@@ -80,11 +82,28 @@ public class SettingsHomepageActivityTest {
|
|||||||
@Rule
|
@Rule
|
||||||
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
|
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setup() {
|
||||||
|
Settings.Global.putInt(ApplicationProvider.getApplicationContext().getContentResolver(),
|
||||||
|
Settings.Global.DEVICE_PROVISIONED, 1);
|
||||||
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
public void tearDown() {
|
public void tearDown() {
|
||||||
ShadowPasswordUtils.reset();
|
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
|
@Test
|
||||||
public void launch_shouldHaveAnimationForIaFragment() {
|
public void launch_shouldHaveAnimationForIaFragment() {
|
||||||
final SettingsHomepageActivity activity = Robolectric.buildActivity(
|
final SettingsHomepageActivity activity = Robolectric.buildActivity(
|
||||||
|
Reference in New Issue
Block a user