| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 import "mojo/services/public/interfaces/geometry/geometry.mojom" | 5 import "mojo/services/public/interfaces/geometry/geometry.mojom" |
| 6 import "mojo/services/public/interfaces/input_events/input_events.mojom" | 6 import "mojo/services/public/interfaces/input_events/input_events.mojom" |
| 7 import "mojo/services/public/interfaces/view_manager/view_manager_constants.mojo
m" | 7 import "mojo/services/public/interfaces/view_manager/view_manager_constants.mojo
m" |
| 8 | 8 |
| 9 module mojo.view_manager { | 9 module mojo.view_manager { |
| 10 | 10 |
| 11 struct NodeData { | 11 struct NodeData { |
| 12 uint32 parent_id; | 12 uint32 parent_id; |
| 13 uint32 node_id; | 13 uint32 node_id; |
| 14 uint32 view_id; | 14 uint32 view_id; |
| 15 mojo.Rect bounds; | 15 mojo.Rect bounds; |
| 16 // TODO(sky): add visible. | 16 // TODO(sky): add visible. |
| 17 }; | 17 }; |
| 18 | 18 |
| 19 enum ErrorCode { | 19 enum ErrorCode { |
| 20 NONE, | 20 NONE, |
| 21 VALUE_IN_USE, | 21 VALUE_IN_USE, |
| 22 ILLEGAL_ARGUMENT, | 22 ILLEGAL_ARGUMENT, |
| 23 UNEXPECTED_CHANGE_ID, | |
| 24 }; | 23 }; |
| 25 | 24 |
| 26 // ViewManagerInitService is responsible for launching the client that controls | 25 // ViewManagerInitService is responsible for launching the client that controls |
| 27 // the root node. mojo::view_manager returns an instance of this. All other | 26 // the root node. mojo::view_manager returns an instance of this. All other |
| 28 // connections are established by the client this creates. | 27 // connections are established by the client this creates. |
| 29 interface ViewManagerInitService { | 28 interface ViewManagerInitService { |
| 30 EmbedRoot(string url) => (bool success); | 29 EmbedRoot(string url) => (bool success); |
| 31 }; | 30 }; |
| 32 | 31 |
| 33 // Functions that mutate the hierarchy take a change id. This is an ever | |
| 34 // increasing integer used to identify the change. Every hierarchy change | |
| 35 // increases this value. The server only accepts changes where the supplied | |
| 36 // |server_change_id| matches the expected next value. This ensures changes are | |
| 37 // made in a well defined order. | |
| 38 // | |
| 39 // Nodes and Views are identified by a uint32. The upper 16 bits are the | 32 // Nodes and Views are identified by a uint32. The upper 16 bits are the |
| 40 // connection id, and the lower 16 the id assigned by the client. | 33 // connection id, and the lower 16 the id assigned by the client. |
| 41 // | 34 // |
| 42 // The root node is identified with a connection id of 0, and value of 1. | 35 // The root node is identified with a connection id of 0, and value of 1. |
| 43 [Client=ViewManagerClient] | 36 [Client=ViewManagerClient] |
| 44 interface ViewManagerService { | 37 interface ViewManagerService { |
| 45 // Creates a new node with the specified id. It is up to the client to ensure | 38 // Creates a new node with the specified id. It is up to the client to ensure |
| 46 // the id is unique to the connection (the id need not be globally unique). | 39 // the id is unique to the connection (the id need not be globally unique). |
| 47 // Additionally the connection id (embedded in |node_id|) must match that of | 40 // Additionally the connection id (embedded in |node_id|) must match that of |
| 48 // the connection. | 41 // the connection. |
| 49 // Errors: | 42 // Errors: |
| 50 // ERROR_CODE_VALUE_IN_USE: a node already exists with the specified id. | 43 // ERROR_CODE_VALUE_IN_USE: a node already exists with the specified id. |
| 51 // ERROR_CODE_ILLEGAL_ARGUMENT: The connection part of |node_id| does not | 44 // ERROR_CODE_ILLEGAL_ARGUMENT: The connection part of |node_id| does not |
| 52 // match the connection id of the client. | 45 // match the connection id of the client. |
| 53 CreateNode(uint32 node_id) => (ErrorCode error_code); | 46 CreateNode(uint32 node_id) => (ErrorCode error_code); |
| 54 | 47 |
| 55 // Deletes a node. This does not recurse. No hierarchy change notifications | 48 // Deletes a node. This does not recurse. No hierarchy change notifications |
| 56 // are sent as a result of this. Only the connection that created the node can | 49 // are sent as a result of this. Only the connection that created the node can |
| 57 // delete it. | 50 // delete it. |
| 58 DeleteNode(uint32 node_id, uint32 change_id) => (bool success); | 51 DeleteNode(uint32 node_id) => (bool success); |
| 59 | 52 |
| 60 // Sets the specified bounds of the specified node. | 53 // Sets the specified bounds of the specified node. |
| 61 SetNodeBounds(uint32 node_id, mojo.Rect bounds) => (bool success); | 54 SetNodeBounds(uint32 node_id, mojo.Rect bounds) => (bool success); |
| 62 | 55 |
| 63 // Sets the visibility of the specified node to |visible|. Connections are | 56 // Sets the visibility of the specified node to |visible|. Connections are |
| 64 // allowed to change the visibility of any node they have created, as well as | 57 // allowed to change the visibility of any node they have created, as well as |
| 65 // any of their roots. | 58 // any of their roots. |
| 66 SetNodeVisibility(uint32 node_id, bool visible) => (bool success); | 59 SetNodeVisibility(uint32 node_id, bool visible) => (bool success); |
| 67 | 60 |
| 68 // Reparents a node. See description above class for details of |change_id|. | 61 // Reparents a node. |
| 69 // This fails for any of the following reasons: | 62 // This fails for any of the following reasons: |
| 70 // . |server_change_id| is not the expected id. | |
| 71 // . |parent| or |child| does not identify a valid node. | 63 // . |parent| or |child| does not identify a valid node. |
| 72 // . |child| is an ancestor of |parent|. | 64 // . |child| is an ancestor of |parent|. |
| 73 // . |child| is already a child of |parent|. | 65 // . |child| is already a child of |parent|. |
| 74 // | 66 // |
| 75 // This may result in a connection getting OnNodeDeleted(). See | 67 // This may result in a connection getting OnNodeDeleted(). See |
| 76 // RemoveNodeFromParent for details. | 68 // RemoveNodeFromParent for details. |
| 77 AddNode(uint32 parent, | 69 AddNode(uint32 parent, uint32 child) => (bool success); |
| 78 uint32 child, | |
| 79 uint32 server_change_id) => (bool success); | |
| 80 | 70 |
| 81 // Removes a view from its current parent. See description above class for | 71 // Removes a view from its current parent. This fails if the node is not |
| 82 // details of |change_id|. This fails if the node is not valid, | 72 // valid, |server_change_id| doesn't match, or the node already has no parent. |
| 83 // |server_change_id| doesn't match, or the node already has no parent. | |
| 84 // | 73 // |
| 85 // Removing a node from a parent may result in OnNodeDeleted() being sent to | 74 // Removing a node from a parent may result in OnNodeDeleted() being sent to |
| 86 // other connections. For example, connection A has nodes 1 and 2, with 2 a | 75 // other connections. For example, connection A has nodes 1 and 2, with 2 a |
| 87 // child of 1. Connection B has a root 1. If 2 is removed from 1 then B gets | 76 // child of 1. Connection B has a root 1. If 2 is removed from 1 then B gets |
| 88 // OnNodeDeleted(). This is done as node 2 is effectively no longer visible to | 77 // OnNodeDeleted(). This is done as node 2 is effectively no longer visible to |
| 89 // connection B. | 78 // connection B. |
| 90 RemoveNodeFromParent(uint32 node_id, | 79 RemoveNodeFromParent(uint32 node_id) => (bool success); |
| 91 uint32 server_change_id) => (bool success); | |
| 92 | 80 |
| 93 // Reorders a node in its parent, relative to |relative_node_id| according to | 81 // Reorders a node in its parent, relative to |relative_node_id| according to |
| 94 // |direction|. | 82 // |direction|. |
| 95 // Only the connection that created the node's parent can reorder its | 83 // Only the connection that created the node's parent can reorder its |
| 96 // children. | 84 // children. |
| 97 ReorderNode(uint32 node_id, | 85 ReorderNode(uint32 node_id, |
| 98 uint32 relative_node_id, | 86 uint32 relative_node_id, |
| 99 OrderDirection direction, | 87 OrderDirection direction) => (bool success); |
| 100 uint32 server_change_id) => (bool success); | |
| 101 | 88 |
| 102 // Returns the nodes comprising the tree starting at |node_id|. |node_id| is | 89 // Returns the nodes comprising the tree starting at |node_id|. |node_id| is |
| 103 // the first result in the return value, unless |node_id| is invalid, in which | 90 // the first result in the return value, unless |node_id| is invalid, in which |
| 104 // case an empty vector is returned. The nodes are visited using a depth first | 91 // case an empty vector is returned. The nodes are visited using a depth first |
| 105 // search (pre-order). | 92 // search (pre-order). |
| 106 GetNodeTree(uint32 node_id) => (NodeData[] nodes); | 93 GetNodeTree(uint32 node_id) => (NodeData[] nodes); |
| 107 | 94 |
| 108 // Creates a new view with the specified id. It is up to the client to ensure | 95 // Creates a new view with the specified id. It is up to the client to ensure |
| 109 // the id is unique to the connection (the id need not be globally unique). | 96 // the id is unique to the connection (the id need not be globally unique). |
| 110 // Additionally the connection id (embedded in |view_id|) must match that of | 97 // Additionally the connection id (embedded in |view_id|) must match that of |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 148 // Sends OnViewInputEvent() to the owner of the specified view. | 135 // Sends OnViewInputEvent() to the owner of the specified view. |
| 149 DispatchOnViewInputEvent(uint32 view_id, mojo.Event event); | 136 DispatchOnViewInputEvent(uint32 view_id, mojo.Event event); |
| 150 }; | 137 }; |
| 151 | 138 |
| 152 // Changes to nodes/views are not sent to the connection that originated the | 139 // Changes to nodes/views are not sent to the connection that originated the |
| 153 // change. For example, if connection 1 attaches a view to a node (SetView()) | 140 // change. For example, if connection 1 attaches a view to a node (SetView()) |
| 154 // connection 1 does not receive OnNodeViewReplaced(). | 141 // connection 1 does not receive OnNodeViewReplaced(). |
| 155 [Client=ViewManagerService] | 142 [Client=ViewManagerService] |
| 156 interface ViewManagerClient { | 143 interface ViewManagerClient { |
| 157 // Invoked once the connection has been established. |connection_id| is the id | 144 // Invoked once the connection has been established. |connection_id| is the id |
| 158 // that uniquely identifies this connection. |next_server_change_id| is the | 145 // that uniquely identifies this connection. |nodes| are the nodes parented to |
| 159 // id of the next change the server is expecting. |nodes| are the nodes | 146 // the root. |
| 160 // parented to the root. | |
| 161 OnViewManagerConnectionEstablished(uint16 connection_id, | 147 OnViewManagerConnectionEstablished(uint16 connection_id, |
| 162 string creator_url, | 148 string creator_url, |
| 163 uint32 next_server_change_id, | |
| 164 NodeData[] nodes); | 149 NodeData[] nodes); |
| 165 | 150 |
| 166 // See description of ViewManagerService::Embed() for details as to when | 151 // See description of ViewManagerService::Embed() for details as to when |
| 167 // this is invoked. | 152 // this is invoked. |
| 168 OnRootAdded(NodeData[] nodes); | 153 OnRootAdded(NodeData[] nodes); |
| 169 | 154 |
| 170 // This is sent to clients when a change is made to the server that results | |
| 171 // in the |server_change_id| changing but the client isn't notified. This is | |
| 172 // not sent if the client receives a callback giving a new | |
| 173 // |server_change_id|. For example, if a client 1 changes the hierarchy in | |
| 174 // some way but client 2 isn't notified of the change, then client 2 gets | |
| 175 // OnServerChangeIdAdvanced(). | |
| 176 OnServerChangeIdAdvanced(uint32 next_server_change_id); | |
| 177 | |
| 178 // Invoked when a node's bounds have changed. | 155 // Invoked when a node's bounds have changed. |
| 179 OnNodeBoundsChanged(uint32 node, mojo.Rect old_bounds, mojo.Rect new_bounds); | 156 OnNodeBoundsChanged(uint32 node, mojo.Rect old_bounds, mojo.Rect new_bounds); |
| 180 | 157 |
| 181 // Invoked when a change is done to the hierarchy. A value of 0 is used to | 158 // Invoked when a change is done to the hierarchy. A value of 0 is used to |
| 182 // identify a null node. For example, if the old_parent is NULL, 0 is | 159 // identify a null node. For example, if the old_parent is NULL, 0 is |
| 183 // supplied. See description above ViewManager for details on the change ids. | 160 // supplied. See description above ViewManager for details on the change ids. |
| 184 // |nodes| contains any nodes that are that the client has not been told | 161 // |nodes| contains any nodes that are that the client has not been told |
| 185 // about. This is not sent for hierarchy changes of nodes not known to this | 162 // about. This is not sent for hierarchy changes of nodes not known to this |
| 186 // client or not attached to the tree. | 163 // client or not attached to the tree. |
| 187 OnNodeHierarchyChanged(uint32 node, | 164 OnNodeHierarchyChanged(uint32 node, |
| 188 uint32 new_parent, | 165 uint32 new_parent, |
| 189 uint32 old_parent, | 166 uint32 old_parent, |
| 190 uint32 server_change_id, | |
| 191 NodeData[] nodes); | 167 NodeData[] nodes); |
| 192 | 168 |
| 193 // Invoked when the order of nodes within a parent changes. | 169 // Invoked when the order of nodes within a parent changes. |
| 194 OnNodeReordered(uint32 node_id, | 170 OnNodeReordered(uint32 node_id, |
| 195 uint32 relative_node_id, | 171 uint32 relative_node_id, |
| 196 OrderDirection direction, | 172 OrderDirection direction); |
| 197 uint32 server_change_id); | |
| 198 | 173 |
| 199 // Invoked when a node is deleted. | 174 // Invoked when a node is deleted. |
| 200 OnNodeDeleted(uint32 node, uint32 server_change_id); | 175 OnNodeDeleted(uint32 node); |
| 201 | 176 |
| 202 // Invoked when the view associated with a node is replaced by another view. | 177 // Invoked when the view associated with a node is replaced by another view. |
| 203 // 0 is used to identify a null view. | 178 // 0 is used to identify a null view. |
| 204 OnNodeViewReplaced(uint32 node, uint32 new_view_id, uint32 old_view_id); | 179 OnNodeViewReplaced(uint32 node, uint32 new_view_id, uint32 old_view_id); |
| 205 | 180 |
| 206 // Invoked when a view is deleted. | 181 // Invoked when a view is deleted. |
| 207 OnViewDeleted(uint32 view); | 182 OnViewDeleted(uint32 view); |
| 208 | 183 |
| 209 // Invoked when an event is targeted at the specified view. | 184 // Invoked when an event is targeted at the specified view. |
| 210 OnViewInputEvent(uint32 view, mojo.Event event) => (); | 185 OnViewInputEvent(uint32 view, mojo.Event event) => (); |
| 211 | 186 |
| 212 // Invoked when focus shifts from one Node to another. |gained_focus_id| is | 187 // Invoked when focus shifts from one Node to another. |gained_focus_id| is |
| 213 // the id of the node that gained focus, or 0 if the node that gained focus is | 188 // the id of the node that gained focus, or 0 if the node that gained focus is |
| 214 // not known to this connection. |lost_focus_id| is likewise the node that | 189 // not known to this connection. |lost_focus_id| is likewise the node that |
| 215 // lost focus. | 190 // lost focus. |
| 216 // TODO(beng): once aura is removed from the service, focus management should | 191 // TODO(beng): once aura is removed from the service, focus management should |
| 217 // entirely move to the window manager and this method can be | 192 // entirely move to the window manager and this method can be |
| 218 // removed. | 193 // removed. |
| 219 OnFocusChanged(uint32 gained_focus_id, uint32 lost_focus_id); | 194 OnFocusChanged(uint32 gained_focus_id, uint32 lost_focus_id); |
| 220 | 195 |
| 221 // TODO(sky): move to separate interface when FIFO sorted out. | 196 // TODO(sky): move to separate interface when FIFO sorted out. |
| 222 | 197 |
| 223 DispatchOnViewInputEvent(uint32 view, mojo.Event event); | 198 DispatchOnViewInputEvent(uint32 view, mojo.Event event); |
| 224 }; | 199 }; |
| 225 | 200 |
| 226 } | 201 } |
| OLD | NEW |