diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowManagerService.java | 4 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java | 55 |
2 files changed, 57 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 88b2d229e083..93b887e3266e 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -1022,12 +1022,12 @@ public class WindowManagerService extends IWindowManager.Stub return; } - final boolean disableSecureWindows; + boolean disableSecureWindows; try { disableSecureWindows = Settings.Secure.getIntForUser(mContext.getContentResolver(), Settings.Secure.DISABLE_SECURE_WINDOWS, 0) != 0; } catch (Settings.SettingNotFoundException e) { - return; + disableSecureWindows = false; } if (mDisableSecureWindows == disableSecureWindows) { return; diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java index 1750a14e0561..f06a1a4e1b13 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java @@ -71,6 +71,7 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; +import static org.junit.Assume.assumeTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; @@ -84,12 +85,14 @@ import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.when; +import android.content.ContentResolver; import android.content.res.CompatibilityInfo; import android.content.res.Configuration; import android.graphics.Matrix; import android.graphics.Point; import android.graphics.Rect; import android.graphics.Region; +import android.os.Build; import android.os.IBinder; import android.os.InputConfig; import android.os.RemoteException; @@ -97,6 +100,7 @@ import android.platform.test.annotations.DisableFlags; import android.platform.test.annotations.EnableFlags; import android.platform.test.annotations.Presubmit; import android.platform.test.annotations.RequiresFlagsEnabled; +import android.provider.Settings; import android.util.ArraySet; import android.util.MergedConfiguration; import android.view.Gravity; @@ -1534,6 +1538,57 @@ public class WindowStateTests extends WindowTestsBase { } @Test + public void testIsSecureLocked_flagSecureSet() { + WindowState window = createWindow(null /* parent */, TYPE_APPLICATION, "test-window", + 1 /* ownerId */); + window.mAttrs.flags |= WindowManager.LayoutParams.FLAG_SECURE; + + assertTrue(window.isSecureLocked()); + } + + @Test + public void testIsSecureLocked_flagSecureNotSet() { + WindowState window = createWindow(null /* parent */, TYPE_APPLICATION, "test-window", + 1 /* ownerId */); + + assertFalse(window.isSecureLocked()); + } + + @Test + public void testIsSecureLocked_disableSecureWindows() { + assumeTrue(Build.IS_DEBUGGABLE); + + WindowState window = createWindow(null /* parent */, TYPE_APPLICATION, "test-window", + 1 /* ownerId */); + window.mAttrs.flags |= WindowManager.LayoutParams.FLAG_SECURE; + ContentResolver cr = useFakeSettingsProvider(); + + // isSecureLocked should return false when DISABLE_SECURE_WINDOWS is set to 1 + Settings.Secure.putString(cr, Settings.Secure.DISABLE_SECURE_WINDOWS, "1"); + mWm.mSettingsObserver.onChange(false /* selfChange */, + Settings.Secure.getUriFor(Settings.Secure.DISABLE_SECURE_WINDOWS)); + assertFalse(window.isSecureLocked()); + + // isSecureLocked should return true if DISABLE_SECURE_WINDOWS is set to 0. + Settings.Secure.putString(cr, Settings.Secure.DISABLE_SECURE_WINDOWS, "0"); + mWm.mSettingsObserver.onChange(false /* selfChange */, + Settings.Secure.getUriFor(Settings.Secure.DISABLE_SECURE_WINDOWS)); + assertTrue(window.isSecureLocked()); + + // Disable secure windows again. + Settings.Secure.putString(cr, Settings.Secure.DISABLE_SECURE_WINDOWS, "1"); + mWm.mSettingsObserver.onChange(false /* selfChange */, + Settings.Secure.getUriFor(Settings.Secure.DISABLE_SECURE_WINDOWS)); + assertFalse(window.isSecureLocked()); + + // isSecureLocked should return true if DISABLE_SECURE_WINDOWS is deleted. + Settings.Secure.putString(cr, Settings.Secure.DISABLE_SECURE_WINDOWS, null); + mWm.mSettingsObserver.onChange(false /* selfChange */, + Settings.Secure.getUriFor(Settings.Secure.DISABLE_SECURE_WINDOWS)); + assertTrue(window.isSecureLocked()); + } + + @Test @RequiresFlagsEnabled(FLAG_SENSITIVE_NOTIFICATION_APP_PROTECTION) public void testIsSecureLocked_sensitiveContentProtectionManagerEnabled() { String testPackage = "test"; |