| // Copyright 2020 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| module blink.mojom; |
| |
| import "mojo/public/mojom/base/string16.mojom"; |
| import "mojo/public/mojom/base/time.mojom"; |
| import "services/network/public/mojom/referrer_policy.mojom"; |
| import "ui/base/mojom/ui_base_types.mojom"; |
| import "ui/gfx/geometry/mojom/geometry.mojom"; |
| import "url/mojom/url.mojom"; |
| import "url/mojom/origin.mojom"; |
| |
| // GENERATED_JAVA_ENUM_PACKAGE: org.chromium.blink_public.common |
| // GENERATED_JAVA_CLASS_NAME_OVERRIDE: ContextMenuDataMediaType |
| enum ContextMenuDataMediaType { |
| // No special node is in context. |
| kNone, |
| |
| // An image node is selected. |
| kImage, |
| |
| // A video node is selected. |
| kVideo, |
| |
| // An audio node is selected. |
| kAudio, |
| |
| // A canvas node is selected. |
| kCanvas, |
| |
| // A file node is selected. |
| kFile, |
| |
| // A plugin node is selected. |
| kPlugin, |
| }; |
| |
| enum ContextMenuDataInputFieldType { |
| // Not an input field. |
| kNone, |
| |
| // type = text, search, email, url |
| kPlainText, |
| |
| // type = password |
| kPassword, |
| |
| // type = number |
| kNumber, |
| |
| // type = tel |
| kTelephone, |
| |
| // type = <etc.> |
| kOther, |
| }; |
| |
| // Mojo struct to represent blink::Impression native struct. |
| struct Impression { |
| // Intended committed top-level origin of the resulting navigation. Must match |
| // the committed navigation's origin to be a valid impression. Declared by |
| // the impression tag. |
| url.mojom.Origin conversion_destination; |
| |
| // Optional origin that will receive all conversion measurement reports |
| // associated with this impression. Declared by the impression tag. |
| url.mojom.Origin? reporting_origin; |
| |
| // Data that will be sent in conversion reports to identify this impression. |
| // Declared by the impression tag. |
| uint64 impression_data; |
| |
| // Optional expiry specifying the amount of time this impression can convert. |
| // Declared by the impression tag. |
| mojo_base.mojom.TimeDelta? expiry; |
| }; |
| |
| enum CustomContextMenuItemType { |
| kOption, |
| kCheckableOption, |
| kGroup, |
| kSeparator, |
| kSubMenu |
| }; |
| |
| // Container for information about entries in an HTML select popup menu and |
| // custom entries of the context menu. |
| // TODO(crbug.com/1093904): Consider merging the MenuItem struct in |
| // popup_menu.mojom. |
| struct CustomContextMenuItem { |
| mojo_base.mojom.String16 label; |
| mojo_base.mojom.String16 icon; |
| mojo_base.mojom.String16 tool_tip; |
| CustomContextMenuItemType type; |
| int32 action; |
| bool rtl; |
| bool has_directional_override; |
| bool enabled; |
| bool checked; |
| array<CustomContextMenuItem> submenu; |
| }; |
| |
| // Mojo struct to represent blink::UntrustworthyContextMenuParams native struct. |
| struct UntrustworthyContextMenuParams { |
| // This is the type of Context Node that the context menu was invoked on. |
| ContextMenuDataMediaType media_type; |
| |
| // These values represent the coordinates of the mouse when the context menu |
| // was invoked. Coords are relative to the associated RenderView's origin. |
| int32 x; |
| int32 y; |
| |
| // This is the URL of the link that encloses the node the context menu was |
| // invoked on. |
| url.mojom.Url link_url; |
| |
| // The text associated with the link. May be an empty string if the contents |
| // of the link are an image. |
| // Will be empty if |link_url| is empty. |
| mojo_base.mojom.String16 link_text; |
| |
| // The impression declared by the link. May be base::nullopt even if |
| // |link_url| is non-empty. |
| Impression? impression; |
| |
| // The link URL to be used ONLY for "copy link address". We don't validate |
| // this field in the frontend process. |
| url.mojom.Url unfiltered_link_url; |
| |
| // This is the source URL for the element that the context menu was |
| // invoked on. Example of elements with source URLs are img, audio, and |
| // video. |
| url.mojom.Url src_url; |
| |
| // This is true if the context menu was invoked on an image which has |
| // non-empty contents. |
| bool has_image_contents; |
| |
| // These are the parameters for the media element that the context menu |
| // was invoked on. |
| int32 media_flags; |
| |
| // This is the text of the selection that the context menu was invoked on. |
| mojo_base.mojom.String16 selection_text; |
| |
| // This is the title text of the selection that the context menu was |
| // invoked on. |
| mojo_base.mojom.String16 title_text; |
| |
| // This is the alt text of the selection that the context menu was |
| // invoked on. |
| mojo_base.mojom.String16 alt_text; |
| |
| // This is the suggested filename to be used when saving file through "Save |
| // Link As" option of context menu. |
| mojo_base.mojom.String16 suggested_filename; |
| |
| // The misspelled word under the cursor, if any. Used to generate the |
| // |dictionary_suggestions| list. |
| mojo_base.mojom.String16 misspelled_word; |
| |
| // Suggested replacements for a misspelled word under the cursor. |
| // This vector gets populated in the render process host |
| // by intercepting ViewHostMsg_ContextMenu in ResourceMessageFilter |
| // and populating dictionary_suggestions if the type is EDITABLE |
| // and the misspelled_word is not empty. |
| array<mojo_base.mojom.String16> dictionary_suggestions; |
| |
| // If editable, flag for whether spell check is enabled or not. |
| bool spellcheck_enabled; |
| |
| // Whether context is editable. |
| bool is_editable; |
| |
| // Writing direction menu items. |
| int32 writing_direction_default; |
| int32 writing_direction_left_to_right; |
| int32 writing_direction_right_to_left; |
| |
| // These flags indicate to the browser whether the renderer believes it is |
| // able to perform the corresponding action. |
| int32 edit_flags; |
| |
| // The character encoding of the frame on which the menu is invoked. |
| string frame_charset; |
| |
| // The referrer policy of the frame on which the menu is invoked. |
| network.mojom.ReferrerPolicy referrer_policy; |
| |
| // If the context menu was created for a link, and we navigated to that url, |
| // this will contain the url that was navigated. This field may not be set |
| // if, for example, we are transitioning to an incognito window, since we |
| // want to sever any connection to the old renderer. |
| url.mojom.Url link_followed; |
| |
| array<CustomContextMenuItem> custom_items; |
| |
| ui.mojom.MenuSourceType source_type; |
| |
| // If this node is an input field, the type of that field. |
| ContextMenuDataInputFieldType input_field_type; |
| |
| // Rect representing the coordinates in the document space of the selection. |
| gfx.mojom.Rect selection_rect; |
| |
| // Start position of the selection text. |
| int32 selection_start_offset; |
| }; |
| |
| // Defines methods for Context menu to commnicate from the renderer to the |
| // browser. |
| interface ContextMenuClient { |
| // Executes custom context menu action that was provided from Blink. |
| CustomContextMenuAction(uint32 action); |
| |
| // Called in response to a blink.mojom.ShowContextMenu to let the renderer |
| // know that the menu has been closed. |
| ContextMenuClosed(url.mojom.Url link_followed); |
| }; |