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

Commit a485f71f authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Refactor EphemeralResolverService"

parents a2f8f497 1fb3404b
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -84,6 +84,7 @@ LOCAL_SRC_FILES += \
	core/java/android/app/ITaskStackListener.aidl \
	core/java/android/app/IBackupAgent.aidl \
	core/java/android/app/IEphemeralResolver.aidl \
	core/java/android/app/IInstantAppResolver.aidl \
	core/java/android/app/IInstrumentationWatcher.aidl \
	core/java/android/app/INotificationManager.aidl \
	core/java/android/app/IProcessObserver.aidl \
+49 −7
Original line number Diff line number Diff line
@@ -4662,16 +4662,12 @@ package android.app {
    field public static final int VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION = 3; // 0x3
  }
  public abstract class EphemeralResolverService extends android.app.Service {
  public abstract deprecated class EphemeralResolverService extends android.app.InstantAppResolverService {
    ctor public EphemeralResolverService();
    method public final void attachBaseContext(android.content.Context);
    method public android.os.Looper getLooper();
    method public final android.os.IBinder onBind(android.content.Intent);
    method public abstract deprecated java.util.List<android.content.pm.EphemeralResolveInfo> onEphemeralResolveInfoList(int[], int);
    method public android.content.pm.EphemeralResolveInfo onGetEphemeralIntentFilter(java.lang.String);
    method public java.util.List<android.content.pm.EphemeralResolveInfo> onGetEphemeralResolveInfo(int[]);
    field public static final java.lang.String EXTRA_RESOLVE_INFO = "android.app.extra.RESOLVE_INFO";
    field public static final java.lang.String EXTRA_SEQUENCE = "android.app.extra.SEQUENCE";
  }
  public class ExpandableListActivity extends android.app.Activity implements android.widget.ExpandableListView.OnChildClickListener android.widget.ExpandableListView.OnGroupCollapseListener android.widget.ExpandableListView.OnGroupExpandListener android.view.View.OnCreateContextMenuListener {
@@ -4992,6 +4988,20 @@ package android.app {
    field public static final int TRANSIT_UNSET = -1; // 0xffffffff
  }
  public abstract class InstantAppResolverService extends android.app.Service {
    ctor public InstantAppResolverService();
    method public final void attachBaseContext(android.content.Context);
    method public final android.os.IBinder onBind(android.content.Intent);
    method public void onGetInstantAppIntentFilter(int[], android.app.InstantAppResolverService.InstantAppResolutionCallback);
    method public void onGetInstantAppResolveInfo(int[], android.app.InstantAppResolverService.InstantAppResolutionCallback);
    field public static final java.lang.String EXTRA_RESOLVE_INFO = "android.app.extra.RESOLVE_INFO";
    field public static final java.lang.String EXTRA_SEQUENCE = "android.app.extra.SEQUENCE";
  }
  public static final class InstantAppResolverService.InstantAppResolutionCallback {
    method public void onInstantAppResolveInfo(java.util.List<android.content.pm.InstantAppResolveInfo>);
  }
  public class Instrumentation {
    ctor public Instrumentation();
    method public void addMonitor(android.app.Instrumentation.ActivityMonitor);
@@ -10528,7 +10538,7 @@ package android.content.pm {
    field public int reqTouchScreen;
  }
  public final class EphemeralIntentFilter implements android.os.Parcelable {
  public final deprecated class EphemeralIntentFilter implements android.os.Parcelable {
    ctor public EphemeralIntentFilter(java.lang.String, java.util.List<android.content.IntentFilter>);
    method public int describeContents();
    method public java.util.List<android.content.IntentFilter> getFilters();
@@ -10537,7 +10547,7 @@ package android.content.pm {
    field public static final android.os.Parcelable.Creator<android.content.pm.EphemeralIntentFilter> CREATOR;
  }
  public final class EphemeralResolveInfo implements android.os.Parcelable {
  public final deprecated class EphemeralResolveInfo implements android.os.Parcelable {
    ctor public deprecated EphemeralResolveInfo(android.net.Uri, java.lang.String, java.util.List<android.content.IntentFilter>);
    ctor public deprecated EphemeralResolveInfo(android.content.pm.EphemeralResolveInfo.EphemeralDigest, java.lang.String, java.util.List<android.content.pm.EphemeralIntentFilter>);
    ctor public EphemeralResolveInfo(android.content.pm.EphemeralResolveInfo.EphemeralDigest, java.lang.String, java.util.List<android.content.pm.EphemeralIntentFilter>, int);
@@ -10587,6 +10597,38 @@ package android.content.pm {
    field public int version;
  }
  public final class InstantAppIntentFilter implements android.os.Parcelable {
    ctor public InstantAppIntentFilter(java.lang.String, java.util.List<android.content.IntentFilter>);
    method public int describeContents();
    method public java.util.List<android.content.IntentFilter> getFilters();
    method public java.lang.String getSplitName();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.content.pm.InstantAppIntentFilter> CREATOR;
  }
  public final class InstantAppResolveInfo implements android.os.Parcelable {
    ctor public InstantAppResolveInfo(android.content.pm.InstantAppResolveInfo.InstantAppDigest, java.lang.String, java.util.List<android.content.pm.InstantAppIntentFilter>, int);
    ctor public InstantAppResolveInfo(java.lang.String, java.lang.String, java.util.List<android.content.pm.InstantAppIntentFilter>);
    method public int describeContents();
    method public byte[] getDigestBytes();
    method public int getDigestPrefix();
    method public java.util.List<android.content.pm.InstantAppIntentFilter> getIntentFilters();
    method public java.lang.String getPackageName();
    method public int getVersionCode();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.content.pm.InstantAppResolveInfo> CREATOR;
    field public static final java.lang.String SHA_ALGORITHM = "SHA-256";
  }
  public static final class InstantAppResolveInfo.InstantAppDigest implements android.os.Parcelable {
    ctor public InstantAppResolveInfo.InstantAppDigest(java.lang.String);
    method public int describeContents();
    method public byte[][] getDigestBytes();
    method public int[] getDigestPrefix();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.content.pm.InstantAppResolveInfo.InstantAppDigest> CREATOR;
  }
  public class InstrumentationInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
    ctor public InstrumentationInfo();
    ctor public InstrumentationInfo(android.content.pm.InstrumentationInfo);
+1 −0
Original line number Diff line number Diff line
@@ -16,4 +16,5 @@

package android.app;

/** @deprecated */
parcelable EphemeralResolveInfo;
+22 −85
Original line number Diff line number Diff line
@@ -18,9 +18,11 @@ package android.app;

import android.annotation.SystemApi;
import android.app.Service;
import android.app.InstantAppResolverService.InstantAppResolutionCallback;
import android.content.Context;
import android.content.Intent;
import android.content.pm.EphemeralResolveInfo;
import android.content.pm.InstantAppResolveInfo;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
@@ -29,20 +31,17 @@ import android.os.Looper;
import android.os.Message;
import android.os.RemoteException;

import java.util.ArrayList;
import java.util.List;

/**
 * Base class for implementing the resolver service.
 * @hide
 * @deprecated use InstantAppResolverService instead
 */
@Deprecated
@SystemApi
public abstract class EphemeralResolverService extends Service {
    public static final String EXTRA_RESOLVE_INFO = "android.app.extra.RESOLVE_INFO";
    public static final String EXTRA_SEQUENCE = "android.app.extra.SEQUENCE";
    private static final String EXTRA_PREFIX = "android.app.PREFIX";
    private static final String EXTRA_HOSTNAME = "android.app.HOSTNAME";
    private Handler mHandler;

public abstract class EphemeralResolverService extends InstantAppResolverService {
    /**
     * Called to retrieve resolve info for ephemeral applications.
     *
@@ -74,90 +73,28 @@ public abstract class EphemeralResolverService extends Service {
        throw new IllegalStateException("Must define");
    }

    /**
     * Returns a {@link Looper} to perform service operations on.
     */
    public Looper getLooper() {
        return getBaseContext().getMainLooper();
    }

    @Override
    public final void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        mHandler = new ServiceHandler(getLooper());
    }

    @Override
    public final IBinder onBind(Intent intent) {
        return new IEphemeralResolver.Stub() {
    @Override
            public void getEphemeralResolveInfoList(
                    IRemoteCallback callback, int digestPrefix[], int sequence) {
                final Message msg = mHandler.obtainMessage(
                        ServiceHandler.MSG_GET_EPHEMERAL_RESOLVE_INFO, sequence, 0, callback);
                final Bundle data = new Bundle();
                data.putIntArray(EXTRA_PREFIX, digestPrefix);
                msg.setData(data);
                msg.sendToTarget();
    public Looper getLooper() {
        return super.getLooper();
    }

    @Override
            public void getEphemeralIntentFilterList(
                    IRemoteCallback callback, String hostName, int sequence) {
                final Message msg = mHandler.obtainMessage(
                        ServiceHandler.MSG_GET_EPHEMERAL_INTENT_FILTER, sequence, 0, callback);
                final Bundle data = new Bundle();
                data.putString(EXTRA_HOSTNAME, hostName);
                msg.setData(data);
                msg.sendToTarget();
            }
        };
    void _onGetInstantAppResolveInfo(int[] digestPrefix, InstantAppResolutionCallback callback) {
        final List<EphemeralResolveInfo> response = onGetEphemeralResolveInfo(digestPrefix);
        final int responseSize = response == null ? 0 : response.size();
        final List<InstantAppResolveInfo> resultList = new ArrayList<>(responseSize);
        for (int i = 0; i < responseSize; i++) {
            resultList.add(response.get(i).getInstantAppResolveInfo());
        }

    private final class ServiceHandler extends Handler {
        public static final int MSG_GET_EPHEMERAL_RESOLVE_INFO = 1;
        public static final int MSG_GET_EPHEMERAL_INTENT_FILTER = 2;

        public ServiceHandler(Looper looper) {
            super(looper, null /*callback*/, true /*async*/);
        callback.onInstantAppResolveInfo(resultList);
    }

    @Override
        @SuppressWarnings("unchecked")
        public void handleMessage(Message message) {
            final int action = message.what;
            switch (action) {
                case MSG_GET_EPHEMERAL_RESOLVE_INFO: {
                    final IRemoteCallback callback = (IRemoteCallback) message.obj;
                    final int[] digestPrefix = message.getData().getIntArray(EXTRA_PREFIX);
                    final List<EphemeralResolveInfo> resolveInfo =
                            onGetEphemeralResolveInfo(digestPrefix);
                    final Bundle data = new Bundle();
                    data.putInt(EXTRA_SEQUENCE, message.arg1);
                    data.putParcelableList(EXTRA_RESOLVE_INFO, resolveInfo);
                    try {
                        callback.sendResult(data);
                    } catch (RemoteException e) {
                    }
                } break;

                case MSG_GET_EPHEMERAL_INTENT_FILTER: {
                    final IRemoteCallback callback = (IRemoteCallback) message.obj;
                    final String hostName = message.getData().getString(EXTRA_HOSTNAME);
                    final EphemeralResolveInfo resolveInfo = onGetEphemeralIntentFilter(hostName);
                    final Bundle data = new Bundle();
                    data.putInt(EXTRA_SEQUENCE, message.arg1);
                    data.putParcelable(EXTRA_RESOLVE_INFO, resolveInfo);
                    try {
                        callback.sendResult(data);
                    } catch (RemoteException e) {
                    }
                } break;

                default: {
                    throw new IllegalArgumentException("Unknown message: " + action);
                }
            }
        }
    void _onGetInstantAppIntentFilter(int[] digestPrefix, String hostName,
            InstantAppResolutionCallback callback) {
        final EphemeralResolveInfo response = onGetEphemeralIntentFilter(hostName);
        final List<InstantAppResolveInfo> resultList = new ArrayList<>(1);
        resultList.add(response.getInstantAppResolveInfo());
        callback.onInstantAppResolveInfo(resultList);
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@ package android.app;

import android.os.IRemoteCallback;

/** @hide */
/** @hide @deprecated */
oneway interface IEphemeralResolver {
    void getEphemeralResolveInfoList(IRemoteCallback callback, in int[] digestPrefix,
            int sequence);
Loading