diff options
author | Szabolcs David <davidsz@inf.u-szeged.hu> | 2022-05-18 15:40:00 +0200 |
---|---|---|
committer | Szabolcs David <davidsz@inf.u-szeged.hu> | 2022-05-20 12:02:51 +0000 |
commit | 6559e00a366dac58b3467bd8475cc936baa1e5b1 (patch) | |
tree | 3171f76f9566106b9d06162e62341629890a0db0 | |
parent | c11770fb4d8ce270055e69bf33c591112dcd8ce3 (diff) | |
download | qtwebengine-chromium-6559e00a366dac58b3467bd8475cc936baa1e5b1.tar.gz |
Add back frame_id argument to PluginServiceFilter::IsPluginAvailable()
It was removed in 98-based because Chrome stores plugin availibility
per profile. Add it back to help query plugin settings from
view-level WebEngineSettings.
Change-Id: I1de52792fbdca099d220cbc7a579553cac2c05d2
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
7 files changed, 10 insertions, 4 deletions
diff --git a/chromium/content/browser/loader/navigation_url_loader_impl.cc b/chromium/content/browser/loader/navigation_url_loader_impl.cc index 10ec894cb10..ea60b5a7253 100644 --- a/chromium/content/browser/loader/navigation_url_loader_impl.cc +++ b/chromium/content/browser/loader/navigation_url_loader_impl.cc @@ -838,8 +838,9 @@ void NavigationURLLoaderImpl::CheckPluginAndContinueOnReceiveResponse( FrameTreeNode::GloballyFindByID(frame_tree_node_id_); int render_process_id = frame_tree_node->current_frame_host()->GetProcess()->GetID(); + int routing_id = frame_tree_node->current_frame_host()->GetRoutingID(); bool has_plugin = PluginService::GetInstance()->GetPluginInfo( - render_process_id, resource_request_->url, head->mime_type, + render_process_id, routing_id, resource_request_->url, head->mime_type, /*allow_wildcard=*/false, &stale, &plugin, nullptr); if (stale) { diff --git a/chromium/content/browser/plugin_service_impl.cc b/chromium/content/browser/plugin_service_impl.cc index 00106b9b1f1..c1be5915185 100644 --- a/chromium/content/browser/plugin_service_impl.cc +++ b/chromium/content/browser/plugin_service_impl.cc @@ -234,6 +234,7 @@ bool PluginServiceImpl::GetPluginInfoArray( } bool PluginServiceImpl::GetPluginInfo(int render_process_id, + int render_frame_id, const GURL& url, const std::string& mime_type, bool allow_wildcard, @@ -249,7 +250,7 @@ bool PluginServiceImpl::GetPluginInfo(int render_process_id, *is_stale = stale; for (size_t i = 0; i < plugins.size(); ++i) { - if (!filter_ || filter_->IsPluginAvailable(render_process_id, plugins[i])) { + if (!filter_ || filter_->IsPluginAvailable(render_process_id, render_frame_id, plugins[i])) { *info = plugins[i]; if (actual_mime_type) *actual_mime_type = mime_types[i]; diff --git a/chromium/content/browser/plugin_service_impl.h b/chromium/content/browser/plugin_service_impl.h index 9f256a7fe48..04546b3687b 100644 --- a/chromium/content/browser/plugin_service_impl.h +++ b/chromium/content/browser/plugin_service_impl.h @@ -54,6 +54,7 @@ class CONTENT_EXPORT PluginServiceImpl : public PluginService { std::vector<WebPluginInfo>* info, std::vector<std::string>* actual_mime_types) override; bool GetPluginInfo(int render_process_id, + int render_frame_id, const GURL& url, const std::string& mime_type, bool allow_wildcard, diff --git a/chromium/content/browser/renderer_host/plugin_registry_impl.cc b/chromium/content/browser/renderer_host/plugin_registry_impl.cc index 0df9fd09a22..6a249566464 100644 --- a/chromium/content/browser/renderer_host/plugin_registry_impl.cc +++ b/chromium/content/browser/renderer_host/plugin_registry_impl.cc @@ -70,8 +70,9 @@ void PluginRegistryImpl::GetPluginsComplete( GetContentClient()->browser()->GetPluginMimeTypesWithExternalHandlers( rph->GetBrowserContext()); + const int routing_id = MSG_ROUTING_NONE; for (const auto& plugin : all_plugins) { - if (!filter || filter->IsPluginAvailable(render_process_id_, plugin)) { + if (!filter || filter->IsPluginAvailable(render_process_id_, routing_id, plugin)) { auto plugin_blink = blink::mojom::PluginInfo::New(); plugin_blink->name = plugin.name; plugin_blink->description = plugin.desc; diff --git a/chromium/content/browser/renderer_host/render_frame_host_impl.cc b/chromium/content/browser/renderer_host/render_frame_host_impl.cc index 1005687a68a..8f5f3408a53 100644 --- a/chromium/content/browser/renderer_host/render_frame_host_impl.cc +++ b/chromium/content/browser/renderer_host/render_frame_host_impl.cc @@ -12541,7 +12541,7 @@ void RenderFrameHostImpl::GetPluginInfo(const GURL& url, WebPluginInfo info; std::string actual_mime_type; bool found = PluginServiceImpl::GetInstance()->GetPluginInfo( - GetProcess()->GetID(), url, mime_type, allow_wildcard, nullptr, &info, + GetProcess()->GetID(), routing_id_, url, mime_type, allow_wildcard, nullptr, &info, &actual_mime_type); std::move(callback).Run(found, info, actual_mime_type); } diff --git a/chromium/content/public/browser/plugin_service.h b/chromium/content/public/browser/plugin_service.h index d7621a6d931..b9a635448e7 100644 --- a/chromium/content/public/browser/plugin_service.h +++ b/chromium/content/public/browser/plugin_service.h @@ -72,6 +72,7 @@ class CONTENT_EXPORT PluginService { // via |is_stale| and returns whether or not the plugin can be found. // This must be called from the UI thread. virtual bool GetPluginInfo(int render_process_id, + int render_frame_id, const GURL& url, const std::string& mime_type, bool allow_wildcard, diff --git a/chromium/content/public/browser/plugin_service_filter.h b/chromium/content/public/browser/plugin_service_filter.h index 8730ea5ad41..0c4a73ce750 100644 --- a/chromium/content/public/browser/plugin_service_filter.h +++ b/chromium/content/public/browser/plugin_service_filter.h @@ -22,6 +22,7 @@ class PluginServiceFilter { // Whether `plugin` is available. The client can return false to hide the // plugin. The result may be cached, and should be consistent between calls. virtual bool IsPluginAvailable(int render_process_id, + int render_frame_id, const WebPluginInfo& plugin) = 0; // Whether the renderer has permission to load available `plugin`. |