Loading core/api/test-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -2548,6 +2548,7 @@ package android.view { method public default int getDisplayImePolicy(int); method public default void holdLock(android.os.IBinder, int); method public default void setDisplayImePolicy(int, int); method public default void setForceCrossWindowBlurDisabled(boolean); method public default void setShouldShowSystemDecors(int, boolean); method public default void setShouldShowWithInsecureKeyguard(int, boolean); method public default boolean shouldShowSystemDecors(int); Loading core/java/android/view/IWindowManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -816,4 +816,6 @@ interface IWindowManager * @param listener the listener to be unregistered */ void unregisterCrossWindowBlurEnabledListener(ICrossWindowBlurEnabledListener listener); void setForceCrossWindowBlurDisabled(boolean disable); } core/java/android/view/WindowManager.java +14 −0 Original line number Diff line number Diff line Loading @@ -873,6 +873,20 @@ public interface WindowManager extends ViewManager { default void removeCrossWindowBlurEnabledListener(@NonNull Consumer<Boolean> listener) { } /** * Disables cross-window blurs device-wide. This includes window blur behind * (see {@link LayoutParams#setBlurBehindRadius}) and window background blur * (see {@link Window#setBackgroundBlurRadius}). * * @param disable specifies whether to disable the blur. Note that calling this * with 'disable=false' will not enable blurs if there is something * else disabling blurs. * @hide */ @TestApi default void setForceCrossWindowBlurDisabled(boolean disable) { } public static class LayoutParams extends ViewGroup.LayoutParams implements Parcelable { /** * X position for this window. With the default gravity it is ignored. Loading core/java/android/view/WindowManagerImpl.java +9 −0 Original line number Diff line number Diff line Loading @@ -317,4 +317,13 @@ public final class WindowManagerImpl implements WindowManager { public void removeCrossWindowBlurEnabledListener(@NonNull Consumer<Boolean> listener) { CrossWindowBlurListeners.getInstance().removeListener(listener); } @Override public void setForceCrossWindowBlurDisabled(boolean disable) { try { WindowManagerGlobal.getWindowManagerService() .setForceCrossWindowBlurDisabled(disable); } catch (RemoteException e) { } } } services/core/java/com/android/server/wm/BlurController.java +19 −11 Original line number Diff line number Diff line Loading @@ -22,12 +22,17 @@ import android.os.RemoteCallbackList; import android.os.RemoteException; import android.view.ICrossWindowBlurEnabledListener; import com.android.internal.annotations.GuardedBy; final class BlurController { private final RemoteCallbackList<ICrossWindowBlurEnabledListener> mBlurEnabledListeners = new RemoteCallbackList<>(); private final Object mLock = new Object(); @GuardedBy("mLock") boolean mBlurEnabled; @GuardedBy("mLock") boolean mBlurForceDisabled; BlurController() { mBlurEnabled = CROSS_WINDOW_BLUR_SUPPORTED; Loading @@ -46,19 +51,24 @@ final class BlurController { mBlurEnabledListeners.unregister(listener); } private void updateBlurEnabled() { // TODO: add other factors disabling blurs final boolean newEnabled = CROSS_WINDOW_BLUR_SUPPORTED; void setForceCrossWindowBlurDisabled(boolean disable) { synchronized (mLock) { mBlurForceDisabled = disable; updateBlurEnabledLocked(); } } private void updateBlurEnabledLocked() { final boolean newEnabled = CROSS_WINDOW_BLUR_SUPPORTED && !mBlurForceDisabled; if (mBlurEnabled == newEnabled) { return; } mBlurEnabled = newEnabled; notifyBlurEnabledChanged(newEnabled); } notifyBlurEnabledChangedLocked(newEnabled); } private void notifyBlurEnabledChanged(boolean enabled) { private void notifyBlurEnabledChangedLocked(boolean enabled) { int i = mBlurEnabledListeners.beginBroadcast(); while (i > 0) { i--; Loading @@ -71,6 +81,4 @@ final class BlurController { } mBlurEnabledListeners.finishBroadcast(); } } Loading
core/api/test-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -2548,6 +2548,7 @@ package android.view { method public default int getDisplayImePolicy(int); method public default void holdLock(android.os.IBinder, int); method public default void setDisplayImePolicy(int, int); method public default void setForceCrossWindowBlurDisabled(boolean); method public default void setShouldShowSystemDecors(int, boolean); method public default void setShouldShowWithInsecureKeyguard(int, boolean); method public default boolean shouldShowSystemDecors(int); Loading
core/java/android/view/IWindowManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -816,4 +816,6 @@ interface IWindowManager * @param listener the listener to be unregistered */ void unregisterCrossWindowBlurEnabledListener(ICrossWindowBlurEnabledListener listener); void setForceCrossWindowBlurDisabled(boolean disable); }
core/java/android/view/WindowManager.java +14 −0 Original line number Diff line number Diff line Loading @@ -873,6 +873,20 @@ public interface WindowManager extends ViewManager { default void removeCrossWindowBlurEnabledListener(@NonNull Consumer<Boolean> listener) { } /** * Disables cross-window blurs device-wide. This includes window blur behind * (see {@link LayoutParams#setBlurBehindRadius}) and window background blur * (see {@link Window#setBackgroundBlurRadius}). * * @param disable specifies whether to disable the blur. Note that calling this * with 'disable=false' will not enable blurs if there is something * else disabling blurs. * @hide */ @TestApi default void setForceCrossWindowBlurDisabled(boolean disable) { } public static class LayoutParams extends ViewGroup.LayoutParams implements Parcelable { /** * X position for this window. With the default gravity it is ignored. Loading
core/java/android/view/WindowManagerImpl.java +9 −0 Original line number Diff line number Diff line Loading @@ -317,4 +317,13 @@ public final class WindowManagerImpl implements WindowManager { public void removeCrossWindowBlurEnabledListener(@NonNull Consumer<Boolean> listener) { CrossWindowBlurListeners.getInstance().removeListener(listener); } @Override public void setForceCrossWindowBlurDisabled(boolean disable) { try { WindowManagerGlobal.getWindowManagerService() .setForceCrossWindowBlurDisabled(disable); } catch (RemoteException e) { } } }
services/core/java/com/android/server/wm/BlurController.java +19 −11 Original line number Diff line number Diff line Loading @@ -22,12 +22,17 @@ import android.os.RemoteCallbackList; import android.os.RemoteException; import android.view.ICrossWindowBlurEnabledListener; import com.android.internal.annotations.GuardedBy; final class BlurController { private final RemoteCallbackList<ICrossWindowBlurEnabledListener> mBlurEnabledListeners = new RemoteCallbackList<>(); private final Object mLock = new Object(); @GuardedBy("mLock") boolean mBlurEnabled; @GuardedBy("mLock") boolean mBlurForceDisabled; BlurController() { mBlurEnabled = CROSS_WINDOW_BLUR_SUPPORTED; Loading @@ -46,19 +51,24 @@ final class BlurController { mBlurEnabledListeners.unregister(listener); } private void updateBlurEnabled() { // TODO: add other factors disabling blurs final boolean newEnabled = CROSS_WINDOW_BLUR_SUPPORTED; void setForceCrossWindowBlurDisabled(boolean disable) { synchronized (mLock) { mBlurForceDisabled = disable; updateBlurEnabledLocked(); } } private void updateBlurEnabledLocked() { final boolean newEnabled = CROSS_WINDOW_BLUR_SUPPORTED && !mBlurForceDisabled; if (mBlurEnabled == newEnabled) { return; } mBlurEnabled = newEnabled; notifyBlurEnabledChanged(newEnabled); } notifyBlurEnabledChangedLocked(newEnabled); } private void notifyBlurEnabledChanged(boolean enabled) { private void notifyBlurEnabledChangedLocked(boolean enabled) { int i = mBlurEnabledListeners.beginBroadcast(); while (i > 0) { i--; Loading @@ -71,6 +81,4 @@ final class BlurController { } mBlurEnabledListeners.finishBroadcast(); } }