Loading core/java/com/android/internal/statusbar/IStatusBar.aidl +5 −0 Original line number Diff line number Diff line Loading @@ -160,4 +160,9 @@ oneway interface IStatusBar void onBiometricError(String error); // Used to hide the biometric dialog when the AuthenticationClient is stopped void hideBiometricDialog(); /** * Notifies System UI that the display is ready to show system decorations. */ void onDisplayReady(int displayId); } packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java +18 −0 Original line number Diff line number Diff line Loading @@ -111,6 +111,7 @@ public class CommandQueue extends IStatusBar.Stub implements CallbackController< private static final int MSG_SHOW_CHARGING_ANIMATION = 44 << MSG_SHIFT; private static final int MSG_SHOW_PINNING_TOAST_ENTER_EXIT = 45 << MSG_SHIFT; private static final int MSG_SHOW_PINNING_TOAST_ESCAPE = 46 << MSG_SHIFT; private static final int MSG_DISPLAY_READY = 47 << MSG_SHIFT; public static final int FLAG_EXCLUDE_NONE = 0; public static final int FLAG_EXCLUDE_SEARCH_PANEL = 1 << 0; Loading Loading @@ -274,6 +275,11 @@ public class CommandQueue extends IStatusBar.Stub implements CallbackController< default void onBiometricHelp(String message) { } default void onBiometricError(String error) { } default void hideBiometricDialog() { } /** * @see IStatusBar#onDisplayReady(int) */ default void onDisplayReady(int displayId) { } } @VisibleForTesting Loading Loading @@ -761,6 +767,13 @@ public class CommandQueue extends IStatusBar.Stub implements CallbackController< } } @Override public void onDisplayReady(int displayId) { synchronized (mLock) { mHandler.obtainMessage(MSG_DISPLAY_READY, displayId, 0).sendToTarget(); } } private final class H extends Handler { private H(Looper l) { super(l); Loading Loading @@ -1015,6 +1028,11 @@ public class CommandQueue extends IStatusBar.Stub implements CallbackController< mCallbacks.get(i).showPinningEscapeToast(); } break; case MSG_DISPLAY_READY: for (int i = 0; i < mCallbacks.size(); i++) { mCallbacks.get(i).onDisplayReady(msg.arg1); } break; } } } Loading packages/SystemUI/src/com/android/systemui/statusbar/NavigationBarController.java +11 −6 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.systemui.statusbar; import static android.view.Display.DEFAULT_DISPLAY; import static com.android.systemui.Dependency.MAIN_HANDLER_NAME; import static com.android.systemui.SysUiServiceProvider.getComponent; import android.content.Context; import android.hardware.display.DisplayManager; Loading @@ -34,6 +35,7 @@ import android.view.WindowManagerGlobal; import com.android.systemui.Dependency; import com.android.systemui.plugins.DarkIconDispatcher; import com.android.systemui.statusbar.CommandQueue.Callbacks; import com.android.systemui.statusbar.phone.AutoHideController; import com.android.systemui.statusbar.phone.BarTransitions.TransitionMode; import com.android.systemui.statusbar.phone.LightBarController; Loading @@ -48,7 +50,7 @@ import javax.inject.Singleton; /** A controller to handle navigation bars. */ @Singleton public class NavigationBarController implements DisplayListener { public class NavigationBarController implements DisplayListener, Callbacks { private static final String TAG = NavigationBarController.class.getName(); Loading @@ -65,13 +67,11 @@ public class NavigationBarController implements DisplayListener { mHandler = handler; mDisplayManager = (DisplayManager) mContext.getSystemService(Context.DISPLAY_SERVICE); mDisplayManager.registerDisplayListener(this, mHandler); getComponent(mContext, CommandQueue.class).addCallback(this); } @Override public void onDisplayAdded(int displayId) { Display display = mDisplayManager.getDisplay(displayId); createNavigationBar(display); } public void onDisplayAdded(int displayId) { } @Override public void onDisplayRemoved(int displayId) { Loading @@ -79,7 +79,12 @@ public class NavigationBarController implements DisplayListener { } @Override public void onDisplayChanged(int displayId) { public void onDisplayChanged(int displayId) { } @Override public void onDisplayReady(int displayId) { Display display = mDisplayManager.getDisplay(displayId); createNavigationBar(display); } // TODO(b/117478341): I use {@code includeDefaultDisplay} to make this method compatible to Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarButtonTest.java +1 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ public class NavigationBarButtonTest extends SysuiTestCase { @Before public void setup() { mContext.putComponent(CommandQueue.class, mock(CommandQueue.class)); final Display display = createVirtualDisplay(); final SysuiTestableContext context = (SysuiTestableContext) mContext.createDisplayContext(display); Loading services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java +7 −0 Original line number Diff line number Diff line Loading @@ -100,4 +100,11 @@ public interface StatusBarManagerInternal { * @param rotation rotation suggestion */ void onProposedRotationChanged(int rotation, boolean isValid); /** * Notifies System UI that the display is ready to show system decorations. * * @param displayId display ID */ void onDisplayReady(int displayId); } Loading
core/java/com/android/internal/statusbar/IStatusBar.aidl +5 −0 Original line number Diff line number Diff line Loading @@ -160,4 +160,9 @@ oneway interface IStatusBar void onBiometricError(String error); // Used to hide the biometric dialog when the AuthenticationClient is stopped void hideBiometricDialog(); /** * Notifies System UI that the display is ready to show system decorations. */ void onDisplayReady(int displayId); }
packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java +18 −0 Original line number Diff line number Diff line Loading @@ -111,6 +111,7 @@ public class CommandQueue extends IStatusBar.Stub implements CallbackController< private static final int MSG_SHOW_CHARGING_ANIMATION = 44 << MSG_SHIFT; private static final int MSG_SHOW_PINNING_TOAST_ENTER_EXIT = 45 << MSG_SHIFT; private static final int MSG_SHOW_PINNING_TOAST_ESCAPE = 46 << MSG_SHIFT; private static final int MSG_DISPLAY_READY = 47 << MSG_SHIFT; public static final int FLAG_EXCLUDE_NONE = 0; public static final int FLAG_EXCLUDE_SEARCH_PANEL = 1 << 0; Loading Loading @@ -274,6 +275,11 @@ public class CommandQueue extends IStatusBar.Stub implements CallbackController< default void onBiometricHelp(String message) { } default void onBiometricError(String error) { } default void hideBiometricDialog() { } /** * @see IStatusBar#onDisplayReady(int) */ default void onDisplayReady(int displayId) { } } @VisibleForTesting Loading Loading @@ -761,6 +767,13 @@ public class CommandQueue extends IStatusBar.Stub implements CallbackController< } } @Override public void onDisplayReady(int displayId) { synchronized (mLock) { mHandler.obtainMessage(MSG_DISPLAY_READY, displayId, 0).sendToTarget(); } } private final class H extends Handler { private H(Looper l) { super(l); Loading Loading @@ -1015,6 +1028,11 @@ public class CommandQueue extends IStatusBar.Stub implements CallbackController< mCallbacks.get(i).showPinningEscapeToast(); } break; case MSG_DISPLAY_READY: for (int i = 0; i < mCallbacks.size(); i++) { mCallbacks.get(i).onDisplayReady(msg.arg1); } break; } } } Loading
packages/SystemUI/src/com/android/systemui/statusbar/NavigationBarController.java +11 −6 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.systemui.statusbar; import static android.view.Display.DEFAULT_DISPLAY; import static com.android.systemui.Dependency.MAIN_HANDLER_NAME; import static com.android.systemui.SysUiServiceProvider.getComponent; import android.content.Context; import android.hardware.display.DisplayManager; Loading @@ -34,6 +35,7 @@ import android.view.WindowManagerGlobal; import com.android.systemui.Dependency; import com.android.systemui.plugins.DarkIconDispatcher; import com.android.systemui.statusbar.CommandQueue.Callbacks; import com.android.systemui.statusbar.phone.AutoHideController; import com.android.systemui.statusbar.phone.BarTransitions.TransitionMode; import com.android.systemui.statusbar.phone.LightBarController; Loading @@ -48,7 +50,7 @@ import javax.inject.Singleton; /** A controller to handle navigation bars. */ @Singleton public class NavigationBarController implements DisplayListener { public class NavigationBarController implements DisplayListener, Callbacks { private static final String TAG = NavigationBarController.class.getName(); Loading @@ -65,13 +67,11 @@ public class NavigationBarController implements DisplayListener { mHandler = handler; mDisplayManager = (DisplayManager) mContext.getSystemService(Context.DISPLAY_SERVICE); mDisplayManager.registerDisplayListener(this, mHandler); getComponent(mContext, CommandQueue.class).addCallback(this); } @Override public void onDisplayAdded(int displayId) { Display display = mDisplayManager.getDisplay(displayId); createNavigationBar(display); } public void onDisplayAdded(int displayId) { } @Override public void onDisplayRemoved(int displayId) { Loading @@ -79,7 +79,12 @@ public class NavigationBarController implements DisplayListener { } @Override public void onDisplayChanged(int displayId) { public void onDisplayChanged(int displayId) { } @Override public void onDisplayReady(int displayId) { Display display = mDisplayManager.getDisplay(displayId); createNavigationBar(display); } // TODO(b/117478341): I use {@code includeDefaultDisplay} to make this method compatible to Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarButtonTest.java +1 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ public class NavigationBarButtonTest extends SysuiTestCase { @Before public void setup() { mContext.putComponent(CommandQueue.class, mock(CommandQueue.class)); final Display display = createVirtualDisplay(); final SysuiTestableContext context = (SysuiTestableContext) mContext.createDisplayContext(display); Loading
services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java +7 −0 Original line number Diff line number Diff line Loading @@ -100,4 +100,11 @@ public interface StatusBarManagerInternal { * @param rotation rotation suggestion */ void onProposedRotationChanged(int rotation, boolean isValid); /** * Notifies System UI that the display is ready to show system decorations. * * @param displayId display ID */ void onDisplayReady(int displayId); }