Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 42025e3c authored by Matthew Ng's avatar Matthew Ng
Browse files

Receive assistant progress and start commands from launcher

Bug: 112934365
Test: manual
Change-Id: Id3e8a104f10940f4db87fb2986a424555214d97e
parent 5f9cad60
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -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;
}
+39 −0
Original line number Diff line number Diff line
@@ -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<OverviewProxyLis
            }
        }

        public void onAssistantProgress(@FloatRange(from = 0.0, to = 1.0) float progress) {
            if (!verifyCaller("onAssistantProgress")) {
                return;
            }
            long token = Binder.clearCallingIdentity();
            try {
                mHandler.post(() -> 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<OverviewProxyLis
        }
    }

    private void notifyAssistantProgress(@FloatRange(from = 0.0, to = 1.0) float progress) {
        for (int i = mConnectionCallbacks.size() - 1; i >= 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<OverviewProxyLis
        default void onOverviewShown(boolean fromHome) {}
        default void onQuickScrubStarted() {}
        default void onBackButtonAlphaChanged(float alpha, boolean animate) {}
        default void onAssistantProgress(@FloatRange(from = 0.0, to = 1.0) float progress) {}
        default void startAssistant(Bundle bundle) {}
    }
}
+5 −0
Original line number Diff line number Diff line
@@ -184,6 +184,11 @@ public class NavigationBarFragment extends LifecycleFragment implements Callback
            updateScreenPinningGestures();
        }

        @Override
        public void startAssistant(Bundle bundle) {
            mAssistManager.startAssist(bundle);
        }

        @Override
        public void onBackButtonAlphaChanged(float alpha, boolean animate) {
            final ButtonDispatcher backButton = mNavigationBarView.getBackButton();