ladybird/Userland/Libraries/LibWeb/WebDriver/ExecuteScript.h
Timothy Flynn 4a6d0e0f90 LibWeb+WebContent: Use the current window to execute WebDriver scripts
Rather than using the page's top-level window, we must use the window
that is currently active in the WebDriver session.
2024-09-15 00:56:21 +01:00

41 lines
1.1 KiB
C++

/*
* Copyright (c) 2022-2023, Linus Groh <linusg@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/Forward.h>
#include <AK/JsonValue.h>
#include <LibJS/Forward.h>
#include <LibJS/Heap/HeapFunction.h>
#include <LibJS/Runtime/Value.h>
#include <LibWeb/Forward.h>
namespace Web::WebDriver {
enum class ExecuteScriptResultType {
PromiseResolved,
PromiseRejected,
Timeout,
JavaScriptError,
BrowsingContextDiscarded,
};
struct ExecuteScriptResult {
ExecuteScriptResultType type;
JS::Value value;
};
struct ExecuteScriptResultSerialized {
ExecuteScriptResultType type;
JsonValue value;
};
using OnScriptComplete = JS::HeapFunction<void(ExecuteScriptResultSerialized)>;
void execute_script(HTML::BrowsingContext const&, ByteString body, JS::MarkedVector<JS::Value> arguments, Optional<u64> const& timeout_ms, JS::NonnullGCPtr<OnScriptComplete> on_complete);
void execute_async_script(HTML::BrowsingContext const&, ByteString body, JS::MarkedVector<JS::Value> arguments, Optional<u64> const& timeout_ms, JS::NonnullGCPtr<OnScriptComplete> on_complete);
}