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") { ...@@ -18,6 +18,8 @@ js_library("browser_proxy") {
externs_list = [ externs_list = [
"../externs/chrome.js", "../externs/chrome.js",
"$externs_path/chrome_extensions.js", "$externs_path/chrome_extensions.js",
"$externs_path/file_manager_private.js",
"$externs_path/file_system_provider.js",
"$externs_path/metrics_private.js", "$externs_path/metrics_private.js",
] ]
} }
...@@ -71,6 +71,26 @@ class ChromeAppBrowserProxy { ...@@ -71,6 +71,26 @@ class ChromeAppBrowserProxy {
isCrashReportingEnabled() { isCrashReportingEnabled() {
return util.promisify(chrome.metricsPrivate.getIsCrashReportingEnabled)(); 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(); export const browserProxy = new ChromeAppBrowserProxy();
...@@ -71,4 +71,17 @@ export class BrowserProxy { ...@@ -71,4 +71,17 @@ export class BrowserProxy {
* @abstract * @abstract
*/ */
async isCrashReportingEnabled() {} async isCrashReportingEnabled() {}
/**
* @param {!FileEntry} file
* @return {!Promise}
* @abstract
*/
async openGallery(file) {}
/**
* @param {string} type
* @abstract
*/
openInspector(type) {}
} }
...@@ -108,6 +108,16 @@ class WebUIBrowserProxy { ...@@ -108,6 +108,16 @@ class WebUIBrowserProxy {
NOTIMPLEMENTED(); NOTIMPLEMENTED();
return false; return false;
} }
/** @override */
async openGallery(file) {
NOTIMPLEMENTED();
}
/** @override */
openInspector(type) {
NOTIMPLEMENTED();
}
} }
export const browserProxy = new WebUIBrowserProxy(); export const browserProxy = new WebUIBrowserProxy();
......
...@@ -107,6 +107,12 @@ export function assertBoolean(value, optMessage) { ...@@ -107,6 +107,12 @@ export function assertBoolean(value, optMessage) {
* @return {function(...?): !Promise} * @return {function(...?): !Promise}
*/ */
export function promisify(func) { export function promisify(func) {
return (...args) => return (...args) => new Promise(
new Promise((resolve) => func(...args, (val) => resolve(val))); (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 @@ ...@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
import {browserProxy} from './browser_proxy/browser_proxy.js';
import {assert, assertInstanceof} from './chrome_util.js'; import {assert, assertInstanceof} from './chrome_util.js';
import {FileVideoSaver} from './models/file_video_saver.js'; import {FileVideoSaver} from './models/file_video_saver.js';
import * as filesystem from './models/filesystem.js'; import * as filesystem from './models/filesystem.js';
...@@ -104,7 +105,7 @@ export class GalleryButton { ...@@ -104,7 +105,7 @@ export class GalleryButton {
// TODO(yuli): Remove this workaround for unable watching changed-files. // TODO(yuli): Remove this workaround for unable watching changed-files.
await this.checkCover_(); await this.checkCover_();
if (this.cover_ !== null) { if (this.cover_ !== null) {
this.openGallery_(this.cover_.file); await browserProxy.openGallery(this.cover_.file);
} }
}); });
} }
...@@ -175,25 +176,6 @@ export class GalleryButton { ...@@ -175,25 +176,6 @@ export class GalleryButton {
await this.updateCover_(lastFile); 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 * @override
*/ */
......
...@@ -176,20 +176,18 @@ export function close(name, condition) { ...@@ -176,20 +176,18 @@ export function close(name, condition) {
*/ */
export function onKeyPressed(event) { export function onKeyPressed(event) {
const key = util.getShortcutIdentifier(event); const key = util.getShortcutIdentifier(event);
const openInspector = (type) => chrome.fileManagerPrivate &&
chrome.fileManagerPrivate.openInspector(type);
switch (key) { switch (key) {
case 'BrowserBack': case 'BrowserBack':
chrome.app.window.current().minimize(); chrome.app.window.current().minimize();
break; break;
case 'Ctrl-Shift-I': case 'Ctrl-Shift-I':
openInspector('normal'); browserProxy.openInspector('normal');
break; break;
case 'Ctrl-Shift-J': case 'Ctrl-Shift-J':
openInspector('console'); browserProxy.openInspector('console');
break; break;
case 'Ctrl-Shift-C': case 'Ctrl-Shift-C':
openInspector('element'); browserProxy.openInspector('element');
break; break;
case 'Ctrl-Shift-E': case 'Ctrl-Shift-E':
(async () => { (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