1*21373fa4SWill Schurman // Copyright 2015-present 650 Industries. All rights reserved. 2*21373fa4SWill Schurman package host.exp.exponent.utils 3*21373fa4SWill Schurman 4*21373fa4SWill Schurman import androidx.test.espresso.IdlingResource 5*21373fa4SWill Schurman 6*21373fa4SWill Schurman class ElapsedTimeIdlingResource : IdlingResource { 7*21373fa4SWill Schurman private var startTime: Long = 0 8*21373fa4SWill Schurman private var waitingTime: Long = 0 9*21373fa4SWill Schurman private var resourceCallback: IdlingResource.ResourceCallback? = null 10*21373fa4SWill Schurman private var isSleeping = false 11*21373fa4SWill Schurman sleepnull12*21373fa4SWill Schurman fun sleep(waitingTime: Long) { 13*21373fa4SWill Schurman this.waitingTime = waitingTime 14*21373fa4SWill Schurman startTime = System.currentTimeMillis() 15*21373fa4SWill Schurman isSleeping = true 16*21373fa4SWill Schurman } 17*21373fa4SWill Schurman getNamenull18*21373fa4SWill Schurman override fun getName(): String { 19*21373fa4SWill Schurman return ElapsedTimeIdlingResource::class.java.name + ":" + waitingTime 20*21373fa4SWill Schurman } 21*21373fa4SWill Schurman isIdleNownull22*21373fa4SWill Schurman override fun isIdleNow(): Boolean { 23*21373fa4SWill Schurman if (!isSleeping) { 24*21373fa4SWill Schurman return true 25*21373fa4SWill Schurman } 26*21373fa4SWill Schurman val elapsed = System.currentTimeMillis() - startTime 27*21373fa4SWill Schurman val idle = elapsed >= waitingTime 28*21373fa4SWill Schurman if (idle) { 29*21373fa4SWill Schurman isSleeping = false 30*21373fa4SWill Schurman resourceCallback!!.onTransitionToIdle() 31*21373fa4SWill Schurman } 32*21373fa4SWill Schurman return idle 33*21373fa4SWill Schurman } 34*21373fa4SWill Schurman registerIdleTransitionCallbacknull35*21373fa4SWill Schurman override fun registerIdleTransitionCallback(resourceCallback: IdlingResource.ResourceCallback) { 36*21373fa4SWill Schurman this.resourceCallback = resourceCallback 37*21373fa4SWill Schurman } 38*21373fa4SWill Schurman } 39