Merge "Add a setting for allowing overlays on Settings app" into rvc-dev am: 8ab31819e0
am: b05ab42331
am: 0ee853f913
am: dca77b296a
Original change: undetermined Change-Id: I3facd684220dc4de38c9bbe4f86a1e584b84f74e
This commit is contained in:
@@ -20,7 +20,8 @@ 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.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.view.WindowManager;
|
||||
|
||||
@@ -28,6 +29,7 @@ import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.development.OverlaySettingsPreferenceController;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -35,7 +37,6 @@ import org.junit.runner.RunWith;
|
||||
import org.robolectric.Robolectric;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.android.controller.ActivityController;
|
||||
import org.robolectric.util.ReflectionHelpers;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
public class HideNonSystemOverlayMixinTest {
|
||||
@@ -69,17 +70,27 @@ public class HideNonSystemOverlayMixinTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isEnabled_debug_false() {
|
||||
ReflectionHelpers.setStaticField(Build.class, "IS_DEBUGGABLE", true);
|
||||
public void isEnabled_isAllowedOverlaySettings_returnFalse() {
|
||||
mActivityController.setup();
|
||||
final TestActivity activity = mActivityController.get();
|
||||
final SharedPreferences editor = activity.getSharedPreferences(
|
||||
OverlaySettingsPreferenceController.SHARE_PERFS,
|
||||
Context.MODE_PRIVATE);
|
||||
editor.edit().putBoolean(OverlaySettingsPreferenceController.SHARE_PERFS, true).apply();
|
||||
|
||||
assertThat(new HideNonSystemOverlayMixin(null).isEnabled()).isFalse();
|
||||
assertThat(new HideNonSystemOverlayMixin(activity).isEnabled()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isEnabled_user_true() {
|
||||
ReflectionHelpers.setStaticField(Build.class, "IS_DEBUGGABLE", false);
|
||||
public void isEnabled_isNotAllowedOverlaySettings_returnTrue() {
|
||||
mActivityController.setup();
|
||||
TestActivity activity = mActivityController.get();
|
||||
final SharedPreferences editor = activity.getSharedPreferences(
|
||||
OverlaySettingsPreferenceController.SHARE_PERFS,
|
||||
Context.MODE_PRIVATE);
|
||||
editor.edit().putBoolean(OverlaySettingsPreferenceController.SHARE_PERFS, false).apply();
|
||||
|
||||
assertThat(new HideNonSystemOverlayMixin(null).isEnabled()).isTrue();
|
||||
assertThat(new HideNonSystemOverlayMixin(activity).isEnabled()).isTrue();
|
||||
}
|
||||
|
||||
public static class TestActivity extends AppCompatActivity {
|
||||
|
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
* Copyright (C) 2020 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.development;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
|
||||
import androidx.preference.SwitchPreference;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
public class OverlaySettingsPreferenceControllerTest {
|
||||
|
||||
private Context mContext;
|
||||
private SwitchPreference mPreference;
|
||||
private OverlaySettingsPreferenceController mController;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
mContext = RuntimeEnvironment.application;
|
||||
mController = new OverlaySettingsPreferenceController(mContext);
|
||||
mPreference = new SwitchPreference(mContext);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isAvailable_shouldReturnTrue() {
|
||||
assertThat(mController.isAvailable()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_isOverlaySettingsEnabled_shouldCheckPreference() {
|
||||
OverlaySettingsPreferenceController.setOverlaySettingsEnabled(mContext, true);
|
||||
|
||||
mController.updateState(mPreference);
|
||||
|
||||
assertThat(mPreference.isChecked()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_isOverlaySettingsDisabled_shouldUncheckPreference() {
|
||||
OverlaySettingsPreferenceController.setOverlaySettingsEnabled(mContext, false);
|
||||
|
||||
mController.updateState(mPreference);
|
||||
|
||||
assertThat(mPreference.isChecked()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onPreferenceChange_preferenceChecked_shouldEnableSettings() {
|
||||
mController.onPreferenceChange(mPreference, true);
|
||||
|
||||
assertThat(OverlaySettingsPreferenceController.isOverlaySettingsEnabled(mContext)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onPreferenceChange_preferenceUnchecked_shouldDisableSettings() {
|
||||
mController.onPreferenceChange(mPreference, false);
|
||||
|
||||
assertThat(
|
||||
OverlaySettingsPreferenceController.isOverlaySettingsEnabled(mContext)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isOverlaySettingsEnabled_sharePreferenceSetTrue_shouldReturnTrue() {
|
||||
final SharedPreferences editor = mContext.getSharedPreferences(
|
||||
OverlaySettingsPreferenceController.SHARE_PERFS,
|
||||
Context.MODE_PRIVATE);
|
||||
editor.edit().putBoolean(OverlaySettingsPreferenceController.SHARE_PERFS, true).apply();
|
||||
|
||||
assertThat(OverlaySettingsPreferenceController.isOverlaySettingsEnabled(mContext)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isOverlaySettingsEnabled_sharePreferenceSetFalse_shouldReturnFalse() {
|
||||
final SharedPreferences editor = mContext.getSharedPreferences(
|
||||
OverlaySettingsPreferenceController.SHARE_PERFS,
|
||||
Context.MODE_PRIVATE);
|
||||
editor.edit().putBoolean(OverlaySettingsPreferenceController.SHARE_PERFS, false).apply();
|
||||
|
||||
assertThat(
|
||||
OverlaySettingsPreferenceController.isOverlaySettingsEnabled(mContext)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setOverlaySettingsEnabled_setTrue_shouldStoreTrue() {
|
||||
OverlaySettingsPreferenceController.setOverlaySettingsEnabled(mContext, true);
|
||||
|
||||
assertThat(
|
||||
OverlaySettingsPreferenceController.isOverlaySettingsEnabled(mContext)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setOverlaySettingsEnabled_setFalse_shouldStoreTrue() {
|
||||
OverlaySettingsPreferenceController.setOverlaySettingsEnabled(mContext, false);
|
||||
|
||||
assertThat(
|
||||
OverlaySettingsPreferenceController.isOverlaySettingsEnabled(mContext)).isFalse();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user