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

Commit a036797e authored by Santiago Seifert's avatar Santiago Seifert Committed by Android (Google) Code Review
Browse files

Merge "Parameterize looper in routing framework" into main

parents b080c240 5071b8bd
Loading
Loading
Loading
Loading
+18 −8
Original line number Diff line number Diff line
@@ -114,6 +114,7 @@ class MediaRouter2ServiceImpl {
            };

    private final Context mContext;
    private final Looper mLooper;
    private final UserManagerInternal mUserManagerInternal;
    private final Object mLock = new Object();
    private final AppOpsManager mAppOpsManager;
@@ -178,8 +179,9 @@ class MediaRouter2ServiceImpl {
                Manifest.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS,
                Manifest.permission.WATCH_APPOPS
            })
    /* package */ MediaRouter2ServiceImpl(Context context) {
    /* package */ MediaRouter2ServiceImpl(@NonNull Context context, @NonNull Looper looper) {
        mContext = context;
        mLooper = looper;
        mActivityManager = mContext.getSystemService(ActivityManager.class);
        mActivityManager.addOnUidImportanceListener(mOnUidImportanceListener,
                REQUIRED_PACKAGE_IMPORTANCE_FOR_SCANNING);
@@ -1891,7 +1893,7 @@ class MediaRouter2ServiceImpl {
    private UserRecord getOrCreateUserRecordLocked(int userId) {
        UserRecord userRecord = mUserRecords.get(userId);
        if (userRecord == null) {
            userRecord = new UserRecord(userId);
            userRecord = new UserRecord(userId, mLooper);
            mUserRecords.put(userId, userRecord);
            userRecord.init();
            if (isUserActiveLocked(userId)) {
@@ -1962,9 +1964,13 @@ class MediaRouter2ServiceImpl {
        Set<String> mActivelyScanningPackages = Set.of();
        final UserHandler mHandler;

        UserRecord(int userId) {
        UserRecord(int userId, @NonNull Looper looper) {
            mUserId = userId;
            mHandler = new UserHandler(MediaRouter2ServiceImpl.this, this);
            mHandler =
                    new UserHandler(
                            /* service= */ MediaRouter2ServiceImpl.this,
                            /* userRecord= */ this,
                            looper);
        }

        void init() {
@@ -2365,12 +2371,16 @@ class MediaRouter2ServiceImpl {
        private boolean mRunning;

        // TODO: (In Android S+) Pull out SystemMediaRoute2Provider out of UserHandler.
        UserHandler(@NonNull MediaRouter2ServiceImpl service, @NonNull UserRecord userRecord) {
            super(Looper.getMainLooper(), null, true);
        UserHandler(
                @NonNull MediaRouter2ServiceImpl service,
                @NonNull UserRecord userRecord,
                @NonNull Looper looper) {
            super(looper, /* callback= */ null, /* async= */ true);
            mServiceRef = new WeakReference<>(service);
            mUserRecord = userRecord;
            mSystemProvider = new SystemMediaRoute2Provider(service.mContext,
                    UserHandle.of(userRecord.mUserId));
            mSystemProvider =
                    new SystemMediaRoute2Provider(
                            service.mContext, UserHandle.of(userRecord.mUserId), looper);
            mRouteProviders.add(mSystemProvider);
            mWatcher = new MediaRoute2ProviderWatcher(service.mContext, this,
                    this, mUserRecord.mUserId);
+6 −4
Original line number Diff line number Diff line
@@ -110,6 +110,7 @@ public final class MediaRouterService extends IMediaRouterService.Stub
    private static final long CONNECTED_TIMEOUT = 60000;

    private final Context mContext;
    private final Looper mLooper;

    // State guarded by mLock.
    private final Object mLock = new Object();
@@ -141,7 +142,8 @@ public final class MediaRouterService extends IMediaRouterService.Stub

    @RequiresPermission(Manifest.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS)
    public MediaRouterService(Context context) {
        mService2 = new MediaRouter2ServiceImpl(context);
        mLooper = Looper.getMainLooper();
        mService2 = new MediaRouter2ServiceImpl(context, mLooper);
        mContext = context;
        Watchdog.getInstance().addMonitor(this);
        Resources res = context.getResources();
@@ -1104,7 +1106,7 @@ public final class MediaRouterService extends IMediaRouterService.Stub

        public UserRecord(int userId) {
            mUserId = userId;
            mHandler = new UserHandler(MediaRouterService.this, this);
            mHandler = new UserHandler(MediaRouterService.this, this, mLooper);
        }

        public void dump(final PrintWriter pw, String prefix) {
@@ -1212,8 +1214,8 @@ public final class MediaRouterService extends IMediaRouterService.Stub
        private long mConnectionTimeoutStartTime;
        private boolean mClientStateUpdateScheduled;

        public UserHandler(MediaRouterService service, UserRecord userRecord) {
            super(Looper.getMainLooper(), null, true);
        private UserHandler(MediaRouterService service, UserRecord userRecord, Looper looper) {
            super(looper, null, true);
            mService = service;
            mUserRecord = userRecord;
            mWatcher = new RemoteDisplayProviderWatcher(service.mContext, this,
+1 −2
Original line number Diff line number Diff line
@@ -86,12 +86,11 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider {
    @GuardedBy("mTransferLock")
    @Nullable private volatile SessionCreationRequest mPendingTransferRequest;

    SystemMediaRoute2Provider(Context context, UserHandle user) {
    SystemMediaRoute2Provider(Context context, UserHandle user, Looper looper) {
        super(COMPONENT_NAME);
        mIsSystemRouteProvider = true;
        mContext = context;
        mUser = user;
        Looper looper = Looper.getMainLooper();
        mHandler = new Handler(looper);

        mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);