Merge "SystemMediaRoute2Provider: Set callback after instantiation is done" into rvc-dev am: 28932f9ecb
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11882912 Change-Id: If8e75bccfaf71dc9d690b80aa8ea805e3dd806e1
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user