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

Commit 7d800e71 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix handling of disable_secure_windows setting deletion" into main

parents df5c89ca 0e8d27fb
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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;
+55 −0
Original line number Diff line number Diff line
@@ -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;
@@ -1556,6 +1560,57 @@ public class WindowStateTests extends WindowTestsBase {
                mDisplayContent.getDisplayId());
    }

    @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() {