Merge "Don't restart SystemUI in TestHarness mode." into tm-qpr-dev

This commit is contained in:
Dave Mankoff
2023-02-10 19:59:56 +00:00
committed by Android (Google) Code Review
11 changed files with 107 additions and 70 deletions

View File

@@ -40,7 +40,6 @@ import androidx.annotation.Nullable;
import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.util.settings.GlobalSettings; import com.android.systemui.util.settings.GlobalSettings;
import com.android.systemui.util.settings.SecureSettings;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@@ -74,7 +73,6 @@ public class FeatureFlagsDebug implements FeatureFlags {
private final FlagManager mFlagManager; private final FlagManager mFlagManager;
private final Context mContext; private final Context mContext;
private final GlobalSettings mGlobalSettings; private final GlobalSettings mGlobalSettings;
private final SecureSettings mSecureSettings;
private final Resources mResources; private final Resources mResources;
private final SystemPropertiesHelper mSystemProperties; private final SystemPropertiesHelper mSystemProperties;
private final ServerFlagReader mServerFlagReader; private final ServerFlagReader mServerFlagReader;
@@ -87,8 +85,9 @@ public class FeatureFlagsDebug implements FeatureFlags {
private final ServerFlagReader.ChangeListener mOnPropertiesChanged = private final ServerFlagReader.ChangeListener mOnPropertiesChanged =
new ServerFlagReader.ChangeListener() { new ServerFlagReader.ChangeListener() {
@Override @Override
public void onChange() { public void onChange(Flag<?> flag) {
mRestarter.restartSystemUI(); mRestarter.restartSystemUI(
"Server flag change: " + flag.getNamespace() + "." + flag.getName());
} }
}; };
@@ -97,7 +96,6 @@ public class FeatureFlagsDebug implements FeatureFlags {
FlagManager flagManager, FlagManager flagManager,
Context context, Context context,
GlobalSettings globalSettings, GlobalSettings globalSettings,
SecureSettings secureSettings,
SystemPropertiesHelper systemProperties, SystemPropertiesHelper systemProperties,
@Main Resources resources, @Main Resources resources,
ServerFlagReader serverFlagReader, ServerFlagReader serverFlagReader,
@@ -106,7 +104,6 @@ public class FeatureFlagsDebug implements FeatureFlags {
mFlagManager = flagManager; mFlagManager = flagManager;
mContext = context; mContext = context;
mGlobalSettings = globalSettings; mGlobalSettings = globalSettings;
mSecureSettings = secureSettings;
mResources = resources; mResources = resources;
mSystemProperties = systemProperties; mSystemProperties = systemProperties;
mServerFlagReader = serverFlagReader; mServerFlagReader = serverFlagReader;
@@ -119,7 +116,8 @@ public class FeatureFlagsDebug implements FeatureFlags {
IntentFilter filter = new IntentFilter(); IntentFilter filter = new IntentFilter();
filter.addAction(ACTION_SET_FLAG); filter.addAction(ACTION_SET_FLAG);
filter.addAction(ACTION_GET_FLAGS); filter.addAction(ACTION_GET_FLAGS);
mFlagManager.setOnSettingsChangedAction(this::restartSystemUI); mFlagManager.setOnSettingsChangedAction(
suppressRestart -> restartSystemUI(suppressRestart, "Settings changed"));
mFlagManager.setClearCacheAction(this::removeFromCache); mFlagManager.setClearCacheAction(this::removeFromCache);
mContext.registerReceiver(mReceiver, filter, null, null, mContext.registerReceiver(mReceiver, filter, null, null,
Context.RECEIVER_EXPORTED_UNAUDITED); Context.RECEIVER_EXPORTED_UNAUDITED);
@@ -233,6 +231,10 @@ public class FeatureFlagsDebug implements FeatureFlags {
Boolean result = readBooleanFlagOverride(flag.getName()); Boolean result = readBooleanFlagOverride(flag.getName());
if (result == null) { if (result == null) {
result = readBooleanFlagOverride(flag.getId()); result = readBooleanFlagOverride(flag.getId());
if (result != null) {
// Move overrides from id to name
setFlagValueInternal(flag.getName(), result, BooleanFlagSerializer.INSTANCE);
}
} }
boolean hasServerOverride = mServerFlagReader.hasOverride( boolean hasServerOverride = mServerFlagReader.hasOverride(
flag.getNamespace(), flag.getName()); flag.getNamespace(), flag.getName());
@@ -305,25 +307,38 @@ public class FeatureFlagsDebug implements FeatureFlags {
requireNonNull(value, "Cannot set a null value"); requireNonNull(value, "Cannot set a null value");
T currentValue = readFlagValueInternal(name, serializer); T currentValue = readFlagValueInternal(name, serializer);
if (Objects.equals(currentValue, value)) { if (Objects.equals(currentValue, value)) {
Log.i(TAG, "Flag id " + name + " is already " + value); Log.i(TAG, "Flag \"" + name + "\" is already " + value);
return; return;
} }
setFlagValueInternal(name, value, serializer);
Log.i(TAG, "Set flag \"" + name + "\" to " + value);
removeFromCache(name);
mFlagManager.dispatchListenersAndMaybeRestart(
name,
suppressRestart -> restartSystemUI(
suppressRestart, "Flag \"" + name + "\" changed to " + value));
}
private <T> void setFlagValueInternal(
String name, @NonNull T value, FlagSerializer<T> serializer) {
final String data = serializer.toSettingsData(value); final String data = serializer.toSettingsData(value);
if (data == null) { if (data == null) {
Log.w(TAG, "Failed to set id " + name + " to " + value); Log.w(TAG, "Failed to set flag " + name + " to " + value);
return; return;
} }
mGlobalSettings.putStringForUser(mFlagManager.nameToSettingsKey(name), data, mGlobalSettings.putStringForUser(mFlagManager.nameToSettingsKey(name), data,
UserHandle.USER_CURRENT); UserHandle.USER_CURRENT);
Log.i(TAG, "Set id " + name + " to " + value);
removeFromCache(name);
mFlagManager.dispatchListenersAndMaybeRestart(name, this::restartSystemUI);
} }
<T> void eraseFlag(Flag<T> flag) { <T> void eraseFlag(Flag<T> flag) {
if (flag instanceof SysPropFlag) { if (flag instanceof SysPropFlag) {
mSystemProperties.erase(((SysPropFlag<T>) flag).getName()); mSystemProperties.erase(flag.getName());
dispatchListenersAndMaybeRestart(flag.getName(), this::restartAndroid); dispatchListenersAndMaybeRestart(
flag.getName(),
suppressRestart -> restartSystemUI(
suppressRestart,
"SysProp Flag \"" + flag.getNamespace() + "."
+ flag.getName() + "\" reset to default."));
} else { } else {
eraseFlag(flag.getName()); eraseFlag(flag.getName());
} }
@@ -333,7 +348,10 @@ public class FeatureFlagsDebug implements FeatureFlags {
private void eraseFlag(String name) { private void eraseFlag(String name) {
eraseInternal(name); eraseInternal(name);
removeFromCache(name); removeFromCache(name);
dispatchListenersAndMaybeRestart(name, this::restartSystemUI); dispatchListenersAndMaybeRestart(
name,
suppressRestart -> restartSystemUI(
suppressRestart, "Flag \"" + name + "\" reset to default"));
} }
private void dispatchListenersAndMaybeRestart(String name, Consumer<Boolean> restartAction) { private void dispatchListenersAndMaybeRestart(String name, Consumer<Boolean> restartAction) {
@@ -367,20 +385,20 @@ public class FeatureFlagsDebug implements FeatureFlags {
mFlagManager.removeListener(listener); mFlagManager.removeListener(listener);
} }
private void restartSystemUI(boolean requestSuppress) { private void restartSystemUI(boolean requestSuppress, String reason) {
if (requestSuppress) { if (requestSuppress) {
Log.i(TAG, "SystemUI Restart Suppressed"); Log.i(TAG, "SystemUI Restart Suppressed");
return; return;
} }
mRestarter.restartSystemUI(); mRestarter.restartSystemUI(reason);
} }
private void restartAndroid(boolean requestSuppress) { private void restartAndroid(boolean requestSuppress, String reason) {
if (requestSuppress) { if (requestSuppress) {
Log.i(TAG, "Android Restart Suppressed"); Log.i(TAG, "Android Restart Suppressed");
return; return;
} }
mRestarter.restartAndroid(); mRestarter.restartAndroid(reason);
} }
void setBooleanFlagInternal(Flag<?> flag, boolean value) { void setBooleanFlagInternal(Flag<?> flag, boolean value) {
@@ -391,8 +409,11 @@ public class FeatureFlagsDebug implements FeatureFlags {
} else if (flag instanceof SysPropBooleanFlag) { } else if (flag instanceof SysPropBooleanFlag) {
// Store SysProp flags in SystemProperties where they can read by outside parties. // Store SysProp flags in SystemProperties where they can read by outside parties.
mSystemProperties.setBoolean(((SysPropBooleanFlag) flag).getName(), value); mSystemProperties.setBoolean(((SysPropBooleanFlag) flag).getName(), value);
dispatchListenersAndMaybeRestart(flag.getName(), dispatchListenersAndMaybeRestart(
FeatureFlagsDebug.this::restartAndroid); flag.getName(),
suppressRestart -> restartSystemUI(
suppressRestart,
"Flag \"" + flag.getName() + "\" changed to " + value));
} else { } else {
throw new IllegalArgumentException("Unknown flag type"); throw new IllegalArgumentException("Unknown flag type");
} }

View File

@@ -29,6 +29,7 @@ constructor(
) : Restarter { ) : Restarter {
private var androidRestartRequested = false private var androidRestartRequested = false
private var pendingReason = ""
val observer = val observer =
object : WakefulnessLifecycle.Observer { object : WakefulnessLifecycle.Observer {
@@ -38,18 +39,20 @@ constructor(
} }
} }
override fun restartSystemUI() { override fun restartSystemUI(reason: String) {
Log.d(FeatureFlagsDebug.TAG, "SystemUI Restart requested. Restarting on next screen off.") Log.d(FeatureFlagsDebug.TAG, "SystemUI Restart requested. Restarting on next screen off.")
scheduleRestart() Log.i(FeatureFlagsDebug.TAG, reason)
scheduleRestart(reason)
} }
override fun restartAndroid() { override fun restartAndroid(reason: String) {
Log.d(FeatureFlagsDebug.TAG, "Android Restart requested. Restarting on next screen off.") Log.d(FeatureFlagsDebug.TAG, "Android Restart requested. Restarting on next screen off.")
androidRestartRequested = true androidRestartRequested = true
scheduleRestart() scheduleRestart(reason)
} }
fun scheduleRestart() { fun scheduleRestart(reason: String) {
pendingReason = reason
if (wakefulnessLifecycle.wakefulness == WakefulnessLifecycle.WAKEFULNESS_ASLEEP) { if (wakefulnessLifecycle.wakefulness == WakefulnessLifecycle.WAKEFULNESS_ASLEEP) {
restartNow() restartNow()
} else { } else {
@@ -59,9 +62,9 @@ constructor(
private fun restartNow() { private fun restartNow() {
if (androidRestartRequested) { if (androidRestartRequested) {
systemExitRestarter.restartAndroid() systemExitRestarter.restartAndroid(pendingReason)
} else { } else {
systemExitRestarter.restartSystemUI() systemExitRestarter.restartSystemUI(pendingReason)
} }
} }
} }

View File

@@ -57,8 +57,9 @@ public class FeatureFlagsRelease implements FeatureFlags {
private final ServerFlagReader.ChangeListener mOnPropertiesChanged = private final ServerFlagReader.ChangeListener mOnPropertiesChanged =
new ServerFlagReader.ChangeListener() { new ServerFlagReader.ChangeListener() {
@Override @Override
public void onChange() { public void onChange(Flag<?> flag) {
mRestarter.restartSystemUI(); mRestarter.restartSystemUI(
"Server flag change: " + flag.getNamespace() + "." + flag.getName());
} }
}; };

View File

@@ -36,41 +36,43 @@ constructor(
) : Restarter { ) : Restarter {
var listenersAdded = false var listenersAdded = false
var pendingRestart: Runnable? = null var pendingRestart: Runnable? = null
private var pendingReason = ""
var androidRestartRequested = false var androidRestartRequested = false
val observer = val observer =
object : WakefulnessLifecycle.Observer { object : WakefulnessLifecycle.Observer {
override fun onFinishedGoingToSleep() { override fun onFinishedGoingToSleep() {
scheduleRestart() scheduleRestart(pendingReason)
} }
} }
val batteryCallback = val batteryCallback =
object : BatteryController.BatteryStateChangeCallback { object : BatteryController.BatteryStateChangeCallback {
override fun onBatteryLevelChanged(level: Int, pluggedIn: Boolean, charging: Boolean) { override fun onBatteryLevelChanged(level: Int, pluggedIn: Boolean, charging: Boolean) {
scheduleRestart() scheduleRestart(pendingReason)
} }
} }
override fun restartSystemUI() { override fun restartSystemUI(reason: String) {
Log.d( Log.d(
FeatureFlagsDebug.TAG, FeatureFlagsDebug.TAG,
"SystemUI Restart requested. Restarting when plugged in and idle." "SystemUI Restart requested. Restarting when plugged in and idle."
) )
scheduleRestart() scheduleRestart(reason)
} }
override fun restartAndroid() { override fun restartAndroid(reason: String) {
Log.d( Log.d(
FeatureFlagsDebug.TAG, FeatureFlagsDebug.TAG,
"Android Restart requested. Restarting when plugged in and idle." "Android Restart requested. Restarting when plugged in and idle."
) )
androidRestartRequested = true androidRestartRequested = true
scheduleRestart() scheduleRestart(reason)
} }
private fun scheduleRestart() { private fun scheduleRestart(reason: String) {
// Don't bother adding listeners twice. // Don't bother adding listeners twice.
pendingReason = reason
if (!listenersAdded) { if (!listenersAdded) {
listenersAdded = true listenersAdded = true
wakefulnessLifecycle.addObserver(observer) wakefulnessLifecycle.addObserver(observer)
@@ -91,9 +93,9 @@ constructor(
private fun restartNow() { private fun restartNow() {
Log.d(FeatureFlagsRelease.TAG, "Restarting due to systemui flag change") Log.d(FeatureFlagsRelease.TAG, "Restarting due to systemui flag change")
if (androidRestartRequested) { if (androidRestartRequested) {
systemExitRestarter.restartAndroid() systemExitRestarter.restartAndroid(pendingReason)
} else { } else {
systemExitRestarter.restartSystemUI() systemExitRestarter.restartSystemUI(pendingReason)
} }
} }
} }

View File

@@ -16,7 +16,7 @@
package com.android.systemui.flags package com.android.systemui.flags
interface Restarter { interface Restarter {
fun restartSystemUI() fun restartSystemUI(reason: String)
fun restartAndroid() fun restartAndroid(reason: String)
} }

View File

@@ -17,8 +17,10 @@
package com.android.systemui.flags package com.android.systemui.flags
import android.provider.DeviceConfig import android.provider.DeviceConfig
import android.util.Log
import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.TestHarness
import com.android.systemui.util.DeviceConfigProxy import com.android.systemui.util.DeviceConfigProxy
import dagger.Module import dagger.Module
import dagger.Provides import dagger.Provides
@@ -35,21 +37,27 @@ interface ServerFlagReader {
fun listenForChanges(values: Collection<Flag<*>>, listener: ChangeListener) fun listenForChanges(values: Collection<Flag<*>>, listener: ChangeListener)
interface ChangeListener { interface ChangeListener {
fun onChange() fun onChange(flag: Flag<*>)
} }
} }
class ServerFlagReaderImpl @Inject constructor( class ServerFlagReaderImpl @Inject constructor(
private val namespace: String, private val namespace: String,
private val deviceConfig: DeviceConfigProxy, private val deviceConfig: DeviceConfigProxy,
@Background private val executor: Executor @Background private val executor: Executor,
@TestHarness private val isTestHarness: Boolean
) : ServerFlagReader { ) : ServerFlagReader {
private val TAG = "ServerFlagReader"
private val listeners = private val listeners =
mutableListOf<Pair<ServerFlagReader.ChangeListener, Collection<Flag<*>>>>() mutableListOf<Pair<ServerFlagReader.ChangeListener, Collection<Flag<*>>>>()
private val onPropertiesChangedListener = object : DeviceConfig.OnPropertiesChangedListener { private val onPropertiesChangedListener = object : DeviceConfig.OnPropertiesChangedListener {
override fun onPropertiesChanged(properties: DeviceConfig.Properties) { override fun onPropertiesChanged(properties: DeviceConfig.Properties) {
if (isTestHarness) {
Log.w(TAG, "Ignore server flag changes in Test Harness mode.")
}
if (properties.namespace != namespace) { if (properties.namespace != namespace) {
return return
} }
@@ -59,7 +67,7 @@ class ServerFlagReaderImpl @Inject constructor(
propLoop@ for (propName in properties.keyset) { propLoop@ for (propName in properties.keyset) {
for (flag in flags) { for (flag in flags) {
if (propName == getServerOverrideName(flag.id) || propName == flag.name) { if (propName == getServerOverrideName(flag.id) || propName == flag.name) {
listener.onChange() listener.onChange(flag)
break@propLoop break@propLoop
} }
} }
@@ -111,10 +119,11 @@ interface ServerFlagReaderModule {
@SysUISingleton @SysUISingleton
fun bindsReader( fun bindsReader(
deviceConfig: DeviceConfigProxy, deviceConfig: DeviceConfigProxy,
@Background executor: Executor @Background executor: Executor,
@TestHarness isTestHarness: Boolean
): ServerFlagReader { ): ServerFlagReader {
return ServerFlagReaderImpl( return ServerFlagReaderImpl(
SYSUI_NAMESPACE, deviceConfig, executor SYSUI_NAMESPACE, deviceConfig, executor, isTestHarness
) )
} }
} }
@@ -139,7 +148,7 @@ class ServerFlagReaderFake : ServerFlagReader {
for ((listener, flags) in listeners) { for ((listener, flags) in listeners) {
flagLoop@ for (flag in flags) { flagLoop@ for (flag in flags) {
if (name == flag.name) { if (name == flag.name) {
listener.onChange() listener.onChange(flag)
break@flagLoop break@flagLoop
} }
} }

View File

@@ -16,6 +16,7 @@
package com.android.systemui.flags package com.android.systemui.flags
import android.util.Log
import com.android.internal.statusbar.IStatusBarService import com.android.internal.statusbar.IStatusBarService
import javax.inject.Inject import javax.inject.Inject
@@ -24,11 +25,13 @@ class SystemExitRestarter
constructor( constructor(
private val barService: IStatusBarService, private val barService: IStatusBarService,
) : Restarter { ) : Restarter {
override fun restartAndroid() { override fun restartAndroid(reason: String) {
Log.d(FeatureFlagsDebug.TAG, "Restarting Android: " + reason)
barService.restart() barService.restart()
} }
override fun restartSystemUI() { override fun restartSystemUI(reason: String) {
Log.d(FeatureFlagsDebug.TAG, "Restarting SystemUI: " + reason)
System.exit(0) System.exit(0)
} }
} }

View File

@@ -20,6 +20,7 @@ import com.android.systemui.SysuiTestCase
import com.android.systemui.keyguard.WakefulnessLifecycle import com.android.systemui.keyguard.WakefulnessLifecycle
import com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_ASLEEP import com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_ASLEEP
import com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_AWAKE import com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_AWAKE
import com.android.systemui.util.mockito.any
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.mockito.ArgumentCaptor import org.mockito.ArgumentCaptor
@@ -48,22 +49,22 @@ class FeatureFlagsDebugRestarterTest : SysuiTestCase() {
@Test @Test
fun testRestart_ImmediateWhenAsleep() { fun testRestart_ImmediateWhenAsleep() {
whenever(wakefulnessLifecycle.wakefulness).thenReturn(WAKEFULNESS_ASLEEP) whenever(wakefulnessLifecycle.wakefulness).thenReturn(WAKEFULNESS_ASLEEP)
restarter.restartSystemUI() restarter.restartSystemUI("Restart for test")
verify(systemExitRestarter).restartSystemUI() verify(systemExitRestarter).restartSystemUI(any())
} }
@Test @Test
fun testRestart_WaitsForSceenOff() { fun testRestart_WaitsForSceenOff() {
whenever(wakefulnessLifecycle.wakefulness).thenReturn(WAKEFULNESS_AWAKE) whenever(wakefulnessLifecycle.wakefulness).thenReturn(WAKEFULNESS_AWAKE)
restarter.restartSystemUI() restarter.restartSystemUI("Restart for test")
verify(systemExitRestarter, never()).restartSystemUI() verify(systemExitRestarter, never()).restartSystemUI(any())
val captor = ArgumentCaptor.forClass(WakefulnessLifecycle.Observer::class.java) val captor = ArgumentCaptor.forClass(WakefulnessLifecycle.Observer::class.java)
verify(wakefulnessLifecycle).addObserver(captor.capture()) verify(wakefulnessLifecycle).addObserver(captor.capture())
captor.value.onFinishedGoingToSleep() captor.value.onFinishedGoingToSleep()
verify(systemExitRestarter).restartSystemUI() verify(systemExitRestarter).restartSystemUI(any())
} }
} }

View File

@@ -28,7 +28,6 @@ import com.android.systemui.util.mockito.eq
import com.android.systemui.util.mockito.nullable import com.android.systemui.util.mockito.nullable
import com.android.systemui.util.mockito.withArgCaptor import com.android.systemui.util.mockito.withArgCaptor
import com.android.systemui.util.settings.GlobalSettings import com.android.systemui.util.settings.GlobalSettings
import com.android.systemui.util.settings.SecureSettings
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
import org.junit.Assert import org.junit.Assert
import org.junit.Before import org.junit.Before
@@ -63,8 +62,6 @@ class FeatureFlagsDebugTest : SysuiTestCase() {
@Mock @Mock
private lateinit var globalSettings: GlobalSettings private lateinit var globalSettings: GlobalSettings
@Mock @Mock
private lateinit var secureSettings: SecureSettings
@Mock
private lateinit var systemProperties: SystemPropertiesHelper private lateinit var systemProperties: SystemPropertiesHelper
@Mock @Mock
private lateinit var resources: Resources private lateinit var resources: Resources
@@ -92,7 +89,6 @@ class FeatureFlagsDebugTest : SysuiTestCase() {
flagManager, flagManager,
mockContext, mockContext,
globalSettings, globalSettings,
secureSettings,
systemProperties, systemProperties,
resources, resources,
serverFlagReader, serverFlagReader,

View File

@@ -22,6 +22,7 @@ import com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_ASLEEP
import com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_AWAKE import com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_AWAKE
import com.android.systemui.statusbar.policy.BatteryController import com.android.systemui.statusbar.policy.BatteryController
import com.android.systemui.util.concurrency.FakeExecutor import com.android.systemui.util.concurrency.FakeExecutor
import com.android.systemui.util.mockito.any
import com.android.systemui.util.time.FakeSystemClock import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
import org.junit.Before import org.junit.Before
@@ -63,7 +64,7 @@ class FeatureFlagsReleaseRestarterTest : SysuiTestCase() {
whenever(batteryController.isPluggedIn).thenReturn(true) whenever(batteryController.isPluggedIn).thenReturn(true)
assertThat(executor.numPending()).isEqualTo(0) assertThat(executor.numPending()).isEqualTo(0)
restarter.restartSystemUI() restarter.restartSystemUI("Restart for test")
assertThat(executor.numPending()).isEqualTo(1) assertThat(executor.numPending()).isEqualTo(1)
} }
@@ -72,11 +73,11 @@ class FeatureFlagsReleaseRestarterTest : SysuiTestCase() {
whenever(wakefulnessLifecycle.wakefulness).thenReturn(WAKEFULNESS_ASLEEP) whenever(wakefulnessLifecycle.wakefulness).thenReturn(WAKEFULNESS_ASLEEP)
whenever(batteryController.isPluggedIn).thenReturn(true) whenever(batteryController.isPluggedIn).thenReturn(true)
restarter.restartSystemUI() restarter.restartSystemUI("Restart for test")
verify(systemExitRestarter, never()).restartSystemUI() verify(systemExitRestarter, never()).restartSystemUI("Restart for test")
executor.advanceClockToLast() executor.advanceClockToLast()
executor.runAllReady() executor.runAllReady()
verify(systemExitRestarter).restartSystemUI() verify(systemExitRestarter).restartSystemUI(any())
} }
@Test @Test
@@ -85,7 +86,7 @@ class FeatureFlagsReleaseRestarterTest : SysuiTestCase() {
whenever(batteryController.isPluggedIn).thenReturn(true) whenever(batteryController.isPluggedIn).thenReturn(true)
assertThat(executor.numPending()).isEqualTo(0) assertThat(executor.numPending()).isEqualTo(0)
restarter.restartSystemUI() restarter.restartSystemUI("Restart for test")
assertThat(executor.numPending()).isEqualTo(0) assertThat(executor.numPending()).isEqualTo(0)
} }
@@ -95,7 +96,7 @@ class FeatureFlagsReleaseRestarterTest : SysuiTestCase() {
whenever(batteryController.isPluggedIn).thenReturn(false) whenever(batteryController.isPluggedIn).thenReturn(false)
assertThat(executor.numPending()).isEqualTo(0) assertThat(executor.numPending()).isEqualTo(0)
restarter.restartSystemUI() restarter.restartSystemUI("Restart for test")
assertThat(executor.numPending()).isEqualTo(0) assertThat(executor.numPending()).isEqualTo(0)
} }
@@ -105,8 +106,8 @@ class FeatureFlagsReleaseRestarterTest : SysuiTestCase() {
whenever(batteryController.isPluggedIn).thenReturn(true) whenever(batteryController.isPluggedIn).thenReturn(true)
assertThat(executor.numPending()).isEqualTo(0) assertThat(executor.numPending()).isEqualTo(0)
restarter.restartSystemUI() restarter.restartSystemUI("Restart for test")
restarter.restartSystemUI() restarter.restartSystemUI("Restart for test")
assertThat(executor.numPending()).isEqualTo(1) assertThat(executor.numPending()).isEqualTo(1)
} }
@@ -115,7 +116,7 @@ class FeatureFlagsReleaseRestarterTest : SysuiTestCase() {
whenever(wakefulnessLifecycle.wakefulness).thenReturn(WAKEFULNESS_AWAKE) whenever(wakefulnessLifecycle.wakefulness).thenReturn(WAKEFULNESS_AWAKE)
whenever(batteryController.isPluggedIn).thenReturn(true) whenever(batteryController.isPluggedIn).thenReturn(true)
assertThat(executor.numPending()).isEqualTo(0) assertThat(executor.numPending()).isEqualTo(0)
restarter.restartSystemUI() restarter.restartSystemUI("Restart for test")
val captor = ArgumentCaptor.forClass(WakefulnessLifecycle.Observer::class.java) val captor = ArgumentCaptor.forClass(WakefulnessLifecycle.Observer::class.java)
verify(wakefulnessLifecycle).addObserver(captor.capture()) verify(wakefulnessLifecycle).addObserver(captor.capture())
@@ -131,7 +132,7 @@ class FeatureFlagsReleaseRestarterTest : SysuiTestCase() {
whenever(wakefulnessLifecycle.wakefulness).thenReturn(WAKEFULNESS_ASLEEP) whenever(wakefulnessLifecycle.wakefulness).thenReturn(WAKEFULNESS_ASLEEP)
whenever(batteryController.isPluggedIn).thenReturn(false) whenever(batteryController.isPluggedIn).thenReturn(false)
assertThat(executor.numPending()).isEqualTo(0) assertThat(executor.numPending()).isEqualTo(0)
restarter.restartSystemUI() restarter.restartSystemUI("Restart for test")
val captor = val captor =
ArgumentCaptor.forClass(BatteryController.BatteryStateChangeCallback::class.java) ArgumentCaptor.forClass(BatteryController.BatteryStateChangeCallback::class.java)

View File

@@ -45,7 +45,7 @@ class ServerFlagReaderImplTest : SysuiTestCase() {
fun setup() { fun setup() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.initMocks(this)
serverFlagReader = ServerFlagReaderImpl(NAMESPACE, deviceConfig, executor) serverFlagReader = ServerFlagReaderImpl(NAMESPACE, deviceConfig, executor, false)
} }
@Test @Test
@@ -56,6 +56,6 @@ class ServerFlagReaderImplTest : SysuiTestCase() {
deviceConfig.setProperty(NAMESPACE, "flag_override_1", "1", false) deviceConfig.setProperty(NAMESPACE, "flag_override_1", "1", false)
executor.runAllReady() executor.runAllReady()
verify(changeListener).onChange() verify(changeListener).onChange(flag)
} }
} }