Enable/disable a few things in debuggable builds
- Feature flag dashboard is now only ON in debuggable builds - Draw overlay is enabled in debuggable builds for a11y testing Fixes: 129060539 Fixes: 129041251 Test: robotests Change-Id: Ic799101c8ca6cbcd26fe02b6a567f223800805ab
This commit is contained in:
@@ -22,9 +22,11 @@ import static androidx.lifecycle.Lifecycle.Event.ON_START;
|
|||||||
import static androidx.lifecycle.Lifecycle.Event.ON_STOP;
|
import static androidx.lifecycle.Lifecycle.Event.ON_STOP;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
import android.os.Build;
|
||||||
import android.view.Window;
|
import android.view.Window;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
|
|
||||||
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.lifecycle.LifecycleObserver;
|
import androidx.lifecycle.LifecycleObserver;
|
||||||
import androidx.lifecycle.OnLifecycleEvent;
|
import androidx.lifecycle.OnLifecycleEvent;
|
||||||
|
|
||||||
@@ -41,9 +43,14 @@ public class HideNonSystemOverlayMixin implements LifecycleObserver {
|
|||||||
mActivity = activity;
|
mActivity = activity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
boolean isEnabled() {
|
||||||
|
return !Build.IS_DEBUGGABLE;
|
||||||
|
}
|
||||||
|
|
||||||
@OnLifecycleEvent(ON_START)
|
@OnLifecycleEvent(ON_START)
|
||||||
public void onStart() {
|
public void onStart() {
|
||||||
if (mActivity == null) {
|
if (mActivity == null || !isEnabled()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mActivity.getWindow().addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
|
mActivity.getWindow().addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
|
||||||
@@ -53,7 +60,7 @@ public class HideNonSystemOverlayMixin implements LifecycleObserver {
|
|||||||
|
|
||||||
@OnLifecycleEvent(ON_STOP)
|
@OnLifecycleEvent(ON_STOP)
|
||||||
public void onStop() {
|
public void onStop() {
|
||||||
if (mActivity == null) {
|
if (mActivity == null || !isEnabled()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final Window window = mActivity.getWindow();
|
final Window window = mActivity.getWindow();
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
package com.android.settings.development.featureflags;
|
package com.android.settings.development.featureflags;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.os.Build;
|
||||||
import android.util.FeatureFlagUtils;
|
import android.util.FeatureFlagUtils;
|
||||||
|
|
||||||
import androidx.preference.PreferenceGroup;
|
import androidx.preference.PreferenceGroup;
|
||||||
@@ -39,7 +40,7 @@ public class FeatureFlagsPreferenceController extends BasePreferenceController
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getAvailabilityStatus() {
|
public int getAvailabilityStatus() {
|
||||||
return AVAILABLE;
|
return Build.IS_DEBUGGABLE ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -20,6 +20,7 @@ import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTE
|
|||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
|
|
||||||
@@ -33,8 +34,8 @@ import org.junit.Test;
|
|||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.robolectric.Robolectric;
|
import org.robolectric.Robolectric;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
|
||||||
import org.robolectric.android.controller.ActivityController;
|
import org.robolectric.android.controller.ActivityController;
|
||||||
|
import org.robolectric.util.ReflectionHelpers;
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
public class HideNonSystemOverlayMixinTest {
|
public class HideNonSystemOverlayMixinTest {
|
||||||
@@ -43,7 +44,6 @@ public class HideNonSystemOverlayMixinTest {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
RuntimeEnvironment.application.setTheme(R.style.Theme_AppCompat);
|
|
||||||
mActivityController = Robolectric.buildActivity(TestActivity.class);
|
mActivityController = Robolectric.buildActivity(TestActivity.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -68,10 +68,25 @@ public class HideNonSystemOverlayMixinTest {
|
|||||||
.isEqualTo(0);
|
.isEqualTo(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isEnabled_debug_false() {
|
||||||
|
ReflectionHelpers.setStaticField(Build.class, "IS_DEBUGGABLE", true);
|
||||||
|
|
||||||
|
assertThat(new HideNonSystemOverlayMixin(null).isEnabled()).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isEnabled_user_true() {
|
||||||
|
ReflectionHelpers.setStaticField(Build.class, "IS_DEBUGGABLE", false);
|
||||||
|
|
||||||
|
assertThat(new HideNonSystemOverlayMixin(null).isEnabled()).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
public static class TestActivity extends AppCompatActivity {
|
public static class TestActivity extends AppCompatActivity {
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
setTheme(R.style.Theme_AppCompat);
|
||||||
getLifecycle().addObserver(new HideNonSystemOverlayMixin(this));
|
getLifecycle().addObserver(new HideNonSystemOverlayMixin(this));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
package com.android.settings.development.featureflags;
|
package com.android.settings.development.featureflags;
|
||||||
|
|
||||||
import static com.android.settings.core.BasePreferenceController.AVAILABLE;
|
import static com.android.settings.core.BasePreferenceController.AVAILABLE;
|
||||||
|
import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
@@ -26,6 +27,8 @@ import static org.mockito.Mockito.verify;
|
|||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.os.Build;
|
||||||
|
import android.os.SystemProperties;
|
||||||
|
|
||||||
import androidx.preference.PreferenceCategory;
|
import androidx.preference.PreferenceCategory;
|
||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
@@ -37,6 +40,7 @@ import org.mockito.Mock;
|
|||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
|
import org.robolectric.util.ReflectionHelpers;
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
public class FeatureFlagPreferenceControllerTest {
|
public class FeatureFlagPreferenceControllerTest {
|
||||||
@@ -59,10 +63,18 @@ public class FeatureFlagPreferenceControllerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getAvailability_available() {
|
public void getAvailability_debug_available() {
|
||||||
|
ReflectionHelpers.setStaticField(Build.class, "IS_DEBUGGABLE", true);
|
||||||
assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
|
assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getAvailability_user_unavailable() {
|
||||||
|
ReflectionHelpers.setStaticField(Build.class, "IS_DEBUGGABLE", false);
|
||||||
|
assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onStart_shouldRefreshFeatureFlags() {
|
public void onStart_shouldRefreshFeatureFlags() {
|
||||||
mController.onStart();
|
mController.onStart();
|
||||||
|
Reference in New Issue
Block a user