pub trait Engine {
Show 22 methods
// Required methods
fn open(&mut self, url: &str) -> EngineResult<PageHandle>;
fn close(&mut self, page: PageHandle) -> EngineResult<()>;
fn snapshot(&mut self, page: PageHandle) -> EngineResult<Tree>;
fn act(
&mut self,
page: PageHandle,
target: ActTarget,
action: Action,
) -> EngineResult<()>;
fn wait(
&mut self,
page: PageHandle,
cond: WaitCondition,
budget: Duration,
) -> EngineResult<()>;
fn capture(
&mut self,
page: PageHandle,
scope: CaptureScope,
) -> EngineResult<PathBuf>;
fn layout(
&mut self,
page: PageHandle,
refs: &[Ref],
) -> EngineResult<Vec<LayoutBox>>;
fn set_viewport(
&mut self,
page: PageHandle,
viewport: Viewport,
) -> EngineResult<()>;
fn save_auth(&mut self, page: PageHandle) -> EngineResult<AuthBlob>;
fn load_auth(
&mut self,
page: PageHandle,
blob: &AuthBlob,
) -> EngineResult<()>;
fn capabilities(&self) -> EngineCapabilities;
// Provided methods
fn console_entries(
&mut self,
_page: PageHandle,
) -> EngineResult<Vec<ConsoleEntry>> { ... }
fn network_entries(
&mut self,
_page: PageHandle,
) -> EngineResult<Vec<NetworkEntry>> { ... }
fn request_detail(
&mut self,
_page: PageHandle,
_seq: u64,
) -> EngineResult<Option<RequestDetail>> { ... }
fn eval_js(
&mut self,
_page: PageHandle,
_expr: &str,
) -> EngineResult<EvalResult> { ... }
fn storage(
&mut self,
_page: PageHandle,
_scope: StorageScope,
) -> EngineResult<Vec<StorageEntry>> { ... }
fn cookie_events(
&mut self,
_page: PageHandle,
) -> EngineResult<Vec<CookieEvent>> { ... }
fn cursor_op(
&mut self,
_page: PageHandle,
_op: CursorOp,
_mode: InputMode,
) -> EngineResult<()> { ... }
fn scripts(&mut self, _page: PageHandle) -> EngineResult<Vec<ScriptEntry>> { ... }
fn script_source(
&mut self,
_page: PageHandle,
_seq: u64,
) -> EngineResult<Option<ScriptSource>> { ... }
fn dom(
&mut self,
_page: PageHandle,
_r: Ref,
_extra_props: &[String],
) -> EngineResult<Option<DomDetail>> { ... }
fn performance(
&mut self,
_page: PageHandle,
) -> EngineResult<PerformanceMetrics> { ... }
}Expand description
The browser engine, as the daemon sees it.
All methods are synchronous from the daemon’s perspective. The
runtime layer dispatches calls onto a dedicated
thread that owns the platform run loop; implementations should
assume they are running on that thread.
Required Methods§
Sourcefn open(&mut self, url: &str) -> EngineResult<PageHandle>
fn open(&mut self, url: &str) -> EngineResult<PageHandle>
Open a fresh page navigated to url.
Sourcefn close(&mut self, page: PageHandle) -> EngineResult<()>
fn close(&mut self, page: PageHandle) -> EngineResult<()>
Close a page. Idempotent — closing a closed page is a no-op.
Sourcefn snapshot(&mut self, page: PageHandle) -> EngineResult<Tree>
fn snapshot(&mut self, page: PageHandle) -> EngineResult<Tree>
Snapshot the a11y tree at page.
Sourcefn act(
&mut self,
page: PageHandle,
target: ActTarget,
action: Action,
) -> EngineResult<()>
fn act( &mut self, page: PageHandle, target: ActTarget, action: Action, ) -> EngineResult<()>
Perform action on target at page.
Sourcefn wait(
&mut self,
page: PageHandle,
cond: WaitCondition,
budget: Duration,
) -> EngineResult<()>
fn wait( &mut self, page: PageHandle, cond: WaitCondition, budget: Duration, ) -> EngineResult<()>
Wait for cond at page until satisfied or budget elapses.
Sourcefn capture(
&mut self,
page: PageHandle,
scope: CaptureScope,
) -> EngineResult<PathBuf>
fn capture( &mut self, page: PageHandle, scope: CaptureScope, ) -> EngineResult<PathBuf>
Take a screenshot. Returns the path on disk where the image was written.
Sourcefn layout(
&mut self,
page: PageHandle,
refs: &[Ref],
) -> EngineResult<Vec<LayoutBox>>
fn layout( &mut self, page: PageHandle, refs: &[Ref], ) -> EngineResult<Vec<LayoutBox>>
Compute layout boxes for refs at page.
Sourcefn set_viewport(
&mut self,
page: PageHandle,
viewport: Viewport,
) -> EngineResult<()>
fn set_viewport( &mut self, page: PageHandle, viewport: Viewport, ) -> EngineResult<()>
Set the viewport at page. Triggers a re-baseline for the next
snapshot.
Sourcefn save_auth(&mut self, page: PageHandle) -> EngineResult<AuthBlob>
fn save_auth(&mut self, page: PageHandle) -> EngineResult<AuthBlob>
Snapshot cookies/storage for page as an opaque AuthBlob.
Sourcefn load_auth(&mut self, page: PageHandle, blob: &AuthBlob) -> EngineResult<()>
fn load_auth(&mut self, page: PageHandle, blob: &AuthBlob) -> EngineResult<()>
Apply a previously saved AuthBlob to page.
Sourcefn capabilities(&self) -> EngineCapabilities
fn capabilities(&self) -> EngineCapabilities
Capabilities the daemon should advertise for this engine.
Provided Methods§
Sourcefn console_entries(
&mut self,
_page: PageHandle,
) -> EngineResult<Vec<ConsoleEntry>>
fn console_entries( &mut self, _page: PageHandle, ) -> EngineResult<Vec<ConsoleEntry>>
Snapshot the always-captured console ring buffer for page.
Default impl returns empty (engines without console capture).
Sourcefn network_entries(
&mut self,
_page: PageHandle,
) -> EngineResult<Vec<NetworkEntry>>
fn network_entries( &mut self, _page: PageHandle, ) -> EngineResult<Vec<NetworkEntry>>
Snapshot the always-captured network ring buffer for page.
Default impl returns empty (engines without network capture).
Sourcefn request_detail(
&mut self,
_page: PageHandle,
_seq: u64,
) -> EngineResult<Option<RequestDetail>>
fn request_detail( &mut self, _page: PageHandle, _seq: u64, ) -> EngineResult<Option<RequestDetail>>
Look up the full detail (headers + bodies) for a single
captured network request. Returns None if the seq isn’t in
the buffer. Default impl returns None.
Sourcefn eval_js(
&mut self,
_page: PageHandle,
_expr: &str,
) -> EngineResult<EvalResult>
fn eval_js( &mut self, _page: PageHandle, _expr: &str, ) -> EngineResult<EvalResult>
Evaluate expr in main world. Default impl returns
EvalResult::Thrown { kind: "NotImplemented", ... }.
Sourcefn storage(
&mut self,
_page: PageHandle,
_scope: StorageScope,
) -> EngineResult<Vec<StorageEntry>>
fn storage( &mut self, _page: PageHandle, _scope: StorageScope, ) -> EngineResult<Vec<StorageEntry>>
List storage entries for the requested scope.
List cookie store ADD/REMOVE events observed since the page
opened. Engines without a cookie-changed observer (Windows, the
stub) return an empty vec or ENGINE_UNSUPPORTED via their
capability flag.
Sourcefn cursor_op(
&mut self,
_page: PageHandle,
_op: CursorOp,
_mode: InputMode,
) -> EngineResult<()>
fn cursor_op( &mut self, _page: PageHandle, _op: CursorOp, _mode: InputMode, ) -> EngineResult<()>
Coordinate-addressed cursor operation. Backends that don’t
implement native input dispatch fall through to the default
ENGINE_UNSUPPORTED here; agents see ! ENGINE_UNSUPPORTED
on the wire and can switch to ref-based vs act instead.
Sourcefn scripts(&mut self, _page: PageHandle) -> EngineResult<Vec<ScriptEntry>>
fn scripts(&mut self, _page: PageHandle) -> EngineResult<Vec<ScriptEntry>>
List scripts loaded by the page.
Sourcefn script_source(
&mut self,
_page: PageHandle,
_seq: u64,
) -> EngineResult<Option<ScriptSource>>
fn script_source( &mut self, _page: PageHandle, _seq: u64, ) -> EngineResult<Option<ScriptSource>>
Source of one script by seq. Returns None if the seq isn’t
in the script registry.
Sourcefn dom(
&mut self,
_page: PageHandle,
_r: Ref,
_extra_props: &[String],
) -> EngineResult<Option<DomDetail>>
fn dom( &mut self, _page: PageHandle, _r: Ref, _extra_props: &[String], ) -> EngineResult<Option<DomDetail>>
Outer HTML + computed styles for a ref. Caller-requested
computed properties land in extra_props; the engine merges
them with its default property set. Returns None for unknown
refs.
Sourcefn performance(&mut self, _page: PageHandle) -> EngineResult<PerformanceMetrics>
fn performance(&mut self, _page: PageHandle) -> EngineResult<PerformanceMetrics>
Web Vitals + heap + DOM stats. Returns zero-filled defaults if the engine can’t measure them.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".