MediaRouter2ServiceImpl: Remove unnecessary notification to managers

When registering a new manager, unnecessary notifications happen.
This CL removes them.

Bug: 145490491
Test: Passed CTS and mediaroutertest
Change-Id: I1d309ea47a537cb855639be9a72268111851ef2e
This commit is contained in:
Hyundo Moon
2020-05-20 14:24:06 +09:00
parent e54c3c811d
commit 38d06dffd3

View File

@@ -808,14 +808,11 @@ class MediaRouter2ServiceImpl {
userRecord.mHandler, manager));
for (RouterRecord routerRecord : userRecord.mRouterRecords) {
// TODO: Do not use notifyPreferredFeaturesChangedToManagers since it updates all
// managers. Instead, Notify only to the manager that is currently being registered.
// TODO: UserRecord <-> routerRecord, why do they reference each other?
// How about removing mUserRecord from routerRecord?
routerRecord.mUserRecord.mHandler.sendMessage(
obtainMessage(UserHandler::notifyPreferredFeaturesChangedToManagers,
routerRecord.mUserRecord.mHandler, routerRecord));
obtainMessage(UserHandler::notifyPreferredFeaturesChangedToManager,
routerRecord.mUserRecord.mHandler, routerRecord, manager));
}
}
@@ -1928,6 +1925,17 @@ class MediaRouter2ServiceImpl {
}
}
private void notifyPreferredFeaturesChangedToManager(@NonNull RouterRecord routerRecord,
@NonNull IMediaRouter2Manager manager) {
try {
manager.notifyPreferredFeaturesChanged(routerRecord.mPackageName,
routerRecord.mDiscoveryPreference.getPreferredFeatures());
} catch (RemoteException ex) {
Slog.w(TAG, "Failed to notify preferred features changed."
+ " Manager probably died.", ex);
}
}
private void notifyPreferredFeaturesChangedToManagers(@NonNull RouterRecord routerRecord) {
MediaRouter2ServiceImpl service = mServiceRef.get();
if (service == null) {