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

Commit 1d0c4839 authored by Hai Zhang's avatar Hai Zhang Committed by android-build-merger
Browse files

Merge "Keep "None" set for assistant upon device upgrade." into qt-qpr1-dev

am: cdd60932

Change-Id: I76cc779c1d1906ac46509ffb8ac0be9a56b01807
parents b10968d5 cdd60932
Loading
Loading
Loading
Loading
+16 −0
Original line number Original line Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.packageinstaller.role.model;


import android.app.ActivityManager;
import android.app.ActivityManager;
import android.app.Application;
import android.app.Application;
import android.app.role.RoleManager;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager;
@@ -25,6 +26,7 @@ import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
import android.content.pm.ServiceInfo;
import android.content.res.Resources;
import android.content.res.Resources;
import android.content.res.XmlResourceParser;
import android.content.res.XmlResourceParser;
import android.os.Process;
import android.os.UserHandle;
import android.os.UserHandle;
import android.provider.Settings;
import android.provider.Settings;
import android.service.voice.VoiceInteractionService;
import android.service.voice.VoiceInteractionService;
@@ -58,6 +60,20 @@ public class AssistantRoleBehavior implements RoleBehavior {
            new Intent(VoiceInteractionService.SERVICE_INTERFACE);
            new Intent(VoiceInteractionService.SERVICE_INTERFACE);
    private static final Intent ASSIST_ACTIVITY_PROBE = new Intent(Intent.ACTION_ASSIST);
    private static final Intent ASSIST_ACTIVITY_PROBE = new Intent(Intent.ACTION_ASSIST);


    @Override
    public void onRoleAdded(@NonNull Role role, @NonNull Context context) {
        PackageManager packageManager = context.getPackageManager();
        if (packageManager.isDeviceUpgrading()) {
            RoleManager roleManager = context.getSystemService(RoleManager.class);
            List<String> packageNames = roleManager.getRoleHolders(role.getName());
            if (packageNames.isEmpty()) {
                // If the device was upgraded, and there isn't any legacy role holders, it means
                // user selected "None" in Settings and we need to keep that.
                role.onNoneHolderSelectedAsUser(Process.myUserHandle(), context);
            }
        }
    }

    @Override
    @Override
    public boolean isAvailableAsUser(@NonNull Role role, @NonNull UserHandle user,
    public boolean isAvailableAsUser(@NonNull Role role, @NonNull UserHandle user,
            @NonNull Context context) {
            @NonNull Context context) {
+11 −0
Original line number Original line Diff line number Diff line
@@ -253,6 +253,17 @@ public class Role {
        return mPreferredActivities;
        return mPreferredActivities;
    }
    }


    /**
     * Callback when this role is added to the system for the first time.
     *
     * @param context the {@code Context} to retrieve system services
     */
    public void onRoleAdded(@NonNull Context context) {
        if (mBehavior != null) {
            mBehavior.onRoleAdded(this, context);
        }
    }

    /**
    /**
     * Check whether this role is available.
     * Check whether this role is available.
     *
     *
+5 −0
Original line number Original line Diff line number Diff line
@@ -35,6 +35,11 @@ import java.util.List;
 */
 */
public interface RoleBehavior {
public interface RoleBehavior {


    /**
     * @see Role#onRoleAdded(Context)
     */
    default void onRoleAdded(@NonNull Role role, @NonNull Context context) {}

    /**
    /**
     * @see Role#isAvailableAsUser(UserHandle, Context)
     * @see Role#isAvailableAsUser(UserHandle, Context)
     */
     */
+8 −0
Original line number Original line Diff line number Diff line
@@ -89,6 +89,14 @@ public class RoleControllerServiceImpl extends RoleControllerService {
        // Set the available role names in RoleManager.
        // Set the available role names in RoleManager.
        mRoleManager.setRoleNamesFromController(roleNames);
        mRoleManager.setRoleNamesFromController(roleNames);


        int addedRoleNamesSize = addedRoleNames.size();
        for (int i = 0; i < addedRoleNamesSize; i++) {
            String roleName = addedRoleNames.valueAt(i);

            Role role = roleMap.get(roleName);
            role.onRoleAdded(this);
        }

        // Go through the holders of all roles.
        // Go through the holders of all roles.
        int rolesSize = roles.size();
        int rolesSize = roles.size();
        for (int rolesIndex = 0; rolesIndex < rolesSize; rolesIndex++) {
        for (int rolesIndex = 0; rolesIndex < rolesSize; rolesIndex++) {