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

Commit 0a546d19 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "SliceLiveData should remove observers."

parents 53df35e6 8b680a98
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -91,13 +91,15 @@ public class SliceContextualCardRenderer implements ContextualCardRenderer,
        if (sliceLiveData == null) {
            sliceLiveData = SliceLiveData.fromUri(mContext, uri);
            mSliceLiveDataMap.put(uri.toString(), sliceLiveData);
        }

        sliceLiveData.removeObservers(mLifecycleOwner);
        sliceLiveData.observe(mLifecycleOwner, slice -> {
            if (slice == null) {
                Log.w(TAG, "Slice is null");
            }
            cardHolder.sliceView.setSlice(slice);
        });
        }

        // Set this listener so we can log the interaction users make on the slice
        cardHolder.sliceView.setOnSliceActionListener(this);
+17 −1
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@ package com.android.settings.homepage.slices;

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;

import android.content.Context;
import android.net.Uri;
@@ -26,8 +26,10 @@ import android.view.LayoutInflater;
import android.view.View;

import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.LiveData;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.slice.Slice;

import com.android.settings.homepage.ContextualCard;
import com.android.settings.homepage.PersonalSettingsFragment;
@@ -36,12 +38,16 @@ import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;

@RunWith(SettingsRobolectricTestRunner.class)
public class SliceContextualCardRendererTest {

    @Mock
    private LiveData<Slice> mSliceLiveData;

    private Context mContext;
    private SliceContextualCardRenderer mRenderer;
    private LifecycleOwner mLifecycleOwner;
@@ -96,6 +102,16 @@ public class SliceContextualCardRendererTest {
        assertThat(mRenderer.mSliceLiveDataMap.get(sliceUri).hasObservers()).isTrue();
    }

    @Test
    public void bindview_sliceLiveDataShouldRemoveObservers() {
        final String sliceUri = "content://com.android.settings.slices/action/flashlight";
        mRenderer.mSliceLiveDataMap.put(sliceUri, mSliceLiveData);

        mRenderer.bindView(getSliceViewHolder(), buildContextualCard(sliceUri));

        verify(mSliceLiveData).removeObservers(mLifecycleOwner);
    }

    private RecyclerView.ViewHolder getSliceViewHolder() {
        final int viewType = mRenderer.getViewType();
        final RecyclerView recyclerView = new RecyclerView(mContext);