/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
 * You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "domstubs.idl"

[scriptable, uuid(aad47850-2e87-11e2-81c1-0800200c9a66)]
interface nsISettingsServiceCallback : nsISupports
{
  void handle(in DOMString aName, in jsval aResult);
  void handleError(in DOMString aErrorMessage);
};

[scriptable, uuid(f1b3d820-8e75-11e3-baa8-0800200c9a66)]
interface nsISettingsTransactionCompleteCallback : nsISupports
{
  void handle();
  void handleAbort(in DOMString aErrorMessage);
};

[scriptable, uuid(d7a395a0-e292-11e1-834e-1761d57f5f99)]
interface nsISettingsServiceLock : nsISupports
{
  void set(in string aName,
           in jsval aValue,
           in nsISettingsServiceCallback aCallback,
           [optional] in string aMessage);

  void get(in string aName, in nsISettingsServiceCallback aCallback);
};

[scriptable, uuid(d1ed155c-9f90-47bb-91c2-7eac54d69f4b)]
interface nsISettingsService : nsISupports
{
  nsISettingsServiceLock createLock([optional] in nsISettingsTransactionCompleteCallback aCallback);
  void receiveMessage(in jsval aMessage);
};
