Commit 769bcdb5 authored by Noel Gordon's avatar Noel Gordon Committed by Commit Bot

[filesapp] Refactor metadata Shared Worker code for files SWA

The files app front-end code creates a metadata Shared Worker. Provide
a helper routine to do that and document it. Allow the routine to work
if window.isSWA is defined [1].

[1] window.isSWA is not defined today, so no change in behavior.

Bug: 1113981
Change-Id: Ib42ccadec1ee853758175ff018322954fd42c27c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2526666
Commit-Queue: Noel Gordon <noel@chromium.org>
Commit-Queue: Luciano Pacheco <lucmult@chromium.org>
Auto-Submit: Noel Gordon <noel@chromium.org>
Reviewed-by: default avatarLuciano Pacheco <lucmult@chromium.org>
Cr-Commit-Position: refs/heads/master@{#825655}
parent 5a17d14b
......@@ -17,14 +17,6 @@ class ContentMetadataProvider extends MetadataProvider {
*/
this.urlFilter_ = /.*/;
/** @private @const {!MessagePort} */
this.dispatcher_ = opt_messagePort ?
opt_messagePort :
new SharedWorker(ContentMetadataProvider.WORKER_SCRIPT).port;
this.dispatcher_.onmessage = this.onMessage_.bind(this);
this.dispatcher_.postMessage({verb: 'init'});
this.dispatcher_.start();
/**
* Initialization is not complete until the Worker sends back the
* 'initialized' message. See below.
......@@ -39,6 +31,35 @@ class ContentMetadataProvider extends MetadataProvider {
* @private @const {!Object<!string, !Array<function(!MetadataItem)>>}
*/
this.callbacks_ = {};
/**
* Setup |this.disapatcher_|. Creates the Shared Worker if needed.
* @private @const {!MessagePort}
*/
this.dispatcher_ = this.createSharedWorker_(opt_messagePort);
this.dispatcher_.onmessage = this.onMessage_.bind(this);
this.dispatcher_.postMessage({verb: 'init'});
this.dispatcher_.start();
}
/**
* Returns |opt_messagePort| if given. Otherwise creates the Shared Worker
* and returns its message port.
* @param {!MessagePort=} opt_messagePort
* @private
* @return {!MessagePort}
*/
createSharedWorker_(opt_messagePort) {
if (opt_messagePort) {
return opt_messagePort;
}
let script = ContentMetadataProvider.WORKER_SCRIPT;
if (window.isSWA) {
script = 'foreground/js/metadata/metadata_dispatcher.js';
}
return new SharedWorker(script).port;
}
/**
......
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