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

Commit e572b83c authored by hughchen's avatar hughchen Committed by Hugh Chen
Browse files

Add callback to notify the device attributes is changed

Since the new UX design hope device list order not changed
when user doing transfer. This cl add new callback
"onDeviceAttributesChanged()" to handle this request.
The UI will update without change the list order when get this
callback.

The onDeviceAttributesChanged() will be called when
device attributes is changed, such like device name is changed or
device state is changed.

Bug: 144535188
Test: make -j42 RunSettingsLibRoboTests
Change-Id: I1e99d64b3e7f600d5d1cf56c84b15f98455e3d2e
parent 6b913b90
Loading
Loading
Loading
Loading
+18 −6
Original line number Diff line number Diff line
@@ -194,6 +194,14 @@ public class LocalMediaManager implements BluetoothCallback {
        }
    }

    void dispatchDeviceAttributesChanged() {
        synchronized (mCallbacks) {
            for (DeviceCallback callback : mCallbacks) {
                callback.onDeviceAttributesChanged();
            }
        }
    }

    /**
     * Stop scan MediaDevice
     */
@@ -306,14 +314,12 @@ public class LocalMediaManager implements BluetoothCallback {
            }
            mCurrentConnectedDevice = connectDevice;
            updatePhoneMediaDeviceSummary();
            dispatchDeviceListUpdate();
            dispatchDeviceAttributesChanged();
        }

        @Override
        public void onDeviceAttributesChanged() {
            addPhoneDeviceIfNecessary();
            removePhoneMediaDeviceIfNecessary();
            dispatchDeviceListUpdate();
            dispatchDeviceAttributesChanged();
        }
    }

@@ -327,7 +333,7 @@ public class LocalMediaManager implements BluetoothCallback {
         *
         * @param devices MediaDevice list
         */
        void onDeviceListUpdate(List<MediaDevice> devices);
        default void onDeviceListUpdate(List<MediaDevice> devices) {};

        /**
         * Callback for notifying the connected device is changed.
@@ -338,6 +344,12 @@ public class LocalMediaManager implements BluetoothCallback {
         * {@link MediaDeviceState#STATE_CONNECTING},
         * {@link MediaDeviceState#STATE_DISCONNECTED}
         */
        void onSelectedDeviceStateChanged(MediaDevice device, @MediaDeviceState int state);
        default void onSelectedDeviceStateChanged(MediaDevice device,
                @MediaDeviceState int state) {};

        /**
         * Callback for notifying the device attributes is changed.
         */
        default void onDeviceAttributesChanged() {};
    }
}
+3 −3
Original line number Diff line number Diff line
@@ -355,7 +355,7 @@ public class LocalMediaManagerTest {
        mLocalMediaManager.mMediaDeviceCallback.onConnectedDeviceChanged(TEST_DEVICE_ID_2);

        assertThat(mLocalMediaManager.getCurrentConnectedDevice()).isEqualTo(device2);
        verify(mCallback).onDeviceListUpdate(any());
        verify(mCallback).onDeviceAttributesChanged();
    }

    @Test
@@ -373,7 +373,7 @@ public class LocalMediaManagerTest {
        mLocalMediaManager.registerCallback(mCallback);
        mLocalMediaManager.mMediaDeviceCallback.onConnectedDeviceChanged(TEST_DEVICE_ID_1);

        verify(mCallback, never()).onDeviceListUpdate(any());
        verify(mCallback, never()).onDeviceAttributesChanged();
    }

    @Test
@@ -382,6 +382,6 @@ public class LocalMediaManagerTest {

        mLocalMediaManager.mMediaDeviceCallback.onDeviceAttributesChanged();

        verify(mCallback).onDeviceListUpdate(any());
        verify(mCallback).onDeviceAttributesChanged();
    }
}