From 93f0834976787a77d0e140e8f8a547846c33278d Mon Sep 17 00:00:00 2001 From: Mike Digman Date: Fri, 24 Nov 2017 21:46:53 -0800 Subject: [PATCH] Add route for rotation suggestions from StatusBar to CommandQueue Test: usused pipe Change-Id: I7a4131f8f99edbc33f8d22eda3e7a6c97b8530bf --- .../android/internal/statusbar/IStatusBar.aidl | 5 +++++ .../systemui/statusbar/CommandQueue.java | 17 +++++++++++++++++ .../statusbar/StatusBarManagerInternal.java | 7 +++++++ .../statusbar/StatusBarManagerService.java | 9 +++++++++ 4 files changed, 38 insertions(+) diff --git a/core/java/com/android/internal/statusbar/IStatusBar.aidl b/core/java/com/android/internal/statusbar/IStatusBar.aidl index bab0306aaf9f7..5ec90941aa887 100644 --- a/core/java/com/android/internal/statusbar/IStatusBar.aidl +++ b/core/java/com/android/internal/statusbar/IStatusBar.aidl @@ -112,6 +112,11 @@ oneway interface IStatusBar */ void showGlobalActionsMenu(); + /** + * Notifies the status bar that a new rotation suggestion is available. + */ + void onProposedRotationChanged(int rotation); + /** * Set whether the top app currently hides the statusbar. * diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java index 634927503747d..8e1b10432a3db 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java @@ -82,6 +82,7 @@ public class CommandQueue extends IStatusBar.Stub { private static final int MSG_TOGGLE_PANEL = 35 << MSG_SHIFT; private static final int MSG_SHOW_SHUTDOWN_UI = 36 << MSG_SHIFT; private static final int MSG_SET_TOP_APP_HIDES_STATUS_BAR = 37 << MSG_SHIFT; + private static final int MSG_ROTATION_PROPOSAL = 38 << MSG_SHIFT; public static final int FLAG_EXCLUDE_NONE = 0; public static final int FLAG_EXCLUDE_SEARCH_PANEL = 1 << 0; @@ -142,6 +143,8 @@ public class CommandQueue extends IStatusBar.Stub { default void handleSystemKey(int arg1) { } default void handleShowGlobalActionsMenu() { } default void handleShowShutdownUi(boolean isReboot, String reason) { } + + default void onRotationProposal(int rotation) { } } @VisibleForTesting @@ -458,6 +461,15 @@ public class CommandQueue extends IStatusBar.Stub { } } + @Override + public void onProposedRotationChanged(int rotation) { + synchronized (mLock) { + mHandler.removeMessages(MSG_ROTATION_PROPOSAL); + mHandler.obtainMessage(MSG_ROTATION_PROPOSAL, rotation, 0, + null).sendToTarget(); + } + } + private final class H extends Handler { private H(Looper l) { super(l); @@ -654,6 +666,11 @@ public class CommandQueue extends IStatusBar.Stub { mCallbacks.get(i).setTopAppHidesStatusBar(msg.arg1 != 0); } break; + case MSG_ROTATION_PROPOSAL: + for (int i = 0; i < mCallbacks.size(); i++) { + mCallbacks.get(i).onRotationProposal(msg.arg1); + } + break; } } } diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java b/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java index b07fe98d806ef..3792bc6777ed9 100644 --- a/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java +++ b/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java @@ -90,6 +90,13 @@ public interface StatusBarManagerInternal { boolean showShutdownUi(boolean isReboot, String requestString); + /** + * Show a rotation suggestion that a user may approve to rotate the screen. + * + * @param rotation rotation suggestion + */ + void onProposedRotationChanged(int rotation); + public interface GlobalActionsListener { /** * Called when sysui starts and connects its status bar, or when the status bar binder diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java index c78a3406d0acb..c7c03b48a7780 100644 --- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java +++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java @@ -406,6 +406,15 @@ public class StatusBarManagerService extends IStatusBarService.Stub { } return false; } + + @Override + public void onProposedRotationChanged(int rotation) { + if (mBar != null){ + try { + mBar.onProposedRotationChanged(rotation); + } catch (RemoteException ex) {} + } + } }; // ================================================================================