Skip to main content

RunningAppState

Struct RunningAppState 

Source
pub(crate) struct RunningAppState {
Show 14 fields gamepad_delegate: Option<Rc<ServoshellGamepadDelegate>>, pub(crate) webdriver_senders: RefCell<WebDriverSenders>, pub(crate) webdriver_embedder_controls: WebDriverEmbedderControls, pub(crate) pending_webdriver_events: RefCell<HashMap<InputEventId, Sender<()>>>, pub(crate) webdriver_receiver: Option<Receiver<WebDriverCommandMsg>>, pub(crate) servoshell_preferences: ServoShellPreferences, pub(crate) servo: Servo, pub(crate) achieved_stable_image: Rc<Cell<bool>>, pub(crate) user_content_manager: Rc<UserContentManager>, exit_scheduled: Cell<bool>, experimental_preferences_enabled: Cell<bool>, windows: RefCell<HashMap<ServoShellWindowId, Rc<ServoShellWindow>>>, focused_window: RefCell<Option<Rc<ServoShellWindow>>>, accessibility_active: Cell<bool>,
}

Fields§

§gamepad_delegate: Option<Rc<ServoshellGamepadDelegate>>

The gamepad provider, used for handling gamepad events and set on each WebView. May be None if gamepad support is disabled or failed to initialize.

§webdriver_senders: RefCell<WebDriverSenders>

The WebDriverSenders used to reply to pending WebDriver requests.

§webdriver_embedder_controls: WebDriverEmbedderControls

When running in WebDriver mode, WebDriverEmbedderControls is a virtual container for all embedder controls. This overrides the normal behavior where these controls are shown in the GUI or not processed at all in headless mode.

§pending_webdriver_events: RefCell<HashMap<InputEventId, Sender<()>>>

A HashMap of pending WebDriver events. It is the WebDriver embedder’s responsibility to inform the WebDriver server when the event has been fully handled. This map is used to report back to WebDriver when that happens.

§webdriver_receiver: Option<Receiver<WebDriverCommandMsg>>

A Receiver for receiving commands from a running WebDriver server, if WebDriver was enabled.

§servoshell_preferences: ServoShellPreferences

servoshell specific preferences created during startup of the application.

§servo: Servo

A handle to the Servo instance.

§achieved_stable_image: Rc<Cell<bool>>

Whether or not the application has achieved stable image output. This is used for the exit_after_stable_image option.

§user_content_manager: Rc<UserContentManager>

The UserContentManager for all WebViews created.

§exit_scheduled: Cell<bool>

Whether or not program exit has been triggered. This means that all windows will be destroyed and shutdown will start at the end of the current event loop.

§experimental_preferences_enabled: Cell<bool>

Whether the user has enabled experimental preferences.

§windows: RefCell<HashMap<ServoShellWindowId, Rc<ServoShellWindow>>>

The set of ServoShellWindows that currently exist for this instance of servoshell.

§focused_window: RefCell<Option<Rc<ServoShellWindow>>>

The currently focused ServoShellWindow, if one is focused.

§accessibility_active: Cell<bool>

Whether accessibility is active in servoshell.

Set by the platform via AccessKit, and forwarded to existing and new WebViews via WebView::set_accessibility_active(), in Self::set_accessibility_active() and and ServoShellWindow::create_toplevel_webview().

Implementations§

Source§

impl RunningAppState

Source

pub(crate) fn new( servo: Servo, servoshell_preferences: ServoShellPreferences, event_loop_waker: Box<dyn EventLoopWaker>, user_content_manager: Rc<UserContentManager>, default_preferences: Preferences, gamepad_delegate: Option<Rc<ServoshellGamepadDelegate>>, ) -> Self

Source

pub(crate) fn open_window( self: &Rc<Self>, platform_window: Rc<dyn PlatformWindow>, initial_url: Url, ) -> Rc<ServoShellWindow>

Source

pub(crate) fn windows<'a>( &'a self, ) -> Ref<'a, HashMap<ServoShellWindowId, Rc<ServoShellWindow>>>

Source

pub(crate) fn focused_window(&self) -> Option<Rc<ServoShellWindow>>

