Merge "Add WM.setForceCrossWindowBlurDisabled TestApi" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
c1733fea63
@@ -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);
|
||||
|
||||
@@ -816,4 +816,6 @@ interface IWindowManager
|
||||
* @param listener the listener to be unregistered
|
||||
*/
|
||||
void unregisterCrossWindowBlurEnabledListener(ICrossWindowBlurEnabledListener listener);
|
||||
|
||||
void setForceCrossWindowBlurDisabled(boolean disable);
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
if (mBlurEnabled == newEnabled) {
|
||||
return;
|
||||
}
|
||||
mBlurEnabled = newEnabled;
|
||||
notifyBlurEnabledChanged(newEnabled);
|
||||
mBlurForceDisabled = disable;
|
||||
updateBlurEnabledLocked();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void notifyBlurEnabledChanged(boolean enabled) {
|
||||
private void updateBlurEnabledLocked() {
|
||||
final boolean newEnabled = CROSS_WINDOW_BLUR_SUPPORTED && !mBlurForceDisabled;
|
||||
if (mBlurEnabled == newEnabled) {
|
||||
return;
|
||||
}
|
||||
mBlurEnabled = newEnabled;
|
||||
notifyBlurEnabledChangedLocked(newEnabled);
|
||||
}
|
||||
|
||||
private void notifyBlurEnabledChangedLocked(boolean enabled) {
|
||||
int i = mBlurEnabledListeners.beginBroadcast();
|
||||
while (i > 0) {
|
||||
i--;
|
||||
@@ -71,6 +81,4 @@ final class BlurController {
|
||||
}
|
||||
mBlurEnabledListeners.finishBroadcast();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -5675,6 +5675,11 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
mBlurController.unregisterCrossWindowBlurEnabledListener(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setForceCrossWindowBlurDisabled(boolean disable) {
|
||||
mBlurController.setForceCrossWindowBlurDisabled(disable);
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------
|
||||
// Internals
|
||||
// -------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user