From bbf2c566d2804a8ff73c5896e7b2db31c958f1c4 Mon Sep 17 00:00:00 2001 From: Szabolcs David Date: Thu, 21 Jan 2021 02:25:43 +0100 Subject: Start supporting chrome.resourcesPrivate API - Register browser interface binders for PDF viewer. Copied back this logic from the guest view implementation (from dev) to enable usage of chrome.resourcesPrivate API in the PDF viewer of 5.15. - Implement template replacements for extensions. Replace i18n placeholders in the PDF viewer HTML to prevent syntax issues and support localization. Task-number: QTBUG-90035 Change-Id: Ief5fc536435e5c183dc987462d89311dfa429970 Reviewed-by: Allan Sandfeld Jensen --- .../component_extension_resource_manager_qt.cpp | 25 +++++++++++++++++++--- .../component_extension_resource_manager_qt.h | 3 +++ 2 files changed, 25 insertions(+), 3 deletions(-) (limited to 'src/core/extensions') diff --git a/src/core/extensions/component_extension_resource_manager_qt.cpp b/src/core/extensions/component_extension_resource_manager_qt.cpp index 1f58de151..fb6bb5950 100644 --- a/src/core/extensions/component_extension_resource_manager_qt.cpp +++ b/src/core/extensions/component_extension_resource_manager_qt.cpp @@ -44,12 +44,19 @@ #include "component_extension_resource_manager_qt.h" +#include "base/check.h" #include "base/logging.h" #include "base/path_service.h" #include "base/stl_util.h" #include "base/values.h" - #include "chrome/grit/component_extension_resources_map.h" +#include "content/public/browser/browser_thread.h" +#include "extensions/common/constants.h" +#include "pdf/buildflags.h" + +#if BUILDFLAG(ENABLE_PDF) +#include "qtwebengine/browser/pdf/pdf_extension_util.h" +#endif // BUILDFLAG(ENABLE_PDF) namespace extensions { @@ -57,6 +64,16 @@ ComponentExtensionResourceManagerQt::ComponentExtensionResourceManagerQt() { AddComponentResourceEntries(kComponentExtensionResources, kComponentExtensionResourcesSize); + +#if BUILDFLAG(ENABLE_PDF) + 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); +#endif } ComponentExtensionResourceManagerQt::~ComponentExtensionResourceManagerQt() {} @@ -85,9 +102,11 @@ bool ComponentExtensionResourceManagerQt::IsComponentExtensionResource(const bas return false; } -const ui::TemplateReplacements *ComponentExtensionResourceManagerQt::GetTemplateReplacementsForExtension(const std::string &) const +const ui::TemplateReplacements *ComponentExtensionResourceManagerQt::GetTemplateReplacementsForExtension(const std::string &extension_id) const { - return nullptr; + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + auto it = template_replacements_.find(extension_id); + return it != template_replacements_.end() ? &it->second : nullptr; } void ComponentExtensionResourceManagerQt::AddComponentResourceEntries(const GritResourceMap *entries, size_t size) diff --git a/src/core/extensions/component_extension_resource_manager_qt.h b/src/core/extensions/component_extension_resource_manager_qt.h index 992e9f87c..6131e91aa 100644 --- a/src/core/extensions/component_extension_resource_manager_qt.h +++ b/src/core/extensions/component_extension_resource_manager_qt.h @@ -73,6 +73,9 @@ private: // IsComponentExtensionResource. std::map path_to_resource_id_; + // A map from an extension ID to its i18n template replacements. + std::map template_replacements_; + DISALLOW_COPY_AND_ASSIGN(ComponentExtensionResourceManagerQt); }; -- cgit v1.2.3