Loading libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java +0 −1 Original line number Diff line number Diff line Loading @@ -18,7 +18,6 @@ package com.android.wm.shell.back; import static com.android.internal.jank.InteractionJankMonitor.CUJ_PREDICTIVE_BACK_HOME; import static com.android.window.flags.Flags.predictiveBackSystemAnims; import static com.android.wm.shell.common.ExecutorUtils.executeRemoteCallWithTaskPermission; import static com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_BACK_PREVIEW; import static com.android.wm.shell.sysui.ShellSharedConstants.KEY_EXTRA_SHELL_BACK_ANIMATION; Loading libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java +3 −12 Original line number Diff line number Diff line Loading @@ -518,7 +518,7 @@ public class BubbleController implements ConfigurationChangeListener, } private ExternalInterfaceBinder createExternalInterface() { return new BubbleController.IBubblesImpl(this); return new IBubblesImpl(this); } @VisibleForTesting Loading Loading @@ -2354,6 +2354,8 @@ public class BubbleController implements ConfigurationChangeListener, @Override public void invalidate() { mController = null; // Unregister the listeners to ensure any binder death recipients are unlinked mListener.unregister(); } @Override Loading Loading @@ -2531,17 +2533,6 @@ public class BubbleController implements ConfigurationChangeListener, private CachedState mCachedState = new CachedState(); private IBubblesImpl mIBubbles; @Override public IBubbles createExternalInterface() { if (mIBubbles != null) { mIBubbles.invalidate(); } mIBubbles = new IBubblesImpl(BubbleController.this); return mIBubbles; } @Override public boolean isBubbleNotificationSuppressedFromShade(String key, String groupKey) { return mCachedState.isBubbleNotificationSuppressedFromShade(key, groupKey); Loading libs/WindowManager/Shell/src/com/android/wm/shell/common/ExecutorUtils.javadeleted 100644 → 0 +0 −64 Original line number Diff line number Diff line /* * Copyright (C) 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.wm.shell.common; import android.Manifest; import android.util.Slog; import java.util.function.Consumer; /** * Helpers for working with executors */ public class ExecutorUtils { /** * Checks that the caller has the MANAGE_ACTIVITY_TASKS permission and executes the given * callback. */ public static <T> void executeRemoteCallWithTaskPermission(RemoteCallable<T> controllerInstance, String log, Consumer<T> callback) { executeRemoteCallWithTaskPermission(controllerInstance, log, callback, false /* blocking */); } /** * Checks that the caller has the MANAGE_ACTIVITY_TASKS permission and executes the given * callback. */ public static <T> void executeRemoteCallWithTaskPermission(RemoteCallable<T> controllerInstance, String log, Consumer<T> callback, boolean blocking) { if (controllerInstance == null) return; final RemoteCallable<T> controller = controllerInstance; controllerInstance.getContext().enforceCallingPermission( Manifest.permission.MANAGE_ACTIVITY_TASKS, log); if (blocking) { try { controllerInstance.getRemoteCallExecutor().executeBlocking(() -> { callback.accept((T) controller); }); } catch (InterruptedException e) { Slog.e("ExecutorUtils", "Remote call failed", e); } } else { controllerInstance.getRemoteCallExecutor().execute(() -> { callback.accept((T) controller); }); } } } libs/WindowManager/Shell/src/com/android/wm/shell/common/ExternalInterfaceBinder.java +40 −0 Original line number Diff line number Diff line Loading @@ -16,7 +16,11 @@ package com.android.wm.shell.common; import android.Manifest; import android.os.IBinder; import android.util.Slog; import java.util.function.Consumer; /** * An interface for binders which can be registered to be sent to other processes. Loading @@ -31,4 +35,40 @@ public interface ExternalInterfaceBinder { * Returns the IBinder to send. */ IBinder asBinder(); /** * Checks that the caller has the MANAGE_ACTIVITY_TASKS permission and executes the given * callback. */ default <T> void executeRemoteCallWithTaskPermission(RemoteCallable<T> controllerInstance, String log, Consumer<T> callback) { executeRemoteCallWithTaskPermission(controllerInstance, log, callback, false /* blocking */); } /** * Checks that the caller has the MANAGE_ACTIVITY_TASKS permission and executes the given * callback. */ default <T> void executeRemoteCallWithTaskPermission(RemoteCallable<T> controllerInstance, String log, Consumer<T> callback, boolean blocking) { if (controllerInstance == null) return; final RemoteCallable<T> controller = controllerInstance; controllerInstance.getContext().enforceCallingPermission( Manifest.permission.MANAGE_ACTIVITY_TASKS, log); if (blocking) { try { controllerInstance.getRemoteCallExecutor().executeBlocking(() -> { callback.accept((T) controller); }); } catch (InterruptedException e) { Slog.e("ExternalInterfaceBinder", "Remote call failed", e); } } else { controllerInstance.getRemoteCallExecutor().execute(() -> { callback.accept((T) controller); }); } } } libs/WindowManager/Shell/src/com/android/wm/shell/common/RemoteCallable.java +1 −1 Original line number Diff line number Diff line Loading @@ -19,7 +19,7 @@ package com.android.wm.shell.common; import android.content.Context; /** * An interface for controllers that can receive remote calls. * An interface for controllers (of type T) that can receive remote calls. */ public interface RemoteCallable<T> { /** Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java +0 −1 Original line number Diff line number Diff line Loading @@ -18,7 +18,6 @@ package com.android.wm.shell.back; import static com.android.internal.jank.InteractionJankMonitor.CUJ_PREDICTIVE_BACK_HOME; import static com.android.window.flags.Flags.predictiveBackSystemAnims; import static com.android.wm.shell.common.ExecutorUtils.executeRemoteCallWithTaskPermission; import static com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_BACK_PREVIEW; import static com.android.wm.shell.sysui.ShellSharedConstants.KEY_EXTRA_SHELL_BACK_ANIMATION; Loading
libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java +3 −12 Original line number Diff line number Diff line Loading @@ -518,7 +518,7 @@ public class BubbleController implements ConfigurationChangeListener, } private ExternalInterfaceBinder createExternalInterface() { return new BubbleController.IBubblesImpl(this); return new IBubblesImpl(this); } @VisibleForTesting Loading Loading @@ -2354,6 +2354,8 @@ public class BubbleController implements ConfigurationChangeListener, @Override public void invalidate() { mController = null; // Unregister the listeners to ensure any binder death recipients are unlinked mListener.unregister(); } @Override Loading Loading @@ -2531,17 +2533,6 @@ public class BubbleController implements ConfigurationChangeListener, private CachedState mCachedState = new CachedState(); private IBubblesImpl mIBubbles; @Override public IBubbles createExternalInterface() { if (mIBubbles != null) { mIBubbles.invalidate(); } mIBubbles = new IBubblesImpl(BubbleController.this); return mIBubbles; } @Override public boolean isBubbleNotificationSuppressedFromShade(String key, String groupKey) { return mCachedState.isBubbleNotificationSuppressedFromShade(key, groupKey); Loading
libs/WindowManager/Shell/src/com/android/wm/shell/common/ExecutorUtils.javadeleted 100644 → 0 +0 −64 Original line number Diff line number Diff line /* * Copyright (C) 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.wm.shell.common; import android.Manifest; import android.util.Slog; import java.util.function.Consumer; /** * Helpers for working with executors */ public class ExecutorUtils { /** * Checks that the caller has the MANAGE_ACTIVITY_TASKS permission and executes the given * callback. */ public static <T> void executeRemoteCallWithTaskPermission(RemoteCallable<T> controllerInstance, String log, Consumer<T> callback) { executeRemoteCallWithTaskPermission(controllerInstance, log, callback, false /* blocking */); } /** * Checks that the caller has the MANAGE_ACTIVITY_TASKS permission and executes the given * callback. */ public static <T> void executeRemoteCallWithTaskPermission(RemoteCallable<T> controllerInstance, String log, Consumer<T> callback, boolean blocking) { if (controllerInstance == null) return; final RemoteCallable<T> controller = controllerInstance; controllerInstance.getContext().enforceCallingPermission( Manifest.permission.MANAGE_ACTIVITY_TASKS, log); if (blocking) { try { controllerInstance.getRemoteCallExecutor().executeBlocking(() -> { callback.accept((T) controller); }); } catch (InterruptedException e) { Slog.e("ExecutorUtils", "Remote call failed", e); } } else { controllerInstance.getRemoteCallExecutor().execute(() -> { callback.accept((T) controller); }); } } }
libs/WindowManager/Shell/src/com/android/wm/shell/common/ExternalInterfaceBinder.java +40 −0 Original line number Diff line number Diff line Loading @@ -16,7 +16,11 @@ package com.android.wm.shell.common; import android.Manifest; import android.os.IBinder; import android.util.Slog; import java.util.function.Consumer; /** * An interface for binders which can be registered to be sent to other processes. Loading @@ -31,4 +35,40 @@ public interface ExternalInterfaceBinder { * Returns the IBinder to send. */ IBinder asBinder(); /** * Checks that the caller has the MANAGE_ACTIVITY_TASKS permission and executes the given * callback. */ default <T> void executeRemoteCallWithTaskPermission(RemoteCallable<T> controllerInstance, String log, Consumer<T> callback) { executeRemoteCallWithTaskPermission(controllerInstance, log, callback, false /* blocking */); } /** * Checks that the caller has the MANAGE_ACTIVITY_TASKS permission and executes the given * callback. */ default <T> void executeRemoteCallWithTaskPermission(RemoteCallable<T> controllerInstance, String log, Consumer<T> callback, boolean blocking) { if (controllerInstance == null) return; final RemoteCallable<T> controller = controllerInstance; controllerInstance.getContext().enforceCallingPermission( Manifest.permission.MANAGE_ACTIVITY_TASKS, log); if (blocking) { try { controllerInstance.getRemoteCallExecutor().executeBlocking(() -> { callback.accept((T) controller); }); } catch (InterruptedException e) { Slog.e("ExternalInterfaceBinder", "Remote call failed", e); } } else { controllerInstance.getRemoteCallExecutor().execute(() -> { callback.accept((T) controller); }); } } }
libs/WindowManager/Shell/src/com/android/wm/shell/common/RemoteCallable.java +1 −1 Original line number Diff line number Diff line Loading @@ -19,7 +19,7 @@ package com.android.wm.shell.common; import android.content.Context; /** * An interface for controllers that can receive remote calls. * An interface for controllers (of type T) that can receive remote calls. */ public interface RemoteCallable<T> { /** Loading