From ab8f951345a4dc632ba9f592e07bd1df1e6b8059 Mon Sep 17 00:00:00 2001 From: Caitlin Shkuratov Date: Tue, 13 Sep 2022 18:38:01 +0000 Subject: [PATCH] [Media TTT] Put package error logs in the log buffer with all the other logs. Bug: 246574567 Test: verified logs in logcat if invalid package name Test: media.taptotransfer tests Change-Id: I5b86508ecbfe0dd2e13f094bab236255afe850cc --- .../media/taptotransfer/common/MediaTttLogger.kt | 16 ++++++++++++++-- .../media/taptotransfer/common/MediaTttUtils.kt | 12 +++++++----- .../receiver/MediaTttChipControllerReceiver.kt | 2 +- .../sender/MediaTttChipControllerSender.kt | 2 +- .../taptotransfer/common/MediaTttLoggerTest.kt | 13 +++++++++++++ .../taptotransfer/common/MediaTttUtilsTest.kt | 8 +++++--- 6 files changed, 41 insertions(+), 12 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/common/MediaTttLogger.kt b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/common/MediaTttLogger.kt index d9ae722d05b16..811d47ddaa29b 100644 --- a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/common/MediaTttLogger.kt +++ b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/common/MediaTttLogger.kt @@ -28,10 +28,12 @@ class MediaTttLogger( private val deviceTypeTag: String, private val buffer: LogBuffer ){ + private val bufferTag = BASE_TAG + deviceTypeTag + /** Logs a change in the chip state for the given [mediaRouteId]. */ fun logStateChange(stateName: String, mediaRouteId: String, packageName: String?) { buffer.log( - BASE_TAG + deviceTypeTag, + bufferTag, LogLevel.DEBUG, { str1 = stateName @@ -45,12 +47,22 @@ class MediaTttLogger( /** Logs that we removed the chip for the given [reason]. */ fun logChipRemoval(reason: String) { buffer.log( - BASE_TAG + deviceTypeTag, + bufferTag, LogLevel.DEBUG, { str1 = reason }, { "Chip removed due to $str1" } ) } + + /** Logs that we couldn't find information for [packageName]. */ + fun logPackageNotFound(packageName: String) { + buffer.log( + bufferTag, + LogLevel.DEBUG, + { str1 = packageName }, + { "Package $str1 could not be found" } + ) + } } private const val BASE_TAG = "MediaTtt" diff --git a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/common/MediaTttUtils.kt b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/common/MediaTttUtils.kt index 27dcb89b79634..b171241b72ccc 100644 --- a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/common/MediaTttUtils.kt +++ b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/common/MediaTttUtils.kt @@ -19,7 +19,6 @@ package com.android.systemui.media.taptotransfer.common import android.content.Context import android.content.pm.PackageManager import android.graphics.drawable.Drawable -import android.util.Log import com.android.internal.widget.CachingIconView import com.android.settingslib.Utils import com.android.systemui.R @@ -34,8 +33,13 @@ class MediaTttUtils { * default name and icon if we can't find the app name/icon. * * @param appPackageName the package name of the app playing the media. + * @param logger the logger to use for any errors. */ - fun getIconInfoFromPackageName(context: Context, appPackageName: String?): IconInfo { + fun getIconInfoFromPackageName( + context: Context, + appPackageName: String?, + logger: MediaTttLogger + ): IconInfo { if (appPackageName != null) { try { val contentDescription = @@ -52,7 +56,7 @@ class MediaTttUtils { isAppIcon = true ) } catch (e: PackageManager.NameNotFoundException) { - Log.w(TAG, "Cannot find package $appPackageName", e) + logger.logPackageNotFound(appPackageName) } } return IconInfo( @@ -101,5 +105,3 @@ data class IconInfo( */ val isAppIcon: Boolean ) - -private const val TAG = "MediaTtt" diff --git a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/MediaTttChipControllerReceiver.kt b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/MediaTttChipControllerReceiver.kt index 1a59bad0349bb..d218c2288420e 100644 --- a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/MediaTttChipControllerReceiver.kt +++ b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/MediaTttChipControllerReceiver.kt @@ -140,7 +140,7 @@ class MediaTttChipControllerReceiver @Inject constructor( super.updateView(newInfo, currentView) val iconInfo = MediaTttUtils.getIconInfoFromPackageName( - context, newInfo.routeInfo.clientPackageName + context, newInfo.routeInfo.clientPackageName, logger ) val iconDrawable = newInfo.appIconDrawableOverride ?: iconInfo.drawable val iconContentDescription = newInfo.appNameOverride ?: iconInfo.contentDescription diff --git a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/sender/MediaTttChipControllerSender.kt b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/sender/MediaTttChipControllerSender.kt index f9627a4194c18..7faea147d75b4 100644 --- a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/sender/MediaTttChipControllerSender.kt +++ b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/sender/MediaTttChipControllerSender.kt @@ -120,7 +120,7 @@ class MediaTttChipControllerSender @Inject constructor( // App icon val iconInfo = MediaTttUtils.getIconInfoFromPackageName( - context, newInfo.routeInfo.clientPackageName + context, newInfo.routeInfo.clientPackageName, logger ) MediaTttUtils.setIcon( currentView.requireViewById(R.id.app_icon), diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/common/MediaTttLoggerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/common/MediaTttLoggerTest.kt index 73b61f1a051a3..940681544d4ef 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/common/MediaTttLoggerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/common/MediaTttLoggerTest.kt @@ -72,6 +72,19 @@ class MediaTttLoggerTest : SysuiTestCase() { assertThat(actualString).contains(DEVICE_TYPE_TAG) assertThat(actualString).contains(reason) } + + @Test + fun logPackageNotFound_bufferHasPackageName() { + val packageName = "this.is.a.package" + + logger.logPackageNotFound(packageName) + + val stringWriter = StringWriter() + buffer.dump(PrintWriter(stringWriter), tailLength = 0) + val actualString = stringWriter.toString() + + assertThat(actualString).contains(packageName) + } } private const val DEVICE_TYPE_TAG = "TEST TYPE" diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/common/MediaTttUtilsTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/common/MediaTttUtilsTest.kt index 7a5680dec1df2..37f6434ea0699 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/common/MediaTttUtilsTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/common/MediaTttUtilsTest.kt @@ -39,6 +39,7 @@ class MediaTttUtilsTest : SysuiTestCase() { private lateinit var appIconFromPackageName: Drawable @Mock private lateinit var packageManager: PackageManager @Mock private lateinit var applicationInfo: ApplicationInfo + @Mock private lateinit var logger: MediaTttLogger @Before fun setUp() { @@ -64,7 +65,8 @@ class MediaTttUtilsTest : SysuiTestCase() { @Test fun getIconInfoFromPackageName_nullPackageName_returnsDefault() { - val iconInfo = MediaTttUtils.getIconInfoFromPackageName(context, appPackageName = null) + val iconInfo = + MediaTttUtils.getIconInfoFromPackageName(context, appPackageName = null, logger) assertThat(iconInfo.isAppIcon).isFalse() assertThat(iconInfo.contentDescription) @@ -73,7 +75,7 @@ class MediaTttUtilsTest : SysuiTestCase() { @Test fun getIconInfoFromPackageName_invalidPackageName_returnsDefault() { - val iconInfo = MediaTttUtils.getIconInfoFromPackageName(context, "fakePackageName") + val iconInfo = MediaTttUtils.getIconInfoFromPackageName(context, "fakePackageName", logger) assertThat(iconInfo.isAppIcon).isFalse() assertThat(iconInfo.contentDescription) @@ -82,7 +84,7 @@ class MediaTttUtilsTest : SysuiTestCase() { @Test fun getIconInfoFromPackageName_validPackageName_returnsAppInfo() { - val iconInfo = MediaTttUtils.getIconInfoFromPackageName(context, PACKAGE_NAME) + val iconInfo = MediaTttUtils.getIconInfoFromPackageName(context, PACKAGE_NAME, logger) assertThat(iconInfo.isAppIcon).isTrue() assertThat(iconInfo.drawable).isEqualTo(appIconFromPackageName)