/*
 * https://webfolder.io/license.html
 */
package io.webfolder.cdp.sample;

import java.net.URL;

import io.webfolder.cdp.Example;
import io.webfolder.cdp.Launcher;
import io.webfolder.cdp.dom.Attributes;
import io.webfolder.cdp.event.Events;
import io.webfolder.cdp.event.page.JavascriptDialogOpening;
import io.webfolder.cdp.listener.EventListener;
import io.webfolder.cdp.session.Session;
import io.webfolder.cdp.session.SessionFactory;
import io.webfolder.cdp.type.page.DialogType;

@Example
public class Dialog {

    public static void main(String[] args) {
        Launcher launcher = new Launcher();

        URL url = Attributes.class.getResource("/alert.html");

        try (SessionFactory factory = launcher.launch();
                            Session session = factory.create()) {
            session.navigate(url.toString());
            session.waitDocumentReady();
            
            session.addEventListener(new EventListener() {

                @Override
                public void onEvent(Events event, Object value) {
                    if (Events.PageJavascriptDialogOpening.equals(event)) {
                        JavascriptDialogOpening jdo = (JavascriptDialogOpening) value;
                        if (DialogType.Beforeunload.equals(jdo.getType())) {
                            session.getCommand()
                                .getPage()
                                .handleJavaScriptDialog(true);
                        }
                    }
                }
            });

            session.click("a");
            session.waitDocumentReady();
            // This must print google.com
            System.out.println(session.getLocation());
        } finally {
            launcher.kill();
        }
    }
}