diff options
| author | 2022-11-04 18:45:14 +0000 | |
|---|---|---|
| committer | 2022-11-04 18:45:14 +0000 | |
| commit | 39d2a64be47bdecaedc52e4b7a86f2e445863275 (patch) | |
| tree | 109e723e9fd2729eaba68ae67b96b2b02ff624d3 | |
| parent | 48cba7c99a5eb2de425f4713e366e37bf0c8eee5 (diff) | |
| parent | 44ff13e4e951478fcd4450761298ad24580a10e0 (diff) | |
Merge "Do not forget to sendToTarget() in StorageMS"
| -rw-r--r-- | services/core/java/com/android/server/StorageManagerService.java | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java index fcfee5b702ac..6b6351f9b909 100644 --- a/services/core/java/com/android/server/StorageManagerService.java +++ b/services/core/java/com/android/server/StorageManagerService.java @@ -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(); } } } |