diff options
author | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-04-05 20:01:10 +0200 |
---|---|---|
committer | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-04-05 20:01:10 +0200 |
commit | c3b63b831cd2c64700e875b28540212c7c881ac6 (patch) | |
tree | edd98fcbd2004d3b562904f822bf6c3322fc7f52 /toolkit/components/webextensions/ext-c-storage.js | |
parent | d432e068a21c815d5d5e7bcbc1cc8c6e77a7d1e0 (diff) | |
parent | cc07da9cb4d6e7a53f8d953427ffc2bca2e0c2df (diff) | |
download | UXP-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.js | 62 |
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); |