Merge "Revert "Unregister listeners and reset wake lock"" into qt-dev

am: a5be28971c

Change-Id: I649e2774d8f08bf5a2ea666074b04fd22c69ff0f
This commit is contained in:
Chiayu Pei
2019-06-24 08:04:10 -07:00
committed by android-build-merger
2 changed files with 17 additions and 71 deletions

View File

@@ -105,19 +105,15 @@ public class KeyguardSliceProvider extends SliceProvider implements
private final AlarmManager.OnAlarmListener mUpdateNextAlarm = this::updateNextAlarm; private final AlarmManager.OnAlarmListener mUpdateNextAlarm = this::updateNextAlarm;
private final HashSet<Integer> mMediaInvisibleStates; private final HashSet<Integer> mMediaInvisibleStates;
private final Object mMediaToken = new Object(); private final Object mMediaToken = new Object();
@VisibleForTesting private SettableWakeLock mMediaWakeLock;
protected SettableWakeLock mMediaWakeLock; private ZenModeController mZenModeController;
@VisibleForTesting
protected ZenModeController mZenModeController;
private String mDatePattern; private String mDatePattern;
private DateFormat mDateFormat; private DateFormat mDateFormat;
private String mLastText; private String mLastText;
private boolean mRegistered; private boolean mRegistered;
private String mNextAlarm; private String mNextAlarm;
private NextAlarmController mNextAlarmController; private NextAlarmController mNextAlarmController;
@VisibleForTesting
protected AlarmManager mAlarmManager; protected AlarmManager mAlarmManager;
@VisibleForTesting
protected ContentResolver mContentResolver; protected ContentResolver mContentResolver;
private AlarmManager.AlarmClockInfo mNextAlarmInfo; private AlarmManager.AlarmClockInfo mNextAlarmInfo;
private PendingIntent mPendingIntent; private PendingIntent mPendingIntent;
@@ -307,44 +303,22 @@ public class KeyguardSliceProvider extends SliceProvider implements
@Override @Override
public boolean onCreateSliceProvider() { public boolean onCreateSliceProvider() {
synchronized (this) { mAlarmManager = getContext().getSystemService(AlarmManager.class);
KeyguardSliceProvider oldInstance = KeyguardSliceProvider.sInstance; mContentResolver = getContext().getContentResolver();
if (oldInstance != null) { mNextAlarmController = new NextAlarmControllerImpl(getContext());
oldInstance.onDestroy(); mNextAlarmController.addCallback(this);
} mZenModeController = new ZenModeControllerImpl(getContext(), mHandler);
mZenModeController.addCallback(this);
mAlarmManager = getContext().getSystemService(AlarmManager.class); mDatePattern = getContext().getString(R.string.system_ui_aod_date_pattern);
mContentResolver = getContext().getContentResolver(); mPendingIntent = PendingIntent.getActivity(getContext(), 0, new Intent(), 0);
mNextAlarmController = new NextAlarmControllerImpl(getContext()); mMediaWakeLock = new SettableWakeLock(WakeLock.createPartial(getContext(), "media"),
mNextAlarmController.addCallback(this); "media");
mZenModeController = new ZenModeControllerImpl(getContext(), mHandler); KeyguardSliceProvider.sInstance = this;
mZenModeController.addCallback(this); registerClockUpdate();
mDatePattern = getContext().getString(R.string.system_ui_aod_date_pattern); updateClockLocked();
mPendingIntent = PendingIntent.getActivity(getContext(), 0, new Intent(), 0);
mMediaWakeLock = new SettableWakeLock(WakeLock.createPartial(getContext(), "media"),
"media");
KeyguardSliceProvider.sInstance = this;
registerClockUpdate();
updateClockLocked();
}
return true; return true;
} }
@VisibleForTesting
protected void onDestroy() {
synchronized (this) {
mNextAlarmController.removeCallback(this);
mZenModeController.removeCallback(this);
mMediaWakeLock.setAcquired(false);
mAlarmManager.cancel(mUpdateNextAlarm);
if (mRegistered) {
mRegistered = false;
getKeyguardUpdateMonitor().removeCallback(mKeyguardUpdateMonitorCallback);
getContext().unregisterReceiver(mIntentReceiver);
}
}
}
@Override @Override
public void onZenChanged(int zen) { public void onZenChanged(int zen) {
notifyChange(); notifyChange();
@@ -382,8 +356,7 @@ public class KeyguardSliceProvider extends SliceProvider implements
* Registers a broadcast receiver for clock updates, include date, time zone and manually * Registers a broadcast receiver for clock updates, include date, time zone and manually
* changing the date/time via the settings app. * changing the date/time via the settings app.
*/ */
@VisibleForTesting private void registerClockUpdate() {
protected void registerClockUpdate() {
synchronized (this) { synchronized (this) {
if (mRegistered) { if (mRegistered) {
return; return;

View File

@@ -48,9 +48,6 @@ import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.SysuiTestCase; import com.android.systemui.SysuiTestCase;
import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.NotificationMediaManager; import com.android.systemui.statusbar.NotificationMediaManager;
import com.android.systemui.statusbar.phone.KeyguardBypassController;
import com.android.systemui.statusbar.policy.ZenModeController;
import com.android.systemui.util.wakelock.SettableWakeLock;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Before; import org.junit.Before;
@@ -76,14 +73,6 @@ public class KeyguardSliceProviderTest extends SysuiTestCase {
private NotificationMediaManager mNotificationMediaManager; private NotificationMediaManager mNotificationMediaManager;
@Mock @Mock
private StatusBarStateController mStatusBarStateController; private StatusBarStateController mStatusBarStateController;
@Mock
private KeyguardBypassController mKeyguardBypassController;
@Mock
private ZenModeController mZenModeController;
@Mock
private SettableWakeLock mMediaWakeLock;
@Mock
private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
private TestableKeyguardSliceProvider mProvider; private TestableKeyguardSliceProvider mProvider;
private boolean mIsZenMode; private boolean mIsZenMode;
@@ -218,20 +207,6 @@ public class KeyguardSliceProviderTest extends SysuiTestCase {
verify(mContentResolver, never()).notifyChange(eq(mProvider.getUri()), eq(null)); verify(mContentResolver, never()).notifyChange(eq(mProvider.getUri()), eq(null));
} }
@Test
public void onDestroy_noCrash() {
mProvider.onDestroy();
}
@Test
public void onDestroy_unregisterListeners() {
mProvider.registerClockUpdate();
mProvider.onDestroy();
verify(mMediaWakeLock).setAcquired(eq(false));
verify(mAlarmManager).cancel(any(AlarmManager.OnAlarmListener.class));
verify(mKeyguardUpdateMonitor).removeCallback(any());
}
private class TestableKeyguardSliceProvider extends KeyguardSliceProvider { private class TestableKeyguardSliceProvider extends KeyguardSliceProvider {
int mCleanDateFormatInvokations; int mCleanDateFormatInvokations;
private int mCounter; private int mCounter;
@@ -245,8 +220,6 @@ public class KeyguardSliceProviderTest extends SysuiTestCase {
super.onCreateSliceProvider(); super.onCreateSliceProvider();
mAlarmManager = KeyguardSliceProviderTest.this.mAlarmManager; mAlarmManager = KeyguardSliceProviderTest.this.mAlarmManager;
mContentResolver = KeyguardSliceProviderTest.this.mContentResolver; mContentResolver = KeyguardSliceProviderTest.this.mContentResolver;
mZenModeController = KeyguardSliceProviderTest.this.mZenModeController;
mMediaWakeLock = KeyguardSliceProviderTest.this.mMediaWakeLock;
return true; return true;
} }
@@ -263,7 +236,7 @@ public class KeyguardSliceProviderTest extends SysuiTestCase {
@Override @Override
public KeyguardUpdateMonitor getKeyguardUpdateMonitor() { public KeyguardUpdateMonitor getKeyguardUpdateMonitor() {
return mKeyguardUpdateMonitor; return mock(KeyguardUpdateMonitor.class);
} }
@Override @Override