Source

pub(crate) fn focus_window(&self, window: Rc<ServoShellWindow>)

Source

pub(crate) fn window( &self, id: ServoShellWindowId, ) -> Option<Rc<ServoShellWindow>>

Source

pub(crate) fn webview_by_id(&self, webview_id: WebViewId) -> Option<WebView>

Source

pub(crate) fn webdriver_receiver( &self, ) -> Option<&Receiver<WebDriverCommandMsg>>

Source

pub(crate) fn servo(&self) -> &Servo

Source

pub(crate) fn gamepad_delegate(&self) -> Option<Rc<ServoshellGamepadDelegate>>

Source

pub(crate) fn schedule_exit(&self)

Source

pub(crate) fn experimental_preferences_enabled(&self) -> bool

Source

pub(crate) fn set_experimental_preferences_enabled(&self, new_value: bool)

Source

fn close_empty_windows(&self)

Close any ServoShellWindow that doesn’t have an open WebView.

Source

pub(crate) fn spin_event_loop( self: &Rc<Self>, create_platform_window: Option<&dyn Fn(Url) -> Rc<dyn PlatformWindow>>, ) -> bool

Spins the internal application event loop.

  • Notifies Servo about incoming gamepad events
  • Spin the Servo event loop, which will update Servo’s embedding layer and trigger delegate methods.

Returns true if the event loop should continue spinning and false if it should exit.

Source

pub(crate) fn maybe_window_for_webview_id( &self, webview_id: WebViewId, ) -> Option<Rc<ServoShellWindow>>

Source

pub(crate) fn window_for_webview_id( &self, webview_id: WebViewId, ) -> Rc<ServoShellWindow>

Source

pub(crate) fn platform_window_for_webview_id( &self, webview_id: WebViewId, ) -> Rc<dyn PlatformWindow>

Source

fn maybe_request_screenshot(&self, webview: WebView)

If we are exiting after achieving a stable image or we want to save the display of the WebView to an image file, request a screenshot of the WebView.

Source

pub(crate) fn set_pending_traversal( &self, traversal_id: TraversalId, sender: GenericSender<WebDriverLoadStatus>, )

Source

pub(crate) fn set_load_status_sender( &self, webview_id: WebViewId, sender: GenericSender<WebDriverLoadStatus>, )

Source

fn remove_load_status_sender(&self, webview_id: WebViewId)

Source

fn set_script_command_interrupt_sender( &self, sender: Option<GenericSender<WebDriverJSResult>>, )

Source

pub(crate) fn handle_webdriver_input_event( &self, webview_id: WebViewId, input_event: InputEvent, response_sender: Option<Sender<()>>, )

Source

pub(crate) fn handle_webdriver_screenshot( &self, webview_id: WebViewId, rect: Option<Rect<f32, CSSPixel>>, result_sender: Sender<Result<RgbaImage, ScreenshotCaptureError>>, )

Source

pub(crate) fn handle_webdriver_script_command( &self, script_command: &WebDriverScriptCommand, )

Source

pub(crate) fn handle_webdriver_load_url( &self, webview_id: WebViewId, url: Url, load_status_sender: GenericSender<WebDriverLoadStatus>, )

Source

pub(crate) fn handle_gamepad_events(&self)

Source

pub(crate) fn handle_focused(&self, window: Rc<ServoShellWindow>)

Source

fn interrupt_webdriver_script_evaluation(&self)

Interrupt any ongoing WebDriver-based script evaluation.

From https://w3c.github.io/webdriver/#dfn-execute-a-function-body:

The rules to execute a function body are as follows. The algorithm returns an ECMAScript completion record.

If at any point during the algorithm a user prompt appears, immediately return Completion { Type: normal, Value: null, Target: empty }, but continue to run the other steps of this algorithm in parallel.

Source

pub(crate) fn set_accessibility_active(&self, active: bool)

Source

pub(crate) fn accessibility_active(&self) -> bool

Source§

impl RunningAppState

Source

pub(crate) fn handle_webdriver_messages( self: &Rc<Self>, create_platform_window: Option<&dyn Fn(Url) -> Rc<dyn PlatformWindow>>, )

