| Index: chrome/renderer/webplugin_delegate_proxy.h
|
| ===================================================================
|
| --- chrome/renderer/webplugin_delegate_proxy.h (revision 25087)
|
| +++ chrome/renderer/webplugin_delegate_proxy.h (working copy)
|
| @@ -12,6 +12,7 @@
|
| #include "base/gfx/rect.h"
|
| #include "base/gfx/native_widget_types.h"
|
| #include "base/ref_counted.h"
|
| +#include "base/weak_ptr.h"
|
| #include "chrome/common/transport_dib.h"
|
| #include "chrome/renderer/plugin_channel_host.h"
|
| #include "googleurl/src/gurl.h"
|
| @@ -34,25 +35,25 @@
|
|
|
| // An implementation of WebPluginDelegate that proxies all calls to
|
| // the plugin process.
|
| -class WebPluginDelegateProxy : public WebPluginDelegate,
|
| - public IPC::Channel::Listener,
|
| - public IPC::Message::Sender {
|
| +class WebPluginDelegateProxy :
|
| + public webkit_glue::WebPluginDelegate,
|
| + public IPC::Channel::Listener,
|
| + public IPC::Message::Sender,
|
| + public base::SupportsWeakPtr<WebPluginDelegateProxy> {
|
| public:
|
| - static WebPluginDelegateProxy* Create(const GURL& url,
|
| - const std::string& mime_type,
|
| - const std::string& clsid,
|
| - RenderView* render_view);
|
| + static WebPluginDelegateProxy* Create(
|
| + const GURL& url,
|
| + const std::string& mime_type,
|
| + const std::string& clsid,
|
| + const base::WeakPtr<RenderView>& render_view);
|
|
|
| - // Called to drop our back-pointer to the containing RenderView.
|
| - void DropRenderView() { render_view_ = NULL; }
|
| -
|
| // Called to drop our pointer to the window script object.
|
| void DropWindowScriptObject() { window_script_object_ = NULL; }
|
|
|
| // WebPluginDelegate implementation:
|
| virtual void PluginDestroyed();
|
| virtual bool Initialize(const GURL& url, char** argn, char** argv, int argc,
|
| - WebPlugin* plugin, bool load_manually);
|
| + webkit_glue::WebPlugin* plugin, bool load_manually);
|
| virtual void UpdateGeometry(const gfx::Rect& window_rect,
|
| const gfx::Rect& clip_rect);
|
| virtual void Paint(gfx::NativeDrawingContext context, const gfx::Rect& rect);
|
| @@ -87,11 +88,16 @@
|
| virtual void DidManualLoadFail();
|
| virtual FilePath GetPluginPath();
|
| virtual void InstallMissingPlugin();
|
| - virtual WebPluginResourceClient* CreateResourceClient(int resource_id,
|
| - const GURL& url,
|
| - bool notify_needed,
|
| - intptr_t notify_data,
|
| - intptr_t existing_stream);
|
| + virtual webkit_glue::WebPluginResourceClient* CreateResourceClient(
|
| + int resource_id,
|
| + const GURL& url,
|
| + bool notify_needed,
|
| + intptr_t notify_data,
|
| + intptr_t existing_stream);
|
| + virtual bool IsWindowless() const;
|
| + virtual gfx::Rect GetRect() const;
|
| + virtual gfx::Rect GetClipRect() const;
|
| + virtual int GetQuirks() const;
|
|
|
| protected:
|
| template<class WebPluginDelegateProxy> friend class DeleteTask;
|
| @@ -100,7 +106,7 @@
|
| private:
|
| WebPluginDelegateProxy(const std::string& mime_type,
|
| const std::string& clsid,
|
| - RenderView* render_view);
|
| + const base::WeakPtr<RenderView>& render_view);
|
|
|
| // Message handlers for messages that proxy WebPlugin methods, which
|
| // we translate into calls to the real WebPlugin.
|
| @@ -161,8 +167,8 @@
|
| // point the window has already been destroyed).
|
| void WillDestroyWindow();
|
|
|
| - RenderView* render_view_;
|
| - WebPlugin* plugin_;
|
| + base::WeakPtr<RenderView> render_view_;
|
| + webkit_glue::WebPlugin* plugin_;
|
| bool windowless_;
|
| gfx::PluginWindowHandle window_;
|
| scoped_refptr<PluginChannelHost> channel_host_;
|
|
|