WebUI: convert SetJsonPath("strings.js") to UseStringsJs()
rbpotter@ noticed that the only value SetJsonPath() is ever called with is "strings.js" (or a constant with that content). So just changed to UseStringsJs() instead and look for that constant in WebUIDataSource. Also, add loadTimeData import to strings file when using JS modules. The autogenerated strings file references loadTimeData.data without actually importing loadTimeData from load_time_data.m.js, because it does not expect to be imported as a module. Autogenerate the import if "strings.m.js" is requested so that UIs using JS modules can import the strings without needing to add a preceding load_time_data import. Based on https://crrev.com/c/1756607 by Rebekah Potter <rbpotter@chromium.org> BUG=965770 Change-Id: I1080cd5a07f6a72d9e8950bd9c4e547d10e6c8ab Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1758840 Reviewed-by: Rebekah Potter <rbpotter@chromium.org> Reviewed-by: Ted Choc <tedchoc@chromium.org> Commit-Queue: Rebekah Potter <rbpotter@chromium.org> Commit-Queue: Dan Beam <dbeam@chromium.org> Auto-Submit: Dan Beam <dbeam@chromium.org> Cr-Commit-Position: refs/heads/master@{#687911}
This commit is contained in:
chrome/browser
accessibility
ui
webui
app_management
bookmarks
browser_switch
cast
certificate_viewer_ui.ccchromeos
account_manager_welcome_ui.ccaccount_migration_welcome_ui.cc
components_ui.cccrashes_ui.ccdevice_log_ui.ccadd_supervision
arc_graphics_tracing
assistant_optin
bluetooth_pairing_dialog.cccamera
cellular_setup
certificate_manager_dialog_ui.ccfirst_run
in_session_password_change
internet_config_dialog.ccinternet_detail_dialog.cclogin
multidevice_setup
network_ui.ccpower_ui.ccset_time_ui.ccsmb_shares
download_internals
downloads
extensions
gcm_internals_ui.cchistory_ui.cclocal_discovery
management_ui.ccmedia
nacl_ui.ccnet_export_ui.ccnet_internals
offline
omnibox
policy_ui_handler.ccprint_preview
quota_internals
sandbox_internals_ui.ccsettings
signin
inline_login_ui.ccsignin_email_confirmation_ui.ccsignin_error_ui.ccsync_confirmation_ui.ccuser_manager_ui.cc
signin_internals_ui.ccsync_file_system_internals
sync_internals_ui.ccsystem_info_ui.cctranslate_internals
version_ui.ccwebapks_ui.ccwelcome
components
content
browser
appcache
gpu
indexed_db
media
net
service_worker
tracing
webrtc
webui
public
browser
docs
ios
chrome
browser
ui
webui
crashes_ui.ccflags_ui.cc
gcm
inspect
net_export
omaha_ui.ccsignin_internals_ui_ios.ccsync_internals
translate_internals
version_ui.mmweb
ui/base/webui
@ -256,7 +256,7 @@ AccessibilityUI::AccessibilityUI(content::WebUI* web_ui)
|
||||
content::WebUIDataSource::Create(chrome::kChromeUIAccessibilityHost);
|
||||
|
||||
// Add required resources.
|
||||
html_source->SetJsonPath("strings.js");
|
||||
html_source->UseStringsJs();
|
||||
html_source->AddResourcePath("accessibility.css", IDR_ACCESSIBILITY_CSS);
|
||||
html_source->AddResourcePath("accessibility.js", IDR_ACCESSIBILITY_JS);
|
||||
html_source->SetDefaultResource(IDR_ACCESSIBILITY_HTML);
|
||||
|
@ -176,7 +176,7 @@ content::WebUIDataSource* CreateAppManagementUIHTMLSource(Profile* profile) {
|
||||
source->AddResourcePath("util.js", IDR_APP_MANAGEMENT_UTIL_JS);
|
||||
|
||||
source->SetDefaultResource(IDR_APP_MANAGEMENT_INDEX_HTML);
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
|
||||
return source;
|
||||
}
|
||||
|
@ -167,7 +167,7 @@ content::WebUIDataSource* CreateBookmarksUIHTMLSource(Profile* profile) {
|
||||
source->SetDefaultResource(IDR_BOOKMARKS_BOOKMARKS_HTML);
|
||||
#endif
|
||||
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
|
||||
return source;
|
||||
}
|
||||
|
@ -148,7 +148,7 @@ content::WebUIDataSource* CreateBrowserSwitchUIHTMLSource(
|
||||
source->AddResourcePath("internals/", IDR_BROWSER_SWITCH_INTERNALS_HTML);
|
||||
source->AddResourcePath("internals", IDR_BROWSER_SWITCH_INTERNALS_HTML);
|
||||
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
|
||||
return source;
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ CastUI::CastUI(content::WebUI* web_ui)
|
||||
|
||||
html_source->AddResourcePath("cast.js", IDR_CAST_JS);
|
||||
html_source->AddString("extensionId", extension_id);
|
||||
html_source->SetJsonPath("strings.js");
|
||||
html_source->UseStringsJs();
|
||||
html_source->SetDefaultResource(IDR_CAST_HTML);
|
||||
|
||||
content::WebUIDataSource::Add(Profile::FromWebUI(web_ui), html_source);
|
||||
|
@ -46,7 +46,7 @@ content::WebUIDataSource* GetWebUIDataSource(const std::string& host) {
|
||||
};
|
||||
AddLocalizedStringsBulk(html_source, kStrings, base::size(kStrings));
|
||||
|
||||
html_source->SetJsonPath("strings.js");
|
||||
html_source->UseStringsJs();
|
||||
|
||||
// Add required resources.
|
||||
html_source->AddResourcePath("certificate_viewer.js",
|
||||
|
@ -27,7 +27,7 @@ AccountManagerWelcomeUI::AccountManagerWelcomeUI(content::WebUI* web_ui)
|
||||
"closeDialog", base::BindRepeating(&WebDialogUI::CloseDialog,
|
||||
weak_factory_.GetWeakPtr()));
|
||||
|
||||
html_source->SetJsonPath("strings.js");
|
||||
html_source->UseStringsJs();
|
||||
|
||||
// Add localized strings.
|
||||
html_source->AddLocalizedString("welcomeTitle",
|
||||
|
@ -76,7 +76,7 @@ AccountMigrationWelcomeUI::AccountMigrationWelcomeUI(content::WebUI* web_ui)
|
||||
content::WebUIDataSource* html_source = content::WebUIDataSource::Create(
|
||||
chrome::kChromeUIAccountMigrationWelcomeHost);
|
||||
|
||||
html_source->SetJsonPath("strings.js");
|
||||
html_source->UseStringsJs();
|
||||
|
||||
// Add localized strings.
|
||||
html_source->AddLocalizedString("welcomePageTitle",
|
||||
|
@ -188,7 +188,7 @@ void AddSupervisionUI::SetupResources() {
|
||||
"add_supervision.mojom-lite.js",
|
||||
IDR_ADD_SUPERVISION_MOJOM_LITE_JS);
|
||||
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->SetDefaultResource(IDR_ADD_SUPERVISION_HTML);
|
||||
source->AddString("webviewUrl", supervision_url_.spec());
|
||||
source->AddString("eventOriginFilter", supervision_url_.GetOrigin().spec());
|
||||
|
@ -25,7 +25,7 @@ constexpr char kArcGraphicsTracingCssPath[] = "arc_graphics_tracing.css";
|
||||
content::WebUIDataSource* CreateDataSource() {
|
||||
content::WebUIDataSource* source =
|
||||
content::WebUIDataSource::Create(chrome::kChromeUIArcGraphicsTracingHost);
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->SetDefaultResource(IDR_ARC_GRAPHICS_TRACING_HTML);
|
||||
source->AddResourcePath(kArcGraphicsTracingJsPath,
|
||||
IDR_ARC_GRAPHICS_TRACING_JS);
|
||||
|
@ -77,7 +77,7 @@ AssistantOptInUI::AssistantOptInUI(content::WebUI* web_ui)
|
||||
base::DictionaryValue localized_strings;
|
||||
assistant_handler_ptr_->GetLocalizedStrings(&localized_strings);
|
||||
source->AddLocalizedStrings(localized_strings);
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->AddResourcePath("assistant_optin.js", IDR_ASSISTANT_OPTIN_JS);
|
||||
source->AddResourcePath("assistant_logo.png", IDR_ASSISTANT_LOGO_PNG);
|
||||
source->AddBoolean("hotwordDspAvailable", chromeos::IsHotwordDspAvailable());
|
||||
|
@ -103,7 +103,7 @@ BluetoothPairingDialogUI::BluetoothPairingDialogUI(content::WebUI* web_ui)
|
||||
|
||||
AddBluetoothStrings(source);
|
||||
source->AddLocalizedString("title", IDS_SETTINGS_BLUETOOTH_PAIR_DEVICE_TITLE);
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
#if BUILDFLAG(OPTIMIZE_WEBUI)
|
||||
source->SetDefaultResource(IDR_BLUETOOTH_PAIRING_DIALOG_VULCANIZED_HTML);
|
||||
source->AddResourcePath("crisper.js",
|
||||
|
@ -53,7 +53,7 @@ content::WebUIDataSource* CreateCameraUIHTMLSource() {
|
||||
// Add System Web App resources.
|
||||
source->AddResourcePath("pwa.html", IDR_PWA_HTML);
|
||||
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
|
||||
return source;
|
||||
}
|
||||
|
@ -111,7 +111,7 @@ CellularSetupDialogUI::CellularSetupDialogUI(content::WebUI* web_ui)
|
||||
content::WebUIDataSource::Create(chrome::kChromeUICellularSetupHost);
|
||||
|
||||
chromeos::cellular_setup::AddLocalizedStrings(source);
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->SetDefaultResource(IDR_CELLULAR_SETUP_CELLULAR_SETUP_DIALOG_HTML);
|
||||
|
||||
// Note: The |kCellularSetupResourcesSize| and |kCellularSetupResources|
|
||||
|
@ -55,7 +55,7 @@ CertificateManagerDialogUI::CertificateManagerDialogUI(content::WebUI* web_ui)
|
||||
user_manager::UserManager::Get()->IsLoggedInAsKioskApp() ||
|
||||
user_manager::UserManager::Get()->IsLoggedInAsArcKioskApp());
|
||||
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->SetDefaultResource(IDR_CERT_MANAGER_DIALOG_HTML);
|
||||
source->DisableContentSecurityPolicy();
|
||||
|
||||
|
@ -86,7 +86,7 @@ void SetLocalizedStrings(Profile* profile,
|
||||
content::WebUIDataSource* CreateDataSource(Profile* profile) {
|
||||
content::WebUIDataSource* source =
|
||||
content::WebUIDataSource::Create(chrome::kChromeUIFirstRunHost);
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->SetDefaultResource(IDR_FIRST_RUN_HTML);
|
||||
source->AddResourcePath(kFirstRunJSPath, IDR_FIRST_RUN_JS);
|
||||
base::DictionaryValue localized_strings;
|
||||
|
@ -89,7 +89,7 @@ PasswordChangeUI::PasswordChangeUI(content::WebUI* web_ui)
|
||||
std::make_unique<PasswordChangeHandler>(password_change_url));
|
||||
|
||||
source->AddString("hostedHeader", GetHostedHeaderText(password_change_url));
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
|
||||
source->SetDefaultResource(IDR_PASSWORD_CHANGE_HTML);
|
||||
|
||||
@ -134,7 +134,7 @@ ConfirmPasswordChangeUI::ConfirmPasswordChangeUI(content::WebUI* web_ui)
|
||||
AddSize(source, "New", ConfirmPasswordChangeDialog::GetSize(false, true));
|
||||
AddSize(source, "OldNew", ConfirmPasswordChangeDialog::GetSize(true, true));
|
||||
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->SetDefaultResource(IDR_CONFIRM_PASSWORD_CHANGE_HTML);
|
||||
source->AddResourcePath("confirm_password_change.js",
|
||||
IDR_CONFIRM_PASSWORD_CHANGE_JS);
|
||||
@ -172,7 +172,7 @@ UrgentPasswordExpiryNotificationUI::UrgentPasswordExpiryNotificationUI(
|
||||
AddLocalizedStringsBulk(source, kLocalizedStrings,
|
||||
base::size(kLocalizedStrings));
|
||||
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->SetDefaultResource(IDR_URGENT_PASSWORD_EXPIRY_NOTIFICATION_HTML);
|
||||
source->AddResourcePath("urgent_password_expiry_notification.js",
|
||||
IDR_URGENT_PASSWORD_EXPIRY_NOTIFICATION_JS);
|
||||
|
@ -142,7 +142,7 @@ InternetConfigDialogUI::InternetConfigDialogUI(content::WebUI* web_ui)
|
||||
|
||||
AddInternetStrings(source);
|
||||
source->AddLocalizedString("title", IDS_SETTINGS_INTERNET_CONFIG);
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
#if BUILDFLAG(OPTIMIZE_WEBUI)
|
||||
source->SetDefaultResource(IDR_INTERNET_CONFIG_DIALOG_VULCANIZED_HTML);
|
||||
source->AddResourcePath("crisper.js", IDR_INTERNET_CONFIG_DIALOG_CRISPER_JS);
|
||||
|
@ -141,7 +141,7 @@ InternetDetailDialogUI::InternetDetailDialogUI(content::WebUI* web_ui)
|
||||
!ash::features::IsSeparateNetworkIconsEnabled());
|
||||
AddInternetStrings(source);
|
||||
source->AddLocalizedString("title", IDS_SETTINGS_INTERNET_DETAIL);
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
#if BUILDFLAG(OPTIMIZE_WEBUI)
|
||||
source->SetDefaultResource(IDR_INTERNET_DETAIL_DIALOG_VULCANIZED_HTML);
|
||||
source->AddResourcePath("crisper.js", IDR_INTERNET_DETAIL_DIALOG_CRISPER_JS);
|
||||
|
@ -134,7 +134,6 @@ constexpr char kOobeJSPath[] = "oobe.js";
|
||||
constexpr char kProductLogoPath[] = "product-logo.png";
|
||||
constexpr char kRecommendAppListViewHTMLPath[] = "recommend_app_list_view.html";
|
||||
constexpr char kRecommendAppListViewJSPath[] = "recommend_app_list_view.js";
|
||||
constexpr char kStringsJSPath[] = "strings.js";
|
||||
|
||||
#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
|
||||
constexpr char kLogo24PX1XSvgPath[] = "logo_24px-1x.svg";
|
||||
@ -236,7 +235,7 @@ content::WebUIDataSource* CreateOobeUIDataSource(
|
||||
content::WebUIDataSource* source =
|
||||
content::WebUIDataSource::Create(chrome::kChromeUIOobeHost);
|
||||
source->AddLocalizedStrings(localized_strings);
|
||||
source->SetJsonPath(kStringsJSPath);
|
||||
source->UseStringsJs();
|
||||
|
||||
// First, configure default and non-shared resources for the current display
|
||||
// type.
|
||||
|
@ -91,7 +91,7 @@ MultiDeviceSetupDialogUI::MultiDeviceSetupDialogUI(content::WebUI* web_ui)
|
||||
content::WebUIDataSource::Create(chrome::kChromeUIMultiDeviceSetupHost);
|
||||
|
||||
chromeos::multidevice_setup::AddLocalizedStrings(source);
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->SetDefaultResource(
|
||||
IDR_MULTIDEVICE_SETUP_MULTIDEVICE_SETUP_DIALOG_HTML);
|
||||
|
||||
|
@ -362,7 +362,7 @@ NetworkUI::NetworkUI(content::WebUI* web_ui)
|
||||
|
||||
network_element::AddLocalizedStrings(html);
|
||||
|
||||
html->SetJsonPath("strings.js");
|
||||
html->UseStringsJs();
|
||||
html->AddResourcePath("network_ui.css", IDR_NETWORK_UI_CSS);
|
||||
html->AddResourcePath("network_ui.js", IDR_NETWORK_UI_JS);
|
||||
html->SetDefaultResource(IDR_NETWORK_UI_HTML);
|
||||
|
@ -33,8 +33,6 @@ namespace chromeos {
|
||||
|
||||
namespace {
|
||||
|
||||
const char kStringsJsFile[] = "strings.js";
|
||||
|
||||
const char kRequestBatteryChargeDataCallback[] = "requestBatteryChargeData";
|
||||
const char kOnRequestBatteryChargeDataFunction[] =
|
||||
"powerUI.showBatteryChargeData";
|
||||
@ -260,7 +258,7 @@ PowerUI::PowerUI(content::WebUI* web_ui) : content::WebUIController(web_ui) {
|
||||
};
|
||||
AddLocalizedStringsBulk(html, kStrings, base::size(kStrings));
|
||||
|
||||
html->SetJsonPath(kStringsJsFile);
|
||||
html->UseStringsJs();
|
||||
|
||||
html->AddResourcePath("power.css", IDR_ABOUT_POWER_CSS);
|
||||
html->AddResourcePath("power.js", IDR_ABOUT_POWER_JS);
|
||||
|
@ -195,7 +195,7 @@ SetTimeUI::SetTimeUI(content::WebUI* web_ui) : WebDialogUI(web_ui) {
|
||||
values.SetDouble("buildTime", base::GetBuildTime().ToJsTime());
|
||||
|
||||
source->AddLocalizedStrings(values);
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
|
||||
source->AddResourcePath("set_time_browser_proxy.html",
|
||||
IDR_SET_TIME_BROWSER_PROXY_HTML);
|
||||
|
@ -87,7 +87,7 @@ SmbCredentialsDialogUI::SmbCredentialsDialogUI(content::WebUI* web_ui)
|
||||
|
||||
AddSmbCredentialsDialogStrings(source);
|
||||
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->SetDefaultResource(IDR_SMB_CREDENTIALS_DIALOG_CONTAINER_HTML);
|
||||
source->AddResourcePath("smb_credentials_dialog.html",
|
||||
IDR_SMB_CREDENTIALS_DIALOG_HTML);
|
||||
|
@ -70,7 +70,7 @@ SmbShareDialogUI::SmbShareDialogUI(content::WebUI* web_ui)
|
||||
source->AddBoolean("isActiveDirectoryUser",
|
||||
user && user->IsActiveDirectoryUser());
|
||||
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->SetDefaultResource(IDR_SMB_SHARES_DIALOG_CONTAINER_HTML);
|
||||
source->AddResourcePath("smb_share_dialog.html", IDR_SMB_SHARES_DIALOG_HTML);
|
||||
source->AddResourcePath("smb_share_dialog.js", IDR_SMB_SHARES_DIALOG_JS);
|
||||
|
@ -67,7 +67,7 @@ content::WebUIDataSource* CreateComponentsUIHTMLSource(Profile* profile) {
|
||||
profile->IsOffTheRecord()
|
||||
#endif
|
||||
);
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->AddResourcePath("components.js", IDR_COMPONENTS_JS);
|
||||
source->SetDefaultResource(IDR_COMPONENTS_HTML);
|
||||
return source;
|
||||
|
@ -54,7 +54,7 @@ content::WebUIDataSource* CreateCrashesUIHTMLSource() {
|
||||
|
||||
source->AddLocalizedString(crash_reporter::kCrashesUIShortProductName,
|
||||
IDS_SHORT_PRODUCT_NAME);
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->AddResourcePath(crash_reporter::kCrashesUICrashesJS,
|
||||
IDR_CRASH_CRASHES_JS);
|
||||
source->SetDefaultResource(IDR_CRASH_CRASHES_HTML);
|
||||
|
@ -91,7 +91,7 @@ DeviceLogUI::DeviceLogUI(content::WebUI* web_ui)
|
||||
};
|
||||
AddLocalizedStringsBulk(html, kStrings, base::size(kStrings));
|
||||
|
||||
html->SetJsonPath("strings.js");
|
||||
html->UseStringsJs();
|
||||
html->AddResourcePath("device_log_ui.css", IDR_DEVICE_LOG_UI_CSS);
|
||||
html->AddResourcePath("device_log_ui.js", IDR_DEVICE_LOG_UI_JS);
|
||||
html->SetDefaultResource(IDR_DEVICE_LOG_UI_HTML);
|
||||
|
@ -23,7 +23,7 @@ DownloadInternalsUI::DownloadInternalsUI(content::WebUI* web_ui)
|
||||
"script-src chrome://resources 'self' 'unsafe-eval';");
|
||||
|
||||
// Required resources.
|
||||
html_source->SetJsonPath("strings.js");
|
||||
html_source->UseStringsJs();
|
||||
html_source->AddResourcePath("download_internals.css",
|
||||
IDR_DOWNLOAD_INTERNALS_CSS);
|
||||
html_source->AddResourcePath("download_internals.js",
|
||||
|
@ -149,7 +149,7 @@ content::WebUIDataSource* CreateDownloadsUIHTMLSource(Profile* profile) {
|
||||
source->SetDefaultResource(IDR_DOWNLOADS_DOWNLOADS_HTML);
|
||||
#endif
|
||||
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
|
||||
return source;
|
||||
}
|
||||
|
@ -59,7 +59,7 @@ content::WebUIDataSource* CreateMdExtensionsSource(Profile* profile,
|
||||
bool in_dev_mode) {
|
||||
content::WebUIDataSource* source =
|
||||
content::WebUIDataSource::Create(chrome::kChromeUIExtensionsHost);
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
|
||||
static constexpr LocalizedString kLocalizedStrings[] = {
|
||||
// Add common strings.
|
||||
|
@ -160,7 +160,7 @@ GCMInternalsUI::GCMInternalsUI(content::WebUI* web_ui)
|
||||
content::WebUIDataSource* html_source =
|
||||
content::WebUIDataSource::Create(chrome::kChromeUIGCMInternalsHost);
|
||||
|
||||
html_source->SetJsonPath("strings.js");
|
||||
html_source->UseStringsJs();
|
||||
|
||||
// Add required resources.
|
||||
html_source->AddResourcePath(gcm_driver::kGcmInternalsCSS,
|
||||
|
@ -167,7 +167,7 @@ content::WebUIDataSource* CreateHistoryUIHTMLSource(Profile* profile) {
|
||||
#endif
|
||||
|
||||
source->SetDefaultResource(IDR_HISTORY_HISTORY_HTML);
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
|
||||
return source;
|
||||
}
|
||||
|
@ -81,7 +81,7 @@ content::WebUIDataSource* CreateLocalDiscoveryHTMLSource() {
|
||||
};
|
||||
AddLocalizedStringsBulk(source, kStrings, base::size(kStrings));
|
||||
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
|
||||
source->DisableDenyXFrameOptions();
|
||||
|
||||
|
@ -102,7 +102,7 @@ content::WebUIDataSource* CreateManagementUIHtmlSource(Profile* profile) {
|
||||
chrome::kManagedUiLearnMoreUrl);
|
||||
#endif // defined(OS_CHROMEOS)
|
||||
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
// Add required resources.
|
||||
source->AddResourcePath("management_browser_proxy.html",
|
||||
IDR_MANAGEMENT_BROWSER_PROXY_HTML);
|
||||
|
@ -75,7 +75,7 @@ content::WebUIDataSource* CreateWebRtcLogsUIHTMLSource() {
|
||||
};
|
||||
AddLocalizedStringsBulk(source, kStrings, base::size(kStrings));
|
||||
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->AddResourcePath("webrtc_logs.js", IDR_WEBRTC_LOGS_JS);
|
||||
source->SetDefaultResource(IDR_WEBRTC_LOGS_HTML);
|
||||
return source;
|
||||
|
@ -63,7 +63,7 @@ content::WebUIDataSource* CreateNaClUIHTMLSource() {
|
||||
content::WebUIDataSource::Create(chrome::kChromeUINaClHost);
|
||||
source->OverrideContentSecurityPolicyScriptSrc(
|
||||
"script-src chrome://resources 'self' 'unsafe-eval';");
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->AddResourcePath("about_nacl.css", IDR_ABOUT_NACL_CSS);
|
||||
source->AddResourcePath("about_nacl.js", IDR_ABOUT_NACL_JS);
|
||||
source->SetDefaultResource(IDR_ABOUT_NACL_HTML);
|
||||
|
@ -61,7 +61,7 @@ content::WebUIDataSource* CreateNetExportHTMLSource() {
|
||||
content::WebUIDataSource* source =
|
||||
content::WebUIDataSource::Create(chrome::kChromeUINetExportHost);
|
||||
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->AddResourcePath(net_log::kNetExportUIJS, IDR_NET_LOG_NET_EXPORT_JS);
|
||||
source->SetDefaultResource(IDR_NET_LOG_NET_EXPORT_HTML);
|
||||
return source;
|
||||
|
@ -62,7 +62,7 @@ content::WebUIDataSource* CreateNetInternalsHTMLSource() {
|
||||
|
||||
source->SetDefaultResource(IDR_NET_INTERNALS_INDEX_HTML);
|
||||
source->AddResourcePath("index.js", IDR_NET_INTERNALS_INDEX_JS);
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
return source;
|
||||
}
|
||||
|
||||
|
@ -22,7 +22,7 @@ OfflineInternalsUI::OfflineInternalsUI(content::WebUI* web_ui)
|
||||
content::WebUIDataSource::Create(chrome::kChromeUIOfflineInternalsHost);
|
||||
|
||||
// Required resources.
|
||||
html_source->SetJsonPath("strings.js");
|
||||
html_source->UseStringsJs();
|
||||
html_source->AddResourcePath("offline_internals.css",
|
||||
IDR_OFFLINE_INTERNALS_CSS);
|
||||
html_source->AddResourcePath("offline_internals.js",
|
||||
|
@ -25,7 +25,7 @@ OmniboxUI::OmniboxUI(content::WebUI* web_ui)
|
||||
|
||||
// Expose version information to client because it is useful in output.
|
||||
VersionUI::AddVersionDetailStrings(source);
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
|
||||
source->AddResourcePath("omnibox.css", IDR_OMNIBOX_CSS);
|
||||
source->AddResourcePath("omnibox_input.css", IDR_OMNIBOX_INPUT_CSS);
|
||||
|
@ -739,7 +739,7 @@ void PolicyUIHandler::AddCommonLocalizedStringsToSource(
|
||||
};
|
||||
AddLocalizedStringsBulk(source, kStrings, base::size(kStrings));
|
||||
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
}
|
||||
|
||||
void PolicyUIHandler::RegisterMessages() {
|
||||
|
@ -432,7 +432,7 @@ content::WebUIDataSource* CreatePrintPreviewUISource(Profile* profile) {
|
||||
content::WebUIDataSource* source =
|
||||
content::WebUIDataSource::Create(chrome::kChromeUIPrintHost);
|
||||
AddPrintPreviewStrings(source);
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
#if BUILDFLAG(OPTIMIZE_WEBUI)
|
||||
source->AddResourcePath("crisper.js", IDR_PRINT_PREVIEW_CRISPER_JS);
|
||||
source->SetDefaultResource(IDR_PRINT_PREVIEW_VULCANIZED_HTML);
|
||||
|
@ -23,7 +23,7 @@ content::WebUIDataSource* CreateQuotaInternalsHTMLSource() {
|
||||
content::WebUIDataSource* source =
|
||||
content::WebUIDataSource::Create(chrome::kChromeUIQuotaInternalsHost);
|
||||
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->AddResourcePath(
|
||||
"event_handler.js", IDR_QUOTA_INTERNALS_EVENT_HANDLER_JS);
|
||||
source->AddResourcePath(
|
||||
|
@ -69,7 +69,7 @@ content::WebUIDataSource* CreateDataSource() {
|
||||
|
||||
#if defined(OS_LINUX)
|
||||
SetSandboxStatusData(source);
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
#endif
|
||||
|
||||
return source;
|
||||
|
@ -119,10 +119,6 @@
|
||||
namespace settings {
|
||||
namespace {
|
||||
|
||||
// Note that settings.html contains a <script> tag which imports a script of
|
||||
// the following name. These names must be kept in sync.
|
||||
constexpr char kLocalizedStringsFile[] = "strings.js";
|
||||
|
||||
#if defined(OS_CHROMEOS)
|
||||
// Generates a Google Help URL which includes a "board type" parameter. Some
|
||||
// help pages need to be adjusted depending on the type of CrOS device that is
|
||||
@ -3345,7 +3341,7 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source,
|
||||
policy_indicator::AddLocalizedStrings(html_source);
|
||||
AddSecurityKeysStrings(html_source);
|
||||
|
||||
html_source->SetJsonPath(kLocalizedStringsFile);
|
||||
html_source->UseStringsJs();
|
||||
}
|
||||
|
||||
} // namespace settings
|
||||
|
@ -37,7 +37,7 @@ content::WebUIDataSource* CreateWebUIDataSource() {
|
||||
content::WebUIDataSource* source =
|
||||
content::WebUIDataSource::Create(chrome::kChromeUIChromeSigninHost);
|
||||
source->OverrideContentSecurityPolicyObjectSrc("object-src chrome:;");
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
|
||||
source->SetDefaultResource(IDR_INLINE_LOGIN_HTML);
|
||||
|
||||
|
@ -23,7 +23,7 @@ SigninEmailConfirmationUI::SigninEmailConfirmationUI(content::WebUI* web_ui)
|
||||
|
||||
content::WebUIDataSource* source = content::WebUIDataSource::Create(
|
||||
chrome::kChromeUISigninEmailConfirmationHost);
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->SetDefaultResource(IDR_SIGNIN_EMAIL_CONFIRMATION_HTML);
|
||||
source->AddResourcePath("signin_email_confirmation.js",
|
||||
IDR_SIGNIN_EMAIL_CONFIRMATION_JS);
|
||||
|
@ -66,7 +66,7 @@ void SigninErrorUI::Initialize(Browser* browser, bool is_system_profile) {
|
||||
|
||||
content::WebUIDataSource* source =
|
||||
content::WebUIDataSource::Create(chrome::kChromeUISigninErrorHost);
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->SetDefaultResource(IDR_SIGNIN_ERROR_HTML);
|
||||
source->AddResourcePath("signin_error.js", IDR_SIGNIN_ERROR_JS);
|
||||
source->AddResourcePath("signin_shared_css.html", IDR_SIGNIN_SHARED_CSS_HTML);
|
||||
|
@ -33,7 +33,7 @@ SyncConfirmationUI::SyncConfirmationUI(content::WebUI* web_ui)
|
||||
|
||||
content::WebUIDataSource* source =
|
||||
content::WebUIDataSource::Create(chrome::kChromeUISyncConfirmationHost);
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->AddResourcePath("signin_shared_css.html", IDR_SIGNIN_SHARED_CSS_HTML);
|
||||
|
||||
if (is_sync_allowed) {
|
||||
|
@ -61,7 +61,7 @@ content::WebUIDataSource* UserManagerUI::CreateUIDataSource(
|
||||
source->AddBoolean("isForceSigninEnabled",
|
||||
signin_util::IsForceSigninEnabled());
|
||||
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
|
||||
source->AddResourcePath("control_bar.html", IDR_CONTROL_BAR_HTML);
|
||||
source->AddResourcePath("control_bar.js", IDR_CONTROL_BAR_JS);
|
||||
|
@ -27,7 +27,7 @@ content::WebUIDataSource* CreateSignInInternalsHTMLSource() {
|
||||
source->OverrideContentSecurityPolicyScriptSrc(
|
||||
"script-src chrome://resources 'self' 'unsafe-eval';");
|
||||
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->AddResourcePath("signin_internals.js", IDR_SIGNIN_INTERNALS_INDEX_JS);
|
||||
source->SetDefaultResource(IDR_SIGNIN_INTERNALS_INDEX_HTML);
|
||||
return source;
|
||||
|
@ -22,7 +22,7 @@ content::WebUIDataSource* CreateSyncFileSystemInternalsHTMLSource() {
|
||||
content::WebUIDataSource* source =
|
||||
content::WebUIDataSource::Create(
|
||||
chrome::kChromeUISyncFileSystemInternalsHost);
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->AddResourcePath(
|
||||
"utils.js",
|
||||
IDR_SYNC_FILE_SYSTEM_INTERNALS_UTILS_JS);
|
||||
|
@ -22,7 +22,7 @@ content::WebUIDataSource* CreateSyncInternalsHTMLSource() {
|
||||
source->OverrideContentSecurityPolicyScriptSrc(
|
||||
"script-src chrome://resources 'self' 'unsafe-eval';");
|
||||
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->AddResourcePath(syncer::sync_ui_util::kSyncIndexJS,
|
||||
IDR_SYNC_DRIVER_SYNC_INTERNALS_INDEX_JS);
|
||||
source->AddResourcePath(syncer::sync_ui_util::kChromeSyncJS,
|
||||
|
@ -66,7 +66,7 @@ content::WebUIDataSource* CreateSystemInfoUIDataSource() {
|
||||
html_source->AddResourcePath("about_sys.js", IDR_ABOUT_SYS_JS);
|
||||
html_source->AddResourcePath("about_sys.css", IDR_ABOUT_SYS_CSS);
|
||||
html_source->SetDefaultResource(IDR_ABOUT_SYS_HTML);
|
||||
html_source->SetJsonPath("strings.js");
|
||||
html_source->UseStringsJs();
|
||||
return html_source;
|
||||
}
|
||||
|
||||
|
@ -29,7 +29,7 @@ content::WebUIDataSource* CreateTranslateInternalsHTMLSource() {
|
||||
content::WebUIDataSource::Create(chrome::kChromeUITranslateInternalsHost);
|
||||
|
||||
source->SetDefaultResource(IDR_TRANSLATE_INTERNALS_HTML);
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->AddResourcePath("translate_internals.js", IDR_TRANSLATE_INTERNALS_JS);
|
||||
|
||||
base::DictionaryValue langs;
|
||||
|
@ -83,7 +83,7 @@ WebUIDataSource* CreateVersionUIDataSource() {
|
||||
|
||||
VersionUI::AddVersionDetailStrings(html_source);
|
||||
|
||||
html_source->SetJsonPath("strings.js");
|
||||
html_source->UseStringsJs();
|
||||
html_source->AddResourcePath(version_ui::kVersionJS, IDR_VERSION_UI_JS);
|
||||
html_source->AddResourcePath(version_ui::kAboutVersionCSS,
|
||||
IDR_VERSION_UI_CSS);
|
||||
|
@ -21,7 +21,7 @@ namespace {
|
||||
WebUIDataSource* CreateWebApksUIDataSource() {
|
||||
WebUIDataSource* html_source =
|
||||
WebUIDataSource::Create(chrome::kChromeUIWebApksHost);
|
||||
html_source->SetJsonPath("strings.js");
|
||||
html_source->UseStringsJs();
|
||||
html_source->AddResourcePath("webapks.js", IDR_WEBAPKS_UI_JS);
|
||||
html_source->AddResourcePath("about_webapks.css", IDR_WEBAPKS_UI_CSS);
|
||||
html_source->SetDefaultResource(IDR_WEBAPKS_UI_HTML);
|
||||
|
@ -201,7 +201,7 @@ WelcomeUI::WelcomeUI(content::WebUI* web_ui, const GURL& url)
|
||||
weak_ptr_factory_.GetWeakPtr()),
|
||||
base::BindRepeating(&HandleRequestCallback,
|
||||
weak_ptr_factory_.GetWeakPtr()));
|
||||
html_source->SetJsonPath("strings.js");
|
||||
html_source->UseStringsJs();
|
||||
|
||||
content::WebUIDataSource::Add(profile, html_source);
|
||||
}
|
||||
|
@ -50,7 +50,7 @@ DomDistillerUi::DomDistillerUi(content::WebUI* web_ui,
|
||||
content::BrowserContext* browser_context =
|
||||
web_ui->GetWebContents()->GetBrowserContext();
|
||||
content::WebUIDataSource::Add(browser_context, source);
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
|
||||
// Add message handler.
|
||||
web_ui->AddMessageHandler(
|
||||
|
@ -73,7 +73,7 @@ ConnectionHelpUI::ConnectionHelpUI(content::WebUI* web_ui)
|
||||
html_source->AddLocalizedString("connectionHelpShowLess",
|
||||
IDS_CONNECTION_HELP_SHOW_LESS);
|
||||
|
||||
html_source->SetJsonPath("strings.js");
|
||||
html_source->UseStringsJs();
|
||||
|
||||
html_source->AddResourcePath("interstitial_core.css",
|
||||
IDR_SECURITY_INTERSTITIAL_CORE_CSS);
|
||||
|
@ -357,7 +357,7 @@ AppCacheInternalsUI::AppCacheInternalsUI(WebUI* web_ui)
|
||||
source->OverrideContentSecurityPolicyScriptSrc(
|
||||
"script-src chrome://resources 'self' 'unsafe-eval';");
|
||||
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->AddResourcePath("appcache_internals.js", IDR_APPCACHE_INTERNALS_JS);
|
||||
source->AddResourcePath("appcache_internals.css", IDR_APPCACHE_INTERNALS_CSS);
|
||||
source->SetDefaultResource(IDR_APPCACHE_INTERNALS_HTML);
|
||||
|
@ -70,7 +70,7 @@ WebUIDataSource* CreateGpuHTMLSource() {
|
||||
source->OverrideContentSecurityPolicyScriptSrc(
|
||||
"script-src chrome://resources 'self' 'unsafe-eval';");
|
||||
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->AddResourcePath("gpu_internals.js", IDR_GPU_INTERNALS_JS);
|
||||
source->SetDefaultResource(IDR_GPU_INTERNALS_HTML);
|
||||
return source;
|
||||
|
@ -72,7 +72,7 @@ IndexedDBInternalsUI::IndexedDBInternalsUI(WebUI* web_ui)
|
||||
WebUIDataSource::Create(kChromeUIIndexedDBInternalsHost);
|
||||
source->OverrideContentSecurityPolicyScriptSrc(
|
||||
"script-src chrome://resources 'self' 'unsafe-eval';");
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->AddResourcePath("indexeddb_internals.js",
|
||||
IDR_INDEXED_DB_INTERNALS_JS);
|
||||
source->AddResourcePath("indexeddb_internals.css",
|
||||
|
@ -20,7 +20,7 @@ WebUIDataSource* CreateMediaInternalsHTMLSource() {
|
||||
WebUIDataSource* source =
|
||||
WebUIDataSource::Create(kChromeUIMediaInternalsHost);
|
||||
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
|
||||
source->AddResourcePath("media_internals.js", IDR_MEDIA_INTERNALS_JS);
|
||||
source->SetDefaultResource(IDR_MEDIA_INTERNALS_HTML);
|
||||
|
@ -83,7 +83,7 @@ NetworkErrorsListingUI::NetworkErrorsListingUI(WebUI* web_ui)
|
||||
WebUIDataSource::Create(kChromeUINetworkErrorsListingHost);
|
||||
|
||||
// Add required resources.
|
||||
html_source->SetJsonPath("strings.js");
|
||||
html_source->UseStringsJs();
|
||||
html_source->AddResourcePath("network_errors_listing.css",
|
||||
IDR_NETWORK_ERROR_LISTING_CSS);
|
||||
html_source->AddResourcePath("network_errors_listing.js",
|
||||
|
@ -320,7 +320,7 @@ ServiceWorkerInternalsUI::ServiceWorkerInternalsUI(WebUI* web_ui)
|
||||
WebUIDataSource::Create(kChromeUIServiceWorkerInternalsHost);
|
||||
source->OverrideContentSecurityPolicyScriptSrc(
|
||||
"script-src chrome://resources 'self' 'unsafe-eval';");
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->AddResourcePath("serviceworker_internals.js",
|
||||
IDR_SERVICE_WORKER_INTERNALS_JS);
|
||||
source->AddResourcePath("serviceworker_internals.css",
|
||||
|
@ -176,7 +176,7 @@ TracingUI::TracingUI(WebUI* web_ui)
|
||||
web_ui->GetWebContents()->GetBrowserContext();
|
||||
|
||||
WebUIDataSource* source = WebUIDataSource::Create(kChromeUITracingHost);
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->SetDefaultResource(IDR_TRACING_HTML);
|
||||
source->AddResourcePath("tracing.js", IDR_TRACING_JS);
|
||||
source->SetRequestFilter(base::BindRepeating(OnShouldHandleRequest),
|
||||
|
@ -18,7 +18,7 @@ WebUIDataSource* CreateWebRTCInternalsHTMLSource() {
|
||||
WebUIDataSource* source =
|
||||
WebUIDataSource::Create(kChromeUIWebRTCInternalsHost);
|
||||
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->AddResourcePath("webrtc_internals.js", IDR_WEBRTC_INTERNALS_JS);
|
||||
source->SetDefaultResource(IDR_WEBRTC_INTERNALS_HTML);
|
||||
return source;
|
||||
|
@ -162,11 +162,8 @@ void WebUIDataSourceImpl::AddInteger(base::StringPiece name, int32_t value) {
|
||||
localized_strings_.SetInteger(name, value);
|
||||
}
|
||||
|
||||
void WebUIDataSourceImpl::SetJsonPath(base::StringPiece path) {
|
||||
DCHECK(json_path_.empty());
|
||||
DCHECK(!path.empty());
|
||||
|
||||
json_path_ = path.as_string();
|
||||
void WebUIDataSourceImpl::UseStringsJs() {
|
||||
use_strings_js_ = true;
|
||||
}
|
||||
|
||||
void WebUIDataSourceImpl::AddResourcePath(base::StringPiece path,
|
||||
@ -282,9 +279,12 @@ void WebUIDataSourceImpl::StartDataRequest(
|
||||
|
||||
EnsureLoadTimeDataDefaultsAdded();
|
||||
|
||||
if (!json_path_.empty() && path == json_path_) {
|
||||
SendLocalizedStringsAsJSON(callback);
|
||||
return;
|
||||
if (use_strings_js_) {
|
||||
bool from_js_module = path == "strings.m.js";
|
||||
if (from_js_module || path == "strings.js") {
|
||||
SendLocalizedStringsAsJSON(callback, from_js_module);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
int resource_id = PathToIdrOrDefault(CleanUpPath(path));
|
||||
@ -295,9 +295,10 @@ void WebUIDataSourceImpl::StartDataRequest(
|
||||
}
|
||||
|
||||
void WebUIDataSourceImpl::SendLocalizedStringsAsJSON(
|
||||
const URLDataSource::GotDataCallback& callback) {
|
||||
const URLDataSource::GotDataCallback& callback,
|
||||
bool from_js_module) {
|
||||
std::string template_data;
|
||||
webui::AppendJsonJS(&localized_strings_, &template_data);
|
||||
webui::AppendJsonJS(&localized_strings_, &template_data, from_js_module);
|
||||
callback.Run(base::RefCountedString::TakeString(&template_data));
|
||||
}
|
||||
|
||||
|
@ -37,7 +37,7 @@ class CONTENT_EXPORT WebUIDataSourceImpl : public URLDataSourceImpl,
|
||||
const base::DictionaryValue& localized_strings) override;
|
||||
void AddBoolean(base::StringPiece name, bool value) override;
|
||||
void AddInteger(base::StringPiece name, int32_t value) override;
|
||||
void SetJsonPath(base::StringPiece path) override;
|
||||
void UseStringsJs() override;
|
||||
void AddResourcePath(base::StringPiece path, int resource_id) override;
|
||||
void SetDefaultResource(int resource_id) override;
|
||||
void SetRequestFilter(const WebUIDataSource::ShouldHandleRequestCallback&
|
||||
@ -67,7 +67,8 @@ class CONTENT_EXPORT WebUIDataSourceImpl : public URLDataSourceImpl,
|
||||
|
||||
// Completes a request by sending our dictionary of localized strings.
|
||||
void SendLocalizedStringsAsJSON(
|
||||
const URLDataSource::GotDataCallback& callback);
|
||||
const URLDataSource::GotDataCallback& callback,
|
||||
bool from_js_module);
|
||||
|
||||
// Protected for testing.
|
||||
virtual const base::DictionaryValue* GetLocalizedStrings() const;
|
||||
@ -99,7 +100,7 @@ class CONTENT_EXPORT WebUIDataSourceImpl : public URLDataSourceImpl,
|
||||
// specific resources like "favicon/34" getting sent to this source.
|
||||
std::string source_name_;
|
||||
int default_resource_;
|
||||
std::string json_path_;
|
||||
bool use_strings_js_ = false;
|
||||
std::map<std::string, int> path_to_idr_map_;
|
||||
// The replacements are initiallized in the main thread and then used in the
|
||||
// IO thread. The map is safe to read from multiple threads as long as no
|
||||
|
@ -88,15 +88,23 @@ class WebUIDataSourceTest : public testing::Test {
|
||||
scoped_refptr<WebUIDataSourceImpl> source_;
|
||||
};
|
||||
|
||||
void EmptyStringsCallback(scoped_refptr<base::RefCountedMemory> data) {
|
||||
void EmptyStringsCallback(bool from_js_module,
|
||||
scoped_refptr<base::RefCountedMemory> data) {
|
||||
std::string result(data->front_as<char>(), data->size());
|
||||
EXPECT_NE(result.find("loadTimeData.data = {"), std::string::npos);
|
||||
EXPECT_NE(result.find("};"), std::string::npos);
|
||||
bool has_import = result.find("import {loadTimeData}") != std::string::npos;
|
||||
EXPECT_EQ(from_js_module, has_import);
|
||||
}
|
||||
|
||||
TEST_F(WebUIDataSourceTest, EmptyStrings) {
|
||||
source()->SetJsonPath("strings.js");
|
||||
StartDataRequest("strings.js", base::Bind(&EmptyStringsCallback));
|
||||
source()->UseStringsJs();
|
||||
StartDataRequest("strings.js", base::Bind(&EmptyStringsCallback, false));
|
||||
}
|
||||
|
||||
TEST_F(WebUIDataSourceTest, EmptyModuleStrings) {
|
||||
source()->UseStringsJs();
|
||||
StartDataRequest("strings.m.js", base::Bind(&EmptyStringsCallback, true));
|
||||
}
|
||||
|
||||
void SomeValuesCallback(scoped_refptr<base::RefCountedMemory> data) {
|
||||
@ -109,7 +117,7 @@ void SomeValuesCallback(scoped_refptr<base::RefCountedMemory> data) {
|
||||
}
|
||||
|
||||
TEST_F(WebUIDataSourceTest, SomeValues) {
|
||||
source()->SetJsonPath("strings.js");
|
||||
source()->UseStringsJs();
|
||||
source()->AddBoolean("flag", true);
|
||||
source()->AddInteger("counter", 10);
|
||||
source()->AddInteger("debt", -456);
|
||||
|
@ -67,8 +67,9 @@ class WebUIDataSource {
|
||||
// MAX_SAFE_INTEGER in /v8/src/globals.h.
|
||||
virtual void AddInteger(base::StringPiece name, int32_t value) = 0;
|
||||
|
||||
// Sets the path which will return the JSON strings.
|
||||
virtual void SetJsonPath(base::StringPiece path) = 0;
|
||||
// Call this to enable a virtual "strings.js" (or "strings.m.js" for modules)
|
||||
// URL that provides translations and dynamic data when requested.
|
||||
virtual void UseStringsJs() = 0;
|
||||
|
||||
// Adds a mapping between a path name and a resource to return.
|
||||
virtual void AddResourcePath(base::StringPiece path, int resource_id) = 0;
|
||||
|
@ -169,7 +169,7 @@ HelloWorldUI::HelloWorldUI(content::WebUI* web_ui)
|
||||
|
||||
// As a demonstration of passing a variable for JS to use we pass in the name "Bob".
|
||||
html_source->AddString("userName", "Bob");
|
||||
html_source->SetJsonPath("strings.js");
|
||||
html_source->UseStringsJs();
|
||||
|
||||
// Add required resources.
|
||||
html_source->AddResourcePath("hello_world.css", IDR_HELLO_WORLD_CSS);
|
||||
|
@ -43,7 +43,7 @@ web::WebUIIOSDataSource* CreateCrashesUIHTMLSource() {
|
||||
source->AddLocalizedString(crash_reporter::kCrashesUIShortProductName,
|
||||
IDS_IOS_SHORT_PRODUCT_NAME);
|
||||
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->AddResourcePath(crash_reporter::kCrashesUICrashesJS,
|
||||
IDR_CRASH_CRASHES_JS);
|
||||
source->SetDefaultResource(IDR_CRASH_CRASHES_HTML);
|
||||
|
@ -44,7 +44,7 @@ web::WebUIIOSDataSource* CreateFlagsUIHTMLSource() {
|
||||
IDS_FLAGS_UI_RELAUNCH_NOTICE);
|
||||
source->AddString(flags_ui::kVersion, version_info::GetVersionNumber());
|
||||
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->AddResourcePath(flags_ui::kFlagsJS, IDR_FLAGS_UI_FLAGS_JS);
|
||||
source->SetDefaultResource(IDR_FLAGS_UI_FLAGS_HTML);
|
||||
return source;
|
||||
|
@ -162,7 +162,7 @@ GCMInternalsUI::GCMInternalsUI(web::WebUIIOS* web_ui)
|
||||
web::WebUIIOSDataSource* html_source =
|
||||
web::WebUIIOSDataSource::Create(kChromeUIGCMInternalsHost);
|
||||
|
||||
html_source->SetJsonPath("strings.js");
|
||||
html_source->UseStringsJs();
|
||||
|
||||
// Add required resources.
|
||||
html_source->AddResourcePath(gcm_driver::kGcmInternalsCSS,
|
||||
|
@ -61,7 +61,7 @@ web::WebUIIOSDataSource* CreateInspectUIHTMLSource() {
|
||||
IDS_IOS_INSPECT_UI_CONSOLE_START_LOGGING);
|
||||
source->AddLocalizedString("inspectConsoleStopLogging",
|
||||
IDS_IOS_INSPECT_UI_CONSOLE_STOP_LOGGING);
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->AddResourcePath("inspect.js", IDR_IOS_INSPECT_JS);
|
||||
source->SetDefaultResource(IDR_IOS_INSPECT_HTML);
|
||||
return source;
|
||||
|
@ -40,7 +40,7 @@ web::WebUIIOSDataSource* CreateNetExportHTMLSource() {
|
||||
web::WebUIIOSDataSource* source =
|
||||
web::WebUIIOSDataSource::Create(kChromeUINetExportHost);
|
||||
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->AddResourcePath(net_log::kNetExportUIJS, IDR_NET_LOG_NET_EXPORT_JS);
|
||||
source->SetDefaultResource(IDR_NET_LOG_NET_EXPORT_HTML);
|
||||
return source;
|
||||
|
@ -25,7 +25,7 @@ web::WebUIIOSDataSource* CreateOmahaUIHTMLSource() {
|
||||
web::WebUIIOSDataSource* source =
|
||||
web::WebUIIOSDataSource::Create(kChromeUIOmahaHost);
|
||||
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->AddResourcePath("omaha.js", IDR_IOS_OMAHA_JS);
|
||||
source->SetDefaultResource(IDR_IOS_OMAHA_HTML);
|
||||
return source;
|
||||
|
@ -21,7 +21,7 @@ web::WebUIIOSDataSource* CreateSignInInternalsHTMLSource() {
|
||||
web::WebUIIOSDataSource* source =
|
||||
web::WebUIIOSDataSource::Create(kChromeUISignInInternalsHost);
|
||||
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->AddResourcePath("signin_internals.js", IDR_SIGNIN_INTERNALS_INDEX_JS);
|
||||
source->SetDefaultResource(IDR_SIGNIN_INTERNALS_INDEX_HTML);
|
||||
|
||||
|
@ -20,7 +20,7 @@ web::WebUIIOSDataSource* CreateSyncInternalsHTMLSource() {
|
||||
web::WebUIIOSDataSource* source =
|
||||
web::WebUIIOSDataSource::Create(kChromeUISyncInternalsHost);
|
||||
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->AddResourcePath(syncer::sync_ui_util::kSyncIndexJS,
|
||||
IDR_SYNC_DRIVER_SYNC_INTERNALS_INDEX_JS);
|
||||
source->AddResourcePath(syncer::sync_ui_util::kChromeSyncJS,
|
||||
|
@ -28,7 +28,7 @@ web::WebUIIOSDataSource* CreateTranslateInternalsHTMLSource() {
|
||||
web::WebUIIOSDataSource::Create(kChromeUITranslateInternalsHost);
|
||||
|
||||
source->SetDefaultResource(IDR_IOS_TRANSLATE_INTERNALS_HTML);
|
||||
source->SetJsonPath("strings.js");
|
||||
source->UseStringsJs();
|
||||
source->AddResourcePath("translate_internals.js",
|
||||
IDR_IOS_TRANSLATE_INTERNALS_JS);
|
||||
|
||||
|
@ -102,7 +102,7 @@ web::WebUIIOSDataSource* CreateVersionUIDataSource() {
|
||||
html_source->AddString(version_ui::kCompiler, "LLVM clang");
|
||||
#endif
|
||||
|
||||
html_source->SetJsonPath("strings.js");
|
||||
html_source->UseStringsJs();
|
||||
html_source->AddResourcePath(version_ui::kVersionJS, IDR_VERSION_UI_JS);
|
||||
html_source->AddResourcePath(version_ui::kAboutVersionCSS,
|
||||
IDR_VERSION_UI_CSS);
|
||||
|
@ -44,8 +44,9 @@ class WebUIIOSDataSource : public base::SupportsUserData {
|
||||
// Adds a boolean keyed to its name to our dictionary.
|
||||
virtual void AddBoolean(const std::string& name, bool value) = 0;
|
||||
|
||||
// Sets the path which will return the JSON strings.
|
||||
virtual void SetJsonPath(const std::string& path) = 0;
|
||||
// Call this to enable a virtual "strings.js" (or "strings.m.js" for modules)
|
||||
// URL that provides translations and dynamic data when requested.
|
||||
virtual void UseStringsJs() = 0;
|
||||
|
||||
// Adds a mapping between a path name and a resource to return.
|
||||
virtual void AddResourcePath(const std::string& path, int resource_id) = 0;
|
||||
|
@ -30,7 +30,7 @@ class WebUIIOSDataSourceImpl : public URLDataSourceIOSImpl,
|
||||
void AddLocalizedStrings(
|
||||
const base::DictionaryValue& localized_strings) override;
|
||||
void AddBoolean(const std::string& name, bool value) override;
|
||||
void SetJsonPath(const std::string& path) override;
|
||||
void UseStringsJs() override;
|
||||
void AddResourcePath(const std::string& path, int resource_id) override;
|
||||
void SetDefaultResource(int resource_id) override;
|
||||
void DisableDenyXFrameOptions() override;
|
||||
@ -41,7 +41,8 @@ class WebUIIOSDataSourceImpl : public URLDataSourceIOSImpl,
|
||||
|
||||
// Completes a request by sending our dictionary of localized strings.
|
||||
void SendLocalizedStringsAsJSON(
|
||||
const URLDataSourceIOS::GotDataCallback& callback);
|
||||
const URLDataSourceIOS::GotDataCallback& callback,
|
||||
bool from_js_module);
|
||||
|
||||
private:
|
||||
class InternalDataSource;
|
||||
@ -68,7 +69,7 @@ class WebUIIOSDataSourceImpl : public URLDataSourceIOSImpl,
|
||||
// specific resources like "favicon/34" getting sent to this source.
|
||||
std::string source_name_;
|
||||
int default_resource_;
|
||||
std::string json_path_;
|
||||
bool use_strings_js_ = false;
|
||||
std::map<std::string, int> path_to_idr_map_;
|
||||
// The replacements are initiallized in the main thread and then used in the
|
||||
// IO thread. The map is safe to read from multiple threads as long as no
|
||||
|
@ -101,8 +101,8 @@ void WebUIIOSDataSourceImpl::AddBoolean(const std::string& name, bool value) {
|
||||
localized_strings_.SetBoolean(name, value);
|
||||
}
|
||||
|
||||
void WebUIIOSDataSourceImpl::SetJsonPath(const std::string& path) {
|
||||
json_path_ = path;
|
||||
void WebUIIOSDataSourceImpl::UseStringsJs() {
|
||||
use_strings_js_ = true;
|
||||
}
|
||||
|
||||
void WebUIIOSDataSourceImpl::AddResourcePath(const std::string& path,
|
||||
@ -162,9 +162,12 @@ void WebUIIOSDataSourceImpl::StartDataRequest(
|
||||
const URLDataSourceIOS::GotDataCallback& callback) {
|
||||
EnsureLoadTimeDataDefaultsAdded();
|
||||
|
||||
if (!json_path_.empty() && path == json_path_) {
|
||||
SendLocalizedStringsAsJSON(callback);
|
||||
return;
|
||||
if (use_strings_js_) {
|
||||
bool from_js_module = path == "strings.m.js";
|
||||
if (from_js_module || path == "strings.js") {
|
||||
SendLocalizedStringsAsJSON(callback, from_js_module);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
int resource_id = PathToIdrOrDefault(path);
|
||||
@ -175,9 +178,10 @@ void WebUIIOSDataSourceImpl::StartDataRequest(
|
||||
}
|
||||
|
||||
void WebUIIOSDataSourceImpl::SendLocalizedStringsAsJSON(
|
||||
const URLDataSourceIOS::GotDataCallback& callback) {
|
||||
const URLDataSourceIOS::GotDataCallback& callback,
|
||||
bool from_js_module) {
|
||||
std::string template_data;
|
||||
webui::AppendJsonJS(&localized_strings_, &template_data);
|
||||
webui::AppendJsonJS(&localized_strings_, &template_data, from_js_module);
|
||||
callback.Run(base::RefCountedString::TakeString(&template_data));
|
||||
}
|
||||
|
||||
|
@ -24,7 +24,7 @@ namespace {
|
||||
// assigned to it.
|
||||
void AppendJsonHtml(const base::DictionaryValue* json, std::string* output) {
|
||||
std::string javascript_string;
|
||||
AppendJsonJS(json, &javascript_string);
|
||||
AppendJsonJS(json, &javascript_string, /*from_js_module=*/false);
|
||||
|
||||
// </ confuses the HTML parser because it could be a </script> tag. So we
|
||||
// replace </ with <\/. The extra \ will be ignored by the JS engine.
|
||||
@ -112,10 +112,19 @@ std::string GetTemplatesHtml(const base::StringPiece& html_template,
|
||||
return output;
|
||||
}
|
||||
|
||||
void AppendJsonJS(const base::DictionaryValue* json, std::string* output) {
|
||||
void AppendJsonJS(const base::DictionaryValue* json,
|
||||
std::string* output,
|
||||
bool from_js_module) {
|
||||
// Convert the template data to a json string.
|
||||
DCHECK(json) << "must include json data structure";
|
||||
|
||||
if (from_js_module) {
|
||||
// If the script is being imported as a module, import |loadTimeData| in
|
||||
// order to allow assigning the localized strings to loadTimeData.data.
|
||||
output->append("import {loadTimeData} from ");
|
||||
output->append("'chrome://resources/js/load_time_data.m.js';\n");
|
||||
}
|
||||
|
||||
std::string jstext;
|
||||
JSONStringValueSerializer serializer(&jstext);
|
||||
serializer.Serialize(*json);
|
||||
|
@ -41,7 +41,8 @@ UI_BASE_EXPORT std::string GetTemplatesHtml(
|
||||
|
||||
// Assigns the given json data into |loadTimeData|, without a <script> tag.
|
||||
UI_BASE_EXPORT void AppendJsonJS(const base::DictionaryValue* json,
|
||||
std::string* output);
|
||||
std::string* output,
|
||||
bool from_js_module);
|
||||
|
||||
} // namespace webui
|
||||
|
||||
|
Reference in New Issue
Block a user