/* 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"
#include "nsIDOMEventTarget.idl"

interface nsIDOMDOMRequest;
interface nsIVariant;

[scriptable, uuid(ef95ddd0-6308-11e1-b86c-0800200c9a66)]
interface nsIDOMSettingsLock : nsISupports
{
  // Whether this lock is invalid
  readonly attribute boolean closed;

  // Contains a JSON object with name/value pairs to be set.
  nsIDOMDOMRequest set(in nsIVariant settings);

  // result contains the value of the setting.
  nsIDOMDOMRequest get(in jsval name);

  nsIDOMDOMRequest clear();
};

[scriptable, uuid(c40b1c70-00fb-11e2-a21f-0800200c9a66)]
interface nsIDOMSettingsManager : nsISupports
{
  nsIDOMSettingsLock createLock();

  void addObserver(in DOMString name, in jsval callback);
  void removeObserver(in DOMString name, in jsval callback);

  attribute nsIDOMEventListener onsettingchange;
};
