Loading packages/SystemUI/src/com/android/systemui/qs/FgsManagerController.kt +82 −2 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.os.RemoteException import android.provider.DeviceConfig.NAMESPACE_SYSTEMUI import android.text.format.DateUtils import android.util.ArrayMap import android.util.IndentingPrintWriter import android.view.LayoutInflater import android.view.View import android.view.ViewGroup Loading @@ -38,14 +39,19 @@ import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.android.internal.config.sysui.SystemUiDeviceConfigFlags.TASK_MANAGER_ENABLED import com.android.systemui.Dumpable import com.android.systemui.R import com.android.systemui.animation.DialogLaunchAnimator import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.dump.DumpManager import com.android.systemui.statusbar.phone.SystemUIDialog import com.android.systemui.util.DeviceConfigProxy import com.android.systemui.util.indentIfPossible import com.android.systemui.util.time.SystemClock import java.io.FileDescriptor import java.io.PrintWriter import java.util.Objects import java.util.concurrent.Executor import javax.inject.Inject Loading @@ -60,8 +66,9 @@ class FgsManagerController @Inject constructor( private val activityManager: IActivityManager, private val packageManager: PackageManager, private val deviceConfigProxy: DeviceConfigProxy, private val dialogLaunchAnimator: DialogLaunchAnimator ) : IForegroundServiceObserver.Stub() { private val dialogLaunchAnimator: DialogLaunchAnimator, private val dumpManager: DumpManager ) : IForegroundServiceObserver.Stub(), Dumpable { companion object { private val LOG_TAG = FgsManagerController::class.java.simpleName Loading Loading @@ -116,6 +123,8 @@ class FgsManagerController @Inject constructor( isAvailable = deviceConfigProxy .getBoolean(NAMESPACE_SYSTEMUI, TASK_MANAGER_ENABLED, true) dumpManager.registerDumpable(this) initialized = true } } Loading Loading @@ -379,6 +388,16 @@ class FgsManagerController @Inject constructor( } override fun hashCode(): Int = Objects.hash(userId, packageName) fun dump(pw: PrintWriter) { pw.println("UserPackage: [") pw.indentIfPossible { pw.println("userId=$userId") pw.println("packageName=$packageName") pw.println("uiControl=$uiControl") } pw.println("]") } } private data class StartTimeAndTokens( Loading @@ -398,6 +417,22 @@ class FgsManagerController @Inject constructor( fun isEmpty(): Boolean { return tokens.isEmpty() } fun dump(pw: PrintWriter) { pw.println("StartTimeAndTokens: [") pw.indentIfPossible { pw.println("startTime=$startTime (time running =" + " ${systemClock.elapsedRealtime() - startTime}ms)") pw.println("tokens: [") pw.indentIfPossible { for (token in tokens) { pw.println("$token") } } pw.println("]") } pw.println("]") } } private class AppItemViewHolder(parent: View) : RecyclerView.ViewHolder(parent) { Loading Loading @@ -429,9 +464,54 @@ class FgsManagerController @Inject constructor( var appLabel: CharSequence = "" var icon: Drawable? = null var stopped = false fun dump(pw: PrintWriter, systemClock: SystemClock) { pw.println("RunningApp: [") pw.indentIfPossible { pw.println("userId=$userId") pw.println("packageName=$packageName") pw.println("timeStarted=$timeStarted (time since start =" + " ${systemClock.elapsedRealtime() - timeStarted}ms)\"") pw.println("uiControl=$uiControl") pw.println("appLabel=$appLabel") pw.println("icon=$icon") pw.println("stopped=$stopped") } pw.println("]") } } private enum class UIControl { NORMAL, HIDE_BUTTON, HIDE_ENTRY } override fun dump(fd: FileDescriptor, printwriter: PrintWriter, args: Array<out String>) { val pw = IndentingPrintWriter(printwriter) synchronized(lock) { pw.println("changesSinceDialog=$changesSinceDialog") pw.println("Running service tokens: [") pw.indentIfPossible { runningServiceTokens.forEach { (userPackage, startTimeAndTokens) -> pw.println("{") pw.indentIfPossible { userPackage.dump(pw) startTimeAndTokens.dump(pw) } pw.println("}") } } pw.println("]") pw.println("Loaded package UI info: [") pw.indentIfPossible { runningApps.forEach { (userPackage, runningApp) -> pw.println("{") userPackage.dump(pw) runningApp.dump(pw, systemClock) pw.println("}") } } pw.println("]") } } } Loading
packages/SystemUI/src/com/android/systemui/qs/FgsManagerController.kt +82 −2 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.os.RemoteException import android.provider.DeviceConfig.NAMESPACE_SYSTEMUI import android.text.format.DateUtils import android.util.ArrayMap import android.util.IndentingPrintWriter import android.view.LayoutInflater import android.view.View import android.view.ViewGroup Loading @@ -38,14 +39,19 @@ import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.android.internal.config.sysui.SystemUiDeviceConfigFlags.TASK_MANAGER_ENABLED import com.android.systemui.Dumpable import com.android.systemui.R import com.android.systemui.animation.DialogLaunchAnimator import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.dump.DumpManager import com.android.systemui.statusbar.phone.SystemUIDialog import com.android.systemui.util.DeviceConfigProxy import com.android.systemui.util.indentIfPossible import com.android.systemui.util.time.SystemClock import java.io.FileDescriptor import java.io.PrintWriter import java.util.Objects import java.util.concurrent.Executor import javax.inject.Inject Loading @@ -60,8 +66,9 @@ class FgsManagerController @Inject constructor( private val activityManager: IActivityManager, private val packageManager: PackageManager, private val deviceConfigProxy: DeviceConfigProxy, private val dialogLaunchAnimator: DialogLaunchAnimator ) : IForegroundServiceObserver.Stub() { private val dialogLaunchAnimator: DialogLaunchAnimator, private val dumpManager: DumpManager ) : IForegroundServiceObserver.Stub(), Dumpable { companion object { private val LOG_TAG = FgsManagerController::class.java.simpleName Loading Loading @@ -116,6 +123,8 @@ class FgsManagerController @Inject constructor( isAvailable = deviceConfigProxy .getBoolean(NAMESPACE_SYSTEMUI, TASK_MANAGER_ENABLED, true) dumpManager.registerDumpable(this) initialized = true } } Loading Loading @@ -379,6 +388,16 @@ class FgsManagerController @Inject constructor( } override fun hashCode(): Int = Objects.hash(userId, packageName) fun dump(pw: PrintWriter) { pw.println("UserPackage: [") pw.indentIfPossible { pw.println("userId=$userId") pw.println("packageName=$packageName") pw.println("uiControl=$uiControl") } pw.println("]") } } private data class StartTimeAndTokens( Loading @@ -398,6 +417,22 @@ class FgsManagerController @Inject constructor( fun isEmpty(): Boolean { return tokens.isEmpty() } fun dump(pw: PrintWriter) { pw.println("StartTimeAndTokens: [") pw.indentIfPossible { pw.println("startTime=$startTime (time running =" + " ${systemClock.elapsedRealtime() - startTime}ms)") pw.println("tokens: [") pw.indentIfPossible { for (token in tokens) { pw.println("$token") } } pw.println("]") } pw.println("]") } } private class AppItemViewHolder(parent: View) : RecyclerView.ViewHolder(parent) { Loading Loading @@ -429,9 +464,54 @@ class FgsManagerController @Inject constructor( var appLabel: CharSequence = "" var icon: Drawable? = null var stopped = false fun dump(pw: PrintWriter, systemClock: SystemClock) { pw.println("RunningApp: [") pw.indentIfPossible { pw.println("userId=$userId") pw.println("packageName=$packageName") pw.println("timeStarted=$timeStarted (time since start =" + " ${systemClock.elapsedRealtime() - timeStarted}ms)\"") pw.println("uiControl=$uiControl") pw.println("appLabel=$appLabel") pw.println("icon=$icon") pw.println("stopped=$stopped") } pw.println("]") } } private enum class UIControl { NORMAL, HIDE_BUTTON, HIDE_ENTRY } override fun dump(fd: FileDescriptor, printwriter: PrintWriter, args: Array<out String>) { val pw = IndentingPrintWriter(printwriter) synchronized(lock) { pw.println("changesSinceDialog=$changesSinceDialog") pw.println("Running service tokens: [") pw.indentIfPossible { runningServiceTokens.forEach { (userPackage, startTimeAndTokens) -> pw.println("{") pw.indentIfPossible { userPackage.dump(pw) startTimeAndTokens.dump(pw) } pw.println("}") } } pw.println("]") pw.println("Loaded package UI info: [") pw.indentIfPossible { runningApps.forEach { (userPackage, runningApp) -> pw.println("{") userPackage.dump(pw) runningApp.dump(pw, systemClock) pw.println("}") } } pw.println("]") } } }