diff options
| author | 2021-01-29 17:14:59 +0000 | |
|---|---|---|
| committer | 2021-01-29 17:14:59 +0000 | |
| commit | a7e151f01a53cc99cfaf5877ca291c1e2e6c1d07 (patch) | |
| tree | c0c7c52365708806c04ee7346d6c4a334b5021c0 | |
| parent | db10b7cb566454d4ca8f95112359f5d5004c6a95 (diff) | |
| parent | 9211706490be30a031343643d634dcb7194fbb40 (diff) | |
Merge "7/ Clean up some usage of getLooper" into sc-dev
10 files changed, 46 insertions, 58 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/HandlerExecutor.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/HandlerExecutor.java index 4874d3ccae7e..a4cd3c5a583d 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/HandlerExecutor.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/HandlerExecutor.java @@ -47,6 +47,11 @@ public class HandlerExecutor implements ShellExecutor { } @Override + public void removeAllCallbacks() { + mHandler.removeCallbacksAndMessages(null); + } + + @Override public void removeCallbacks(@NonNull Runnable r) { mHandler.removeCallbacks(r); } @@ -55,9 +60,4 @@ public class HandlerExecutor implements ShellExecutor { public boolean hasCallback(Runnable r) { return mHandler.hasCallbacks(r); } - - @Override - public Looper getLooper() { - return mHandler.getLooper(); - } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/ShellExecutor.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/ShellExecutor.java index 1149cceb1068..b736fb0b9895 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/ShellExecutor.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/ShellExecutor.java @@ -73,6 +73,11 @@ public interface ShellExecutor extends Executor { void executeDelayed(Runnable runnable, long delayMillis); /** + * Removes all pending callbacks. + */ + void removeAllCallbacks(); + + /** * See {@link android.os.Handler#removeCallbacks}. */ void removeCallbacks(Runnable runnable); @@ -81,9 +86,4 @@ public interface ShellExecutor extends Executor { * See {@link android.os.Handler#hasCallbacks(Runnable)}. */ boolean hasCallback(Runnable runnable); - - /** - * Returns the looper that this executor is running on. - */ - Looper getLooper(); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedBackgroundPanelOrganizer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedBackgroundPanelOrganizer.java index a74f4761af0c..37a91d0c121c 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedBackgroundPanelOrganizer.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedBackgroundPanelOrganizer.java @@ -56,7 +56,7 @@ public class OneHandedBackgroundPanelOrganizer extends DisplayAreaOrganizer private final float[] mColor; private final float mAlpha; private final Rect mRect; - private final Handler mHandler; + private final Executor mMainExecutor; private final Point mDisplaySize = new Point(); private final OneHandedSurfaceTransactionHelper.SurfaceControlTransactionFactory mSurfaceControlTransactionFactory; @@ -76,13 +76,13 @@ public class OneHandedBackgroundPanelOrganizer extends DisplayAreaOrganizer @Override public void onOneHandedAnimationStart( OneHandedAnimationController.OneHandedTransitionAnimator animator) { - mHandler.post(() -> showBackgroundPanelLayer()); + mMainExecutor.execute(() -> showBackgroundPanelLayer()); } }; @Override public void onStopFinished(Rect bounds) { - mHandler.post(() -> removeBackgroundPanelLayer()); + mMainExecutor.execute(() -> removeBackgroundPanelLayer()); } public OneHandedBackgroundPanelOrganizer(Context context, DisplayController displayController, @@ -94,7 +94,7 @@ public class OneHandedBackgroundPanelOrganizer extends DisplayAreaOrganizer mColor = new float[]{defaultRGB, defaultRGB, defaultRGB}; mAlpha = res.getFloat(R.dimen.config_one_handed_background_alpha); mRect = new Rect(0, 0, mDisplaySize.x, mDisplaySize.y); - mHandler = new Handler(); + mMainExecutor = executor; mSurfaceControlTransactionFactory = SurfaceControl.Transaction::new; } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedGestureHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedGestureHandler.java index 1ed121f35a59..49b7e050c48b 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedGestureHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedGestureHandler.java @@ -221,8 +221,14 @@ public class OneHandedGestureHandler implements OneHandedTransitionCallback, displaySize.y); mInputMonitor = InputManager.getInstance().monitorGestureInput( "onehanded-gesture-offset", DEFAULT_DISPLAY); - mInputEventReceiver = new EventReceiver( - mInputMonitor.getInputChannel(), mMainExecutor.getLooper()); + try { + mMainExecutor.executeBlocking(() -> { + mInputEventReceiver = new EventReceiver( + mInputMonitor.getInputChannel(), Looper.myLooper()); + }); + } catch (InterruptedException e) { + throw new RuntimeException("Failed to create input event receiver", e); + } } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedTouchHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedTouchHandler.java index 60709bef4daf..c7a49ff01d15 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedTouchHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedTouchHandler.java @@ -132,8 +132,14 @@ public class OneHandedTouchHandler implements OneHandedTransitionCallback { if (mIsEnabled) { mInputMonitor = InputManager.getInstance().monitorGestureInput( "onehanded-touch", DEFAULT_DISPLAY); - mInputEventReceiver = new EventReceiver( - mInputMonitor.getInputChannel(), mMainExecutor.getLooper()); + try { + mMainExecutor.executeBlocking(() -> { + mInputEventReceiver = new EventReceiver( + mInputMonitor.getInputChannel(), Looper.myLooper()); + }); + } catch (InterruptedException e) { + throw new RuntimeException("Failed to create input event receiver", e); + } } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipInputConsumer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipInputConsumer.java index 7a634c3eef78..6e3a20d5f2b2 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipInputConsumer.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipInputConsumer.java @@ -147,7 +147,7 @@ public class PipInputConsumer { // Choreographer.getSfInstance() must be called on the thread that the input event // receiver should be receiving events mInputEventReceiver = new InputEventReceiver(inputChannel, - mMainExecutor.getLooper(), Choreographer.getSfInstance()); + Looper.myLooper(), Choreographer.getSfInstance()); if (mRegistrationListener != null) { mRegistrationListener.onRegistrationChanged(true /* isRegistered */); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipResizeGestureHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipResizeGestureHandler.java index 41cc59d138fa..8fb358ad74d1 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipResizeGestureHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipResizeGestureHandler.java @@ -212,8 +212,14 @@ public class PipResizeGestureHandler { // Register input event receiver mInputMonitor = InputManager.getInstance().monitorGestureInput( "pip-resize", mDisplayId); - mInputEventReceiver = new PipResizeInputEventReceiver( - mInputMonitor.getInputChannel(), mMainExecutor.getLooper()); + try { + mMainExecutor.executeBlocking(() -> { + mInputEventReceiver = new PipResizeInputEventReceiver( + mInputMonitor.getInputChannel(), Looper.myLooper()); + }); + } catch (InterruptedException e) { + throw new RuntimeException("Failed to create input event receiver", e); + } } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java index c9f5ae28175c..2b8b53cdf285 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java @@ -95,7 +95,6 @@ public class PipTouchHandler { private int mDeferResizeToNormalBoundsUntilRotation = -1; private int mDisplayRotation; - private final Handler mHandler = new Handler(); private final PipAccessibilityInteractionConnection mConnection; // Behaviour states diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/TestShellExecutor.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/TestShellExecutor.java index 5f5c30bb6207..bf84a6e30c98 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/TestShellExecutor.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/TestShellExecutor.java @@ -40,6 +40,11 @@ public class TestShellExecutor implements ShellExecutor { } @Override + public void removeAllCallbacks() { + mRunnables.clear(); + } + + @Override public void removeCallbacks(Runnable r) { mRunnables.remove(r); } @@ -49,11 +54,6 @@ public class TestShellExecutor implements ShellExecutor { return mRunnables.contains(r); } - @Override - public Looper getLooper() { - return null; - } - public void flushAll() { for (Runnable r : mRunnables) { r.run(); diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedTimeoutHandlerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedTimeoutHandlerTest.java index 9219f15afc7f..bbe8891817d6 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedTimeoutHandlerTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedTimeoutHandlerTest.java @@ -33,6 +33,7 @@ import android.testing.TestableLooper; import androidx.test.filters.SmallTest; +import com.android.wm.shell.TestShellExecutor; import com.android.wm.shell.common.ShellExecutor; import org.junit.Before; @@ -48,7 +49,7 @@ import java.util.ArrayList; @RunWith(AndroidTestingRunner.class) public class OneHandedTimeoutHandlerTest extends OneHandedTestCase { private OneHandedTimeoutHandler mTimeoutHandler; - private ShellExecutor mMainExecutor; + private TestShellExecutor mMainExecutor; @Before public void setUp() throws Exception { @@ -104,34 +105,4 @@ public class OneHandedTimeoutHandlerTest extends OneHandedTestCase { mTimeoutHandler.resetTimer(); assertTrue(mTimeoutHandler.hasScheduledTimeout()); } - - private class TestShellExecutor implements ShellExecutor { - private ArrayList<Runnable> mExecuted = new ArrayList<>(); - private ArrayList<Runnable> mDelayed = new ArrayList<>(); - - @Override - public void execute(Runnable runnable) { - mExecuted.add(runnable); - } - - @Override - public void executeDelayed(Runnable r, long delayMillis) { - mDelayed.add(r); - } - - @Override - public void removeCallbacks(Runnable r) { - mDelayed.remove(r); - } - - @Override - public boolean hasCallback(Runnable r) { - return mDelayed.contains(r); - } - - @Override - public Looper getLooper() { - return Looper.myLooper(); - } - } } |