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

Commit cbc93f09 authored by Tony Mak's avatar Tony Mak Committed by android-build-merger
Browse files

Merge "Fix an issue that clicking on a smart action chip on keyguard ......

Merge "Fix an issue that clicking on a smart action chip on keyguard ... failed to launch app resolver when there are more than one app handlers." into qt-dev am: 78a48f55
am: 01ac3d3a

Change-Id: I9d8047f3c823167fe2573f06aac33fc8c295be90
parents 04e9c31f 01ac3d3a
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -19,7 +19,9 @@ package android.view.textclassifier;
import android.annotation.Nullable;
import android.app.Person;
import android.app.RemoteAction;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.Pair;
@@ -200,10 +202,12 @@ public final class ActionsSuggestionsHelper {
        if (remoteAction == null) {
            return null;
        }
        Intent actionIntent = ExtrasUtils.getActionIntent(conversationAction.getExtras());
        ComponentName componentName = actionIntent.getComponent();
        // Action without a component name will be considered as from the same app.
        String packageName = componentName == null ? null : componentName.getPackageName();
        return new Pair<>(
                conversationAction.getAction().getTitle().toString(),
                ExtrasUtils.getActionIntent(
                        conversationAction.getExtras()).getComponent().getPackageName());
                conversationAction.getAction().getTitle().toString(), packageName);
    }

    private static final class PersonEncoder {
+4 −2
Original line number Diff line number Diff line
@@ -118,14 +118,16 @@ public final class LabeledIntent {
            return null;
        }
        Intent resolvedIntent = new Intent(intent);
        resolvedIntent.setComponent(new ComponentName(packageName, className));
        resolvedIntent.putExtra(
                TextClassifier.EXTRA_FROM_TEXT_CLASSIFIER,
                getFromTextClassifierExtra(textLanguagesBundle));

        boolean shouldShowIcon = false;
        Icon icon = null;
        if (!"android".equals(packageName)) {
            // We only set the component name when the package name is not resolved to "android"
            // to workaround a bug that explicit intent with component name == ResolverActivity
            // can't be launched on keyguard.
            resolvedIntent.setComponent(new ComponentName(packageName, className));
            if (resolveInfo.activityInfo.getIconResource() != 0) {
                icon = Icon.createWithResource(
                        packageName, resolveInfo.activityInfo.getIconResource());
+30 −0
Original line number Diff line number Diff line
@@ -208,6 +208,36 @@ public class ActionsSuggestionsHelperTest {
        assertThat(conversationActions.get(2).getAction()).isNull();
    }

    @Test
    public void testDeduplicateActions_nullComponent() {
        Bundle phoneExtras = new Bundle();
        Intent phoneIntent = new Intent(Intent.ACTION_DIAL);
        ExtrasUtils.putActionIntent(phoneExtras, phoneIntent);
        PendingIntent pendingIntent = PendingIntent.getActivity(
                InstrumentationRegistry.getTargetContext(),
                0,
                phoneIntent,
                0);
        Icon icon = Icon.createWithData(new byte[0], 0, 0);
        ConversationAction action =
                new ConversationAction.Builder(ConversationAction.TYPE_CALL_PHONE)
                        .setAction(new RemoteAction(icon, "label", "1", pendingIntent))
                        .setExtras(phoneExtras)
                        .build();
        ConversationAction actionWithSameLabel =
                new ConversationAction.Builder(ConversationAction.TYPE_CALL_PHONE)
                        .setAction(new RemoteAction(
                                icon, "label", "2", pendingIntent))
                        .setExtras(phoneExtras)
                        .build();

        List<ConversationAction> conversationActions =
                ActionsSuggestionsHelper.removeActionsWithDuplicates(
                        Arrays.asList(action, actionWithSameLabel));

        assertThat(conversationActions).isEmpty();
    }

    public void createLabeledIntentResult_null() {
        ActionsSuggestionsModel.ActionSuggestion nativeSuggestion =
                new ActionsSuggestionsModel.ActionSuggestion(