mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 18:22:45 +00:00 
			
		
		
		
	 b572a91a6f
			
		
	
	
		b572a91a6f
		
	
	
	
	
		
			
			This cannot be done on the Browser or WebDriver ends, or via the existing run_javascript() IPC endpoint, as we cannot transfer JS objects through the IPC boundary (yet), only serialized JSON, so the individual WebDriver steps around script execution need to run in the WebContent process.
		
			
				
	
	
		
			37 lines
		
	
	
	
		
			897 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
	
		
			897 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2022, 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/Runtime/Value.h>
 | |
| #include <LibWeb/Forward.h>
 | |
| 
 | |
| namespace Web::WebDriver {
 | |
| 
 | |
| enum class ExecuteScriptResultType {
 | |
|     PromiseResolved,
 | |
|     PromiseRejected,
 | |
|     Timeout,
 | |
|     JavaScriptError,
 | |
| };
 | |
| 
 | |
| struct ExecuteScriptResult {
 | |
|     ExecuteScriptResultType type;
 | |
|     JS::Value value;
 | |
| };
 | |
| 
 | |
| struct ExecuteScriptResultSerialized {
 | |
|     ExecuteScriptResultType type;
 | |
|     JsonValue value;
 | |
| };
 | |
| 
 | |
| ExecuteScriptResultSerialized execute_script(Page& page, String const& body, JS::MarkedVector<JS::Value> arguments, Optional<u64> const& timeout);
 | |
| ExecuteScriptResultSerialized execute_async_script(Page& page, String const& body, JS::MarkedVector<JS::Value> arguments, Optional<u64> const& timeout);
 | |
| 
 | |
| }
 |