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

Commit d151c40e authored by Fan Zhang's avatar Fan Zhang
Browse files

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
parent cd0b74d7
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -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();
+2 −1
Original line number Diff line number Diff line
@@ -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
+17 −2
Original line number Diff line number Diff line
@@ -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));
        }
    }
+13 −1
Original line number Diff line number Diff line
@@ -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();