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 mus.mojom; | 5 module mus.mojom; |
6 | 6 |
7 // A surface ID is composed of two parts, a local part and a namespace. The | 7 // A surface ID is composed of three parts: a namespace, a local ID, and a |
8 // local part is allocated by the client using any scheme that avoids | 8 // nonce. The local part and nonce are allocated by the client using any scheme |
9 // duplicates. The namespace is allocated by the service and will be different | 9 // that avoids duplicates and makes IDs unguessable respectively. The namespace |
10 // for each client (aka each connection to mojo.Surface). | 10 // is allocated by the service and will be different for each client. |
11 // | 11 // |
12 // The special id_namespace value 0 is equivalent to the namespace of the | 12 // The special id_namespace value 0 is equivalent to the namespace of the |
13 // client. This can be used to create, destroy and submit frames to | 13 // client. This can be used to create, destroy and submit frames to |
14 // surfaces before learning the namespace and to reference other surfaces | 14 // surfaces before learning the namespace and to reference other surfaces |
15 // owned by the same client. The actual id namespace must be used to pass | 15 // owned by the same client. The actual id namespace must be used to pass |
16 // surface ids to other clients for them to reference. | 16 // surface ids to other clients for them to reference. |
17 struct SurfaceId { | 17 struct SurfaceId { |
18 uint32 local; | 18 // A service allocated ID identifying a client. |
19 uint32 id_namespace; | 19 uint32 id_namespace; |
| 20 |
| 21 // An identifier allocated by the client uniquely identifying a surface within |
| 22 // a client process. |
| 23 uint32 local_id; |
| 24 |
| 25 // A cryptographically secure random int chosen to make the SurfaceId |
| 26 // unguessable by other clients. |
| 27 uint64 nonce; |
20 }; | 28 }; |
OLD | NEW |