diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2022-11-30 11:41:51 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2023-01-06 00:00:55 +0100 |
commit | 5121effa745cf88b6d50630249570113941c2ca2 (patch) | |
tree | 632ed3f3324667366ced2329459f9ca6205941af /src | |
parent | 5836832dfde5687dae5762509e560e1c7f2258ce (diff) |
Adaptations for 108-based
Pick-to: 6.5
Fixes: QTBUG-105147
Change-Id: I0022964903f3443cc97843c62468ab9be8ae2ed8
Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
Diffstat (limited to 'src')
51 files changed, 220 insertions, 145 deletions
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index f5cb6e04d..c0522869d 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -382,11 +382,16 @@ foreach(arch ${archs}) if(LINUX) list(APPEND gnArgArg + use_gtk=false # GTK toolkit bindings + use_qt=false # Qt5 toolkit bindings use_cups=false use_gio=false use_gnome_keyring=false - use_udev=true use_bundled_fontconfig=false + use_glib=false + use_bluez=false + use_vaapi=false + use_udev=true enable_session_service=false is_cfi=false use_ozone=true @@ -395,9 +400,6 @@ foreach(arch ${archs}) ozone_platform_external=true ozone_platform="qt" ozone_extra_path="${CMAKE_CURRENT_LIST_DIR}/ozone/ozone_extra.gni" - use_glib=false - use_bluez=false - use_vaapi=false ) set(systemLibs libjpeg libpng freetype harfbuzz libevent libwebp libxml opus snappy libvpx icu ffmpeg re2 lcms2 diff --git a/src/core/accessibility_tree_formatter_qt.cpp b/src/core/accessibility_tree_formatter_qt.cpp index c85605654..021ef0546 100644 --- a/src/core/accessibility_tree_formatter_qt.cpp +++ b/src/core/accessibility_tree_formatter_qt.cpp @@ -24,16 +24,16 @@ public: explicit AccessibilityTreeFormatterQt(); ~AccessibilityTreeFormatterQt() override; - base::Value BuildTree(ui::AXPlatformNodeDelegate *start) const override; - base::Value BuildTreeForSelector(const AXTreeSelector &selector) const override + base::Value::Dict BuildTree(ui::AXPlatformNodeDelegate *start) const override; + base::Value::Dict BuildTreeForSelector(const AXTreeSelector &selector) const override { - return base::Value{}; + return base::Value::Dict{}; } private: void RecursiveBuildAccessibilityTree(const BrowserAccessibility &node, base::Value::Dict *dict) const; void AddProperties(const BrowserAccessibility &node, base::Value::Dict *dict) const; - std::string ProcessTreeForOutput(const base::DictionaryValue &node) const override; + std::string ProcessTreeForOutput(const base::Value::Dict &node) const override; }; AccessibilityTreeFormatterQt::AccessibilityTreeFormatterQt() @@ -44,13 +44,13 @@ AccessibilityTreeFormatterQt::~AccessibilityTreeFormatterQt() { } -base::Value AccessibilityTreeFormatterQt::BuildTree(ui::AXPlatformNodeDelegate *start) const +base::Value::Dict AccessibilityTreeFormatterQt::BuildTree(ui::AXPlatformNodeDelegate *start) const { BrowserAccessibility *root_internal = BrowserAccessibility::FromAXPlatformNodeDelegate(start); base::Value::Dict dict; RecursiveBuildAccessibilityTree(*root_internal, &dict); - return base::Value(std::move(dict)); + return dict; } void AccessibilityTreeFormatterQt::RecursiveBuildAccessibilityTree(const BrowserAccessibility &node, base::Value::Dict *dict) const @@ -135,36 +135,33 @@ void AccessibilityTreeFormatterQt::AddProperties(const BrowserAccessibility &nod dict->Set("description", iface->text(QAccessible::Description).toStdString()); } -std::string AccessibilityTreeFormatterQt::ProcessTreeForOutput(const base::DictionaryValue &node) const +std::string AccessibilityTreeFormatterQt::ProcessTreeForOutput(const base::Value::Dict &node) const { std::string error_value; - if (node.GetString("error", &error_value)) - return error_value; + if (auto error_value = node.FindString("error")) + return *error_value; std::string line; std::string role_value; - node.GetString("role", &role_value); - if (!role_value.empty()) - WriteAttribute(true, base::StringPrintf("%s", role_value.c_str()), &line); + if (auto role_value = node.FindString("role")) + WriteAttribute(true, base::StringPrintf("%s", role_value->c_str()), &line); - const base::ListValue *states_value = nullptr; - if (node.GetList("states", &states_value)) { - for (const auto &state : states_value->GetList()) { + if (const auto states_value = node.FindList("states")) { + for (const auto &state : *states_value) { if (auto *state_value = state.GetIfString()) WriteAttribute(false, *state_value, &line); } } - std::string name_value; - if (node.GetString("name", &name_value)) - WriteAttribute(true, base::StringPrintf("name='%s'", name_value.c_str()), &line); + if (auto name_value = node.FindString("name")) + WriteAttribute(true, base::StringPrintf("name='%s'", name_value->c_str()), &line); - std::string description_value; - if (node.GetString("description", &description_value)) - WriteAttribute(false, base::StringPrintf("description='%s'", description_value.c_str()), &line); + if (auto description_value = node.FindString("description")) + WriteAttribute(false, base::StringPrintf("description='%s'", description_value->c_str()), &line); int id_value; - node.GetInteger("id", &id_value); + if (auto maybe_id = node.FindInt("id")) + id_value = *maybe_id; WriteAttribute(false, base::StringPrintf("id=%d", id_value), &line); return line + "\n"; diff --git a/src/core/autofill_client_qt.cpp b/src/core/autofill_client_qt.cpp index 01b5be768..aaf775d60 100644 --- a/src/core/autofill_client_qt.cpp +++ b/src/core/autofill_client_qt.cpp @@ -39,7 +39,7 @@ autofill::AutocompleteHistoryManager *AutofillClientQt::GetAutocompleteHistoryMa PrefService *AutofillClientQt::GetPrefs() { - return const_cast<PrefService *>(base::as_const(*this).GetPrefs()); + return const_cast<PrefService *>(std::as_const(*this).GetPrefs()); } const PrefService *AutofillClientQt::GetPrefs() const diff --git a/src/core/autofill_popup_controller.cpp b/src/core/autofill_popup_controller.cpp index f13188a99..6e5890e47 100644 --- a/src/core/autofill_popup_controller.cpp +++ b/src/core/autofill_popup_controller.cpp @@ -26,7 +26,7 @@ void AutofillPopupController::setCurrentIndex(const QModelIndex &index) if (m_currentIndex.isValid()) { const autofill::Suggestion &suggestion = d->suggestions[m_currentIndex.row()]; - d->delegate->DidSelectSuggestion(suggestion.main_text.value, suggestion.frontend_id, suggestion.GetPayload<std::string>()); + d->delegate->DidSelectSuggestion(suggestion.main_text.value, suggestion.frontend_id, autofill::Suggestion::BackendId()); } Q_EMIT currentIndexChanged(index); @@ -79,8 +79,7 @@ void AutofillPopupController::acceptSuggestion() const int index = m_currentIndex.row(); const autofill::Suggestion &suggestion = d->suggestions[index]; - d->delegate->DidAcceptSuggestion(suggestion.main_text.value, suggestion.frontend_id, - suggestion.payload, index); + d->delegate->DidAcceptSuggestion(suggestion, index); } void AutofillPopupController::notifyPopupShown() diff --git a/src/core/browser_accessibility_manager_qt.cpp b/src/core/browser_accessibility_manager_qt.cpp index 7c16d54a0..205ca6edf 100644 --- a/src/core/browser_accessibility_manager_qt.cpp +++ b/src/core/browser_accessibility_manager_qt.cpp @@ -24,7 +24,7 @@ namespace content { // static BrowserAccessibilityManager *BrowserAccessibilityManager::Create( const ui::AXTreeUpdate &initialTree, - BrowserAccessibilityDelegate *delegate) + WebAXPlatformTreeManagerDelegate *delegate) { #if QT_CONFIG(accessibility) Q_ASSERT(delegate); @@ -49,7 +49,7 @@ BrowserAccessibilityManager *BrowserAccessibilityManager::Create( // static BrowserAccessibilityManager *BrowserAccessibilityManager::Create( - BrowserAccessibilityDelegate *delegate) + WebAXPlatformTreeManagerDelegate *delegate) { #if QT_CONFIG(accessibility) return BrowserAccessibilityManager::Create(BrowserAccessibilityManagerQt::GetEmptyDocument(), delegate); @@ -62,7 +62,7 @@ BrowserAccessibilityManager *BrowserAccessibilityManager::Create( BrowserAccessibilityManagerQt::BrowserAccessibilityManagerQt( QtWebEngineCore::WebContentsAccessibilityQt *webContentsAccessibility, const ui::AXTreeUpdate &initialTree, - BrowserAccessibilityDelegate* delegate) + WebAXPlatformTreeManagerDelegate* delegate) : BrowserAccessibilityManager(delegate) , m_webContentsAccessibility(webContentsAccessibility) { @@ -148,9 +148,13 @@ void BrowserAccessibilityManagerQt::FireBlinkEvent(ax::mojom::Event event_type, } void BrowserAccessibilityManagerQt::FireGeneratedEvent(ui::AXEventGenerator::Event event_type, - BrowserAccessibility* node) + const ui::AXNode *node) { - auto *iface = toQAccessibleInterface(node); + BrowserAccessibilityManager::FireGeneratedEvent(event_type, node); + + BrowserAccessibility *wrapper = GetFromAXNode(node); + DCHECK(wrapper); + auto *iface = toQAccessibleInterface(wrapper); switch (event_type) { case ui::AXEventGenerator::Event::VALUE_IN_TEXT_FIELD_CHANGED: diff --git a/src/core/browser_accessibility_manager_qt.h b/src/core/browser_accessibility_manager_qt.h index 6cd3c84de..839f6da20 100644 --- a/src/core/browser_accessibility_manager_qt.h +++ b/src/core/browser_accessibility_manager_qt.h @@ -24,13 +24,13 @@ class BrowserAccessibilityManagerQt : public BrowserAccessibilityManager public: BrowserAccessibilityManagerQt(QtWebEngineCore::WebContentsAccessibilityQt *webContentsAccessibility, const ui::AXTreeUpdate &initialTree, - BrowserAccessibilityDelegate *delegate); + WebAXPlatformTreeManagerDelegate *delegate); ~BrowserAccessibilityManagerQt() override; void FireBlinkEvent(ax::mojom::Event event_type, BrowserAccessibility *node, int action_request_id) override; void FireGeneratedEvent(ui::AXEventGenerator::Event event_type, - BrowserAccessibility* node) override; + const ui::AXNode *node) override; QAccessibleInterface *rootParentAccessible(); bool isValid() const { return m_valid; } diff --git a/src/core/browser_accessibility_qt.cpp b/src/core/browser_accessibility_qt.cpp index dd40eaf49..7c9111c56 100644 --- a/src/core/browser_accessibility_qt.cpp +++ b/src/core/browser_accessibility_qt.cpp @@ -357,6 +357,8 @@ QAccessible::Role BrowserAccessibilityInterface::role() const case ax::mojom::Role::kComboBoxMenuButton: case ax::mojom::Role::kTextFieldWithComboBox: return QAccessible::ComboBox; + case ax::mojom::Role::kComboBoxSelect: + return QAccessible::PopupMenu; case ax::mojom::Role::kComplementary: return QAccessible::ComplementaryContent; case ax::mojom::Role::kComment: diff --git a/src/core/client_hints.cpp b/src/core/client_hints.cpp index f80fa5797..2a30bb51b 100644 --- a/src/core/client_hints.cpp +++ b/src/core/client_hints.cpp @@ -161,4 +161,13 @@ blink::UserAgentMetadata ClientHints::GetUserAgentMetadata() return embedder_support::GetUserAgentMetadata(); } +void ClientHints::SetMostRecentMainFrameViewportSize( + const gfx::Size& viewport_size) { + viewport_size_ = viewport_size; +} + +gfx::Size +ClientHints::GetMostRecentMainFrameViewportSize() { + return viewport_size_; +} } // namespace diff --git a/src/core/client_hints.h b/src/core/client_hints.h index 841f41993..a80629fc9 100644 --- a/src/core/client_hints.h +++ b/src/core/client_hints.h @@ -70,6 +70,9 @@ public: void ClearAdditionalClientHints() override; + void SetMostRecentMainFrameViewportSize(const gfx::Size&) override; + gfx::Size GetMostRecentMainFrameViewportSize() override; + private: SEQUENCE_CHECKER(sequence_checker_); @@ -87,6 +90,11 @@ private: std::unique_ptr<network::NetworkQualityTracker> network_quality_tracker_ GUARDED_BY_CONTEXT(sequence_checker_); + + // This stores the viewport size of the most recent visible main frame tree + // node. This value is only used when the viewport size cannot be directly + // queried such as for prefetch requests and for tab restores. + gfx::Size viewport_size_; }; } // namespace QtWebEngineCore diff --git a/src/core/compositor/vulkan_implementation_qt.cpp b/src/core/compositor/vulkan_implementation_qt.cpp index 3090a945a..f24ec334b 100644 --- a/src/core/compositor/vulkan_implementation_qt.cpp +++ b/src/core/compositor/vulkan_implementation_qt.cpp @@ -142,10 +142,9 @@ bool VulkanImplementationQt::CanImportGpuMemoryBuffer( return false; } -std::unique_ptr<VulkanImage> -VulkanImplementationQt::CreateImageFromGpuMemoryHandle(VulkanDeviceQueue * /*device_queue*/, - gfx::GpuMemoryBufferHandle /*gmb_handle*/, - gfx::Size /*size*/, VkFormat /*vk_format*/) +std::unique_ptr<VulkanImage> VulkanImplementationQt::CreateImageFromGpuMemoryHandle(VulkanDeviceQueue *, gfx::GpuMemoryBufferHandle, + gfx::Size, VkFormat, + const gfx::ColorSpace &) { NOTREACHED(); return nullptr; diff --git a/src/core/compositor/vulkan_implementation_qt.h b/src/core/compositor/vulkan_implementation_qt.h index db48acead..56a61e086 100644 --- a/src/core/compositor/vulkan_implementation_qt.h +++ b/src/core/compositor/vulkan_implementation_qt.h @@ -34,10 +34,10 @@ public: VkExternalMemoryHandleTypeFlagBits GetExternalImageHandleType() override; bool CanImportGpuMemoryBuffer(VulkanDeviceQueue* device_queue, gfx::GpuMemoryBufferType memory_buffer_type) override; - std::unique_ptr<VulkanImage> - CreateImageFromGpuMemoryHandle(VulkanDeviceQueue *device_queue, - gfx::GpuMemoryBufferHandle gmb_handle, gfx::Size size, - VkFormat vk_format) override; + std::unique_ptr<VulkanImage> CreateImageFromGpuMemoryHandle(VulkanDeviceQueue *device_queue, + gfx::GpuMemoryBufferHandle gmb_handle, + gfx::Size size, VkFormat vk_format, + const gfx::ColorSpace &color_space) override; private: VulkanInstance vulkan_instance_; diff --git a/src/core/configure/BUILD.root.gn.in b/src/core/configure/BUILD.root.gn.in index bf0454863..71e188a76 100644 --- a/src/core/configure/BUILD.root.gn.in +++ b/src/core/configure/BUILD.root.gn.in @@ -368,7 +368,7 @@ source_set("qtwebengine_sources") { "//extensions/common/url_pattern.h", ] } - if (is_linux) { + if (is_linux || is_win) { sources += [ "//chrome/browser/ui/webui/sandbox/sandbox_internals_ui.cc", "//chrome/browser/ui/webui/sandbox/sandbox_internals_ui.h", @@ -378,6 +378,8 @@ source_set("qtwebengine_sources") { sources += [ "//chrome/browser/net/chrome_mojo_proxy_resolver_win.cc", "//chrome/browser/net/chrome_mojo_proxy_resolver_win.h", + "//chrome/browser/ui/webui/sandbox/sandbox_handler.cc", + "//chrome/browser/ui/webui/sandbox/sandbox_handler.h", ] deps += [ "//services/proxy_resolver_win", "//services/proxy_resolver_win/public/mojom", @@ -508,6 +510,7 @@ repack("qtwebengine_repack_resources") { "$root_gen_dir/content/browser/tracing/tracing_resources.pak", "$root_gen_dir/content/content_resources.pak", "$root_gen_dir/content/dev_ui_content_resources.pak", + "$root_gen_dir/content/indexed_db_resources.pak", "$root_gen_dir/content/quota_internals_resources.pak", "$root_gen_dir/mojo/public/js/mojo_bindings_resources.pak", "$root_gen_dir/net/net_resources.pak", @@ -525,6 +528,7 @@ repack("qtwebengine_repack_resources") { "//content/browser/resources/media:resources", "//content/browser/tracing:resources", "//content:content_resources", + "//content/browser/resources/indexed_db:resources", "//content/browser/resources/quota:resources", "//content:dev_ui_content_resources_grit", "//mojo/public/js:resources", diff --git a/src/core/content_browser_client_qt.cpp b/src/core/content_browser_client_qt.cpp index 075530bdd..553228ffc 100644 --- a/src/core/content_browser_client_qt.cpp +++ b/src/core/content_browser_client_qt.cpp @@ -1231,8 +1231,7 @@ bool ContentBrowserClientQt::WillCreateURLLoaderFactory( std::vector<std::unique_ptr<content::URLLoaderRequestInterceptor>> ContentBrowserClientQt::WillCreateURLLoaderRequestInterceptors(content::NavigationUIData* navigation_ui_data, - int frame_tree_node_id, - const scoped_refptr<network::SharedURLLoaderFactory>& network_loader_factory) + int frame_tree_node_id) { std::vector<std::unique_ptr<content::URLLoaderRequestInterceptor>> interceptors; #if BUILDFLAG(ENABLE_PDF) && BUILDFLAG(ENABLE_EXTENSIONS) diff --git a/src/core/content_browser_client_qt.h b/src/core/content_browser_client_qt.h index cb0fbe46c..b81b96ce1 100644 --- a/src/core/content_browser_client_qt.h +++ b/src/core/content_browser_client_qt.h @@ -193,8 +193,7 @@ public: const std::string &scheme) override; std::vector<std::unique_ptr<content::URLLoaderRequestInterceptor>> WillCreateURLLoaderRequestInterceptors(content::NavigationUIData *navigation_ui_data, - int frame_tree_node_id, - const scoped_refptr<network::SharedURLLoaderFactory> &network_loader_factory) override; + int frame_tree_node_id) override; bool WillCreateURLLoaderFactory(content::BrowserContext *browser_context, content::RenderFrameHost *frame, int render_process_id, diff --git a/src/core/content_client_qt.cpp b/src/core/content_client_qt.cpp index 67faabde8..4a67dc029 100644 --- a/src/core/content_client_qt.cpp +++ b/src/core/content_client_qt.cpp @@ -50,8 +50,8 @@ const char kWidevineCdmFileName[] = #endif // BUILDFLAG(ENABLE_LIBRARY_CDMS) #if QT_CONFIG(webengine_printing_and_pdf) +#include "components/pdf/common/internal_plugin_helpers.h" #include "pdf/pdf.h" -const char kPdfPluginMimeType[] = "application/x-google-chrome-pdf"; const char kPdfPluginPath[] = "internal-pdf-viewer"; #endif // QT_CONFIG(webengine_printing_and_pdf) @@ -98,7 +98,7 @@ static QString getProgramFilesDir(bool x86Dir = false) // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE.Chromium file. -#include "content/public/common/pepper_plugin_info.h" +#include "content/public/common/content_plugin_info.h" #include "ppapi/shared_impl/ppapi_permissions.h" static QString ppapiPluginsPath() @@ -114,16 +114,19 @@ static QString ppapiPluginsPath() return potentialPluginsPath; } -void ComputeBuiltInPlugins(std::vector<content::PepperPluginInfo>* plugins) +void ComputeBuiltInPlugins(std::vector<content::ContentPluginInfo> *plugins) { #if QT_CONFIG(webengine_printing_and_pdf) - content::PepperPluginInfo pdf_info; + static constexpr char kPDFPluginExtension[] = "pdf"; + static constexpr char kPDFPluginDescription[] = "Portable Document Format"; + content::ContentPluginInfo pdf_info; pdf_info.is_internal = true; pdf_info.is_out_of_process = true; pdf_info.name = "Chromium PDF Viewer"; - pdf_info.description = "Portable Document Format"; + pdf_info.description = kPDFPluginDescription; pdf_info.path = base::FilePath::FromUTF8Unsafe(kPdfPluginPath); - content::WebPluginMimeType pdf_mime_type(kPdfPluginMimeType, "pdf", "Portable Document Format"); + content::WebPluginMimeType pdf_mime_type( + pdf::kInternalPluginMimeType, kPDFPluginExtension, kPDFPluginDescription); pdf_info.mime_types.push_back(pdf_mime_type); plugins->push_back(pdf_info); #endif // QT_CONFIG(webengine_printing_and_pdf) @@ -131,7 +134,7 @@ void ComputeBuiltInPlugins(std::vector<content::PepperPluginInfo>* plugins) namespace QtWebEngineCore { -void ContentClientQt::AddPepperPlugins(std::vector<content::PepperPluginInfo>* plugins) +void ContentClientQt::AddPlugins(std::vector<content::ContentPluginInfo> *plugins) { ComputeBuiltInPlugins(plugins); } diff --git a/src/core/content_client_qt.h b/src/core/content_client_qt.h index f0afdcb58..92d41b748 100644 --- a/src/core/content_client_qt.h +++ b/src/core/content_client_qt.h @@ -14,7 +14,7 @@ namespace QtWebEngineCore { class ContentClientQt : public content::ContentClient { public: #if QT_CONFIG(webengine_pepper_plugins) - void AddPepperPlugins(std::vector<content::PepperPluginInfo>* plugins) override; + void AddPlugins(std::vector<content::ContentPluginInfo> *plugins) override; #endif void AddContentDecryptionModules(std::vector<content::CdmInfo> *cdms, std::vector<media::CdmHostFilePath> *cdm_host_file_paths) override; diff --git a/src/core/devtools_frontend_qt.cpp b/src/core/devtools_frontend_qt.cpp index cda922ffa..73698e263 100644 --- a/src/core/devtools_frontend_qt.cpp +++ b/src/core/devtools_frontend_qt.cpp @@ -316,7 +316,7 @@ void DevToolsFrontendQt::WebContentsDestroyed() void DevToolsFrontendQt::SetPreference(const std::string &name, const std::string &value) { DCHECK(m_prefStore); - m_prefStore->SetValue(name, base::WrapUnique(new base::Value(value)), 0); + m_prefStore->SetValue(name, base::Value(value), 0); } void DevToolsFrontendQt::RemovePreference(const std::string &name) diff --git a/src/core/extensions/component_extension_resource_manager_qt.cpp b/src/core/extensions/component_extension_resource_manager_qt.cpp index b2cb7e356..428f673d3 100644 --- a/src/core/extensions/component_extension_resource_manager_qt.cpp +++ b/src/core/extensions/component_extension_resource_manager_qt.cpp @@ -37,12 +37,12 @@ ComponentExtensionResourceManagerQt::ComponentExtensionResourceManagerQt() AddComponentResourceEntries(kPdfResources, kPdfResourcesSize); #endif #if BUILDFLAG(ENABLE_PDF) - base::Value dict(base::Value::Type::DICTIONARY); + base::Value::Dict dict; pdf_extension_util::AddStrings(pdf_extension_util::PdfViewerContext::kPdfViewer, &dict); - pdf_extension_util::AddAdditionalData(&dict); + pdf_extension_util::AddAdditionalData(/*enable_annotations=*/true, &dict); ui::TemplateReplacements pdf_viewer_replacements; - ui::TemplateReplacementsFromDictionaryValue(dict.GetDict(), &pdf_viewer_replacements); + ui::TemplateReplacementsFromDictionaryValue(dict, &pdf_viewer_replacements); template_replacements_[extension_misc::kPdfExtensionId] = std::move(pdf_viewer_replacements); #endif } diff --git a/src/core/extensions/extensions_browser_client_qt.cpp b/src/core/extensions/extensions_browser_client_qt.cpp index df720987a..ab44c23eb 100644 --- a/src/core/extensions/extensions_browser_client_qt.cpp +++ b/src/core/extensions/extensions_browser_client_qt.cpp @@ -166,7 +166,7 @@ private: if (!head->mime_type.empty()) { head->headers->AddHeader(net::HttpRequestHeaders::kContentType, head->mime_type.c_str()); } - client_->OnReceiveResponse(std::move(head), std::move(consumer_handle)); + client_->OnReceiveResponse(std::move(head), std::move(consumer_handle), absl::nullopt); uint32_t write_size = data->size(); MojoResult result = producer_handle->WriteData(data->front(), &write_size, MOJO_WRITE_DATA_FLAG_NONE); @@ -291,6 +291,24 @@ BrowserContext *ExtensionsBrowserClientQt::GetOriginalContext(BrowserContext *co return context; } +BrowserContext *ExtensionsBrowserClientQt::GetRedirectedContextInIncognito(BrowserContext *context, bool, bool) +{ + // like in ShellExtensionsBrowserClient: + return context; +} + +BrowserContext *ExtensionsBrowserClientQt::GetContextForRegularAndIncognito(BrowserContext *context, bool, bool) +{ + // like in ShellExtensionsBrowserClient: + return context; +} + +BrowserContext *ExtensionsBrowserClientQt::GetRegularProfile(BrowserContext *context, bool, bool) +{ + // like in ShellExtensionsBrowserClient: + return context; +} + bool ExtensionsBrowserClientQt::IsGuestSession(BrowserContext *context) const { return context->IsOffTheRecord(); diff --git a/src/core/extensions/extensions_browser_client_qt.h b/src/core/extensions/extensions_browser_client_qt.h index a5a35175c..78b56d920 100644 --- a/src/core/extensions/extensions_browser_client_qt.h +++ b/src/core/extensions/extensions_browser_client_qt.h @@ -35,6 +35,9 @@ public: bool HasOffTheRecordContext(content::BrowserContext *context) override; content::BrowserContext *GetOffTheRecordContext(content::BrowserContext *context) override; content::BrowserContext *GetOriginalContext(content::BrowserContext *context) override; + content::BrowserContext *GetRedirectedContextInIncognito(content::BrowserContext *context, bool, bool) override; + content::BrowserContext *GetContextForRegularAndIncognito(content::BrowserContext *context, bool, bool) override; + content::BrowserContext *GetRegularProfile(content::BrowserContext *context, bool, bool) override; bool IsGuestSession(content::BrowserContext *context) const override; bool IsExtensionIncognitoEnabled(const std::string &extension_id, content::BrowserContext *context) const override; bool CanExtensionCrossIncognito(const Extension *extension, content::BrowserContext *context) const override; diff --git a/src/core/extensions/messaging_delegate_qt.cpp b/src/core/extensions/messaging_delegate_qt.cpp index 791949cb5..b0089aea2 100644 --- a/src/core/extensions/messaging_delegate_qt.cpp +++ b/src/core/extensions/messaging_delegate_qt.cpp @@ -11,10 +11,10 @@ MessagingDelegateQt::MessagingDelegateQt() { } -std::unique_ptr<base::DictionaryValue> MessagingDelegateQt::MaybeGetTabInfo(content::WebContents *web_contents) +absl::optional<base::Value::Dict> MessagingDelegateQt::MaybeGetTabInfo(content::WebContents *web_contents) { Q_UNUSED(web_contents); - return nullptr; + return absl::nullopt; } } // namespace extensions diff --git a/src/core/extensions/messaging_delegate_qt.h b/src/core/extensions/messaging_delegate_qt.h index f1d312544..c3c6244f5 100644 --- a/src/core/extensions/messaging_delegate_qt.h +++ b/src/core/extensions/messaging_delegate_qt.h @@ -22,7 +22,7 @@ public: MessagingDelegateQt(); // MessagingDelegate implementation. - std::unique_ptr<base::DictionaryValue> MaybeGetTabInfo(content::WebContents *web_contents) override; + absl::optional<base::Value::Dict> MaybeGetTabInfo(content::WebContents *web_contents) override; }; } // namespace extensions diff --git a/src/core/file_picker_controller.cpp b/src/core/file_picker_controller.cpp index f1b843e8a..e69db7553 100644 --- a/src/core/file_picker_controller.cpp +++ b/src/core/file_picker_controller.cpp @@ -179,11 +179,14 @@ void FilePickerController::filesSelectedInChooser(const QStringList &filesList) if (d_ptr->fileDialogListener) { QStringList files(filesList); base::FilePath baseDir; - if (d_ptr->mode == UploadFolder && !filesList.isEmpty() - && QFileInfo(filesList.first()).isDir()) { - // Enumerate the directory - files = listRecursively(QDir(filesList.first())); - baseDir = toFilePath(filesList.first()); + if (d_ptr->mode == UploadFolder && !filesList.isEmpty()) { + if (QFileInfo(filesList.first()).isDir()) { + // Enumerate the directory + files = listRecursively(QDir(filesList.first())); + baseDir = toFilePath(filesList.first()); + } else { + baseDir = toFilePath(filesList.first()).DirName(); + } } std::vector<blink::mojom::FileChooserFileInfoPtr> chooser_files; diff --git a/src/core/file_system_access/file_system_access_permission_context_qt.cpp b/src/core/file_system_access/file_system_access_permission_context_qt.cpp index 6144aa9ea..a8406c8ae 100644 --- a/src/core/file_system_access/file_system_access_permission_context_qt.cpp +++ b/src/core/file_system_access/file_system_access_permission_context_qt.cpp @@ -258,7 +258,7 @@ FileSystemAccessPermissionContextQt::GetWritePermissionGrant(const url::Origin & void FileSystemAccessPermissionContextQt::ConfirmSensitiveEntryAccess( const url::Origin &origin, PathType path_type, const base::FilePath &path, - HandleType handle_type, ui::SelectFileDialog::Type dialog_type, + HandleType handle_type, UserAction user_action, content::GlobalRenderFrameHostId frame_id, base::OnceCallback<void(SensitiveEntryResult)> callback) { @@ -271,7 +271,7 @@ void FileSystemAccessPermissionContextQt::ConfirmSensitiveEntryAccess( FROM_HERE, { base::MayBlock(), base::TaskPriority::USER_VISIBLE }, base::BindOnce(&ShouldBlockAccessToPath, path, handle_type), base::BindOnce(&FileSystemAccessPermissionContextQt::DidConfirmSensitiveDirectoryAccess, - m_weakFactory.GetWeakPtr(), origin, path, handle_type, dialog_type, frame_id, + m_weakFactory.GetWeakPtr(), origin, path, handle_type, user_action, frame_id, std::move(callback))); } @@ -322,7 +322,7 @@ FileSystemAccessPermissionContextQt::GetLastPickedDirectory(const url::Origin &o } base::FilePath FileSystemAccessPermissionContextQt::GetWellKnownDirectoryPath( - blink::mojom::WellKnownDirectory directory) + blink::mojom::WellKnownDirectory directory, const url::Origin &origin) { QStandardPaths::StandardLocation location = QStandardPaths::DocumentsLocation; switch (directory) { @@ -378,14 +378,14 @@ void FileSystemAccessPermissionContextQt::NavigatedAwayFromOrigin(const url::Ori } void FileSystemAccessPermissionContextQt::DidConfirmSensitiveDirectoryAccess( - const url::Origin &origin, const base::FilePath &path, HandleType handle_type, ui::SelectFileDialog::Type dialog_type, + const url::Origin &origin, const base::FilePath &path, HandleType handle_type, UserAction user_action, content::GlobalRenderFrameHostId frame_id, base::OnceCallback<void(SensitiveEntryResult)> callback, bool should_block) { Q_UNUSED(origin); Q_UNUSED(path); Q_UNUSED(handle_type); - Q_UNUSED(dialog_type); + Q_UNUSED(user_action); Q_UNUSED(frame_id); if (should_block) diff --git a/src/core/file_system_access/file_system_access_permission_context_qt.h b/src/core/file_system_access/file_system_access_permission_context_qt.h index affe141bc..713239525 100644 --- a/src/core/file_system_access/file_system_access_permission_context_qt.h +++ b/src/core/file_system_access/file_system_access_permission_context_qt.h @@ -38,7 +38,7 @@ public: HandleType handle_type, UserAction user_action) override; void ConfirmSensitiveEntryAccess( const url::Origin &origin, PathType path_type, const base::FilePath &path, - HandleType handle_type, ui::SelectFileDialog::Type dialog_type, + HandleType handle_type, UserAction user_action, content::GlobalRenderFrameHostId frame_id, base::OnceCallback<void(SensitiveEntryResult)> callback) override; void PerformAfterWriteChecks(std::unique_ptr<content::FileSystemAccessWriteItem> item, @@ -50,7 +50,7 @@ public: const base::FilePath &path, const PathType type) override; FileSystemAccessPermissionContextQt::PathInfo GetLastPickedDirectory(const url::Origin &origin, const std::string &id) override; - base::FilePath GetWellKnownDirectoryPath(blink::mojom::WellKnownDirectory directory) override; + base::FilePath GetWellKnownDirectoryPath(blink::mojom::WellKnownDirectory directory, const url::Origin &origin) override; std::u16string GetPickerTitle(const blink::mojom::FilePickerOptionsPtr &) override; void NavigatedAwayFromOrigin(const url::Origin &origin); @@ -61,7 +61,7 @@ private: void DidConfirmSensitiveDirectoryAccess( const url::Origin &origin, const base::FilePath &path, HandleType handle_type, - ui::SelectFileDialog::Type dialog_type, content::GlobalRenderFrameHostId frame_id, + UserAction user_action, content::GlobalRenderFrameHostId frame_id, base::OnceCallback<void(SensitiveEntryResult)> callback, bool should_block); content::BrowserContext *m_profile; diff --git a/src/core/media_capture_devices_dispatcher.cpp b/src/core/media_capture_devices_dispatcher.cpp index f8baf72a5..a6ac070af 100644 --- a/src/core/media_capture_devices_dispatcher.cpp +++ b/src/core/media_capture_devices_dispatcher.cpp @@ -14,6 +14,7 @@ #include "base/strings/strcat.h" #include "content/browser/web_contents/web_contents_impl.h" +#include "content/public/browser/browser_context.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/desktop_media_id.h" #include "content/public/browser/desktop_streams_registry.h" diff --git a/src/core/net/custom_url_loader_factory.cpp b/src/core/net/custom_url_loader_factory.cpp index e35f1afb5..19a1a884f 100644 --- a/src/core/net/custom_url_loader_factory.cpp +++ b/src/core/net/custom_url_loader_factory.cpp @@ -285,7 +285,7 @@ private: m_head->mime_type = m_mimeType; m_head->charset = m_charset; m_headerBytesRead = m_head->headers->raw_headers().length(); - m_client->OnReceiveResponse(std::move(m_head), std::move(m_pipeConsumerHandle)); + m_client->OnReceiveResponse(std::move(m_head), std::move(m_pipeConsumerHandle), absl::nullopt); m_head = nullptr; m_watcher = std::make_unique<mojo::SimpleWatcher>( @@ -335,7 +335,7 @@ private: m_head->headers = base::MakeRefCounted<net::HttpResponseHeaders>(net::HttpUtil::AssembleRawHeaders(headers)); m_head->encoded_data_length = m_head->headers->raw_headers().length(); m_head->content_length = m_head->encoded_body_length = -1; - m_client->OnReceiveResponse(std::move(m_head), mojo::ScopedDataPipeConsumerHandle()); + m_client->OnReceiveResponse(std::move(m_head), mojo::ScopedDataPipeConsumerHandle(), absl::nullopt); CompleteWithFailure(net::Error(error)); } void notifyReadyRead() override diff --git a/src/core/net/proxying_url_loader_factory_qt.cpp b/src/core/net/proxying_url_loader_factory_qt.cpp index 2edf915c8..70ec61b34 100644 --- a/src/core/net/proxying_url_loader_factory_qt.cpp +++ b/src/core/net/proxying_url_loader_factory_qt.cpp @@ -110,10 +110,9 @@ public: void Restart(); // network::mojom::URLLoaderClient - void OnReceiveResponse(network::mojom::URLResponseHeadPtr head, mojo::ScopedDataPipeConsumerHandle) override; + void OnReceiveResponse(network::mojom::URLResponseHeadPtr head, mojo::ScopedDataPipeConsumerHandle, absl::optional<mojo_base::BigBuffer>) override; void OnReceiveRedirect(const net::RedirectInfo &redirect_info, network::mojom::URLResponseHeadPtr head) override; void OnUploadProgress(int64_t current_position, int64_t total_size, OnUploadProgressCallback callback) override; - void OnReceiveCachedMetadata(mojo_base::BigBuffer data) override; void OnTransferSizeUpdated(int32_t transfer_size_diff) override; void OnComplete(const network::URLLoaderCompletionStatus &status) override; void OnReceiveEarlyHints(network::mojom::EarlyHintsPtr) override {} @@ -403,11 +402,11 @@ void InterceptedRequest::ContinueAfterIntercept() // URLLoaderClient methods. -void InterceptedRequest::OnReceiveResponse(network::mojom::URLResponseHeadPtr head, mojo::ScopedDataPipeConsumerHandle handle) +void InterceptedRequest::OnReceiveResponse(network::mojom::URLResponseHeadPtr head, mojo::ScopedDataPipeConsumerHandle handle, absl::optional<mojo_base::BigBuffer> buffer) { current_response_ = head.Clone(); - target_client_->OnReceiveResponse(std::move(head), std::move(handle)); + target_client_->OnReceiveResponse(std::move(head), std::move(handle), std::move(buffer)); } void InterceptedRequest::OnReceiveRedirect(const net::RedirectInfo &redirect_info, network::mojom::URLResponseHeadPtr head) @@ -427,11 +426,6 @@ void InterceptedRequest::OnUploadProgress(int64_t current_position, int64_t tota target_client_->OnUploadProgress(current_position, total_size, std::move(callback)); } -void InterceptedRequest::OnReceiveCachedMetadata(mojo_base::BigBuffer data) -{ - target_client_->OnReceiveCachedMetadata(std::move(data)); -} - void InterceptedRequest::OnTransferSizeUpdated(int32_t transfer_size_diff) { target_client_->OnTransferSizeUpdated(transfer_size_diff); diff --git a/src/core/net/webui_controller_factory_qt.cpp b/src/core/net/webui_controller_factory_qt.cpp index 66491e019..0551d9be7 100644 --- a/src/core/net/webui_controller_factory_qt.cpp +++ b/src/core/net/webui_controller_factory_qt.cpp @@ -128,7 +128,7 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI *web_ui, Profile *profile, co if (url.host_piece() == chrome::kChromeUIWebRtcLogsHost) return &NewWebUI<WebRtcLogsUI>; #endif -#if BUILDFLAG(IS_LINUX) // Consider enabling for BUILDFLAG(IS_WIN) +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) if (url.host_piece() == chrome::kChromeUISandboxHost) return &NewWebUI<SandboxInternalsUI>; #endif diff --git a/src/core/ozone/gl_surface_qt.cpp b/src/core/ozone/gl_surface_qt.cpp index 2e76110f9..fad3ccc11 100644 --- a/src/core/ozone/gl_surface_qt.cpp +++ b/src/core/ozone/gl_surface_qt.cpp @@ -59,7 +59,7 @@ bool GLSurfaceQt::IsOffscreen() return true; } -gfx::SwapResult GLSurfaceQt::SwapBuffers(PresentationCallback callback) +gfx::SwapResult GLSurfaceQt::SwapBuffers(PresentationCallback callback, FrameData data) { LOG(ERROR) << "Attempted to call SwapBuffers on a pbuffer."; Q_UNREACHABLE(); diff --git a/src/core/ozone/gl_surface_qt.h b/src/core/ozone/gl_surface_qt.h index f9d18a0ae..0ef8fbbca 100644 --- a/src/core/ozone/gl_surface_qt.h +++ b/src/core/ozone/gl_surface_qt.h @@ -21,7 +21,7 @@ public: GLDisplay *GetGLDisplay() override; void *GetConfig() override; bool IsOffscreen() override; - gfx::SwapResult SwapBuffers(PresentationCallback callback) override; + gfx::SwapResult SwapBuffers(PresentationCallback callback, FrameData data) override; gfx::Size GetSize() override; GLSurfaceFormat GetFormat() override; diff --git a/src/core/ozone/ozone_platform_qt.cpp b/src/core/ozone/ozone_platform_qt.cpp index 4971ef847..c4929295e 100644 --- a/src/core/ozone/ozone_platform_qt.cpp +++ b/src/core/ozone/ozone_platform_qt.cpp @@ -84,7 +84,6 @@ const ui::OzonePlatform::PlatformProperties &OzonePlatformQt::GetPlatformPropert static base::NoDestructor<ui::OzonePlatform::PlatformProperties> properties; static bool initialized = false; if (!initialized) { - properties->uses_external_vulkan_image_factory = true; properties->fetch_buffer_formats_for_gmb_on_gpu = true; initialized = true; diff --git a/src/core/pref_service_adapter.cpp b/src/core/pref_service_adapter.cpp index 14fa31ce4..34251880e 100644 --- a/src/core/pref_service_adapter.cpp +++ b/src/core/pref_service_adapter.cpp @@ -122,8 +122,6 @@ void PrefServiceAdapter::setup(const ProfileAdapter &profileAdapter) registry->RegisterBooleanPref(autofill::prefs::kAutofillCreditCardEnabled, false); registry->RegisterBooleanPref(autofill::prefs::kAutofillCreditCardFidoAuthEnabled, false); registry->RegisterBooleanPref(autofill::prefs::kAutofillWalletImportEnabled, false); - registry->RegisterBooleanPref(autofill::prefs::kAutofillJapanCityFieldMigratedDeprecated, - false); // devtools registry->RegisterDictionaryPref(prefs::kDevToolsFileSystemPaths); @@ -190,7 +188,7 @@ QStringList PrefServiceAdapter::spellCheckLanguages() const { QStringList spellcheck_dictionaries; const auto &list = m_prefService->GetList(spellcheck::prefs::kSpellCheckDictionaries); - for (const auto &dictionary : list->GetList()) { + for (const auto &dictionary : list) { spellcheck_dictionaries.append(QString::fromStdString(dictionary.GetString())); } diff --git a/src/core/printing/pdf_web_contents_helper_client_qt.cpp b/src/core/printing/pdf_web_contents_helper_client_qt.cpp index cbeb7d112..4deb398c6 100644 --- a/src/core/printing/pdf_web_contents_helper_client_qt.cpp +++ b/src/core/printing/pdf_web_contents_helper_client_qt.cpp @@ -24,15 +24,14 @@ content::RenderFrameHost *FindPdfChildFrame(content::RenderFrameHost *rfh) content::RenderFrameHost *pdf_rfh = nullptr; rfh->ForEachRenderFrameHost( - base::BindRepeating( - [](content::RenderFrameHost *&pdf_rfh, content::RenderFrameHost *rfh) { + [&pdf_rfh](content::RenderFrameHost *rfh) { if (!rfh->GetProcess()->IsPdf()) return; DCHECK(IsPdfExtensionOrigin(rfh->GetParent()->GetLastCommittedOrigin())); DCHECK(!pdf_rfh); pdf_rfh = rfh; - }, std::ref(pdf_rfh))); + }); return pdf_rfh; } @@ -48,9 +47,13 @@ content::RenderFrameHost *PDFWebContentsHelperClientQt::FindPdfFrame(content::We return pdf_frame ? pdf_frame : main_frame; } -void PDFWebContentsHelperClientQt::SetPluginCanSave(content::WebContents *contents, bool can_save) +void PDFWebContentsHelperClientQt::SetPluginCanSave(content::RenderFrameHost *render_frame_host, bool can_save) { - auto *guest_view = extensions::MimeHandlerViewGuest::FromWebContents(contents); + auto *guest_view = extensions::MimeHandlerViewGuest::FromRenderFrameHost(render_frame_host); if (guest_view) guest_view->SetPluginCanSave(can_save); } + +void PDFWebContentsHelperClientQt::UpdateContentRestrictions(content::RenderFrameHost *, int) +{ +} diff --git a/src/core/printing/pdf_web_contents_helper_client_qt.h b/src/core/printing/pdf_web_contents_helper_client_qt.h index ccc552986..10df8a746 100644 --- a/src/core/printing/pdf_web_contents_helper_client_qt.h +++ b/src/core/printing/pdf_web_contents_helper_client_qt.h @@ -18,10 +18,10 @@ public: private: // pdf::PDFWebContentsHelperClient: content::RenderFrameHost* FindPdfFrame(content::WebContents *contents) override; - void UpdateContentRestrictions(content::WebContents *contents, int content_restrictions) override {} void OnPDFHasUnsupportedFeature(content::WebContents *contents) override {} void OnSaveURL(content::WebContents *contents) override {} - void SetPluginCanSave(content::WebContents *contents, bool can_save) override; + void SetPluginCanSave(content::RenderFrameHost *render_frame_host, bool can_save) override; + void UpdateContentRestrictions(content::RenderFrameHost *, int) override; }; #endif // PDF_WEB_CONTENTS_HELPER_CLIENT_QT_H diff --git a/src/core/printing/print_view_manager_base_qt.cpp b/src/core/printing/print_view_manager_base_qt.cpp index db557715a..f071b59ad 100644 --- a/src/core/printing/print_view_manager_base_qt.cpp +++ b/src/core/printing/print_view_manager_base_qt.cpp @@ -188,9 +188,9 @@ void PrintViewManagerBaseQt::UpdatePrintingEnabled() #if QT_CONFIG(webengine_printing_and_pdf) enabled = true; #endif - web_contents()->ForEachRenderFrameHost( - base::BindRepeating(&PrintViewManagerBaseQt::SendPrintingEnabled, - base::Unretained(this), enabled)); + web_contents()->ForEachRenderFrameHost([this, enabled](content::RenderFrameHost *rfh) { + SendPrintingEnabled(enabled, rfh); + }); } void PrintViewManagerBaseQt::NavigationStopped() diff --git a/src/core/renderer/content_renderer_client_qt.cpp b/src/core/renderer/content_renderer_client_qt.cpp index 4c175768d..80bbabf63 100644 --- a/src/core/renderer/content_renderer_client_qt.cpp +++ b/src/core/renderer/content_renderer_client_qt.cpp @@ -14,7 +14,8 @@ #include "components/autofill/content/renderer/autofill_assistant_agent.h" #include "components/autofill/content/renderer/password_autofill_agent.h" #include "components/autofill/content/renderer/password_generation_agent.h" -#include "components/cdm/renderer/widevine_key_system_properties.h" +#include "components/cdm/renderer/external_clear_key_key_system_info.h" +#include "components/cdm/renderer/widevine_key_system_info.h" #include "components/error_page/common/error.h" #include "components/error_page/common/localized_error.h" #include "components/grit/components_resources.h" @@ -25,7 +26,8 @@ #include "content/public/common/url_constants.h" #include "content/public/renderer/render_thread.h" #include "extensions/buildflags/buildflags.h" -#include "media/base/key_system_properties.h" +#include "media/base/key_system_info.h" +#include "media/cdm/cdm_capability.h" #include "media/media_buildflags.h" #include "mojo/public/cpp/bindings/binder_map.h" #include "net/base/net_errors.h" @@ -71,13 +73,14 @@ #if BUILDFLAG(ENABLE_LIBRARY_CDMS) #include "base/feature_list.h" -#include "components/cdm/renderer/external_clear_key_key_system_properties.h" #include "content/public/renderer/key_system_support.h" #include "media/base/media_switches.h" #include "media/base/video_codecs.h" #include "third_party/widevine/cdm/buildflags.h" +#if BUILDFLAG(ENABLE_WIDEVINE) #include "third_party/widevine/cdm/widevine_cdm_common.h" #endif +#endif #if QT_CONFIG(webengine_webrtc) && QT_CONFIG(webengine_extensions) #include "chrome/renderer/media/webrtc_logging_agent_impl.h" @@ -204,6 +207,16 @@ void ContentRendererClientQt::RenderFrameCreated(content::RenderFrame *render_fr autofill_assistant_agent, associated_interfaces); } +void ContentRendererClientQt::WebViewCreated(blink::WebView *web_view, + bool was_created_by_renderer, + const url::Origin *outermost_origin) +{ + Q_UNUSED(was_created_by_renderer); +#if BUILDFLAG(ENABLE_EXTENSIONS) + ExtensionsRendererClientQt::GetInstance()->WebViewCreated(web_view, outermost_origin); +#endif +} + void ContentRendererClientQt::RunScriptsAtDocumentStart(content::RenderFrame *render_frame) { #if BUILDFLAG(ENABLE_EXTENSIONS) @@ -464,7 +477,7 @@ static const char kExternalClearKeyKeySystem[] = "org.chromium.externalclearkey" // External Clear Key (used for testing). static void AddExternalClearKey(const media::mojom::KeySystemCapabilityPtr &capability, - media::KeySystemPropertiesVector *key_systems) + media::KeySystemInfoVector *key_systems) { Q_UNUSED(capability); if (!base::FeatureList::IsEnabled(media::kExternalClearKeyForTesting)) { @@ -590,7 +603,7 @@ static media::SupportedCodecs GetSupportedCodecs(const media::CdmCapability& cap } static void AddWidevine(const media::mojom::KeySystemCapabilityPtr &capability, - media::KeySystemPropertiesVector *key_systems) + media::KeySystemInfoVector *key_systems) { // Codecs and encryption schemes. media::SupportedCodecs codecs = media::EME_CODEC_NONE; @@ -618,7 +631,7 @@ static void AddWidevine(const media::mojom::KeySystemCapabilityPtr &capability, } // Robustness. - using Robustness = cdm::WidevineKeySystemProperties::Robustness; + using Robustness = cdm::WidevineKeySystemInfo::Robustness; auto max_audio_robustness = Robustness::SW_SECURE_CRYPTO; auto max_video_robustness = Robustness::SW_SECURE_DECODE; @@ -631,7 +644,7 @@ static void AddWidevine(const media::mojom::KeySystemCapabilityPtr &capability, auto persistent_state_support = media::EmeFeatureSupport::REQUESTABLE; auto distinctive_identifier_support = media::EmeFeatureSupport::NOT_SUPPORTED; - key_systems->emplace_back(new cdm::WidevineKeySystemProperties( + key_systems->emplace_back(new cdm::WidevineKeySystemInfo( codecs, std::move(encryption_schemes), std::move(session_types), hw_secure_codecs, std::move(hw_secure_encryption_schemes), std::move(hw_secure_session_types), @@ -645,7 +658,7 @@ static void AddWidevine(const media::mojom::KeySystemCapabilityPtr &capability, void OnKeySystemSupportUpdated(media::GetSupportedKeySystemsCB cb, content::KeySystemCapabilityPtrMap key_system_capabilities) { - media::KeySystemPropertiesVector key_systems; + media::KeySystemInfoVector key_systems; for (const auto &entry : key_system_capabilities) { const auto &key_system = entry.first; const auto &capability = entry.second; diff --git a/src/core/renderer/content_renderer_client_qt.h b/src/core/renderer/content_renderer_client_qt.h index 2e16a0dc6..b2231f00a 100644 --- a/src/core/renderer/content_renderer_client_qt.h +++ b/src/core/renderer/content_renderer_client_qt.h @@ -51,6 +51,9 @@ public: void RenderThreadStarted() override; void ExposeInterfacesToBrowser(mojo::BinderMap* binders) override; void RenderFrameCreated(content::RenderFrame *render_frame) override; + void WebViewCreated(blink::WebView *web_view, + bool was_created_by_renderer, + const url::Origin *outermost_origin) override; void PrepareErrorPage(content::RenderFrame *render_frame, const blink::WebURLError &error, diff --git a/src/core/renderer/extensions/extensions_renderer_client_qt.cpp b/src/core/renderer/extensions/extensions_renderer_client_qt.cpp index b29892b68..b36ed9e8b 100644 --- a/src/core/renderer/extensions/extensions_renderer_client_qt.cpp +++ b/src/core/renderer/extensions/extensions_renderer_client_qt.cpp @@ -16,6 +16,7 @@ #include "base/command_line.h" #include "base/lazy_instance.h" #include "base/stl_util.h" +#include "base/types/optional_util.h" #include "content/public/common/content_constants.h" #include "content/public/common/content_switches.h" #include "content/public/renderer/render_frame.h" @@ -26,6 +27,7 @@ #include "extensions/common/switches.h" #include "extensions/renderer/dispatcher.h" #include "extensions/renderer/extension_frame_helper.h" +#include "extensions/renderer/extension_web_view_helper.h" #include "extensions/renderer/extensions_render_frame_observer.h" #include "extensions/renderer/renderer_extension_registry.h" #include "extensions/renderer/script_context.h" @@ -114,6 +116,11 @@ void ExtensionsRendererClientQt::RenderThreadStarted() thread->AddObserver(extension_dispatcher_.get()); } +void ExtensionsRendererClientQt::WebViewCreated(blink::WebView *web_view, const url::Origin *outermost_origin) +{ + new extensions::ExtensionWebViewHelper(web_view, outermost_origin); +} + void ExtensionsRendererClientQt::RenderFrameCreated(content::RenderFrame *render_frame, service_manager::BinderRegistry *registry) { diff --git a/src/core/renderer/extensions/extensions_renderer_client_qt.h b/src/core/renderer/extensions/extensions_renderer_client_qt.h index f9cac443c..163819cbc 100644 --- a/src/core/renderer/extensions/extensions_renderer_client_qt.h +++ b/src/core/renderer/extensions/extensions_renderer_client_qt.h @@ -16,6 +16,7 @@ namespace blink { class WebLocalFrame; struct WebPluginParams; class WebURL; +class WebView; } namespace content { @@ -55,6 +56,8 @@ public: // Match ContentRendererClientQt's method names... void RenderThreadStarted(); + void WebViewCreated(blink::WebView *web_view, + const url::Origin *outermost_origin); void RenderFrameCreated(content::RenderFrame *, service_manager::BinderRegistry *); bool OverrideCreatePlugin(content::RenderFrame *render_frame, const blink::WebPluginParams ¶ms); diff --git a/src/core/renderer_host/web_channel_ipc_transport_host.cpp b/src/core/renderer_host/web_channel_ipc_transport_host.cpp index 8fd59cbc2..0824ed56d 100644 --- a/src/core/renderer_host/web_channel_ipc_transport_host.cpp +++ b/src/core/renderer_host/web_channel_ipc_transport_host.cpp @@ -30,10 +30,9 @@ WebChannelIPCTransportHost::WebChannelIPCTransportHost(content::WebContents *con , m_worldId(worldId) , m_receiver(contents, this) { - contents->ForEachRenderFrameHost(base::BindRepeating([](WebChannelIPCTransportHost *that, uint32_t worldId, content::RenderFrameHost *frame) { - that->setWorldId(frame, worldId); - }, - base::Unretained(this), worldId)); + contents->ForEachRenderFrameHost([this, worldId](content::RenderFrameHost *frame) { + setWorldId(frame, worldId); + }); } WebChannelIPCTransportHost::~WebChannelIPCTransportHost() @@ -60,10 +59,9 @@ void WebChannelIPCTransportHost::setWorldId(uint32_t worldId) { if (m_worldId == worldId) return; - web_contents()->ForEachRenderFrameHost(base::BindRepeating([](WebChannelIPCTransportHost *that, uint32_t worldId, content::RenderFrameHost *frame) { - that->setWorldId(frame, worldId); - }, - base::Unretained(this), worldId)); + web_contents()->ForEachRenderFrameHost([this, worldId](content::RenderFrameHost *frame) { + setWorldId(frame, worldId); + }); m_worldId = worldId; } @@ -77,11 +75,11 @@ void WebChannelIPCTransportHost::setWorldId(content::RenderFrameHost *frame, uin void WebChannelIPCTransportHost::resetWorldId() { - web_contents()->ForEachRenderFrameHost(base::BindRepeating([](WebChannelIPCTransportHost *that, content::RenderFrameHost *frame) { + web_contents()->ForEachRenderFrameHost([this] (content::RenderFrameHost *frame) { if (!frame->IsRenderFrameLive()) return; - that->GetWebChannelIPCTransportRemote(frame)->ResetWorldId(); - }, this)); + GetWebChannelIPCTransportRemote(frame)->ResetWorldId(); + }); } void WebChannelIPCTransportHost::DispatchWebChannelMessage(const std::vector<uint8_t> &json) diff --git a/src/core/sandbox_win.cpp b/src/core/sandbox_win.cpp index 81fecc62c..bc70bced7 100644 --- a/src/core/sandbox_win.cpp +++ b/src/core/sandbox_win.cpp @@ -11,7 +11,7 @@ #endif namespace QtWebEngineSandbox { -// A duplicate of the function by same name in startup_helper_win.cc +// A duplicate of the function by same name in sandbox_helper_win.cc static void InitializeSandboxInfo(sandbox::SandboxInterfaceInfo *info) { info->broker_services = sandbox::SandboxFactory::GetBrokerServices(); @@ -19,7 +19,7 @@ static void InitializeSandboxInfo(sandbox::SandboxInterfaceInfo *info) info->target_services = sandbox::SandboxFactory::GetTargetServices(); } else { // Ensure the proper mitigations are enforced for the browser process. - sandbox::ApplyProcessMitigationsToCurrentProcess( + info->broker_services->RatchetDownSecurityMitigations( sandbox::MITIGATION_DEP | sandbox::MITIGATION_DEP_NO_ATL_THUNK | sandbox::MITIGATION_HARDEN_TOKEN_IL_POLICY); // Note: these mitigations are "post-startup". Some mitigations that need diff --git a/src/core/select_file_dialog_factory_qt.cpp b/src/core/select_file_dialog_factory_qt.cpp index 1bf20918d..9da27a4cf 100644 --- a/src/core/select_file_dialog_factory_qt.cpp +++ b/src/core/select_file_dialog_factory_qt.cpp @@ -65,7 +65,8 @@ public: void SelectFileImpl(Type type, const std::u16string &title, const base::FilePath &default_path, const FileTypeInfo *file_types, int file_type_index, const base::FilePath::StringType &default_extension, - gfx::NativeWindow owning_window, void *params) override; + gfx::NativeWindow owning_window, void *params, const GURL *) override; + bool HasMultipleFileTypeChoicesImpl() override; private: @@ -105,13 +106,14 @@ void SelectFileDialogQt::SelectFileImpl(Type type, const std::u16string &title, const base::FilePath &default_path, const FileTypeInfo *file_types, int file_type_index, const base::FilePath::StringType &default_extension, - gfx::NativeWindow owning_window, void *params) + gfx::NativeWindow owning_window, void *params, const GURL *caller) { Q_UNUSED(title); Q_UNUSED(file_type_index); Q_UNUSED(default_extension); Q_UNUSED(owning_window); Q_UNUSED(params); + Q_UNUSED(caller); QStringList acceptedSuffixes; if (file_types) { diff --git a/src/core/user_script.cpp b/src/core/user_script.cpp index 47c4fd528..c33fb9081 100644 --- a/src/core/user_script.cpp +++ b/src/core/user_script.cpp @@ -20,7 +20,7 @@ bool GetDeclarationValue(const base::StringPiece& line, std::string temp(line.data() + index + prefix.length(), line.length() - index - prefix.length()); - if (temp.empty() || !base::IsUnicodeWhitespace(temp[0])) + if (temp.empty() || !base::IsWhitespace(temp[0])) return false; base::TrimWhitespaceASCII(temp, base::TRIM_ALL, value); diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp index 1458c25ff..467266ee6 100644 --- a/src/core/web_contents_adapter.cpp +++ b/src/core/web_contents_adapter.cpp @@ -153,14 +153,10 @@ static QVariant fromJSValue(const base::Value *result) } case base::Value::Type::DICTIONARY: { - const base::DictionaryValue *out; - if (result->GetAsDictionary(&out)) { + if (const auto dict = result->GetIfDict()) { QVariantMap map; - base::DictionaryValue::Iterator it(*out); - while (!it.IsAtEnd()) { - map.insert(toQt(it.key()), fromJSValue(&it.value())); - it.Advance(); - } + for (const auto pair : *dict) + map.insert(toQt(pair.first), fromJSValue(&pair.second)); ret.setValue(map); } break; @@ -1026,7 +1022,7 @@ QAccessibleInterface *WebContentsAdapter::browserAccessible() content::BrowserAccessibilityManager *manager = rfh->GetOrCreateBrowserAccessibilityManager(); if (!manager) // FIXME! return nullptr; - content::BrowserAccessibility *acc = manager->GetRoot(); + content::BrowserAccessibility *acc = manager->GetFromAXNode(manager->GetRoot()); return content::toQAccessibleInterface(acc); } diff --git a/src/core/web_contents_delegate_qt.cpp b/src/core/web_contents_delegate_qt.cpp index 75ab0c6f9..21c370098 100644 --- a/src/core/web_contents_delegate_qt.cpp +++ b/src/core/web_contents_delegate_qt.cpp @@ -205,11 +205,11 @@ QUrl WebContentsDelegateQt::url(content::WebContents *source) const m_pendingUrlUpdate = false; return newUrl; } -void WebContentsDelegateQt::AddNewContents(content::WebContents* source, std::unique_ptr<content::WebContents> new_contents, const GURL &target_url, - WindowOpenDisposition disposition, const gfx::Rect& initial_pos, bool user_gesture, bool* was_blocked) +void WebContentsDelegateQt::AddNewContents(content::WebContents *source, std::unique_ptr<content::WebContents> new_contents, const GURL &target_url, + WindowOpenDisposition disposition, const blink::mojom::WindowFeatures &window_features, bool user_gesture, bool *was_blocked) { Q_UNUSED(source) - QSharedPointer<WebContentsAdapter> newAdapter = createWindow(std::move(new_contents), disposition, initial_pos, toQt(target_url), user_gesture); + QSharedPointer<WebContentsAdapter> newAdapter = createWindow(std::move(new_contents), disposition, window_features.bounds, toQt(target_url), user_gesture); // Chromium can forget to pass user-agent override settings to new windows (see QTBUG-61774 and QTBUG-76249), // so set it here. Note the actual value doesn't really matter here. Only the second value does, but we try // to give the correct user-agent anyway. diff --git a/src/core/web_contents_delegate_qt.h b/src/core/web_contents_delegate_qt.h index 0840fbc45..eda4e1e57 100644 --- a/src/core/web_contents_delegate_qt.h +++ b/src/core/web_contents_delegate_qt.h @@ -81,7 +81,7 @@ public: content::WebContents *OpenURLFromTab(content::WebContents *source, const content::OpenURLParams ¶ms) override; void NavigationStateChanged(content::WebContents* source, content::InvalidateTypes changed_flags) override; void AddNewContents(content::WebContents *source, std::unique_ptr<content::WebContents> new_contents, const GURL &target_url, - WindowOpenDisposition disposition, const gfx::Rect &initial_pos, bool user_gesture, bool *was_blocked) override; + WindowOpenDisposition disposition, const blink::mojom::WindowFeatures &window_features, bool user_gesture, bool *was_blocked) override; void CloseContents(content::WebContents *source) override; void LoadProgressChanged(double progress) override; bool HandleKeyboardEvent(content::WebContents *source, const content::NativeWebKeyboardEvent &event) override; diff --git a/src/core/web_contents_view_qt.cpp b/src/core/web_contents_view_qt.cpp index 286fc198c..023f9e99f 100644 --- a/src/core/web_contents_view_qt.cpp +++ b/src/core/web_contents_view_qt.cpp @@ -230,8 +230,9 @@ void WebContentsViewQt::StartDragging(const content::DropData &drop_data, blink::DragOperationsMask allowed_ops, const gfx::ImageSkia &image, const gfx::Vector2d &image_offset, + const gfx::Rect &drag_obj_rect, const blink::mojom::DragEventSourceInfo &event_info, - content::RenderWidgetHostImpl* source_rwh) + content::RenderWidgetHostImpl *source_rwh) { #if QT_CONFIG(draganddrop) Q_UNUSED(event_info); diff --git a/src/core/web_contents_view_qt.h b/src/core/web_contents_view_qt.h index 2e236f2b2..15528b41d 100644 --- a/src/core/web_contents_view_qt.h +++ b/src/core/web_contents_view_qt.h @@ -72,6 +72,7 @@ public: void FocusThroughTabTraversal(bool reverse) override; void OnCapturerCountChanged() override { QT_NOT_YET_IMPLEMENTED } + void FullscreenStateChanged(bool) override { } #if BUILDFLAG(IS_MAC) bool CloseTabAfterEventTrackingIfNeeded() override { QT_NOT_YET_IMPLEMENTED return false; } @@ -80,6 +81,7 @@ public: // content::RenderViewHostDelegateView overrides: void StartDragging(const content::DropData& drop_data, blink::DragOperationsMask allowed_ops, const gfx::ImageSkia& image, const gfx::Vector2d& image_offset, + const gfx::Rect& drag_obj_rect, const blink::mojom::DragEventSourceInfo &event_info, content::RenderWidgetHostImpl *source_rwh) override; diff --git a/src/core/web_engine_context.cpp b/src/core/web_engine_context.cpp index 29189bc72..390ac2638 100644 --- a/src/core/web_engine_context.cpp +++ b/src/core/web_engine_context.cpp @@ -900,7 +900,7 @@ const char *qWebEngineChromiumVersion() noexcept } const char *qWebEngineChromiumSecurityPatchVersion() noexcept { - return "107.0.5304.88"; // FIXME: Remember to update + return "108.0.5359.109"; // FIXME: Remember to update } QT_END_NAMESPACE diff --git a/src/pdf/configure/BUILD.root.gn.in b/src/pdf/configure/BUILD.root.gn.in index 5420e8581..da41d80cc 100644 --- a/src/pdf/configure/BUILD.root.gn.in +++ b/src/pdf/configure/BUILD.root.gn.in @@ -59,4 +59,10 @@ static_library("QtPdf") { deps = [ "//third_party/pdfium" ] + if (is_win) { + libs = [ + "dloadhelper.lib", + "winmm.lib", + ] + } } |