diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/ISystemUiProxy.aidl b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/ISystemUiProxy.aidl index 078947ca04688..953816e8bf124 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/ISystemUiProxy.aidl +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/ISystemUiProxy.aidl @@ -17,6 +17,7 @@ package com.android.systemui.shared.recents; import android.graphics.Rect; +import android.os.Bundle; import android.view.MotionEvent; /** @@ -82,4 +83,13 @@ interface ISystemUiProxy { */ boolean supportsRoundedCornersOnWindows() = 11; + /** + * Proxies the assistant gesture's progress started from navigation bar. + */ + void onAssistantProgress(float progress) = 12; + + /** + * Start the assistant. + */ + void startAssistant(in Bundle bundle) = 13; } diff --git a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java index 83c4cfc6c126b..b7948882208d7 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java +++ b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java @@ -29,6 +29,7 @@ import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SUP import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SYSUI_PROXY; import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_WINDOW_CORNER_RADIUS; +import android.annotation.FloatRange; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; @@ -269,6 +270,30 @@ public class OverviewProxyService implements CallbackController notifyAssistantProgress(progress)); + } finally { + Binder.restoreCallingIdentity(token); + } + } + + public void startAssistant(Bundle bundle) { + if (!verifyCaller("startAssistant")) { + return; + } + long token = Binder.clearCallingIdentity(); + try { + mHandler.post(() -> notifyStartAssistant(bundle)); + } finally { + Binder.restoreCallingIdentity(token); + } + } + private boolean verifyCaller(String reason) { final int callerId = Binder.getCallingUserHandle().getIdentifier(); if (callerId != mCurrentBoundedUserId) { @@ -590,6 +615,18 @@ public class OverviewProxyService implements CallbackController= 0; --i) { + mConnectionCallbacks.get(i).onAssistantProgress(progress); + } + } + + private void notifyStartAssistant(Bundle bundle) { + for (int i = mConnectionCallbacks.size() - 1; i >= 0; --i) { + mConnectionCallbacks.get(i).startAssistant(bundle); + } + } + private void updateEnabledState() { mIsEnabled = mContext.getPackageManager().resolveServiceAsUser(mQuickStepIntent, MATCH_DIRECT_BOOT_UNAWARE, @@ -637,5 +674,7 @@ public class OverviewProxyService implements CallbackController