package org.fluentlenium.core.events;
import org.fluentlenium.core.domain.FluentWebElement;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
/**
* EventsSupport can be registered in Selenium {@link org.openqa.selenium.support.events.EventFiringWebDriver} to provide an
* easier to use events interface.
*/
@SuppressWarnings({"PMD.GodClass"})
public class EventsSupport implements EventListener {
private final EventsRegistry eventsRegistry;
/**
* Creates a new events support
*
* @param eventsRegistry events registry
*/
public EventsSupport(EventsRegistry eventsRegistry) {
this.eventsRegistry = eventsRegistry;
}
@Override
public void beforeNavigateTo(String url, WebDriver driver) {
for (NavigateToListener listener : eventsRegistry.beforeNavigateTo) {
listener.on(url, driver);
}
for (NavigateAllListener listener : eventsRegistry.beforeNavigate) {
listener.on(url, driver, null);
}
}
@Override
public void afterNavigateTo(String url, WebDriver driver) {
for (NavigateToListener listener : eventsRegistry.afterNavigateTo) {
listener.on(url, driver);
}
for (NavigateAllListener listener : eventsRegistry.afterNavigate) {
listener.on(url, driver, null);
}
}
@Override
public void beforeNavigateBack(WebDriver driver) {
for (NavigateListener listener : eventsRegistry.beforeNavigateBack) {
listener.on(driver);
}
for (NavigateAllListener listener : eventsRegistry.beforeNavigate) {
listener.on(null, driver, NavigateAllListener.Direction.BACK);
}
}
@Override
public void afterNavigateBack(WebDriver driver) {
for (NavigateListener listener : eventsRegistry.afterNavigateBack) {
listener.on(driver);
}
for (NavigateAllListener listener : eventsRegistry.afterNavigate) {
listener.on(null, driver, NavigateAllListener.Direction.BACK);
}
}
@Override
public void beforeNavigateForward(WebDriver driver) {
for (NavigateListener listener : eventsRegistry.beforeNavigateForward) {
listener.on(driver);
}
for (NavigateAllListener listener : eventsRegistry.beforeNavigate) {
listener.on(null, driver, NavigateAllListener.Direction.FORWARD);
}
}
@Override
public void afterNavigateForward(WebDriver driver) {
for (NavigateListener listener : eventsRegistry.afterNavigateForward) {
listener.on(driver);
}
for (NavigateAllListener listener : eventsRegistry.afterNavigate) {
listener.on(null, driver, NavigateAllListener.Direction.FORWARD);
}
}
@Override
public void beforeNavigateRefresh(WebDriver driver) {
for (NavigateListener listener : eventsRegistry.beforeNavigateRefresh) {
listener.on(driver);
}
for (NavigateAllListener listener : eventsRegistry.beforeNavigate) {
listener.on(null, driver, NavigateAllListener.Direction.REFRESH);
}
}
@Override
public void afterNavigateRefresh(WebDriver driver) {
for (NavigateListener listener : eventsRegistry.afterNavigateRefresh) {
listener.on(driver);
}
for (NavigateAllListener listener : eventsRegistry.afterNavigate) {
listener.on(null, driver, NavigateAllListener.Direction.REFRESH);
}
}
@Override
public void beforeFindBy(By by, FluentWebElement element, WebDriver driver) {
for (FindByListener listener : eventsRegistry.beforeFindBy) {
listener.on(by, element, driver);
}
}
@Override
public void afterFindBy(By by, FluentWebElement element, WebDriver driver) {
for (FindByListener listener : eventsRegistry.afterFindBy) {
listener.on(by, element, driver);
}
}
@Override
public void beforeClickOn(FluentWebElement element, WebDriver driver) {
for (ElementListener listener : eventsRegistry.beforeClickOn) {
listener.on(element, driver);
}
}
@Override
public void afterClickOn(FluentWebElement element, WebDriver driver) {
for (ElementListener listener : eventsRegistry.afterClickOn) {
listener.on(element, driver);
}
}
@Override
public void beforeChangeValueOf(FluentWebElement element, WebDriver driver, CharSequence[] charSequence) {
for (ElementListener listener : eventsRegistry.beforeChangeValueOf) {
listener.on(element, driver);
}
}
@Override
public void afterChangeValueOf(FluentWebElement element, WebDriver driver, CharSequence[] charSequence) {
for (ElementListener listener : eventsRegistry.afterChangeValueOf) {
listener.on(element, driver);
}
}
@Override
public void beforeScript(String script, WebDriver driver) {
for (ScriptListener listener : eventsRegistry.beforeScript) {
listener.on(script, driver);
}
}
@Override
public void afterScript(String script, WebDriver driver) {
for (ScriptListener listener : eventsRegistry.afterScript) {
listener.on(script, driver);
}
}
@Override
public void onException(Throwable throwable, WebDriver driver) {
for (ExceptionListener listener : eventsRegistry.onException) {
listener.on(throwable, driver);
}
}
@Override
public void beforeAlertAccept(WebDriver driver) {
for (AlertListener listener : eventsRegistry.beforeAlertAccept) {
listener.on(driver);
}
}
@Override
public void afterAlertAccept(WebDriver driver) {
for (AlertListener listener : eventsRegistry.afterAlertAccept) {
listener.on(driver);
}
}
@Override
public void beforeAlertDismiss(WebDriver driver) {
for (AlertListener listener : eventsRegistry.beforeAlertDismiss) {
listener.on(driver);
}
}
@Override
public void afterAlertDismiss(WebDriver driver) {
for (AlertListener listener : eventsRegistry.afterAlertDismiss) {
listener.on(driver);
}
}
}