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

Commit 6005b3f8 authored by Fyodor Kupolov's avatar Fyodor Kupolov
Browse files

Added SynchronousUserSwitchObserver

This class provides a synchronous version of onUserSwitching, which does not
require notifying a callback.

Bug: 25816558
Change-Id: Id31bb79bf10b5afd72dfca28cf4bea817e726f6f
parent 6449a956
Loading
Loading
Loading
Loading
+48 −0
Original line number Original line Diff line number Diff line
/*
 * Copyright (C) 2015 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License
 */

package android.app;

import android.os.Bundle;
import android.os.IRemoteCallback;
import android.os.RemoteException;

/**
 * Base class for synchronous implementations of {@link IUserSwitchObserver}
 *
 * @hide
 */
public abstract class SynchronousUserSwitchObserver extends IUserSwitchObserver.Stub {
    /**
     * Calls {@link #onUserSwitching(int)} and notifies {@code reply} by calling
     * {@link IRemoteCallback#sendResult(Bundle)}.
     */
    @Override
    public final void onUserSwitching(int newUserId, IRemoteCallback reply) throws RemoteException {
        try {
            onUserSwitching(newUserId);
        } finally {
            if (reply != null) {
                reply.sendResult(null);
            }
        }
    }

    /**
     * Synchronous version of {@link IUserSwitchObserver#onUserSwitching(int, IRemoteCallback)}
     */
    public abstract void onUserSwitching(int newUserId) throws RemoteException;
}
+4 −11
Original line number Original line Diff line number Diff line
@@ -19,8 +19,8 @@ package com.android.systemui.statusbar.phone;
import android.app.ActivityManagerNative;
import android.app.ActivityManagerNative;
import android.app.AlarmManager;
import android.app.AlarmManager;
import android.app.AlarmManager.AlarmClockInfo;
import android.app.AlarmManager.AlarmClockInfo;
import android.app.IUserSwitchObserver;
import android.app.StatusBarManager;
import android.app.StatusBarManager;
import android.app.SynchronousUserSwitchObserver;
import android.content.BroadcastReceiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.Intent;
@@ -28,7 +28,6 @@ import android.content.IntentFilter;
import android.content.pm.UserInfo;
import android.content.pm.UserInfo;
import android.media.AudioManager;
import android.media.AudioManager;
import android.os.Handler;
import android.os.Handler;
import android.os.IRemoteCallback;
import android.os.RemoteException;
import android.os.RemoteException;
import android.os.UserHandle;
import android.os.UserHandle;
import android.os.UserManager;
import android.os.UserManager;
@@ -378,17 +377,11 @@ public class PhoneStatusBarPolicy implements Callback {
        }
        }
    }
    }


    private final IUserSwitchObserver.Stub mUserSwitchListener =
    private final SynchronousUserSwitchObserver mUserSwitchListener =
            new IUserSwitchObserver.Stub() {
            new SynchronousUserSwitchObserver() {
                @Override
                @Override
                public void onUserSwitching(int newUserId, IRemoteCallback reply) {
                public void onUserSwitching(int newUserId) throws RemoteException {
                    mUserInfoController.reloadUserInfo();
                    mUserInfoController.reloadUserInfo();
                    if (reply != null) {
                        try {
                            reply.sendResult(null);
                        } catch (RemoteException e) {
                        }
                    }
                }
                }


                @Override
                @Override
+4 −10
Original line number Original line Diff line number Diff line
@@ -43,11 +43,11 @@ import android.app.ActivityManagerNative;
import android.app.AlertDialog;
import android.app.AlertDialog;
import android.app.AppGlobals;
import android.app.AppGlobals;
import android.app.AppOpsManager;
import android.app.AppOpsManager;
import android.app.IUserSwitchObserver;
import android.app.KeyguardManager;
import android.app.KeyguardManager;
import android.app.Notification;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.PendingIntent;
import android.app.SynchronousUserSwitchObserver;
import android.content.BroadcastReceiver;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.ContentResolver;
@@ -80,7 +80,6 @@ import android.os.Environment;
import android.os.Handler;
import android.os.Handler;
import android.os.IBinder;
import android.os.IBinder;
import android.os.IInterface;
import android.os.IInterface;
import android.os.IRemoteCallback;
import android.os.Message;
import android.os.Message;
import android.os.Parcel;
import android.os.Parcel;
import android.os.Process;
import android.os.Process;
@@ -788,18 +787,13 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
        int userId = 0;
        int userId = 0;
        try {
        try {
            ActivityManagerNative.getDefault().registerUserSwitchObserver(
            ActivityManagerNative.getDefault().registerUserSwitchObserver(
                    new IUserSwitchObserver.Stub() {
                    new SynchronousUserSwitchObserver() {
                        @Override
                        @Override
                        public void onUserSwitching(int newUserId, IRemoteCallback reply) {
                        public void onUserSwitching(int newUserId)
                                throws RemoteException {
                            synchronized(mMethodMap) {
                            synchronized(mMethodMap) {
                                switchUserLocked(newUserId);
                                switchUserLocked(newUserId);
                            }
                            }
                            if (reply != null) {
                                try {
                                    reply.sendResult(null);
                                } catch (RemoteException e) {
                                }
                            }
                        }
                        }


                        @Override
                        @Override
+3 −10
Original line number Original line Diff line number Diff line
@@ -29,7 +29,7 @@ import org.xmlpull.v1.XmlPullParserException;


import android.app.ActivityManagerNative;
import android.app.ActivityManagerNative;
import android.app.AppGlobals;
import android.app.AppGlobals;
import android.app.IUserSwitchObserver;
import android.app.SynchronousUserSwitchObserver;
import android.content.BroadcastReceiver;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.ContentResolver;
@@ -45,7 +45,6 @@ import android.content.pm.UserInfo;
import android.os.Binder;
import android.os.Binder;
import android.os.Bundle;
import android.os.Bundle;
import android.os.IBinder;
import android.os.IBinder;
import android.os.IRemoteCallback;
import android.os.Process;
import android.os.Process;
import android.os.RemoteException;
import android.os.RemoteException;
import android.os.UserHandle;
import android.os.UserHandle;
@@ -102,18 +101,12 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
        int userId = UserHandle.USER_SYSTEM;
        int userId = UserHandle.USER_SYSTEM;
        try {
        try {
            ActivityManagerNative.getDefault().registerUserSwitchObserver(
            ActivityManagerNative.getDefault().registerUserSwitchObserver(
                    new IUserSwitchObserver.Stub() {
                    new SynchronousUserSwitchObserver() {
                        @Override
                        @Override
                        public void onUserSwitching(int newUserId, IRemoteCallback reply) {
                        public void onUserSwitching(int newUserId) throws RemoteException {
                            synchronized(mSpellCheckerMap) {
                            synchronized(mSpellCheckerMap) {
                                switchUserLocked(newUserId);
                                switchUserLocked(newUserId);
                            }
                            }
                            if (reply != null) {
                                try {
                                    reply.sendResult(null);
                                } catch (RemoteException e) {
                                }
                            }
                        }
                        }


                        @Override
                        @Override
+3 −11
Original line number Original line Diff line number Diff line
@@ -19,12 +19,11 @@ package com.android.server.fingerprint;
import android.Manifest;
import android.Manifest;
import android.app.ActivityManager;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningAppProcessInfo;
import android.app.ActivityManager.RunningAppProcessInfo;
import android.app.ActivityManager.RunningTaskInfo;
import android.app.ActivityManagerNative;
import android.app.ActivityManagerNative;
import android.app.AlarmManager;
import android.app.AlarmManager;
import android.app.AppOpsManager;
import android.app.AppOpsManager;
import android.app.IUserSwitchObserver;
import android.app.PendingIntent;
import android.app.PendingIntent;
import android.app.SynchronousUserSwitchObserver;
import android.content.ComponentName;
import android.content.ComponentName;
import android.content.BroadcastReceiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Context;
@@ -38,7 +37,6 @@ import android.os.DeadObjectException;
import android.os.Environment;
import android.os.Environment;
import android.os.Handler;
import android.os.Handler;
import android.os.IBinder;
import android.os.IBinder;
import android.os.IRemoteCallback;
import android.os.PowerManager;
import android.os.PowerManager;
import android.os.RemoteException;
import android.os.RemoteException;
import android.os.SELinux;
import android.os.SELinux;
@@ -1134,17 +1132,11 @@ public class FingerprintService extends SystemService implements IBinder.DeathRe
    private void listenForUserSwitches() {
    private void listenForUserSwitches() {
        try {
        try {
            ActivityManagerNative.getDefault().registerUserSwitchObserver(
            ActivityManagerNative.getDefault().registerUserSwitchObserver(
                new IUserSwitchObserver.Stub() {
                new SynchronousUserSwitchObserver() {
                    @Override
                    @Override
                    public void onUserSwitching(int newUserId, IRemoteCallback reply) {
                    public void onUserSwitching(int newUserId) throws RemoteException {
                        mHandler.obtainMessage(MSG_USER_SWITCHING, newUserId, 0 /* unused */)
                        mHandler.obtainMessage(MSG_USER_SWITCHING, newUserId, 0 /* unused */)
                                .sendToTarget();
                                .sendToTarget();
                        if (reply != null) {
                            try {
                                reply.sendResult(null);
                            } catch (RemoteException e) {
                            }
                        }
                    }
                    }
                    @Override
                    @Override
                    public void onUserSwitchComplete(int newUserId) throws RemoteException {
                    public void onUserSwitchComplete(int newUserId) throws RemoteException {