Fix videoPreference is broken when switch to multiple window

Fixes: 117802997
Test: robolectric, switch between multiple window and single window.
The video should keep displaying.

Change-Id: I97b6a4516b2591b80d9a046809ce4090fb02c80f
This commit is contained in:
Raff Tsai
2019-12-04 12:06:56 +08:00
parent 810f7861f0
commit 5314f2a51c
5 changed files with 26 additions and 27 deletions

View File

@@ -68,7 +68,7 @@ public class AssistGestureSettingsPreferenceController extends GesturePreference
} }
@Override @Override
public void onResume() { public void onStart() {
if (mWasAvailable != isAvailable()) { if (mWasAvailable != isAvailable()) {
// Only update the preference visibility if the availability has changed -- otherwise // Only update the preference visibility if the availability has changed -- otherwise
// the preference may be incorrectly added to screens with collapsed sections. // the preference may be incorrectly added to screens with collapsed sections.

View File

@@ -25,12 +25,12 @@ import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
import com.android.settings.widget.VideoPreference; import com.android.settings.widget.VideoPreference;
import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnResume; import com.android.settingslib.core.lifecycle.events.OnStop;
public abstract class GesturePreferenceController extends TogglePreferenceController public abstract class GesturePreferenceController extends TogglePreferenceController
implements Preference.OnPreferenceChangeListener, implements Preference.OnPreferenceChangeListener,
LifecycleObserver, OnResume, OnPause { LifecycleObserver, OnStart, OnStop {
private VideoPreference mVideoPreference; private VideoPreference mVideoPreference;
@@ -62,16 +62,16 @@ public abstract class GesturePreferenceController extends TogglePreferenceContro
} }
@Override @Override
public void onPause() { public void onStart() {
if (mVideoPreference != null) { if (mVideoPreference != null) {
mVideoPreference.onViewInvisible(); mVideoPreference.onViewVisible();
} }
} }
@Override @Override
public void onResume() { public void onStop() {
if (mVideoPreference != null) { if (mVideoPreference != null) {
mVideoPreference.onViewVisible(); mVideoPreference.onViewInvisible();
} }
} }

View File

@@ -22,11 +22,11 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnResume; import com.android.settingslib.core.lifecycle.events.OnStop;
public class VideoPreferenceController extends BasePreferenceController implements public class VideoPreferenceController extends BasePreferenceController implements
LifecycleObserver, OnResume, OnPause { LifecycleObserver, OnStart, OnStop {
private VideoPreference mVideoPreference; private VideoPreference mVideoPreference;
@@ -47,17 +47,16 @@ public class VideoPreferenceController extends BasePreferenceController implemen
} }
@Override @Override
public void onPause() { public void onStart() {
if (mVideoPreference != null) {
mVideoPreference.onViewInvisible();
}
}
@Override
public void onResume() {
if (mVideoPreference != null) { if (mVideoPreference != null) {
mVideoPreference.onViewVisible(); mVideoPreference.onViewVisible();
} }
} }
@Override
public void onStop() {
if (mVideoPreference != null) {
mVideoPreference.onViewInvisible();
}
}
} }

View File

@@ -81,25 +81,25 @@ public class GesturePreferenceControllerTest {
} }
@Test @Test
public void onResume_shouldStartVideoPreference() { public void onStart_shouldStartVideoPreference() {
final VideoPreference videoPreference = mock(VideoPreference.class); final VideoPreference videoPreference = mock(VideoPreference.class);
when(mScreen.findPreference(mController.getVideoPrefKey())).thenReturn(videoPreference); when(mScreen.findPreference(mController.getVideoPrefKey())).thenReturn(videoPreference);
mController.mIsPrefAvailable = true; mController.mIsPrefAvailable = true;
mController.displayPreference(mScreen); mController.displayPreference(mScreen);
mController.onResume(); mController.onStart();
verify(videoPreference).onViewVisible(); verify(videoPreference).onViewVisible();
} }
@Test @Test
public void onPause_shouldStopVideoPreference() { public void onStop_shouldStopVideoPreference() {
final VideoPreference videoPreference = mock(VideoPreference.class); final VideoPreference videoPreference = mock(VideoPreference.class);
when(mScreen.findPreference(mController.getVideoPrefKey())).thenReturn(videoPreference); when(mScreen.findPreference(mController.getVideoPrefKey())).thenReturn(videoPreference);
mController.mIsPrefAvailable = true; mController.mIsPrefAvailable = true;
mController.displayPreference(mScreen); mController.displayPreference(mScreen);
mController.onPause(); mController.onStop();
verify(videoPreference).onViewInvisible(); verify(videoPreference).onViewInvisible();
} }

View File

@@ -77,19 +77,19 @@ public class VideoPreferenceControllerTest {
} }
@Test @Test
public void onPause_shouldCallOnViewInvisibleOnPrefernece() { public void onStop_shouldCallOnViewInvisibleOnPrefernece() {
mController.displayPreference(mScreen); mController.displayPreference(mScreen);
mController.onPause(); mController.onStop();
verify(mPreference).onViewInvisible(); verify(mPreference).onViewInvisible();
} }
@Test @Test
public void onResume_shouldCallOnViewVisibleOnPrefernece() { public void onStart_shouldCallOnViewVisibleOnPrefernece() {
mController.displayPreference(mScreen); mController.displayPreference(mScreen);
mController.onResume(); mController.onStart();
verify(mPreference).onViewVisible(); verify(mPreference).onViewVisible();
} }