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 }