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

Commit 8b352b94 authored by Song Hu's avatar Song Hu
Browse files

Add sharesheet logging for empty direct share row and app share

prediction timeout.

Bug: 189833783
Test: atest ChooserActivityTest & manual verification
Change-Id: Id24c6a2495b6a4f778b14028ee5ab975d88e9870
parent 3f1a2f87
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -64,6 +64,7 @@ public abstract class AbstractResolverComparator implements Comparator<ResolvedC
    private static final int WATCHDOG_TIMEOUT_MILLIS = 500;

    private final Comparator<ResolveInfo> mAzComparator;
    private ChooserActivityLogger mChooserActivityLogger;

    protected final Handler mHandler = new Handler(Looper.getMainLooper()) {
        public void handleMessage(Message msg) {
@@ -85,6 +86,9 @@ public abstract class AbstractResolverComparator implements Comparator<ResolvedC
                    }
                    mHandler.removeMessages(RANKER_SERVICE_RESULT);
                    afterCompute();
                    if (mChooserActivityLogger != null) {
                        mChooserActivityLogger.logSharesheetAppShareRankingTimeout();
                    }
                    break;

                default:
@@ -131,6 +135,14 @@ public abstract class AbstractResolverComparator implements Comparator<ResolvedC
        mAfterCompute = afterCompute;
    }

    void setChooserActivityLogger(ChooserActivityLogger chooserActivityLogger) {
        mChooserActivityLogger = chooserActivityLogger;
    }

    ChooserActivityLogger getChooserActivityLogger() {
        return mChooserActivityLogger;
    }

    protected final void afterCompute() {
        final AfterCompute afterCompute = mAfterCompute;
        if (afterCompute != null) {
+10 −7
Original line number Diff line number Diff line
@@ -65,13 +65,15 @@ class AppPredictionServiceResolverComparator extends AbstractResolverComparator
            Intent intent,
            String referrerPackage,
            AppPredictor appPredictor,
                UserHandle user) {
            UserHandle user,
            ChooserActivityLogger chooserActivityLogger) {
        super(context, intent);
        mContext = context;
        mIntent = intent;
        mAppPredictor = appPredictor;
        mUser = user;
        mReferrerPackage = referrerPackage;
        setChooserActivityLogger(chooserActivityLogger);
    }

    @Override
@@ -117,7 +119,8 @@ class AppPredictionServiceResolverComparator extends AbstractResolverComparator
                        mResolverRankerService =
                                new ResolverRankerServiceResolverComparator(
                                        mContext, mIntent, mReferrerPackage,
                                        () -> mHandler.sendEmptyMessage(RANKER_SERVICE_RESULT));
                                        () -> mHandler.sendEmptyMessage(RANKER_SERVICE_RESULT),
                                        getChooserActivityLogger());
                        mResolverRankerService.compute(targets);
                    } else {
                        Log.i(TAG, "AppPredictionService response received");
+4 −3
Original line number Diff line number Diff line
@@ -2590,7 +2590,8 @@ public class ChooserActivity extends ResolverActivity implements
            boolean filterLastUsed, ResolverListController resolverListController) {
        return new ChooserListAdapter(context, payloadIntents, initialIntents, rList,
                filterLastUsed, resolverListController, this,
                this, context.getPackageManager());
                this, context.getPackageManager(),
                getChooserActivityLogger());
    }

    @VisibleForTesting
