michael@0: /* -*- Mode: C++; tab-width: 50; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #include "nsISupports.idl" michael@0: michael@0: [ptr] native nsNonConstIDPtr(nsID); michael@0: michael@0: /** michael@0: * nsIUUIDGenerator is implemented by a service that can generate michael@0: * universally unique identifiers, ideally using any platform-native michael@0: * method for generating UUIDs. michael@0: */ michael@0: [scriptable, uuid(138ad1b2-c694-41cc-b201-333ce936d8b8)] michael@0: interface nsIUUIDGenerator : nsISupports michael@0: { michael@0: /** michael@0: * Obtains a new UUID using appropriate platform-specific methods to michael@0: * obtain a nsID that can be considered to be globally unique. michael@0: * michael@0: * @returns an nsID filled in with a new UUID. michael@0: * michael@0: * @throws NS_ERROR_FAILURE if a UUID cannot be generated (e.g. if michael@0: * an underlying source of randomness is not available) michael@0: */ michael@0: nsIDPtr generateUUID(); michael@0: michael@0: /** michael@0: * Obtain a new UUID like the generateUUID method, but place it in michael@0: * the provided nsID pointer instead of allocating a new nsID. michael@0: * michael@0: * @param id an existing nsID pointer where the UUID will be stored. michael@0: * michael@0: * @throws NS_ERROR_FAILURE if a UUID cannot be generated (e.g. if michael@0: * an underlying source of randomness is not available) michael@0: */ michael@0: [noscript] void generateUUIDInPlace(in nsNonConstIDPtr id); michael@0: };