Loading services/core/java/com/android/server/wm/SensitiveContentPackages.java +11 −0 Original line number Original line Diff line number Diff line Loading @@ -55,6 +55,17 @@ public class SensitiveContentPackages { return true; return true; } } /** * Clears apps added to collection of apps in which screen capture should be disabled. * * @param packageInfos set of {@link PackageInfo} whose windows should be unblocked * from capture. * @return {@code true} if packages set is modified, {@code false} otherwise. */ public boolean removeBlockScreenCaptureForApps(@NonNull ArraySet<PackageInfo> packageInfos) { return mProtectedPackages.removeAll(packageInfos); } /** /** * Clears the set of package/uid pairs that should be blocked from screen capture * Clears the set of package/uid pairs that should be blocked from screen capture * * Loading services/core/java/com/android/server/wm/WindowManagerInternal.java +9 −0 Original line number Original line Diff line number Diff line Loading @@ -1043,6 +1043,15 @@ public abstract class WindowManagerInternal { /** /** * Clears apps added to collection of apps in which screen capture should be disabled. * Clears apps added to collection of apps in which screen capture should be disabled. * * * @param packageInfos set of {@link PackageInfo} whose windows should be unblocked * from capture. */ public abstract void removeBlockScreenCaptureForApps( @NonNull ArraySet<PackageInfo> packageInfos); /** * Clears all apps added to collection of apps in which screen capture should be disabled. * * <p> This clears and resets any existing set or added applications from * <p> This clears and resets any existing set or added applications from * * {@link #addBlockScreenCaptureForApps(ArraySet)} * * {@link #addBlockScreenCaptureForApps(ArraySet)} */ */ Loading services/core/java/com/android/server/wm/WindowManagerService.java +11 −0 Original line number Original line Diff line number Diff line Loading @@ -8631,6 +8631,17 @@ public class WindowManagerService extends IWindowManager.Stub } } } } @Override public void removeBlockScreenCaptureForApps(ArraySet<PackageInfo> packageInfos) { synchronized (mGlobalLock) { boolean modified = mSensitiveContentPackages.removeBlockScreenCaptureForApps(packageInfos); if (modified) { WindowManagerService.this.refreshScreenCaptureDisabled(); } } } @Override @Override public void clearBlockedApps() { public void clearBlockedApps() { synchronized (mGlobalLock) { synchronized (mGlobalLock) { Loading services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java +19 −0 Original line number Original line Diff line number Diff line Loading @@ -1424,6 +1424,25 @@ public class WindowStateTests extends WindowTestsBase { assertFalse(window2.isSecureLocked()); assertFalse(window2.isSecureLocked()); } } @Test @RequiresFlagsEnabled(FLAG_SENSITIVE_NOTIFICATION_APP_PROTECTION) public void testIsSecureLocked_sensitiveContentBlockOrClearScreenCaptureForApp() { String testPackage = "test"; int ownerId = 20; final WindowState window = createWindow(null, TYPE_APPLICATION, "window", ownerId); window.mAttrs.packageName = testPackage; assertFalse(window.isSecureLocked()); PackageInfo blockedPackage = new PackageInfo(testPackage, ownerId); ArraySet<PackageInfo> blockedPackages = new ArraySet(); blockedPackages.add(blockedPackage); mWm.mSensitiveContentPackages.addBlockScreenCaptureForApps(blockedPackages); assertTrue(window.isSecureLocked()); mWm.mSensitiveContentPackages.removeBlockScreenCaptureForApps(blockedPackages); assertFalse(window.isSecureLocked()); } private static class TestImeTargetChangeListener implements ImeTargetChangeListener { private static class TestImeTargetChangeListener implements ImeTargetChangeListener { private IBinder mImeTargetToken; private IBinder mImeTargetToken; private boolean mIsRemoved; private boolean mIsRemoved; Loading Loading
services/core/java/com/android/server/wm/SensitiveContentPackages.java +11 −0 Original line number Original line Diff line number Diff line Loading @@ -55,6 +55,17 @@ public class SensitiveContentPackages { return true; return true; } } /** * Clears apps added to collection of apps in which screen capture should be disabled. * * @param packageInfos set of {@link PackageInfo} whose windows should be unblocked * from capture. * @return {@code true} if packages set is modified, {@code false} otherwise. */ public boolean removeBlockScreenCaptureForApps(@NonNull ArraySet<PackageInfo> packageInfos) { return mProtectedPackages.removeAll(packageInfos); } /** /** * Clears the set of package/uid pairs that should be blocked from screen capture * Clears the set of package/uid pairs that should be blocked from screen capture * * Loading
services/core/java/com/android/server/wm/WindowManagerInternal.java +9 −0 Original line number Original line Diff line number Diff line Loading @@ -1043,6 +1043,15 @@ public abstract class WindowManagerInternal { /** /** * Clears apps added to collection of apps in which screen capture should be disabled. * Clears apps added to collection of apps in which screen capture should be disabled. * * * @param packageInfos set of {@link PackageInfo} whose windows should be unblocked * from capture. */ public abstract void removeBlockScreenCaptureForApps( @NonNull ArraySet<PackageInfo> packageInfos); /** * Clears all apps added to collection of apps in which screen capture should be disabled. * * <p> This clears and resets any existing set or added applications from * <p> This clears and resets any existing set or added applications from * * {@link #addBlockScreenCaptureForApps(ArraySet)} * * {@link #addBlockScreenCaptureForApps(ArraySet)} */ */ Loading
services/core/java/com/android/server/wm/WindowManagerService.java +11 −0 Original line number Original line Diff line number Diff line Loading @@ -8631,6 +8631,17 @@ public class WindowManagerService extends IWindowManager.Stub } } } } @Override public void removeBlockScreenCaptureForApps(ArraySet<PackageInfo> packageInfos) { synchronized (mGlobalLock) { boolean modified = mSensitiveContentPackages.removeBlockScreenCaptureForApps(packageInfos); if (modified) { WindowManagerService.this.refreshScreenCaptureDisabled(); } } } @Override @Override public void clearBlockedApps() { public void clearBlockedApps() { synchronized (mGlobalLock) { synchronized (mGlobalLock) { Loading
services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java +19 −0 Original line number Original line Diff line number Diff line Loading @@ -1424,6 +1424,25 @@ public class WindowStateTests extends WindowTestsBase { assertFalse(window2.isSecureLocked()); assertFalse(window2.isSecureLocked()); } } @Test @RequiresFlagsEnabled(FLAG_SENSITIVE_NOTIFICATION_APP_PROTECTION) public void testIsSecureLocked_sensitiveContentBlockOrClearScreenCaptureForApp() { String testPackage = "test"; int ownerId = 20; final WindowState window = createWindow(null, TYPE_APPLICATION, "window", ownerId); window.mAttrs.packageName = testPackage; assertFalse(window.isSecureLocked()); PackageInfo blockedPackage = new PackageInfo(testPackage, ownerId); ArraySet<PackageInfo> blockedPackages = new ArraySet(); blockedPackages.add(blockedPackage); mWm.mSensitiveContentPackages.addBlockScreenCaptureForApps(blockedPackages); assertTrue(window.isSecureLocked()); mWm.mSensitiveContentPackages.removeBlockScreenCaptureForApps(blockedPackages); assertFalse(window.isSecureLocked()); } private static class TestImeTargetChangeListener implements ImeTargetChangeListener { private static class TestImeTargetChangeListener implements ImeTargetChangeListener { private IBinder mImeTargetToken; private IBinder mImeTargetToken; private boolean mIsRemoved; private boolean mIsRemoved; Loading