summaryrefslogtreecommitdiffstats
path: root/toolkit/components/webextensions/ext-c-storage.js
diff options
context:
space:
mode:
authorwolfbeast <mcwerewolf@wolfbeast.com>2019-04-05 20:01:10 +0200
committerwolfbeast <mcwerewolf@wolfbeast.com>2019-04-05 20:01:10 +0200
commitc3b63b831cd2c64700e875b28540212c7c881ac6 (patch)
treeedd98fcbd2004d3b562904f822bf6c3322fc7f52 /toolkit/components/webextensions/ext-c-storage.js
parentd432e068a21c815d5d5e7bcbc1cc8c6e77a7d1e0 (diff)
parentcc07da9cb4d6e7a53f8d953427ffc2bca2e0c2df (diff)
downloadUXP-c3b63b831cd2c64700e875b28540212c7c881ac6.tar
UXP-c3b63b831cd2c64700e875b28540212c7c881ac6.tar.gz
UXP-c3b63b831cd2c64700e875b28540212c7c881ac6.tar.lz
UXP-c3b63b831cd2c64700e875b28540212c7c881ac6.tar.xz
UXP-c3b63b831cd2c64700e875b28540212c7c881ac6.zip
Merge branch 'master' into 816
Diffstat (limited to 'toolkit/components/webextensions/ext-c-storage.js')
-rw-r--r--toolkit/components/webextensions/ext-c-storage.js62
1 files changed, 0 insertions, 62 deletions
diff --git a/toolkit/components/webextensions/ext-c-storage.js b/toolkit/components/webextensions/ext-c-storage.js
deleted file mode 100644
index e8d53058f..000000000
--- a/toolkit/components/webextensions/ext-c-storage.js
+++ /dev/null
@@ -1,62 +0,0 @@
-"use strict";
-
-XPCOMUtils.defineLazyModuleGetter(this, "ExtensionStorage",
- "resource://gre/modules/ExtensionStorage.jsm");
-Cu.import("resource://gre/modules/Services.jsm");
-
-function storageApiFactory(context) {
- function sanitize(items) {
- // The schema validator already takes care of arrays (which are only allowed
- // to contain strings). Strings and null are safe values.
- if (typeof items != "object" || items === null || Array.isArray(items)) {
- return items;
- }
- // If we got here, then `items` is an object generated by `ObjectType`'s
- // `normalize` method from Schemas.jsm. The object returned by `normalize`
- // lives in this compartment, while the values live in compartment of
- // `context.contentWindow`. The `sanitize` method runs with the principal
- // of `context`, so we cannot just use `ExtensionStorage.sanitize` because
- // it is not allowed to access properties of `items`.
- // So we enumerate all properties and sanitize each value individually.
- let sanitized = {};
- for (let [key, value] of Object.entries(items)) {
- sanitized[key] = ExtensionStorage.sanitize(value, context);
- }
- return sanitized;
- }
- return {
- storage: {
- local: {
- get: function(keys) {
- keys = sanitize(keys);
- return context.childManager.callParentAsyncFunction("storage.local.get", [
- keys,
- ]);
- },
- set: function(items) {
- items = sanitize(items);
- return context.childManager.callParentAsyncFunction("storage.local.set", [
- items,
- ]);
- },
- },
-
- sync: {
- get: function(keys) {
- keys = sanitize(keys);
- return context.childManager.callParentAsyncFunction("storage.sync.get", [
- keys,
- ]);
- },
- set: function(items) {
- items = sanitize(items);
- return context.childManager.callParentAsyncFunction("storage.sync.set", [
- items,
- ]);
- },
- },
- },
- };
-}
-extensions.registerSchemaAPI("storage", "addon_child", storageApiFactory);
-extensions.registerSchemaAPI("storage", "content_child", storageApiFactory);