Trait Implementations§

Source§

impl WebViewDelegate for RunningAppState

Source§

fn screen_geometry(&self, webview: WebView) -> Option<ScreenGeometry>

Get the ScreenGeometry for this WebView. If this is unimplemented or returns None the screen will have the size of the WebView’s RenderingContext and WebView will be considered to be positioned at the screen’s origin.
Source§

fn notify_status_text_changed(&self, webview: WebView, _status: Option<String>)

The status text of the currently loaded page in this WebView has changed. The new status text can accessed via WebView::status_text.
Source§

fn notify_history_changed( &self, webview: WebView, _entries: Vec<Url>, _current: usize, )

The navigation history of this WebView has changed. The navigation history is represented as a Vec<Url> and _current denotes the current index in the history. New navigations, back navigation, and forward navigation modify this index.
Source§

fn notify_page_title_changed(&self, webview: WebView, _: Option<String>)

The page title of the currently loaded page in this WebView has changed. The new title can accessed via WebView::page_title.
Source§

fn notify_traversal_complete( &self, _webview: WebView, traversal_id: TraversalId, )

A history traversal operation is complete.
Source§

fn request_move_to(&self, webview: WebView, new_position: DeviceIntPoint)

Move the window to a point.
Source§

fn request_resize_to( &self, webview: WebView, requested_outer_size: DeviceIntSize, )

Try to resize the window that contains this WebView to the provided outer size. These resize requests can come from page content. Servo will ensure that the values are greater than zero, but it is up to the embedder to limit the maximum size. For instance, a reasonable limitation might be that the final size is no larger than the screen size.
Source§

fn request_authentication( &self, webview: WebView, authentication_request: AuthenticationRequest, )

Source§

fn request_create_new( &self, parent_webview: WebView, request: CreateNewWebViewRequest, )

This method is called when web content makes a request to open a new WebView, such as via the window.open DOM API. If this request is ignored, no new WebView will be opened. Embedders can handle this method by using the provided CreateNewWebViewRequest to build a new WebView. Read more
Source§

fn notify_closed(&self, webview: WebView)

Page content has closed this WebView via window.close(). It’s the embedder’s responsibility to remove the WebView from the interface when this notification occurs.
Source§

fn notify_input_event_handled( &self, webview: WebView, id: InputEventId, result: InputEventResult, )

An input event passed to this WebView via WebView::notify_input_event has been handled by Servo. This allows post-procesing of input events, such as chaining up unhandled events to parent UI elements.
Source§

fn notify_cursor_changed(&self, webview: WebView, cursor: Cursor)

The Cursor of the currently loaded page in this WebView has changed. The new cursor can accessed via WebView::cursor.
Source§

fn notify_load_status_changed(&self, webview: WebView, status: LoadStatus)

The LoadStatus of the currently loading or loaded page in this WebView has changed. The new status can accessed via WebView::load_status.
Source§

fn notify_fullscreen_state_changed( &self, webview: WebView, fullscreen_state: bool, )

A notification that the WebView has entered or exited fullscreen mode. This is an opportunity for the embedder to transition the containing window into or out of fullscreen mode and to show or hide extra UI elements. Regardless of how the notification is handled, the page will enter or leave fullscreen state internally according to the Fullscreen API.
Source§

fn show_bluetooth_device_dialog( &self, webview: WebView, request: BluetoothDeviceSelectionRequest, )

Open dialog to select bluetooth device.
Source§

fn request_permission( &self, webview: WebView, permission_request: PermissionRequest, )

Content in a WebView is requesting permission to access a feature requiring permission from the user. The embedder should allow or deny the request, either by reading a cached value or querying the user for permission via the user interface.
Source§

fn notify_new_frame_ready(&self, webview: WebView)

Notify the embedder that it needs to present a new frame.
Source§

fn show_embedder_control( &self, webview: WebView, embedder_control: EmbedderControl, )

Request that the embedder show UI elements for form controls that are not integrated into page content, such as dropdowns for <select> elements.
Source§

fn hide_embedder_control( &self, webview: WebView, embedder_control_id: EmbedderControlId, )

