Browse Source

fix: crash when loading extension with missing manifest (#34303)

Shelley Vohr 2 years ago
parent
commit
f9dc5b52d0

+ 2 - 0
electron_paks.gni

@@ -177,6 +177,7 @@ template("electron_paks") {
       "${root_gen_dir}/third_party/blink/public/strings/blink_accessibility_strings_",
       "${root_gen_dir}/third_party/blink/public/strings/blink_strings_",
       "${root_gen_dir}/device/bluetooth/strings/bluetooth_strings_",
+      "${root_gen_dir}/extensions/strings/extensions_strings_",
       "${root_gen_dir}/services/strings/services_strings_",
       "${root_gen_dir}/ui/strings/app_locale_settings_",
       "${root_gen_dir}/ui/strings/ax_strings_",
@@ -186,6 +187,7 @@ template("electron_paks") {
       "//chrome/app/resources:platform_locale_settings",
       "//components/strings:components_strings",
       "//device/bluetooth/strings",
+      "//extensions/strings",
       "//services/strings",
       "//third_party/blink/public/strings",
       "//third_party/blink/public/strings:accessibility_strings",

+ 6 - 0
spec-main/extensions-spec.ts

@@ -110,6 +110,12 @@ describe('chrome extensions', () => {
     expect(bg).to.equal('red');
   });
 
+  it('does not crash when loading an extension with missing manifest', async () => {
+    const customSession = session.fromPartition(`persist:${uuid.v4()}`);
+    const promise = customSession.loadExtension(path.join(fixtures, 'extensions', 'missing-manifest'));
+    await expect(promise).to.eventually.be.rejectedWith(/Manifest file is missing or unreadable/);
+  });
+
   it('does not crash when failing to load an extension', async () => {
     const customSession = session.fromPartition(`persist:${uuid.v4()}`);
     const promise = customSession.loadExtension(path.join(fixtures, 'extensions', 'load-error'));

+ 1 - 0
spec-main/fixtures/extensions/missing-manifest/main.js

@@ -0,0 +1 @@
+console.log('oh no where is my manifest');