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

Commit 77ece7b1 authored by Matt Casey's avatar Matt Casey Committed by Android (Google) Code Review
Browse files

Merge "Extend assist context to foreground services"

parents 81ba9784 dfc7fd78
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -4228,6 +4228,7 @@ package android.app {
    method public void onCreate();
    method public void onDestroy();
    method public void onLowMemory();
    method public void onProvideAssistData(android.os.Bundle);
    method public void onRebind(android.content.Intent);
    method public deprecated void onStart(android.content.Intent, int);
    method public int onStartCommand(android.content.Intent, int, int);
@@ -6273,6 +6274,8 @@ package android.content {
    field public static final deprecated java.lang.String EXTRA_ALLOW_REPLACE = "android.intent.extra.ALLOW_REPLACE";
    field public static final java.lang.String EXTRA_ASSIST_CONTEXT = "android.intent.extra.ASSIST_CONTEXT";
    field public static final java.lang.String EXTRA_ASSIST_PACKAGE = "android.intent.extra.ASSIST_PACKAGE";
    field public static final java.lang.String EXTRA_ASSIST_SERVICES_CONTEXTS = "android.intent.extra.ASSIST_SERVICES_CONTEXTS";
    field public static final java.lang.String EXTRA_ASSIST_SERVICES_PACKAGES = "android.intent.extra.ASSIST_SERVICES_PACKAGES";
    field public static final java.lang.String EXTRA_BCC = "android.intent.extra.BCC";
    field public static final java.lang.String EXTRA_BUG_REPORT = "android.intent.extra.BUG_REPORT";
    field public static final java.lang.String EXTRA_CC = "android.intent.extra.CC";
@@ -7337,6 +7340,7 @@ package android.content.pm {
    method public void dump(android.util.Printer, java.lang.String);
    field public static final android.os.Parcelable.Creator CREATOR;
    field public static final int FLAG_ISOLATED_PROCESS = 2; // 0x2
    field public static final int FLAG_PROVIDE_ASSIST_DATA = 4; // 0x4
    field public static final int FLAG_SINGLE_USER = 1073741824; // 0x40000000
    field public static final int FLAG_STOP_WITH_TASK = 1; // 0x1
    field public int flags;
+11 −8
Original line number Diff line number Diff line
@@ -1921,20 +1921,21 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM
            return true;
        }

        case GET_TOP_ACTIVITY_EXTRAS_TRANSACTION: {
        case GET_ASSIST_CONTEXT_EXTRAS_TRANSACTION: {
            data.enforceInterface(IActivityManager.descriptor);
            int requestType = data.readInt();
            Bundle res = getTopActivityExtras(requestType);
            Bundle res = getAssistContextExtras(requestType);
            reply.writeNoException();
            reply.writeBundle(res);
            return true;
        }

        case REPORT_TOP_ACTIVITY_EXTRAS_TRANSACTION: {
        case REPORT_ASSIST_CONTEXT_EXTRAS_TRANSACTION: {
            data.enforceInterface(IActivityManager.descriptor);
            IBinder token = data.readStrongBinder();
            Bundle extras = data.readBundle();
            reportTopActivityExtras(token, extras);
            int index = data.readInt();
            reportAssistContextExtras(token, extras, index);
            reply.writeNoException();
            return true;
        }
@@ -4456,12 +4457,12 @@ class ActivityManagerProxy implements IActivityManager
        return res;
    }

    public Bundle getTopActivityExtras(int requestType) throws RemoteException {
    public Bundle getAssistContextExtras(int requestType) throws RemoteException {
        Parcel data = Parcel.obtain();
        Parcel reply = Parcel.obtain();
        data.writeInterfaceToken(IActivityManager.descriptor);
        data.writeInt(requestType);
        mRemote.transact(GET_TOP_ACTIVITY_EXTRAS_TRANSACTION, data, reply, 0);
        mRemote.transact(GET_ASSIST_CONTEXT_EXTRAS_TRANSACTION, data, reply, 0);
        reply.readException();
        Bundle res = reply.readBundle();
        data.recycle();
@@ -4469,13 +4470,15 @@ class ActivityManagerProxy implements IActivityManager
        return res;
    }

    public void reportTopActivityExtras(IBinder token, Bundle extras) throws RemoteException {
    public void reportAssistContextExtras(IBinder token, Bundle extras, int index)
            throws RemoteException {
        Parcel data = Parcel.obtain();
        Parcel reply = Parcel.obtain();
        data.writeInterfaceToken(IActivityManager.descriptor);
        data.writeStrongBinder(token);
        data.writeBundle(extras);
        mRemote.transact(REPORT_TOP_ACTIVITY_EXTRAS_TRANSACTION, data, reply, 0);
        data.writeInt(index);
        mRemote.transact(REPORT_ASSIST_CONTEXT_EXTRAS_TRANSACTION, data, reply, 0);
        reply.readException();
        data.recycle();
        reply.recycle();
+18 −11
Original line number Diff line number Diff line
@@ -529,10 +529,11 @@ public final class ActivityThread {
        CompatibilityInfo info;
    }

    static final class RequestActivityExtras {
    static final class RequestAssistContextExtras {
        IBinder activityToken;
        IBinder requestToken;
        int requestType;
        int index;
    }

    private native void dumpGraphicsInfo(FileDescriptor fd);
@@ -1197,13 +1198,14 @@ public final class ActivityThread {
        }

        @Override
        public void requestActivityExtras(IBinder activityToken, IBinder requestToken,
                int requestType) {
            RequestActivityExtras cmd = new RequestActivityExtras();
        public void requestAssistContextExtras(IBinder activityToken, IBinder requestToken,
                int requestType, int index) {
            RequestAssistContextExtras cmd = new RequestAssistContextExtras();
            cmd.activityToken = activityToken;
            cmd.requestToken = requestToken;
            cmd.requestType = requestType;
            queueOrSendMessage(H.REQUEST_ACTIVITY_EXTRAS, cmd);
            cmd.index = index;
            queueOrSendMessage(H.REQUEST_ASSIST_CONTEXT_EXTRAS, cmd);
        }

        private void printRow(PrintWriter pw, String format, Object...objs) {
@@ -1292,7 +1294,7 @@ public final class ActivityThread {
        public static final int TRIM_MEMORY             = 140;
        public static final int DUMP_PROVIDER           = 141;
        public static final int UNSTABLE_PROVIDER_DIED  = 142;
        public static final int REQUEST_ACTIVITY_EXTRAS = 143;
        public static final int REQUEST_ASSIST_CONTEXT_EXTRAS = 143;
        public static final int TRANSLUCENT_CONVERSION_COMPLETE = 144;
        String codeToString(int code) {
            if (DEBUG_MESSAGES) {
@@ -1340,7 +1342,7 @@ public final class ActivityThread {
                    case TRIM_MEMORY: return "TRIM_MEMORY";
                    case DUMP_PROVIDER: return "DUMP_PROVIDER";
                    case UNSTABLE_PROVIDER_DIED: return "UNSTABLE_PROVIDER_DIED";
                    case REQUEST_ACTIVITY_EXTRAS: return "REQUEST_ACTIVITY_EXTRAS";
                    case REQUEST_ASSIST_CONTEXT_EXTRAS: return "REQUEST_ASSIST_CONTEXT_EXTRAS";
                    case TRANSLUCENT_CONVERSION_COMPLETE: return "TRANSLUCENT_CONVERSION_COMPLETE";
                }
            }
@@ -1553,8 +1555,8 @@ public final class ActivityThread {
                case UNSTABLE_PROVIDER_DIED:
                    handleUnstableProviderDied((IBinder)msg.obj, false);
                    break;
                case REQUEST_ACTIVITY_EXTRAS:
                    handleRequestActivityExtras((RequestActivityExtras)msg.obj);
                case REQUEST_ASSIST_CONTEXT_EXTRAS:
                    handleRequestAssistContextExtras((RequestAssistContextExtras)msg.obj);
                    break;
                case TRANSLUCENT_CONVERSION_COMPLETE:
                    handleTranslucentConversionComplete((IBinder)msg.obj, msg.arg1 == 1);
@@ -2275,19 +2277,24 @@ public final class ActivityThread {
        performNewIntents(data.token, data.intents);
    }

    public void handleRequestActivityExtras(RequestActivityExtras cmd) {
    public void handleRequestAssistContextExtras(RequestAssistContextExtras cmd) {
        Bundle data = new Bundle();
        ActivityClientRecord r = mActivities.get(cmd.activityToken);
        if (r != null) {
            r.activity.getApplication().dispatchOnProvideAssistData(r.activity, data);
            r.activity.onProvideAssistData(data);
        } else {
            Service service = mServices.get(cmd.activityToken);
            if (service != null) {
                service.onProvideAssistData(data);
            }
        }
        if (data.isEmpty()) {
            data = null;
        }
        IActivityManager mgr = ActivityManagerNative.getDefault();
        try {
            mgr.reportTopActivityExtras(cmd.requestToken, data);
            mgr.reportAssistContextExtras(cmd.requestToken, data, cmd.index);
        } catch (RemoteException e) {
        }
    }
+8 −5
Original line number Diff line number Diff line
@@ -600,13 +600,14 @@ public abstract class ApplicationThreadNative extends Binder
            return true;
        }

        case REQUEST_ACTIVITY_EXTRAS_TRANSACTION:
        case REQUEST_ASSIST_CONTEXT_EXTRAS_TRANSACTION:
        {
            data.enforceInterface(IApplicationThread.descriptor);
            IBinder activityToken = data.readStrongBinder();
            IBinder requestToken = data.readStrongBinder();
            int requestType = data.readInt();
            requestActivityExtras(activityToken, requestToken, requestType);
            int index = data.readInt();
            requestAssistContextExtras(activityToken, requestToken, requestType, index);
            reply.writeNoException();
            return true;
        }
@@ -1241,14 +1242,16 @@ class ApplicationThreadProxy implements IApplicationThread {
    }

    @Override
    public void requestActivityExtras(IBinder activityToken, IBinder requestToken, int requestType)
            throws RemoteException {
    public void requestAssistContextExtras(IBinder activityToken, IBinder requestToken,
            int requestType, int index) throws RemoteException {
        Parcel data = Parcel.obtain();
        data.writeInterfaceToken(IApplicationThread.descriptor);
        data.writeStrongBinder(activityToken);
        data.writeStrongBinder(requestToken);
        data.writeInt(requestType);
        mRemote.transact(REQUEST_ACTIVITY_EXTRAS_TRANSACTION, data, null, IBinder.FLAG_ONEWAY);
        data.writeInt(index);
        mRemote.transact(REQUEST_ASSIST_CONTEXT_EXTRAS_TRANSACTION, data, null,
                IBinder.FLAG_ONEWAY);
        data.recycle();
    }

+5 −4
Original line number Diff line number Diff line
@@ -386,9 +386,10 @@ public interface IActivityManager extends IInterface {

    public long inputDispatchingTimedOut(int pid, boolean aboveSystem) throws RemoteException;

    public Bundle getTopActivityExtras(int requestType) throws RemoteException;
    public Bundle getAssistContextExtras(int requestType) throws RemoteException;

    public void reportTopActivityExtras(IBinder token, Bundle extras) throws RemoteException;
    public void reportAssistContextExtras(IBinder token, Bundle extras, int index)
            throws RemoteException;

    public void killUid(int uid, String reason) throws RemoteException;

@@ -662,8 +663,8 @@ public interface IActivityManager extends IInterface {
    int INPUT_DISPATCHING_TIMED_OUT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+158;
    int CLEAR_PENDING_BACKUP_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+159;
    int GET_INTENT_FOR_INTENT_SENDER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+160;
    int GET_TOP_ACTIVITY_EXTRAS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+161;
    int REPORT_TOP_ACTIVITY_EXTRAS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+162;
    int GET_ASSIST_CONTEXT_EXTRAS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+161;
    int REPORT_ASSIST_CONTEXT_EXTRAS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+162;
    int GET_LAUNCHED_FROM_PACKAGE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+163;
    int KILL_UID_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+164;
    int SET_USER_IS_MONKEY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+165;
Loading