Commit c6b54c40 authored by Wei Lee's avatar Wei Lee Committed by Commit Bot

[CCA WebUI] Abstract usage of chrome.fileManagerPrivate

Bug: 980846
Test: Launch CCA with no error shows
Change-Id: I41ac276f5c04705893a9c42d97bc3a4bfb9b9151
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2056508Reviewed-by: default avatarShik Chen <shik@chromium.org>
Commit-Queue: Wei Lee <wtlee@chromium.org>
Cr-Commit-Position: refs/heads/master@{#742583}
parent 72718770
......@@ -18,6 +18,8 @@ js_library("browser_proxy") {
externs_list = [
"../externs/chrome.js",
"$externs_path/chrome_extensions.js",
"$externs_path/file_manager_private.js",
"$externs_path/file_system_provider.js",
"$externs_path/metrics_private.js",
]
}
......@@ -71,6 +71,26 @@ class ChromeAppBrowserProxy {
isCrashReportingEnabled() {
return util.promisify(chrome.metricsPrivate.getIsCrashReportingEnabled)();
}
/** @override */
async openGallery(file) {
const id = 'nlkncpkkdoccmpiclbokaimcnedabhhm|app|open';
try {
const result = await util.promisify(
chrome.fileManagerPrivate.executeTask)(id, [file]);
if (result !== 'message_sent') {
console.warn('Unable to open picture: ' + result);
}
} catch (e) {
console.warn('Unable to open picture', e);
return;
}
}
/** @override */
openInspector(type) {
chrome.fileManagerPrivate.openInspector(type);
}
}
export const browserProxy = new ChromeAppBrowserProxy();
......@@ -71,4 +71,17 @@ export class BrowserProxy {
* @abstract
*/
async isCrashReportingEnabled() {}
/**
* @param {!FileEntry} file
* @return {!Promise}
* @abstract
*/
async openGallery(file) {}
/**
* @param {string} type
* @abstract
*/
openInspector(type) {}
}
......@@ -108,6 +108,16 @@ class WebUIBrowserProxy {
NOTIMPLEMENTED();
return false;
}
/** @override */
async openGallery(file) {
NOTIMPLEMENTED();
}
/** @override */
openInspector(type) {
NOTIMPLEMENTED();
}
}
export const browserProxy = new WebUIBrowserProxy();
......
......@@ -107,6 +107,12 @@ export function assertBoolean(value, optMessage) {
* @return {function(...?): !Promise}
*/
export function promisify(func) {
return (...args) =>
new Promise((resolve) => func(...args, (val) => resolve(val)));
return (...args) => new Promise(
(resolve, reject) => func(...args, (val) => {
if (chrome && chrome.runtime && chrome.runtime.lastError) {
reject(new Error(chrome.runtime.lastError.message));
} else {
resolve(val);
}
}));
}
......@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import {browserProxy} from './browser_proxy/browser_proxy.js';
import {assert, assertInstanceof} from './chrome_util.js';
import {FileVideoSaver} from './models/file_video_saver.js';
import * as filesystem from './models/filesystem.js';
......@@ -104,7 +105,7 @@ export class GalleryButton {
// TODO(yuli): Remove this workaround for unable watching changed-files.
await this.checkCover_();
if (this.cover_ !== null) {
this.openGallery_(this.cover_.file);
await browserProxy.openGallery(this.cover_.file);
}
});
}
......@@ -175,25 +176,6 @@ export class GalleryButton {
await this.updateCover_(lastFile);
}
/**
* Opens the gallery to browse the picture.
* @param {!FileEntry} file File of picture to be browsed.
* @private
*/
openGallery_(file) {
const id = 'nlkncpkkdoccmpiclbokaimcnedabhhm|app|open';
chrome.fileManagerPrivate.executeTask(id, [file], (result) => {
if (chrome.runtime.lastError) {
console.warn(
'Unable to open picture: ' + chrome.runtime.lastError.message);
return;
}
if (result !== 'opened' && result !== 'message_sent') {
console.warn('Unable to open picture: ' + result);
}
});
}
/**
* @override
*/
......
......@@ -176,20 +176,18 @@ export function close(name, condition) {
*/
export function onKeyPressed(event) {
const key = util.getShortcutIdentifier(event);
const openInspector = (type) => chrome.fileManagerPrivate &&
chrome.fileManagerPrivate.openInspector(type);
switch (key) {
case 'BrowserBack':
chrome.app.window.current().minimize();
break;
case 'Ctrl-Shift-I':
openInspector('normal');
browserProxy.openInspector('normal');
break;
case 'Ctrl-Shift-J':
openInspector('console');
browserProxy.openInspector('console');
break;
case 'Ctrl-Shift-C':
openInspector('element');
browserProxy.openInspector('element');
break;
case 'Ctrl-Shift-E':
(async () => {
......
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