Do not forget to sendToTarget() in StorageMS
Add missing sendToTarget() call in StorageMananagerService#registerCloudProviderChangeListener Bug: 218361620 Test: atest CtsPhotoPickerTest Change-Id: I7e893cb0e71bf0a2a2ec411f4e90a616a941a714
This commit is contained in:
@@ -802,12 +802,20 @@ class StorageManagerService extends IStorageManager.Stub
|
||||
break;
|
||||
}
|
||||
case H_CLOUD_MEDIA_PROVIDER_CHANGED: {
|
||||
final Object listener = msg.obj;
|
||||
if (listener instanceof StorageManagerInternal.CloudProviderChangeListener) {
|
||||
notifyCloudMediaProviderChangedAsync(
|
||||
(StorageManagerInternal.CloudProviderChangeListener) listener);
|
||||
// We send this message in two cases:
|
||||
// 1. After the cloud provider has been set/updated for a user.
|
||||
// In this case Message's #arg1 is set to UserId, and #obj is set to the
|
||||
// authority of the new cloud provider.
|
||||
// 2. After a new CloudProviderChangeListener is registered.
|
||||
// In this case Message's #obj is set to the CloudProviderChangeListener.
|
||||
if (msg.obj instanceof StorageManagerInternal.CloudProviderChangeListener) {
|
||||
final StorageManagerInternal.CloudProviderChangeListener listener =
|
||||
(StorageManagerInternal.CloudProviderChangeListener) msg.obj;
|
||||
notifyCloudMediaProviderChangedAsync(listener);
|
||||
} else {
|
||||
onCloudMediaProviderChangedAsync(msg.arg1);
|
||||
final int userId = msg.arg1;
|
||||
final String authority = (String) msg.obj;
|
||||
onCloudMediaProviderChangedAsync(userId, authority);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -1686,17 +1694,15 @@ class StorageManagerService extends IStorageManager.Stub
|
||||
@NonNull StorageManagerInternal.CloudProviderChangeListener listener) {
|
||||
synchronized (mCloudMediaProviders) {
|
||||
for (int i = mCloudMediaProviders.size() - 1; i >= 0; --i) {
|
||||
listener.onCloudProviderChanged(
|
||||
mCloudMediaProviders.keyAt(i), mCloudMediaProviders.valueAt(i));
|
||||
final int userId = mCloudMediaProviders.keyAt(i);
|
||||
final String authority = mCloudMediaProviders.valueAt(i);
|
||||
listener.onCloudProviderChanged(userId, authority);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void onCloudMediaProviderChangedAsync(int userId) {
|
||||
final String authority;
|
||||
synchronized (mCloudMediaProviders) {
|
||||
authority = mCloudMediaProviders.get(userId);
|
||||
}
|
||||
private void onCloudMediaProviderChangedAsync(
|
||||
@UserIdInt int userId, @Nullable String authority) {
|
||||
for (StorageManagerInternal.CloudProviderChangeListener listener :
|
||||
mStorageManagerInternal.mCloudProviderChangeListeners) {
|
||||
listener.onCloudProviderChanged(userId, authority);
|
||||
@@ -4831,7 +4837,7 @@ class StorageManagerService extends IStorageManager.Stub
|
||||
public void registerCloudProviderChangeListener(
|
||||
@NonNull StorageManagerInternal.CloudProviderChangeListener listener) {
|
||||
mCloudProviderChangeListeners.add(listener);
|
||||
mHandler.obtainMessage(H_CLOUD_MEDIA_PROVIDER_CHANGED, listener);
|
||||
mHandler.obtainMessage(H_CLOUD_MEDIA_PROVIDER_CHANGED, listener).sendToTarget();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user