summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSzabolcs David <davidsz@inf.u-szeged.hu>2022-05-18 15:40:00 +0200
committerSzabolcs David <davidsz@inf.u-szeged.hu>2022-05-20 12:02:51 +0000
commit6559e00a366dac58b3467bd8475cc936baa1e5b1 (patch)
tree3171f76f9566106b9d06162e62341629890a0db0
parentc11770fb4d8ce270055e69bf33c591112dcd8ce3 (diff)
downloadqtwebengine-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>
-rw-r--r--chromium/content/browser/loader/navigation_url_loader_impl.cc3
-rw-r--r--chromium/content/browser/plugin_service_impl.cc3
-rw-r--r--chromium/content/browser/plugin_service_impl.h1
-rw-r--r--chromium/content/browser/renderer_host/plugin_registry_impl.cc3
-rw-r--r--chromium/content/browser/renderer_host/render_frame_host_impl.cc2
-rw-r--r--chromium/content/public/browser/plugin_service.h1
-rw-r--r--chromium/content/public/browser/plugin_service_filter.h1
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`.