From 5e44fe86247bde5f2bd13b742a48666af9efb792 Mon Sep 17 00:00:00 2001 From: 101arrowz Date: Wed, 13 Apr 2022 19:44:52 -0700 Subject: [PATCH 1/2] Webextension fixes Don't use shared dependencies for manifest children Allow browser_specific_settings Fix web_accessible_resources generation --- .../webextension/src/WebExtensionPackager.js | 36 ++++++++++--------- .../src/WebExtensionTransformer.js | 11 ++++++ .../transformers/webextension/src/schema.js | 8 +++++ 3 files changed, 39 insertions(+), 16 deletions(-) diff --git a/packages/packagers/webextension/src/WebExtensionPackager.js b/packages/packagers/webextension/src/WebExtensionPackager.js index ffa13bb7736..f75c2e7f6ae 100644 --- a/packages/packagers/webextension/src/WebExtensionPackager.js +++ b/packages/packagers/webextension/src/WebExtensionPackager.js @@ -42,22 +42,26 @@ export default (new Packager({ ), ]; - war.push({ - matches: contentScript.matches, - extension_ids: [], - resources: jsBundles - .flatMap(b => { - const children = []; - const siblings = bundleGraph.getReferencedBundles(b); - bundleGraph.traverseBundles(child => { - if (b !== child && !siblings.includes(child)) { - children.push(child); - } - }, b); - return children; - }) - .map(relPath), - }); + const resources = jsBundles + .flatMap(b => { + const children = []; + const siblings = bundleGraph.getReferencedBundles(b); + bundleGraph.traverseBundles(child => { + if (b !== child && !siblings.includes(child)) { + children.push(child); + } + }, b); + return children; + }) + .map(relPath); + + if (resources.length > 0) { + // In the future, maybe use "matches" as well + war.push({ + extension_ids: [], + resources, + }); + } } manifest.web_accessible_resources = ( manifest.web_accessible_resources || [] diff --git a/packages/transformers/webextension/src/WebExtensionTransformer.js b/packages/transformers/webextension/src/WebExtensionTransformer.js index 9c9a72eb248..d8b18e0f0a7 100644 --- a/packages/transformers/webextension/src/WebExtensionTransformer.js +++ b/packages/transformers/webextension/src/WebExtensionTransformer.js @@ -99,6 +99,7 @@ async function collectDependencies( assets[j] = asset.addURLDependency(assets[j], { // This causes the packager to re-run when these assets update priority: 'parallel', + bundleBehavior: 'isolated', loc: { filePath, ...getJSONSourceLocation( @@ -190,6 +191,8 @@ async function collectDependencies( await glob(path.join(assetDir, files[j]), fs, {}) ).map(fp => asset.addURLDependency(path.relative(assetDir, fp), { + priority: 'parallel', + bundleBehavior: 'isolated', needsStableName: true, loc: { filePath, @@ -224,6 +227,8 @@ async function collectDependencies( const obj = parent[lastLoc]; if (typeof obj == 'string') parent[lastLoc] = asset.addURLDependency(obj, { + priority: 'parallel', + bundleBehavior: 'isolated', loc: { filePath, ...getJSONSourceLocation(ptrs[location], 'value'), @@ -233,6 +238,8 @@ async function collectDependencies( else { for (const k of Object.keys(obj)) { obj[k] = asset.addURLDependency(obj[k], { + priority: 'parallel', + bundleBehavior: 'isolated', loc: { filePath, ...getJSONSourceLocation(ptrs[location + '/' + k], 'value'), @@ -247,6 +254,8 @@ async function collectDependencies( program.background.page = asset.addURLDependency( program.background.page, { + priority: 'parallel', + bundleBehavior: 'isolated', loc: { filePath, ...getJSONSourceLocation(ptrs['/background/page'], 'value'), @@ -285,6 +294,8 @@ async function collectDependencies( program.background.service_worker = asset.addURLDependency( program.background.service_worker, { + priority: 'parallel', + bundleBehavior: 'isolated', loc: { filePath, ...getJSONSourceLocation( diff --git a/packages/transformers/webextension/src/schema.js b/packages/transformers/webextension/src/schema.js index 1a6252bca10..5ca00adc7c0 100644 --- a/packages/transformers/webextension/src/schema.js +++ b/packages/transformers/webextension/src/schema.js @@ -85,6 +85,14 @@ const commonProps = { description: string, icons, author: string, + browser_specific_settings: { + type: 'object', + properties: {}, + additionalProperties: { + type: 'object', + properties: {}, + } + }, chrome_settings_overrides: { type: 'object', properties: { From a9c1ea78d93e5372aa54517048b4f9fde3978ab5 Mon Sep 17 00:00:00 2001 From: 101arrowz Date: Thu, 14 Apr 2022 18:53:25 -0700 Subject: [PATCH 2/2] Fix lint --- packages/transformers/webextension/src/schema.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/transformers/webextension/src/schema.js b/packages/transformers/webextension/src/schema.js index 5ca00adc7c0..1a26d3a351c 100644 --- a/packages/transformers/webextension/src/schema.js +++ b/packages/transformers/webextension/src/schema.js @@ -91,7 +91,7 @@ const commonProps = { additionalProperties: { type: 'object', properties: {}, - } + }, }, chrome_settings_overrides: { type: 'object',