Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(476)

Unified Diff: content/renderer/browser_plugin/browser_plugin_manager.h

Issue 801173002: Fix message routing for BrowserPlugin in iframe (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix tests that don't have a RenderThreadImpl Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/browser_plugin/browser_plugin_manager.h
diff --git a/content/renderer/browser_plugin/browser_plugin_manager.h b/content/renderer/browser_plugin/browser_plugin_manager.h
index 53864a3fc3801b464bb865187a84e39168340ce1..802865af392b16f0df396840cf25ba9d5d17020e 100644
--- a/content/renderer/browser_plugin/browser_plugin_manager.h
+++ b/content/renderer/browser_plugin/browser_plugin_manager.h
@@ -6,9 +6,8 @@
#define CONTENT_RENDERER_BROWSER_PLUGIN_BROWSER_PLUGIN_MANAGER_H_
#include "base/id_map.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/weak_ptr.h"
-#include "content/public/renderer/render_view_observer.h"
+#include "base/memory/scoped_ptr.h"
+#include "content/public/renderer/render_process_observer.h"
#include "ipc/ipc_sender.h"
namespace blink {
@@ -19,26 +18,24 @@ namespace content {
class BrowserPlugin;
class BrowserPluginDelegate;
-class RenderViewImpl;
+class RenderFrame;
// BrowserPluginManager manages the routing of messages to the appropriate
-// BrowserPlugin object based on its instance ID.
-class CONTENT_EXPORT BrowserPluginManager
- : public RenderViewObserver,
- public base::RefCounted<BrowserPluginManager> {
+// BrowserPlugin object based on its instance ID. There is one BrowserPlugin
+// for the RenderThread.
+class CONTENT_EXPORT BrowserPluginManager : public RenderProcessObserver {
public:
- // Returns the one BrowserPluginManager for this process.
- static BrowserPluginManager* Create(RenderViewImpl* render_view);
+ static BrowserPluginManager* Get();
- explicit BrowserPluginManager(RenderViewImpl* render_view);
+ BrowserPluginManager();
+ ~BrowserPluginManager() override;
// Creates a new BrowserPlugin object.
// BrowserPlugin is responsible for associating itself with the
// BrowserPluginManager via AddBrowserPlugin. When it is destroyed, it is
// responsible for removing its association via RemoveBrowserPlugin.
BrowserPlugin* CreateBrowserPlugin(
- RenderViewImpl* render_view,
- blink::WebFrame* frame,
+ RenderFrame* render_frame,
scoped_ptr<BrowserPluginDelegate> delegate);
void Attach(int browser_plugin_instance_id);
@@ -52,35 +49,23 @@ class CONTENT_EXPORT BrowserPluginManager
void UpdateDeviceScaleFactor();
void UpdateFocusState();
- RenderViewImpl* render_view() const { return render_view_.get(); }
// Returns a new instance ID to be used by BrowserPlugin. Instance IDs are
// unique per process.
int GetNextInstanceID();
- // RenderViewObserver override. Call on render thread.
- void DidCommitCompositorFrame() override;
- bool OnMessageReceived(const IPC::Message& message) override;
- bool Send(IPC::Message* msg) override;
+ void DidCommitCompositorFrame(int render_view_routing_id);
+ bool Send(IPC::Message* msg);
- // Don't destroy the BrowserPluginManager when the RenderViewImpl goes away.
- // BrowserPluginManager's lifetime is managed by a reference count. Once
- // the host RenderViewImpl and all BrowserPlugins release their references,
- // then the BrowserPluginManager will be destroyed.
- void OnDestruct() override {}
+ // RenderProcessObserver override.
+ bool OnControlMessageReceived(const IPC::Message& message) override;
private:
- // Friend RefCounted so that the dtor can be non-public.
- friend class base::RefCounted<BrowserPluginManager>;
-
- ~BrowserPluginManager() override;
-
// IPC message handlers.
void OnCompositorFrameSwappedPluginUnavailable(const IPC::Message& message);
// This map is keyed by guest instance IDs.
IDMap<BrowserPlugin> instances_;
- base::WeakPtr<RenderViewImpl> render_view_;
DISALLOW_COPY_AND_ASSIGN(BrowserPluginManager);
};
« no previous file with comments | « content/renderer/browser_plugin/browser_plugin.cc ('k') | content/renderer/browser_plugin/browser_plugin_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698