From 272f9db3f8cc447de6d67092ee515042b5eff04d Mon Sep 17 00:00:00 2001 From: "trop[bot]" <37223003+trop[bot]@users.noreply.github.com> Date: Fri, 25 Jun 2021 17:11:01 +0900 Subject: [PATCH] fix: deny instead of canceling when certificate-error passes false (#29826) (#29870) Co-authored-by: Jeremy Rose --- shell/browser/api/electron_api_app.cc | 2 +- spec-main/api-app-spec.ts | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/shell/browser/api/electron_api_app.cc b/shell/browser/api/electron_api_app.cc index 4958b1a89e5a6..18398b0707f6b 100644 --- a/shell/browser/api/electron_api_app.cc +++ b/shell/browser/api/electron_api_app.cc @@ -412,7 +412,7 @@ struct Converter { if (!ConvertFromV8(isolate, val, &b)) return false; *out = b ? content::CERTIFICATE_REQUEST_RESULT_TYPE_CONTINUE - : content::CERTIFICATE_REQUEST_RESULT_TYPE_CANCEL; + : content::CERTIFICATE_REQUEST_RESULT_TYPE_DENY; return true; } }; diff --git a/spec-main/api-app-spec.ts b/spec-main/api-app-spec.ts index fe8666e6b5349..e2a12e9f7a2be 100644 --- a/spec-main/api-app-spec.ts +++ b/spec-main/api-app-spec.ts @@ -322,6 +322,24 @@ describe('app module', () => { w.loadURL(secureUrl); await emittedOnce(app, 'certificate-error'); }); + + describe('when denied', () => { + before(() => { + app.on('certificate-error', (event, webContents, url, error, certificate, callback) => { + callback(false); + }); + }); + + after(() => { + app.removeAllListeners('certificate-error'); + }); + + it('causes did-fail-load', async () => { + const w = new BrowserWindow({ show: false }); + w.loadURL(secureUrl); + await emittedOnce(w.webContents, 'did-fail-load'); + }); + }); }); // xdescribe('app.importCertificate', () => {