@@ -2599,11 +2600,11 @@ public class ChooserActivity extends ResolverActivity implements
        AbstractResolverComparator resolverComparator;
        if (appPredictor != null) {
            resolverComparator = new AppPredictionServiceResolverComparator(this, getTargetIntent(),
                    getReferrerPackageName(), appPredictor, userHandle);
                    getReferrerPackageName(), appPredictor, userHandle, getChooserActivityLogger());
        } else {
            resolverComparator =
                    new ResolverRankerServiceResolverComparator(this, getTargetIntent(),
                        getReferrerPackageName(), null);
                        getReferrerPackageName(), null, getChooserActivityLogger());
        }

        return new ChooserListController(
+19 −1
Original line number Diff line number Diff line
@@ -74,6 +74,20 @@ public interface ChooserActivityLogger {
                SharesheetStandardEvent.SHARESHEET_EXPANDED, getInstanceId());
    }

    /**
     * Logs a UiEventReported event for the system sharesheet app share ranking timing out.
     */
    default void logSharesheetAppShareRankingTimeout() {
        log(SharesheetStandardEvent.SHARESHEET_APP_SHARE_RANKING_TIMEOUT, getInstanceId());
    }

    /**
     * Logs a UiEventReported event for the system sharesheet when direct share row is empty.
     */
    default void logSharesheetEmptyDirectShareRow() {
        log(SharesheetStandardEvent.SHARESHEET_EMPTY_DIRECT_SHARE_ROW, getInstanceId());
    }

    /**
     * Logs a UiEventReported event for a given share activity
     * @param event
@@ -168,7 +182,11 @@ public interface ChooserActivityLogger {
        @UiEvent(doc = "Sharesheet direct targets is fully populated.")
        SHARESHEET_DIRECT_LOAD_COMPLETE(323),
        @UiEvent(doc = "Sharesheet direct targets timed out.")
        SHARESHEET_DIRECT_LOAD_TIMEOUT(324);
        SHARESHEET_DIRECT_LOAD_TIMEOUT(324),
        @UiEvent(doc = "Sharesheet app share ranking timed out.")
        SHARESHEET_APP_SHARE_RANKING_TIMEOUT(831),
        @UiEvent(doc = "Sharesheet empty direct share row.")
        SHARESHEET_EMPTY_DIRECT_SHARE_ROW(828);

        private final int mId;
        SharesheetStandardEvent(int id) {
+5 −1
Original line number Diff line number Diff line
@@ -79,6 +79,7 @@ public class ChooserListAdapter extends ResolverListAdapter {
    private final ChooserListCommunicator mChooserListCommunicator;
    private final SelectableTargetInfo.SelectableTargetInfoCommunicator
            mSelectableTargetInfoCommunicator;
    private final ChooserActivityLogger mChooserActivityLogger;

    private int mNumShortcutResults = 0;
    private Map<DisplayResolveInfo, LoadIconTask> mIconLoaders = new HashMap<>();
@@ -104,7 +105,8 @@ public class ChooserListAdapter extends ResolverListAdapter {
            boolean filterLastUsed, ResolverListController resolverListController,
            ChooserListCommunicator chooserListCommunicator,
            SelectableTargetInfo.SelectableTargetInfoCommunicator selectableTargetInfoCommunicator,
            PackageManager packageManager) {
            PackageManager packageManager,
            ChooserActivityLogger chooserActivityLogger) {
        // Don't send the initial intents through the shared ResolverActivity path,
        // we want to separate them into a different section.
        super(context, payloadIntents, null, rList, filterLastUsed,
@@ -115,6 +117,7 @@ public class ChooserListAdapter extends ResolverListAdapter {
        mChooserListCommunicator = chooserListCommunicator;
        createPlaceHolders();
        mSelectableTargetInfoCommunicator = selectableTargetInfoCommunicator;
        mChooserActivityLogger = chooserActivityLogger;

        if (initialIntents != null) {
            for (int i = 0; i < initialIntents.length; i++) {
@@ -590,6 +593,7 @@ public class ChooserListAdapter extends ResolverListAdapter {
        mServiceTargets.removeIf(o -> o instanceof ChooserActivity.PlaceHolderTargetInfo);
        if (mServiceTargets.isEmpty()) {
            mServiceTargets.add(new ChooserActivity.EmptyTargetInfo());
            mChooserActivityLogger.logSharesheetEmptyDirectShareRow();
        }
        notifyDataSetChanged();
    }
Loading