| // Copyright 2019 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| library fuchsia.web; |
| |
| using fuchsia.net.http; |
| |
| /// Interface supplied by the embedder for receiving notifications about navigation events in a |
| /// [`fuchsia.web.Frame`]. |
| protocol NavigationEventListener { |
| /// Called when user-visible navigation state has changed since [`fuchsia.web.Frame`] creation |
| /// or the last acknowledgement callback, whichever occurred last. `change` will contain all |
| /// the differences in navigation state since the last acknowledgement. Any unchanged |
| /// properties will be left unset in `change`. |
| /// |
| /// Implementer must call the acknowledgement callback to receive new navigation events. |
| OnNavigationStateChanged(NavigationState change) -> (); |
| }; |
| |
| /// Represents the return status of a [`fuchsia.web.NavigationController`] method. |
| enum NavigationControllerError : int32 { |
| /// The provided URL is invalid. |
| INVALID_URL = 1; |
| |
| /// At least one of the provided headers was invalid. |
| INVALID_HEADER = 2; |
| }; |
| |
| /// Provides methods for controlling and querying the navigation state of a [`fuchsia.web.Frame`]. |
| protocol NavigationController { |
| /// Tells the [`fuchsia.web.Frame`] to navigate to a `url`. |
| /// |
| /// - `url`: The address to navigate to. |
| /// - `params`: Additional parameters that affect how the resource will be |
| /// loaded (e.g. cookies, HTTP headers, etc.) |
| /// |
| /// If an error occured, the [`fuchsia.web.NavigationControllerError`] will be set to one of |
| /// these values: |
| /// - `INVALID_URL`: The `url` parameter is invalid. |
| /// - `INVALID_HEADER`: At least one of the headers in [`fuchsia.web.LoadUrlParams/headers`] |
| /// is invalid. |
| LoadUrl(Url url, LoadUrlParams params) |
| -> () error NavigationControllerError; |
| |
| /// Tells the [`fuchsia.web.Frame`] to navigate to the previous page in its history, if any. |
| GoBack(); |
| |
| /// Tells the [`fuchsia.web.Frame`] to navigate to the next page in its history, if any. |
| GoForward(); |
| |
| /// Tells the [`fuchsia.web.Frame`] to stop the current navigation if a navigation is ongoing. |
| Stop(); |
| |
| /// Tells the [`fuchsia.web.Frame`] to reload the current page. |
| Reload(ReloadType type); |
| |
| /// Returns information for the currently visible content regardless of loading state, or an |
| /// empty entry if no content is being displayed. |
| GetVisibleEntry() -> (NavigationState entry); |
| }; |
| |
| /// Additional parameters for modifying the behavior of |
| /// [`fuchsia.web.NavigationController/LoadUrl`]. |
| table LoadUrlParams { |
| /// Provides a hint to the browser UI about how [`fuchsia.web.NavigationController/LoadUrl`] |
| /// was triggered. |
| 1: LoadUrlReason type; |
| |
| /// The URL that linked to the resource being requested. |
| 2: Url referrer_url; |
| |
| /// Should be set to true to propagate user activation to the frame. User activation implies |
| /// that the user is interacting with the web frame. It enables some web features that are not |
| /// available otherwise. For example, autoplay will work only when this flag is set to true. |
| 3: bool was_user_activated; |
| |
| /// Custom HTTP headers. |
| 4: vector<fuchsia.net.http.Header> headers; |
| }; |
| |
| /// Contains information about the [`fuchsia.web.Frame`]'s navigation state. |
| table NavigationState { |
| /// The page's URL. |
| 1: Url url; |
| |
| /// The user-visible page title. |
| 2: string title; |
| |
| /// Indicates whether this was a navigation to an error page. |
| 3: PageType page_type; |
| |
| /// Indicates if there is a following navigation. |
| 4: bool can_go_forward; |
| |
| /// Indicates if there is a previous navigation. |
| 5: bool can_go_back; |
| |
| /// Indicates that the main document's statically declared resources have been loaded. |
| 6: bool is_main_document_loaded; |
| }; |
| |
| /// Characterizes the type of reload. |
| enum ReloadType : uint32 { |
| /// Reloads the current entry, bypassing the cache for the main resource. |
| PARTIAL_CACHE = 0; |
| |
| /// Reloads the current entry, bypassing the cache entirely. |
| NO_CACHE = 1; |
| }; |
| |
| /// Characterizes the origin of a [`fuchsia.web.NavigationController/LoadUrl`] request. |
| enum LoadUrlReason : uint32 { |
| /// Navigation was initiated by the user following a link. |
| LINK = 0; |
| |
| /// Navigation was initiated by a user-provided URL. |
| TYPED = 1; |
| }; |
| |
| /// Characterizes the page type in a [`fuchsia.web.NavigationState`]. |
| enum PageType { |
| /// Regular web page. |
| NORMAL = 0; |
| |
| /// Error page. |
| ERROR = 1; |
| }; |