summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/view/ViewRootImpl.java24
-rw-r--r--core/tests/coretests/src/android/view/ViewRootImplTest.java111
2 files changed, 3 insertions, 132 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 543c1efa1104..e0fda7e51c33 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -154,7 +154,6 @@ import android.os.SystemClock;
import android.os.SystemProperties;
import android.os.Trace;
import android.os.UserHandle;
-import android.provider.Settings;
import android.sysprop.DisplayProperties;
import android.text.TextUtils;
import android.util.AndroidRuntimeException;
@@ -1734,21 +1733,8 @@ public final class ViewRootImpl implements ViewParent,
return getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
}
- /** Returns true if force dark should be enabled according to various settings */
- @VisibleForTesting
- public boolean isForceDarkEnabled() {
- boolean isForceInvertEnabled = Settings.Secure.getIntForUser(
- mContext.getContentResolver(),
- Settings.Secure.ACCESSIBILITY_FORCE_INVERT_COLOR_ENABLED,
- /* def= */ 0,
- UserHandle.myUserId()) == 1;
- // Force invert ignores all developer opt-outs.
- // We also ignore dark theme, since the app developer can override the user's preference
- // for dark mode in configuration.uiMode. Instead, we assume that the force invert setting
- // will be enabled at the same time dark theme is in the Settings app.
- if (isForceInvertEnabled) {
- return true;
- }
+ private void updateForceDarkMode() {
+ if (mAttachInfo.mThreadedRenderer == null) return;
boolean useAutoDark = getNightMode() == Configuration.UI_MODE_NIGHT_YES;
@@ -1760,12 +1746,8 @@ public final class ViewRootImpl implements ViewParent,
&& a.getBoolean(R.styleable.Theme_forceDarkAllowed, forceDarkAllowedDefault);
a.recycle();
}
- return useAutoDark;
- }
- private void updateForceDarkMode() {
- if (mAttachInfo.mThreadedRenderer == null) return;
- if (mAttachInfo.mThreadedRenderer.setForceDark(isForceDarkEnabled())) {
+ if (mAttachInfo.mThreadedRenderer.setForceDark(useAutoDark)) {
// TODO: Don't require regenerating all display lists to apply this setting
invalidateWorld(mView);
}
diff --git a/core/tests/coretests/src/android/view/ViewRootImplTest.java b/core/tests/coretests/src/android/view/ViewRootImplTest.java
index bd309b94e862..2afbb476bc16 100644
--- a/core/tests/coretests/src/android/view/ViewRootImplTest.java
+++ b/core/tests/coretests/src/android/view/ViewRootImplTest.java
@@ -38,17 +38,12 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
-import static org.junit.Assume.assumeTrue;
import android.app.Instrumentation;
-import android.app.UiModeManager;
import android.content.Context;
import android.hardware.display.DisplayManagerGlobal;
import android.os.Binder;
-import android.os.SystemProperties;
import android.platform.test.annotations.Presubmit;
-import android.provider.Settings;
-import android.util.Log;
import android.view.WindowInsets.Side;
import android.view.WindowInsets.Type;
@@ -57,9 +52,6 @@ import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
import androidx.test.platform.app.InstrumentationRegistry;
-import com.android.compatibility.common.util.ShellIdentityUtils;
-
-import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
@@ -79,7 +71,6 @@ import java.util.concurrent.TimeUnit;
@SmallTest
@RunWith(AndroidJUnit4.class)
public class ViewRootImplTest {
- private static final String TAG = "ViewRootImplTest";
private ViewRootImpl mViewRootImpl;
private volatile boolean mKeyReceived = false;
@@ -110,18 +101,6 @@ public class ViewRootImplTest {
mViewRootImpl = new ViewRootImpl(sContext, sContext.getDisplayNoVerify()));
}
- @After
- public void teardown() {
- ShellIdentityUtils.invokeWithShellPermissions(() -> {
- Settings.Secure.resetToDefaults(sContext.getContentResolver(), TAG);
-
- var uiModeManager = sContext.getSystemService(UiModeManager.class);
- uiModeManager.setNightMode(UiModeManager.MODE_NIGHT_NO);
-
- setForceDarkSysProp(false);
- });
- }
-
@Test
public void adjustLayoutParamsForCompatibility_layoutFullscreen() {
final WindowManager.LayoutParams attrs = new WindowManager.LayoutParams(TYPE_APPLICATION);
@@ -421,96 +400,6 @@ public class ViewRootImplTest {
assertThat(result).isFalse();
}
- @Test
- public void forceInvertOffDarkThemeOff_forceDarkModeDisabled() {
- ShellIdentityUtils.invokeWithShellPermissions(() -> {
- Settings.Secure.putInt(
- sContext.getContentResolver(),
- Settings.Secure.ACCESSIBILITY_FORCE_INVERT_COLOR_ENABLED,
- /* value= */ 0
- );
- var uiModeManager = sContext.getSystemService(UiModeManager.class);
- uiModeManager.setNightMode(UiModeManager.MODE_NIGHT_NO);
- });
-
- sInstrumentation.runOnMainSync(() ->
- mViewRootImpl.updateConfiguration(sContext.getDisplayNoVerify().getDisplayId())
- );
-
- assertThat(mViewRootImpl.isForceDarkEnabled()).isFalse();
- }
-
- @Test
- public void forceInvertOnDarkThemeOff_forceDarkModeEnabled() {
- ShellIdentityUtils.invokeWithShellPermissions(() -> {
- Settings.Secure.putInt(
- sContext.getContentResolver(),
- Settings.Secure.ACCESSIBILITY_FORCE_INVERT_COLOR_ENABLED,
- /* value= */ 1
- );
- var uiModeManager = sContext.getSystemService(UiModeManager.class);
- uiModeManager.setNightMode(UiModeManager.MODE_NIGHT_NO);
- });
-
- sInstrumentation.runOnMainSync(() ->
- mViewRootImpl.updateConfiguration(sContext.getDisplayNoVerify().getDisplayId())
- );
-
- assertThat(mViewRootImpl.isForceDarkEnabled()).isTrue();
- }
-
- @Test
- public void forceInvertOffForceDarkOff_forceDarkModeDisabled() {
- ShellIdentityUtils.invokeWithShellPermissions(() -> {
- Settings.Secure.putInt(
- sContext.getContentResolver(),
- Settings.Secure.ACCESSIBILITY_FORCE_INVERT_COLOR_ENABLED,
- /* value= */ 0
- );
-
- // TODO(b/297556388): figure out how to set this without getting blocked by SELinux
- assumeTrue(setForceDarkSysProp(true));
- });
-
- sInstrumentation.runOnMainSync(() ->
- mViewRootImpl.updateConfiguration(sContext.getDisplayNoVerify().getDisplayId())
- );
-
- assertThat(mViewRootImpl.isForceDarkEnabled()).isFalse();
- }
-
- @Test
- public void forceInvertOffForceDarkOn_forceDarkModeEnabled() {
- ShellIdentityUtils.invokeWithShellPermissions(() -> {
- Settings.Secure.putInt(
- sContext.getContentResolver(),
- Settings.Secure.ACCESSIBILITY_FORCE_INVERT_COLOR_ENABLED,
- /* value= */ 0
- );
-
- assumeTrue(setForceDarkSysProp(true));
- });
-
- sInstrumentation.runOnMainSync(() ->
- mViewRootImpl.updateConfiguration(sContext.getDisplayNoVerify().getDisplayId())
- );
-
- assertThat(mViewRootImpl.isForceDarkEnabled()).isTrue();
- }
-
- private boolean setForceDarkSysProp(boolean isForceDarkEnabled) {
- try {
- SystemProperties.set(
- ThreadedRenderer.DEBUG_FORCE_DARK,
- Boolean.toString(isForceDarkEnabled)
- );
- return true;
- } catch (Exception e) {
- Log.e(TAG, "Failed to set force_dark sysprop", e);
- return false;
- }
- }
-
class KeyView extends View {
KeyView(Context context) {
super(context);