Make SystemUIDialog.onStart() and onStop() final
This CL makes SystemUIDialog.onStart() and onStop() methods final, so that subclasses won't be able to skip their logic by not calling super.onStart()/onStop(). This should help to avoid hard to debug gesture navigation bugs like http://b/276821983. Bug: 276821983 Test: atest SystemUIDialogTest Change-Id: Ib5223991fe1737bf3ef3a609fac86eb03d6d633b
This commit is contained in:
@@ -155,8 +155,7 @@ public class BroadcastDialog extends SystemUIDialog {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
public void start() {
|
||||
registerBroadcastCallBack(mExecutor, mBroadcastCallback);
|
||||
}
|
||||
|
||||
@@ -200,8 +199,7 @@ public class BroadcastDialog extends SystemUIDialog {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
super.onStop();
|
||||
public void stop() {
|
||||
unregisterBroadcastCallBack(mBroadcastCallback);
|
||||
}
|
||||
|
||||
|
||||
@@ -86,13 +86,11 @@ class ContrastDialog(
|
||||
highlightContrast(toContrastLevel(initialContrast))
|
||||
}
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
override fun start() {
|
||||
uiModeManager.addContrastChangeListener(mainExecutor, this)
|
||||
}
|
||||
|
||||
override fun onStop() {
|
||||
super.onStop()
|
||||
override fun stop() {
|
||||
uiModeManager.removeContrastChangeListener(this)
|
||||
}
|
||||
|
||||
|
||||
@@ -2477,8 +2477,7 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStart() {
|
||||
super.onStart();
|
||||
protected void start() {
|
||||
mGlobalActionsLayout.updateList();
|
||||
|
||||
if (mBackgroundDrawable instanceof ScrimDrawable) {
|
||||
@@ -2509,8 +2508,7 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStop() {
|
||||
super.onStop();
|
||||
protected void stop() {
|
||||
mColorExtractor.removeOnColorsChangedListener(this);
|
||||
}
|
||||
|
||||
|
||||
@@ -273,8 +273,7 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
public void start() {
|
||||
mMediaOutputController.start(this);
|
||||
if (isBroadcastSupported() && !mIsLeBroadcastCallbackRegistered) {
|
||||
mMediaOutputController.registerLeBroadcastServiceCallback(mExecutor,
|
||||
@@ -284,8 +283,7 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
super.onStop();
|
||||
public void stop() {
|
||||
if (isBroadcastSupported() && mIsLeBroadcastCallbackRegistered) {
|
||||
mMediaOutputController.unregisterLeBroadcastServiceCallback(mBroadcastCallback);
|
||||
mIsLeBroadcastCallbackRegistered = false;
|
||||
|
||||
@@ -212,8 +212,8 @@ public class MediaOutputBroadcastDialog extends MediaOutputBaseDialog {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
public void start() {
|
||||
super.start();
|
||||
if (!mIsLeBroadcastAssistantCallbackRegistered) {
|
||||
mIsLeBroadcastAssistantCallbackRegistered = true;
|
||||
mMediaOutputController.registerLeBroadcastAssistantServiceCallback(mExecutor,
|
||||
@@ -223,8 +223,8 @@ public class MediaOutputBroadcastDialog extends MediaOutputBaseDialog {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
super.onStop();
|
||||
public void stop() {
|
||||
super.stop();
|
||||
if (mIsLeBroadcastAssistantCallbackRegistered) {
|
||||
mIsLeBroadcastAssistantCallbackRegistered = false;
|
||||
mMediaOutputController.unregisterLeBroadcastAssistantServiceCallback(
|
||||
|
||||
@@ -90,8 +90,7 @@ class PrivacyDialog(
|
||||
}
|
||||
}
|
||||
|
||||
override fun onStop() {
|
||||
super.onStop()
|
||||
override fun stop() {
|
||||
dismissed.set(true)
|
||||
val iterator = dismissListeners.iterator()
|
||||
while (iterator.hasNext()) {
|
||||
|
||||
@@ -259,8 +259,7 @@ public class InternetDialog extends SystemUIDialog implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
public void start() {
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "onStart");
|
||||
}
|
||||
@@ -280,8 +279,7 @@ public class InternetDialog extends SystemUIDialog implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
super.onStop();
|
||||
public void stop() {
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "onStop");
|
||||
}
|
||||
|
||||
@@ -191,7 +191,7 @@ public class SystemUIDialog extends AlertDialog implements ViewRootImpl.ConfigCh
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStart() {
|
||||
protected final void onStart() {
|
||||
super.onStart();
|
||||
|
||||
if (mDismissReceiver != null) {
|
||||
@@ -204,10 +204,18 @@ public class SystemUIDialog extends AlertDialog implements ViewRootImpl.ConfigCh
|
||||
mDialogManager.setShowing(this, true);
|
||||
mSysUiState.setFlag(QuickStepContract.SYSUI_STATE_DIALOG_SHOWING, true)
|
||||
.commitUpdate(mContext.getDisplayId());
|
||||
|
||||
start();
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when {@link #onStart} is called. Subclasses wishing to override {@link #onStart()}
|
||||
* should override this method instead.
|
||||
*/
|
||||
protected void start() {}
|
||||
|
||||
@Override
|
||||
protected void onStop() {
|
||||
protected final void onStop() {
|
||||
super.onStop();
|
||||
|
||||
if (mDismissReceiver != null) {
|
||||
@@ -218,8 +226,16 @@ public class SystemUIDialog extends AlertDialog implements ViewRootImpl.ConfigCh
|
||||
mDialogManager.setShowing(this, false);
|
||||
mSysUiState.setFlag(QuickStepContract.SYSUI_STATE_DIALOG_SHOWING, false)
|
||||
.commitUpdate(mContext.getDisplayId());
|
||||
|
||||
stop();
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when {@link #onStop} is called. Subclasses wishing to override {@link #onStop()}
|
||||
* should override this method instead.
|
||||
*/
|
||||
protected void stop() {}
|
||||
|
||||
public void setShowForAllUsers(boolean show) {
|
||||
setShowForAllUsers(this, show);
|
||||
}
|
||||
|
||||
@@ -186,8 +186,7 @@ public class CsdWarningDialog extends SystemUIDialog
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStart() {
|
||||
super.onStart();
|
||||
protected void start() {
|
||||
mShowTime = System.currentTimeMillis();
|
||||
synchronized (mTimerLock) {
|
||||
if (mNoUserActionRunnable != null) {
|
||||
@@ -198,8 +197,7 @@ public class CsdWarningDialog extends SystemUIDialog
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStop() {
|
||||
super.onStop();
|
||||
protected void stop() {
|
||||
synchronized (mTimerLock) {
|
||||
if (mCancelScheduledNoUserActionRunnable != null) {
|
||||
mCancelScheduledNoUserActionRunnable.run();
|
||||
|
||||
@@ -95,8 +95,7 @@ abstract public class SafetyWarningDialog extends SystemUIDialog
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStart() {
|
||||
super.onStart();
|
||||
protected void start() {
|
||||
mShowTime = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
|
||||
@@ -196,16 +196,14 @@ public class VolumePanelDialog extends SystemUIDialog implements LifecycleOwner
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStart() {
|
||||
super.onStart();
|
||||
protected void start() {
|
||||
Log.d(TAG, "onStart");
|
||||
mLifecycleRegistry.setCurrentState(Lifecycle.State.STARTED);
|
||||
mLifecycleRegistry.setCurrentState(Lifecycle.State.RESUMED);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStop() {
|
||||
super.onStop();
|
||||
protected void stop() {
|
||||
Log.d(TAG, "onStop");
|
||||
mLifecycleRegistry.setCurrentState(Lifecycle.State.DESTROYED);
|
||||
}
|
||||
|
||||
@@ -255,10 +255,10 @@ public class MediaOutputBaseDialogTest extends SysuiTestCase {
|
||||
mLocalBluetoothLeBroadcast);
|
||||
mIsBroadcasting = true;
|
||||
|
||||
mMediaOutputBaseDialogImpl.onStart();
|
||||
mMediaOutputBaseDialogImpl.start();
|
||||
verify(mLocalBluetoothLeBroadcast).registerServiceCallBack(any(), any());
|
||||
|
||||
mMediaOutputBaseDialogImpl.onStop();
|
||||
mMediaOutputBaseDialogImpl.stop();
|
||||
verify(mLocalBluetoothLeBroadcast).unregisterServiceCallBack(any());
|
||||
}
|
||||
|
||||
@@ -269,8 +269,8 @@ public class MediaOutputBaseDialogTest extends SysuiTestCase {
|
||||
mLocalBluetoothLeBroadcast);
|
||||
mIsBroadcasting = false;
|
||||
|
||||
mMediaOutputBaseDialogImpl.onStart();
|
||||
mMediaOutputBaseDialogImpl.onStop();
|
||||
mMediaOutputBaseDialogImpl.start();
|
||||
mMediaOutputBaseDialogImpl.stop();
|
||||
|
||||
verify(mLocalBluetoothLeBroadcast, never()).registerServiceCallBack(any(), any());
|
||||
verify(mLocalBluetoothLeBroadcast, never()).unregisterServiceCallBack(any());
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
|
||||
package com.android.systemui.statusbar.phone;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static junit.framework.Assert.assertFalse;
|
||||
import static junit.framework.Assert.assertTrue;
|
||||
|
||||
@@ -44,6 +46,8 @@ import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
@RunWith(AndroidTestingRunner.class)
|
||||
@RunWithLooper
|
||||
@SmallTest
|
||||
@@ -109,4 +113,31 @@ public class SystemUIDialogTest extends SysuiTestCase {
|
||||
dialog.dismiss();
|
||||
assertFalse(dialog.isShowing());
|
||||
}
|
||||
|
||||
@Test public void startAndStopAreCalled() {
|
||||
AtomicBoolean calledStart = new AtomicBoolean(false);
|
||||
AtomicBoolean calledStop = new AtomicBoolean(false);
|
||||
SystemUIDialog dialog = new SystemUIDialog(mContext) {
|
||||
@Override
|
||||
protected void start() {
|
||||
calledStart.set(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void stop() {
|
||||
calledStop.set(true);
|
||||
}
|
||||
};
|
||||
|
||||
assertThat(calledStart.get()).isFalse();
|
||||
assertThat(calledStop.get()).isFalse();
|
||||
|
||||
dialog.show();
|
||||
assertThat(calledStart.get()).isTrue();
|
||||
assertThat(calledStop.get()).isFalse();
|
||||
|
||||
dialog.dismiss();
|
||||
assertThat(calledStart.get()).isTrue();
|
||||
assertThat(calledStop.get()).isTrue();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user