summaryrefslogtreecommitdiff
path: root/dom/webidl/SettingsManager.webidl
diff options
context:
space:
mode:
Diffstat (limited to 'dom/webidl/SettingsManager.webidl')
-rw-r--r--dom/webidl/SettingsManager.webidl42
1 files changed, 42 insertions, 0 deletions
diff --git a/dom/webidl/SettingsManager.webidl b/dom/webidl/SettingsManager.webidl
new file mode 100644
index 0000000000..ad707a2588
--- /dev/null
+++ b/dom/webidl/SettingsManager.webidl
@@ -0,0 +1,42 @@
+/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* 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/.
+ */
+
+[JSImplementation="@mozilla.org/settingsLock;1",
+ Pref="dom.mozSettings.enabled"]
+interface SettingsLock : EventTarget {
+ // Whether this lock is invalid
+ readonly attribute boolean closed;
+
+ // Contains a JSON object with name/value pairs to be set.
+ DOMRequest set(object settings);
+
+ // Result contains the value of the setting.
+ DOMRequest get(DOMString name);
+
+ DOMRequest clear();
+ attribute EventHandler onsettingstransactionsuccess;
+ attribute EventHandler onsettingstransactionfailure;
+};
+
+dictionary SettingChange {
+ DOMString settingName;
+ DOMString settingValue;
+};
+
+callback SettingChangeCallback = void (SettingChange setting);
+
+[JSImplementation="@mozilla.org/settingsManager;1",
+ NavigatorProperty="mozSettings",
+ Pref="dom.mozSettings.enabled",
+ ChromeOnly]
+interface SettingsManager : EventTarget {
+ SettingsLock createLock();
+
+ void addObserver(DOMString name, SettingChangeCallback callback);
+ void removeObserver(DOMString name, SettingChangeCallback callback);
+
+ attribute EventHandler onsettingchange;
+};