Skip to content

Commit db57be0

Browse files
committed
Make PapaSafeTrace isTraceable configurable
Change PapaSafeTrace from delegating to SafeTrace.isTraceable to accepting isTraceable as a constructor parameter. This gives clients direct control over whether tracing is enabled, removing the implicit dependency on SafeTrace.isTraceable, which will be removed soon. Update WorkflowPapaTracer's default to explicitly pass isTraceable=false to avoid overhead. Add tests to verify the new configuration capability for both PapaSafeTrace and WorkflowPapaTracer.
1 parent 14d657e commit db57be0

File tree

4 files changed

+24
-4
lines changed

4 files changed

+24
-4
lines changed

workflow-tracing-papa/api/workflow-tracing-papa.api

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
public final class com/squareup/workflow1/tracing/papa/PapaSafeTrace : com/squareup/workflow1/tracing/SafeTraceInterface {
2-
public fun <init> ()V
2+
public fun <init> (Z)V
33
public fun beginAsyncSection (Ljava/lang/String;I)V
44
public fun beginSection (Ljava/lang/String;)V
55
public fun endAsyncSection (Ljava/lang/String;I)V

workflow-tracing-papa/src/main/java/com/squareup/workflow1/tracing/papa/PapaSafeTrace.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@ import papa.SafeTrace
55

66
/**
77
* Production implementation of [SafeTraceInterface] that delegates to the actual [SafeTrace].
8+
*
9+
* @param isTraceable Whether tracing is enabled. Clients must configure this directly.
810
*/
9-
class PapaSafeTrace : SafeTraceInterface {
11+
class PapaSafeTrace(
1012
override val isTraceable: Boolean
11-
get() = SafeTrace.isTraceable
13+
) : SafeTraceInterface {
1214

1315
override val isCurrentlyTracing: Boolean
1416
get() = SafeTrace.isCurrentlyTracing

workflow-tracing-papa/src/main/java/com/squareup/workflow1/tracing/papa/WorkflowPapaTracer.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,11 @@ import kotlin.reflect.KType
3030
* [WorkflowRuntimeTracer] plugin to add [SafeTraceInterface] traces.
3131
* By default this uses [PapaSafeTrace] which will use [androidx.tracing.Trace] calls that
3232
* will be received by the system and included in Perfetto traces.
33+
*
34+
* @param safeTrace The [SafeTraceInterface] implementation to use for tracing.
3335
*/
3436
class WorkflowPapaTracer(
35-
private val safeTrace: SafeTraceInterface = PapaSafeTrace()
37+
private val safeTrace: SafeTraceInterface = PapaSafeTrace(isTraceable = false)
3638
) : WorkflowRuntimeTracer() {
3739

3840
private data class NameAndCookie(

workflow-tracing-papa/src/test/java/com/squareup/workflow1/tracing/papa/WorkflowPapaTracerTest.kt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,22 @@ internal class WorkflowPapaTracerTest {
102102
assertNotNull(papaTracer)
103103
}
104104

105+
@Test
106+
fun `PapaSafeTrace can be configured with isTraceable`() {
107+
val traceableTrace = PapaSafeTrace(isTraceable = true)
108+
assertEquals(true, traceableTrace.isTraceable)
109+
110+
val nonTraceableTrace = PapaSafeTrace(isTraceable = false)
111+
assertEquals(false, nonTraceableTrace.isTraceable)
112+
}
113+
114+
@Test
115+
fun `WorkflowPapaTracer can be configured with custom SafeTrace`() {
116+
val customTrace = FakeSafeTrace(isTraceable = true)
117+
val tracer = WorkflowPapaTracer(safeTrace = customTrace)
118+
assertNotNull(tracer)
119+
}
120+
105121
@Test
106122
fun `onPropsChanged delegates to proceed function`() {
107123
val testWorkflow = TestWorkflow()

0 commit comments

Comments
 (0)