Commit 2a0a6fb9 authored by Christopher Lam's avatar Christopher Lam Committed by Commit Bot

[CCA WebUI] Add WebUI implementations for localStorage.

This CL adds implementations for localStorageGet/Set/Remove for the WebUI
version of the Camera App browser proxy.

Bug: 980846
Change-Id: I36194dd685f8c4e9f2d8fd4e001777d547e4b25e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1713549Reviewed-by: default avatarGiovanni Ortuño Urquidi <ortuno@chromium.org>
Commit-Queue: calamity <calamity@chromium.org>
Cr-Commit-Position: refs/heads/master@{#680745}
parent 96502640
...@@ -30,7 +30,7 @@ cca.proxy.BrowserProxy = class { ...@@ -30,7 +30,7 @@ cca.proxy.BrowserProxy = class {
/** /**
* @param {(string|!Array<string>|!Object)} keys * @param {(string|!Array<string>|!Object)} keys
* @param {function(!Object)=} callback * @param {function(!Object)} callback
*/ */
localStorageGet(keys, callback) {} localStorageGet(keys, callback) {}
......
...@@ -39,17 +39,50 @@ class WebUIBrowserProxy { ...@@ -39,17 +39,50 @@ class WebUIBrowserProxy {
/** @override */ /** @override */
localStorageGet(keys, callback) { localStorageGet(keys, callback) {
NOTIMPLEMENTED(); let sanitizedKeys = [];
if (typeof keys === 'string') {
sanitizedKeys = [keys];
} else if (Array.isArray(keys)) {
sanitizedKeys = keys;
} else if (keys !== null && typeof keys === 'object') {
sanitizedKeys = Object.keys(keys);
} else {
throw new Error('WebUI localStorageGet() cannot be run with ' + keys);
}
let result = {};
for (let key of sanitizedKeys) {
let value = window.localStorage.getItem(key);
if (value !== null) {
value = JSON.parse(value);
}
result[key] = value === null ? {} : value;
}
callback(result);
} }
/** @override */ /** @override */
localStorageSet(items, callback) { localStorageSet(items, callback) {
NOTIMPLEMENTED(); for (let [key, val] of Object.entries(items)) {
window.localStorage.setItem(key, JSON.stringify(val));
}
if (callback) {
callback();
}
} }
/** @override */ /** @override */
localStorageRemove(items, callback) { localStorageRemove(items, callback) {
NOTIMPLEMENTED(); if (typeof items === 'string') {
items = [items];
}
for (let key of items) {
window.localStorage.removeItem(key);
}
if (callback) {
callback();
}
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment