package org.fluentlenium.core.wait; import java.util.function.Function; import java.util.function.Predicate; import java.util.function.Supplier; import org.fluentlenium.core.FluentControl; import org.openqa.selenium.support.ui.Wait; /** * Functional API of fluent wait. * * @param <F> the argument to pass to function called * @see #until(Function) */ public interface FluentWaitFunctional<F> extends Wait<F> { /** * Wait until the predicate returns true. * * @param predicate predicate condition to wait for */ void untilPredicate(Predicate<FluentControl> predicate); /** * Wait until the supplier returns true. * * @param booleanSupplier supplier condition to wait for. */ void until(Supplier<Boolean> booleanSupplier); /** * Wait until the function returns a non-null and non-false object. * * @param function function returning a non-null and non-false object when condition is verified. * @param <T> type of returned object * @return object returned by function */ <T> T until(Function<? super F, T> function); }