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

Commit 447674e1 authored by Raff Tsai's avatar Raff Tsai Committed by android-build-merger
Browse files

Merge "Settings: Respect preference's visibility in VideoPreferenceController"

am: 0e40f46f

Change-Id: Iecf7610d41896a5fa0ae7d6aa0ca0de75463eb7e
parents e8a6c02f 0e40f46f
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;
    }
+3 −2
Original line number Diff line number Diff line
@@ -37,13 +37,14 @@ public class VideoPreferenceController extends BasePreferenceController implemen

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

    @Override
    public void displayPreference(PreferenceScreen screen) {
        super.displayPreference(screen);
        mVideoPreference = screen.findPreference(getPreferenceKey());
        super.displayPreference(screen);
    }

    @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);