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

This commit is contained in:
TreeHugger Robot
2020-06-18 12:21:50 +00:00
committed by Android (Google) Code Review
2 changed files with 23 additions and 4 deletions

View File

@@ -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;

View File

@@ -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);