package org.fluentlenium.core.events;
import org.fluentlenium.core.components.ComponentInstantiator;
import org.fluentlenium.core.domain.FluentWebElement;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.events.WebDriverEventListener;
import java.util.Objects;
/**
* FluentLenium adapter for Selenium events listener.
*/
class EventAdapter implements WebDriverEventListener {
private final EventListener listener;
private final ComponentInstantiator instantiator;
/**
* Creates a new event adapter.
*
* @param listener underlysing listener
* @param instantiator component instantiator
*/
EventAdapter(EventListener listener, ComponentInstantiator instantiator) {
this.listener = listener;
this.instantiator = instantiator;
}
@Override
public void beforeNavigateTo(String url, WebDriver driver) {
listener.beforeNavigateTo(url, driver);
}
@Override
public void afterNavigateTo(String url, WebDriver driver) {
listener.afterNavigateTo(url, driver);
}
@Override
public void beforeNavigateBack(WebDriver driver) {
listener.beforeNavigateBack(driver);
}
@Override
public void afterNavigateBack(WebDriver driver) {
listener.afterNavigateBack(driver);
}
@Override
public void beforeNavigateForward(WebDriver driver) {
listener.beforeNavigateForward(driver);
}
@Override
public void afterNavigateForward(WebDriver driver) {
listener.afterNavigateForward(driver);
}
@Override
public void beforeNavigateRefresh(WebDriver driver) {
listener.beforeNavigateRefresh(driver);
}
@Override
public void afterNavigateRefresh(WebDriver driver) {
listener.afterNavigateRefresh(driver);
}
@Override
public void beforeFindBy(By by, WebElement element, WebDriver driver) {
listener
.beforeFindBy(by, element == null ? null : instantiator.newComponent(FluentWebElement.class, element), driver);
}
@Override
public void afterFindBy(By by, WebElement element, WebDriver driver) {
listener
.afterFindBy(by, element == null ? null : instantiator.newComponent(FluentWebElement.class, element), driver);
}
@Override
public void beforeClickOn(WebElement element, WebDriver driver) {
listener.beforeClickOn(element == null ? null : instantiator.newComponent(FluentWebElement.class, element), driver);
}
@Override
public void afterClickOn(WebElement element, WebDriver driver) {
listener.afterClickOn(element == null ? null : instantiator.newComponent(FluentWebElement.class, element), driver);
}
@Override
public void beforeChangeValueOf(WebElement element, WebDriver driver, CharSequence[] charSequence) {
listener
.beforeChangeValueOf(element == null ? null : instantiator.newComponent(FluentWebElement.class, element), driver,
charSequence);
}
@Override
public void afterChangeValueOf(WebElement element, WebDriver driver, CharSequence[] charSequence) {
listener
.afterChangeValueOf(element == null ? null : instantiator.newComponent(FluentWebElement.class, element), driver,
charSequence);
}
@Override
public void beforeScript(String script, WebDriver driver) {
listener.beforeScript(script, driver);
}
@Override
public void afterScript(String script, WebDriver driver) {
listener.afterScript(script, driver);
}
@Override
public void onException(Throwable throwable, WebDriver driver) {
listener.onException(throwable, driver);
}
@Override
public void beforeAlertAccept(WebDriver driver) {
listener.beforeAlertAccept(driver);
}
@Override
public void afterAlertAccept(WebDriver driver) {
listener.afterAlertAccept(driver);
}
@Override
public void beforeAlertDismiss(WebDriver driver) {
listener.beforeAlertDismiss(driver);
}
@Override
public void afterAlertDismiss(WebDriver driver) {
listener.afterAlertDismiss(driver);
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
EventAdapter that = (EventAdapter) obj;
return Objects.equals(listener, that.listener);
}
@Override
public int hashCode() {
return Objects.hash(listener);
}
}