Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 44ff13e4 authored by Sergey Nikolaienkov's avatar Sergey Nikolaienkov
Browse files

Do not forget to sendToTarget() in StorageMS

Add missing sendToTarget() call in
StorageMananagerService#registerCloudProviderChangeListener

Bug: 218361620
Test: atest CtsPhotoPickerTest
Change-Id: I7e893cb0e71bf0a2a2ec411f4e90a616a941a714
parent 3393d927
Loading
Loading
Loading
Loading
+19 −13
Original line number Diff line number Diff line
@@ -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();
        }
    }
}