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 module mojo; | 5 module mojo; |
6 | 6 |
7 import "components/view_manager/public/interfaces/compositor_frame.mojom"; | 7 import "components/view_manager/public/interfaces/compositor_frame.mojom"; |
8 import "components/view_manager/public/interfaces/surface_id.mojom"; | 8 import "components/view_manager/public/interfaces/surface_id.mojom"; |
9 import "components/view_manager/public/interfaces/view_manager_constants.mojom"; | 9 import "components/view_manager/public/interfaces/view_manager_constants.mojom"; |
10 import "mojo/application/public/interfaces/service_provider.mojom"; | 10 import "mojo/application/public/interfaces/service_provider.mojom"; |
(...skipping 26 matching lines...) Expand all Loading... |
37 NONE, | 37 NONE, |
38 VALUE_IN_USE, | 38 VALUE_IN_USE, |
39 ILLEGAL_ARGUMENT, | 39 ILLEGAL_ARGUMENT, |
40 }; | 40 }; |
41 | 41 |
42 // Views are identified by a uint32. The upper 16 bits are the connection id, | 42 // Views are identified by a uint32. The upper 16 bits are the connection id, |
43 // and the lower 16 the id assigned by the client. | 43 // and the lower 16 the id assigned by the client. |
44 // | 44 // |
45 // The root view is identified with a connection id of 0, and value of 1. | 45 // The root view is identified with a connection id of 0, and value of 1. |
46 interface ViewTree { | 46 interface ViewTree { |
| 47 enum AccessPolicy { |
| 48 DEFAULT = 0, |
| 49 |
| 50 // An embed root has the following abilities: |
| 51 // . The app sees all the descendants of the view the app is ebmedded at, |
| 52 // even those from separate connections. |
| 53 // . The app is able to Embed() in all the descendants of the view the app |
| 54 // is embedded at, even those from separate connections. |
| 55 // Only connections originating from the ViewTreeHostFactory can grant this |
| 56 // policy. |
| 57 EMBED_ROOT = 1, |
| 58 }; |
| 59 |
47 // Creates a new view with the specified id. It is up to the client to ensure | 60 // Creates a new view with the specified id. It is up to the client to ensure |
48 // the id is unique to the connection (the id need not be globally unique). | 61 // the id is unique to the connection (the id need not be globally unique). |
49 // Additionally the connection id (embedded in |view_id|) must match that of | 62 // Additionally the connection id (embedded in |view_id|) must match that of |
50 // the connection. | 63 // the connection. |
51 // Errors: | 64 // Errors: |
52 // ERROR_CODE_VALUE_IN_USE: a view already exists with the specified id. | 65 // ERROR_CODE_VALUE_IN_USE: a view already exists with the specified id. |
53 // ERROR_CODE_ILLEGAL_ARGUMENT: The connection part of |view_id| does not | 66 // ERROR_CODE_ILLEGAL_ARGUMENT: The connection part of |view_id| does not |
54 // match the connection id of the client. | 67 // match the connection id of the client. |
55 // | 68 // |
56 // TODO(erg): Once we have default values in mojo, make this take a map of | 69 // TODO(erg): Once we have default values in mojo, make this take a map of |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
106 ReorderView(uint32 view_id, | 119 ReorderView(uint32 view_id, |
107 uint32 relative_view_id, | 120 uint32 relative_view_id, |
108 OrderDirection direction) => (bool success); | 121 OrderDirection direction) => (bool success); |
109 | 122 |
110 // Returns the views comprising the tree starting at |view_id|. |view_id| is | 123 // Returns the views comprising the tree starting at |view_id|. |view_id| is |
111 // the first result in the return value, unless |view_id| is invalid, in which | 124 // the first result in the return value, unless |view_id| is invalid, in which |
112 // case an empty vector is returned. The views are visited using a depth first | 125 // case an empty vector is returned. The views are visited using a depth first |
113 // search (pre-order). | 126 // search (pre-order). |
114 GetViewTree(uint32 view_id) => (array<ViewData> views); | 127 GetViewTree(uint32 view_id) => (array<ViewData> views); |
115 | 128 |
116 // TODO(sky): rename this and clarify what it does. | |
117 SetEmbedRoot(); | |
118 | |
119 // A connection may grant access to a view from another connection by way of | 129 // A connection may grant access to a view from another connection by way of |
120 // Embed(). Embed() results in a new ViewTreeClient configured with a root of | 130 // Embed(). Embed() results in a new ViewTreeClient configured with a root of |
121 // |view_id|. | 131 // |view_id|. |
122 // | 132 // |
123 // The caller must have created |view_id|. If not the request fails and the | 133 // The caller must have created |view_id|. If not the request fails and the |
124 // response is false. | 134 // response is false. |
125 // | 135 // |
126 // A view may only have one embedding in it at a time. Subsequent calls to | 136 // A view may only have one embedding in it at a time. Subsequent calls to |
127 // Embed() for the same view result in the currently embedded | 137 // Embed() for the same view result in the currently embedded |
128 // ViewTreeClient being removed. The embedded app is told this by way of | 138 // ViewTreeClient being removed. The embedded app is told this by way of |
129 // OnUnembed(), which is followed by OnViewDeleted() (as the connection no | 139 // OnUnembed(), which is followed by OnViewDeleted() (as the connection no |
130 // longer has access to the view). | 140 // longer has access to the view). |
131 // | 141 // |
132 // The embedder can detect when the embedded app disconnects by way of | 142 // The embedder can detect when the embedded app disconnects by way of |
133 // OnEmbeddedAppDisconnected(). | 143 // OnEmbeddedAppDisconnected(). |
134 // | 144 // |
135 // When a connection embeds an app the connection no longer has privileges | 145 // When a connection embeds an app the connection no longer has privileges |
136 // to access or see any of the children of the view. If the view had existing | 146 // to access or see any of the children of the view. If the view had existing |
137 // children the children are removed. The one exception is the root | 147 // children the children are removed. The one exception is the root |
138 // connection and any embed roots. The root always see the full tree, and | 148 // connection and any connections with the policy ACCESS_POLICY_EMBED_ROOT. |
139 // embed roots see the complete tree at their embed point. | |
140 Embed(uint32 view_id, ViewTreeClient client) => (bool success); | 149 Embed(uint32 view_id, ViewTreeClient client) => (bool success); |
141 | 150 |
142 SetFocus(uint32 view_id); | 151 SetFocus(uint32 view_id); |
143 | 152 |
144 // Set text input state for the given view. | 153 // Set text input state for the given view. |
145 SetViewTextInputState(uint32 view_id, TextInputState state); | 154 SetViewTextInputState(uint32 view_id, TextInputState state); |
146 | 155 |
147 // Set the input method editor UI (software keyboard, etc) visibility. | 156 // Set the input method editor UI (software keyboard, etc) visibility. |
148 // If state is non-null, the specified view's text input state is updated. | 157 // If state is non-null, the specified view's text input state is updated. |
149 // Otherwise the existing state is used. | 158 // Otherwise the existing state is used. |
150 SetImeVisibility(uint32 view_id, bool visible, TextInputState? state); | 159 SetImeVisibility(uint32 view_id, bool visible, TextInputState? state); |
| 160 |
| 161 // Sets the access policy for the next ViewTreeClient embedded in |view_id|. |
| 162 // |
| 163 // Not all connections are allowed to change the access policy. See each |
| 164 // constant for specifics. |
| 165 // |
| 166 // policy_bitmask is a bitmask of the kAccessPolicy constants. See them for |
| 167 // details. |
| 168 SetAccessPolicy(uint32 view_id, uint32 policy_bitmask); |
151 }; | 169 }; |
152 | 170 |
153 // Changes to views are not sent to the connection that originated the | 171 // Changes to views are not sent to the connection that originated the |
154 // change. For example, if connection 1 changes the bounds of a view by calling | 172 // change. For example, if connection 1 changes the bounds of a view by calling |
155 // SetBounds(), connection 1 does not receive OnViewBoundsChanged(). | 173 // SetBounds(), connection 1 does not receive OnViewBoundsChanged(). |
156 interface ViewTreeClient { | 174 interface ViewTreeClient { |
157 // Invoked when the client application has been embedded at |root|. | 175 // Invoked when the client application has been embedded at |root|. |
158 // See Embed() on ViewTree for more details. |tree| will be a handle back to | 176 // See Embed() on ViewTree for more details. |tree| will be a handle back to |
159 // the view manager service, unless the connection is to the root connection | 177 // the view manager service, unless the connection is to the root connection |
160 // in which case it will be null. | 178 // in which case it will be null. |
161 OnEmbed(uint16 connection_id, | 179 OnEmbed(uint16 connection_id, |
162 ViewData root, | 180 ViewData root, |
163 ViewTree? tree, | 181 ViewTree? tree, |
164 uint32 focused_view); | 182 uint32 focused_view, |
| 183 uint32 access_policy); |
165 | 184 |
166 // Invoked when the application embedded at |view| is disconnected. | 185 // Invoked when the application embedded at |view| is disconnected. |
167 OnEmbeddedAppDisconnected(uint32 view); | 186 OnEmbeddedAppDisconnected(uint32 view); |
168 | 187 |
169 // Sent when another connection is embedded in the View this connection was | 188 // Sent when another connection is embedded in the View this connection was |
170 // previously embedded in. See Embed() for more information. | 189 // previously embedded in. See Embed() for more information. |
171 OnUnembed(); | 190 OnUnembed(); |
172 | 191 |
173 // Invoked when a view's bounds have changed. | 192 // Invoked when a view's bounds have changed. |
174 OnViewBoundsChanged(uint32 view, | 193 OnViewBoundsChanged(uint32 view, |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
216 | 235 |
217 // Invoked when a view property is changed. If this change is a removal, | 236 // Invoked when a view property is changed. If this change is a removal, |
218 // |new_data| is null. | 237 // |new_data| is null. |
219 OnViewSharedPropertyChanged(uint32 view, string name, array<uint8>? new_data); | 238 OnViewSharedPropertyChanged(uint32 view, string name, array<uint8>? new_data); |
220 | 239 |
221 // Invoked when an event is targeted at the specified view. | 240 // Invoked when an event is targeted at the specified view. |
222 OnViewInputEvent(uint32 view, mojo.Event event) => (); | 241 OnViewInputEvent(uint32 view, mojo.Event event) => (); |
223 | 242 |
224 OnViewFocused(uint32 focused_view_id); | 243 OnViewFocused(uint32 focused_view_id); |
225 }; | 244 }; |
OLD | NEW |