| // Copyright 2018 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 remote_cocoa.mojom; |
| |
| import "content/public/common/drop_data.mojom"; |
| import "mojo/public/mojom/base/file_path.mojom"; |
| import "ui/gfx/geometry/mojom/geometry.mojom"; |
| import "ui/gfx/image/mojom/image.mojom"; |
| import "url/mojom/url.mojom"; |
| |
| // Interface through which a WebContentsViewMac communicates with its NSView in |
| // another process. |
| interface WebContentsNSView { |
| // Set this to be a child NSView of the NSView mapped to by |
| // |parent_ns_view_id|. |
| SetParentNSView(uint64 parent_ns_view_id); |
| |
| // Clear the parent NSView and related state. |
| ResetParentNSView(); |
| |
| // Set the NSView's frame in its NSWindow to |bounds_in_window|. |
| SetBounds(gfx.mojom.Rect bounds_in_window); |
| |
| // Short or hide the NSView. |
| SetVisible(bool visible); |
| |
| // Make the NSView be the first responder for its window. |
| MakeFirstResponder(); |
| |
| // Called when a subview asks this to take focus back (e.g, because it has |
| // iterated past the last or first focusable element on the page). The |
| // iteration direction is in |reverse|. |
| TakeFocus(bool reverse); |
| |
| // Initiate a drag from the web contents area. |
| StartDrag(content.mojom.DropData drop_data, |
| uint32 operation_mask, |
| gfx.mojom.ImageSkia? image, |
| gfx.mojom.Vector2d image_offset); |
| }; |
| |
| // The method through which a window was focused (directly focused, or by |
| // iterating through NSViews). |
| enum SelectionDirection { |
| // The selection was not made through iteration. |
| kDirect, |
| // The selection is made by iterating to the next valid selection. |
| kForward, |
| // The selection is made by iterating to the previous valid selection. |
| kReverse, |
| }; |
| |
| // The visibility of the window embedding a web contents NSView. |
| enum Visibility { |
| // The view is part of a window that may be visible. |
| kVisible, |
| // The view is part of a window that is fully occluded. |
| kOccluded, |
| // The view is not part of any window or is part of a hidden window. |
| kHidden, |
| }; |
| |
| // The data extracted from an NSDraggingInfo at draggingEntered, |
| // draggingUpdated, and performDragOperation. |
| struct DraggingInfo { |
| // The dragging location in the NSView, with the origin in the upper-left. |
| gfx.mojom.PointF location_in_view; |
| |
| // The dragging location in the NSScreen, with the origin in the upper-left. |
| gfx.mojom.PointF location_in_screen; |
| |
| // The URL data from the drag, if any. Note that this is redundant in that it |
| // is already present in DropData. It is here because it is used by methods |
| // that don't use DropData. |
| url.mojom.Url? url; |
| |
| // The operation mask. |
| uint32 operation_mask; |
| }; |
| |
| // Interface through which the NSView in another process communicates with its |
| // owning WebContentsViewMac. This interface has no methods yet, but is included |
| // for symmetry and future use. |
| interface WebContentsNSViewHost { |
| // Notification that there was a mouse event, along with the type of event. |
| // If |motion| is true, this is a normal motion event. If |exited| is true, |
| // the pointer left the contents area. |
| OnMouseEvent(bool motion, bool exited); |
| |
| // Called when the NSView becomes first responder, with |direction| set to |
| // indicate iteration direction (if any). |
| OnBecameFirstResponder(SelectionDirection direction); |
| |
| // Called when the window displaying the web contents becomes visible, hidden, |
| // or occluded. |
| OnWindowVisibilityChanged(Visibility visibility); |
| |
| // Transmit the data that is being dropped on the NSView. This is called prior |
| // to DraggingEntered. |
| SetDropData(content.mojom.DropData drop_data); |
| |
| // Called in response to the -[NSDraggingDestination draggingEntered] method |
| // being called on the NSView. Returns the resulting operation in |result|. |
| [Sync] |
| DraggingEntered(DraggingInfo dragging_info) => (uint32 result); |
| |
| // Called in response to the -[NSDraggingDestination draggingExited] method. |
| DraggingExited(); |
| |
| // Called in response to the -[NSDraggingDestination draggingUpdated] method |
| // being called on the NSView. Returns the resulting operation in |result|. |
| [Sync] |
| DraggingUpdated(DraggingInfo dragging_info) => (uint32 result); |
| |
| // Called in response to the -[NSDraggingDestination performDragOperation:] |
| // method being called on the NSView. Returns the result of the operation in |
| // |result|. |
| [Sync] |
| PerformDragOperation(DraggingInfo dragging_info) => (bool result); |
| |
| // Called in response to the -namesOfPromisedFilesDroppedAtDestination method |
| // being called on the NSView. The |file_path| input argument is the |
| // requested destination file, and the output |file_path| is the actual |
| // destination file. |
| [Sync] |
| DragPromisedFileTo(mojo_base.mojom.FilePath file_path, |
| content.mojom.DropData drop_data, |
| url.mojom.Url download_url) => |
| (mojo_base.mojom.FilePath file_path); |
| |
| // Called in to the -draggedImage: method being called on the NSView. |
| EndDrag(uint32 drag_operation, |
| gfx.mojom.PointF local_point, |
| gfx.mojom.PointF screen_point); |
| }; |
| |