diff --git a/lib/renderer/extensions/storage.js b/lib/renderer/extensions/storage.js index b0941d98c8ce..af3978e64846 100644 --- a/lib/renderer/extensions/storage.js +++ b/lib/renderer/extensions/storage.js @@ -12,11 +12,17 @@ const setStorage = (storageType, storage) => { window.localStorage.setItem(`__chrome.storage.${storageType}__`, json) } +const scheduleCallback = (items, callback) => { + setTimeout(function () { + callback(items) + }) +} + const getStorageManager = (storageType) => { return { get (keys, callback) { const storage = getStorage(storageType) - if (keys == null) return storage + if (keys == null) return scheduleCallback(storage, callback) let defaults = {} switch (typeof keys) { @@ -30,7 +36,7 @@ const getStorageManager = (storageType) => { } break } - if (keys.length === 0) return {} + if (keys.length === 0) return scheduleCallback({}, callback) let items = {} keys.forEach(function (key) { @@ -38,10 +44,7 @@ const getStorageManager = (storageType) => { if (value == null) value = defaults[key] items[key] = value }) - - setTimeout(function () { - callback(items) - }) + scheduleCallback(items, callback) }, set (items, callback) { diff --git a/spec/api-browser-window-spec.js b/spec/api-browser-window-spec.js index 25b852946ff4..ea82d59f2960 100644 --- a/spec/api-browser-window-spec.js +++ b/spec/api-browser-window-spec.js @@ -1033,7 +1033,10 @@ describe('browser-window module', function () { assert.equal(message.runtimeId, 'foo') assert.equal(message.tabId, w.webContents.id) assert.equal(message.i18nString, 'foo - bar (baz)') - assert.deepEqual(message.storageItems, {foo: 'bar'}) + assert.deepEqual(message.storageItems, { + local: {hello: 'world'}, + sync: {foo: 'bar'} + }) done() }) }) diff --git a/spec/fixtures/devtools-extensions/foo/index.html b/spec/fixtures/devtools-extensions/foo/index.html index b10288227aca..70db43a37c2c 100644 --- a/spec/fixtures/devtools-extensions/foo/index.html +++ b/spec/fixtures/devtools-extensions/foo/index.html @@ -6,16 +6,25 @@