Log exceptions in AIDL service methods
Bug: 188889366
Test: Manual testing
Change-Id: Idd333c00c20c3b676a5e5918948ec7aa676a5fd3
diff --git a/wear/wear-watchface/src/main/java/androidx/wear/watchface/WatchFaceService.kt b/wear/wear-watchface/src/main/java/androidx/wear/watchface/WatchFaceService.kt
index 15b5fdc..b0b45e5 100644
--- a/wear/wear-watchface/src/main/java/androidx/wear/watchface/WatchFaceService.kt
+++ b/wear/wear-watchface/src/main/java/androidx/wear/watchface/WatchFaceService.kt
@@ -1660,7 +1660,12 @@
val latch = CountDownLatch(1)
var r: R? = null
launch {
- r = task()
+ try {
+ r = task()
+ } catch (e: Exception) {
+ Log.e("CoroutineScope", "Exception in traceEventName", e)
+ throw e
+ }
latch.countDown()
}
latch.await()
diff --git a/wear/wear-watchface/src/main/java/androidx/wear/watchface/control/HeadlessWatchFaceImpl.kt b/wear/wear-watchface/src/main/java/androidx/wear/watchface/control/HeadlessWatchFaceImpl.kt
index e3ace47..aa0fff4 100644
--- a/wear/wear-watchface/src/main/java/androidx/wear/watchface/control/HeadlessWatchFaceImpl.kt
+++ b/wear/wear-watchface/src/main/java/androidx/wear/watchface/control/HeadlessWatchFaceImpl.kt
@@ -16,6 +16,7 @@
package androidx.wear.watchface.control
+import android.util.Log
import androidx.annotation.RequiresApi
import androidx.annotation.UiThread
import androidx.wear.utility.TraceEvent
@@ -37,6 +38,8 @@
) : IHeadlessWatchFace.Stub() {
internal companion object {
+ const val TAG = "HeadlessWatchFaceImpl"
+
@UiThread
fun dump(indentingPrintWriter: IndentingPrintWriter) {
indentingPrintWriter.println("HeadlessWatchFace instances:")
@@ -79,7 +82,12 @@
val engineCopy = synchronized(this) { engine!! }
val watchFaceImpl = engineCopy.deferredWatchFaceImpl.await()
withContext(engineCopy.uiThreadCoroutineScope.coroutineContext) {
- task(watchFaceImpl)
+ try {
+ task(watchFaceImpl)
+ } catch (e: Exception) {
+ Log.e(TAG, "Operation failed", e)
+ throw e
+ }
}
}
}
diff --git a/wear/wear-watchface/src/main/java/androidx/wear/watchface/control/InteractiveWatchFaceImpl.kt b/wear/wear-watchface/src/main/java/androidx/wear/watchface/control/InteractiveWatchFaceImpl.kt
index 411f9ad..e793a2e 100644
--- a/wear/wear-watchface/src/main/java/androidx/wear/watchface/control/InteractiveWatchFaceImpl.kt
+++ b/wear/wear-watchface/src/main/java/androidx/wear/watchface/control/InteractiveWatchFaceImpl.kt
@@ -16,6 +16,7 @@
package androidx.wear.watchface.control
+import android.util.Log
import androidx.annotation.RequiresApi
import androidx.wear.utility.TraceEvent
import androidx.wear.watchface.WatchFaceImpl
@@ -35,6 +36,10 @@
internal var instanceId: String
) : IInteractiveWatchFace.Stub() {
+ private companion object {
+ const val TAG = "InteractiveWatchFaceImpl"
+ }
+
override fun getApiVersion() = IInteractiveWatchFace.API_VERSION
private fun <R> awaitDeferredWatchFaceImplThenRunOnUiThreadBlocking(
@@ -44,7 +49,12 @@
runBlocking {
val watchFaceImpl = engine.deferredWatchFaceImpl.await()
withContext(engine.uiThreadCoroutineScope.coroutineContext) {
- task(watchFaceImpl)
+ try {
+ task(watchFaceImpl)
+ } catch (e: Exception) {
+ Log.e(TAG, "Operation failed", e)
+ throw e
+ }
}
}
}