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) {
|
||||
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);
|
||||
|
@@ -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(
|
||||
|
Reference in New Issue
Block a user