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

Commit 76527eeb authored by Lucas Dupin's avatar Lucas Dupin
Browse files

Always update view when metadata changes

Otherwise skipping songs wouldn't change the contents of AOD.

Test: manual
Fixes: 124527003
Change-Id: Ie644aa451390712ae529c849a743ec083b8229ee
parent 9a8bcf5f
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -419,18 +419,17 @@ public class KeyguardSliceProvider extends SliceProvider implements
        return KeyguardUpdateMonitor.getInstance(getContext());
    }

    /**
     * Called whenever new media metadata is available.
     * @param metadata New metadata.
     */
    @Override
    public void onMetadataChanged(MediaMetadata metadata) {
        final boolean notify;
        synchronized (this) {
            boolean neededMedia = needsMediaLocked();
            mMediaMetaData = metadata;
            notify = neededMedia != needsMediaLocked();
        }
        if (notify) {
        notifyChange();
    }
    }

    protected void notifyChange() {
        mContentResolver.notifyChange(mSliceUri, null /* observer */);
+4 −7
Original line number Diff line number Diff line
@@ -166,25 +166,22 @@ public class KeyguardSliceProviderTest extends SysuiTestCase {

    @Test
    public void onMetadataChanged_updatesSlice() {
        mProvider.onMetadataChanged(mock(MediaMetadata.class));
        mProvider.onDozingChanged(true);
        reset(mContentResolver);
        mProvider.onMetadataChanged(mock(MediaMetadata.class));
        verify(mContentResolver).notifyChange(eq(mProvider.getUri()), eq(null));

        // Hides after waking up
        reset(mContentResolver);
        mProvider.onDozingChanged(false);
        verify(mContentResolver).notifyChange(eq(mProvider.getUri()), eq(null));

        // And won't update slice if device is awake
        reset(mContentResolver);
        mProvider.onMetadataChanged(mock(MediaMetadata.class));
        verify(mContentResolver, never()).notifyChange(eq(mProvider.getUri()), eq(null));
    }

    @Test
    public void onDozingChanged_updatesSliceIfMedia() {
        // Show media when dozing
        mProvider.onMetadataChanged(mock(MediaMetadata.class));
        reset(mContentResolver);
        // Show media when dozing
        mProvider.onDozingChanged(true);
        verify(mContentResolver).notifyChange(eq(mProvider.getUri()), eq(null));