From 88d7bdc8c8f26b4b66b8e1ced2e155322b6ffc35 Mon Sep 17 00:00:00 2001 From: "trop[bot]" <37223003+trop[bot]@users.noreply.github.com> Date: Thu, 10 Sep 2020 09:15:13 +0900 Subject: [PATCH] fix: bind fake mojo service for badging (#25369) * fix: bind fake mojo service for badging * Add a test Co-authored-by: Shelley Vohr --- shell/browser/electron_browser_client.cc | 9 +++++++++ spec/chromium-spec.js | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/shell/browser/electron_browser_client.cc b/shell/browser/electron_browser_client.cc index 7c531fc56b890..9ee0aeaaf584b 100644 --- a/shell/browser/electron_browser_client.cc +++ b/shell/browser/electron_browser_client.cc @@ -96,6 +96,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" @@ -1583,6 +1584,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, @@ -1619,6 +1626,8 @@ void ElectronBrowserClient::RegisterBrowserInterfaceBindersForFrame( mojo::BinderMapWithContext* map) { map->Add( base::BindRepeating(&BindNetworkHintsHandler)); + map->Add( + base::BindRepeating(&BindBadgeManagerFrameReceiver)); #if BUILDFLAG(ENABLE_ELECTRON_EXTENSIONS) map->Add( base::BindRepeating(&BindMimeHandlerService)); diff --git a/spec/chromium-spec.js b/spec/chromium-spec.js index ac77ebc3ab489..545fb4ccaca3c 100644 --- a/spec/chromium-spec.js +++ b/spec/chromium-spec.js @@ -17,6 +17,14 @@ const features = process.electronBinding('features'); describe('chromium feature', () => { const fixtures = path.resolve(__dirname, 'fixtures'); + 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();