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

Commit 7fe1a92c authored by Galia Peycheva's avatar Galia Peycheva
Browse files

Make WM.LP.blurBehindRadius a setter+getter

Bug: 181014794
Test: m && atest BlurTests
CTS-Coverage-Bug: 179990440
Change-Id: I3d8ceddcf1219df8decbbb0bf9a6bbb9d41799fb
parent fdcfd2a2
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -50181,12 +50181,14 @@ package android.view {
    method public final int copyFrom(android.view.WindowManager.LayoutParams);
    method public String debug(String);
    method public int describeContents();
    method public int getBlurBehindRadius();
    method public int getColorMode();
    method public int getFitInsetsSides();
    method public int getFitInsetsTypes();
    method public final CharSequence getTitle();
    method public boolean isFitInsetsIgnoringVisibility();
    method public static boolean mayUseInputMethod(int);
    method public void setBlurBehindRadius(@IntRange(from=0) int);
    method public void setColorMode(int);
    method public void setFitInsetsIgnoringVisibility(boolean);
    method public void setFitInsetsSides(int);
@@ -50297,7 +50299,6 @@ package android.view {
    field @Deprecated public static final int TYPE_TOAST = 2005; // 0x7d5
    field public static final int TYPE_WALLPAPER = 2013; // 0x7dd
    field public float alpha;
    field public int blurBehindRadius;
    field public float buttonBrightness;
    field public float dimAmount;
    field public int flags;
+2 −1
Original line number Diff line number Diff line
@@ -1716,13 +1716,14 @@ public abstract class Window {
     * For the blur region to be visible, the window has to be translucent. See
     * {@link android.R.styleable#Window_windowIsTranslucent}.
     *
     * Note the difference with {@link android.view.WindowManager.LayoutParams#blurBehindRadius},
     * Note the difference with {@link WindowManager.LayoutParams#setBlurBehindRadius},
     * which blurs the whole screen behind the window. Background blur blurs the screen behind
     * only within the bounds of the window.
     *
     * @param blurRadius The blur radius to use for window background blur in pixels
     *
     * @see android.R.styleable#Window_windowBackgroundBlurRadius
     * @see WindowManager.LayoutParams#setBlurBehindRadius
     */
    public void setBackgroundBlurRadius(int blurRadius) {}

+45 −10
Original line number Diff line number Diff line
@@ -82,6 +82,7 @@ import static android.view.WindowLayoutParamsProto.Y;

import android.Manifest.permission;
import android.annotation.IntDef;
import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
@@ -3238,9 +3239,9 @@ public interface WindowManager extends ViewManager {
         * The blur behind radius range starts at 0, which means no blur, and increases until 150
         * for the densest blur.
         *
         * @see #FLAG_BLUR_BEHIND
         * @see #setBlurBehindRadius
         */
        public int blurBehindRadius = 0;
        private int mBlurBehindRadius = 0;

        /**
         * The color mode requested by this window. The target display may
@@ -3534,6 +3535,40 @@ public interface WindowManager extends ViewManager {
            return mColorMode;
        }

        /**
         * Blurs the screen behind the window. The effect is similar to that of {@link #dimAmount},
         * but instead of dimmed, the content behind the window will be blurred.
         *
         * The density of the blur is set by the blur radius. The radius defines the size
         * of the neighbouring area, from which pixels will be averaged to form the final
         * color for each pixel. The operation approximates a Gaussian blur.
         * A radius of 0 means no blur. The higher the radius, the denser the blur.
         *
         * Note the difference with {@link android.view.Window#setBackgroundBlurRadius},
         * which blurs only within the bounds of the window. Blur behind blurs the whole screen
         * behind the window.
         *
         * Requires {@link #FLAG_BLUR_BEHIND} to be set.
         *
         * @param blurBehindRadius The blur radius to use for blur behind in pixels
         *
         * @see #FLAG_BLUR_BEHIND
         * @see #getBlurBehindRadius
         * @see Window#setBackgroundBlurRadius
         */
        public void setBlurBehindRadius(@IntRange(from = 0) int blurBehindRadius) {
            mBlurBehindRadius = blurBehindRadius;
        }

        /**
         * Returns the blur behind radius of the window.
         *
         * @see #setBlurBehindRadius
         */
        public int getBlurBehindRadius() {
            return mBlurBehindRadius;
        }

        /** @hide */
        @SystemApi
        public final void setUserActivityTimeout(long timeout) {
@@ -3629,7 +3664,7 @@ public interface WindowManager extends ViewManager {
            out.writeInt(mFitInsetsSides);
            out.writeBoolean(mFitInsetsIgnoringVisibility);
            out.writeBoolean(preferMinimalPostProcessing);
            out.writeInt(blurBehindRadius);
            out.writeInt(mBlurBehindRadius);
            if (providesInsetsTypes != null) {
                out.writeInt(providesInsetsTypes.length);
                out.writeIntArray(providesInsetsTypes);
@@ -3698,7 +3733,7 @@ public interface WindowManager extends ViewManager {
            mFitInsetsSides = in.readInt();
            mFitInsetsIgnoringVisibility = in.readBoolean();
            preferMinimalPostProcessing = in.readBoolean();
            blurBehindRadius = in.readInt();
            mBlurBehindRadius = in.readInt();
            int insetsTypesLength = in.readInt();
            if (insetsTypesLength > 0) {
                providesInsetsTypes = new int[insetsTypesLength];
@@ -3752,7 +3787,7 @@ public interface WindowManager extends ViewManager {
        /** {@hide} */
        public static final int MINIMAL_POST_PROCESSING_PREFERENCE_CHANGED = 1 << 28;
        /** {@hide} */
        public static final int BACKGROUND_BLUR_RADIUS_CHANGED = 1 << 29;
        public static final int BLUR_BEHIND_RADIUS_CHANGED = 1 << 29;

        // internal buffer to backup/restore parameters under compatibility mode.
        private int[] mCompatibilityParamsBackup = null;
@@ -3943,9 +3978,9 @@ public interface WindowManager extends ViewManager {
                changes |= MINIMAL_POST_PROCESSING_PREFERENCE_CHANGED;
            }

            if (blurBehindRadius != o.blurBehindRadius) {
                blurBehindRadius = o.blurBehindRadius;
                changes |= BACKGROUND_BLUR_RADIUS_CHANGED;
            if (mBlurBehindRadius != o.mBlurBehindRadius) {
                mBlurBehindRadius = o.mBlurBehindRadius;
                changes |= BLUR_BEHIND_RADIUS_CHANGED;
            }

            // This can't change, it's only set at window creation time.
@@ -4111,9 +4146,9 @@ public interface WindowManager extends ViewManager {
                sb.append(" preferMinimalPostProcessing=");
                sb.append(preferMinimalPostProcessing);
            }
            if (blurBehindRadius != 0) {
            if (mBlurBehindRadius != 0) {
                sb.append(" blurBehindRadius=");
                sb.append(blurBehindRadius);
                sb.append(mBlurBehindRadius);
            }
            sb.append(System.lineSeparator());
            sb.append(prefix).append("  fl=").append(
+2 −2
Original line number Diff line number Diff line
@@ -2556,8 +2556,8 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
                params.flags |= WindowManager.LayoutParams.FLAG_BLUR_BEHIND;
            }

            params.blurBehindRadius = a.getDimensionPixelSize(
                    android.R.styleable.Window_windowBlurBehindRadius, 0);
            params.setBlurBehindRadius(a.getDimensionPixelSize(
                    android.R.styleable.Window_windowBlurBehindRadius, 0));
        }

        setBackgroundBlurRadius(a.getDimensionPixelSize(
+3 −4
Original line number Diff line number Diff line
@@ -5268,16 +5268,15 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
        } else if (((mAttrs.flags & FLAG_DIM_BEHIND) != 0 || (mAttrs.flags & FLAG_BLUR_BEHIND) != 0)
                   && isVisibleNow() && !mHidden) {
            // Only show the Dimmer when the following is satisfied:
            // 1. The window has the flag FLAG_DIM_BEHIND or background blur is requested
            // 1. The window has the flag FLAG_DIM_BEHIND or blur behind is requested
            // 2. The WindowToken is not hidden so dims aren't shown when the window is exiting.
            // 3. The WS is considered visible according to the isVisible() method
            // 4. The WS is not hidden.
            mIsDimming = true;
            final float dimAmount = (mAttrs.flags & FLAG_DIM_BEHIND) != 0 ? mAttrs.dimAmount : 0;
            final int blurRadius =
                    (mAttrs.flags & FLAG_BLUR_BEHIND) != 0 ? mAttrs.blurBehindRadius : 0;
            getDimmer().dimBelow(
                    getSyncTransaction(), this, mAttrs.dimAmount, mAttrs.blurBehindRadius);
                    (mAttrs.flags & FLAG_BLUR_BEHIND) != 0 ? mAttrs.getBlurBehindRadius() : 0;
            getDimmer().dimBelow(getSyncTransaction(), this, mAttrs.dimAmount, blurRadius);
        }
    }