summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebug.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebugRestarter.kt22
-rw-r--r--packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsRelease.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsReleaseRestarter.kt43
-rw-r--r--packages/SystemUI/src/com/android/systemui/flags/Restarter.kt6
-rw-r--r--packages/SystemUI/src/com/android/systemui/flags/SystemExitRestarter.kt13
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsDebugRestarterTest.kt10
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsReleaseRestarterTest.kt20
8 files changed, 83 insertions, 41 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebug.java b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebug.java
index 5dae0a21d588..d1a14a1ba65f 100644
--- a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebug.java
+++ b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebug.java
@@ -86,7 +86,7 @@ public class FeatureFlagsDebug implements FeatureFlags {
new ServerFlagReader.ChangeListener() {
@Override
public void onChange() {
- mRestarter.restart();
+ mRestarter.restartSystemUI();
}
};
@@ -326,9 +326,7 @@ public class FeatureFlagsDebug implements FeatureFlags {
Log.i(TAG, "SystemUI Restart Suppressed");
return;
}
- Log.i(TAG, "Restarting SystemUI");
- // SysUI starts back when up exited. Is there a better way to do this?
- System.exit(0);
+ mRestarter.restartSystemUI();
}
private void restartAndroid(boolean requestSuppress) {
@@ -336,7 +334,7 @@ public class FeatureFlagsDebug implements FeatureFlags {
Log.i(TAG, "Android Restart Suppressed");
return;
}
- mRestarter.restart();
+ mRestarter.restartAndroid();
}
void setBooleanFlagInternal(Flag<?> flag, boolean value) {
diff --git a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebugRestarter.kt b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebugRestarter.kt
index 3d9f62768a37..069e6127aa30 100644
--- a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebugRestarter.kt
+++ b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebugRestarter.kt
@@ -28,6 +28,8 @@ constructor(
private val systemExitRestarter: SystemExitRestarter,
) : Restarter {
+ private var androidRestartRequested = false
+
val observer =
object : WakefulnessLifecycle.Observer {
override fun onFinishedGoingToSleep() {
@@ -36,8 +38,18 @@ constructor(
}
}
- override fun restart() {
- Log.d(FeatureFlagsDebug.TAG, "Restart requested. Restarting on next screen off.")
+ override fun restartSystemUI() {
+ Log.d(FeatureFlagsDebug.TAG, "SystemUI Restart requested. Restarting on next screen off.")
+ scheduleRestart()
+ }
+
+ override fun restartAndroid() {
+ Log.d(FeatureFlagsDebug.TAG, "Android Restart requested. Restarting on next screen off.")
+ androidRestartRequested = true
+ scheduleRestart()
+ }
+
+ fun scheduleRestart() {
if (wakefulnessLifecycle.wakefulness == WakefulnessLifecycle.WAKEFULNESS_ASLEEP) {
restartNow()
} else {
@@ -46,6 +58,10 @@ constructor(
}
private fun restartNow() {
- systemExitRestarter.restart()
+ if (androidRestartRequested) {
+ systemExitRestarter.restartAndroid()
+ } else {
+ systemExitRestarter.restartSystemUI()
+ }
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsRelease.java b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsRelease.java
index 3c83682210b6..8bddacc4e32c 100644
--- a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsRelease.java
+++ b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsRelease.java
@@ -61,7 +61,7 @@ public class FeatureFlagsRelease implements FeatureFlags {
new ServerFlagReader.ChangeListener() {
@Override
public void onChange() {
- mRestarter.restart();
+ mRestarter.restartSystemUI();
}
};
diff --git a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsReleaseRestarter.kt b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsReleaseRestarter.kt
index a3f0f665c056..7ff3876f5d4e 100644
--- a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsReleaseRestarter.kt
+++ b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsReleaseRestarter.kt
@@ -34,35 +34,48 @@ constructor(
@Background private val bgExecutor: DelayableExecutor,
private val systemExitRestarter: SystemExitRestarter
) : Restarter {
- var shouldRestart = false
+ var listenersAdded = false
var pendingRestart: Runnable? = null
+ var androidRestartRequested = false
val observer =
object : WakefulnessLifecycle.Observer {
override fun onFinishedGoingToSleep() {
- maybeScheduleRestart()
+ scheduleRestart()
}
}
val batteryCallback =
object : BatteryController.BatteryStateChangeCallback {
override fun onBatteryLevelChanged(level: Int, pluggedIn: Boolean, charging: Boolean) {
- maybeScheduleRestart()
+ scheduleRestart()
}
}
- override fun restart() {
- Log.d(FeatureFlagsDebug.TAG, "Restart requested. Restarting when plugged in and idle.")
- if (!shouldRestart) {
- // Don't bother scheduling twice.
- shouldRestart = true
+ override fun restartSystemUI() {
+ Log.d(
+ FeatureFlagsDebug.TAG,
+ "SystemUI Restart requested. Restarting when plugged in and idle."
+ )
+ scheduleRestart()
+ }
+
+ override fun restartAndroid() {
+ Log.d(
+ FeatureFlagsDebug.TAG,
+ "Android Restart requested. Restarting when plugged in and idle."
+ )
+ androidRestartRequested = true
+ scheduleRestart()
+ }
+
+ private fun scheduleRestart() {
+ // Don't bother adding listeners twice.
+ if (!listenersAdded) {
+ listenersAdded = true
wakefulnessLifecycle.addObserver(observer)
batteryController.addCallback(batteryCallback)
- maybeScheduleRestart()
}
- }
-
- private fun maybeScheduleRestart() {
if (
wakefulnessLifecycle.wakefulness == WAKEFULNESS_ASLEEP && batteryController.isPluggedIn
) {
@@ -77,6 +90,10 @@ constructor(
private fun restartNow() {
Log.d(FeatureFlagsRelease.TAG, "Restarting due to systemui flag change")
- systemExitRestarter.restart()
+ if (androidRestartRequested) {
+ systemExitRestarter.restartAndroid()
+ } else {
+ systemExitRestarter.restartSystemUI()
+ }
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/flags/Restarter.kt b/packages/SystemUI/src/com/android/systemui/flags/Restarter.kt
index 8f095a24de94..ce8b821b1182 100644
--- a/packages/SystemUI/src/com/android/systemui/flags/Restarter.kt
+++ b/packages/SystemUI/src/com/android/systemui/flags/Restarter.kt
@@ -16,5 +16,7 @@
package com.android.systemui.flags
interface Restarter {
- fun restart()
-} \ No newline at end of file
+ fun restartSystemUI()
+
+ fun restartAndroid()
+}
diff --git a/packages/SystemUI/src/com/android/systemui/flags/SystemExitRestarter.kt b/packages/SystemUI/src/com/android/systemui/flags/SystemExitRestarter.kt
index f1b1be47a84f..89daa6487fbc 100644
--- a/packages/SystemUI/src/com/android/systemui/flags/SystemExitRestarter.kt
+++ b/packages/SystemUI/src/com/android/systemui/flags/SystemExitRestarter.kt
@@ -16,10 +16,19 @@
package com.android.systemui.flags
+import com.android.internal.statusbar.IStatusBarService
import javax.inject.Inject
-class SystemExitRestarter @Inject constructor() : Restarter {
- override fun restart() {
+class SystemExitRestarter
+@Inject
+constructor(
+ private val barService: IStatusBarService,
+) : Restarter {
+ override fun restartAndroid() {
+ barService.restart()
+ }
+
+ override fun restartSystemUI() {
System.exit(0)
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsDebugRestarterTest.kt b/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsDebugRestarterTest.kt
index 1e7b1f26ba8c..ed167212c96a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsDebugRestarterTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsDebugRestarterTest.kt
@@ -48,22 +48,22 @@ class FeatureFlagsDebugRestarterTest : SysuiTestCase() {
@Test
fun testRestart_ImmediateWhenAsleep() {
whenever(wakefulnessLifecycle.wakefulness).thenReturn(WAKEFULNESS_ASLEEP)
- restarter.restart()
- verify(systemExitRestarter).restart()
+ restarter.restartSystemUI()
+ verify(systemExitRestarter).restartSystemUI()
}
@Test
fun testRestart_WaitsForSceenOff() {
whenever(wakefulnessLifecycle.wakefulness).thenReturn(WAKEFULNESS_AWAKE)
- restarter.restart()
- verify(systemExitRestarter, never()).restart()
+ restarter.restartSystemUI()
+ verify(systemExitRestarter, never()).restartSystemUI()
val captor = ArgumentCaptor.forClass(WakefulnessLifecycle.Observer::class.java)
verify(wakefulnessLifecycle).addObserver(captor.capture())
captor.value.onFinishedGoingToSleep()
- verify(systemExitRestarter).restart()
+ verify(systemExitRestarter).restartSystemUI()
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsReleaseRestarterTest.kt b/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsReleaseRestarterTest.kt
index 68ca48dd327d..7d807e2ff207 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsReleaseRestarterTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsReleaseRestarterTest.kt
@@ -63,7 +63,7 @@ class FeatureFlagsReleaseRestarterTest : SysuiTestCase() {
whenever(batteryController.isPluggedIn).thenReturn(true)
assertThat(executor.numPending()).isEqualTo(0)
- restarter.restart()
+ restarter.restartSystemUI()
assertThat(executor.numPending()).isEqualTo(1)
}
@@ -72,11 +72,11 @@ class FeatureFlagsReleaseRestarterTest : SysuiTestCase() {
whenever(wakefulnessLifecycle.wakefulness).thenReturn(WAKEFULNESS_ASLEEP)
whenever(batteryController.isPluggedIn).thenReturn(true)
- restarter.restart()
- verify(systemExitRestarter, never()).restart()
+ restarter.restartSystemUI()
+ verify(systemExitRestarter, never()).restartSystemUI()
executor.advanceClockToLast()
executor.runAllReady()
- verify(systemExitRestarter).restart()
+ verify(systemExitRestarter).restartSystemUI()
}
@Test
@@ -85,7 +85,7 @@ class FeatureFlagsReleaseRestarterTest : SysuiTestCase() {
whenever(batteryController.isPluggedIn).thenReturn(true)
assertThat(executor.numPending()).isEqualTo(0)
- restarter.restart()
+ restarter.restartSystemUI()
assertThat(executor.numPending()).isEqualTo(0)
}
@@ -95,7 +95,7 @@ class FeatureFlagsReleaseRestarterTest : SysuiTestCase() {
whenever(batteryController.isPluggedIn).thenReturn(false)
assertThat(executor.numPending()).isEqualTo(0)
- restarter.restart()
+ restarter.restartSystemUI()
assertThat(executor.numPending()).isEqualTo(0)
}
@@ -105,8 +105,8 @@ class FeatureFlagsReleaseRestarterTest : SysuiTestCase() {
whenever(batteryController.isPluggedIn).thenReturn(true)
assertThat(executor.numPending()).isEqualTo(0)
- restarter.restart()
- restarter.restart()
+ restarter.restartSystemUI()
+ restarter.restartSystemUI()
assertThat(executor.numPending()).isEqualTo(1)
}
@@ -115,7 +115,7 @@ class FeatureFlagsReleaseRestarterTest : SysuiTestCase() {
whenever(wakefulnessLifecycle.wakefulness).thenReturn(WAKEFULNESS_AWAKE)
whenever(batteryController.isPluggedIn).thenReturn(true)
assertThat(executor.numPending()).isEqualTo(0)
- restarter.restart()
+ restarter.restartSystemUI()
val captor = ArgumentCaptor.forClass(WakefulnessLifecycle.Observer::class.java)
verify(wakefulnessLifecycle).addObserver(captor.capture())
@@ -131,7 +131,7 @@ class FeatureFlagsReleaseRestarterTest : SysuiTestCase() {
whenever(wakefulnessLifecycle.wakefulness).thenReturn(WAKEFULNESS_ASLEEP)
whenever(batteryController.isPluggedIn).thenReturn(false)
assertThat(executor.numPending()).isEqualTo(0)
- restarter.restart()
+ restarter.restartSystemUI()
val captor =
ArgumentCaptor.forClass(BatteryController.BatteryStateChangeCallback::class.java)