Index: content/renderer/browser_plugin/browser_plugin_impl.h |
diff --git a/content/renderer/browser_plugin/browser_plugin.h b/content/renderer/browser_plugin/browser_plugin_impl.h |
similarity index 87% |
rename from content/renderer/browser_plugin/browser_plugin.h |
rename to content/renderer/browser_plugin/browser_plugin_impl.h |
index 14ea94980377ea2fb35fd82578198be17797745c..a0973445bc987a122c9aff0615ecf6a527f390ac 100644 |
--- a/content/renderer/browser_plugin/browser_plugin.h |
+++ b/content/renderer/browser_plugin/browser_plugin_impl.h |
@@ -2,23 +2,24 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#ifndef CONTENT_RENDERER_BROWSER_PLUGIN_BROWSER_PLUGIN_H_ |
-#define CONTENT_RENDERER_BROWSER_PLUGIN_BROWSER_PLUGIN_H_ |
- |
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebPlugin.h" |
+#ifndef CONTENT_RENDERER_BROWSER_PLUGIN_BROWSER_PLUGIN_IMPL_H_ |
+#define CONTENT_RENDERER_BROWSER_PLUGIN_BROWSER_PLUGIN_IMPL_H_ |
#include "base/memory/scoped_ptr.h" |
#include "base/memory/weak_ptr.h" |
+#include "base/observer_list.h" |
#include "base/process_util.h" |
#include "base/sequenced_task_runner_helpers.h" |
#if defined(OS_WIN) |
#include "base/shared_memory.h" |
#endif |
#include "content/common/browser_plugin_message_enums.h" |
+#include "content/public/renderer/browser_plugin/browser_plugin.h" |
#include "content/renderer/browser_plugin/browser_plugin_backing_store.h" |
#include "content/renderer/browser_plugin/browser_plugin_bindings.h" |
#include "content/renderer/render_view_impl.h" |
#include "third_party/WebKit/Source/WebKit/chromium/public/WebDragStatus.h" |
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebPlugin.h" |
struct BrowserPluginHostMsg_AutoSize_Params; |
struct BrowserPluginHostMsg_ResizeGuest_Params; |
@@ -29,27 +30,18 @@ namespace content { |
class BrowserPluginCompositingHelper; |
class BrowserPluginManager; |
+class BrowserPluginObserver; |
class MockBrowserPlugin; |
-class CONTENT_EXPORT BrowserPlugin : |
- NON_EXPORTED_BASE(public WebKit::WebPlugin) { |
+class CONTENT_EXPORT BrowserPluginImpl : |
+ NON_EXPORTED_BASE(public WebKit::WebPlugin), |
+ public BrowserPlugin { |
public: |
RenderViewImpl* render_view() const { return render_view_.get(); } |
int render_view_routing_id() const { return render_view_routing_id_; } |
bool OnMessageReceived(const IPC::Message& msg); |
- // Update Browser Plugin's DOM Node attribute |attribute_name| with the value |
- // |attribute_value|. |
- void UpdateDOMAttribute(const std::string& attribute_name, |
- const std::string& attribute_value); |
- // Remove the DOM Node attribute with the name |attribute_name|. |
- void RemoveDOMAttribute(const std::string& attribute_name); |
- // Get Browser Plugin's DOM Node attribute |attribute_name|'s value. |
- std::string GetDOMAttributeValue(const std::string& attribute_name) const; |
- // Checks if the attribute |attribute_name| exists in the DOM. |
- bool HasDOMAttribute(const std::string& attribute_name) const; |
- |
// Get the name attribute value. |
std::string GetNameAttribute() const; |
// Parse the name attribute value. |
@@ -139,6 +131,28 @@ class CONTENT_EXPORT BrowserPlugin : |
void OnEmbedderDecidedPermission(int request_id, bool allow); |
+ // BrowserPlugin implementation. |
+ virtual RenderView* GetRenderView() const OVERRIDE; |
+ virtual WebKit::WebPluginContainer* GetContainer() const OVERRIDE; |
+ virtual void AddMethodBinding( |
+ BrowserPluginMethodBinding* method_binding) OVERRIDE; |
+ virtual void AddPropertyBinding( |
+ BrowserPluginPropertyBinding* method_binding) OVERRIDE; |
+ virtual void TriggerEvent( |
+ const std::string& event_name, |
+ std::map<std::string, base::Value*>* props) OVERRIDE; |
+ virtual void UpdateDOMAttribute(const std::string& attribute_name, |
+ const std::string& attribute_value) OVERRIDE; |
+ virtual void RemoveDOMAttribute(const std::string& attribute_name) OVERRIDE; |
+ virtual std::string GetDOMAttributeValue( |
+ const std::string& attribute_name) const OVERRIDE; |
+ virtual bool HasDOMAttribute( |
+ const std::string& attribute_name) const OVERRIDE; |
+ virtual bool HasNavigated() const OVERRIDE; |
+ |
+ // IPC::Sender implementation. |
+ virtual bool Send(IPC::Message* message) OVERRIDE; |
+ |
// WebKit::WebPlugin implementation. |
virtual WebKit::WebPluginContainer* container() const OVERRIDE; |
virtual bool initialize(WebKit::WebPluginContainer* container) OVERRIDE; |
@@ -178,26 +192,32 @@ class CONTENT_EXPORT BrowserPlugin : |
void* notify_data, |
const WebKit::WebURLError& error) OVERRIDE; |
private: |
- friend class base::DeleteHelper<BrowserPlugin>; |
+ friend class base::DeleteHelper<BrowserPluginImpl>; |
// Only the manager is allowed to create a BrowserPlugin. |
friend class BrowserPluginManagerImpl; |
+ friend class BrowserPluginObserver; |
friend class MockBrowserPluginManager; |
// For unit/integration tests. |
friend class MockBrowserPlugin; |
- // A BrowserPlugin object is a controller that represents an instance of a |
+ // A BrowserPluginImpl object is a controller that represents an instance of a |
// browser plugin within the embedder renderer process. Each BrowserPlugin |
- // within a process has a unique instance_id that is used to route messages |
+ // within a process has a unique |instance_id| that is used to route messages |
// to it. It takes in a RenderViewImpl that it's associated with along |
// with the frame within which it lives and the initial attributes assigned |
// to it on creation. |
- BrowserPlugin( |
+ BrowserPluginImpl( |
RenderViewImpl* render_view, |
WebKit::WebFrame* frame, |
const WebKit::WebPluginParams& params); |
- virtual ~BrowserPlugin(); |
+ virtual ~BrowserPluginImpl(); |
+ |
+ // Add and remove observers for filtering IPC messages. Clients must be sure |
+ // to remove the observer before they go away. |
+ void AddObserver(BrowserPluginObserver* observer); |
+ void RemoveObserver(BrowserPluginObserver* observer); |
int width() const { return plugin_rect_.width(); } |
int height() const { return plugin_rect_.height(); } |
@@ -221,11 +241,6 @@ class CONTENT_EXPORT BrowserPlugin : |
// and sets them appropriately. |
void ParseAttributes(); |
- // Triggers the event-listeners for |event_name|. Note that the function |
- // frees all the values in |props|. |
- void TriggerEvent(const std::string& event_name, |
- std::map<std::string, base::Value*>* props); |
- |
// Creates and maps a shared damage buffer. |
virtual base::SharedMemory* CreateDamageBuffer( |
const size_t size, |
@@ -299,6 +314,7 @@ class CONTENT_EXPORT BrowserPlugin : |
std::string mailbox_name, |
int gpu_route_id, |
int gpu_host_id); |
+ void OnForwardMessage(int instance_id, const IPC::Message& msg); |
void OnGuestContentWindowReady(int instance_id, |
int content_window_routing_id); |
void OnGuestGone(int instance_id, int process_id, int status); |
@@ -371,7 +387,7 @@ class CONTENT_EXPORT BrowserPlugin : |
PendingPermissionRequests; |
PendingPermissionRequests pending_permission_requests_; |
- typedef std::pair<int, base::WeakPtr<BrowserPlugin> > |
+ typedef std::pair<int, base::WeakPtr<BrowserPluginImpl> > |
AliveV8PermissionRequestItem; |
std::map<int, AliveV8PermissionRequestItem*> |
alive_v8_permission_request_objects_; |
@@ -381,6 +397,9 @@ class CONTENT_EXPORT BrowserPlugin : |
// avoid accessing the RenderViewImpl. |
scoped_refptr<BrowserPluginManager> browser_plugin_manager_; |
+ // A list of observers that filter messages. Weak references. |
+ ObserverList<BrowserPluginObserver> observers_; |
+ |
// Important: Do not add more history state here. |
// We strongly discourage storing additional history state (such as page IDs) |
// in the embedder process, at the risk of having incorrect information that |
@@ -400,11 +419,11 @@ class CONTENT_EXPORT BrowserPlugin : |
// Weak factory used in v8 |MakeWeak| callback, since the v8 callback might |
// get called after BrowserPlugin has been destroyed. |
- base::WeakPtrFactory<BrowserPlugin> weak_ptr_factory_; |
+ base::WeakPtrFactory<BrowserPluginImpl> weak_ptr_factory_; |
- DISALLOW_COPY_AND_ASSIGN(BrowserPlugin); |
+ DISALLOW_COPY_AND_ASSIGN(BrowserPluginImpl); |
}; |
} // namespace content |
-#endif // CONTENT_RENDERER_BROWSER_PLUGIN_BROWSER_PLUGIN_H_ |
+#endif // CONTENT_RENDERER_BROWSER_PLUGIN_BROWSER_PLUGIN_IMPL_H_ |