Merge pull request #6279 from electron/chrome-storage-return
Always call chrome.storage.*.get callback
This commit is contained in:
commit
8155e71925
3 changed files with 25 additions and 10 deletions
|
@ -12,11 +12,17 @@ const setStorage = (storageType, storage) => {
|
||||||
window.localStorage.setItem(`__chrome.storage.${storageType}__`, json)
|
window.localStorage.setItem(`__chrome.storage.${storageType}__`, json)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const scheduleCallback = (items, callback) => {
|
||||||
|
setTimeout(function () {
|
||||||
|
callback(items)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
const getStorageManager = (storageType) => {
|
const getStorageManager = (storageType) => {
|
||||||
return {
|
return {
|
||||||
get (keys, callback) {
|
get (keys, callback) {
|
||||||
const storage = getStorage(storageType)
|
const storage = getStorage(storageType)
|
||||||
if (keys == null) return storage
|
if (keys == null) return scheduleCallback(storage, callback)
|
||||||
|
|
||||||
let defaults = {}
|
let defaults = {}
|
||||||
switch (typeof keys) {
|
switch (typeof keys) {
|
||||||
|
@ -30,7 +36,7 @@ const getStorageManager = (storageType) => {
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
if (keys.length === 0) return {}
|
if (keys.length === 0) return scheduleCallback({}, callback)
|
||||||
|
|
||||||
let items = {}
|
let items = {}
|
||||||
keys.forEach(function (key) {
|
keys.forEach(function (key) {
|
||||||
|
@ -38,10 +44,7 @@ const getStorageManager = (storageType) => {
|
||||||
if (value == null) value = defaults[key]
|
if (value == null) value = defaults[key]
|
||||||
items[key] = value
|
items[key] = value
|
||||||
})
|
})
|
||||||
|
scheduleCallback(items, callback)
|
||||||
setTimeout(function () {
|
|
||||||
callback(items)
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
|
|
||||||
set (items, callback) {
|
set (items, callback) {
|
||||||
|
|
|
@ -1033,7 +1033,10 @@ describe('browser-window module', function () {
|
||||||
assert.equal(message.runtimeId, 'foo')
|
assert.equal(message.runtimeId, 'foo')
|
||||||
assert.equal(message.tabId, w.webContents.id)
|
assert.equal(message.tabId, w.webContents.id)
|
||||||
assert.equal(message.i18nString, 'foo - bar (baz)')
|
assert.equal(message.i18nString, 'foo - bar (baz)')
|
||||||
assert.deepEqual(message.storageItems, {foo: 'bar'})
|
assert.deepEqual(message.storageItems, {
|
||||||
|
local: {hello: 'world'},
|
||||||
|
sync: {foo: 'bar'}
|
||||||
|
})
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
15
spec/fixtures/devtools-extensions/foo/index.html
vendored
15
spec/fixtures/devtools-extensions/foo/index.html
vendored
|
@ -6,16 +6,25 @@
|
||||||
<script>
|
<script>
|
||||||
function testStorage (callback) {
|
function testStorage (callback) {
|
||||||
chrome.storage.sync.set({foo: 'bar'}, function () {
|
chrome.storage.sync.set({foo: 'bar'}, function () {
|
||||||
chrome.storage.sync.get({foo: 'baz'}, callback)
|
chrome.storage.sync.get({foo: 'baz'}, function (syncItems) {
|
||||||
|
chrome.storage.local.set({hello: 'world'}, function () {
|
||||||
|
chrome.storage.local.get(null, function(localItems) {
|
||||||
|
callback(syncItems, localItems)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
testStorage(function (items) {
|
testStorage(function (syncItems, localItems) {
|
||||||
var message = JSON.stringify({
|
var message = JSON.stringify({
|
||||||
runtimeId: chrome.runtime.id,
|
runtimeId: chrome.runtime.id,
|
||||||
tabId: chrome.devtools.inspectedWindow.tabId,
|
tabId: chrome.devtools.inspectedWindow.tabId,
|
||||||
i18nString: chrome.i18n.getMessage('foo', ['bar', 'baz']),
|
i18nString: chrome.i18n.getMessage('foo', ['bar', 'baz']),
|
||||||
storageItems: items
|
storageItems: {
|
||||||
|
local: localItems,
|
||||||
|
sync: syncItems
|
||||||
|
}
|
||||||
})
|
})
|
||||||
var sendMessage = `require('electron').ipcRenderer.send('answer', ${message})`
|
var sendMessage = `require('electron').ipcRenderer.send('answer', ${message})`
|
||||||
window.chrome.devtools.inspectedWindow.eval(sendMessage, function () {})
|
window.chrome.devtools.inspectedWindow.eval(sendMessage, function () {})
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue