OSDN Git Service

Enable/disable a few things in debuggable builds
authorFan Zhang <zhfan@google.com>
Tue, 26 Mar 2019 18:39:47 +0000 (11:39 -0700)
committerFan Zhang <zhfan@google.com>
Tue, 26 Mar 2019 19:11:35 +0000 (12:11 -0700)
- 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

src/com/android/settings/core/HideNonSystemOverlayMixin.java
src/com/android/settings/development/featureflags/FeatureFlagsPreferenceController.java
tests/robotests/src/com/android/settings/core/HideNonSystemOverlayMixinTest.java
tests/robotests/src/com/android/settings/development/featureflags/FeatureFlagPreferenceControllerTest.java

index 59cef3b..4b8975d 100644 (file)
@@ -22,9 +22,11 @@ import static androidx.lifecycle.Lifecycle.Event.ON_START;
 import static androidx.lifecycle.Lifecycle.Event.ON_STOP;
 
 import android.app.Activity;
+import android.os.Build;
 import android.view.Window;
 import android.view.WindowManager;
 
+import androidx.annotation.VisibleForTesting;
 import androidx.lifecycle.LifecycleObserver;
 import androidx.lifecycle.OnLifecycleEvent;
 
@@ -41,9 +43,14 @@ public class HideNonSystemOverlayMixin implements LifecycleObserver {
         mActivity = activity;
     }
 
+    @VisibleForTesting
+    boolean isEnabled() {
+        return !Build.IS_DEBUGGABLE;
+    }
+
     @OnLifecycleEvent(ON_START)
     public void onStart() {
-        if (mActivity == null) {
+        if (mActivity == null || !isEnabled()) {
             return;
         }
         mActivity.getWindow().addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
@@ -53,7 +60,7 @@ public class HideNonSystemOverlayMixin implements LifecycleObserver {
 
     @OnLifecycleEvent(ON_STOP)
     public void onStop() {
-        if (mActivity == null) {
+        if (mActivity == null || !isEnabled()) {
             return;
         }
         final Window window = mActivity.getWindow();
index 638c7c1..94636e9 100644 (file)
@@ -17,6 +17,7 @@
 package com.android.settings.development.featureflags;
 
 import android.content.Context;
+import android.os.Build;
 import android.util.FeatureFlagUtils;
 
 import androidx.preference.PreferenceGroup;
@@ -39,7 +40,7 @@ public class FeatureFlagsPreferenceController extends BasePreferenceController
 
     @Override
     public int getAvailabilityStatus() {
-        return AVAILABLE;
+        return Build.IS_DEBUGGABLE ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
     }
 
     @Override
index 579cba0..d4f43e2 100644 (file)
@@ -20,6 +20,7 @@ import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTE
 
 import static com.google.common.truth.Truth.assertThat;
 
+import android.os.Build;
 import android.os.Bundle;
 import android.view.WindowManager;
 
@@ -33,8 +34,8 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.Robolectric;
 import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 import org.robolectric.android.controller.ActivityController;
+import org.robolectric.util.ReflectionHelpers;
 
 @RunWith(RobolectricTestRunner.class)
 public class HideNonSystemOverlayMixinTest {
@@ -43,7 +44,6 @@ public class HideNonSystemOverlayMixinTest {
 
     @Before
     public void setUp() {
-        RuntimeEnvironment.application.setTheme(R.style.Theme_AppCompat);
         mActivityController = Robolectric.buildActivity(TestActivity.class);
     }
 
@@ -68,10 +68,25 @@ public class HideNonSystemOverlayMixinTest {
                 .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 {
         @Override
         protected void onCreate(@Nullable Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
+            setTheme(R.style.Theme_AppCompat);
             getLifecycle().addObserver(new HideNonSystemOverlayMixin(this));
         }
     }
index 2e15967..cf97544 100644 (file)
@@ -17,6 +17,7 @@
 package com.android.settings.development.featureflags;
 
 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;
 
@@ -26,6 +27,8 @@ import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 import android.content.Context;
+import android.os.Build;
+import android.os.SystemProperties;
 
 import androidx.preference.PreferenceCategory;
 import androidx.preference.PreferenceScreen;
@@ -37,6 +40,7 @@ import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
+import org.robolectric.util.ReflectionHelpers;
 
 @RunWith(RobolectricTestRunner.class)
 public class FeatureFlagPreferenceControllerTest {
@@ -59,10 +63,18 @@ public class FeatureFlagPreferenceControllerTest {
     }
 
     @Test
-    public void getAvailability_available() {
+    public void getAvailability_debug_available() {
+        ReflectionHelpers.setStaticField(Build.class, "IS_DEBUGGABLE", true);
         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
     public void onStart_shouldRefreshFeatureFlags() {
         mController.onStart();