From 07f1423a29a06008307ef177b07569fb70344302 Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Wed, 2 Sep 2020 18:29:17 -0700 Subject: [PATCH 1/2] fix: bind fake mojo service for badging --- shell/browser/electron_browser_client.cc | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/shell/browser/electron_browser_client.cc b/shell/browser/electron_browser_client.cc index 1a380bd05c751..24c347bf8c1a3 100644 --- a/shell/browser/electron_browser_client.cc +++ b/shell/browser/electron_browser_client.cc @@ -93,6 +93,7 @@ #include "shell/common/options_switches.h" #include "shell/common/platform_util.h" #include "third_party/blink/public/common/loader/url_loader_throttle.h" +#include "third_party/blink/public/mojom/badging/badging.mojom.h" #include "ui/base/resource/resource_bundle.h" #include "ui/native_theme/native_theme.h" #include "v8/include/v8.h" @@ -1592,6 +1593,12 @@ void ElectronBrowserClient::BindHostReceiverForRenderer( #endif } +void BindBadgeManagerFrameReceiver( + content::RenderFrameHost* frame, + mojo::PendingReceiver receiver) { + LOG(WARNING) << "The Chromium Badging API is not available in Electron"; +} + #if BUILDFLAG(ENABLE_ELECTRON_EXTENSIONS) void BindMimeHandlerService( content::RenderFrameHost* frame_host, @@ -1628,6 +1635,8 @@ void ElectronBrowserClient::RegisterBrowserInterfaceBindersForFrame( service_manager::BinderMapWithContext* map) { map->Add( base::BindRepeating(&BindNetworkHintsHandler)); + map->Add( + base::BindRepeating(&BindBadgeManagerFrameReceiver)); #if BUILDFLAG(ENABLE_ELECTRON_EXTENSIONS) map->Add( base::BindRepeating(&BindMimeHandlerService)); From bf9900fddef45f95053a0ff91fd2db915aa32757 Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Wed, 2 Sep 2020 21:50:12 -0700 Subject: [PATCH 2/2] Add a test --- spec/chromium-spec.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/spec/chromium-spec.js b/spec/chromium-spec.js index cb1595bf2838d..7bf468df8cc25 100644 --- a/spec/chromium-spec.js +++ b/spec/chromium-spec.js @@ -24,6 +24,14 @@ describe('chromium feature', () => { listener = null; }); + describe('Badging API', () => { + it('does not crash', () => { + expect(() => { + navigator.setAppBadge(42); + }).to.not.throw(); + }); + }); + describe('heap snapshot', () => { it('does not crash', function () { process.electronBinding('v8_util').takeHeapSnapshot();