[MacOS] Move relauchOnMac out of WebUI.

When building tests the following error happens:

17:40:57  gen/chrome/test/data/webui/settings/preprocessed/test_lifetime_browser_proxy.ts:11:14 - error TS2420: Class 'TestLifetimeBrowserProxy' incorrectly implements interface 'LifetimeBrowserProxy'.
17:40:57    Property 'relaunchOnMac' is missing in type 'TestLifetimeBrowserProxy' but required in type 'LifetimeBrowserProxy'.
17:40:57
17:40:57  11 export class TestLifetimeBrowserProxy extends TestBrowserProxy implements
17:40:57                  ~~~~~~~~~~~~~~~~~~~~~~~~
17:40:57
17:40:57    gen/chrome/browser/resources/settings/tsc/lifetime_browser_proxy.d.ts:4:5
17:40:57      4     relaunchOnMac(): void;
17:40:57            ~~~~~~~~~~~~~~~~~~~~~~
17:40:57      'relaunchOnMac' is declared here.

which means we'd have to add a patch to test_lifetime_proxy.ts to add our relaunchOnMac functionality.

Instead, this change removes all relaunchOnMac functionality from WebUI and moves it
into the BrowserLifetimeHandler.
This commit is contained in:
mkarolin
2021-12-07 14:46:07 -05:00
parent a0d0719232
commit 49a2cc40e1
7 changed files with 77 additions and 85 deletions
-9
View File
@@ -11,7 +11,6 @@
#include "brave/browser/ntp_background_images/view_counter_service_factory.h"
#include "brave/browser/resources/settings/grit/brave_settings_resources.h"
#include "brave/browser/resources/settings/grit/brave_settings_resources_map.h"
#include "brave/browser/sparkle_buildflags.h"
#include "brave/browser/ui/webui/navigation_bar_data_provider.h"
#include "brave/browser/ui/webui/settings/brave_appearance_handler.h"
#include "brave/browser/ui/webui/settings/brave_default_extensions_handler.h"
@@ -31,10 +30,6 @@
#include "content/public/browser/web_ui_data_source.h"
#include "content/public/common/content_features.h"
#if BUILDFLAG(ENABLE_SPARKLE)
#include "brave/browser/ui/webui/settings/brave_relaunch_handler_mac.h"
#endif
#if BUILDFLAG(ENABLE_SIDEBAR)
#include "brave/browser/ui/sidebar/sidebar_utils.h"
#endif
@@ -64,10 +59,6 @@ BraveSettingsUI::BraveSettingsUI(content::WebUI* web_ui,
web_ui->AddMessageHandler(std::make_unique<BraveAppearanceHandler>());
web_ui->AddMessageHandler(std::make_unique<BraveSyncHandler>());
web_ui->AddMessageHandler(std::make_unique<BraveWalletHandler>());
#if BUILDFLAG(ENABLE_SPARKLE)
// Use sparkle's relaunch api for browser relaunch on update.
web_ui->AddMessageHandler(std::make_unique<BraveRelaunchHandler>());
#endif
#if defined(OS_WIN)
if (MSEdgeProtocolMessageHandler::CanSetDefaultMSEdgeProtocolHandler())
web_ui->AddMessageHandler(std::make_unique<MSEdgeProtocolMessageHandler>());
@@ -6,24 +6,10 @@
#ifndef BRAVE_BROWSER_UI_WEBUI_SETTINGS_BRAVE_RELAUNCH_HANDLER_MAC_H_
#define BRAVE_BROWSER_UI_WEBUI_SETTINGS_BRAVE_RELAUNCH_HANDLER_MAC_H_
#include "chrome/browser/ui/webui/settings/settings_page_ui_handler.h"
namespace brave_relaunch_handler {
class Profile;
void RelaunchOnMac();
class BraveRelaunchHandler : public settings::SettingsPageUIHandler {
public:
BraveRelaunchHandler() = default;
~BraveRelaunchHandler() override = default;
private:
// SettingsPageUIHandler overrides:
void RegisterMessages() override;
void OnJavascriptAllowed() override {}
void OnJavascriptDisallowed() override {}
void Relaunch(base::Value::ConstListView args);
DISALLOW_COPY_AND_ASSIGN(BraveRelaunchHandler);
};
} // namespace brave_relaunch_handler
#endif // BRAVE_BROWSER_UI_WEBUI_SETTINGS_BRAVE_RELAUNCH_HANDLER_MAC_H_
@@ -1,18 +1,16 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
/* Copyright (c) 2021 The Brave Authors. All rights reserved.
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "brave/browser/ui/webui/settings/brave_relaunch_handler_mac.h"
#include "base/bind.h"
#import "brave/browser/mac/sparkle_glue.h"
void BraveRelaunchHandler::RegisterMessages() {
web_ui()->RegisterMessageCallback(
"relaunchOnMac", base::BindRepeating(&BraveRelaunchHandler::Relaunch,
base::Unretained(this)));
}
namespace brave_relaunch_handler {
void BraveRelaunchHandler::Relaunch(base::Value::ConstListView args) {
void RelaunchOnMac() {
[[SparkleGlue sharedSparkleGlue] relaunch];
}
} // namespace brave_relaunch_handler
@@ -0,0 +1,30 @@
/* Copyright (c) 2021 The Brave Authors. All rights reserved.
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "chrome/browser/ui/webui/settings/browser_lifetime_handler.h"
#include "brave/browser/sparkle_buildflags.h"
#if BUILDFLAG(ENABLE_SPARKLE)
#include "brave/browser/ui/webui/settings/brave_relaunch_handler_mac.h"
#endif
#define BrowserLifetimeHandler BrowserLifetimeHandler_ChromiumImpl
#include "../../../../../../../chrome/browser/ui/webui/settings/browser_lifetime_handler.cc"
#undef BrowserLifetimeHandler
namespace settings {
BrowserLifetimeHandler::~BrowserLifetimeHandler() {}
void BrowserLifetimeHandler::HandleRelaunch(const base::ListValue* args) {
#if BUILDFLAG(ENABLE_SPARKLE)
brave_relaunch_handler::RelaunchOnMac();
return;
#endif
BrowserLifetimeHandler_ChromiumImpl::HandleRelaunch(args);
}
} // namespace settings
@@ -0,0 +1,38 @@
/* Copyright (c) 2021 The Brave Authors. All rights reserved.
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_WEBUI_SETTINGS_BROWSER_LIFETIME_HANDLER_H_
#define BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_WEBUI_SETTINGS_BROWSER_LIFETIME_HANDLER_H_
#define BrowserLifetimeHandler BrowserLifetimeHandler_ChromiumImpl
#define HandleRelaunch \
Dummy(); \
\
protected: \
virtual void HandleRelaunch
#include "../../../../../../../chrome/browser/ui/webui/settings/browser_lifetime_handler.h"
#undef HandleRelaunch
#undef BrowserLifetimeHandler
namespace settings {
class BrowserLifetimeHandler : public BrowserLifetimeHandler_ChromiumImpl {
public:
using BrowserLifetimeHandler_ChromiumImpl::
BrowserLifetimeHandler_ChromiumImpl;
BrowserLifetimeHandler(const BrowserLifetimeHandler&) = delete;
BrowserLifetimeHandler& operator=(const BrowserLifetimeHandler&) = delete;
~BrowserLifetimeHandler() override;
private:
void HandleRelaunch(const base::ListValue* /*args*/) override;
};
} // namespace settings
#endif // BRAVE_CHROMIUM_SRC_CHROME_BROWSER_UI_WEBUI_SETTINGS_BROWSER_LIFETIME_HANDLER_H_
@@ -1,19 +0,0 @@
diff --git a/chrome/browser/resources/settings/about_page/about_page.ts b/chrome/browser/resources/settings/about_page/about_page.ts
index a5dcbb3ee70a59be9e4d269e62f88c0cf2d16160..d54d233e4ad0c4a92d845d87e2c59b8c816e7347 100644
--- a/chrome/browser/resources/settings/about_page/about_page.ts
+++ b/chrome/browser/resources/settings/about_page/about_page.ts
@@ -190,7 +190,14 @@ export class SettingsAboutPageElement extends SettingsAboutPageElementBase {
}
private onRelaunchTap_() {
+ // <if expr="is_macosx">
+ // Sparkle framework's relaunch api is used.
+ LifetimeBrowserProxyImpl.getInstance().relaunchOnMac();
+ // </if>
+
+ // <if expr="not is_macosx">
LifetimeBrowserProxyImpl.getInstance().relaunch();
+ // </if>
}
// <if expr="not chromeos">
@@ -1,32 +0,0 @@
diff --git a/chrome/browser/resources/settings/lifetime_browser_proxy.ts b/chrome/browser/resources/settings/lifetime_browser_proxy.ts
index 88d9caa34016bcf9d87a908303e77bb89df48b81..a2827a32a3885c05da3722ce99328e1033fe9461 100644
--- a/chrome/browser/resources/settings/lifetime_browser_proxy.ts
+++ b/chrome/browser/resources/settings/lifetime_browser_proxy.ts
@@ -9,6 +9,13 @@ export interface LifetimeBrowserProxy {
// Triggers a browser relaunch.
relaunch(): void;
+ // <if expr="is_macosx">
+ // Use separate api for relaunch after update on Mac.
+ // Chromium's relaunch api isn't compatible with sparkle framework.
+ // So, sparkle framework's relaunch api is used on Mac.
+ relaunchOnMac(): void;
+ // </if>
+
// <if expr="chromeos">
// First signs out current user and then performs a restart.
signOutAndRestart(): void;
@@ -30,6 +37,13 @@ export class LifetimeBrowserProxyImpl implements LifetimeBrowserProxy {
chrome.send('relaunch');
}
+ // <if expr="is_macosx">
+ /** @override */
+ relaunchOnMac() {
+ chrome.send('relaunchOnMac');
+ }
+ // </if>
+
// <if expr="chromeos">
signOutAndRestart() {
chrome.send('signOutAndRestart');