package com.hitherejoe.androidtestcommon.util;
import rx.Observable;
import rx.Subscription;
import rx.plugins.RxJavaObservableExecutionHook;
/**
* RxJava Observable execution hook that handles updating the active subscription
* count for a given Espresso RxIdlingResource.
*/
public class RxIdlingExecutionHook extends RxJavaObservableExecutionHook {
private RxIdlingResource mRxIdlingResource;
public RxIdlingExecutionHook(RxIdlingResource rxIdlingResource) {
mRxIdlingResource = rxIdlingResource;
}
@Override
public <T> Observable.OnSubscribe<T> onSubscribeStart(
Observable<? extends T> observableInstance, Observable.OnSubscribe<T> onSubscribe) {
mRxIdlingResource.incrementActiveSubscriptionsCount();
return super.onSubscribeStart(observableInstance, onSubscribe);
}
@Override
public <T> Throwable onSubscribeError(Throwable e) {
mRxIdlingResource.decrementActiveSubscriptionsCount();
return super.onSubscribeError(e);
}
@Override
public <T> Subscription onSubscribeReturn(Subscription subscription) {
mRxIdlingResource.decrementActiveSubscriptionsCount();
return super.onSubscribeReturn(subscription);
}
}