diff --git a/lib/renderer/extensions/storage.js b/lib/renderer/extensions/storage.js index af3978e648..d1a8d880a6 100644 --- a/lib/renderer/extensions/storage.js +++ b/lib/renderer/extensions/storage.js @@ -56,6 +56,27 @@ const getStorageManager = (storageType) => { setStorage(storageType, storage) + setTimeout(callback) + }, + + remove (keys, callback) { + const storage = getStorage(storageType) + + if (!Array.isArray(keys)) { + keys = [keys] + } + keys.forEach(function (key) { + delete storage[key] + }) + + setStorage(storageType, storage) + + setTimeout(callback) + }, + + clear (callback) { + setStorage(storageType, {}) + setTimeout(callback) } } diff --git a/spec/api-browser-window-spec.js b/spec/api-browser-window-spec.js index 6810fa7994..cdfdb38442 100644 --- a/spec/api-browser-window-spec.js +++ b/spec/api-browser-window-spec.js @@ -1475,8 +1475,16 @@ describe('browser-window module', function () { assert.equal(message.tabId, w.webContents.id) assert.equal(message.i18nString, 'foo - bar (baz)') assert.deepEqual(message.storageItems, { - local: {hello: 'world'}, - sync: {foo: 'bar'} + local: { + set: {hello: 'world', world: 'hello'}, + remove: {world: 'hello'}, + clear: {} + }, + sync: { + set: {foo: 'bar', bar: 'foo'}, + remove: {foo: 'bar'}, + clear: {} + } }) done() }) diff --git a/spec/fixtures/devtools-extensions/foo/index.html b/spec/fixtures/devtools-extensions/foo/index.html index 55d4664cc8..92c2014558 100644 --- a/spec/fixtures/devtools-extensions/foo/index.html +++ b/spec/fixtures/devtools-extensions/foo/index.html @@ -4,10 +4,10 @@