Enum WebViewCommand
pub enum WebViewCommand {
Show 72 variants
DevTools {
request_id: u32,
method: String,
params: Value,
session: Option<String>,
},
Credentials(CredentialRequest),
ImportServiceSession(ServiceSessionRequest),
SetSiteExceptions(Vec<String>),
RequestSiteStatus {
request_id: u32,
origin: String,
},
SiteAction {
request_id: u32,
origin: String,
generation: u64,
action: String,
},
Navigate(String),
ScopedNavigation {
request_id: u32,
command: NavigationCommand,
},
CancelScopedNavigation {
request_id: u32,
},
RequestNavigationHistory {
request_id: u32,
direction: NavigationDirection,
},
NavigateToHistoryEntry {
request_id: u32,
id: u32,
},
GoBack,
GoForward,
Reload,
StopLoading,
ExitFullscreen,
SetAudioMuted(bool),
Find {
id: u32,
text: String,
forward: bool,
next: bool,
},
StopFinding,
ContextMenuAction {
id: u32,
command: u32,
},
AnswerPageDialog {
id: u32,
accept: bool,
text: Option<String>,
},
SetZoomLevel(f64),
ReportDocumentSize(bool),
CopySelection {
request_id: u32,
},
AnswerClipboardRead {
request_id: u32,
text: Option<String>,
},
Resize {
width: u32,
height: u32,
scale_factor: f32,
},
MouseMove {
x: f32,
y: f32,
},
MouseButton {
button: MouseButton,
down: bool,
x: f32,
y: f32,
},
Scroll {
dx: f32,
dy: f32,
x: f32,
y: f32,
},
Key {
key: KeyInput,
down: bool,
modifiers: KeyModifiers,
code: Option<&'static str>,
},
ImeComposition {
text: String,
cursor: Option<(usize, usize)>,
},
ImeCommit(String),
ImeCancel,
ImeFinish,
SetFocused(bool),
SetContentFilter(Option<Arc<String>>),
SetNativeFilterRules {
rules: Arc<String>,
enabled: Option<bool>,
},
SetContentFilters {
version: u64,
chunks: Arc<Vec<Arc<String>>>,
},
SetUserScripts(Arc<Vec<String>>),
SetBlockingScripts(Arc<Vec<String>>),
RequestMediaElement {
request_id: u64,
},
RequestMediaElementById {
request_id: u64,
element_id: String,
},
Page {
request_id: u32,
request: PageRequest,
},
CancelPage,
PaintCapture {
request_id: u32,
},
PaintResource {
request_id: u32,
url: String,
},
ClearWebsiteData,
SetClearOnExit(bool),
ShowDeveloperTools,
PermissionDecision {
id: u32,
allow: bool,
},
PermissionDismissed {
id: u32,
},
ExtensionAccess {
id: String,
permissions: Vec<String>,
hosts: Vec<String>,
scriptable: Vec<String>,
framed: Vec<String>,
token: Option<String>,
commands: Option<Value>,
},
ExtensionGrants {
id: String,
optional: ExtensionPermissionSet,
granted: ExtensionPermissionSet,
},
ExtensionPermissionDecision {
request: u32,
allow: bool,
},
ExtensionForget {
id: String,
},
ExtensionIdentity {
id: String,
},
ExtensionPanel {
action: Option<String>,
},
ExtensionSignInPanel {
id: String,
flow: u32,
},
ExtensionClick {
id: String,
},
ExtensionMenuChoice {
id: String,
key: String,
},
ExtensionNotificationChosen {
id: String,
notification: String,
button: Option<u8>,
},
ExtensionOmnibox {
id: String,
input: OmniboxInput,
},
ExtensionOpenSidePanel {
id: String,
},
ExtensionSidePanelPage {
id: String,
},
ExtensionCommandKey {
key: KeyInput,
modifiers: KeyModifiers,
},
DownloadDecision {
id: u32,
allow: bool,
},
CancelNativeDownload {
id: u32,
},
RetryDownload {
id: u32,
},
CancelAllDownloads,
StartDownload {
uri: String,
},
SetDownloadDestination {
id: String,
path: String,
},
CancelDownload {
id: String,
},
}Variants§
DevTools
A DevTools command for extension management: the engine allows only
the Extensions domain and what reading an extension’s service worker
needs. The reply is a WebViewEvent::DevToolsResult with the same
request_id. session addresses an attached service-worker target.
Credentials(CredentialRequest)
ImportServiceSession(ServiceSessionRequest)
SetSiteExceptions(Vec<String>)
RequestSiteStatus
SiteAction
Load the given (already normalised) URL.
Transport representation only: use WebViewEngine::navigate_owned
to observe admission before relying on an owned outcome.
GoBack
GoForward
Reload
StopLoading
ExitFullscreen
Ask the native browser host to leave document/video fullscreen.
SetAudioMuted(bool)
Mute or restore native page audio without installing an audio capture handler.
Find
StopFinding
ContextMenuAction
AnswerPageDialog
Answer the page’s question id: OK (or Leave) when accept, else
Cancel (or Stay), with a prompt’s text.
SetZoomLevel(f64)
ReportDocumentSize(bool)
Report the document’s size and scroll as WebViewEvent::DocumentSize
whenever they change, or stop. Off until asked: an embedder that sizes
the view to its content asks (a mail reader scrolling as one page).
An engine that cannot measure never reports.
CopySelection
Read the page’s selection as text, answered by one
WebViewEvent::SelectionText with the same id, for the embedder to
put on the system clipboard. An engine that cannot read it never
answers.
AnswerClipboardRead
The system clipboard’s text, answering
WebViewEvent::ClipboardRead with the same id: None when it holds
no text or could not be read, which leaves the page the engine’s own.
Resize
Viewport size in physical pixels plus the display scale factor.
MouseMove
MouseButton
Scroll
Scroll by (dx, dy) physical pixels at pointer position (x, y).
Key
Fields
modifiers: KeyModifierscode: Option<&'static str>The key’s place on the keyboard, as a DOM KeyboardEvent.code
(“KeyZ”, “Digit1”), whatever the layout prints on it. A page’s
shortcuts keep working on a layout whose letters are not Latin
(Ctrl+С on a Russian layout copies), and its code is the key
pressed. None when the sender does not know it.
ImeComposition
The input method’s text being composed at the page’s caret, in place
of any composed before. cursor is the composition’s own caret or
selection, as byte offsets into text.
ImeCommit(String)
Text the input method committed: it takes the composition’s place, or goes in at the caret when nothing is being composed.
ImeCancel
The input method withdrew its composition: the composed text leaves the page.
ImeFinish
The composition ends as it stands: its text stays in the page.
SetFocused(bool)
Keyboard focus entered / left the page surface.
SetContentFilter(Option<Arc<String>>)
Compiled WebKit content-blocker JSON (None clears the filter).
Backends without native content filtering ignore this.
SetNativeFilterRules
Source filter rules for engines with native matching. An empty source
preserves current rules. None preserves the enabled state, so an
asynchronous list refresh cannot undo a user’s disable action.
SetContentFilters
Several compiled content-blocker JSON blobs, split because the full
filter-list rule set exceeds WebKit’s per-filter cap. An empty
chunks clears all filters.
version hashes the source filter lists (not the compiled JSON,
since compiler rule ordering isn’t stable across runs); the engine
caches each compiled filter under version+index so an unchanged
rule set loads from disk instead of recompiling (~280k rules costs
several seconds).
SetUserScripts(Arc<Vec<String>>)
Scriptlet-style blocking the declarative content filter can’t
express (e.g. skipping YouTube video ads). Run at document-start
in all frames.
SetBlockingScripts(Arc<Vec<String>>)
Native blocker supplements, guarded by the top-level site policy.
RequestMediaElement
Find the most useful visible HTML video in the current page. The
result is delivered asynchronously as WebViewEvent::MediaElement
or WebViewEvent::MediaElementUnavailable. Browser chrome uses the
returned viewport geometry to create a live, element-sized PiP rather
than mirroring the whole page.
RequestMediaElementById
Re-resolve a previously selected media element by its stable page-local
identity. Active PiP uses this without silently switching videos.
Page
Read or operate the current page’s content. Exactly one
WebViewEvent::PageResult with the same id answers it; engines
without page automation answer PageFailure::unavailable.
CancelPage
Stop the page action that is running. An action nobody waits for any more must not hold the page: the tab answers it as settled with an unknown outcome rather than running the next action behind it. No request id is carried: a tab runs one page action at a time, so the action that is running is the one to stop.
PaintCapture
Capture the page’s layout for the paint stream: every box and text
line the engine laid out (see tilo_paint_stream::snapshot). Exactly
one WebViewEvent::PaintSnapshot with the same id answers it.
PaintResource
The bytes of a resource the page already loaded, read from the
engine’s cache. One WebViewEvent::PaintResource answers it.
ClearWebsiteData
Clear all persistent website data (cookies, caches, storage, service workers). Backends without a data store ignore this.
SetClearOnExit(bool)
ShowDeveloperTools
PermissionDecision
PermissionDismissed
The person set a permission question aside (Escape, a click elsewhere) without answering: the site may ask again, as when a prompt in Chrome is dismissed. An engine that cannot tell this from no takes it as no.
ExtensionAccess
What an installed extension may do with the Browser’s tabs: its API permissions and the sites it may read and script. The engine answers the extension’s tab APIs within them.
Fields
ExtensionGrants
What an extension may ask for later (its manifest’s
optional_permissions and optional_host_permissions), and what of
it the person granted: the engine answers chrome.permissions within
them, and its tab APIs within what was granted too.
ExtensionPermissionDecision
The person answered an extension’s request for more access
(WebViewEvent::ExtensionPermissionRequest).
ExtensionForget
An extension that left the profile: it is told nothing more.
ExtensionIdentity
The Browser’s own extension, which tells the engine which tab a page is among the ids extensions know tabs by.
ExtensionPanel
This tab shows an extension’s popup or settings page over the page
used last: to extensions it is no tab, and that page is its window.
action names the extension whose toolbar button opened it, which
may then script that page, as in Chrome.
ExtensionSignInPanel
This tab shows the page of sign-in flow of extension id
(WebViewEvent::ExtensionSignIn), over the page used last or out
of sight: to extensions it is no tab, and its closing turns the
sign-in down.
ExtensionClick
The person clicked an extension’s toolbar button over this page: the
extension hears of it (action.onClicked) and may script the page,
or its side panel opens or closes when it asked for that.
ExtensionMenuChoice
The person chose the item key of extension id’s toolbar button
menu over this page: the extension hears of it
(contextMenus.onClicked).
ExtensionNotificationChosen
The person chose the notification notification of the extension
id: its body, or the button at button. The extension hears of it
and of the notification closing.
ExtensionOmnibox
The person typed after the extension’s keyword in this page’s
address: the extension hears of it (chrome.omnibox), and Enter lets
it act on the page as a click on its button would.
ExtensionOpenSidePanel
The person opened an extension’s side panel beside this page: the
engine answers with WebViewEvent::ExtensionSidePanel once the
extension says which of its pages it shows here, if any.
ExtensionSidePanelPage
This tab shows extension id’s side panel beside the page used
last: to extensions it is no tab and that page is its window, and
the extension hears of the panel opening and closing
(sidePanel.onOpened, sidePanel.onClosed).
ExtensionCommandKey
The person pressed one of extensions’ keyboard shortcuts
(WebViewEvent::ExtensionShortcuts) while the Browser’s own field
had the keyboard: the extension’s command runs over this tab’s page,
and the page sees nothing of the key.
DownloadDecision
CancelNativeDownload
RetryDownload
Retry a user-selected network GET without navigating the visible page.
CancelAllDownloads
Stop admitting downloads and cancel every pending or active transfer.
StartDownload
Start a user-requested download of an absolute HTTP(S) URL.
SetDownloadDestination
Finish WebKit’s asynchronous destination decision with the exact
absolute path granted by the desktop file portal.
CancelDownload
Cancel an awaiting or active download by its engine-issued stable id.
Trait Implementations§
§impl Clone for WebViewCommand
impl Clone for WebViewCommand
§fn clone(&self) -> WebViewCommand
fn clone(&self) -> WebViewCommand
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for WebViewCommand
impl Debug for WebViewCommand
§impl PartialEq for WebViewCommand
impl PartialEq for WebViewCommand
impl StructuralPartialEq for WebViewCommand
Auto Trait Implementations§
impl Freeze for WebViewCommand
impl RefUnwindSafe for WebViewCommand
impl Send for WebViewCommand
impl Sync for WebViewCommand
impl Unpin for WebViewCommand
impl UnsafeUnpin for WebViewCommand
impl UnwindSafe for WebViewCommand
Blanket Implementations§
§impl<T> AnyEq for T
impl<T> AnyEq for T
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSend for T
impl<T> DowncastSend for T
§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more