Request that the embedder hide and ignore a previous EmbedderControl request, if it hasn’t already responded to it. Read more
Source§

fn notify_favicon_changed(&self, webview: WebView)

The favicon of the currently loaded page in this WebView has changed. The new favicon Image can accessed via WebView::favicon.
Source§

fn notify_media_session_event(&self, webview: WebView, event: MediaSessionEvent)

Notifies the embedder about media session events (i.e. when there is metadata for the active media session, playback state changes…).
Source§

fn notify_crashed( &self, webview: WebView, reason: String, backtrace: Option<String>, )

A pipeline in the webview panicked. First string is the reason, second one is the backtrace.
Source§

fn show_console_message( &self, webview: WebView, level: ConsoleLogLevel, message: String, )

A console message was logged by content in this WebView. https://developer.mozilla.org/en-US/docs/Web/API/Console_API
Source§

fn notify_accessibility_tree_update( &self, webview: WebView, tree_update: TreeUpdate, )

There is a new accessibility tree update from this WebView. Read more
Source§

fn notify_url_changed(&self, _webview: WebView, _url: Url)

The URL of the currently loaded page in this WebView has changed. The new URL can accessed via WebView::url.
Source§

fn notify_focus_changed(&self, _webview: WebView, _focused: bool)

This WebView has either become focused or lost focus. Whether or not the WebView is focused can be accessed via WebView::focused.
Source§

fn notify_animating_changed(&self, _webview: WebView, _animating: bool)

This WebView has either started to animate or stopped animating. When a WebView is animating, it is up to the embedding application ensure that Servo::spin_event_loop is called at regular intervals in order to update the painted contents of the WebView.
Source§

fn request_navigation( &self, _webview: WebView, _navigation_request: NavigationRequest, )

Whether or not to allow a WebView to load a URL in its main frame or one of its nested <iframe>s. NavigationRequests are accepted by default.
Source§

fn request_unload(&self, _webview: WebView, _unload_request: AllowOrDenyRequest)

Whether or not to allow a WebView to unload a Document in its main frame or one of its nested <iframe>s. By default, unloads are allowed.
Source§

fn request_protocol_handler( &self, _webview: WebView, _protocol_handler_registration: ProtocolHandlerRegistration, _allow_deny_request: AllowOrDenyRequest, )

Whether or not to allow a WebView to (un)register a protocol handler (e.g. mailto:). Typically an embedder application will show a permissions prompt when this happens to confirm a protocol handler is allowed. By default, requests are denied. For more information, see the specification: https://html.spec.whatwg.org/multipage/#custom-handlers
Source§

fn load_web_resource(&self, _webview: WebView, _load: WebResourceLoad)

Triggered when this WebView will load a web (HTTP/HTTPS) resource. The load may be intercepted and alternate contents can be loaded by the client by calling WebResourceLoad::intercept. If not handled, the load will continue as normal. Read more
Source§

fn show_notification(&self, _webview: WebView, _notification: Notification)

Request to display a notification.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> Filterable for T

Source§

fn filterable( self, filter_name: &'static str, ) -> RequestFilterDataProvider<T, fn(DataRequest<'_>) -> bool>

Creates a filterable data provider with the given name for debugging. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> MaybeBoxed<Box<T>> for T

Source§

fn maybe_boxed(self) -> Box<T>

Convert
Source§

impl<T> MaybeBoxed<T> for T

Source§

fn maybe_boxed(self) -> T

Convert
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, S> SimdFrom<T, S> for T
where S: Simd,

Source§

fn simd_from(_simd: S, value: T) -> T

Source§

impl<T, S> SimdFrom<T, S> for T
where S: Simd,

Source§

fn simd_from(value: T, _simd: S) -> T

Source§

impl<F, T, S> SimdInto<T, S> for F
where T: SimdFrom<F, S>, S: Simd,

Source§

fn simd_into(self, simd: S) -> T

Source§

impl<F, T, S> SimdInto<T, S> for F
where T: SimdFrom<F, S>, S: Simd,

Source§

fn simd_into(self, simd: S) -> T

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> MaybeSendSync for T

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,