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

Commit 28932f9e authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "SystemMediaRoute2Provider: Set callback after instantiation is done" into rvc-dev

parents 42472cb3 aa80375e
Loading
Loading
Loading
Loading
+11 −1
Original line number Original line Diff line number Diff line
@@ -985,6 +985,7 @@ class MediaRouter2ServiceImpl {
        if (userRecord == null) {
        if (userRecord == null) {
            userRecord = new UserRecord(userId);
            userRecord = new UserRecord(userId);
            mUserRecords.put(userId, userRecord);
            mUserRecords.put(userId, userRecord);
            userRecord.init();
            if (userId == mCurrentUserId) {
            if (userId == mCurrentUserId) {
                userRecord.mHandler.sendMessage(
                userRecord.mHandler.sendMessage(
                        obtainMessage(UserHandler::start, userRecord.mHandler));
                        obtainMessage(UserHandler::start, userRecord.mHandler));
@@ -1034,6 +1035,10 @@ class MediaRouter2ServiceImpl {
            mHandler = new UserHandler(MediaRouter2ServiceImpl.this, this);
            mHandler = new UserHandler(MediaRouter2ServiceImpl.this, this);
        }
        }


        void init() {
            mHandler.init();
        }

        // TODO: This assumes that only one router exists in a package.
        // TODO: This assumes that only one router exists in a package.
        //       Do this in Android S or later.
        //       Do this in Android S or later.
        RouterRecord findRouterRecordLocked(String packageName) {
        RouterRecord findRouterRecordLocked(String packageName) {
@@ -1141,16 +1146,21 @@ class MediaRouter2ServiceImpl {


        private boolean mRunning;
        private boolean mRunning;


        // TODO: (In Android S+) Pull out SystemMediaRoute2Provider out of UserHandler.
        UserHandler(@NonNull MediaRouter2ServiceImpl service, @NonNull UserRecord userRecord) {
        UserHandler(@NonNull MediaRouter2ServiceImpl service, @NonNull UserRecord userRecord) {
            super(Looper.getMainLooper(), null, true);
            super(Looper.getMainLooper(), null, true);
            mServiceRef = new WeakReference<>(service);
            mServiceRef = new WeakReference<>(service);
            mUserRecord = userRecord;
            mUserRecord = userRecord;
            mSystemProvider = new SystemMediaRoute2Provider(service.mContext, this);
            mSystemProvider = new SystemMediaRoute2Provider(service.mContext);
            mRouteProviders.add(mSystemProvider);
            mRouteProviders.add(mSystemProvider);
            mWatcher = new MediaRoute2ProviderWatcher(service.mContext, this,
            mWatcher = new MediaRoute2ProviderWatcher(service.mContext, this,
                    this, mUserRecord.mUserId);
                    this, mUserRecord.mUserId);
        }
        }


        void init() {
            mSystemProvider.setCallback(this);
        }

        private void start() {
        private void start() {
            if (!mRunning) {
            if (!mRunning) {
                mRunning = true;
                mRunning = true;
+12 −3
Original line number Original line Diff line number Diff line
@@ -98,12 +98,10 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider {
        }
        }
    };
    };


    SystemMediaRoute2Provider(Context context, Callback callback) {
    SystemMediaRoute2Provider(Context context) {
        super(sComponentName);
        super(sComponentName);
        setCallback(callback);


        mIsSystemRouteProvider = true;
        mIsSystemRouteProvider = true;

        mContext = context;
        mContext = context;
        mHandler = new Handler(Looper.getMainLooper());
        mHandler = new Handler(Looper.getMainLooper());


@@ -142,6 +140,13 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider {
        updateVolume();
        updateVolume();
    }
    }


    @Override
    public void setCallback(Callback callback) {
        super.setCallback(callback);
        notifyProviderState();
        notifySessionInfoUpdated();
    }

    @Override
    @Override
    public void requestCreateSession(long requestId, String packageName, String routeId,
    public void requestCreateSession(long requestId, String packageName, String routeId,
            Bundle sessionHints) {
            Bundle sessionHints) {
@@ -354,6 +359,10 @@ class SystemMediaRoute2Provider extends MediaRoute2Provider {
    }
    }


    void notifySessionInfoUpdated() {
    void notifySessionInfoUpdated() {
        if (mCallback == null) {
            return;
        }

        RoutingSessionInfo sessionInfo;
        RoutingSessionInfo sessionInfo;
        synchronized (mLock) {
        synchronized (mLock) {
            sessionInfo = mSessionInfos.get(0);
            sessionInfo = mSessionInfos.get(0);