From be147ed68307aea9d1debc7726eb9f4f531fc632 Mon Sep 17 00:00:00 2001 From: Marshall Greenblatt Date: Thu, 4 Feb 2021 18:04:02 -0500 Subject: [PATCH] Fix PDF viewer label substitutions (fixes issue #3081) --- .../component_extension_resource_manager.cc | 17 ++++++++++++++++- .../component_extension_resource_manager.h | 5 +++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/libcef/browser/extensions/component_extension_resource_manager.cc b/libcef/browser/extensions/component_extension_resource_manager.cc index c76e867a5..8a385db0c 100644 --- a/libcef/browser/extensions/component_extension_resource_manager.cc +++ b/libcef/browser/extensions/component_extension_resource_manager.cc @@ -6,14 +6,28 @@ #include "base/logging.h" #include "base/path_service.h" +#include "base/values.h" +#include "chrome/browser/pdf/pdf_extension_util.h" #include "chrome/common/chrome_paths.h" #include "chrome/grit/component_extension_resources_map.h" +#include "extensions/common/constants.h" namespace extensions { CefComponentExtensionResourceManager::CefComponentExtensionResourceManager() { AddComponentResourceEntries(kComponentExtensionResources, kComponentExtensionResourcesSize); + + base::Value dict(base::Value::Type::DICTIONARY); + pdf_extension_util::AddStrings( + pdf_extension_util::PdfViewerContext::kPdfViewer, &dict); + pdf_extension_util::AddAdditionalData(&dict); + + ui::TemplateReplacements pdf_viewer_replacements; + ui::TemplateReplacementsFromDictionaryValue( + base::Value::AsDictionaryValue(dict), &pdf_viewer_replacements); + template_replacements_[extension_misc::kPdfExtensionId] = + std::move(pdf_viewer_replacements); } CefComponentExtensionResourceManager::~CefComponentExtensionResourceManager() {} @@ -44,7 +58,8 @@ bool CefComponentExtensionResourceManager::IsComponentExtensionResource( const ui::TemplateReplacements* CefComponentExtensionResourceManager::GetTemplateReplacementsForExtension( const std::string& extension_id) const { - return nullptr; + auto it = template_replacements_.find(extension_id); + return it != template_replacements_.end() ? &it->second : nullptr; } void CefComponentExtensionResourceManager::AddComponentResourceEntries( diff --git a/libcef/browser/extensions/component_extension_resource_manager.h b/libcef/browser/extensions/component_extension_resource_manager.h index c6ed3f930..38a421e07 100644 --- a/libcef/browser/extensions/component_extension_resource_manager.h +++ b/libcef/browser/extensions/component_extension_resource_manager.h @@ -35,6 +35,11 @@ class CefComponentExtensionResourceManager // IsComponentExtensionResource. std::map path_to_resource_info_; + // A map from an extension ID to its i18n template replacements. + using TemplateReplacementMap = + std::map; + TemplateReplacementMap template_replacements_; + DISALLOW_COPY_AND_ASSIGN(CefComponentExtensionResourceManager); };