|
1 /* -*- Mode: C++; tab-width: 50; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
|
2 /* This Source Code Form is subject to the terms of the Mozilla Public |
|
3 * License, v. 2.0. If a copy of the MPL was not distributed with this |
|
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
5 |
|
6 #include "nsISupports.idl" |
|
7 |
|
8 [ptr] native nsNonConstIDPtr(nsID); |
|
9 |
|
10 /** |
|
11 * nsIUUIDGenerator is implemented by a service that can generate |
|
12 * universally unique identifiers, ideally using any platform-native |
|
13 * method for generating UUIDs. |
|
14 */ |
|
15 [scriptable, uuid(138ad1b2-c694-41cc-b201-333ce936d8b8)] |
|
16 interface nsIUUIDGenerator : nsISupports |
|
17 { |
|
18 /** |
|
19 * Obtains a new UUID using appropriate platform-specific methods to |
|
20 * obtain a nsID that can be considered to be globally unique. |
|
21 * |
|
22 * @returns an nsID filled in with a new UUID. |
|
23 * |
|
24 * @throws NS_ERROR_FAILURE if a UUID cannot be generated (e.g. if |
|
25 * an underlying source of randomness is not available) |
|
26 */ |
|
27 nsIDPtr generateUUID(); |
|
28 |
|
29 /** |
|
30 * Obtain a new UUID like the generateUUID method, but place it in |
|
31 * the provided nsID pointer instead of allocating a new nsID. |
|
32 * |
|
33 * @param id an existing nsID pointer where the UUID will be stored. |
|
34 * |
|
35 * @throws NS_ERROR_FAILURE if a UUID cannot be generated (e.g. if |
|
36 * an underlying source of randomness is not available) |
|
37 */ |
|
38 [noscript] void generateUUIDInPlace(in nsNonConstIDPtr id); |
|
39 }; |