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

Commit 812b9f6e authored by Santiago Seifert's avatar Santiago Seifert Committed by Automerger Merge Worker
Browse files

Use UserSwitchObserver to detect switches in the running user am: 2be074c0

parents 197dab44 2be074c0
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -602,9 +602,8 @@ class MediaRouter2ServiceImpl {
    }

    // TODO(b/136703681): Review this is handling multi-user properly.
    void switchUser() {
    void switchUser(int userId) {
        synchronized (mLock) {
            int userId = ActivityManager.getCurrentUser();
            if (mCurrentUserId != userId) {
                final int oldUserId = mCurrentUserId;
                mCurrentUserId = userId; // do this first
+25 −15
Original line number Diff line number Diff line
@@ -17,7 +17,9 @@
package com.android.server.media;

import android.annotation.NonNull;
import android.annotation.RequiresPermission;
import android.app.ActivityManager;
import android.app.UserSwitchObserver;
import android.bluetooth.BluetoothA2dp;
import android.bluetooth.BluetoothDevice;
import android.content.BroadcastReceiver;
@@ -217,18 +219,27 @@ public final class MediaRouterService extends IMediaRouterService.Stub
        context.registerReceiverAsUser(mReceiver, UserHandle.ALL, intentFilter, null, null);
    }

    public void systemRunning() {
        IntentFilter filter = new IntentFilter(Intent.ACTION_USER_SWITCHED);
        mContext.registerReceiver(new BroadcastReceiver() {
    /**
     * Initializes the MediaRouter service.
     *
     * @throws RemoteException If an error occurs while registering the {@link UserSwitchObserver}.
     */
    @RequiresPermission(
            anyOf = {
                "android.permission.INTERACT_ACROSS_USERS",
                "android.permission.INTERACT_ACROSS_USERS_FULL"
            })
    public void systemRunning() throws RemoteException {
        ActivityManager.getService()
                .registerUserSwitchObserver(
                        new UserSwitchObserver() {
                            @Override
            public void onReceive(Context context, Intent intent) {
                if (intent.getAction().equals(Intent.ACTION_USER_SWITCHED)) {
                    switchUser();
                }
                            public void onUserSwitchComplete(int newUserId) {
                                switchUser(newUserId);
                            }
        }, filter);

        switchUser();
                        },
                        TAG);
        switchUser(ActivityManager.getCurrentUser());
    }

    @Override
@@ -702,9 +713,8 @@ public final class MediaRouterService extends IMediaRouterService.Stub
        }
    }

    void switchUser() {
    void switchUser(int userId) {
        synchronized (mLock) {
            int userId = ActivityManager.getCurrentUser();
            if (mCurrentUserId != userId) {
                final int oldUserId = mCurrentUserId;
                mCurrentUserId = userId; // do this first
@@ -721,7 +731,7 @@ public final class MediaRouterService extends IMediaRouterService.Stub
                }
            }
        }
        mService2.switchUser();
        mService2.switchUser(userId);
    }

    void clientDied(ClientRecord clientRecord) {