Merge "Add dump to FgsManagerController"
This commit is contained in:
committed by
Android (Google) Code Review
commit
1ee5e0e799
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -116,6 +123,8 @@ class FgsManagerController @Inject constructor(
|
||||
isAvailable = deviceConfigProxy
|
||||
.getBoolean(NAMESPACE_SYSTEMUI, TASK_MANAGER_ENABLED, true)
|
||||
|
||||
dumpManager.registerDumpable(this)
|
||||
|
||||
initialized = true
|
||||
}
|
||||
}
|
||||
@@ -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(
|
||||
@@ -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) {
|
||||
@@ -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("]")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user