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

Commit 99da2a25 authored by LuK1337's avatar LuK1337 Committed by Michael Bestas
Browse files

Settings: Respect preference's visibility in VideoPreferenceController, take 2

* The patch merged in AOSP has some additional changes, which
  is pretty sad. Sync with it.

Change-Id: I4c5b5a7f24877c4f62e100043ead70381f478f47
parent 841d95d4
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -80,6 +80,7 @@ public class VideoPreference extends Preference {
        try {
            // if these are already set that means they were set dynamically and don't need
            // to be loaded from xml
            mAnimationAvailable = false;
            mAnimationId = mAnimationId == 0
                ? attributes.getResourceId(R.styleable.VideoPreference_animation, 0)
                : mAnimationId;
@@ -91,6 +92,7 @@ public class VideoPreference extends Preference {
                ? attributes.getResourceId(R.styleable.VideoPreference_preview, 0)
                : mPreviewResource;
            if (mPreviewResource == 0 && mAnimationId == 0) {
                setVisible(false);
                return;
            }
            initMediaPlayer();
@@ -250,6 +252,10 @@ public class VideoPreference extends Preference {
        }
    }

    public boolean isAnimationAvailable() {
        return mAnimationAvailable;
    }

    public boolean isVideoPaused() {
        return mVideoPaused;
    }
+2 −1
Original line number Diff line number Diff line
@@ -37,7 +37,8 @@ public class VideoPreferenceController extends BasePreferenceController implemen

    @Override
    public int getAvailabilityStatus() {
        return mVideoPreference.isVisible() ? AVAILABLE_UNSEARCHABLE : UNSUPPORTED_ON_DEVICE;
        return mVideoPreference.isAnimationAvailable() ?
                AVAILABLE_UNSEARCHABLE : UNSUPPORTED_ON_DEVICE;
    }

    @Override
+22 −1
Original line number Diff line number Diff line
@@ -17,10 +17,13 @@
package com.android.settings.widget;

import static com.android.settings.core.BasePreferenceController.AVAILABLE_UNSEARCHABLE;
import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;

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

import static org.mockito.Mockito.anyBoolean;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

@@ -33,6 +36,7 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.util.ReflectionHelpers;

@RunWith(RobolectricTestRunner.class)
public class VideoPreferenceControllerTest {
@@ -52,10 +56,27 @@ public class VideoPreferenceControllerTest {
    }

    @Test
    public void getAvailabilityStatus_isAlwaysAvailable() {
    public void getAvailabilityStatus_isAvailableUnsearchable() {
        final VideoPreference videoPreference = mock(VideoPreference.class);

        // Assign mock object to mVideoPreference in controller
        ReflectionHelpers.setField(mController, "mVideoPreference", videoPreference);
        doReturn(true).when(videoPreference).isAnimationAvailable();

        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE_UNSEARCHABLE);
    }

    @Test
    public void getAvailabilityStatus_isUnsupportedOnDevice() {
        final VideoPreference videoPreference = mock(VideoPreference.class);

        // Assign mock object to mVideoPreference in controller
        ReflectionHelpers.setField(mController, "mVideoPreference", videoPreference);
        doReturn(false).when(videoPreference).isAnimationAvailable();

        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
    }

    @Test
    public void onPause_shouldCallOnViewInvisibleOnPrefernece() {
        mController.displayPreference(mScreen);