From 74543a8b606765305779fc0ff303b2aafdd1a9dc Mon Sep 17 00:00:00 2001 From: ryanml Date: Fri, 7 Aug 2020 16:02:58 -0700 Subject: [PATCH] Fixes brave/brave-browser#11136 - Removes Gemini toggle option when unsupported --- .../brave_new_tab_browser_proxy.js | 10 ++++++++ .../brave_new_tab_page.html | 12 +++++---- .../brave_new_tab_page/brave_new_tab_page.js | 5 ++++ .../settings/brave_appearance_handler.cc | 25 +++++++++++++++++++ .../webui/settings/brave_appearance_handler.h | 1 + 5 files changed, 48 insertions(+), 5 deletions(-) diff --git a/browser/resources/settings/brave_new_tab_page/brave_new_tab_browser_proxy.js b/browser/resources/settings/brave_new_tab_page/brave_new_tab_browser_proxy.js index ffc212312f79..416c35e8cfed 100644 --- a/browser/resources/settings/brave_new_tab_page/brave_new_tab_browser_proxy.js +++ b/browser/resources/settings/brave_new_tab_page/brave_new_tab_browser_proxy.js @@ -23,6 +23,11 @@ cr.define('settings', function() { * @return {!Promise} */ getIsBraveTogetherSupported() {} + + /** + * @return {!Promise} + */ + getIsGeminiSupported() {} } /** @@ -43,6 +48,11 @@ cr.define('settings', function() { getIsBraveTogetherSupported() { return cr.sendWithPromise('getIsBraveTogetherSupported') } + + /** @override */ + getIsGeminiSupported() { + return cr.sendWithPromise('getIsGeminiSupported') + } } cr.addSingletonGetter(BraveNewTabBrowserProxyImpl); diff --git a/browser/resources/settings/brave_new_tab_page/brave_new_tab_page.html b/browser/resources/settings/brave_new_tab_page/brave_new_tab_page.html index 06deefccfb02..32b6bf02e999 100644 --- a/browser/resources/settings/brave_new_tab_page/brave_new_tab_page.html +++ b/browser/resources/settings/brave_new_tab_page/brave_new_tab_page.html @@ -70,11 +70,13 @@ label="$i18n{braveNewTabBinance}"> - - + { this.isBraveTogetherSupported_ = isBraveTogetherSupported; }) + this.browserProxy_.getIsGeminiSupported().then(isGeminiSupported => { + this.isGeminiSupported_ = isGeminiSupported; + }) this.addWebUIListener('super-referral-active-state-changed', (isSuperReferralActive) => { this.isSuperReferralActive_ = isSuperReferralActive; diff --git a/browser/ui/webui/settings/brave_appearance_handler.cc b/browser/ui/webui/settings/brave_appearance_handler.cc index d70e19b7131f..c15f9202fe59 100644 --- a/browser/ui/webui/settings/brave_appearance_handler.cc +++ b/browser/ui/webui/settings/brave_appearance_handler.cc @@ -11,6 +11,7 @@ #include "brave/browser/themes/brave_dark_mode_utils.h" #include "brave/components/binance/browser/buildflags/buildflags.h" #include "brave/components/brave_together/buildflags/buildflags.h" +#include "brave/components/gemini/browser/buildflags/buildflags.h" #include "brave/components/ntp_widget_utils/browser/buildflags/buildflags.h" #include "brave/common/pref_names.h" #include "brave/components/ntp_background_images/browser/ntp_background_images_data.h" @@ -32,6 +33,10 @@ #include "brave/components/brave_together/browser/regions.h" #endif +#if BUILDFLAG(GEMINI_ENABLED) +#include "brave/components/gemini/browser/regions.h" +#endif + using ntp_background_images::ViewCounterServiceFactory; using ntp_background_images::prefs::kNewTabPageSuperReferralThemesOption; @@ -90,6 +95,10 @@ void BraveAppearanceHandler::RegisterMessages() { "getIsBraveTogetherSupported", base::BindRepeating(&BraveAppearanceHandler::GetIsBraveTogetherSupported, base::Unretained(this))); + web_ui()->RegisterMessageCallback( + "getIsGeminiSupported", + base::BindRepeating(&BraveAppearanceHandler::GetIsGeminiSupported, + base::Unretained(this))); } void BraveAppearanceHandler::SetBraveThemeType(const base::ListValue* args) { @@ -154,6 +163,22 @@ void BraveAppearanceHandler::GetIsBraveTogetherSupported( ResolveJavascriptCallback(args->GetList()[0], base::Value(is_supported)); } +void BraveAppearanceHandler::GetIsGeminiSupported( + const base::ListValue* args) { + CHECK_EQ(args->GetSize(), 1U); + + AllowJavascript(); + +#if !BUILDFLAG(GEMINI_ENABLED) + bool is_supported = false; +#else + bool is_supported = ntp_widget_utils::IsRegionSupported( + profile_->GetPrefs(), gemini::supported_regions, true); +#endif + + ResolveJavascriptCallback(args->GetList()[0], base::Value(is_supported)); +} + void BraveAppearanceHandler::OnBraveDarkModeChanged() { // GetBraveThemeType() should be used because settings option displays all // available options including default. diff --git a/browser/ui/webui/settings/brave_appearance_handler.h b/browser/ui/webui/settings/brave_appearance_handler.h index 4528e8eec87c..f6f423372cc4 100644 --- a/browser/ui/webui/settings/brave_appearance_handler.h +++ b/browser/ui/webui/settings/brave_appearance_handler.h @@ -34,6 +34,7 @@ class BraveAppearanceHandler : public settings::SettingsPageUIHandler { void GetIsSuperReferralActive(const base::ListValue* args); void GetIsBinanceSupported(const base::ListValue* args); void GetIsBraveTogetherSupported(const base::ListValue* args); + void GetIsGeminiSupported(const base::ListValue* args); Profile* profile_ = nullptr; PrefChangeRegistrar local_state_change_registrar_;