[go: nahoru, domu]

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
+                }
             }
         }
     }