Replace FrameHostMsg_GetPlugins with a Mojo interface.
It is a per-process Mojo interface, since the browser side never
did anything per-frame, and the renderer actually caches this data
process-wide anyhow.
Bug: 846722
Change-Id: I8e0300749b0d1c2b055b512f0d8906c1fcd3e403
Reviewed-on: https://chromium-review.googlesource.com/1073648
Reviewed-by: Antoine Labour <[email protected]>
Reviewed-by: Daniel Cheng <[email protected]>
Reviewed-by: Kentaro Hara <[email protected]>
Commit-Queue: Jeremy Roman <[email protected]>
Cr-Commit-Position: refs/heads/master@{#568185}
diff --git a/content/browser/renderer_host/plugin_registry_impl.h b/content/browser/renderer_host/plugin_registry_impl.h
new file mode 100644
index 0000000..3009401
--- /dev/null
+++ b/content/browser/renderer_host/plugin_registry_impl.h
@@ -0,0 +1,43 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONTENT_BROWSER_RENDERER_HOST_PLUGIN_REGISTRY_IMPL_H_
+#define CONTENT_BROWSER_RENDERER_HOST_PLUGIN_REGISTRY_IMPL_H_
+
+#include "base/memory/weak_ptr.h"
+#include "base/time/time.h"
+#include "mojo/public/cpp/bindings/binding_set.h"
+#include "third_party/blink/public/mojom/plugins/plugin_registry.mojom.h"
+
+namespace content {
+
+class ResourceContext;
+struct WebPluginInfo;
+
+class PluginRegistryImpl : public blink::mojom::PluginRegistry {
+ public:
+ explicit PluginRegistryImpl(ResourceContext* resource_context);
+ ~PluginRegistryImpl() override;
+
+ void Bind(blink::mojom::PluginRegistryRequest request);
+
+ // blink::mojom::PluginRegistry
+ void GetPlugins(bool refresh,
+ const url::Origin& main_frame_origin,
+ GetPluginsCallback callback) override;
+
+ private:
+ void GetPluginsComplete(const url::Origin& main_frame_origin,
+ GetPluginsCallback callback,
+ const std::vector<WebPluginInfo>& all_plugins);
+
+ ResourceContext* const resource_context_;
+ mojo::BindingSet<PluginRegistry> bindings_;
+ base::TimeTicks last_plugin_refresh_time_;
+ base::WeakPtrFactory<PluginRegistryImpl> weak_factory_;
+};
+
+} // namespace content
+
+#endif // CONTENT_BROWSER_RENDERER_HOST_PLUGIN_REGISTRY_IMPL_H_