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

Commit c1733fea authored by Galia Peycheva's avatar Galia Peycheva Committed by Android (Google) Code Review
Browse files

Merge "Add WM.setForceCrossWindowBlurDisabled TestApi" into sc-dev

parents cb3141a4 07fedbce
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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);
+2 −0
Original line number Diff line number Diff line
@@ -816,4 +816,6 @@ interface IWindowManager
     * @param listener the listener to be unregistered
     */
    void unregisterCrossWindowBlurEnabledListener(ICrossWindowBlurEnabledListener listener);

    void setForceCrossWindowBlurDisabled(boolean disable);
}
+14 −0
Original line number Diff line number Diff line
@@ -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.
+9 −0
Original line number Diff line number Diff line
@@ -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) {
        }
    }
}
+19 −11
Original line number Diff line number Diff line
@@ -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;
@@ -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--;
@@ -71,6 +81,4 @@ final class BlurController {
        }
        mBlurEnabledListeners.finishBroadcast();
    }


}
Loading