1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/ui/webui/settings/settings_localized_strings_provider.h"
6
7 #include <string>
8
9 #include "base/command_line.h"
10 #include "base/feature_list.h"
11 #include "base/i18n/number_formatting.h"
12 #include "base/strings/string_number_conversions.h"
13 #include "base/strings/utf_string_conversions.h"
14 #include "base/win/windows_version.h"
15 #include "build/branding_buildflags.h"
16 #include "build/build_config.h"
17 #include "build/buildflag.h"
18 #include "chrome/browser/autofill/personal_data_manager_factory.h"
19 #include "chrome/browser/browser_process.h"
20 #include "chrome/browser/browser_process_platform_part.h"
21 #include "chrome/browser/chromeos/profiles/profile_helper.h"
22 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
23 #include "chrome/browser/profiles/profile.h"
24 #include "chrome/browser/profiles/profile_shortcut_manager.h"
25 #include "chrome/browser/signin/account_consistency_mode_manager.h"
26 #include "chrome/browser/sync/profile_sync_service_factory.h"
27 #include "chrome/browser/ui/passwords/manage_passwords_view_utils.h"
28 #include "chrome/browser/ui/webui/management_ui.h"
29 #include "chrome/browser/ui/webui/policy_indicator_localized_strings_provider.h"
30 #include "chrome/browser/ui/webui/settings/shared_settings_localized_strings_provider.h"
31 #include "chrome/browser/ui/webui/webui_util.h"
32 #include "chrome/common/chrome_features.h"
33 #include "chrome/common/chrome_switches.h"
34 #include "chrome/common/url_constants.h"
35 #include "chrome/grit/chromium_strings.h"
36 #include "chrome/grit/generated_resources.h"
37 #include "chrome/grit/locale_settings.h"
38 #include "components/autofill/content/browser/content_autofill_driver.h"
39 #include "components/autofill/content/browser/content_autofill_driver_factory.h"
40 #include "components/autofill/core/browser/autofill_experiments.h"
41 #include "components/autofill/core/browser/autofill_manager.h"
42 #include "components/autofill/core/browser/payments/credit_card_access_manager.h"
43 #include "components/autofill/core/browser/payments/payments_service_url.h"
44 #include "components/autofill/core/browser/payments/payments_util.h"
45 #include "components/autofill/core/browser/personal_data_manager.h"
46 #include "components/autofill/core/browser/sync_utils.h"
47 #include "components/autofill/core/common/autofill_constants.h"
48 #include "components/autofill/core/common/autofill_features.h"
49 #include "components/autofill/core/common/autofill_payments_features.h"
50 #include "components/browsing_data/core/features.h"
51 #include "components/content_settings/core/common/features.h"
52 #include "components/dom_distiller/core/dom_distiller_features.h"
53 #include "components/google/core/common/google_util.h"
54 #include "components/omnibox/common/omnibox_features.h"
55 #include "components/password_manager/core/browser/leak_detection_dialog_utils.h"
56 #include "components/password_manager/core/browser/manage_passwords_referrer.h"
57 #include "components/password_manager/core/common/password_manager_features.h"
58 #include "components/safe_browsing/core/common/safe_browsing_prefs.h"
59 #include "components/signin/public/base/signin_buildflags.h"
60 #include "components/strings/grit/components_strings.h"
61 #include "components/subresource_filter/core/browser/subresource_filter_features.h"
62 #include "components/sync/driver/sync_service.h"
63 #include "components/sync/driver/sync_service_utils.h"
64 #include "components/sync/driver/sync_user_settings.h"
65 #include "components/zoom/page_zoom_constants.h"
66 #include "content/public/browser/web_contents.h"
67 #include "content/public/browser/web_ui_data_source.h"
68 #include "content/public/common/content_features.h"
69 #include "content/public/common/content_switches.h"
70 #include "device/fido/features.h"
71 #include "media/base/media_switches.h"
72 #include "net/base/url_util.h"
73 #include "services/device/public/cpp/device_features.h"
74 #include "third_party/blink/public/common/features.h"
75 #include "ui/accessibility/accessibility_switches.h"
76 #include "ui/base/accelerators/accelerator.h"
77 #include "ui/base/l10n/l10n_util.h"
78 #include "ui/base/webui/web_ui_util.h"
79 #include "ui/strings/grit/ui_strings.h"
80
81 #if defined(OS_CHROMEOS)
82 #include "ash/public/cpp/ash_switches.h"
83 #include "base/system/sys_info.h"
84 #include "chrome/browser/chromeos/account_manager/account_manager_util.h"
85 #include "chrome/browser/chromeos/assistant/assistant_util.h"
86 #include "chrome/browser/chromeos/kerberos/kerberos_credentials_manager.h"
87 #include "chrome/browser/chromeos/login/quick_unlock/quick_unlock_utils.h"
88 #include "chrome/browser/chromeos/ownership/owner_settings_service_chromeos.h"
89 #include "chrome/browser/chromeos/ownership/owner_settings_service_chromeos_factory.h"
90 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
91 #include "chrome/common/pref_names.h"
92 #include "chrome/common/webui_url_constants.h"
93 #include "chromeos/constants/chromeos_features.h"
94 #include "components/prefs/pref_service.h"
95 #include "components/user_manager/user_manager.h"
96 #include "ui/chromeos/devicetype_utils.h"
97 #else
98 #include "chrome/browser/ui/webui/settings/system_handler.h"
99 #endif
100
101 #if defined(OS_WIN)
102 #include "chrome/browser/safe_browsing/chrome_cleaner/srt_field_trial_win.h"
103 #include "device/fido/win/webauthn_api.h"
104
105 #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
106 #include "base/metrics/field_trial_params.h"
107 #include "base/strings/strcat.h"
108 #include "chrome/grit/chrome_unscaled_resources.h"
109 #include "ui/base/resource/resource_bundle.h"
110 #endif // BUILDFLAG(GOOGLE_CHROME_BRANDING)
111 #endif // defined(OS_WIN)
112
113 #if defined(USE_NSS_CERTS)
114 #include "chrome/browser/ui/webui/certificate_manager_localized_strings_provider.h"
115 #endif
116 namespace settings {
117 namespace {
118
119 #if defined(OS_CHROMEOS)
120 // Generates a Google Help URL which includes a "board type" parameter. Some
121 // help pages need to be adjusted depending on the type of CrOS device that is
122 // accessing the page.
GetHelpUrlWithBoard(const std::string & original_url)123 base::string16 GetHelpUrlWithBoard(const std::string& original_url) {
124 return base::ASCIIToUTF16(original_url +
125 "&b=" + base::SysInfo::GetLsbReleaseBoard());
126 }
127 #endif
128
AddCommonStrings(content::WebUIDataSource * html_source,Profile * profile)129 void AddCommonStrings(content::WebUIDataSource* html_source, Profile* profile) {
130 static constexpr webui::LocalizedString kLocalizedStrings[] = {
131 {"add", IDS_ADD},
132 {"advancedPageTitle", IDS_SETTINGS_ADVANCED},
133 {"back", IDS_ACCNAME_BACK},
134 {"basicPageTitle", IDS_SETTINGS_BASIC},
135 {"cancel", IDS_CANCEL},
136 {"clear", IDS_SETTINGS_CLEAR},
137 {"close", IDS_CLOSE},
138 {"confirm", IDS_CONFIRM},
139 {"continue", IDS_SETTINGS_CONTINUE},
140 {"controlledByExtension", IDS_SETTINGS_CONTROLLED_BY_EXTENSION},
141 {"custom", IDS_SETTINGS_CUSTOM},
142 {"delete", IDS_SETTINGS_DELETE},
143 {"disable", IDS_DISABLE},
144 {"done", IDS_DONE},
145 {"edit", IDS_SETTINGS_EDIT},
146 {"extensionsLinkTooltip", IDS_SETTINGS_MENU_EXTENSIONS_LINK_TOOLTIP},
147 {"learnMore", IDS_LEARN_MORE},
148 {"menu", IDS_MENU},
149 {"menuButtonLabel", IDS_SETTINGS_MENU_BUTTON_LABEL},
150 {"moreActions", IDS_SETTINGS_MORE_ACTIONS},
151 {"ok", IDS_OK},
152 {"restart", IDS_SETTINGS_RESTART},
153 #if !defined(OS_CHROMEOS)
154 {"restartToApplyChanges", IDS_SETTINGS_RESTART_TO_APPLY_CHANGES},
155 #endif
156 {"retry", IDS_SETTINGS_RETRY},
157 {"save", IDS_SAVE},
158 {"searchResultBubbleText", IDS_SEARCH_RESULT_BUBBLE_TEXT},
159 {"searchResultsBubbleText", IDS_SEARCH_RESULTS_BUBBLE_TEXT},
160 {"sentenceEnd", IDS_SENTENCE_END},
161 {"settings", IDS_SETTINGS_SETTINGS},
162 {"settingsAltPageTitle", IDS_SETTINGS_ALT_PAGE_TITLE},
163 {"subpageArrowRoleDescription", IDS_SETTINGS_SUBPAGE_BUTTON},
164 {"notValid", IDS_SETTINGS_NOT_VALID},
165 {"notValidWebAddress", IDS_SETTINGS_NOT_VALID_WEB_ADDRESS},
166 {"notValidWebAddressForContentType",
167 IDS_SETTINGS_NOT_VALID_WEB_ADDRESS_FOR_CONTENT_TYPE},
168
169 // Common font related strings shown in a11y and appearance sections.
170 {"quickBrownFox", IDS_SETTINGS_QUICK_BROWN_FOX},
171 {"verySmall", IDS_SETTINGS_VERY_SMALL_FONT},
172 {"small", IDS_SETTINGS_SMALL_FONT},
173 {"medium", IDS_SETTINGS_MEDIUM_FONT},
174 {"large", IDS_SETTINGS_LARGE_FONT},
175 {"veryLarge", IDS_SETTINGS_VERY_LARGE_FONT},
176 };
177 AddLocalizedStringsBulk(html_source, kLocalizedStrings);
178
179 html_source->AddBoolean(
180 "isGuest",
181 #if defined(OS_CHROMEOS)
182 user_manager::UserManager::Get()->IsLoggedInAsGuest() ||
183 user_manager::UserManager::Get()->IsLoggedInAsPublicAccount());
184 #else
185 profile->IsOffTheRecord());
186 #endif
187
188 html_source->AddBoolean("isSupervised", profile->IsSupervised());
189 }
190
AddA11yStrings(content::WebUIDataSource * html_source)191 void AddA11yStrings(content::WebUIDataSource* html_source) {
192 static constexpr webui::LocalizedString kLocalizedStrings[] = {
193 {"moreFeaturesLink", IDS_SETTINGS_MORE_FEATURES_LINK},
194 {"a11yPageTitle", IDS_SETTINGS_ACCESSIBILITY},
195 {"a11yWebStore", IDS_SETTINGS_ACCESSIBILITY_WEB_STORE},
196 {"moreFeaturesLinkDescription",
197 IDS_SETTINGS_MORE_FEATURES_LINK_DESCRIPTION},
198 {"accessibleImageLabelsTitle", IDS_SETTINGS_ACCESSIBLE_IMAGE_LABELS_TITLE},
199 {"accessibleImageLabelsSubtitle",
200 IDS_SETTINGS_ACCESSIBLE_IMAGE_LABELS_SUBTITLE},
201 {"settingsSliderRoleDescription",
202 IDS_SETTINGS_SLIDER_MIN_MAX_ARIA_ROLE_DESCRIPTION},
203 {"captionsEnableLiveCaptionTitle",
204 IDS_SETTINGS_CAPTIONS_ENABLE_LIVE_CAPTION_TITLE},
205 {"captionsEnableLiveCaptionSubtitle",
206 IDS_SETTINGS_CAPTIONS_ENABLE_LIVE_CAPTION_SUBTITLE},
207 #if defined(OS_CHROMEOS)
208 {"manageAccessibilityFeatures",
209 IDS_SETTINGS_ACCESSIBILITY_MANAGE_ACCESSIBILITY_FEATURES},
210 {"androidAppsManageAppLinks", IDS_SETTINGS_ANDROID_APPS_MANAGE_APP_LINKS},
211 #endif
212 };
213 AddLocalizedStringsBulk(html_source, kLocalizedStrings);
214
215 #if defined(OS_WIN)
216 html_source->AddBoolean("isWindows10OrNewer",
217 base::win::GetVersion() >= base::win::Version::WIN10);
218 #endif
219 html_source->AddBoolean(
220 "showExperimentalA11yLabels",
221 base::FeatureList::IsEnabled(features::kExperimentalAccessibilityLabels));
222
223 html_source->AddBoolean("enableLiveCaption",
224 base::FeatureList::IsEnabled(media::kLiveCaption));
225
226 AddCaptionSubpageStrings(html_source);
227 }
228
AddAboutStrings(content::WebUIDataSource * html_source,Profile * profile)229 void AddAboutStrings(content::WebUIDataSource* html_source, Profile* profile) {
230 // Top level About Page strings.
231 static constexpr webui::LocalizedString kLocalizedStrings[] = {
232 {"aboutProductLogoAlt", IDS_SHORT_PRODUCT_LOGO_ALT_TEXT},
233 #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
234 {"aboutReportAnIssue", IDS_SETTINGS_ABOUT_PAGE_REPORT_AN_ISSUE},
235 #endif
236 {"aboutRelaunch", IDS_SETTINGS_ABOUT_PAGE_RELAUNCH},
237 {"aboutUpgradeCheckStarted", IDS_SETTINGS_ABOUT_UPGRADE_CHECK_STARTED},
238 {"aboutUpgradeRelaunch", IDS_SETTINGS_UPGRADE_SUCCESSFUL_RELAUNCH},
239 {"aboutUpgradeUpdating", IDS_SETTINGS_UPGRADE_UPDATING},
240 {"aboutUpgradeUpdatingPercent", IDS_SETTINGS_UPGRADE_UPDATING_PERCENT},
241 {"aboutGetHelpUsingChrome", IDS_SETTINGS_GET_HELP_USING_CHROME},
242 {"aboutPageTitle", IDS_SETTINGS_ABOUT_PROGRAM},
243 {"aboutProductTitle", IDS_PRODUCT_NAME},
244 #if defined(OS_CHROMEOS)
245 {"aboutUpdateOsSettingsLink",
246 IDS_SETTINGS_ABOUT_SEE_OS_SETTINGS_FOR_UPDATE_MESSAGE},
247 #endif
248 };
249 AddLocalizedStringsBulk(html_source, kLocalizedStrings);
250
251 html_source->AddString("managementPage",
252 ManagementUI::GetManagementPageSubtitle(profile));
253 html_source->AddString(
254 "aboutUpgradeUpToDate",
255 #if defined(OS_CHROMEOS)
256 ui::SubstituteChromeOSDeviceType(IDS_SETTINGS_UPGRADE_UP_TO_DATE));
257 #else
258 l10n_util::GetStringUTF16(IDS_SETTINGS_UPGRADE_UP_TO_DATE));
259 #endif
260 }
261
AddAppearanceStrings(content::WebUIDataSource * html_source,Profile * profile)262 void AddAppearanceStrings(content::WebUIDataSource* html_source,
263 Profile* profile) {
264 static constexpr webui::LocalizedString kLocalizedStrings[] = {
265 {"appearancePageTitle", IDS_SETTINGS_APPEARANCE},
266 {"customWebAddress", IDS_SETTINGS_CUSTOM_WEB_ADDRESS},
267 {"enterCustomWebAddress", IDS_SETTINGS_ENTER_CUSTOM_WEB_ADDRESS},
268 {"homeButtonDisabled", IDS_SETTINGS_HOME_BUTTON_DISABLED},
269 {"themes", IDS_SETTINGS_THEMES},
270 {"chromeColors", IDS_SETTINGS_CHROME_COLORS},
271 {"showHomeButton", IDS_SETTINGS_SHOW_HOME_BUTTON},
272 {"showBookmarksBar", IDS_SETTINGS_SHOW_BOOKMARKS_BAR},
273 {"homePageNtp", IDS_SETTINGS_HOME_PAGE_NTP},
274 {"changeHomePage", IDS_SETTINGS_CHANGE_HOME_PAGE},
275 {"themesGalleryUrl", IDS_THEMES_GALLERY_URL},
276 {"chooseFromWebStore", IDS_SETTINGS_WEB_STORE},
277 {"pageZoom", IDS_SETTINGS_PAGE_ZOOM_LABEL},
278 {"fontSize", IDS_SETTINGS_FONT_SIZE_LABEL},
279 {"customizeFonts", IDS_SETTINGS_CUSTOMIZE_FONTS},
280 {"fonts", IDS_SETTINGS_FONTS},
281 {"standardFont", IDS_SETTINGS_STANDARD_FONT_LABEL},
282 {"serifFont", IDS_SETTINGS_SERIF_FONT_LABEL},
283 {"sansSerifFont", IDS_SETTINGS_SANS_SERIF_FONT_LABEL},
284 {"fixedWidthFont", IDS_SETTINGS_FIXED_WIDTH_FONT_LABEL},
285 {"minimumFont", IDS_SETTINGS_MINIMUM_FONT_SIZE_LABEL},
286 {"tiny", IDS_SETTINGS_TINY_FONT_SIZE},
287 {"huge", IDS_SETTINGS_HUGE_FONT_SIZE},
288 #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
289 {"systemTheme", IDS_SETTINGS_SYSTEM_THEME},
290 {"useSystemTheme", IDS_SETTINGS_USE_SYSTEM_THEME},
291 {"classicTheme", IDS_SETTINGS_CLASSIC_THEME},
292 {"useClassicTheme", IDS_SETTINGS_USE_CLASSIC_THEME},
293 {"showWindowDecorations", IDS_SHOW_WINDOW_DECORATIONS},
294 #else
295 {"resetToDefaultTheme", IDS_SETTINGS_RESET_TO_DEFAULT_THEME},
296 #endif
297 #if defined(OS_MACOSX)
298 {"tabsToLinks", IDS_SETTINGS_TABS_TO_LINKS_PREF},
299 {"warnBeforeQuitting", IDS_SETTINGS_WARN_BEFORE_QUITTING_PREF},
300 #endif
301 {"readerMode", IDS_SETTINGS_READER_MODE},
302 {"readerModeDescription", IDS_SETTINGS_READER_MODE_DESCRIPTION},
303 };
304 AddLocalizedStringsBulk(html_source, kLocalizedStrings);
305
306 html_source->AddString("presetZoomFactors",
307 zoom::GetPresetZoomFactorsAsJSON());
308 html_source->AddBoolean("showReaderModeOption",
309 dom_distiller::OfferReaderModeInSettings());
310 }
311
AddClearBrowsingDataStrings(content::WebUIDataSource * html_source,Profile * profile)312 void AddClearBrowsingDataStrings(content::WebUIDataSource* html_source,
313 Profile* profile) {
314 static constexpr webui::LocalizedString kLocalizedStrings[] = {
315 {"clearTimeRange", IDS_SETTINGS_CLEAR_PERIOD_TITLE},
316 {"clearBrowsingDataWithSync", IDS_SETTINGS_CLEAR_BROWSING_DATA_WITH_SYNC},
317 {"clearBrowsingDataWithSyncError",
318 IDS_SETTINGS_CLEAR_BROWSING_DATA_WITH_SYNC_ERROR},
319 {"clearBrowsingDataWithSyncPassphraseError",
320 IDS_SETTINGS_CLEAR_BROWSING_DATA_WITH_SYNC_PASSPHRASE_ERROR},
321 {"clearBrowsingDataWithSyncPaused",
322 IDS_SETTINGS_CLEAR_BROWSING_DATA_WITH_SYNC_PAUSED},
323 {"clearBrowsingHistory", IDS_SETTINGS_CLEAR_BROWSING_HISTORY},
324 {"clearBrowsingHistorySummary",
325 IDS_SETTINGS_CLEAR_BROWSING_HISTORY_SUMMARY},
326 {"clearDownloadHistory", IDS_SETTINGS_CLEAR_DOWNLOAD_HISTORY},
327 {"clearCache", IDS_SETTINGS_CLEAR_CACHE},
328 {"clearCookies", IDS_SETTINGS_CLEAR_COOKIES},
329 {"clearCookiesSummary",
330 IDS_SETTINGS_CLEAR_COOKIES_AND_SITE_DATA_SUMMARY_BASIC},
331 {"clearCookiesSummarySignedIn",
332 IDS_SETTINGS_CLEAR_COOKIES_AND_SITE_DATA_SUMMARY_BASIC_WITH_EXCEPTION},
333 {"clearCookiesCounter", IDS_DEL_COOKIES_COUNTER},
334 {"clearCookiesFlash", IDS_SETTINGS_CLEAR_COOKIES_FLASH},
335 {"clearPasswords", IDS_SETTINGS_CLEAR_PASSWORDS},
336 {"clearFormData", IDS_SETTINGS_CLEAR_FORM_DATA},
337 {"clearHostedAppData", IDS_SETTINGS_CLEAR_HOSTED_APP_DATA},
338 {"clearPeriodHour", IDS_SETTINGS_CLEAR_PERIOD_HOUR},
339 {"clearPeriod24Hours", IDS_SETTINGS_CLEAR_PERIOD_24_HOURS},
340 {"clearPeriod7Days", IDS_SETTINGS_CLEAR_PERIOD_7_DAYS},
341 {"clearPeriod4Weeks", IDS_SETTINGS_CLEAR_PERIOD_FOUR_WEEKS},
342 {"clearPeriodEverything", IDS_SETTINGS_CLEAR_PERIOD_EVERYTHING},
343 {"historyDeletionDialogTitle",
344 IDS_CLEAR_BROWSING_DATA_HISTORY_NOTICE_TITLE},
345 {"historyDeletionDialogOK", IDS_CLEAR_BROWSING_DATA_HISTORY_NOTICE_OK},
346 {"installedAppsConfirm", IDS_SETTINGS_CLEAR_INSTALLED_APPS_DATA_CONFIRM},
347 {"installedAppsTitle", IDS_SETTINGS_CLEAR_INSTALLED_APPS_DATA_TITLE},
348 {"notificationWarning", IDS_SETTINGS_NOTIFICATION_WARNING},
349 };
350
351 html_source->AddString(
352 "clearBrowsingHistorySummarySignedIn",
353 l10n_util::GetStringFUTF16(
354 IDS_SETTINGS_CLEAR_BROWSING_HISTORY_SUMMARY_SIGNED_IN,
355 base::ASCIIToUTF16(chrome::kMyActivityUrlInClearBrowsingData)));
356 html_source->AddString(
357 "clearBrowsingHistorySummarySynced",
358 l10n_util::GetStringFUTF16(
359 IDS_SETTINGS_CLEAR_BROWSING_HISTORY_SUMMARY_SYNCED,
360 base::ASCIIToUTF16(chrome::kMyActivityUrlInClearBrowsingData)));
361 html_source->AddString(
362 "historyDeletionDialogBody",
363 l10n_util::GetStringFUTF16(
364 IDS_CLEAR_BROWSING_DATA_HISTORY_NOTICE,
365 l10n_util::GetStringUTF16(
366 IDS_SETTINGS_CLEAR_DATA_MYACTIVITY_URL_IN_DIALOG)));
367
368 AddLocalizedStringsBulk(html_source, kLocalizedStrings);
369 }
370
371 #if !defined(OS_CHROMEOS)
AddDefaultBrowserStrings(content::WebUIDataSource * html_source)372 void AddDefaultBrowserStrings(content::WebUIDataSource* html_source) {
373 static constexpr webui::LocalizedString kLocalizedStrings[] = {
374 {"defaultBrowser", IDS_SETTINGS_DEFAULT_BROWSER},
375 {"defaultBrowserDefault", IDS_SETTINGS_DEFAULT_BROWSER_DEFAULT},
376 {"defaultBrowserMakeDefault", IDS_SETTINGS_DEFAULT_BROWSER_MAKE_DEFAULT},
377 {"defaultBrowserMakeDefaultButton",
378 IDS_SETTINGS_DEFAULT_BROWSER_MAKE_DEFAULT_BUTTON},
379 {"defaultBrowserError", IDS_SETTINGS_DEFAULT_BROWSER_ERROR},
380 {"defaultBrowserSecondary", IDS_SETTINGS_DEFAULT_BROWSER_SECONDARY},
381 };
382 AddLocalizedStringsBulk(html_source, kLocalizedStrings);
383 }
384 #endif
385
AddDownloadsStrings(content::WebUIDataSource * html_source)386 void AddDownloadsStrings(content::WebUIDataSource* html_source) {
387 static constexpr webui::LocalizedString kLocalizedStrings[] = {
388 {"downloadsPageTitle", IDS_SETTINGS_DOWNLOADS},
389 {"downloadLocation", IDS_SETTINGS_DOWNLOAD_LOCATION},
390 {"changeDownloadLocation", IDS_SETTINGS_CHANGE_DOWNLOAD_LOCATION},
391 {"promptForDownload", IDS_SETTINGS_PROMPT_FOR_DOWNLOAD},
392 {"openFileTypesAutomatically",
393 IDS_SETTINGS_OPEN_FILE_TYPES_AUTOMATICALLY},
394 };
395 AddLocalizedStringsBulk(html_source, kLocalizedStrings);
396 }
397
398 #if defined(OS_WIN) && BUILDFLAG(GOOGLE_CHROME_BRANDING)
AddChromeCleanupStrings(content::WebUIDataSource * html_source)399 void AddChromeCleanupStrings(content::WebUIDataSource* html_source) {
400 const wchar_t kUnwantedSoftwareProtectionWhitePaperUrl[] =
401 L"https://www.google.ca/chrome/browser/privacy/"
402 "whitepaper.html#unwantedsoftware";
403
404 static constexpr webui::LocalizedString kLocalizedStrings[] = {
405 {"chromeCleanupPageTitle",
406 IDS_SETTINGS_RESET_CLEAN_UP_COMPUTER_PAGE_TITLE},
407 {"chromeCleanupDetailsExtensions",
408 IDS_SETTINGS_RESET_CLEANUP_DETAILS_EXTENSIONS},
409 {"chromeCleanupDetailsFilesAndPrograms",
410 IDS_SETTINGS_RESET_CLEANUP_DETAILS_FILES_AND_PROGRAMS},
411 {"chromeCleanupDetailsRegistryEntries",
412 IDS_SETTINGS_RESET_CLEANUP_DETAILS_REGISTRY_ENTRIES},
413 {"chromeCleanupExplanationCleanupError",
414 IDS_SETTINGS_RESET_CLEANUP_EXPLANATION_CLEANUP_ERROR},
415 {"chromeCleanupExplanationFindAndRemove",
416 IDS_SETTINGS_RESET_CLEANUP_EXPLANATION_FIND_AND_REMOVE},
417 {"chromeCleanupExplanationNoInternet",
418 IDS_SETTINGS_RESET_CLEANUP_EXPLANATION_NO_INTERNET_CONNECTION},
419 {"chromeCleanupExplanationPermissionsNeeded",
420 IDS_SETTINGS_RESET_CLEANUP_EXPLANATION_PERMISSIONS_NEEDED},
421 {"chromeCleanupExplanationRemove",
422 // Note: removal explanation should be the same as used in the prompt
423 // dialog. Reusing the string to ensure they will not diverge.
424 IDS_CHROME_CLEANUP_PROMPT_EXPLANATION},
425 {"chromeCleanupExplanationRemoving",
426 IDS_SETTINGS_RESET_CLEANUP_EXPLANATION_CURRENTLY_REMOVING},
427 {"chromeCleanupExplanationScanError",
428 IDS_SETTINGS_RESET_CLEANUP_EXPLANATION_SCAN_ERROR},
429 {"chromeCleanupFindButtonLable",
430 IDS_SETTINGS_RESET_CLEANUP_FIND_BUTTON_LABEL},
431 {"chromeCleanupLinkShowItems",
432 IDS_SETTINGS_RESET_CLEANUP_LINK_SHOW_FILES},
433 {"chromeCleanupRemoveButtonLabel",
434 IDS_SETTINGS_RESET_CLEANUP_REMOVE_BUTTON_LABEL},
435 {"chromeCleanupRestartButtonLabel",
436 IDS_SETTINGS_RESET_CLEANUP_RESTART_BUTTON_LABEL},
437 {"chromeCleanupTitleErrorCantRemove",
438 IDS_SETTINGS_RESET_CLEANUP_TITLE_ERROR_CANT_REMOVE},
439 {"chromeCleanupTitleErrorPermissions",
440 IDS_SETTINGS_RESET_CLEANUP_TITLE_ERROR_PERMISSIONS_NEEDED},
441 {"chromeCleanupTitleFindAndRemove",
442 IDS_SETTINGS_RESET_CLEANUP_TITLE_FIND_HARMFUL_SOFTWARE},
443 {"chromeCleanupTitleNoInternet",
444 IDS_SETTINGS_RESET_CLEANUP_TITLE_NO_INTERNET_CONNECTION},
445 {"chromeCleanupTitleNothingFound",
446 IDS_SETTINGS_RESET_CLEANUP_TITLE_NOTHING_FOUND},
447 {"chromeCleanupTitleRemove", IDS_SETTINGS_RESET_CLEANUP_TITLE_REMOVE},
448 {"chromeCleanupTitleRemoved", IDS_SETTINGS_RESET_CLEANUP_TITLE_DONE},
449 {"chromeCleanupTitleRemoving", IDS_SETTINGS_RESET_CLEANUP_TITLE_REMOVING},
450 {"chromeCleanupTitleRestart", IDS_SETTINGS_RESET_CLEANUP_TITLE_RESTART},
451 {"chromeCleanupTitleScanning", IDS_SETTINGS_RESET_CLEANUP_TITLE_SCANNING},
452 {"chromeCleanupTitleScanningFailed",
453 IDS_SETTINGS_RESET_CLEANUP_TITLE_ERROR_SCANNING_FAILED},
454 {"chromeCleanupTitleTryAgainButtonLabel",
455 IDS_SETTINGS_RESET_CLEANUP_TRY_AGAIN_BUTTON_LABEL},
456 {"chromeCleanupExplanationLogsPermissionPref",
457 IDS_SETTINGS_RESET_CLEANUP_LOGS_PERMISSION_PREF},
458 {"chromeCleanupTitleCleanupUnavailable",
459 IDS_SETTINGS_RESET_CLEANUP_TITLE_CLEANUP_UNAVAILABLE},
460 {"chromeCleanupExplanationCleanupUnavailable",
461 IDS_SETTINGS_RESET_CLEANUP_EXPLANATION_CLEANUP_UNAVAILABLE},
462 };
463
464 AddLocalizedStringsBulk(html_source, kLocalizedStrings);
465 const std::string cleanup_learn_more_url =
466 google_util::AppendGoogleLocaleParam(
467 GURL(chrome::kChromeCleanerLearnMoreURL),
468 g_browser_process->GetApplicationLocale())
469 .spec();
470 html_source->AddString("chromeCleanupLearnMoreUrl", cleanup_learn_more_url);
471
472 // The "powered by" footer contains an HTML fragment with the SVG logo of the
473 // partner. The logo is added directly to the DOM, rather than as an <img>
474 // src, to make sure that screen readers can find accessibility tags inside
475 // the SVG.
476 const std::string powered_by_element =
477 base::StrCat({"<span id='powered-by-logo'>",
478 ui::ResourceBundle::GetSharedInstance().GetRawDataResource(
479 IDR_CHROME_CLEANUP_PARTNER),
480 "</span>"});
481 const base::string16 powered_by_html =
482 l10n_util::GetStringFUTF16(IDS_SETTINGS_RESET_CLEANUP_FOOTER_POWERED_BY,
483 base::UTF8ToUTF16(powered_by_element));
484 html_source->AddString("chromeCleanupPoweredByHtml", powered_by_html);
485
486 const base::string16 cleanup_details_explanation =
487 l10n_util::GetStringFUTF16(IDS_SETTINGS_RESET_CLEANUP_DETAILS_EXPLANATION,
488 kUnwantedSoftwareProtectionWhitePaperUrl);
489 html_source->AddString("chromeCleanupDetailsExplanation",
490 cleanup_details_explanation);
491 }
492
AddIncompatibleApplicationsStrings(content::WebUIDataSource * html_source)493 void AddIncompatibleApplicationsStrings(content::WebUIDataSource* html_source) {
494 static constexpr webui::LocalizedString kLocalizedStrings[] = {
495 {"incompatibleApplicationsResetCardTitle",
496 IDS_SETTINGS_INCOMPATIBLE_APPLICATIONS_RESET_CARD_TITLE},
497 {"incompatibleApplicationsSubpageSubtitle",
498 IDS_SETTINGS_INCOMPATIBLE_APPLICATIONS_SUBPAGE_SUBTITLE},
499 {"incompatibleApplicationsSubpageSubtitleNoAdminRights",
500 IDS_SETTINGS_INCOMPATIBLE_APPLICATIONS_SUBPAGE_SUBTITLE_NO_ADMIN_RIGHTS},
501 {"incompatibleApplicationsListTitle",
502 IDS_SETTINGS_INCOMPATIBLE_APPLICATIONS_LIST_TITLE},
503 {"incompatibleApplicationsRemoveButton",
504 IDS_SETTINGS_INCOMPATIBLE_APPLICATIONS_REMOVE_BUTTON},
505 {"incompatibleApplicationsUpdateButton",
506 IDS_SETTINGS_INCOMPATIBLE_APPLICATIONS_UPDATE_BUTTON},
507 {"incompatibleApplicationsDone",
508 IDS_SETTINGS_INCOMPATIBLE_APPLICATIONS_DONE},
509 };
510 AddLocalizedStringsBulk(html_source, kLocalizedStrings);
511
512 // The help URL is provided via Field Trial param. If none is provided, the
513 // "Learn How" text is left empty so that no link is displayed.
514 base::string16 learn_how_text;
515 std::string help_url = GetFieldTrialParamValueByFeature(
516 features::kIncompatibleApplicationsWarning, "HelpURL");
517 if (!help_url.empty()) {
518 learn_how_text = l10n_util::GetStringFUTF16(
519 IDS_SETTINGS_INCOMPATIBLE_APPLICATIONS_SUBPAGE_LEARN_HOW,
520 base::UTF8ToUTF16(help_url));
521 }
522 html_source->AddString("incompatibleApplicationsSubpageLearnHow",
523 learn_how_text);
524 }
525 #endif // defined(OS_WIN) && BUILDFLAG(GOOGLE_CHROME_BRANDING)
526
AddResetStrings(content::WebUIDataSource * html_source)527 void AddResetStrings(content::WebUIDataSource* html_source) {
528 static constexpr webui::LocalizedString kLocalizedStrings[] = {
529 #if defined(OS_WIN) && BUILDFLAG(GOOGLE_CHROME_BRANDING)
530 {"resetPageTitle", IDS_SETTINGS_RESET_AND_CLEANUP},
531 #else
532 {"resetPageTitle", IDS_SETTINGS_RESET},
533 #endif
534 {"resetTrigger", IDS_SETTINGS_RESET_SETTINGS_TRIGGER},
535 {"resetPageExplanation", IDS_RESET_PROFILE_SETTINGS_EXPLANATION},
536 {"triggeredResetPageExplanation",
537 IDS_TRIGGERED_RESET_PROFILE_SETTINGS_EXPLANATION},
538 {"triggeredResetPageTitle", IDS_TRIGGERED_RESET_PROFILE_SETTINGS_TITLE},
539 {"resetDialogCommit", IDS_SETTINGS_RESET},
540 {"resetPageFeedback", IDS_SETTINGS_RESET_PROFILE_FEEDBACK},
541
542 // Automatic reset banner (now a dialog).
543 {"resetAutomatedDialogTitle", IDS_SETTINGS_RESET_AUTOMATED_DIALOG_TITLE},
544 {"resetProfileBannerButton", IDS_SETTINGS_RESET_BANNER_RESET_BUTTON_TEXT},
545 {"resetProfileBannerDescription", IDS_SETTINGS_RESET_BANNER_TEXT},
546 #if defined(OS_WIN) && BUILDFLAG(GOOGLE_CHROME_BRANDING)
547 {"resetCleanupComputerTrigger",
548 IDS_SETTINGS_RESET_CLEAN_UP_COMPUTER_TRIGGER},
549 #endif
550 };
551 AddLocalizedStringsBulk(html_source, kLocalizedStrings);
552
553 html_source->AddString("resetPageLearnMoreUrl",
554 chrome::kResetProfileSettingsLearnMoreURL);
555 html_source->AddString("resetProfileBannerLearnMoreUrl",
556 chrome::kAutomaticSettingsResetLearnMoreURL);
557 }
558
559 #if !defined(OS_CHROMEOS)
AddImportDataStrings(content::WebUIDataSource * html_source)560 void AddImportDataStrings(content::WebUIDataSource* html_source) {
561 static constexpr webui::LocalizedString kLocalizedStrings[] = {
562 {"importTitle", IDS_SETTINGS_IMPORT_SETTINGS_TITLE},
563 {"importFromLabel", IDS_SETTINGS_IMPORT_FROM_LABEL},
564 {"importDescription", IDS_SETTINGS_IMPORT_ITEMS_LABEL},
565 {"importLoading", IDS_SETTINGS_IMPORT_LOADING_PROFILES},
566 {"importHistory", IDS_SETTINGS_IMPORT_HISTORY_CHECKBOX},
567 {"importFavorites", IDS_SETTINGS_IMPORT_FAVORITES_CHECKBOX},
568 {"importPasswords", IDS_SETTINGS_IMPORT_PASSWORDS_CHECKBOX},
569 {"importSearch", IDS_SETTINGS_IMPORT_SEARCH_ENGINES_CHECKBOX},
570 {"importAutofillFormData",
571 IDS_SETTINGS_IMPORT_AUTOFILL_FORM_DATA_CHECKBOX},
572 {"importChooseFile", IDS_SETTINGS_IMPORT_CHOOSE_FILE},
573 {"importCommit", IDS_SETTINGS_IMPORT_COMMIT},
574 {"noProfileFound", IDS_SETTINGS_IMPORT_NO_PROFILE_FOUND},
575 {"importSuccess", IDS_SETTINGS_IMPORT_SUCCESS},
576 };
577 AddLocalizedStringsBulk(html_source, kLocalizedStrings);
578 }
579 #endif
580
AddLanguagesStrings(content::WebUIDataSource * html_source,Profile * profile)581 void AddLanguagesStrings(content::WebUIDataSource* html_source,
582 Profile* profile) {
583 static constexpr webui::LocalizedString kLocalizedStrings[] = {
584 {"languagesListTitle", IDS_SETTINGS_LANGUAGES_LANGUAGES_LIST_TITLE},
585 {"searchLanguages", IDS_SETTINGS_LANGUAGE_SEARCH},
586 {"languagesExpandA11yLabel",
587 IDS_SETTINGS_LANGUAGES_EXPAND_ACCESSIBILITY_LABEL},
588 {"orderBrowserLanguagesInstructions",
589 IDS_SETTINGS_LANGUAGES_BROWSER_LANGUAGES_LIST_ORDERING_INSTRUCTIONS},
590 {"moveToTop", IDS_SETTINGS_LANGUAGES_LANGUAGES_LIST_MOVE_TO_TOP},
591 {"moveUp", IDS_SETTINGS_LANGUAGES_LANGUAGES_LIST_MOVE_UP},
592 {"moveDown", IDS_SETTINGS_LANGUAGES_LANGUAGES_LIST_MOVE_DOWN},
593 {"removeLanguage", IDS_SETTINGS_LANGUAGES_LANGUAGES_LIST_REMOVE},
594 {"addLanguages", IDS_SETTINGS_LANGUAGES_LANGUAGES_ADD},
595 {"addLanguagesDialogTitle", IDS_SETTINGS_LANGUAGES_MANAGE_LANGUAGES_TITLE},
596 {"allLanguages", IDS_SETTINGS_LANGUAGES_ALL_LANGUAGES},
597 {"enabledLanguages", IDS_SETTINGS_LANGUAGES_ENABLED_LANGUAGES},
598 {"isDisplayedInThisLanguage",
599 IDS_SETTINGS_LANGUAGES_IS_DISPLAYED_IN_THIS_LANGUAGE},
600 {"displayInThisLanguage", IDS_SETTINGS_LANGUAGES_DISPLAY_IN_THIS_LANGUAGE},
601 {"offerToTranslateInThisLanguage",
602 IDS_SETTINGS_LANGUAGES_OFFER_TO_TRANSLATE_IN_THIS_LANGUAGE},
603 {"offerToEnableTranslate",
604 IDS_SETTINGS_LANGUAGES_OFFER_TO_ENABLE_TRANSLATE},
605 {"translateTargetLabel", IDS_SETTINGS_LANGUAGES_TRANSLATE_TARGET},
606 {"spellCheckTitle", IDS_SETTINGS_LANGUAGES_SPELL_CHECK_TITLE},
607 {"spellCheckBasicLabel", IDS_SETTINGS_LANGUAGES_SPELL_CHECK_BASIC_LABEL},
608 {"spellCheckEnhancedLabel",
609 IDS_SETTINGS_LANGUAGES_SPELL_CHECK_ENHANCED_LABEL},
610 {"spellCheckEnhancedDescription",
611 IDS_SETTINGS_LANGUAGES_SPELL_CHECK_ENHANCED_DESCRIPTION},
612 #if !defined(OS_MACOSX)
613 {"spellCheckDisabledReason",
614 IDS_SETTING_LANGUAGES_SPELL_CHECK_DISABLED_REASON},
615 {"spellCheckLanguagesListTitle",
616 IDS_SETTINGS_LANGUAGES_SPELL_CHECK_LANGUAGES_LIST_TITLE},
617 {"manageSpellCheck", IDS_SETTINGS_LANGUAGES_SPELL_CHECK_MANAGE},
618 {"editDictionaryPageTitle", IDS_SETTINGS_LANGUAGES_EDIT_DICTIONARY_TITLE},
619 {"addDictionaryWordLabel", IDS_SETTINGS_LANGUAGES_ADD_DICTIONARY_WORD},
620 {"addDictionaryWordButton",
621 IDS_SETTINGS_LANGUAGES_ADD_DICTIONARY_WORD_BUTTON},
622 {"addDictionaryWordDuplicateError",
623 IDS_SETTINGS_LANGUAGES_ADD_DICTIONARY_WORD_DUPLICATE_ERROR},
624 {"addDictionaryWordLengthError",
625 IDS_SETTINGS_LANGUAGES_ADD_DICTIONARY_WORD_LENGTH_ERROR},
626 {"deleteDictionaryWordButton",
627 IDS_SETTINGS_LANGUAGES_DELETE_DICTIONARY_WORD_BUTTON},
628 {"customDictionaryWords", IDS_SETTINGS_LANGUAGES_DICTIONARY_WORDS},
629 {"noCustomDictionaryWordsFound",
630 IDS_SETTINGS_LANGUAGES_DICTIONARY_WORDS_NONE},
631 {"languagesDictionaryDownloadError",
632 IDS_SETTINGS_LANGUAGES_DICTIONARY_DOWNLOAD_FAILED},
633 {"languagesDictionaryDownloadErrorHelp",
634 IDS_SETTINGS_LANGUAGES_DICTIONARY_DOWNLOAD_FAILED_HELP},
635 #endif
636 };
637 AddLocalizedStringsBulk(html_source, kLocalizedStrings);
638
639 #if defined(OS_CHROMEOS)
640 // Only the Chrome OS help article explains how language order affects website
641 // language.
642 html_source->AddString(
643 "languagesLearnMoreURL",
644 base::ASCIIToUTF16(chrome::kLanguageSettingsLearnMoreUrl));
645 html_source->AddString(
646 "languagesPageTitle",
647 l10n_util::GetStringUTF16(IDS_SETTINGS_LANGUAGES_PAGE_TITLE));
648 #else
649 html_source->AddString(
650 "languagesPageTitle",
651 l10n_util::GetStringUTF16(IDS_SETTINGS_LANGUAGES_PAGE_TITLE));
652 #endif
653 #if defined(OS_CHROMEOS)
654 user_manager::UserManager* user_manager = user_manager::UserManager::Get();
655 const user_manager::User* user =
656 chromeos::ProfileHelper::Get()->GetUserByProfile(profile);
657 const user_manager::User* primary_user = user_manager->GetPrimaryUser();
658 html_source->AddBoolean(
659 "isSecondaryUser",
660 user && user->GetAccountId() != primary_user->GetAccountId());
661 #endif // defined(OS_CHROMEOS)
662 }
663
664 #if defined(OS_CHROMEOS)
AddChromeOSUserStrings(content::WebUIDataSource * html_source,Profile * profile)665 void AddChromeOSUserStrings(content::WebUIDataSource* html_source,
666 Profile* profile) {
667 user_manager::UserManager* user_manager = user_manager::UserManager::Get();
668
669 const user_manager::User* primary_user = user_manager->GetPrimaryUser();
670 std::string primary_user_email = primary_user->GetAccountId().GetUserEmail();
671 html_source->AddString(
672 "osSettingsBannerText",
673 l10n_util::GetStringFUTF16(
674 IDS_SETTINGS_OS_SETTINGS_BANNER,
675 base::ASCIIToUTF16(chrome::kChromeUIOSSettingsURL)));
676 }
677 #endif
678
AddOnStartupStrings(content::WebUIDataSource * html_source)679 void AddOnStartupStrings(content::WebUIDataSource* html_source) {
680 static constexpr webui::LocalizedString kLocalizedStrings[] = {
681 {"onStartup", IDS_SETTINGS_ON_STARTUP},
682 {"onStartupOpenNewTab", IDS_SETTINGS_ON_STARTUP_OPEN_NEW_TAB},
683 {"onStartupContinue", IDS_SETTINGS_ON_STARTUP_CONTINUE},
684 {"onStartupOpenSpecific", IDS_SETTINGS_ON_STARTUP_OPEN_SPECIFIC},
685 {"onStartupUseCurrent", IDS_SETTINGS_ON_STARTUP_USE_CURRENT},
686 {"onStartupAddNewPage", IDS_SETTINGS_ON_STARTUP_ADD_NEW_PAGE},
687 {"onStartupEditPage", IDS_SETTINGS_ON_STARTUP_EDIT_PAGE},
688 {"onStartupSiteUrl", IDS_SETTINGS_ON_STARTUP_SITE_URL},
689 {"onStartupRemove", IDS_SETTINGS_ON_STARTUP_REMOVE},
690 {"onStartupInvalidUrl", IDS_SETTINGS_INVALID_URL},
691 {"onStartupUrlTooLong", IDS_SETTINGS_URL_TOOL_LONG},
692 };
693 AddLocalizedStringsBulk(html_source, kLocalizedStrings);
694 }
695
IsFidoAuthenticationAvailable(autofill::PersonalDataManager * personal_data,content::WebContents * web_contents)696 bool IsFidoAuthenticationAvailable(autofill::PersonalDataManager* personal_data,
697 content::WebContents* web_contents) {
698 // Don't show toggle switch if user is unable to downstream cards.
699 if (personal_data->GetSyncSigninState() !=
700 autofill::AutofillSyncSigninState::
701 kSignedInAndWalletSyncTransportEnabled &&
702 personal_data->GetSyncSigninState() !=
703 autofill::AutofillSyncSigninState::kSignedInAndSyncFeatureEnabled) {
704 return false;
705 }
706
707 // If |autofill_manager| is not available, then don't show toggle switch.
708 autofill::ContentAutofillDriverFactory* autofill_driver_factory =
709 autofill::ContentAutofillDriverFactory::FromWebContents(web_contents);
710 if (!autofill_driver_factory)
711 return false;
712 autofill::ContentAutofillDriver* autofill_driver =
713 autofill_driver_factory->DriverForFrame(web_contents->GetMainFrame());
714 if (!autofill_driver)
715 return false;
716 autofill::AutofillManager* autofill_manager =
717 autofill_driver->autofill_manager();
718 if (!autofill_manager)
719 return false;
720
721 // Show the toggle switch only if the flag is enabled. Once returned, this
722 // decision may be overridden (from true to false) by the caller in the
723 // payments section if no platform authenticator is found.
724 return base::FeatureList::IsEnabled(
725 autofill::features::kAutofillCreditCardAuthentication);
726 }
727
AddAutofillStrings(content::WebUIDataSource * html_source,Profile * profile,content::WebContents * web_contents)728 void AddAutofillStrings(content::WebUIDataSource* html_source,
729 Profile* profile,
730 content::WebContents* web_contents) {
731 static constexpr webui::LocalizedString kLocalizedStrings[] = {
732 {"autofillPageTitle", IDS_SETTINGS_AUTOFILL},
733 {"passwords", IDS_SETTINGS_PASSWORDS},
734 {"checkPasswords", IDS_SETTINGS_CHECK_PASSWORDS},
735 {"checkPasswordsCanceled", IDS_SETTINGS_CHECK_PASSWORDS_CANCELED},
736 {"checkedPasswords", IDS_SETTINGS_CHECKED_PASSWORDS},
737 {"checkPasswordsDescription", IDS_SETTINGS_CHECK_PASSWORDS_DESCRIPTION},
738 {"checkPasswordsAgain", IDS_SETTINGS_CHECK_PASSWORDS_AGAIN},
739 {"checkPasswordsAgainAfterError",
740 IDS_SETTINGS_CHECK_PASSWORDS_AGAIN_AFTER_ERROR},
741 {"checkPasswordsProgress", IDS_SETTINGS_CHECK_PASSWORDS_PROGRESS},
742 {"checkPasswordsStop", IDS_SETTINGS_CHECK_PASSWORDS_STOP},
743 {"compromisedPasswords", IDS_SETTINGS_COMPROMISED_PASSWORDS},
744 {"compromisedPasswordsDescription",
745 IDS_SETTINGS_COMPROMISED_PASSWORDS_ADVICE},
746 {"changePasswordButton", IDS_SETTINGS_CHANGE_PASSWORD_BUTTON},
747 {"changePasswordInApp", IDS_SETTINGS_CHANGE_PASSWORD_IN_APP_LABEL},
748 {"leakedPassword", IDS_SETTINGS_COMPROMISED_PASSWORD_REASON_LEAKED},
749 {"phishedPassword", IDS_SETTINGS_COMPROMISED_PASSWORD_REASON_PHISHED},
750 {"phishedAndLeakedPassword",
751 IDS_SETTINGS_COMPROMISED_PASSWORD_REASON_PHISHED_AND_LEAKED},
752 {"showCompromisedPassword", IDS_SETTINGS_COMPROMISED_PASSWORD_SHOW},
753 {"hideCompromisedPassword", IDS_SETTINGS_COMPROMISED_PASSWORD_HIDE},
754 {"editCompromisedPassword", IDS_SETTINGS_COMPROMISED_PASSWORD_EDIT},
755 {"removeCompromisedPassword", IDS_SETTINGS_COMPROMISED_PASSWORD_REMOVE},
756 {"removeCompromisedPasswordConfirmationTitle",
757 IDS_SETTINGS_REMOVE_COMPROMISED_PASSWORD_CONFIRMATION_TITLE},
758 {"removeCompromisedPasswordConfirmationDescription",
759 IDS_SETTINGS_REMOVE_COMPROMISED_PASSWORD_CONFIRMATION_DESCRIPTION},
760 {"editCompromisedPasswordTitle",
761 IDS_SETTINGS_COMPROMISED_EDIT_PASSWORD_TITLE},
762 {"editCompromisedPasswordFootnote",
763 IDS_SETTINGS_COMPROMISED_EDIT_PASSWORD_FOOTNOTE},
764 {"editCompromisedPasswordSite",
765 IDS_SETTINGS_COMPROMISED_EDIT_PASSWORD_SITE},
766 {"editCompromisedPasswordApp",
767 IDS_SETTINGS_COMPROMISED_EDIT_PASSWORD_APP},
768 {"creditCards", IDS_AUTOFILL_PAYMENT_METHODS},
769 {"noPaymentMethodsFound", IDS_SETTINGS_PAYMENT_METHODS_NONE},
770 {"googlePayments", IDS_SETTINGS_GOOGLE_PAYMENTS},
771 {"googlePaymentsCached", IDS_SETTINGS_GOOGLE_PAYMENTS_CACHED},
772 {"enableProfilesLabel", IDS_AUTOFILL_ENABLE_PROFILES_TOGGLE_LABEL},
773 {"enableProfilesSublabel", IDS_AUTOFILL_ENABLE_PROFILES_TOGGLE_SUBLABEL},
774 {"enableCreditCardsLabel", IDS_AUTOFILL_ENABLE_CREDIT_CARDS_TOGGLE_LABEL},
775 {"enableCreditCardsSublabel",
776 IDS_AUTOFILL_ENABLE_CREDIT_CARDS_TOGGLE_SUBLABEL},
777 {"enableCreditCardFIDOAuthLabel", IDS_ENABLE_CREDIT_CARD_FIDO_AUTH_LABEL},
778 {"enableCreditCardFIDOAuthSublabel",
779 IDS_ENABLE_CREDIT_CARD_FIDO_AUTH_SUBLABEL},
780 {"addresses", IDS_AUTOFILL_ADDRESSES},
781 {"addressesTitle", IDS_AUTOFILL_ADDRESSES_SETTINGS_TITLE},
782 {"addAddressTitle", IDS_SETTINGS_AUTOFILL_ADDRESSES_ADD_TITLE},
783 {"editAddressTitle", IDS_SETTINGS_AUTOFILL_ADDRESSES_EDIT_TITLE},
784 {"addressCountry", IDS_SETTINGS_AUTOFILL_ADDRESSES_COUNTRY},
785 {"addressPhone", IDS_SETTINGS_AUTOFILL_ADDRESSES_PHONE},
786 {"addressEmail", IDS_SETTINGS_AUTOFILL_ADDRESSES_EMAIL},
787 {"removeAddress", IDS_SETTINGS_ADDRESS_REMOVE},
788 {"removeCreditCard", IDS_SETTINGS_CREDIT_CARD_REMOVE},
789 {"clearCreditCard", IDS_SETTINGS_CREDIT_CARD_CLEAR},
790 {"creditCardType", IDS_SETTINGS_AUTOFILL_CREDIT_CARD_TYPE_COLUMN_LABEL},
791 {"creditCardExpiration", IDS_SETTINGS_CREDIT_CARD_EXPIRATION_DATE},
792 {"creditCardName", IDS_SETTINGS_NAME_ON_CREDIT_CARD},
793 {"creditCardNumber", IDS_SETTINGS_CREDIT_CARD_NUMBER},
794 {"creditCardExpirationMonth", IDS_SETTINGS_CREDIT_CARD_EXPIRATION_MONTH},
795 {"creditCardExpirationYear", IDS_SETTINGS_CREDIT_CARD_EXPIRATION_YEAR},
796 {"creditCardExpired", IDS_SETTINGS_CREDIT_CARD_EXPIRED},
797 {"editCreditCardTitle", IDS_SETTINGS_EDIT_CREDIT_CARD_TITLE},
798 {"addCreditCardTitle", IDS_SETTINGS_ADD_CREDIT_CARD_TITLE},
799 {"migrateCreditCardsLabel", IDS_SETTINGS_MIGRATABLE_CARDS_LABEL},
800 {"migratableCardsInfoSingle", IDS_SETTINGS_SINGLE_MIGRATABLE_CARD_INFO},
801 {"migratableCardsInfoMultiple",
802 IDS_SETTINGS_MULTIPLE_MIGRATABLE_CARDS_INFO},
803 {"upiIdLabel", IDS_SETTINGS_UPI_ID_LABEL},
804 {"upiIdExpirationNever", IDS_SETTINGS_UPI_ID_EXPIRATION_NEVER},
805 {"canMakePaymentToggleLabel", IDS_SETTINGS_CAN_MAKE_PAYMENT_TOGGLE_LABEL},
806 {"autofillDetail", IDS_SETTINGS_AUTOFILL_DETAIL},
807 {"passwordsSavePasswordsLabel",
808 IDS_SETTINGS_PASSWORDS_SAVE_PASSWORDS_TOGGLE_LABEL},
809 {"passwordsAutosigninLabel",
810 IDS_SETTINGS_PASSWORDS_AUTOSIGNIN_CHECKBOX_LABEL},
811 {"passwordsAutosigninDescription",
812 IDS_SETTINGS_PASSWORDS_AUTOSIGNIN_CHECKBOX_DESC},
813 {"passwordsLeakDetectionLabel",
814 IDS_SETTINGS_PASSWORDS_LEAK_DETECTION_LABEL},
815 {"passwordsLeakDetectionGeneralDescription",
816 IDS_PASSWORD_MANAGER_LEAK_HELP_MESSAGE},
817 {"passwordsLeakDetectionSignedOutEnabledDescription",
818 IDS_SETTINGS_PASSWORDS_LEAK_DETECTION_SIGNED_OUT_ENABLED_DESC},
819 {"savedPasswordsHeading", IDS_SETTINGS_PASSWORDS_SAVED_HEADING},
820 {"passwordExceptionsHeading", IDS_SETTINGS_PASSWORDS_EXCEPTIONS_HEADING},
821 {"deletePasswordException", IDS_SETTINGS_PASSWORDS_DELETE_EXCEPTION},
822 {"removePassword", IDS_SETTINGS_PASSWORD_REMOVE},
823 {"searchPasswords", IDS_SETTINGS_PASSWORD_SEARCH},
824 {"showPassword", IDS_SETTINGS_PASSWORD_SHOW},
825 {"hidePassword", IDS_SETTINGS_PASSWORD_HIDE},
826 {"passwordDetailsTitle", IDS_SETTINGS_PASSWORDS_VIEW_DETAILS_TITLE},
827 {"passwordViewDetails", IDS_SETTINGS_PASSWORD_DETAILS},
828 {"copyPassword", IDS_SETTINGS_PASSWORD_COPY},
829 {"editPasswordWebsiteLabel", IDS_SETTINGS_PASSWORDS_WEBSITE},
830 {"editPasswordUsernameLabel", IDS_SETTINGS_PASSWORDS_USERNAME},
831 {"editPasswordPasswordLabel", IDS_SETTINGS_PASSWORDS_PASSWORD},
832 {"noAddressesFound", IDS_SETTINGS_ADDRESS_NONE},
833 {"noPasswordsFound", IDS_SETTINGS_PASSWORDS_NONE},
834 {"noExceptionsFound", IDS_SETTINGS_PASSWORDS_EXCEPTIONS_NONE},
835 {"import", IDS_PASSWORD_MANAGER_IMPORT_BUTTON},
836 {"exportMenuItem", IDS_SETTINGS_PASSWORDS_EXPORT_MENU_ITEM},
837 {"optInAccountStorageLabel",
838 IDS_SETTINGS_PASSWORDS_OPT_IN_ACCOUNT_STORAGE_LABEL},
839 {"optOutAccountStorageLabel",
840 IDS_SETTINGS_PASSWORDS_OPT_OUT_ACCOUNT_STORAGE_LABEL},
841 {"undoRemovePassword", IDS_SETTINGS_PASSWORD_UNDO},
842 {"passwordDeleted", IDS_SETTINGS_PASSWORD_DELETED_PASSWORD},
843 {"passwordRowMoreActionsButton", IDS_SETTINGS_PASSWORD_ROW_MORE_ACTIONS},
844 {"passwordRowFederatedMoreActionsButton",
845 IDS_SETTINGS_PASSWORD_ROW_FEDERATED_MORE_ACTIONS},
846 {"exportPasswordsTitle", IDS_SETTINGS_PASSWORDS_EXPORT_TITLE},
847 {"exportPasswordsDescription", IDS_SETTINGS_PASSWORDS_EXPORT_DESCRIPTION},
848 {"exportPasswords", IDS_SETTINGS_PASSWORDS_EXPORT},
849 {"exportingPasswordsTitle", IDS_SETTINGS_PASSWORDS_EXPORTING_TITLE},
850 {"exportPasswordsTryAgain", IDS_SETTINGS_PASSWORDS_EXPORT_TRY_AGAIN},
851 {"exportPasswordsFailTitle",
852 IDS_SETTINGS_PASSWORDS_EXPORTING_FAILURE_TITLE},
853 {"exportPasswordsFailTips",
854 IDS_SETTINGS_PASSWORDS_EXPORTING_FAILURE_TIPS},
855 {"exportPasswordsFailTipsEnoughSpace",
856 IDS_SETTINGS_PASSWORDS_EXPORTING_FAILURE_TIP_ENOUGH_SPACE},
857 {"exportPasswordsFailTipsAnotherFolder",
858 IDS_SETTINGS_PASSWORDS_EXPORTING_FAILURE_TIP_ANOTHER_FOLDER},
859 {"savedToThisDeviceOnly",
860 IDS_SETTINGS_PAYMENTS_SAVED_TO_THIS_DEVICE_ONLY}};
861
862 const base::string16 short_product_name =
863 l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_NAME);
864 html_source->AddString(
865 "checkPasswordsErrorOffline",
866 l10n_util::GetStringFUTF16(IDS_SETTINGS_CHECK_PASSWORDS_ERROR_OFFLINE,
867 short_product_name));
868 html_source->AddString(
869 "checkPasswordsErrorSignedOut",
870 l10n_util::GetStringFUTF16(IDS_SETTINGS_CHECK_PASSWORDS_ERROR_SIGNED_OUT,
871 short_product_name));
872 html_source->AddString(
873 "checkPasswordsErrorNoPasswords",
874 l10n_util::GetStringFUTF16(
875 IDS_SETTINGS_CHECK_PASSWORDS_ERROR_NO_PASSWORDS, short_product_name));
876 html_source->AddString(
877 "checkPasswordsErrorQuota",
878 l10n_util::GetStringFUTF16(IDS_SETTINGS_CHECK_PASSWORDS_ERROR_QUOTA_LIMIT,
879 short_product_name));
880 html_source->AddString(
881 "checkPasswordsErrorGeneric",
882 l10n_util::GetStringFUTF16(IDS_SETTINGS_CHECK_PASSWORDS_ERROR_GENERIC,
883 short_product_name));
884 html_source->AddString(
885 "noCompromisedCredentials",
886 l10n_util::GetStringFUTF16(IDS_SETTINGS_NO_COMPROMISED_CREDENTIALS_LABEL,
887 short_product_name));
888
889 GURL google_password_manager_url = GetGooglePasswordManagerURL(
890 password_manager::ManagePasswordsReferrer::kChromeSettings);
891
892 html_source->AddString(
893 "managePasswordsLabel",
894 l10n_util::GetStringFUTF16(
895 IDS_SETTINGS_PASSWORDS_MANAGE_PASSWORDS,
896 base::UTF8ToUTF16(google_password_manager_url.spec())));
897 html_source->AddString(
898 "checkPasswordsErrorQuotaGoogleAccount",
899 l10n_util::GetStringFUTF16(
900 IDS_SETTINGS_CHECK_PASSWORDS_ERROR_QUOTA_LIMIT_GOOGLE_ACCOUNT,
901 short_product_name,
902 base::UTF8ToUTF16(
903 password_manager::GetPasswordCheckupURL(
904 password_manager::PasswordCheckupReferrer::kPasswordCheck)
905 .spec())));
906 html_source->AddString("googlePasswordManagerUrl",
907 google_password_manager_url.spec());
908 html_source->AddString("passwordCheckLearnMoreURL",
909 chrome::kPasswordCheckLearnMoreURL);
910 html_source->AddString("passwordManagerLearnMoreURL",
911 chrome::kPasswordManagerLearnMoreURL);
912 html_source->AddString("manageAddressesUrl",
913 autofill::payments::GetManageAddressesUrl().spec());
914 html_source->AddString("manageCreditCardsLabel",
915 l10n_util::GetStringFUTF16(
916 IDS_SETTINGS_PAYMENTS_MANAGE_CREDIT_CARDS,
917 base::UTF8ToUTF16(chrome::kPaymentMethodsURL)));
918 html_source->AddString("manageCreditCardsUrl",
919 autofill::payments::GetManageInstrumentsUrl().spec());
920 html_source->AddString("paymentMethodsLearnMoreURL",
921 chrome::kPaymentMethodsLearnMoreURL);
922
923 bool is_guest_mode = false;
924 #if defined(OS_CHROMEOS)
925 is_guest_mode = user_manager::UserManager::Get()->IsLoggedInAsGuest() ||
926 user_manager::UserManager::Get()->IsLoggedInAsPublicAccount();
927 #else // !defined(OS_CHROMEOS)
928 is_guest_mode = profile->IsOffTheRecord();
929 #endif // defined(OS_CHROMEOS)
930 autofill::PersonalDataManager* personal_data =
931 autofill::PersonalDataManagerFactory::GetForProfile(profile);
932 html_source->AddBoolean(
933 "migrationEnabled",
934 !is_guest_mode && autofill::IsCreditCardMigrationEnabled(
935 personal_data, profile->GetPrefs(),
936 ProfileSyncServiceFactory::GetForProfile(profile),
937 /*is_test_mode=*/false,
938 /*log_manager=*/nullptr));
939 html_source->AddBoolean(
940 "fidoAuthenticationAvailableForAutofill",
941 IsFidoAuthenticationAvailable(personal_data, web_contents));
942
943 ui::Accelerator undo_accelerator(ui::VKEY_Z, ui::EF_PLATFORM_ACCELERATOR);
944 html_source->AddString(
945 "undoDescription",
946 l10n_util::GetStringFUTF16(IDS_UNDO_DESCRIPTION,
947 undo_accelerator.GetShortcutText()));
948
949 html_source->AddBoolean("showUpiIdSettings",
950 base::FeatureList::IsEnabled(
951 autofill::features::kAutofillSaveAndFillVPA));
952
953 AddLocalizedStringsBulk(html_source, kLocalizedStrings);
954 }
955
AddSignOutDialogStrings(content::WebUIDataSource * html_source,Profile * profile)956 void AddSignOutDialogStrings(content::WebUIDataSource* html_source,
957 Profile* profile) {
958 #if defined(OS_CHROMEOS)
959 bool is_dice_enabled = false;
960 bool is_split_sync_consent_enabled =
961 chromeos::features::IsSplitSyncConsentEnabled();
962 #else
963 bool is_dice_enabled =
964 AccountConsistencyModeManager::IsDiceEnabledForProfile(profile);
965 bool is_split_sync_consent_enabled = false;
966 #endif
967
968 if (is_split_sync_consent_enabled || is_dice_enabled) {
969 static constexpr webui::LocalizedString kTurnOffStrings[] = {
970 {"syncDisconnect", IDS_SETTINGS_PEOPLE_SYNC_TURN_OFF},
971 {"syncDisconnectTitle",
972 IDS_SETTINGS_TURN_OFF_SYNC_AND_SIGN_OUT_DIALOG_TITLE},
973 };
974 AddLocalizedStringsBulk(html_source, kTurnOffStrings);
975 } else {
976 static constexpr webui::LocalizedString kSignOutStrings[] = {
977 {"syncDisconnect", IDS_SETTINGS_PEOPLE_SIGN_OUT},
978 {"syncDisconnectTitle", IDS_SETTINGS_SYNC_DISCONNECT_TITLE},
979 };
980 AddLocalizedStringsBulk(html_source, kSignOutStrings);
981 }
982
983 std::string sync_dashboard_url =
984 google_util::AppendGoogleLocaleParam(
985 GURL(chrome::kSyncGoogleDashboardURL),
986 g_browser_process->GetApplicationLocale())
987 .spec();
988
989 if (is_dice_enabled) {
990 static constexpr webui::LocalizedString kSyncDisconnectStrings[] = {
991 {"syncDisconnectDeleteProfile",
992 IDS_SETTINGS_TURN_OFF_SYNC_DIALOG_CHECKBOX},
993 {"syncDisconnectConfirm",
994 IDS_SETTINGS_TURN_OFF_SYNC_DIALOG_MANAGED_CONFIRM},
995 {"syncDisconnectExplanation",
996 IDS_SETTINGS_SYNC_DISCONNECT_AND_SIGN_OUT_EXPLANATION},
997 };
998 AddLocalizedStringsBulk(html_source, kSyncDisconnectStrings);
999 } else {
1000 static constexpr webui::LocalizedString kSyncDisconnectStrings[] = {
1001 {"syncDisconnectDeleteProfile",
1002 IDS_SETTINGS_SYNC_DISCONNECT_DELETE_PROFILE},
1003 {"syncDisconnectConfirm", IDS_SETTINGS_SYNC_DISCONNECT_CONFIRM},
1004 };
1005 AddLocalizedStringsBulk(html_source, kSyncDisconnectStrings);
1006
1007 html_source->AddString(
1008 "syncDisconnectExplanation",
1009 l10n_util::GetStringFUTF8(IDS_SETTINGS_SYNC_DISCONNECT_EXPLANATION,
1010 base::ASCIIToUTF16(sync_dashboard_url)));
1011 }
1012
1013 #if !defined(OS_CHROMEOS)
1014 html_source->AddString(
1015 "syncDisconnectManagedProfileExplanation",
1016 l10n_util::GetStringFUTF8(
1017 IDS_SETTINGS_SYNC_DISCONNECT_MANAGED_PROFILE_EXPLANATION,
1018 base::ASCIIToUTF16("$1"), base::ASCIIToUTF16(sync_dashboard_url)));
1019 #endif
1020 }
1021
AddPeopleStrings(content::WebUIDataSource * html_source,Profile * profile)1022 void AddPeopleStrings(content::WebUIDataSource* html_source, Profile* profile) {
1023 static constexpr webui::LocalizedString kLocalizedStrings[] = {
1024 // Top level people strings:
1025 {"peopleSignInPromptSecondaryWithAccount",
1026 IDS_SETTINGS_PEOPLE_SIGN_IN_PROMPT_SECONDARY_WITH_ACCOUNT},
1027 {"peopleSignInPromptSecondaryWithNoAccount",
1028 IDS_SETTINGS_PEOPLE_SIGN_IN_PROMPT_SECONDARY_WITH_ACCOUNT},
1029 {"peoplePageTitle", IDS_SETTINGS_PEOPLE},
1030 {"syncSettingsSavedToast", IDS_SETTINGS_SYNC_SETTINGS_SAVED_TOAST_LABEL},
1031 {"peopleSignInPrompt", IDS_SETTINGS_PEOPLE_SIGN_IN_PROMPT},
1032 {"manageGoogleAccount", IDS_SETTINGS_MANAGE_GOOGLE_ACCOUNT},
1033 {"syncAndNonPersonalizedServices",
1034 IDS_SETTINGS_SYNC_SYNC_AND_NON_PERSONALIZED_SERVICES},
1035 #if defined(OS_CHROMEOS)
1036 {"accountManagerSubMenuLabel", IDS_SETTINGS_ACCOUNT_MANAGER_SUBMENU_LABEL},
1037 #else
1038 {"editPerson", IDS_SETTINGS_EDIT_PERSON},
1039 {"profileNameAndPicture", IDS_SETTINGS_PROFILE_NAME_AND_PICTURE},
1040 #endif
1041
1042 // Manage profile strings:
1043 #if !defined(OS_CHROMEOS)
1044 {"showShortcutLabel", IDS_SETTINGS_PROFILE_SHORTCUT_TOGGLE_LABEL},
1045 #endif
1046 {"deleteProfileWarningExpandA11yLabel",
1047 IDS_SETTINGS_SYNC_DISCONNECT_EXPAND_ACCESSIBILITY_LABEL},
1048 {"deleteProfileWarningWithCountsSingular",
1049 IDS_SETTINGS_SYNC_DISCONNECT_DELETE_PROFILE_WARNING_WITH_COUNTS_SINGULAR},
1050 {"deleteProfileWarningWithCountsPlural",
1051 IDS_SETTINGS_SYNC_DISCONNECT_DELETE_PROFILE_WARNING_WITH_COUNTS_PLURAL},
1052 {"deleteProfileWarningWithoutCounts",
1053 IDS_SETTINGS_SYNC_DISCONNECT_DELETE_PROFILE_WARNING_WITHOUT_COUNTS},
1054 };
1055 AddLocalizedStringsBulk(html_source, kLocalizedStrings);
1056
1057 // Add Google Account URL and include UTM parameter to signal the source of
1058 // the navigation.
1059 html_source->AddString(
1060 "googleAccountUrl",
1061 net::AppendQueryParameter(GURL(chrome::kGoogleAccountURL), "utm_source",
1062 "chrome-settings")
1063 .spec());
1064 html_source->AddBoolean("profileShortcutsEnabled",
1065 ProfileShortcutManager::IsFeatureEnabled());
1066 #if defined(OS_CHROMEOS)
1067 // Toggles the Chrome OS Account Manager submenu in the People section.
1068 html_source->AddBoolean("isAccountManagerEnabled",
1069 chromeos::IsAccountManagerAvailable(profile));
1070 #endif
1071
1072 AddSignOutDialogStrings(html_source, profile);
1073 AddSyncControlsStrings(html_source);
1074 AddSyncAccountControlStrings(html_source);
1075 #if defined(OS_CHROMEOS)
1076 AddPasswordPromptDialogStrings(html_source);
1077 #endif
1078 AddSyncPageStrings(html_source);
1079 }
1080
AddPrintingStrings(content::WebUIDataSource * html_source)1081 void AddPrintingStrings(content::WebUIDataSource* html_source) {
1082 static constexpr webui::LocalizedString kLocalizedStrings[] = {
1083 {"printingPageTitle", IDS_SETTINGS_PRINTING},
1084 {"printingCloudPrintLearnMoreLabel",
1085 IDS_SETTINGS_PRINTING_CLOUD_PRINT_LEARN_MORE_LABEL},
1086 {"printingNotificationsLabel", IDS_SETTINGS_PRINTING_NOTIFICATIONS_LABEL},
1087 {"printingManageCloudPrintDevices",
1088 IDS_SETTINGS_PRINTING_MANAGE_CLOUD_PRINT_DEVICES},
1089 {"cloudPrintersTitle", IDS_SETTINGS_PRINTING_CLOUD_PRINTERS},
1090 #if !defined(OS_CHROMEOS)
1091 {"localPrintersTitle", IDS_SETTINGS_PRINTING_LOCAL_PRINTERS_TITLE},
1092 #endif
1093 };
1094 AddLocalizedStringsBulk(html_source, kLocalizedStrings);
1095
1096 html_source->AddString("devicesUrl", chrome::kChromeUIDevicesURL);
1097 html_source->AddString("printingCloudPrintLearnMoreUrl",
1098 chrome::kCloudPrintLearnMoreURL);
1099 }
1100
AddPrivacyStrings(content::WebUIDataSource * html_source,Profile * profile)1101 void AddPrivacyStrings(content::WebUIDataSource* html_source,
1102 Profile* profile) {
1103 static constexpr webui::LocalizedString kLocalizedStrings[] = {
1104 {"privacyPageTitle", IDS_SETTINGS_PRIVACY},
1105 {"privacyPageMore", IDS_SETTINGS_PRIVACY_MORE},
1106 {"doNotTrack", IDS_SETTINGS_ENABLE_DO_NOT_TRACK},
1107 {"doNotTrackDialogTitle", IDS_SETTINGS_ENABLE_DO_NOT_TRACK_DIALOG_TITLE},
1108 // TODO(crbug.com/1062607): This string is no longer used. Remove.
1109 {"permissionsPageTitle", IDS_SETTINGS_PERMISSIONS},
1110 {"permissionsPageDescription", IDS_SETTINGS_PERMISSIONS_DESCRIPTION},
1111 {"securityPageTitle", IDS_SETTINGS_SECURITY},
1112 {"securityPageDescription", IDS_SETTINGS_SECURITY_DESCRIPTION},
1113 {"securityPageAdvancedSectionLabel",
1114 IDS_SETTINGS_SECURITY_ADVANCED_SECTION_LABEL},
1115 {"advancedProtectionProgramTitle",
1116 IDS_SETTINGS_ADVANCED_PROTECTION_PROGRAM},
1117 {"advancedProtectionProgramDesc",
1118 IDS_SETTINGS_ADVANCED_PROTECTION_PROGRAM_DESC},
1119 {"manageCertificates", IDS_SETTINGS_MANAGE_CERTIFICATES},
1120 {"manageCertificatesDescription",
1121 IDS_SETTINGS_MANAGE_CERTIFICATES_DESCRIPTION},
1122 {"secureDns", IDS_SETTINGS_SECURE_DNS},
1123 {"secureDnsDescription", IDS_SETTINGS_SECURE_DNS_DESCRIPTION},
1124 {"secureDnsDisabledForManagedEnvironment",
1125 IDS_SETTINGS_SECURE_DNS_DISABLED_FOR_MANAGED_ENVIRONMENT},
1126 {"secureDnsDisabledForParentalControl",
1127 IDS_SETTINGS_SECURE_DNS_DISABLED_FOR_PARENTAL_CONTROL},
1128 {"secureDnsAutomaticModeDescription",
1129 IDS_SETTINGS_AUTOMATIC_MODE_DESCRIPTION},
1130 {"secureDnsAutomaticModeDescriptionSecondary",
1131 IDS_SETTINGS_AUTOMATIC_MODE_DESCRIPTION_SECONDARY},
1132 {"secureDnsSecureModeA11yLabel",
1133 IDS_SETTINGS_SECURE_MODE_DESCRIPTION_ACCESSIBILITY_LABEL},
1134 {"secureDnsDropdownA11yLabel",
1135 IDS_SETTINGS_SECURE_DNS_DROPDOWN_ACCESSIBILITY_LABEL},
1136 {"secureDnsSecureDropdownModeDescription",
1137 IDS_SETTINGS_SECURE_DROPDOWN_MODE_DESCRIPTION},
1138 {"secureDnsSecureDropdownModePrivacyPolicy",
1139 IDS_SETTINGS_SECURE_DROPDOWN_MODE_PRIVACY_POLICY},
1140 {"secureDnsCustomPlaceholder",
1141 IDS_SETTINGS_SECURE_DNS_CUSTOM_PLACEHOLDER},
1142 {"secureDnsCustomFormatError",
1143 IDS_SETTINGS_SECURE_DNS_CUSTOM_FORMAT_ERROR},
1144 {"secureDnsCustomConnectionError",
1145 IDS_SETTINGS_SECURE_DNS_CUSTOM_CONNECTION_ERROR},
1146 {"contentSettings", IDS_SETTINGS_CONTENT_SETTINGS},
1147 {"siteSettings", IDS_SETTINGS_SITE_SETTINGS},
1148 {"siteSettingsDescription", IDS_SETTINGS_SITE_SETTINGS_DESCRIPTION},
1149 {"clearData", IDS_SETTINGS_CLEAR_DATA},
1150 {"clearBrowsingData", IDS_SETTINGS_CLEAR_BROWSING_DATA},
1151 {"clearBrowsingDataDescription", IDS_SETTINGS_CLEAR_DATA_DESCRIPTION},
1152 {"titleAndCount", IDS_SETTINGS_TITLE_AND_COUNT},
1153 {"safeBrowsingEnableExtendedReporting",
1154 IDS_SETTINGS_SAFEBROWSING_ENABLE_REPORTING},
1155 {"safeBrowsingEnableExtendedReportingDesc",
1156 IDS_SETTINGS_SAFEBROWSING_ENABLE_REPORTING_DESC},
1157 {"safeBrowsingEnhanced", IDS_SETTINGS_SAFEBROWSING_ENHANCED},
1158 {"safeBrowsingEnhancedDesc", IDS_SETTINGS_SAFEBROWSING_ENHANCED_DESC},
1159 {"safeBrowsingEnhancedBulOne",
1160 IDS_SETTINGS_SAFEBROWSING_ENHANCED_BULLET_ONE},
1161 {"safeBrowsingEnhancedBulTwo",
1162 IDS_SETTINGS_SAFEBROWSING_ENHANCED_BULLET_TWO},
1163 {"safeBrowsingEnhancedBulThree",
1164 IDS_SETTINGS_SAFEBROWSING_ENHANCED_BULLET_THREE},
1165 {"safeBrowsingEnhancedBulFour",
1166 IDS_SETTINGS_SAFEBROWSING_ENHANCED_BULLET_FOUR},
1167 {"safeBrowsingEnhancedBulFive",
1168 IDS_SETTINGS_SAFEBROWSING_ENHANCED_BULLET_FIVE},
1169 {"safeBrowsingStandard", IDS_SETTINGS_SAFEBROWSING_STANDARD},
1170 {"safeBrowsingStandardDesc", IDS_SETTINGS_SAFEBROWSING_STANDARD_DESC},
1171 {"safeBrowsingStandardBulOne",
1172 IDS_SETTINGS_SAFEBROWSING_STANDARD_BULLET_ONE},
1173 {"safeBrowsingStandardBulTwo",
1174 IDS_SETTINGS_SAFEBROWSING_STANDARD_BULLET_TWO},
1175 {"safeBrowsingStandardReportingLabel",
1176 IDS_SETTINGS_SAFEBROWSING_STANDARD_HELP_IMPROVE},
1177 {"safeBrowsingNone", IDS_SETTINGS_SAFEBROWSING_NONE},
1178 {"safeBrowsingNoneDesc", IDS_SETTINGS_SAFEBROWSING_NONE_DESC},
1179 {"safeBrowsingDisableDialog",
1180 IDS_SETTINGS_SAFEBROWSING_DISABLE_DIALOG_TITLE},
1181 {"safeBrowsingDisableDialogDesc",
1182 IDS_SETTINGS_SAFEBROWSING_DISABLE_DIALOG_DESC},
1183 {"safeBrowsingDisableDialogConfrim",
1184 IDS_SETTINGS_SAFEBROWSING_DISABLE_DIALOG_CONFIRM},
1185 {"safeBrowsingEnableProtection",
1186 IDS_SETTINGS_SAFEBROWSING_ENABLEPROTECTION},
1187 {"safeBrowsingEnableProtectionDesc",
1188 IDS_SETTINGS_SAFEBROWSING_ENABLEPROTECTION_DESC},
1189 {"safeBrowsingSectionLabel", IDS_SETTINGS_SAFEBROWSING_SECTION_LABEL},
1190 {"syncAndGoogleServicesPrivacyDescription",
1191 IDS_SETTINGS_SYNC_AND_GOOGLE_SERVICES_PRIVACY_DESC_UNIFIED_CONSENT},
1192 {"urlKeyedAnonymizedDataCollection",
1193 IDS_SETTINGS_ENABLE_URL_KEYED_ANONYMIZED_DATA_COLLECTION},
1194 {"urlKeyedAnonymizedDataCollectionDesc",
1195 IDS_SETTINGS_ENABLE_URL_KEYED_ANONYMIZED_DATA_COLLECTION_DESC},
1196 {"noRecentPermissions", IDS_SETTINGS_RECENT_PERMISSIONS_NO_CHANGES},
1197 {"recentPermissionChangeAutoblockedSentenceStart",
1198 IDS_SETTINGS_RECENT_PERMISSIONS_CHANGE_AUTOBLOCKED_SENTENCE_START},
1199 {"recentPermissionChangeBlockedSentenceStart",
1200 IDS_SETTINGS_RECENT_PERMISSIONS_CHANGE_BLOCKED_SENTENCE_START},
1201 {"recentPermissionChangeAllowedSentenceStart",
1202 IDS_SETTINGS_RECENT_PERMISSIONS_CHANGE_ALLOWED_SENTENCE_START},
1203 {"recentPermissionChangeAutoblocked",
1204 IDS_SETTINGS_RECENT_PERMISSIONS_CHANGE_AUTOBLOCKED},
1205 {"recentPermissionChangeBlocked",
1206 IDS_SETTINGS_RECENT_PERMISSIONS_CHANGE_BLOCKED},
1207 {"recentPermissionChangeAllowed",
1208 IDS_SETTINGS_RECENT_PERMISSIONS_CHANGE_ALLOWED},
1209 {"recentPermissionsTwoItems", IDS_SETTINGS_RECENT_PERMISSIONS_TWO_ITEMS},
1210 {"recentPermissionsThreeItems",
1211 IDS_SETTINGS_RECENT_PERMISSIONS_THREE_ITEMS},
1212 {"recentPermissionsOverThreeItems",
1213 IDS_SETTINGS_RECENT_PERMISSIONS_OVER_THREE_ITEMS},
1214 {"recentPermissionsOneItemIncognito",
1215 IDS_SETTINGS_RECENT_PERMISSIONS_ONE_ITEM_INCOGNITO},
1216 {"recentPermissionsTwoItemsIncognito",
1217 IDS_SETTINGS_RECENT_PERMISSIONS_TWO_ITEMS_INCOGNITO},
1218 {"recentPermissionsThreeItemsIncognito",
1219 IDS_SETTINGS_RECENT_PERMISSIONS_THREE_ITEMS_INCOGNITO},
1220 {"recentPermissionsOverThreeItemsIncognito",
1221 IDS_SETTINGS_RECENT_PERMISSIONS_OVER_THREE_ITEMS_INCOGNITO},
1222 {"networkPredictionEnabled",
1223 IDS_SETTINGS_NETWORK_PREDICTION_ENABLED_LABEL},
1224 {"networkPredictionEnabledDesc",
1225 IDS_SETTINGS_NETWORK_PREDICTION_ENABLED_DESC},
1226 {"networkPredictionEnabledDescCookiesPage",
1227 IDS_SETTINGS_NETWORK_PREDICTION_ENABLED_DESC_COOKIES_PAGE},
1228 {"safetyCheckSectionTitle", IDS_SETTINGS_SAFETY_CHECK_SECTION_TITLE},
1229 {"safetyCheckParentPrimaryLabelBefore",
1230 IDS_SETTINGS_SAFETY_CHECK_PARENT_PRIMARY_LABEL_BEFORE},
1231 {"safetyCheckRunning", IDS_SETTINGS_SAFETY_CHECK_RUNNING},
1232 {"safetyCheckParentPrimaryLabelAfter",
1233 IDS_SETTINGS_SAFETY_CHECK_PARENT_PRIMARY_LABEL_AFTER},
1234 {"safetyCheckAriaLiveRunning",
1235 IDS_SETTINGS_SAFETY_CHECK_ARIA_LIVE_RUNNING},
1236 {"safetyCheckAriaLiveAfter", IDS_SETTINGS_SAFETY_CHECK_ARIA_LIVE_AFTER},
1237 {"safetyCheckParentButton", IDS_SETTINGS_SAFETY_CHECK_PARENT_BUTTON},
1238 {"safetyCheckParentButtonAriaLabel",
1239 IDS_SETTINGS_SAFETY_CHECK_PARENT_BUTTON_ARIA_LABEL},
1240 {"safetyCheckIconRunningAriaLabel",
1241 IDS_SETTINGS_SAFETY_CHECK_ICON_RUNNING_ARIA_LABEL},
1242 {"safetyCheckIconSafeAriaLabel",
1243 IDS_SETTINGS_SAFETY_CHECK_ICON_SAFE_ARIA_LABEL},
1244 {"safetyCheckIconInfoAriaLabel",
1245 IDS_SETTINGS_SAFETY_CHECK_ICON_INFO_ARIA_LABEL},
1246 {"safetyCheckIconWarningAriaLabel",
1247 IDS_SETTINGS_SAFETY_CHECK_ICON_WARNING_ARIA_LABEL},
1248 {"safetyCheckUpdatesPrimaryLabel",
1249 IDS_SETTINGS_SAFETY_CHECK_UPDATES_PRIMARY_LABEL},
1250 {"safetyCheckUpdatesButtonAriaLabel",
1251 IDS_UPDATE_RECOMMENDED_DIALOG_TITLE},
1252 {"safetyCheckPasswordsButton",
1253 IDS_SETTINGS_SAFETY_CHECK_PASSWORDS_BUTTON},
1254 {"safetyCheckSafeBrowsingButton",
1255 IDS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_BUTTON},
1256 {"safetyCheckSafeBrowsingButtonAriaLabel",
1257 IDS_SETTINGS_SAFETY_CHECK_SAFE_BROWSING_BUTTON_ARIA_LABEL},
1258 {"safetyCheckExtensionsPrimaryLabel",
1259 IDS_SETTINGS_SAFETY_CHECK_EXTENSIONS_PRIMARY_LABEL},
1260 {"safetyCheckExtensionsButton",
1261 IDS_SETTINGS_SAFETY_CHECK_EXTENSIONS_BUTTON},
1262 {"safetyCheckExtensionsButtonAriaLabel",
1263 IDS_SETTINGS_SAFETY_CHECK_EXTENSIONS_BUTTON_ARIA_LABEL},
1264 };
1265 AddLocalizedStringsBulk(html_source, kLocalizedStrings);
1266
1267 html_source->AddString("cookiesSettingsHelpCenterURL",
1268 chrome::kCookiesSettingsHelpCenterURL);
1269
1270 html_source->AddString("safeBrowsingHelpCenterURL",
1271 chrome::kSafeBrowsingHelpCenterURL);
1272
1273 html_source->AddString("syncAndGoogleServicesLearnMoreURL",
1274 chrome::kSyncAndGoogleServicesLearnMoreURL);
1275
1276 html_source->AddString(
1277 "doNotTrackDialogMessage",
1278 l10n_util::GetStringFUTF16(
1279 IDS_SETTINGS_ENABLE_DO_NOT_TRACK_DIALOG_TEXT,
1280 #if defined(OS_CHROMEOS)
1281 GetHelpUrlWithBoard(chrome::kDoNotTrackLearnMoreURL)));
1282 #else
1283 base::ASCIIToUTF16(chrome::kDoNotTrackLearnMoreURL)));
1284 #endif
1285 html_source->AddString(
1286 "exceptionsLearnMoreURL",
1287 base::ASCIIToUTF16(chrome::kContentSettingsExceptionsLearnMoreURL));
1288 html_source->AddBoolean(
1289 "installedAppsInCbd",
1290 base::FeatureList::IsEnabled(features::kStoragePressureUI));
1291 html_source->AddBoolean(
1292 "driveSuggestAvailable",
1293 base::FeatureList::IsEnabled(omnibox::kDocumentProvider));
1294 html_source->AddBoolean("showSecureDnsSetting",
1295 features::kDnsOverHttpsShowUiParam.Get());
1296
1297 // The link to the Advanced Protection Program landing page, with a referrer
1298 // from Chrome settings.
1299 GURL advanced_protection_url(
1300 "https://landing.google.com/advancedprotection/");
1301 advanced_protection_url = net::AppendQueryParameter(advanced_protection_url,
1302 "utm_source", "Chrome");
1303 advanced_protection_url = net::AppendQueryParameter(
1304 advanced_protection_url, "utm_medium", "ChromeSecuritySettings");
1305 advanced_protection_url = net::AppendQueryParameter(
1306 advanced_protection_url, "utm_campaign", "ChromeSettings");
1307 html_source->AddString("advancedProtectionURL",
1308 advanced_protection_url.spec());
1309
1310 AddPersonalizationOptionsStrings(html_source);
1311 }
1312
AddSearchInSettingsStrings(content::WebUIDataSource * html_source)1313 void AddSearchInSettingsStrings(content::WebUIDataSource* html_source) {
1314 static constexpr webui::LocalizedString kLocalizedStrings[] = {
1315 {"searchPrompt", IDS_SETTINGS_SEARCH_PROMPT},
1316 {"searchNoResults", IDS_SEARCH_NO_RESULTS},
1317 {"searchResults", IDS_SEARCH_RESULTS},
1318 // TODO(dpapad): IDS_DOWNLOAD_CLEAR_SEARCH and IDS_HISTORY_CLEAR_SEARCH
1319 // are identical, merge them to one and re-use here.
1320 {"clearSearch", IDS_DOWNLOAD_CLEAR_SEARCH},
1321 };
1322 AddLocalizedStringsBulk(html_source, kLocalizedStrings);
1323
1324 base::string16 help_text = l10n_util::GetStringFUTF16(
1325 IDS_SETTINGS_SEARCH_NO_RESULTS_HELP,
1326 base::ASCIIToUTF16(chrome::kSettingsSearchHelpURL));
1327 html_source->AddString("searchNoResultsHelp", help_text);
1328 }
1329
AddSearchStrings(content::WebUIDataSource * html_source)1330 void AddSearchStrings(content::WebUIDataSource* html_source) {
1331 static constexpr webui::LocalizedString kLocalizedStrings[] = {
1332 {"searchEnginesManage", IDS_SETTINGS_SEARCH_MANAGE_SEARCH_ENGINES},
1333 {"searchPageTitle", IDS_SETTINGS_SEARCH},
1334
1335 };
1336 AddLocalizedStringsBulk(html_source, kLocalizedStrings);
1337
1338 html_source->AddString("searchExplanation",
1339 l10n_util::GetStringFUTF16(
1340 IDS_SETTINGS_SEARCH_EXPLANATION,
1341 base::ASCIIToUTF16(chrome::kOmniboxLearnMoreURL)));
1342 }
1343
AddSearchEnginesStrings(content::WebUIDataSource * html_source)1344 void AddSearchEnginesStrings(content::WebUIDataSource* html_source) {
1345 static constexpr webui::LocalizedString kLocalizedStrings[] = {
1346 {"searchEnginesPageTitle", IDS_SETTINGS_SEARCH_ENGINES},
1347 {"searchEnginesAddSearchEngine",
1348 IDS_SETTINGS_SEARCH_ENGINES_ADD_SEARCH_ENGINE},
1349 {"searchEnginesEditSearchEngine",
1350 IDS_SETTINGS_SEARCH_ENGINES_EDIT_SEARCH_ENGINE},
1351 {"searchEngines", IDS_SETTINGS_SEARCH_ENGINES},
1352 {"searchEnginesDefault", IDS_SETTINGS_SEARCH_ENGINES_DEFAULT_ENGINES},
1353 {"searchEnginesOther", IDS_SETTINGS_SEARCH_ENGINES_OTHER_ENGINES},
1354 {"searchEnginesNoOtherEngines",
1355 IDS_SETTINGS_SEARCH_ENGINES_NO_OTHER_ENGINES},
1356 {"searchEnginesExtension", IDS_SETTINGS_SEARCH_ENGINES_EXTENSION_ENGINES},
1357 {"searchEnginesSearch", IDS_SETTINGS_SEARCH_ENGINES_SEARCH},
1358 {"searchEnginesSearchEngine", IDS_SETTINGS_SEARCH_ENGINES_SEARCH_ENGINE},
1359 {"searchEnginesKeyword", IDS_SETTINGS_SEARCH_ENGINES_KEYWORD},
1360 {"searchEnginesQueryURL", IDS_SETTINGS_SEARCH_ENGINES_QUERY_URL},
1361 {"searchEnginesQueryURLExplanation",
1362 IDS_SETTINGS_SEARCH_ENGINES_QUERY_URL_EXPLANATION},
1363 {"searchEnginesMakeDefault", IDS_SETTINGS_SEARCH_ENGINES_MAKE_DEFAULT},
1364 {"searchEnginesRemoveFromList",
1365 IDS_SETTINGS_SEARCH_ENGINES_REMOVE_FROM_LIST},
1366 {"searchEnginesManageExtension",
1367 IDS_SETTINGS_SEARCH_ENGINES_MANAGE_EXTENSION},
1368 };
1369 AddLocalizedStringsBulk(html_source, kLocalizedStrings);
1370 }
1371
AddSiteSettingsStrings(content::WebUIDataSource * html_source,Profile * profile)1372 void AddSiteSettingsStrings(content::WebUIDataSource* html_source,
1373 Profile* profile) {
1374 static constexpr webui::LocalizedString kLocalizedStrings[] = {
1375 {"addSite", IDS_SETTINGS_ADD_SITE},
1376 {"addSiteExceptionPlaceholder",
1377 IDS_SETTINGS_ADD_SITE_EXCEPTION_PLACEHOLDER},
1378 {"addSiteTitle", IDS_SETTINGS_ADD_SITE_TITLE},
1379 #if defined(OS_CHROMEOS)
1380 {"androidSmsNote", IDS_SETTINGS_ANDROID_SMS_NOTE},
1381 #endif
1382 {"appCacheOrigin", IDS_SETTINGS_COOKIES_LOCAL_STORAGE_ORIGIN_LABEL},
1383 {"cookieAppCache", IDS_SETTINGS_COOKIES_APPLICATION_CACHE},
1384 {"cookieCacheStorage", IDS_SETTINGS_COOKIES_CACHE_STORAGE},
1385 {"cookieDatabaseStorage", IDS_SETTINGS_COOKIES_DATABASE_STORAGE},
1386 {"cookieFileSystem", IDS_SETTINGS_COOKIES_FILE_SYSTEM},
1387 {"cookieFlashLso", IDS_SETTINGS_COOKIES_FLASH_LSO},
1388 {"cookieLocalStorage", IDS_SETTINGS_COOKIES_LOCAL_STORAGE},
1389 {"cookieMediaLicense", IDS_SETTINGS_COOKIES_MEDIA_LICENSE},
1390 {"cookieServiceWorker", IDS_SETTINGS_COOKIES_SERVICE_WORKER},
1391 {"cookieSharedWorker", IDS_SETTINGS_COOKIES_SHARED_WORKER},
1392 {"embeddedOnAnyHost", IDS_SETTINGS_EXCEPTIONS_EMBEDDED_ON_ANY_HOST},
1393 {"embeddedOnHost", IDS_SETTINGS_EXCEPTIONS_EMBEDDED_ON_HOST},
1394 {"editSiteTitle", IDS_SETTINGS_EDIT_SITE_TITLE},
1395 {"appCacheManifest", IDS_SETTINGS_COOKIES_APPLICATION_CACHE_MANIFEST_LABEL},
1396 {"cacheStorageLastModified",
1397 IDS_SETTINGS_COOKIES_LOCAL_STORAGE_LAST_MODIFIED_LABEL},
1398 {"cacheStorageOrigin", IDS_SETTINGS_COOKIES_LOCAL_STORAGE_ORIGIN_LABEL},
1399 {"cacheStorageSize", IDS_SETTINGS_COOKIES_LOCAL_STORAGE_SIZE_ON_DISK_LABEL},
1400 {"cookieAccessibleToScript",
1401 IDS_SETTINGS_COOKIES_COOKIE_ACCESSIBLE_TO_SCRIPT_LABEL},
1402 {"cookieContent", IDS_SETTINGS_COOKIES_COOKIE_CONTENT_LABEL},
1403 {"cookieCreated", IDS_SETTINGS_COOKIES_COOKIE_CREATED_LABEL},
1404 {"cookieDomain", IDS_SETTINGS_COOKIES_COOKIE_DOMAIN_LABEL},
1405 {"cookieExpires", IDS_SETTINGS_COOKIES_COOKIE_EXPIRES_LABEL},
1406 {"cookieName", IDS_SETTINGS_COOKIES_COOKIE_NAME_LABEL},
1407 {"cookiePath", IDS_SETTINGS_COOKIES_COOKIE_PATH_LABEL},
1408 {"cookieSendFor", IDS_SETTINGS_COOKIES_COOKIE_SENDFOR_LABEL},
1409 {"databaseOrigin", IDS_SETTINGS_COOKIES_LOCAL_STORAGE_ORIGIN_LABEL},
1410 {"fileSystemOrigin", IDS_SETTINGS_COOKIES_LOCAL_STORAGE_ORIGIN_LABEL},
1411 {"fileSystemPersistentUsage",
1412 IDS_SETTINGS_COOKIES_FILE_SYSTEM_PERSISTENT_USAGE_LABEL},
1413 {"fileSystemTemporaryUsage",
1414 IDS_SETTINGS_COOKIES_FILE_SYSTEM_TEMPORARY_USAGE_LABEL},
1415 {"indexedDbSize", IDS_SETTINGS_COOKIES_LOCAL_STORAGE_SIZE_ON_DISK_LABEL},
1416 {"indexedDbLastModified",
1417 IDS_SETTINGS_COOKIES_LOCAL_STORAGE_LAST_MODIFIED_LABEL},
1418 {"indexedDbOrigin", IDS_SETTINGS_COOKIES_LOCAL_STORAGE_ORIGIN_LABEL},
1419 {"localStorageLastModified",
1420 IDS_SETTINGS_COOKIES_LOCAL_STORAGE_LAST_MODIFIED_LABEL},
1421 {"localStorageOrigin", IDS_SETTINGS_COOKIES_LOCAL_STORAGE_ORIGIN_LABEL},
1422 {"localStorageSize", IDS_SETTINGS_COOKIES_LOCAL_STORAGE_SIZE_ON_DISK_LABEL},
1423 {"mediaLicenseOrigin", IDS_SETTINGS_COOKIES_LOCAL_STORAGE_ORIGIN_LABEL},
1424 {"mediaLicenseSize", IDS_SETTINGS_COOKIES_LOCAL_STORAGE_SIZE_ON_DISK_LABEL},
1425 {"mediaLicenseLastModified",
1426 IDS_SETTINGS_COOKIES_LOCAL_STORAGE_LAST_MODIFIED_LABEL},
1427 {"noBluetoothDevicesFound", IDS_SETTINGS_NO_BLUETOOTH_DEVICES_FOUND},
1428 {"noHidDevicesFound", IDS_SETTINGS_NO_HID_DEVICES_FOUND},
1429 {"noSerialPortsFound", IDS_SETTINGS_NO_SERIAL_PORTS_FOUND},
1430 {"noUsbDevicesFound", IDS_SETTINGS_NO_USB_DEVICES_FOUND},
1431 {"serviceWorkerOrigin", IDS_SETTINGS_COOKIES_LOCAL_STORAGE_ORIGIN_LABEL},
1432 {"serviceWorkerSize",
1433 IDS_SETTINGS_COOKIES_LOCAL_STORAGE_SIZE_ON_DISK_LABEL},
1434 {"sharedWorkerWorker", IDS_SETTINGS_COOKIES_SHARED_WORKER_WORKER_LABEL},
1435 {"sharedWorkerName", IDS_SETTINGS_COOKIES_COOKIE_NAME_LABEL},
1436 {"siteSettingsCategoryPageTitle", IDS_SETTINGS_SITE_SETTINGS_CATEGORY},
1437 {"siteSettingsRecentPermissionsSectionLabel",
1438 IDS_SETTINGS_SITE_SETTINGS_RECENT_ACTIVITY},
1439 {"siteSettingsCategoryCamera", IDS_SETTINGS_SITE_SETTINGS_CAMERA},
1440 {"siteSettingsCameraLabel", IDS_SETTINGS_SITE_SETTINGS_CAMERA_LABEL},
1441 {"cookiePageTitle", IDS_SETTINGS_COOKIES_PAGE},
1442 {"cookiePageGeneralControls", IDS_SETTINGS_COOKIES_CONTROLS},
1443 {"cookiePageAllowAll", IDS_SETTINGS_COOKIES_ALLOW_ALL},
1444 {"cookiePageAllowAllBulOne", IDS_SETTINGS_COOKIES_ALLOW_ALL_BULLET_ONE},
1445 {"cookiePageAllowAllBulTwo", IDS_SETTINGS_COOKIES_ALLOW_ALL_BULLET_TWO},
1446 {"cookiePageBlockThirdIncognito",
1447 IDS_SETTINGS_COOKIES_BLOCK_THIRD_PARTY_INCOGNITO},
1448 {"cookiePageBlockThirdIncognitoBulOne",
1449 IDS_SETTINGS_COOKIES_BLOCK_THIRD_PARTY_INCOGNITO_BULLET_ONE},
1450 {"cookiePageBlockThirdIncognitoBulTwo",
1451 IDS_SETTINGS_COOKIES_BLOCK_THIRD_PARTY_INCOGNITO_BULLET_TWO},
1452 {"cookiePageBlockThird", IDS_SETTINGS_COOKIES_BLOCK_THIRD_PARTY},
1453 {"cookiePageBlockThirdBulOne",
1454 IDS_SETTINGS_COOKIES_BLOCK_THIRD_PARTY_BULLET_ONE},
1455 {"cookiePageBlockThirdBulTwo",
1456 IDS_SETTINGS_COOKIES_BLOCK_THIRD_PARTY_BULLET_TWO},
1457 {"cookiePageBlockAll", IDS_SETTINGS_COOKIES_BLOCK_ALL},
1458 {"cookiePageBlockAllBulOne", IDS_SETTINGS_COOKIES_BLOCK_ALL_BULLET_ONE},
1459 {"cookiePageBlockAllBulTwo", IDS_SETTINGS_COOKIES_BLOCK_ALL_BULLET_TWO},
1460 {"cookiePageBlockAllBulThree", IDS_SETTINGS_COOKIES_BLOCK_ALL_BULLET_THREE},
1461 {"cookiePageClearOnExit", IDS_SETTINGS_COOKIES_CLEAR_ON_EXIT},
1462 {"cookiePageAllowExceptions", IDS_SETTINGS_COOKIES_ALLOW_EXCEPTIONS},
1463 {"cookiePageBlockExceptions", IDS_SETTINGS_COOKIES_BLOCK_EXCEPTIONS},
1464 {"cookiePageSessionOnlyExceptions",
1465 IDS_SETTINGS_COOKIES_SESSION_ONLY_EXCEPTIONS},
1466 {"cookiesManageSiteSpecificExceptions",
1467 IDS_SETTINGS_COOKIES_SITE_SPECIFIC_EXCEPTIONS},
1468 {"siteSettingsCategoryCookies", IDS_SETTINGS_SITE_SETTINGS_COOKIES},
1469 {"siteSettingsCategoryHandlers", IDS_SETTINGS_SITE_SETTINGS_HANDLERS},
1470 {"siteSettingsCategoryImages", IDS_SETTINGS_SITE_SETTINGS_IMAGES},
1471 {"siteSettingsCategoryInsecureContent",
1472 IDS_SETTINGS_SITE_SETTINGS_INSECURE_CONTENT},
1473 {"siteSettingsCategoryLocation", IDS_SETTINGS_SITE_SETTINGS_LOCATION},
1474 {"siteSettingsCategoryJavascript", IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT},
1475 {"siteSettingsCategoryMicrophone", IDS_SETTINGS_SITE_SETTINGS_MIC},
1476 {"siteSettingsMicrophoneLabel", IDS_SETTINGS_SITE_SETTINGS_MIC_LABEL},
1477 {"siteSettingsCategoryNotifications",
1478 IDS_SETTINGS_SITE_SETTINGS_NOTIFICATIONS},
1479 {"siteSettingsNotificationsAsk",
1480 IDS_SETTINGS_SITE_SETTINGS_NOTIFICATIONS_ASK},
1481 {"siteSettingsNotificationsBlock",
1482 IDS_SETTINGS_SITE_SETTINGS_NOTIFICATIONS_BLOCK},
1483 {"siteSettingsEnableQuietNotificationPrompts",
1484 IDS_SETTINGS_SITE_SETTINGS_ENABLE_QUIET_NOTIFICATION_PROMPTS},
1485 {"siteSettingsCategoryPopups", IDS_SETTINGS_SITE_SETTINGS_POPUPS},
1486 {"siteSettingsCategoryZoomLevels", IDS_SETTINGS_SITE_SETTINGS_ZOOM_LEVELS},
1487 {"siteSettingsAllSites", IDS_SETTINGS_SITE_SETTINGS_ALL_SITES},
1488 {"siteSettingsAllSitesDescription",
1489 IDS_SETTINGS_SITE_SETTINGS_ALL_SITES_DESCRIPTION},
1490 {"siteSettingsAllSitesSearch", IDS_SETTINGS_SITE_SETTINGS_ALL_SITES_SEARCH},
1491 {"siteSettingsAllSitesSort", IDS_SETTINGS_SITE_SETTINGS_ALL_SITES_SORT},
1492 {"siteSettingsAllSitesSortMethodMostVisited",
1493 IDS_SETTINGS_SITE_SETTINGS_ALL_SITES_SORT_METHOD_MOST_VISITED},
1494 {"siteSettingsAllSitesSortMethodStorage",
1495 IDS_SETTINGS_SITE_SETTINGS_ALL_SITES_SORT_METHOD_STORAGE},
1496 {"siteSettingsAllSitesSortMethodName",
1497 IDS_SETTINGS_SITE_SETTINGS_ALL_SITES_SORT_METHOD_NAME},
1498 {"siteSettingsSiteRepresentationSeparator",
1499 IDS_SETTINGS_SITE_SETTINGS_SITE_REPRESENTATION_SEPARATOR},
1500 {"siteSettingsAutomaticDownloads",
1501 IDS_SETTINGS_SITE_SETTINGS_AUTOMATIC_DOWNLOADS},
1502 {"siteSettingsBackgroundSync", IDS_SETTINGS_SITE_SETTINGS_BACKGROUND_SYNC},
1503 {"siteSettingsCamera", IDS_SETTINGS_SITE_SETTINGS_CAMERA},
1504 {"siteSettingsClipboard", IDS_SETTINGS_SITE_SETTINGS_CLIPBOARD},
1505 {"siteSettingsClipboardAsk", IDS_SETTINGS_SITE_SETTINGS_CLIPBOARD_ASK},
1506 {"siteSettingsClipboardAskRecommended",
1507 IDS_SETTINGS_SITE_SETTINGS_CLIPBOARD_ASK_RECOMMENDED},
1508 {"siteSettingsClipboardBlock", IDS_SETTINGS_SITE_SETTINGS_CLIPBOARD_BLOCK},
1509 {"siteSettingsCookies", IDS_SETTINGS_SITE_SETTINGS_COOKIES},
1510 {"siteSettingsHandlers", IDS_SETTINGS_SITE_SETTINGS_HANDLERS},
1511 {"siteSettingsLocation", IDS_SETTINGS_SITE_SETTINGS_LOCATION},
1512 {"siteSettingsMic", IDS_SETTINGS_SITE_SETTINGS_MIC},
1513 {"siteSettingsNotifications", IDS_SETTINGS_SITE_SETTINGS_NOTIFICATIONS},
1514 {"siteSettingsImages", IDS_SETTINGS_SITE_SETTINGS_IMAGES},
1515 {"siteSettingsInsecureContent",
1516 IDS_SETTINGS_SITE_SETTINGS_INSECURE_CONTENT},
1517 {"siteSettingsInsecureContentBlock",
1518 IDS_SETTINGS_SITE_SETTINGS_INSECURE_CONTENT_BLOCK},
1519 {"siteSettingsJavascript", IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT},
1520 {"siteSettingsSound", IDS_SETTINGS_SITE_SETTINGS_SOUND},
1521 {"siteSettingsSoundAllow", IDS_SETTINGS_SITE_SETTINGS_SOUND_ALLOW},
1522 {"siteSettingsSoundAllowRecommended",
1523 IDS_SETTINGS_SITE_SETTINGS_SOUND_ALLOW_RECOMMENDED},
1524 {"siteSettingsSoundBlock", IDS_SETTINGS_SITE_SETTINGS_SOUND_BLOCK},
1525 {"siteSettingsFlash", IDS_SETTINGS_SITE_SETTINGS_FLASH},
1526 {"siteSettingsFlashAskFirst", IDS_SETTINGS_SITE_SETTINGS_ASK_FIRST},
1527 {"siteSettingsFlashBlock", IDS_SETTINGS_SITE_SETTINGS_FLASH_BLOCK},
1528 {"siteSettingsFlashBlockRecommended",
1529 IDS_SETTINGS_SITE_SETTINGS_FLASH_BLOCK_RECOMMENDED},
1530 {"siteSettingsFlashPermissionsEphemeral",
1531 IDS_SETTINGS_SITE_SETTINGS_FLASH_PERMISSIONS_ARE_EPHEMERAL},
1532 {"siteSettingsPdfDocuments", IDS_SETTINGS_SITE_SETTINGS_PDF_DOCUMENTS},
1533 {"siteSettingsPdfDownloadPdfs",
1534 IDS_SETTINGS_SITE_SETTINGS_PDF_DOWNLOAD_PDFS},
1535 {"siteSettingsProtectedContent",
1536 IDS_SETTINGS_SITE_SETTINGS_PROTECTED_CONTENT},
1537 {"siteSettingsProtectedContentIdentifiers",
1538 IDS_SETTINGS_SITE_SETTINGS_PROTECTED_CONTENT_IDENTIFIERS},
1539 {"siteSettingsProtectedContentEnable",
1540 IDS_SETTINGS_SITE_SETTINGS_PROTECTED_CONTENT_ENABLE},
1541 #if defined(OS_CHROMEOS) || defined(OS_WIN)
1542 {"siteSettingsProtectedContentIdentifiersExplanation",
1543 IDS_SETTINGS_SITE_SETTINGS_PROTECTED_CONTENT_IDENTIFIERS_EXPLANATION},
1544 {"siteSettingsProtectedContentEnableIdentifiers",
1545 IDS_SETTINGS_SITE_SETTINGS_PROTECTED_CONTENT_ENABLE_IDENTIFIERS},
1546 #endif
1547 {"siteSettingsPopups", IDS_SETTINGS_SITE_SETTINGS_POPUPS},
1548 {"siteSettingsUnsandboxedPlugins",
1549 IDS_SETTINGS_SITE_SETTINGS_UNSANDBOXED_PLUGINS},
1550 {"siteSettingsHidDevices", IDS_SETTINGS_SITE_SETTINGS_HID_DEVICES},
1551 {"siteSettingsHidDevicesAsk", IDS_SETTINGS_SITE_SETTINGS_HID_DEVICES_ASK},
1552 {"siteSettingsHidDevicesAskRecommended",
1553 IDS_SETTINGS_SITE_SETTINGS_HID_DEVICES_ASK_RECOMMENDED},
1554 {"siteSettingsHidDevicesBlock",
1555 IDS_SETTINGS_SITE_SETTINGS_HID_DEVICES_BLOCK},
1556 {"siteSettingsMidiDevices", IDS_SETTINGS_SITE_SETTINGS_MIDI_DEVICES},
1557 {"siteSettingsMidiDevicesAsk", IDS_SETTINGS_SITE_SETTINGS_MIDI_DEVICES_ASK},
1558 {"siteSettingsMidiDevicesAskRecommended",
1559 IDS_SETTINGS_SITE_SETTINGS_MIDI_DEVICES_ASK_RECOMMENDED},
1560 {"siteSettingsMidiDevicesBlock",
1561 IDS_SETTINGS_SITE_SETTINGS_MIDI_DEVICES_BLOCK},
1562 {"siteSettingsSerialPorts", IDS_SETTINGS_SITE_SETTINGS_SERIAL_PORTS},
1563 {"siteSettingsSerialPortsAsk", IDS_SETTINGS_SITE_SETTINGS_SERIAL_PORTS_ASK},
1564 {"siteSettingsSerialPortsAskRecommended",
1565 IDS_SETTINGS_SITE_SETTINGS_SERIAL_PORTS_ASK_RECOMMENDED},
1566 {"siteSettingsSerialPortsBlock",
1567 IDS_SETTINGS_SITE_SETTINGS_SERIAL_PORTS_BLOCK},
1568 {"siteSettingsUsbDevices", IDS_SETTINGS_SITE_SETTINGS_USB_DEVICES},
1569 {"siteSettingsUsbDevicesAsk", IDS_SETTINGS_SITE_SETTINGS_USB_DEVICES_ASK},
1570 {"siteSettingsUsbDevicesAskRecommended",
1571 IDS_SETTINGS_SITE_SETTINGS_USB_DEVICES_ASK_RECOMMENDED},
1572 {"siteSettingsUsbDevicesBlock",
1573 IDS_SETTINGS_SITE_SETTINGS_USB_DEVICES_BLOCK},
1574 {"siteSettingsBluetoothDevices",
1575 IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_DEVICES},
1576 {"siteSettingsBluetoothDevicesAsk",
1577 IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_DEVICES_ASK},
1578 {"siteSettingsBluetoothDevicesAskRecommended",
1579 IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_DEVICES_ASK_RECOMMENDED},
1580 {"siteSettingsBluetoothDevicesBlock",
1581 IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_DEVICES_BLOCK},
1582 {"siteSettingsNativeFileSystemWrite",
1583 IDS_SETTINGS_SITE_SETTINGS_NATIVE_FILE_SYSTEM_WRITE},
1584 {"siteSettingsNativeFileSystemWriteAsk",
1585 IDS_SETTINGS_SITE_SETTINGS_NATIVE_FILE_SYSTEM_WRITE_ASK},
1586 {"siteSettingsNativeFileSystemWriteAskRecommended",
1587 IDS_SETTINGS_SITE_SETTINGS_NATIVE_FILE_SYSTEM_WRITE_ASK_RECOMMENDED},
1588 {"siteSettingsNativeFileSystemWriteBlock",
1589 IDS_SETTINGS_SITE_SETTINGS_NATIVE_FILE_SYSTEM_WRITE_BLOCK},
1590 {"siteSettingsRemoveZoomLevel",
1591 IDS_SETTINGS_SITE_SETTINGS_REMOVE_ZOOM_LEVEL},
1592 {"siteSettingsZoomLevels", IDS_SETTINGS_SITE_SETTINGS_ZOOM_LEVELS},
1593 {"siteSettingsNoZoomedSites", IDS_SETTINGS_SITE_SETTINGS_NO_ZOOMED_SITES},
1594 {"siteSettingsMaySaveCookies", IDS_SETTINGS_SITE_SETTINGS_MAY_SAVE_COOKIES},
1595 {"siteSettingsAskFirst", IDS_SETTINGS_SITE_SETTINGS_ASK_FIRST},
1596 {"siteSettingsAskFirstRecommended",
1597 IDS_SETTINGS_SITE_SETTINGS_ASK_FIRST_RECOMMENDED},
1598 {"siteSettingsAskBeforeAccessing",
1599 IDS_SETTINGS_SITE_SETTINGS_ASK_BEFORE_ACCESSING},
1600 {"siteSettingsAskBeforeAccessingRecommended",
1601 IDS_SETTINGS_SITE_SETTINGS_ASK_BEFORE_ACCESSING_RECOMMENDED},
1602 {"siteSettingsAskBeforeSending",
1603 IDS_SETTINGS_SITE_SETTINGS_ASK_BEFORE_SENDING},
1604 {"siteSettingsAskBeforeSendingRecommended",
1605 IDS_SETTINGS_SITE_SETTINGS_ASK_BEFORE_SENDING_RECOMMENDED},
1606 {"siteSettingsAllowRecentlyClosedSites",
1607 IDS_SETTINGS_SITE_SETTINGS_ALLOW_RECENTLY_CLOSED_SITES},
1608 {"siteSettingsAllowRecentlyClosedSitesRecommended",
1609 IDS_SETTINGS_SITE_SETTINGS_ALLOW_RECENTLY_CLOSED_SITES_RECOMMENDED},
1610 {"siteSettingsBackgroundSyncBlocked",
1611 IDS_SETTINGS_SITE_SETTINGS_BACKGROUND_SYNC_BLOCKED},
1612 {"siteSettingsHandlersAsk", IDS_SETTINGS_SITE_SETTINGS_HANDLERS_ASK},
1613 {"siteSettingsHandlersAskRecommended",
1614 IDS_SETTINGS_SITE_SETTINGS_HANDLERS_ASK_RECOMMENDED},
1615 {"siteSettingsHandlersBlocked",
1616 IDS_SETTINGS_SITE_SETTINGS_HANDLERS_BLOCKED},
1617 {"siteSettingsAutoDownloadAsk",
1618 IDS_SETTINGS_SITE_SETTINGS_AUTOMATIC_DOWNLOAD_ASK},
1619 {"siteSettingsAutoDownloadAskRecommended",
1620 IDS_SETTINGS_SITE_SETTINGS_AUTOMATIC_DOWNLOAD_ASK_RECOMMENDED},
1621 {"siteSettingsAutoDownloadBlock",
1622 IDS_SETTINGS_SITE_SETTINGS_AUTOMATIC_DOWNLOAD_BLOCK},
1623 {"siteSettingsUnsandboxedPluginsAsk",
1624 IDS_SETTINGS_SITE_SETTINGS_UNSANDBOXED_PLUGINS_ASK},
1625 {"siteSettingsUnsandboxedPluginsAskRecommended",
1626 IDS_SETTINGS_SITE_SETTINGS_UNSANDBOXED_PLUGINS_ASK_RECOMMENDED},
1627 {"siteSettingsUnsandboxedPluginsBlock",
1628 IDS_SETTINGS_SITE_SETTINGS_UNSANDBOXED_PLUGINS_BLOCK},
1629 {"siteSettingsDontShowImages", IDS_SETTINGS_SITE_SETTINGS_DONT_SHOW_IMAGES},
1630 {"siteSettingsShowAll", IDS_SETTINGS_SITE_SETTINGS_SHOW_ALL},
1631 {"siteSettingsShowAllRecommended",
1632 IDS_SETTINGS_SITE_SETTINGS_SHOW_ALL_RECOMMENDED},
1633 {"siteSettingsCookiesAllowed",
1634 IDS_SETTINGS_SITE_SETTINGS_COOKIES_ALLOW_SITES},
1635 {"siteSettingsCookiesAllowedRecommended",
1636 IDS_SETTINGS_SITE_SETTINGS_COOKIES_ALLOW_SITES_RECOMMENDED},
1637 {"siteSettingsAllow", IDS_SETTINGS_SITE_SETTINGS_ALLOW},
1638 {"siteSettingsBlock", IDS_SETTINGS_SITE_SETTINGS_BLOCK},
1639 {"siteSettingsBlockSound", IDS_SETTINGS_SITE_SETTINGS_BLOCK_SOUND},
1640 {"siteSettingsSessionOnly", IDS_SETTINGS_SITE_SETTINGS_SESSION_ONLY},
1641 {"siteSettingsAllowed", IDS_SETTINGS_SITE_SETTINGS_ALLOWED},
1642 {"siteSettingsAllowedRecommended",
1643 IDS_SETTINGS_SITE_SETTINGS_ALLOWED_RECOMMENDED},
1644 {"siteSettingsBlocked", IDS_SETTINGS_SITE_SETTINGS_BLOCKED},
1645 {"siteSettingsBlockedRecommended",
1646 IDS_SETTINGS_SITE_SETTINGS_BLOCKED_RECOMMENDED},
1647 {"siteSettingsSiteUrl", IDS_SETTINGS_SITE_SETTINGS_SITE_URL},
1648 {"siteSettingsActionAskDefault",
1649 IDS_SETTINGS_SITE_SETTINGS_ASK_DEFAULT_MENU},
1650 {"siteSettingsActionAllowDefault",
1651 IDS_SETTINGS_SITE_SETTINGS_ALLOW_DEFAULT_MENU},
1652 {"siteSettingsActionAutomaticDefault",
1653 IDS_SETTINGS_SITE_SETTINGS_AUTOMATIC_DEFAULT_MENU},
1654 {"siteSettingsActionBlockDefault",
1655 IDS_SETTINGS_SITE_SETTINGS_BLOCK_DEFAULT_MENU},
1656 {"siteSettingsActionMuteDefault",
1657 IDS_SETTINGS_SITE_SETTINGS_MUTE_DEFAULT_MENU},
1658 {"siteSettingsActionAllow", IDS_SETTINGS_SITE_SETTINGS_ALLOW_MENU},
1659 {"siteSettingsActionBlock", IDS_SETTINGS_SITE_SETTINGS_BLOCK_MENU},
1660 {"siteSettingsActionAsk", IDS_SETTINGS_SITE_SETTINGS_ASK_MENU},
1661 {"siteSettingsActionMute", IDS_SETTINGS_SITE_SETTINGS_MUTE_MENU},
1662 {"siteSettingsActionReset", IDS_SETTINGS_SITE_SETTINGS_RESET_MENU},
1663 {"siteSettingsActionSessionOnly",
1664 IDS_SETTINGS_SITE_SETTINGS_SESSION_ONLY_MENU},
1665 {"siteSettingsUsage", IDS_SETTINGS_SITE_SETTINGS_USAGE},
1666 {"siteSettingsUsageNone", IDS_SETTINGS_SITE_SETTINGS_USAGE_NONE},
1667 {"siteSettingsPermissions", IDS_SETTINGS_SITE_SETTINGS_PERMISSIONS},
1668 {"siteSettingsPermissionsMore",
1669 IDS_SETTINGS_SITE_SETTINGS_PERMISSIONS_MORE},
1670 {"siteSettingsContent", IDS_SETTINGS_SITE_SETTINGS_CONTENT},
1671 {"siteSettingsContentMore", IDS_SETTINGS_SITE_SETTINGS_CONTENT_MORE},
1672 {"siteSettingsSourceExtensionAllow",
1673 IDS_PAGE_INFO_PERMISSION_ALLOWED_BY_EXTENSION},
1674 {"siteSettingsSourceExtensionBlock",
1675 IDS_PAGE_INFO_PERMISSION_BLOCKED_BY_EXTENSION},
1676 {"siteSettingsSourceExtensionAsk",
1677 IDS_PAGE_INFO_PERMISSION_ASK_BY_EXTENSION},
1678 {"siteSettingsSourcePolicyAllow",
1679 IDS_PAGE_INFO_PERMISSION_ALLOWED_BY_POLICY},
1680 {"siteSettingsSourcePolicyBlock",
1681 IDS_PAGE_INFO_PERMISSION_BLOCKED_BY_POLICY},
1682 {"siteSettingsSourcePolicyAsk", IDS_PAGE_INFO_PERMISSION_ASK_BY_POLICY},
1683 {"siteSettingsAdsBlockNotBlacklistedSingular",
1684 IDS_SETTINGS_SITE_SETTINGS_ADS_BLOCK_NOT_BLACKLISTED_SINGULAR},
1685 {"siteSettingsAdsBlockBlacklistedSingular",
1686 IDS_SETTINGS_SITE_SETTINGS_ADS_BLOCK_BLACKLISTED_SINGULAR},
1687 {"siteSettingsSourceDrmDisabled",
1688 IDS_SETTINGS_SITE_SETTINGS_SOURCE_DRM_DISABLED},
1689 {"siteSettingsSourceEmbargo",
1690 IDS_PAGE_INFO_PERMISSION_AUTOMATICALLY_BLOCKED},
1691 {"siteSettingsSourceInsecureOrigin",
1692 IDS_SETTINGS_SITE_SETTINGS_SOURCE_INSECURE_ORIGIN},
1693 {"siteSettingsSourceKillSwitch",
1694 IDS_SETTINGS_SITE_SETTINGS_SOURCE_KILL_SWITCH},
1695 {"siteSettingsReset", IDS_SETTINGS_SITE_SETTINGS_RESET_BUTTON},
1696 {"siteSettingsCookieHeader", IDS_SETTINGS_SITE_SETTINGS_COOKIE_HEADER},
1697 {"siteSettingsCookieLink", IDS_SETTINGS_SITE_SETTINGS_COOKIE_LINK},
1698 {"siteSettingsCookieRemove", IDS_SETTINGS_SITE_SETTINGS_COOKIE_REMOVE},
1699 {"siteSettingsCookieRemoveAll",
1700 IDS_SETTINGS_SITE_SETTINGS_COOKIE_REMOVE_ALL},
1701 {"siteSettingsCookieRemoveAllShown",
1702 IDS_SETTINGS_SITE_SETTINGS_COOKIE_REMOVE_ALL_SHOWN},
1703 {"siteSettingsCookieRemoveAllThirdParty",
1704 IDS_SETTINGS_SITE_SETTINGS_COOKIE_REMOVE_ALL_THIRD_PARTY},
1705 {"siteSettingsCookieRemoveThirdPartyDialogTitle",
1706 IDS_SETTINGS_SITE_SETTINGS_THIRD_PARTY_COOKIE_REMOVE_DIALOG_TITLE},
1707 {"siteSettingsCookieRemoveThirdPartyConfirmation",
1708 IDS_SETTINGS_SITE_SETTINGS_THIRD_PARTY_COOKIE_REMOVE_CONFIRMATION},
1709 {"siteSettingsCookiesClearThirdParty",
1710 IDS_SETTINGS_SITE_SETTINGS_CLEAR_THIRD_PARTY_COOKIES},
1711 {"siteSettingsCookiesThirdPartyExceptionLabel",
1712 IDS_SETTINGS_SITE_SETTINGS_THIRD_PARTY_COOKIES_EXCEPTION_LABEL},
1713 {"siteSettingsCookieRemoveDialogTitle",
1714 IDS_SETTINGS_SITE_SETTINGS_COOKIE_REMOVE_DIALOG_TITLE},
1715 {"siteSettingsCookieRemoveMultipleConfirmation",
1716 IDS_SETTINGS_SITE_SETTINGS_COOKIE_REMOVE_MULTIPLE},
1717 {"siteSettingsCookieRemoveSite",
1718 IDS_SETTINGS_SITE_SETTINGS_COOKIE_REMOVE_SITE},
1719 {"siteSettingsCookiesClearAll",
1720 IDS_SETTINGS_SITE_SETTINGS_COOKIES_CLEAR_ALL},
1721 {"siteSettingsCookieSearch", IDS_SETTINGS_SITE_SETTINGS_COOKIE_SEARCH},
1722 {"siteSettingsCookieSubpage", IDS_SETTINGS_SITE_SETTINGS_COOKIE_SUBPAGE},
1723 {"siteSettingsDelete", IDS_SETTINGS_SITE_SETTINGS_DELETE},
1724 {"siteSettingsClearAllStorageDialogTitle",
1725 IDS_SETTINGS_SITE_SETTINGS_CLEAR_ALL_STORAGE_DIALOG_TITLE},
1726 {"siteSettingsClearAllStorageDescription",
1727 IDS_SETTINGS_SITE_SETTINGS_CLEAR_ALL_STORAGE_DESCRIPTION},
1728 {"siteSettingsClearAllStorageLabel",
1729 IDS_SETTINGS_SITE_SETTINGS_CLEAR_ALL_STORAGE_LABEL},
1730 {"siteSettingsClearAllStorageConfirmation",
1731 IDS_SETTINGS_SITE_SETTINGS_CLEAR_ALL_STORAGE_CONFIRMATION},
1732 {"siteSettingsClearAllStorageConfirmationInstalled",
1733 IDS_SETTINGS_SITE_SETTINGS_CLEAR_ALL_STORAGE_CONFIRMATION_INSTALLED},
1734 {"siteSettingsClearAllStorageSignOut",
1735 IDS_SETTINGS_SITE_SETTINGS_CLEAR_ALL_STORAGE_SIGN_OUT},
1736 {"siteSettingsOriginDeleteConfirmation",
1737 IDS_SETTINGS_SITE_SETTINGS_ORIGIN_DELETE_CONFIRMATION},
1738 {"siteSettingsOriginDeleteConfirmationInstalled",
1739 IDS_SETTINGS_SITE_SETTINGS_ORIGIN_DELETE_CONFIRMATION_INSTALLED},
1740 {"siteSettingsSiteGroupDeleteConfirmationInstalledPlural",
1741 IDS_SETTINGS_SITE_SETTINGS_SITE_GROUP_DELETE_CONFIRMATION_INSTALLED_PLURAL},
1742 {"siteSettingsSiteClearStorage",
1743 IDS_SETTINGS_SITE_SETTINGS_SITE_CLEAR_STORAGE},
1744 {"siteSettingsSiteClearStorageConfirmation",
1745 IDS_SETTINGS_SITE_SETTINGS_SITE_CLEAR_STORAGE_CONFIRMATION},
1746 {"siteSettingsSiteClearStorageConfirmationNew",
1747 IDS_SETTINGS_SITE_SETTINGS_SITE_CLEAR_STORAGE_CONFIRMATION_NEW},
1748 {"siteSettingsSiteClearStorageDialogTitle",
1749 IDS_SETTINGS_SITE_SETTINGS_SITE_CLEAR_STORAGE_DIALOG_TITLE},
1750 {"siteSettingsSiteClearStorageSignOut",
1751 IDS_SETTINGS_SITE_SETTINGS_SITE_CLEAR_STORAGE_SIGN_OUT},
1752 {"siteSettingsSiteClearStorageOfflineData",
1753 IDS_SETTINGS_SITE_SETTINGS_SITE_CLEAR_STORAGE_OFFLINE_DATA},
1754 {"siteSettingsSiteClearStorageApps",
1755 IDS_SETTINGS_SITE_SETTINGS_SITE_CLEAR_STORAGE_APPS},
1756 {"siteSettingsSiteGroupDelete", IDS_SETTINGS_SITE_SETTINGS_GROUP_DELETE},
1757 {"siteSettingsSiteGroupDeleteDialogTitle",
1758 IDS_SETTINGS_SITE_SETTINGS_SITE_GROUP_DELETE_DIALOG_TITLE},
1759 {"siteSettingsSiteGroupDeleteConfirmation",
1760 IDS_SETTINGS_SITE_SETTINGS_SITE_GROUP_DELETE_CONFIRMATION},
1761 {"siteSettingsSiteGroupDeleteConfirmationNew",
1762 IDS_SETTINGS_SITE_SETTINGS_SITE_GROUP_DELETE_CONFIRMATION_NEW},
1763 {"siteSettingsSiteGroupDeleteConfirmationInstalled",
1764 IDS_SETTINGS_SITE_SETTINGS_SITE_GROUP_DELETE_CONFIRMATION_INSTALLED},
1765 {"siteSettingsSiteGroupDeleteSignOut",
1766 IDS_SETTINGS_SITE_SETTINGS_SITE_GROUP_DELETE_SIGN_OUT},
1767 {"siteSettingsSiteGroupDeleteOfflineData",
1768 IDS_SETTINGS_SITE_SETTINGS_SITE_GROUP_DELETE_OFFLINE_DATA},
1769 {"siteSettingsSiteGroupDeleteApps",
1770 IDS_SETTINGS_SITE_SETTINGS_SITE_GROUP_DELETE_APPS},
1771 {"siteSettingsSiteGroupReset", IDS_SETTINGS_SITE_SETTINGS_GROUP_RESET},
1772 {"siteSettingsSiteGroupResetDialogTitle",
1773 IDS_SETTINGS_SITE_SETTINGS_SITE_GROUP_RESET_DIALOG_TITLE},
1774 {"siteSettingsSiteGroupResetConfirmation",
1775 IDS_SETTINGS_SITE_SETTINGS_SITE_GROUP_RESET_CONFIRMATION},
1776 {"siteSettingsSiteResetAll", IDS_SETTINGS_SITE_SETTINGS_SITE_RESET_ALL},
1777 {"siteSettingsSiteResetConfirmation",
1778 IDS_SETTINGS_SITE_SETTINGS_SITE_RESET_CONFIRMATION},
1779 {"thirdPartyCookie", IDS_NEW_TAB_OTR_THIRD_PARTY_COOKIE},
1780 {"thirdPartyCookieSublabel", IDS_NEW_TAB_OTR_THIRD_PARTY_COOKIE_SUBLABEL},
1781 {"deleteDataPostSession",
1782 IDS_SETTINGS_SITE_SETTINGS_DELETE_DATA_POST_SESSION},
1783 {"handlerIsDefault", IDS_SETTINGS_SITE_SETTINGS_HANDLER_IS_DEFAULT},
1784 {"handlerSetDefault", IDS_SETTINGS_SITE_SETTINGS_HANDLER_SET_DEFAULT},
1785 {"handlerRemove", IDS_SETTINGS_SITE_SETTINGS_REMOVE},
1786 {"adobeFlashStorage", IDS_SETTINGS_SITE_SETTINGS_ADOBE_FLASH_SETTINGS},
1787 {"incognitoSiteOnly", IDS_SETTINGS_SITE_SETTINGS_INCOGNITO_ONLY},
1788 {"incognitoSiteExceptionDesc",
1789 IDS_SETTINGS_SITE_SETTINGS_INCOGNITO_SITE_EXCEPTION_DESC},
1790 {"noSitesAdded", IDS_SETTINGS_SITE_NO_SITES_ADDED},
1791 {"siteSettingsAds", IDS_SETTINGS_SITE_SETTINGS_ADS},
1792 {"siteSettingsAdsBlock", IDS_SETTINGS_SITE_SETTINGS_ADS_BLOCK},
1793 {"siteSettingsAdsBlockRecommended",
1794 IDS_SETTINGS_SITE_SETTINGS_ADS_BLOCK_RECOMMENDED},
1795 {"siteSettingsPaymentHandler", IDS_SETTINGS_SITE_SETTINGS_PAYMENT_HANDLER},
1796 {"siteSettingsPaymentHandlerAllow",
1797 IDS_SETTINGS_SITE_SETTINGS_PAYMENT_HANDLER_ALLOW},
1798 {"siteSettingsPaymentHandlerAllowRecommended",
1799 IDS_SETTINGS_SITE_SETTINGS_PAYMENT_HANDLER_ALLOW_RECOMMENDED},
1800 {"siteSettingsPaymentHandlerBlock",
1801 IDS_SETTINGS_SITE_SETTINGS_PAYMENT_HANDLER_BLOCK},
1802 {"siteSettingsBlockAutoplaySetting",
1803 IDS_SETTINGS_SITE_SETTINGS_BLOCK_AUTOPLAY},
1804 {"emptyAllSitesPage", IDS_SETTINGS_SITE_SETTINGS_EMPTY_ALL_SITES_PAGE},
1805 {"noSitesFound", IDS_SETTINGS_SITE_SETTINGS_NO_SITES_FOUND},
1806 {"siteSettingsBluetoothScanning",
1807 IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_SCANNING},
1808 {"siteSettingsBluetoothScanningAsk",
1809 IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_SCANNING_ASK},
1810 {"siteSettingsBluetoothScanningAskRecommended",
1811 IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_SCANNING_ASK_RECOMMENDED},
1812 {"siteSettingsBluetoothScanningBlock",
1813 IDS_SETTINGS_SITE_SETTINGS_BLUETOOTH_SCANNING_BLOCK},
1814 {"siteSettingsAr", IDS_SETTINGS_SITE_SETTINGS_AR},
1815 {"siteSettingsArAsk", IDS_SETTINGS_SITE_SETTINGS_AR_ASK},
1816 {"siteSettingsArAskRecommended",
1817 IDS_SETTINGS_SITE_SETTINGS_AR_ASK_RECOMMENDED},
1818 {"siteSettingsArBlock", IDS_SETTINGS_SITE_SETTINGS_AR_BLOCK},
1819 {"siteSettingsVr", IDS_SETTINGS_SITE_SETTINGS_VR},
1820 {"siteSettingsVrAsk", IDS_SETTINGS_SITE_SETTINGS_VR_ASK},
1821 {"siteSettingsVrAskRecommended",
1822 IDS_SETTINGS_SITE_SETTINGS_VR_ASK_RECOMMENDED},
1823 {"siteSettingsVrBlock", IDS_SETTINGS_SITE_SETTINGS_VR_BLOCK},
1824 };
1825 AddLocalizedStringsBulk(html_source, kLocalizedStrings);
1826
1827 // These ones cannot be constexpr because we need to check base::FeatureList.
1828 static webui::LocalizedString kSensorsLocalizedStrings[] = {
1829 {"siteSettingsSensors",
1830 base::FeatureList::IsEnabled(features::kGenericSensorExtraClasses)
1831 ? IDS_SETTINGS_SITE_SETTINGS_SENSORS
1832 : IDS_SETTINGS_SITE_SETTINGS_MOTION_SENSORS},
1833 {"siteSettingsSensorsAllow",
1834 base::FeatureList::IsEnabled(features::kGenericSensorExtraClasses)
1835 ? IDS_SETTINGS_SITE_SETTINGS_SENSORS_ALLOW
1836 : IDS_SETTINGS_SITE_SETTINGS_MOTION_SENSORS_ALLOW},
1837 {"siteSettingsSensorsBlock",
1838 base::FeatureList::IsEnabled(features::kGenericSensorExtraClasses)
1839 ? IDS_SETTINGS_SITE_SETTINGS_SENSORS_BLOCK
1840 : IDS_SETTINGS_SITE_SETTINGS_MOTION_SENSORS_BLOCK},
1841 };
1842 AddLocalizedStringsBulk(html_source, kSensorsLocalizedStrings);
1843
1844 html_source->AddBoolean(
1845 "enableSafeBrowsingSubresourceFilter",
1846 base::FeatureList::IsEnabled(
1847 subresource_filter::kSafeBrowsingSubresourceFilter));
1848
1849 html_source->AddBoolean(
1850 "enableBlockAutoplayContentSetting",
1851 base::FeatureList::IsEnabled(media::kAutoplayDisableSettings));
1852
1853 html_source->AddBoolean(
1854 "enableAutoplayWhitelistContentSetting",
1855 base::FeatureList::IsEnabled(media::kAutoplayWhitelistSettings));
1856
1857 html_source->AddBoolean(
1858 "enablePaymentHandlerContentSetting",
1859 base::FeatureList::IsEnabled(features::kServiceWorkerPaymentApps));
1860
1861 base::CommandLine& cmd = *base::CommandLine::ForCurrentProcess();
1862 html_source->AddBoolean(
1863 "enableExperimentalWebPlatformFeatures",
1864 cmd.HasSwitch(::switches::kEnableExperimentalWebPlatformFeatures));
1865
1866 html_source->AddBoolean(
1867 "enableNativeFileSystemWriteContentSetting",
1868 base::FeatureList::IsEnabled(::blink::features::kNativeFileSystemAPI));
1869
1870 html_source->AddBoolean(
1871 "enableRemovingAllThirdPartyCookies",
1872 base::FeatureList::IsEnabled(
1873 browsing_data::features::kEnableRemovingAllThirdPartyCookies));
1874
1875 html_source->AddBoolean(
1876 "enableInsecureContentContentSetting",
1877 base::FeatureList::IsEnabled(features::kMixedContentSiteSetting));
1878
1879 html_source->AddBoolean(
1880 "showImprovedCookieControlsForThirdParties",
1881 base::FeatureList::IsEnabled(
1882 content_settings ::
1883 kImprovedCookieControlsForThirdPartyCookieBlocking));
1884
1885 html_source->AddBoolean(
1886 "enableStoragePressureUI",
1887 base::FeatureList::IsEnabled(features::kStoragePressureUI));
1888
1889 html_source->AddBoolean(
1890 "enableQuietNotificationPromptsSetting",
1891 base::FeatureList::IsEnabled(features::kQuietNotificationPrompts));
1892
1893 html_source->AddBoolean("enableWebBluetoothNewPermissionsBackend",
1894 base::FeatureList::IsEnabled(
1895 features::kWebBluetoothNewPermissionsBackend));
1896
1897 html_source->AddBoolean(
1898 "enableWebXrContentSetting",
1899 base::FeatureList::IsEnabled(features::kWebXrPermissionsApi));
1900 }
1901
1902 #if !defined(OS_CHROMEOS)
AddSystemStrings(content::WebUIDataSource * html_source)1903 void AddSystemStrings(content::WebUIDataSource* html_source) {
1904 static constexpr webui::LocalizedString kLocalizedStrings[] = {
1905 {"systemPageTitle", IDS_SETTINGS_SYSTEM},
1906 #if !defined(OS_MACOSX)
1907 {"backgroundAppsLabel", IDS_SETTINGS_SYSTEM_BACKGROUND_APPS_LABEL},
1908 #endif
1909 {"hardwareAccelerationLabel",
1910 IDS_SETTINGS_SYSTEM_HARDWARE_ACCELERATION_LABEL},
1911 {"proxySettingsLabel", IDS_SETTINGS_SYSTEM_PROXY_SETTINGS_LABEL},
1912 };
1913 AddLocalizedStringsBulk(html_source, kLocalizedStrings);
1914
1915 html_source->AddString(
1916 "proxySettingsExtensionLabel",
1917 l10n_util::GetStringFUTF16(
1918 IDS_SETTINGS_SYSTEM_PROXY_SETTINGS_EXTENSION_LABEL,
1919 l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_NAME)));
1920 html_source->AddString(
1921 "proxySettingsPolicyLabel",
1922 l10n_util::GetStringFUTF16(
1923 IDS_SETTINGS_SYSTEM_PROXY_SETTINGS_POLICY_LABEL,
1924 l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_NAME)));
1925
1926 // TODO(dbeam): we should probably rename anything involving "localized
1927 // strings" to "load time data" as all primitive types are used now.
1928 SystemHandler::AddLoadTimeData(html_source);
1929 }
1930 #endif
1931
AddExtensionsStrings(content::WebUIDataSource * html_source)1932 void AddExtensionsStrings(content::WebUIDataSource* html_source) {
1933 html_source->AddLocalizedString("extensionsPageTitle",
1934 IDS_SETTINGS_EXTENSIONS_CHECKBOX_LABEL);
1935 }
1936
AddSecurityKeysStrings(content::WebUIDataSource * html_source)1937 void AddSecurityKeysStrings(content::WebUIDataSource* html_source) {
1938 static constexpr webui::LocalizedString kSecurityKeysStrings[] = {
1939 {"securityKeysBioEnrollmentAddTitle",
1940 IDS_SETTINGS_SECURITY_KEYS_BIO_ENROLLMENT_ADD_TITLE},
1941 {"securityKeysBioEnrollmentDelete",
1942 IDS_SETTINGS_SECURITY_KEYS_BIO_ENROLLMENT_DELETE},
1943 {"securityKeysBioEnrollmentDialogTitle",
1944 IDS_SETTINGS_SECURITY_KEYS_BIO_ENROLLMENT_DIALOG_TITLE},
1945 {"securityKeysBioEnrollmentEnrollingCompleteLabel",
1946 IDS_SETTINGS_SECURITY_KEYS_BIO_ENROLLMENT_ENROLLING_COMPLETE_LABEL},
1947 {"securityKeysBioEnrollmentEnrollingLabel",
1948 IDS_SETTINGS_SECURITY_KEYS_BIO_ENROLLMENT_ENROLLING_LABEL},
1949 {"securityKeysBioEnrollmentEnrollingFailedLabel",
1950 IDS_SETTINGS_SECURITY_KEYS_BIO_ENROLLMENT_FAILED_LABEL},
1951 {"securityKeysBioEnrollmentTryAgainLabel",
1952 IDS_SETTINGS_SECURITY_KEYS_BIO_ENROLLMENT_TRY_AGAIN_LABEL},
1953 {"securityKeysBioEnrollmentEnrollmentsLabel",
1954 IDS_SETTINGS_SECURITY_KEYS_BIO_ENROLLMENT_ENROLLMENTS_LABEL},
1955 {"securityKeysBioEnrollmentNoEnrollmentsLabel",
1956 IDS_SETTINGS_SECURITY_KEYS_BIO_ENROLLMENT_NO_ENROLLMENTS_LABEL},
1957 {"securityKeysBioEnrollmentSubpageDescription",
1958 IDS_SETTINGS_SECURITY_KEYS_BIO_ENROLLMENT_SUBPAGE_DESCRIPTION},
1959 {"securityKeysBioEnrollmentSubpageLabel",
1960 IDS_SETTINGS_SECURITY_KEYS_BIO_ENROLLMENT_SUBPAGE_LABEL},
1961 {"securityKeysBioEnrollmentChooseName",
1962 IDS_SETTINGS_SECURITY_KEYS_BIO_CHOOSE_NAME},
1963 {"securityKeysBioEnrollmentNameLabel",
1964 IDS_SETTINGS_SECURITY_KEYS_BIO_NAME_LABEL},
1965 {"securityKeysConfirmPIN", IDS_SETTINGS_SECURITY_KEYS_CONFIRM_PIN},
1966 {"securityKeysCredentialWebsite",
1967 IDS_SETTINGS_SECURITY_KEYS_CREDENTIAL_WEBSITE},
1968 {"securityKeysNoCredentialManagement",
1969 IDS_SETTINGS_SECURITY_KEYS_NO_CREDENTIAL_MANAGEMENT},
1970 {"securityKeysCredentialManagementRemoved",
1971 IDS_SETTINGS_SECURITY_KEYS_CREDENTIAL_MANAGEMENT_REMOVED},
1972 {"securityKeysCredentialManagementDesc",
1973 IDS_SETTINGS_SECURITY_KEYS_CREDENTIAL_MANAGEMENT_DESC},
1974 {"securityKeysCredentialManagementDialogTitle",
1975 IDS_SETTINGS_SECURITY_KEYS_CREDENTIAL_MANAGEMENT_DIALOG_TITLE},
1976 {"securityKeysCredentialManagementLabel",
1977 IDS_SETTINGS_SECURITY_KEYS_CREDENTIAL_MANAGEMENT_LABEL},
1978 {"securityKeysCredentialManagementNoCredentials",
1979 IDS_SETTINGS_SECURITY_KEYS_CREDENTIAL_MANAGEMENT_NO_CREDENTIALS},
1980 {"securityKeysCredentialUsername",
1981 IDS_SETTINGS_SECURITY_KEYS_CREDENTIAL_USERNAME},
1982 {"securityKeysCurrentPIN", IDS_SETTINGS_SECURITY_KEYS_CURRENT_PIN},
1983 {"securityKeysCurrentPINIntro",
1984 IDS_SETTINGS_SECURITY_KEYS_CURRENT_PIN_INTRO},
1985 {"securityKeysDesc", IDS_SETTINGS_SECURITY_KEYS_DESC},
1986 {"securityKeysHidePINs", IDS_SETTINGS_SECURITY_KEYS_HIDE_PINS},
1987 {"securityKeysNewPIN", IDS_SETTINGS_SECURITY_KEYS_NEW_PIN},
1988 {"securityKeysNoPIN", IDS_SETTINGS_SECURITY_KEYS_NO_PIN},
1989 {"securityKeysNoReset", IDS_SETTINGS_SECURITY_KEYS_NO_RESET},
1990 {"securityKeysPIN", IDS_SETTINGS_SECURITY_KEYS_PIN},
1991 {"securityKeysPINError", IDS_SETTINGS_SECURITY_KEYS_PIN_ERROR},
1992 {"securityKeysPINHardLock", IDS_SETTINGS_SECURITY_KEYS_PIN_HARD_LOCK},
1993 {"securityKeysPINIncorrect", IDS_SETTINGS_SECURITY_KEYS_PIN_INCORRECT},
1994 {"securityKeysPINIncorrectRetriesPl",
1995 IDS_SETTINGS_SECURITY_KEYS_PIN_INCORRECT_RETRIES_PL},
1996 {"securityKeysPINIncorrectRetriesSin",
1997 IDS_SETTINGS_SECURITY_KEYS_PIN_INCORRECT_RETRIES_SIN},
1998 {"securityKeysPINMismatch",
1999 IDS_SETTINGS_SECURITY_KEYS_PIN_ERROR_MISMATCH},
2000 {"securityKeysPINPrompt", IDS_SETTINGS_SECURITY_KEYS_PIN_PROMPT},
2001 {"securityKeysPINSoftLock", IDS_SETTINGS_SECURITY_KEYS_PIN_SOFT_LOCK},
2002 {"securityKeysPINSuccess", IDS_SETTINGS_SECURITY_KEYS_PIN_SUCCESS},
2003 {"securityKeysPINTooLong", IDS_SETTINGS_SECURITY_KEYS_PIN_ERROR_TOO_LONG},
2004 {"securityKeysPINTooShort",
2005 IDS_SETTINGS_SECURITY_KEYS_PIN_ERROR_TOO_SHORT_SMALL},
2006 {"securityKeysReset", IDS_SETTINGS_SECURITY_KEYS_RESET},
2007 {"securityKeysResetConfirmTitle",
2008 IDS_SETTINGS_SECURITY_KEYS_RESET_CONFIRM_TITLE},
2009 {"securityKeysResetDesc", IDS_SETTINGS_SECURITY_KEYS_RESET_DESC},
2010 {"securityKeysResetError", IDS_SETTINGS_SECURITY_KEYS_RESET_ERROR},
2011 {"securityKeysResetNotAllowed",
2012 IDS_SETTINGS_SECURITY_KEYS_RESET_NOTALLOWED},
2013 {"securityKeysResetStep1", IDS_SETTINGS_SECURITY_KEYS_RESET_STEP1},
2014 {"securityKeysResetStep2", IDS_SETTINGS_SECURITY_KEYS_RESET_STEP2},
2015 {"securityKeysResetSuccess", IDS_SETTINGS_SECURITY_KEYS_RESET_SUCCESS},
2016 {"securityKeysResetTitle", IDS_SETTINGS_SECURITY_KEYS_RESET_TITLE},
2017 {"securityKeysSetPIN", IDS_SETTINGS_SECURITY_KEYS_SET_PIN},
2018 {"securityKeysSetPINChangeTitle",
2019 IDS_SETTINGS_SECURITY_KEYS_SET_PIN_CHANGE_TITLE},
2020 {"securityKeysSetPINConfirm", IDS_SETTINGS_SECURITY_KEYS_SET_PIN_CONFIRM},
2021 {"securityKeysSetPINCreateTitle",
2022 IDS_SETTINGS_SECURITY_KEYS_SET_PIN_CREATE_TITLE},
2023 {"securityKeysSetPINDesc", IDS_SETTINGS_SECURITY_KEYS_SET_PIN_DESC},
2024 {"securityKeysSetPINInitialTitle",
2025 IDS_SETTINGS_SECURITY_KEYS_SET_PIN_INITIAL_TITLE},
2026 {"securityKeysShowPINs", IDS_SETTINGS_SECURITY_KEYS_SHOW_PINS},
2027 {"securityKeysTitle", IDS_SETTINGS_SECURITY_KEYS_TITLE},
2028 {"securityKeysTouchToContinue",
2029 IDS_SETTINGS_SECURITY_KEYS_TOUCH_TO_CONTINUE},
2030 };
2031 AddLocalizedStringsBulk(html_source, kSecurityKeysStrings);
2032 bool win_native_api_available = false;
2033 #if defined(OS_WIN)
2034 win_native_api_available =
2035 base::FeatureList::IsEnabled(device::kWebAuthUseNativeWinApi) &&
2036 device::WinWebAuthnApi::GetDefault()->IsAvailable();
2037 #endif
2038 html_source->AddBoolean("enableSecurityKeysSubpage",
2039 !win_native_api_available);
2040 html_source->AddBoolean(
2041 "enableSecurityKeysBioEnrollment",
2042 base::FeatureList::IsEnabled(device::kWebAuthBiometricEnrollment) &&
2043 !win_native_api_available);
2044 }
2045
2046 } // namespace
2047
AddBrowserLocalizedStrings(content::WebUIDataSource * html_source,Profile * profile,content::WebContents * web_contents)2048 void AddBrowserLocalizedStrings(content::WebUIDataSource* html_source,
2049 Profile* profile,
2050 content::WebContents* web_contents) {
2051 AddA11yStrings(html_source);
2052 AddAboutStrings(html_source, profile);
2053 AddAutofillStrings(html_source, profile, web_contents);
2054 AddAppearanceStrings(html_source, profile);
2055
2056 #if defined(OS_WIN) && BUILDFLAG(GOOGLE_CHROME_BRANDING)
2057 AddChromeCleanupStrings(html_source);
2058 AddIncompatibleApplicationsStrings(html_source);
2059 #endif // defined(OS_WIN) && BUILDFLAG(GOOGLE_CHROME_BRANDING)
2060
2061 AddClearBrowsingDataStrings(html_source, profile);
2062 AddCommonStrings(html_source, profile);
2063 AddDownloadsStrings(html_source);
2064 AddLanguagesStrings(html_source, profile);
2065 AddOnStartupStrings(html_source);
2066 AddPeopleStrings(html_source, profile);
2067 AddPrintingStrings(html_source);
2068 AddPrivacyStrings(html_source, profile);
2069 AddResetStrings(html_source);
2070 AddSearchEnginesStrings(html_source);
2071 AddSearchInSettingsStrings(html_source);
2072 AddSearchStrings(html_source);
2073 AddSiteSettingsStrings(html_source, profile);
2074
2075 #if defined(OS_CHROMEOS)
2076 AddChromeOSUserStrings(html_source, profile);
2077 #else
2078 AddDefaultBrowserStrings(html_source);
2079 AddImportDataStrings(html_source);
2080 AddSystemStrings(html_source);
2081 #endif
2082 AddExtensionsStrings(html_source);
2083
2084 #if defined(USE_NSS_CERTS)
2085 certificate_manager::AddLocalizedStrings(html_source);
2086 #endif
2087
2088 policy_indicator::AddLocalizedStrings(html_source);
2089 AddSecurityKeysStrings(html_source);
2090
2091 html_source->UseStringsJs();
2092 }
2093
2094 } // namespace settings
2095