1 package leakcanary 2 3 import leakcanary.HeapAnalysisInterceptor.Chain 4 import leakcanary.HeapAnalysisJob.Result 5 6 /** 7 * An interceptor that runs only when [evaluateCondition] returns true. 8 */ 9 class ConditionalInterceptor( 10 private val delegate: HeapAnalysisInterceptor, 11 private val evaluateCondition: (HeapAnalysisJob) -> Boolean 12 ) : HeapAnalysisInterceptor { interceptnull13 override fun intercept(chain: Chain): Result { 14 if (evaluateCondition(chain.job)) { 15 return delegate.intercept(object : Chain { 16 override val job = chain.job 17 18 override fun proceed(): Result { 19 return chain.proceed() 20 } 21 }) 22 } else { 23 return chain.proceed() 24 } 25 } 26 }