helium/core/services: component updates and schema 1 changelog (#591)

This commit is contained in:
wukko
2025-12-12 18:00:15 +06:00
committed by GitHub
14 changed files with 283 additions and 56 deletions

View File

@@ -724,7 +724,7 @@
COMPONENT_EXPORT(HELIUM) GURL GetDummyURL();
--- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -2132,6 +2132,9 @@ void AddPrivacyStrings(content::WebUIDat
@@ -2134,6 +2134,9 @@ void AddPrivacyStrings(content::WebUIDat
IDS_SETTINGS_HELIUM_SERVICES_EXT_PROXY_TOGGLE},
{"heliumExtProxyToggleDescription",
IDS_SETTINGS_HELIUM_SERVICES_EXT_PROXY_TOGGLE_DESCRIPTION},
@@ -736,7 +736,7 @@
IDS_SETTINGS_HELIUM_SERVICES_OVERRIDE_DESCRIPTION},
--- a/chrome/app/settings_strings.grdp
+++ b/chrome/app/settings_strings.grdp
@@ -1987,6 +1987,12 @@
@@ -1990,6 +1990,12 @@
<message name="IDS_SETTINGS_HELIUM_SERVICES_EXT_PROXY_TOGGLE_DESCRIPTION" desc="Description of the toggle for enabling/disabling of downloading and proxying extensions">
When enabled, Helium will proxy extension downloads and updates to protect your privacy. When disabled, downloading and updating extensions will not work.
</message>
@@ -751,7 +751,7 @@
</message>
--- a/chrome/browser/resources/settings/privacy_page/services_page.html
+++ b/chrome/browser/resources/settings/privacy_page/services_page.html
@@ -89,6 +89,11 @@
@@ -92,6 +92,11 @@
label="$i18n{heliumExtProxyToggle}"
sub-label="$i18n{heliumExtProxyToggleDescription}">
</settings-toggle-button>

View File

@@ -1,5 +1,3 @@
TODO: guard services_page.html with is_mac
--- a/components/helium_services/pref_names.h
+++ b/components/helium_services/pref_names.h
@@ -33,6 +33,9 @@ inline constexpr char kHeliumExtProxyEna
@@ -78,23 +76,21 @@ TODO: guard services_page.html with is_mac
registrar.Add(prefs::kHeliumServicesEnabled, observer);
--- a/chrome/browser/resources/settings/privacy_page/services_page.html
+++ b/chrome/browser/resources/settings/privacy_page/services_page.html
@@ -101,6 +101,13 @@
@@ -104,6 +104,11 @@
sub-label="$i18n{heliumSpellcheckToggleDescription}">
</settings-toggle-button>
</if>
+ <if expr="is_macosx">
+ <settings-toggle-button id="updatesToggleButton"
+ pref="{{prefs.helium.services.browser_updates}}"
+ label="$i18n{heliumUpdatesToggle}"
+ sub-label="$i18n{heliumUpdatesToggleDescription}">
+ </settings-toggle-button>
+ </if>
+ <settings-toggle-button id="updatesToggleButton"
+ pref="{{prefs.helium.services.browser_updates}}"
+ label="$i18n{heliumUpdatesToggle}"
+ sub-label="$i18n{heliumUpdatesToggleDescription}">
+ </settings-toggle-button>
</cr-collapse>
</div>
</template>
--- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -2138,6 +2138,10 @@ void AddPrivacyStrings(content::WebUIDat
@@ -2140,6 +2140,10 @@ void AddPrivacyStrings(content::WebUIDat
{"heliumSpellcheckToggle", IDS_SETTINGS_HELIUM_SERVICES_SPELLCHECK_TOGGLE},
{"heliumSpellcheckToggleDescription",
IDS_SETTINGS_HELIUM_SERVICES_SPELLCHECK_TOGGLE_DESCRIPTION},
@@ -128,16 +124,23 @@ TODO: guard services_page.html with is_mac
registry->RegisterBooleanPref(
--- a/chrome/app/settings_strings.grdp
+++ b/chrome/app/settings_strings.grdp
@@ -2002,6 +2002,12 @@
@@ -2005,6 +2005,19 @@
<message name="IDS_SETTINGS_HELIUM_SERVICES_SPELLCHECK_TOGGLE_DESCRIPTION" desc="Description of the for enabling/disabling of downloading spellcheck files">
Helium will fetch dictionary files used for spell checking when requested. When disabled, spell checking will not work.
</message>
+ <message name="IDS_SETTINGS_HELIUM_SERVICES_UPDATE" desc="Toggle for automatic update downloads">
+ Allow automatic browser updates
+ </message>
+ <message name="IDS_SETTINGS_HELIUM_SERVICES_UPDATE_DESCRIPTION" desc="Description of the toggle for automatic update downloads">
+ Helium will automatically download and install browser updates as they become available. We recommend keeping this setting enabled to ensure you get the latest security patches and features.
+ Allow automatic browser and component updates
+ </message>
+ <if expr="is_macosx">
+ <message name="IDS_SETTINGS_HELIUM_SERVICES_UPDATE_DESCRIPTION" desc="Description of the toggle for automatic update downloads">
+ Helium will automatically download and install browser and component updates as they become available. We recommend keeping this setting enabled to ensure you get the latest features and security updates.
+ </message>
+ </if>
+ <if expr="not is_macosx">
+ <message name="IDS_SETTINGS_HELIUM_SERVICES_UPDATE_DESCRIPTION" desc="Description of the toggle for automatic update downloads">
+ Helium will automatically download and install browser and component updates as they become available. We recommend keeping this setting enabled to ensure you get the latest features and security updates. Automatic core browser updates are not available on this platform yet, but component updates are. Please use external software to keep Helium up to date.
+ </message>
+ </if>
<message name="IDS_SETTINGS_HELIUM_SERVICES_OVERRIDE" desc="Text input for overriding the Helium services server">
Use your own instance of Helium services
</message>

View File

@@ -0,0 +1,220 @@
--- a/components/component_updater/component_updater_url_constants.cc
+++ b/components/component_updater/component_updater_url_constants.cc
@@ -15,9 +15,9 @@ namespace component_updater {
// The value of |kDefaultUrlSource| can be overridden with
// --component-updater=url-source=someurl.
const char kUpdaterJSONDefaultUrl[] =
- "https://update.googleapis.com/service/update2/json";
+ "trk:345:https://update.googleapis.com/service/update2/json";
const char kUpdaterJSONFallbackUrl[] =
- "http://update.googleapis.com/service/update2/json";
+ "trk:346:http://update.googleapis.com/service/update2/json";
} // namespace component_updater
--- a/components/helium_services/helium_services_helpers.cc
+++ b/components/helium_services/helium_services_helpers.cc
@@ -9,6 +9,7 @@
#include "base/functional/bind.h"
#include "base/strings/stringprintf.h"
#include "components/helium_services/pref_names.h"
+#include "components/helium_services/schema.h"
#include "components/prefs/pref_service.h"
#include "net/base/url_util.h"
#include "url/gurl.h"
@@ -88,6 +89,12 @@ bool ShouldAccessUpdateService(const Pre
prefs.GetBoolean(prefs::kHeliumUpdateFetchingEnabled);
}
+bool ShouldAccessComponentUpdateService(const PrefService& prefs) {
+ return ShouldAccessServices(prefs) &&
+ HasAcceptedSchema(prefs, 1) &&
+ prefs.GetBoolean(prefs::kHeliumUpdateFetchingEnabled);
+}
+
bool ShouldAccessUBlockAssets(const PrefService& prefs) {
return ShouldAccessServices(prefs) &&
prefs.GetBoolean(prefs::kHeliumUBlockAssetsEnabled);
@@ -132,6 +139,14 @@ GURL GetBrowserUpdateURL(const PrefServi
#endif
}
+GURL GetComponentUpdateURL(const PrefService* prefs) {
+ if (!prefs || !ShouldAccessComponentUpdateService(*prefs)) {
+ return GetDummyURL();
+ }
+
+ return GetServicesBaseURL(*prefs).Resolve("/com");
+}
+
GURL GetUBlockAssetsURL(const PrefService& prefs) {
if (!ShouldAccessUBlockAssets(prefs)) {
return GetDummyURL();
--- a/components/helium_services/helium_services_helpers.h
+++ b/components/helium_services/helium_services_helpers.h
@@ -23,6 +23,7 @@ bool ShouldAccessServices(const PrefServ
COMPONENT_EXPORT(HELIUM) bool ShouldFetchBangs(const PrefService& prefs);
COMPONENT_EXPORT(HELIUM) bool ShouldAccessExtensionService(const PrefService& prefs);
COMPONENT_EXPORT(HELIUM) bool ShouldAccessUpdateService(const PrefService& prefs);
+COMPONENT_EXPORT(HELIUM) bool ShouldAccessComponentUpdateService(const PrefService& prefs);
COMPONENT_EXPORT(HELIUM) bool ShouldAccessUBlockAssets(const PrefService& prefs);
COMPONENT_EXPORT(HELIUM) GURL GetServicesBaseURL(const PrefService& prefs);
COMPONENT_EXPORT(HELIUM) GURL GetDummyURL();
@@ -30,6 +31,7 @@ COMPONENT_EXPORT(HELIUM) GURL GetExtensi
COMPONENT_EXPORT(HELIUM) GURL GetWebstoreSnippetURL(const PrefService& prefs, std::string_view id);
COMPONENT_EXPORT(HELIUM) GURL GetSpellcheckURL(const PrefService& prefs);
COMPONENT_EXPORT(HELIUM) GURL GetBrowserUpdateURL(const PrefService& prefs);
+COMPONENT_EXPORT(HELIUM) GURL GetComponentUpdateURL(const PrefService* prefs);
COMPONENT_EXPORT(HELIUM) GURL GetUBlockAssetsURL(const PrefService& prefs);
COMPONENT_EXPORT(HELIUM) std::optional<GURL> GetValidUserOverridenURL(std::string_view user_url_);
COMPONENT_EXPORT(HELIUM) void ConfigurePrefChangeRegistrarFor(std::string_view pref_name,
--- a/chrome/browser/component_updater/chrome_component_updater_configurator.cc
+++ b/chrome/browser/component_updater/chrome_component_updater_configurator.cc
@@ -26,11 +26,14 @@
#include "chrome/browser/component_updater/component_updater_utils.h"
#include "chrome/browser/component_updater/updater_state.h"
#include "chrome/browser/net/system_network_context_manager.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/update_client/chrome_update_query_params_delegate.h"
#include "chrome/common/channel_info.h"
#include "chrome/common/chrome_paths.h"
#include "components/component_updater/component_updater_command_line_config_policy.h"
#include "components/component_updater/configurator_impl.h"
+#include "components/helium_services/helium_services_helpers.h"
#include "components/prefs/pref_service.h"
#include "components/services/patch/content/patch_service.h"
#include "components/services/unzip/content/unzip_service.h"
@@ -55,6 +58,26 @@
namespace component_updater {
namespace {
+PrefService* GetProfilePrefs() {
+ // Browser process and profile manager are usually
+ // not null, but they may be during tests.
+ if (!g_browser_process) {
+ return nullptr;
+ }
+
+ ProfileManager* pm = g_browser_process->profile_manager();
+ if (!pm) {
+ return nullptr;
+ }
+
+ Profile* profile = pm->GetLastUsedProfileIfLoaded();
+ if (!profile) {
+ return nullptr;
+ }
+
+ return profile->GetPrefs();
+}
+
class ChromeConfigurator : public update_client::Configurator {
public:
ChromeConfigurator(const base::CommandLine* cmdline,
@@ -154,12 +177,12 @@ base::TimeDelta ChromeConfigurator::Upda
std::vector<GURL> ChromeConfigurator::UpdateUrl() const {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
- return configurator_impl_.UpdateUrl();
+ return {helium::GetComponentUpdateURL(GetProfilePrefs())};
}
std::vector<GURL> ChromeConfigurator::PingUrl() const {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
- return configurator_impl_.PingUrl();
+ return {helium::GetComponentUpdateURL(GetProfilePrefs())};
}
std::string ChromeConfigurator::GetProdId() const {
--- a/components/component_updater/component_installer.cc
+++ b/components/component_updater/component_installer.cc
@@ -12,6 +12,7 @@
#include <utility>
#include <vector>
+#include "base/containers/fixed_flat_set.h"
#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/files/file_util.h"
@@ -111,7 +112,21 @@ void ComponentInstaller::Register(Compon
std::vector<uint8_t> public_key_hash;
installer_policy_->GetHash(&public_key_hash);
+
+ static constexpr auto kAllowedComponents =
+ base::MakeFixedFlatSet<std::string_view>(
+ base::sorted_unique,
+ {
+ "hfnkpimlhhgieaddgfemjhofmfblmnib", // CRLSet
+ }
+ );
+
const auto crx_id = update_client::GetCrxIdFromPublicKeyHash(public_key_hash);
+
+ if (!kAllowedComponents.contains(crx_id)) {
+ return;
+ }
+
Register(base::BindOnce(&ComponentUpdateService::RegisterComponent,
base::Unretained(cus)),
std::move(callback), cus->GetRegisteredVersion(crx_id),
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -6957,6 +6957,9 @@ Keep your key file in a safe place. You
<message name="IDS_COMPONENTS_SVC_STATUS_UPDATE_ERROR" desc="Service Status">
Update error
</message>
+ <message name="IDS_COMPONENTS_SVC_STATUS_ERROR_HELIUM_SERVICES" desc="Service Status">
+ Component updates are disabled. See Helium services in settings.
+ </message>
<message name="IDS_COMPONENTS_UNKNOWN" desc="Service Status">
Unknown
</message>
--- a/chrome/browser/ui/webui/components/components_handler.cc
+++ b/chrome/browser/ui/webui/components/components_handler.cc
@@ -12,8 +12,12 @@
#include "base/notreached.h"
#include "base/values.h"
#include "build/build_config.h"
+#include "chrome/browser/profiles/profile.h"
#include "chrome/grit/generated_resources.h"
+#include "components/helium_services/helium_services_helpers.h"
+#include "components/prefs/pref_service.h"
#include "components/update_client/crx_update_item.h"
+#include "content/public/browser/web_contents.h"
#include "ui/base/l10n/l10n_util.h"
ComponentsHandler::ComponentsHandler(
@@ -82,6 +86,20 @@ void ComponentsHandler::OnEvent(const up
std::u16string ComponentsHandler::ServiceStatusToString(
update_client::ComponentState state) {
+
+ if (state == update_client::ComponentState::kUpdateError) {
+ Profile* profile = Profile::FromBrowserContext(
+ web_ui()->GetWebContents()->GetBrowserContext());
+
+ if (profile) {
+ PrefService* prefs = profile->GetPrefs();
+ if (prefs && !helium::ShouldAccessComponentUpdateService(*prefs)) {
+ return l10n_util::GetStringUTF16(
+ IDS_COMPONENTS_SVC_STATUS_ERROR_HELIUM_SERVICES);
+ }
+ }
+ }
+
switch (state) {
case update_client::ComponentState::kNew:
return l10n_util::GetStringUTF16(IDS_COMPONENTS_SVC_STATUS_NEW);
--- a/chrome/browser/ui/webui/components/components_handler.h
+++ b/chrome/browser/ui/webui/components/components_handler.h
@@ -40,7 +40,7 @@ class ComponentsHandler : public content
void OnEvent(const update_client::CrxUpdateItem& item) override;
private:
- static std::u16string ServiceStatusToString(
+ std::u16string ServiceStatusToString(
update_client::ComponentState state);
base::Value::List LoadComponents();

View File

@@ -532,7 +532,7 @@
--- a/chrome/app/settings_strings.grdp
+++ b/chrome/app/settings_strings.grdp
@@ -1953,6 +1953,12 @@
@@ -1956,6 +1956,12 @@
<message name="IDS_SETTINGS_HELIUM_SCHEMA_IGNORE" desc="Checkbox label to ignore any future services change alerts">
Don't notify me again
</message>
@@ -601,7 +601,7 @@
<template is="dom-if" if="[[changes_.length]]">
<div id="changelog-notice">
<div id="changelog-title">$i18n{heliumSchemaUpdatedTitle}</div>
@@ -54,6 +86,7 @@
@@ -57,6 +89,7 @@
<cr-collapse id="servicesCollapse" opened="[[prefs.helium.services.enabled.value]]">
</cr-collapse>
</div>

View File

@@ -187,7 +187,7 @@
registry->RegisterBooleanPref(prefs::kHeliumServicesConsented, false);
--- a/chrome/browser/resources/settings/privacy_page/services_page.html
+++ b/chrome/browser/resources/settings/privacy_page/services_page.html
@@ -84,6 +84,11 @@
@@ -87,6 +87,11 @@
</settings-toggle-button>
<div class="cr-col">
<cr-collapse id="servicesCollapse" opened="[[prefs.helium.services.enabled.value]]">
@@ -201,8 +201,8 @@
</template>
--- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -2128,6 +2128,10 @@ void AddPrivacyStrings(content::WebUIDat
{"heliumSchemaUpdatedTitle", IDS_SETTINGS_HELIUM_SCHEMA_NOTICE_TITLE},
@@ -2130,6 +2130,10 @@ void AddPrivacyStrings(content::WebUIDat
IDS_SETTINGS_HELIUM_SCHEMA_NOTICE_DESCRIPTION},
{"heliumGotIt", IDS_SETTINGS_GOT_IT},
{"heliumSchemaIgnore", IDS_SETTINGS_HELIUM_SCHEMA_IGNORE},
+ {"heliumExtProxyToggle",
@@ -214,7 +214,7 @@
IDS_SETTINGS_HELIUM_SERVICES_OVERRIDE_DESCRIPTION},
--- a/chrome/app/settings_strings.grdp
+++ b/chrome/app/settings_strings.grdp
@@ -1981,6 +1981,12 @@
@@ -1984,6 +1984,12 @@
<message name="IDS_SETTINGS_HELIUM_SERVICES_TOGGLE_DESCRIPTION" desc="Description of the toggle for enabling/disabling of all Helium services">
When enabled, Helium will be able to connect to anonymous web services to provide additional functionality. When disabled, additional features will not work.
</message>

View File

@@ -128,7 +128,7 @@
registry->RegisterBooleanPref(prefs::kHeliumServicesConsented, false);
--- a/chrome/browser/resources/settings/privacy_page/services_page.html
+++ b/chrome/browser/resources/settings/privacy_page/services_page.html
@@ -94,6 +94,13 @@
@@ -97,6 +97,13 @@
label="$i18n{heliumBangsToggle}"
sub-label="$i18n{heliumBangsToggleDescription}">
</settings-toggle-button>
@@ -154,7 +154,7 @@
</if>
</if>
<if expr="is_chromeos">
@@ -1993,6 +1996,12 @@
@@ -1996,6 +1999,12 @@
<message name="IDS_SETTINGS_HELIUM_SERVICES_BANGS_TOGGLE_DESCRIPTION" desc="Description of the toggle for enabling/disabling of downloading bangs">
Helium will fetch a list of bangs that help you browse the Internet faster, such as !w or !gh. When disabled, bangs will not work.
</message>
@@ -178,7 +178,7 @@
#endif
#endif // !BUILDFLAG(IS_CHROMEOS)
#if BUILDFLAG(IS_CHROMEOS)
@@ -2135,6 +2135,9 @@ void AddPrivacyStrings(content::WebUIDat
@@ -2137,6 +2137,9 @@ void AddPrivacyStrings(content::WebUIDat
{"heliumBangsToggle", IDS_SETTINGS_HELIUM_SERVICES_BANGS_TOGGLE},
{"heliumBangsToggleDescription",
IDS_SETTINGS_HELIUM_SERVICES_BANGS_TOGGLE_DESCRIPTION},

View File

@@ -19,15 +19,6 @@
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
if (url_source_override_.is_valid()) {
return {GURL(url_source_override_)};
@@ -123,7 +125,7 @@ bool ConfiguratorImpl::EnabledDeltas() c
bool ConfiguratorImpl::EnabledComponentUpdates() const {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
- return true;
+ return false;
}
bool ConfiguratorImpl::EnabledBackgroundDownloader() const {
@@ -133,7 +135,7 @@ bool ConfiguratorImpl::EnabledBackground
bool ConfiguratorImpl::EnabledCupSigning() const {

View File

@@ -16,7 +16,7 @@
#include "components/safe_browsing/core/common/features.h"
#include "components/safe_browsing/core/common/hashprefix_realtime/hash_realtime_utils.h"
#include "components/saved_tab_groups/public/features.h"
@@ -2665,14 +2663,9 @@ void AddSearchStrings(content::WebUIData
@@ -2667,14 +2665,9 @@ void AddSearchStrings(content::WebUIData
html_source->AddString("searchExplanationLearnMoreURL",
chrome::kOmniboxLearnMoreURL);

View File

@@ -1,6 +1,6 @@
--- a/chrome/app/settings_strings.grdp
+++ b/chrome/app/settings_strings.grdp
@@ -1941,6 +1941,37 @@
@@ -1941,6 +1941,40 @@
<message name="IDS_SETTINGS_SECURITY_DESCRIPTION" desc="Description of the controls available on the security settings page">
Safe Browsing (protection from dangerous sites) and other security settings
</message>
@@ -13,6 +13,9 @@
+ <message name="IDS_SETTINGS_HELIUM_SCHEMA_NOTICE_TITLE" desc="Title of the alert shown when Helium services have a change in behavior">
+ Updates to Helium services:
+ </message>
+ <message name="IDS_SETTINGS_HELIUM_SCHEMA_NOTICE_DESCRIPTION" desc="Description of the alert shown when Helium services have a change in behavior">
+ These changes are not active until you dismiss this notice.
+ </message>
+ <message name="IDS_SETTINGS_HELIUM_SCHEMA_IGNORE" desc="Checkbox label to ignore any future services change alerts">
+ Don't notify me again
+ </message>
@@ -40,7 +43,7 @@
Google Advanced Protection Program
--- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -2117,6 +2117,21 @@ void AddPrivacyStrings(content::WebUIDat
@@ -2117,6 +2117,23 @@ void AddPrivacyStrings(content::WebUIDat
{"siteSettingsSublabel", IDS_SETTINGS_PERMISSIONS_DESCRIPTION},
{"securityPageTitle", IDS_SETTINGS_SECURITY},
{"securityPageDescription", IDS_SETTINGS_SECURITY_DESCRIPTION},
@@ -50,6 +53,8 @@
+ {"heliumServicesToggleDescription",
+ IDS_SETTINGS_HELIUM_SERVICES_TOGGLE_DESCRIPTION},
+ {"heliumSchemaUpdatedTitle", IDS_SETTINGS_HELIUM_SCHEMA_NOTICE_TITLE},
+ {"heliumSchemaUpdatedDescription",
+ IDS_SETTINGS_HELIUM_SCHEMA_NOTICE_DESCRIPTION},
+ {"heliumGotIt", IDS_SETTINGS_GOT_IT},
+ {"heliumSchemaIgnore", IDS_SETTINGS_HELIUM_SCHEMA_IGNORE},
+ {"heliumOriginOverride", IDS_SETTINGS_HELIUM_SERVICES_OVERRIDE},
@@ -170,7 +175,7 @@
}
--- /dev/null
+++ b/chrome/browser/resources/settings/privacy_page/services_page.html
@@ -0,0 +1,86 @@
@@ -0,0 +1,89 @@
+<style include="cr-shared-style settings-shared">
+ .label-wrapper {
+ padding: var(--cr-section-vertical-padding) 0;
@@ -210,6 +215,9 @@
+ <li>[[change]]</li>
+ </template>
+ </ul>
+ <div id="changelog-description">
+ $i18n{heliumSchemaUpdatedDescription}
+ </div>
+ <div id="changelog-notice-actions">
+ <cr-button on-click="onAcknowledgedChangelog_">$i18n{heliumGotIt}</cr-button>
+ <cr-checkbox id="checkbox" checked="{{ignoreChecked_}}">
@@ -661,7 +669,7 @@
+#endif // CHROME_BROWSER_UI_WEBUI_SETTINGS_SERVICES_SCHEMA_HANDLER_H_
--- /dev/null
+++ b/components/helium_services/schema.cc
@@ -0,0 +1,36 @@
@@ -0,0 +1,40 @@
+// Copyright 2025 The Helium Authors
+// You can use, redistribute, and/or modify this source code under
+// the terms of the GPL-3.0 license that can be found in the LICENSE file.
@@ -691,7 +699,11 @@
+ServicesChangelog& GetChangelog() {
+ static constexpr auto kHeliumSchemaChangelog =
+ base::MakeFixedFlatMap<int, std::string_view>({
+ {1, "TBA ____________________"}
+ {
+ 1,
+ "Automatic component updates are now available. They're managed by the same toggle that enables automatic browser updates.\n"
+ "From now on, you'll be notified about major changes to Helium services. Even though these notifications are extremely rare, you can choose to ignore them and accept all future changes automatically."
+ }
+ });
+
+ return kHeliumSchemaChangelog;

View File

@@ -217,10 +217,10 @@
if ( bin.assetSourceRegistry instanceof Object ) {
--- a/chrome/app/settings_strings.grdp
+++ b/chrome/app/settings_strings.grdp
@@ -2008,6 +2008,12 @@
<message name="IDS_SETTINGS_HELIUM_SERVICES_UPDATE_DESCRIPTION" desc="Description of the toggle for automatic update downloads">
Helium will automatically download and install browser updates as they become available. We recommend keeping this setting enabled to ensure you get the latest security patches and features.
</message>
@@ -2018,6 +2018,12 @@
Helium will automatically download and install browser and component updates as they become available. We recommend keeping this setting enabled to ensure you get the latest features and security updates. Automatic core browser updates are not available on this platform yet, but component updates are. Please use external software to keep Helium up to date.
</message>
</if>
+ <message name="IDS_SETTINGS_HELIUM_SERVICES_UBO" desc="Description of the toggle for uBO filter lists">
+ Allow downloading filter lists for uBlock Origin
+ </message>
@@ -232,10 +232,10 @@
</message>
--- a/chrome/browser/resources/settings/privacy_page/services_page.html
+++ b/chrome/browser/resources/settings/privacy_page/services_page.html
@@ -108,6 +108,11 @@
sub-label="$i18n{heliumUpdatesToggleDescription}">
</settings-toggle-button>
</if>
@@ -109,6 +109,11 @@
label="$i18n{heliumUpdatesToggle}"
sub-label="$i18n{heliumUpdatesToggleDescription}">
</settings-toggle-button>
+ <settings-toggle-button id="filterlistToggleButton"
+ pref="{{prefs.helium.services.ublock_assets}}"
+ label="$i18n{heliumUboToggle}"
@@ -246,7 +246,7 @@
</template>
--- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -2142,6 +2142,10 @@ void AddPrivacyStrings(content::WebUIDat
@@ -2144,6 +2144,10 @@ void AddPrivacyStrings(content::WebUIDat
IDS_SETTINGS_HELIUM_SERVICES_UPDATE},
{"heliumUpdatesToggleDescription",
IDS_SETTINGS_HELIUM_SERVICES_UPDATE_DESCRIPTION},

View File

@@ -10,7 +10,7 @@
<message name="IDS_SETTINGS_ENABLE_DO_NOT_TRACK_DIALOG_LEARN_MORE_ACCESSIBILITY_LABEL" desc="The accessibility label for a link to learn more about Do Not Track">
Learn more about Do Not Track
</message>
@@ -3213,6 +3216,9 @@
@@ -3223,6 +3226,9 @@
<message name="IDS_SETTINGS_TRACKING_PROTECTION_SITES_ALLOWED_COOKIES_DESCRIPTION" desc="Description of the section on the Tracking Protection settings page that lets users manage which sites are allowed to use third-party cookies. Explains how to use a wildcard to create an exception for an entire domain.">
Affects the sites listed here. Inserting [*.] before a domain name creates an exception for the entire domain. For example, adding [*.]google.com means that third-party cookies can also be active for mail.google.com, because its part of google.com.
</message>
@@ -31,7 +31,7 @@
{"doNotTrackDialogLearnMoreA11yLabel",
IDS_SETTINGS_ENABLE_DO_NOT_TRACK_DIALOG_LEARN_MORE_ACCESSIBILITY_LABEL},
// TODO(crbug.com/40122957): This string is no longer used. Remove.
@@ -2832,7 +2832,7 @@ void AddSiteSettingsStrings(content::Web
@@ -2834,7 +2834,7 @@ void AddSiteSettingsStrings(content::Web
{"trackingProtectionSitesAllowedCookiesTitle",
IDS_SETTINGS_TRACKING_PROTECTION_SITES_ALLOWED_COOKIES_TITLE},
{"trackingProtectionSitesAllowedCookiesDescription",

View File

@@ -517,7 +517,7 @@
// The container (and extensions-menu button) should not be visible if we have
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -10466,6 +10466,9 @@ Keep your key file in a safe place. You
@@ -10469,6 +10469,9 @@ Keep your key file in a safe place. You
<message name="IDS_ACCNAME_FIND" desc="The accessible name for the find button.">
Find
</message>

View File

@@ -87,7 +87,7 @@
};
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -13441,6 +13441,9 @@ Check your passwords anytime in <ph name
@@ -13444,6 +13444,9 @@ Check your passwords anytime in <ph name
<message name="IDS_EXTENSIONS_INSTALL_LOCATION_SHARED_MODULE" desc="The text explaining the the installation of the extension was because of extensions that depend on this shared module">
Installed because of dependent extension(s).
</message>

View File

@@ -191,6 +191,7 @@ helium/core/webrtc-default-handling-policy.patch
helium/core/browser-window-context-menu.patch
helium/core/disable-ntp-footer.patch
helium/core/tab-cycling-mru.patch
helium/core/component-updates.patch
helium/settings/settings-page-icons.patch
helium/settings/move-search-suggest.patch