package org.fluentlenium.core.hook;
import org.fluentlenium.core.FluentControl;
import org.fluentlenium.core.components.ComponentInstantiator;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.pagefactory.ElementLocator;
import java.util.List;
import java.util.function.Supplier;
public class NanoHook extends BaseHook<NanoHookOptions> {
private long beforeClickNano;
private long afterClickNano;
private String optionValue;
private long beforeFindElementsNano;
private long afterFindElementsNano;
private long beforeFindElementNano;
private long afterFindElementNano;
public NanoHook(FluentControl fluentControl, ComponentInstantiator instantiator, Supplier<WebElement> elementSupplier,
Supplier<ElementLocator> locatorSupplier, Supplier<String> toStringSupplier, NanoHookOptions options) {
super(fluentControl, instantiator, elementSupplier, locatorSupplier, toStringSupplier, options);
}
@Override
protected NanoHookOptions newOptions() {
return new NanoHookOptions();
}
public long getBeforeClickNano() {
return beforeClickNano;
}
public long getAfterClickNano() {
return afterClickNano;
}
public long getBeforeFindElementNano() {
return beforeFindElementNano;
}
public long getAfterFindElementNano() {
return afterFindElementNano;
}
public long getBeforeFindElementsNano() {
return beforeFindElementsNano;
}
public long getAfterFindElementsNano() {
return afterFindElementsNano;
}
public String getOptionValue() {
return optionValue;
}
@Override
public void click() {
beforeClickNano = System.nanoTime();
if (getOptions().getValue() != null) {
optionValue = getOptions().getValue();
}
super.click();
afterClickNano = System.nanoTime();
}
@Override
public List<WebElement> findElements() {
beforeFindElementsNano = System.nanoTime();
try {
return super.findElements();
} finally {
afterFindElementsNano = System.nanoTime();
}
}
@Override
public WebElement findElement() {
beforeFindElementNano = System.nanoTime();
try {
return super.findElement();
} finally {
afterFindElementNano = System.nanoTime();
}
}
}