diff --git a/chrome/app/shared_settings_strings.grdp b/chrome/app/shared_settings_strings.grdp
index 9acf01d1fd8d2..78e9327693978 100644
--- a/chrome/app/shared_settings_strings.grdp
+++ b/chrome/app/shared_settings_strings.grdp
@@ -8,6 +8,9 @@
Click to navigate away from $1Bluetooth subpage.
+
+ Learn more about: $1Payment methods
+
diff --git a/chrome/app/shared_settings_strings_grdp/IDS_SETTINGS_SUBPAGE_LEARN_MORE_ARIA_LABEL.png.sha1 b/chrome/app/shared_settings_strings_grdp/IDS_SETTINGS_SUBPAGE_LEARN_MORE_ARIA_LABEL.png.sha1
new file mode 100644
index 0000000000000..7ed19b6b706da
--- /dev/null
+++ b/chrome/app/shared_settings_strings_grdp/IDS_SETTINGS_SUBPAGE_LEARN_MORE_ARIA_LABEL.png.sha1
@@ -0,0 +1 @@
+390accd115797c40240451615490104437865414
\ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_subpage.html b/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_subpage.html
index 076bba9134f34..d2300840f6976 100644
--- a/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_subpage.html
+++ b/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_subpage.html
@@ -93,7 +93,7 @@ [[pageTitle]]
+ aria-label="[[getLearnMoreAriaLabel_(pageTitle)]]" on-click="onHelpClick_">
diff --git a/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_subpage.ts b/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_subpage.ts
index f43e798634199..92661e04f85fe 100644
--- a/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_subpage.ts
+++ b/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_subpage.ts
@@ -282,6 +282,10 @@ export class OsSettingsSubpageElement extends OsSettingsSubpageElementBase {
return this.i18n('subpageBackButtonAriaRoleDescription', this.pageTitle);
}
+ private getLearnMoreAriaLabel_() {
+ return this.i18n('subpageLearnMoreAriaLabel', this.pageTitle);
+ }
+
// Override FindShortcutMixin methods.
override handleFindShortcut(modalContextOpen: boolean) {
if (modalContextOpen) {
diff --git a/chrome/browser/resources/settings/settings_page/settings_subpage.html b/chrome/browser/resources/settings/settings_page/settings_subpage.html
index 1453218ab0038..0987c3ac03fd2 100644
--- a/chrome/browser/resources/settings/settings_page/settings_subpage.html
+++ b/chrome/browser/resources/settings/settings_page/settings_subpage.html
@@ -93,7 +93,7 @@ [[pageTitle]]
+ aria-label="[[getLearnMoreAriaLabel_(pageTitle)]]" on-click="onHelpClick_">
diff --git a/chrome/browser/resources/settings/settings_page/settings_subpage.ts b/chrome/browser/resources/settings/settings_page/settings_subpage.ts
index 4a0fa74de3948..c37893f2d7464 100644
--- a/chrome/browser/resources/settings/settings_page/settings_subpage.ts
+++ b/chrome/browser/resources/settings/settings_page/settings_subpage.ts
@@ -292,6 +292,10 @@ export class SettingsSubpageElement extends SettingsSubpageElementBase {
return this.i18n('subpageBackButtonAriaRoleDescription', this.pageTitle);
}
+ private getLearnMoreAriaLabel_() {
+ return this.i18n('subpageLearnMoreAriaLabel', this.pageTitle);
+ }
+
// Override FindShortcutMixin methods.
override handleFindShortcut(modalContextOpen: boolean) {
if (modalContextOpen) {
diff --git a/chrome/browser/ui/webui/settings/ash/main_section.cc b/chrome/browser/ui/webui/settings/ash/main_section.cc
index 1a48f75d0451a..bba8437d1483a 100644
--- a/chrome/browser/ui/webui/settings/ash/main_section.cc
+++ b/chrome/browser/ui/webui/settings/ash/main_section.cc
@@ -156,6 +156,7 @@ void MainSection::AddLoadTimeData(content::WebUIDataSource* html_source) {
IDS_SETTINGS_SUBPAGE_BACK_BUTTON_ARIA_LABEL},
{"subpageBackButtonAriaRoleDescription",
IDS_SETTINGS_SUBPAGE_BACK_BUTTON_ARIA_ROLE_DESCRIPTION},
+ {"subpageLearnMoreAriaLabel", IDS_SETTINGS_SUBPAGE_LEARN_MORE_ARIA_LABEL},
{"notValidWebAddress", IDS_SETTINGS_NOT_VALID_WEB_ADDRESS},
{"notValidWebAddressForContentType",
IDS_SETTINGS_NOT_VALID_WEB_ADDRESS_FOR_CONTENT_TYPE},
diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
index bd6fa7fd95a54..1ef8cbda69e1e 100644
--- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -200,6 +200,7 @@ void AddCommonStrings(content::WebUIDataSource* html_source, Profile* profile) {
{"subpageBackButtonAriaLabel", IDS_SETTINGS_SUBPAGE_BACK_BUTTON_ARIA_LABEL},
{"subpageBackButtonAriaRoleDescription",
IDS_SETTINGS_SUBPAGE_BACK_BUTTON_ARIA_ROLE_DESCRIPTION},
+ {"subpageLearnMoreAriaLabel", IDS_SETTINGS_SUBPAGE_LEARN_MORE_ARIA_LABEL},
{"notValid", IDS_SETTINGS_NOT_VALID},
{"notValidWebAddress", IDS_SETTINGS_NOT_VALID_WEB_ADDRESS},
{"notValidWebAddressForContentType",
diff --git a/chrome/test/data/webui/settings/settings_subpage_test.ts b/chrome/test/data/webui/settings/settings_subpage_test.ts
index f6905446d4eae..bda1dc3a6fa44 100644
--- a/chrome/test/data/webui/settings/settings_subpage_test.ts
+++ b/chrome/test/data/webui/settings/settings_subpage_test.ts
@@ -82,6 +82,12 @@ suite('SettingsSubpage', function() {
assertTrue(!!icon);
// Check that the icon is forced to always use 'ltr' mode.
assertEquals('ltr', icon!.getAttribute('dir'));
+ // Check that the icon has proper a11y label.
+ subpage.pageTitle = 'Title';
+ flush();
+ assertEquals(
+ subpage.i18n('subpageLearnMoreAriaLabel', subpage.pageTitle),
+ icon.ariaLabel);
});
test('favicon', function() {