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

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

Merge "Sharesheet - run APS sortTargets in newSingleThreadExecutor" into qt-dev

parents ba3a49b0 ccb0cbcc
Loading
Loading
Loading
Loading
+10 −11
Original line number Diff line number Diff line
@@ -26,7 +26,6 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ResolveInfo;
import android.os.Handler;
import android.os.Message;
import android.os.UserHandle;
import android.util.Log;
@@ -37,6 +36,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Executors;

/**
 * Uses an {@link AppPredictor} to sort Resolver targets. If the AppPredictionService appears to be
@@ -46,7 +46,7 @@ import java.util.Map;
class AppPredictionServiceResolverComparator extends AbstractResolverComparator {

    private static final String TAG = "APSResolverComparator";
    private static final long DELAY_COMPUTE_WHEN_DEFAULTING_TO_RESOLVER_MILLIS = 200;
    private static final boolean DEBUG = false;

    private final AppPredictor mAppPredictor;
    private final Context mContext;
@@ -103,23 +103,22 @@ class AppPredictionServiceResolverComparator extends AbstractResolverComparator
                    .setTarget(target.name.getPackageName(), mUser)
                    .setClassName(target.name.getClassName()).build());
        }
        mAppPredictor.sortTargets(appTargets, mContext.getMainExecutor(),
        mAppPredictor.sortTargets(appTargets, Executors.newSingleThreadExecutor(),
                sortedAppTargets -> {
                    if (sortedAppTargets.isEmpty()) {
                        if (DEBUG) {
                            Log.d(TAG, "AppPredictionService disabled. Using resolver.");
                        }
                        // APS for chooser is disabled. Fallback to resolver.
                        mResolverRankerService =
                                new ResolverRankerServiceResolverComparator(
                                    mContext, mIntent, mReferrerPackage,
                                        () -> mHandler.sendEmptyMessage(RANKER_SERVICE_RESULT));
                        mResolverRankerService.initRanker(mContext);
                        Handler computeHandler =
                                new Handler(msg -> {
                        mResolverRankerService.compute(targets);
                                    return true;
                                });
                        computeHandler.sendEmptyMessageDelayed(
                                0, DELAY_COMPUTE_WHEN_DEFAULTING_TO_RESOLVER_MILLIS);
                    } else {
                        if (DEBUG) {
                            Log.d(TAG, "AppPredictionService response received");
                        }
                        Message msg =
                            Message.obtain(mHandler, RANKER_SERVICE_RESULT, sortedAppTargets);
                        msg.sendToTarget();
+1 −1
Original line number Diff line number Diff line
@@ -315,7 +315,7 @@ class ResolverRankerServiceResolverComparator extends AbstractResolverComparator
    }

    // connect to a ranking service.
    void initRanker(Context context) {
    private void initRanker(Context context) {
        synchronized (mLock) {
            if (mConnection != null && mRanker != null) {
                if (DEBUG) {