Commit ef6958a3 authored by Luciano Pacheco's avatar Luciano Pacheco Committed by Chromium LUCI CQ

Files app: Add JS module for Metadata SharedWorker

Change the API to override the ContentMetadataProvider worker URL and
update Audio Player, Gallery and Files app.

Bug: 1133186
Change-Id: Ie8024f53bd11d8faebb3cd0020af35042dbccbd7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2639058Reviewed-by: default avatarJeremie Boulic <jboulic@chromium.org>
Commit-Queue: Luciano Pacheco <lucmult@chromium.org>
Auto-Submit: Luciano Pacheco <lucmult@chromium.org>
Cr-Commit-Position: refs/heads/master@{#845084}
parent 352d5a2f
......@@ -409,6 +409,7 @@ generate_grd("build_grd") {
"file_manager/foreground/js/deferred_elements.m.rollup.js",
"file_manager/foreground/js/main.m.rollup.js",
"file_manager/foreground/js/shared.m.rollup.js",
"file_manager/foreground/js/metadata_dispatcher.m.rollup.js",
"video_player/js/main.m.rollup.js",
"video_player/js/main_background.m.rollup.js",
......@@ -422,6 +423,7 @@ generate_grd("build_grd") {
"file_manager/background/js/main_background.m.rollup.js|file_manager/background/js/main_background.m.js",
"file_manager/foreground/js/deferred_elements.m.rollup.js|file_manager/foreground/js/deferred_elements.m.js",
"file_manager/foreground/js/main.m.rollup.js|file_manager/foreground/js/main.m.js",
"file_manager/foreground/js/metadata_dispatcher.m.rollup.js|file_manager/foreground/js/metadata_dispatcher.m.js",
"video_player/js/main.m.rollup.js|video_player/js/main.m.js",
"video_player/js/main_background.m.rollup.js|video_player/js/main_background.m.js",
]
......@@ -440,6 +442,7 @@ generate_grd("build_grd") {
"//ui/file_manager/file_manager/background/js:build",
"//ui/file_manager/file_manager/foreground/elements:elements",
"//ui/file_manager/file_manager/foreground/js:build",
"//ui/file_manager/file_manager/foreground/js:build_worker",
"//ui/file_manager/image_loader:build",
"//ui/file_manager/video_player/js:build",
"//ui/file_manager/video_player/js:build_background",
......
......@@ -142,15 +142,11 @@
this.player_.ariaExpandArtworkLabel =
strings['AUDIO_PLAYER_ARTWORK_EXPAND_BUTTON_LABEL'];
/**
* Overrided metadata worker's path.
* @type {string}
*/
ContentMetadataProvider.WORKER_SCRIPT =
// Override metadata worker's path.
ContentMetadataProvider.configure(
util.isAudioPlayerJsModulesEnabled() ? '/js/metadata_worker.m.js' :
'/js/metadata_worker.js';
ContentMetadataProvider.loadAsModule =
util.isAudioPlayerJsModulesEnabled();
'/js/metadata_worker.js',
/*isModule=*/ util.isAudioPlayerJsModulesEnabled());
this.metadataModel_ = MetadataModel.create(this.volumeManager_);
this.resolveMetadataModel_();
......
......@@ -858,6 +858,7 @@ js_library("file_manager.m") {
":spinner_controller.m",
":task_controller.m",
":toolbar_controller.m",
"metadata:content_metadata_provider.m",
"metadata:metadata_model.m",
"metadata:thumbnail_model.m",
"ui:a11y_announce.m",
......@@ -2172,3 +2173,19 @@ optimize_webui("build") {
"//ui/webui/resources:preprocess",
]
}
optimize_webui("build_worker") {
host = "file_manager"
input = preprocess_folder
js_module_in_files = [ "metadata/metadata_dispatcher.m.js" ]
js_out_files = [ "metadata_dispatcher.m.rollup.js" ]
deps = [
"metadata:metadata_dispatcher.m",
"//ui/file_manager:preprocess_generated",
"//ui/file_manager:preprocess_static",
"//ui/webui/resources:preprocess",
]
}
......@@ -49,6 +49,7 @@
// #import {ProvidersModel} from './providers_model.m.js';
// #import {ThumbnailModel} from './metadata/thumbnail_model.m.js';
// #import {MetadataModel} from './metadata/metadata_model.m.js';
// #import {ContentMetadataProvider} from './metadata/content_metadata_provider.m.js';
// #import {FilteredVolumeManager} from '../../../base/js/filtered_volume_manager.m.js';
// #import {LaunchParam} from './launch_param.m.js';
// #import {contextMenuHandler} from 'chrome://resources/js/cr/ui/context_menu_handler.m.js';
......@@ -1011,6 +1012,14 @@
DialogType.FULL_PAGE,
]);
if (util.isFilesJsModulesEnabled()) {
ContentMetadataProvider.configure(
'foreground/js/metadata_dispatcher.m.js', /*isModule=*/ true);
} else if (window.isSWA) {
ContentMetadataProvider.configure(
'foreground/js/metadata/metadata_dispatcher.js');
}
// Create the metadata cache.
assert(this.volumeManager_);
this.metadataModel_ = MetadataModel.create(this.volumeManager_);
......
......@@ -66,18 +66,34 @@
return opt_messagePort;
}
let script = ContentMetadataProvider.WORKER_SCRIPT;
if (window.isSWA) {
script = 'foreground/js/metadata/metadata_dispatcher.js';
}
const script = ContentMetadataProvider.getWorkerScript();
/** @type {!WorkerOptions} */
const options =
ContentMetadataProvider.loadAsModule ? {type: 'module'} : {};
ContentMetadataProvider.loadAsModule_ ? {type: 'module'} : {};
return new SharedWorker(script, options).port;
}
/**
* Configures how the worker should be loaded.
*
* @param {string} scriptURL URL used to load the worker.
* @param {boolean=} isModule Indicate if the worker should be loaded as
* module.
*/
static configure(scriptURL, isModule) {
ContentMetadataProvider.workerScript_ = scriptURL;
ContentMetadataProvider.loadAsModule_ = !!isModule;
}
/** @public @return {string} */
static getWorkerScript() {
return ContentMetadataProvider.workerScript_ ?
ContentMetadataProvider.workerScript_ :
ContentMetadataProvider.DEFAULT_WORKER_SCRIPT_;
}
/**
* Converts content metadata from parsers to the internal format.
* @param {Object} metadata The content metadata.
......@@ -487,14 +503,20 @@ ContentMetadataProvider.PROPERTY_NAMES = [
/**
* The metadata Worker script URL.
* @public @const {string}
* @const @private {string}
*/
ContentMetadataProvider.WORKER_SCRIPT =
ContentMetadataProvider.DEFAULT_WORKER_SCRIPT_ =
'chrome-extension://hhaomjibdihmijegdhdafkllkbggdgoj/' +
'foreground/js/metadata/metadata_dispatcher.js';
/**
* Worker script URL that is overwritten by client code.
* @private {?string}
*/
ContentMetadataProvider.workerScript_ = null;
/**
* Sets if the SharedWorker should start as a JS Module.
* @public {boolean}
* @private {boolean}
*/
ContentMetadataProvider.loadAsModule = false;
ContentMetadataProvider.loadAsModule_ = false;
......@@ -2,11 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/**
* Overrided metadata worker's path.
* @type {string}
*/
ContentMetadataProvider.WORKER_SCRIPT = '/js/metadata_worker.js';
// Override metadata worker's path.
ContentMetadataProvider.configure('/js/metadata_worker.js');
/**
* Gallery for viewing and editing image files.
......
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