Loading services/core/java/com/android/server/StorageManagerService.java +19 −13 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -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); Loading Loading @@ -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(); } } } Loading
services/core/java/com/android/server/StorageManagerService.java +19 −13 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -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); Loading Loading @@ -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(); } } }