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

Commit e9563659 authored by Dianne Hackborn's avatar Dianne Hackborn
Browse files

Fix issue #30929080: Default Assist app is set to None...

...on removing the third pary search app

We weren't taking into account old style assistants when determining
whether something interesting had been removed.

Change-Id: I6b7b09cdf0781622924e10556d678565570dbd05
parent 6af2db38
Loading
Loading
Loading
Loading
+28 −0
Original line number Original line Diff line number Diff line
@@ -535,6 +535,18 @@ public class VoiceInteractionManagerService extends SystemService {
                    + " user=" + userHandle);
                    + " user=" + userHandle);
        }
        }


        ComponentName getCurAssistant(int userHandle) {
            String curAssistant = Settings.Secure.getStringForUser(
                    mContext.getContentResolver(),
                    Settings.Secure.ASSISTANT, userHandle);
            if (TextUtils.isEmpty(curAssistant)) {
                return null;
            }
            if (DEBUG) Slog.d(TAG, "getCurAssistant curAssistant=" + curAssistant
                    + " user=" + userHandle);
            return ComponentName.unflattenFromString(curAssistant);
        }

        void resetCurAssistant(int userHandle) {
        void resetCurAssistant(int userHandle) {
            Settings.Secure.putStringForUser(mContext.getContentResolver(),
            Settings.Secure.putStringForUser(mContext.getContentResolver(),
                    Settings.Secure.ASSISTANT, null, userHandle);
                    Settings.Secure.ASSISTANT, null, userHandle);
@@ -1178,6 +1190,7 @@ public class VoiceInteractionManagerService extends SystemService {
                synchronized (VoiceInteractionManagerServiceStub.this) {
                synchronized (VoiceInteractionManagerServiceStub.this) {
                    ComponentName curInteractor = getCurInteractor(userHandle);
                    ComponentName curInteractor = getCurInteractor(userHandle);
                    ComponentName curRecognizer = getCurRecognizer(userHandle);
                    ComponentName curRecognizer = getCurRecognizer(userHandle);
                    ComponentName curAssistant = getCurAssistant(userHandle);
                    if (curRecognizer == null) {
                    if (curRecognizer == null) {
                        // Could a new recognizer appear when we don't have one pre-installed?
                        // Could a new recognizer appear when we don't have one pre-installed?
                        if (anyPackagesAppearing()) {
                        if (anyPackagesAppearing()) {
@@ -1196,6 +1209,7 @@ public class VoiceInteractionManagerService extends SystemService {
                            // the default config.
                            // the default config.
                            setCurInteractor(null, userHandle);
                            setCurInteractor(null, userHandle);
                            setCurRecognizer(null, userHandle);
                            setCurRecognizer(null, userHandle);
                            resetCurAssistant(userHandle);
                            initForUser(userHandle);
                            initForUser(userHandle);
                            return;
                            return;
                        }
                        }
@@ -1212,6 +1226,20 @@ public class VoiceInteractionManagerService extends SystemService {
                        return;
                        return;
                    }
                    }


                    if (curAssistant != null) {
                        int change = isPackageDisappearing(curAssistant.getPackageName());
                        if (change == PACKAGE_PERMANENT_CHANGE) {
                            // If the currently set assistant is being removed, then we should
                            // reset back to the default state (which is probably that we prefer
                            // to have the default full voice interactor enabled).
                            setCurInteractor(null, userHandle);
                            setCurRecognizer(null, userHandle);
                            resetCurAssistant(userHandle);
                            initForUser(userHandle);
                            return;
                        }
                    }

                    // There is no interactor, so just deal with a simple recognizer.
                    // There is no interactor, so just deal with a simple recognizer.
                    int change = isPackageDisappearing(curRecognizer.getPackageName());
                    int change = isPackageDisappearing(curRecognizer.getPackageName());
                    if (change == PACKAGE_PERMANENT_CHANGE
                    if (change == PACKAGE_PERMANENT_CHANGE