diff --git a/src/com/android/settings/deviceinfo/StorageWizardInit.java b/src/com/android/settings/deviceinfo/StorageWizardInit.java index 076e606cb31..51dd74bdb3e 100644 --- a/src/com/android/settings/deviceinfo/StorageWizardInit.java +++ b/src/com/android/settings/deviceinfo/StorageWizardInit.java @@ -56,6 +56,7 @@ public class StorageWizardInit extends StorageWizardBase { if (!mDisk.isAdoptable()) { // If not adoptable, we only have one choice + mInternal.setEnabled(false); onNavigateExternal(null); } else if (!mIsPermittedToAdopt) { // TODO: Show a message about why this is disabled for guest and diff --git a/src/com/android/settings/widget/VideoPreference.java b/src/com/android/settings/widget/VideoPreference.java index fcbad465f97..ad08ebe49e4 100644 --- a/src/com/android/settings/widget/VideoPreference.java +++ b/src/com/android/settings/widget/VideoPreference.java @@ -48,10 +48,12 @@ public class VideoPreference extends Preference { MediaPlayer mMediaPlayer; @VisibleForTesting boolean mAnimationAvailable; - private boolean mVideoReady; + @VisibleForTesting + boolean mVideoReady; private boolean mVideoPaused; private float mAspectRadio = 1.0f; private int mPreviewResource; + private boolean mViewVisible; public VideoPreference(Context context, AttributeSet attrs) { super(context, attrs); @@ -144,6 +146,9 @@ public class VideoPreference extends Preference { @Override public void onSurfaceTextureUpdated(SurfaceTexture surfaceTexture) { + if (!mViewVisible) { + return; + } if (mVideoReady) { if (imageView.getVisibility() == View.VISIBLE) { imageView.setVisibility(View.GONE); @@ -172,6 +177,7 @@ public class VideoPreference extends Preference { } public void onViewVisible(boolean videoPaused) { + mViewVisible = true; mVideoPaused = videoPaused; if (mVideoReady && mMediaPlayer != null && !mMediaPlayer.isPlaying()) { mMediaPlayer.seekTo(0); @@ -179,6 +185,7 @@ public class VideoPreference extends Preference { } public void onViewInvisible() { + mViewVisible = false; if (mMediaPlayer != null && mMediaPlayer.isPlaying()) { mMediaPlayer.pause(); } diff --git a/tests/robotests/src/com/android/settings/widget/VideoPreferenceTest.java b/tests/robotests/src/com/android/settings/widget/VideoPreferenceTest.java index 153a91b2656..26b102bba9a 100644 --- a/tests/robotests/src/com/android/settings/widget/VideoPreferenceTest.java +++ b/tests/robotests/src/com/android/settings/widget/VideoPreferenceTest.java @@ -17,11 +17,17 @@ package com.android.settings.widget; import static com.google.common.truth.Truth.assertThat; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; +import android.graphics.SurfaceTexture; import android.media.MediaPlayer; import android.view.LayoutInflater; +import android.view.TextureView; import com.android.settings.R; import com.android.settings.testutils.SettingsRobolectricTestRunner; @@ -70,4 +76,20 @@ public class VideoPreferenceTest { (AspectRatioFrameLayout) mPreferenceViewHolder.findViewById(R.id.video_container); assertThat(layout.mAspectRatio).isWithin(0.01f).of(VIDEO_WIDTH / (float) VIDEO_HEIGHT); } + + @Test + public void onSurfaceTextureUpdated_viewInvisible_shouldNotStartPlayingVideo() { + final TextureView video = + (TextureView) mPreferenceViewHolder.findViewById(R.id.video_texture_view); + mVideoPreference.mAnimationAvailable = true; + mVideoPreference.mVideoReady = true; + mVideoPreference.onBindViewHolder(mPreferenceViewHolder); + mVideoPreference.onViewInvisible(); + when(mMediaPlayer.isPlaying()).thenReturn(false); + final TextureView.SurfaceTextureListener listener = video.getSurfaceTextureListener(); + + listener.onSurfaceTextureUpdated(mock(SurfaceTexture.class)); + + verify(mMediaPlayer, never()).start(); + } }