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

Commit 6f348778 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Improved implementation of...

Merge "Improved implementation of VoiceInteractionManagerService.setDisabled()" into sc-dev am: 50bbe889

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14940217

Change-Id: Iaf1b2982e5de166b6298a21310a79b22702206c8
parents 78bb87d1 50bbe889
Loading
Loading
Loading
Loading
+33 −24
Original line number Original line Diff line number Diff line
@@ -562,11 +562,10 @@ public class VoiceInteractionManagerService extends SystemService {
        }
        }


        void switchImplementationIfNeededLocked(boolean force) {
        void switchImplementationIfNeededLocked(boolean force) {
            if (!mCurUserSupported || mTemporarilyDisabled) {
            if (!mCurUserSupported) {
                if (DEBUG_USER) {
                if (DEBUG_USER) {
                    Slog.d(TAG, "switchImplementationIfNeeded(): skipping: force= " + force
                    Slog.d(TAG, "switchImplementationIfNeeded(): skipping: force= " + force
                            + "mCurUserSupported=" + mCurUserSupported
                            + "mCurUserSupported=" + mCurUserSupported);
                            + "mTemporarilyDisabled=" + mTemporarilyDisabled);
                }
                }
                if (mImpl != null) {
                if (mImpl != null) {
                    mImpl.shutdownLocked();
                    mImpl.shutdownLocked();
@@ -1048,13 +1047,16 @@ public class VoiceInteractionManagerService extends SystemService {
                    if (DEBUG) Slog.d(TAG, "setDisabled(): already " + disabled);
                    if (DEBUG) Slog.d(TAG, "setDisabled(): already " + disabled);
                    return;
                    return;
                }
                }
                Slog.i(TAG, "setDisabled(): changing to " + disabled);
                final long caller = Binder.clearCallingIdentity();
                try {
                mTemporarilyDisabled = disabled;
                mTemporarilyDisabled = disabled;
                    switchImplementationIfNeeded(/* force= */ false);
                if (mTemporarilyDisabled) {
                } finally {
                    Slog.i(TAG, "setDisabled(): temporarily disabling and hiding current session");
                    Binder.restoreCallingIdentity(caller);
                    try {
                        hideCurrentSession();
                    } catch (RemoteException e) {
                        Log.w(TAG, "Failed to call hideCurrentSession", e);
                    }
                } else {
                    Slog.i(TAG, "setDisabled(): re-enabling");
                }
                }
            }
            }
        }
        }
@@ -1508,12 +1510,20 @@ public class VoiceInteractionManagerService extends SystemService {
        public boolean showSessionForActiveService(Bundle args, int sourceFlags,
        public boolean showSessionForActiveService(Bundle args, int sourceFlags,
                IVoiceInteractionSessionShowCallback showCallback, IBinder activityToken) {
                IVoiceInteractionSessionShowCallback showCallback, IBinder activityToken) {
            enforceCallingPermission(Manifest.permission.ACCESS_VOICE_INTERACTION_SERVICE);
            enforceCallingPermission(Manifest.permission.ACCESS_VOICE_INTERACTION_SERVICE);
            if (DEBUG_USER) Slog.d(TAG, "showSessionForActiveService()");

            synchronized (this) {
            synchronized (this) {
                if (mImpl == null) {
                if (mImpl == null) {
                    Slog.w(TAG, "showSessionForActiveService without running voice interaction"
                    Slog.w(TAG, "showSessionForActiveService without running voice interaction"
                            + "service");
                            + "service");
                    return false;
                    return false;
                }
                }
                if (mTemporarilyDisabled) {
                    Slog.i(TAG, "showSessionForActiveService(): ignored while temporarily "
                            + "disabled");
                    return false;
                }

                final long caller = Binder.clearCallingIdentity();
                final long caller = Binder.clearCallingIdentity();
                try {
                try {
                    return mImpl.showSessionLocked(args,
                    return mImpl.showSessionLocked(args,
@@ -1530,7 +1540,7 @@ public class VoiceInteractionManagerService extends SystemService {
        @Override
        @Override
        public void hideCurrentSession() throws RemoteException {
        public void hideCurrentSession() throws RemoteException {
            enforceCallingPermission(Manifest.permission.ACCESS_VOICE_INTERACTION_SERVICE);
            enforceCallingPermission(Manifest.permission.ACCESS_VOICE_INTERACTION_SERVICE);
            synchronized (this) {

            if (mImpl == null) {
            if (mImpl == null) {
                return;
                return;
            }
            }
@@ -1547,7 +1557,6 @@ public class VoiceInteractionManagerService extends SystemService {
                Binder.restoreCallingIdentity(caller);
                Binder.restoreCallingIdentity(caller);
            }
            }
        }
        }
        }


        @Override
        @Override
        public void launchVoiceAssistFromKeyguard() {
        public void launchVoiceAssistFromKeyguard() {
+1 −0
Original line number Original line Diff line number Diff line
@@ -71,6 +71,7 @@ final class VoiceInteractionManagerServiceShellCommand extends ShellCommand {
            pw.println("");
            pw.println("");
            pw.println("  hide");
            pw.println("  hide");
            pw.println("    Hides the current session");
            pw.println("    Hides the current session");
            pw.println("");
            pw.println("  disable [true|false]");
            pw.println("  disable [true|false]");
            pw.println("    Temporarily disable (when true) service");
            pw.println("    Temporarily disable (when true) service");
            pw.println("");
            pw.println("");