summaryrefslogtreecommitdiffstats
path: root/toolkit/components/webextensions/ext-storage.js
diff options
context:
space:
mode:
authorMatt A. Tobin <email@mattatobin.com>2018-02-09 11:10:00 -0500
committerMatt A. Tobin <email@mattatobin.com>2018-02-09 11:10:00 -0500
commitf164d9124708b50789dbb6959e1de96cc5697c48 (patch)
tree6dffd12e08c5383130df0252fb69cd6d6330794f /toolkit/components/webextensions/ext-storage.js
parent30de4018913f0cdaea19d1dd12ecd8209e2ed08e (diff)
downloadUXP-f164d9124708b50789dbb6959e1de96cc5697c48.tar
UXP-f164d9124708b50789dbb6959e1de96cc5697c48.tar.gz
UXP-f164d9124708b50789dbb6959e1de96cc5697c48.tar.lz
UXP-f164d9124708b50789dbb6959e1de96cc5697c48.tar.xz
UXP-f164d9124708b50789dbb6959e1de96cc5697c48.zip
Rename Toolkit's webextensions component directory to better reflect what it is.
Diffstat (limited to 'toolkit/components/webextensions/ext-storage.js')
-rw-r--r--toolkit/components/webextensions/ext-storage.js46
1 files changed, 46 insertions, 0 deletions
diff --git a/toolkit/components/webextensions/ext-storage.js b/toolkit/components/webextensions/ext-storage.js
new file mode 100644
index 000000000..b1e22c46c
--- /dev/null
+++ b/toolkit/components/webextensions/ext-storage.js
@@ -0,0 +1,46 @@
+"use strict";
+
+var {classes: Cc, interfaces: Ci, utils: Cu} = Components;
+
+XPCOMUtils.defineLazyModuleGetter(this, "ExtensionStorage",
+ "resource://gre/modules/ExtensionStorage.jsm");
+
+Cu.import("resource://gre/modules/ExtensionUtils.jsm");
+var {
+ EventManager,
+} = ExtensionUtils;
+
+function storageApiFactory(context) {
+ let {extension} = context;
+ return {
+ storage: {
+ local: {
+ get: function(spec) {
+ return ExtensionStorage.get(extension.id, spec);
+ },
+ set: function(items) {
+ return ExtensionStorage.set(extension.id, items, context);
+ },
+ remove: function(keys) {
+ return ExtensionStorage.remove(extension.id, keys);
+ },
+ clear: function() {
+ return ExtensionStorage.clear(extension.id);
+ },
+ },
+
+ onChanged: new EventManager(context, "storage.onChanged", fire => {
+ let listenerLocal = changes => {
+ fire(changes, "local");
+ };
+
+ ExtensionStorage.addOnChangedListener(extension.id, listenerLocal);
+ return () => {
+ ExtensionStorage.removeOnChangedListener(extension.id, listenerLocal);
+ };
+ }).api(),
+ },
+ };
+}
+extensions.registerSchemaAPI("storage", "addon_parent", storageApiFactory);
+extensions.registerSchemaAPI("storage", "content_parent", storageApiFactory);