diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-04 05:53:23 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-04 05:53:23 +0000 |
commit | 8a3b796aa8160ddaed478224050a2b7e1b16d9e6 (patch) | |
tree | d23ba1b25c4bcbd425522268951ad8af4a7cc1c7 /chrome/renderer/webplugin_delegate_proxy.h | |
parent | 79dbc66fba17d6b4967fe86a577b11d15548cdec (diff) | |
download | chromium_src-8a3b796aa8160ddaed478224050a2b7e1b16d9e6.zip chromium_src-8a3b796aa8160ddaed478224050a2b7e1b16d9e6.tar.gz chromium_src-8a3b796aa8160ddaed478224050a2b7e1b16d9e6.tar.bz2 |
This changelist fixes some issues with the NPAPI WMP plugin work in Chrome. The first is that we need to disable windowless mode since it doesn't work in the NPAPI plugin (Safari does this as well, and sites don't use windowless for Firefox). The second is to make UpdateGeometry message synchronous for WMP. The problem I saw was that while handling that message, the plugin might disaptch a NPObject Invoke method to play a video, which WMP doesn't expect and it leads to the video never playing.
While touching these files, I made some small cleanup by reverting the change that made WebPluginProxy not have a WebPluginDelegateImpl pointer, which added a bunch of unnecessary methods to WebPluginDelegate.
BUG=20259
TEST=use --no-activex and try playing the videos on http://www.nana10.co.il/Section/?SectionID=10847&sid=235
Review URL: http://codereview.chromium.org/196012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@25433 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/webplugin_delegate_proxy.h')
-rw-r--r-- | chrome/renderer/webplugin_delegate_proxy.h | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/chrome/renderer/webplugin_delegate_proxy.h b/chrome/renderer/webplugin_delegate_proxy.h index 45ffb8d..a9cfab8 100644 --- a/chrome/renderer/webplugin_delegate_proxy.h +++ b/chrome/renderer/webplugin_delegate_proxy.h @@ -19,6 +19,7 @@ #include "ipc/ipc_message.h" #include "skia/ext/platform_canvas.h" #include "webkit/glue/webplugin.h" +#include "webkit/glue/webplugininfo.h" #include "webkit/glue/webplugin_delegate.h" struct NPObject; @@ -41,19 +42,20 @@ class WebPluginDelegateProxy : public IPC::Message::Sender, public base::SupportsWeakPtr<WebPluginDelegateProxy> { public: - static WebPluginDelegateProxy* Create( - const GURL& url, - const std::string& mime_type, - const std::string& clsid, - const base::WeakPtr<RenderView>& render_view); + WebPluginDelegateProxy(const std::string& mime_type, + const std::string& clsid, + const base::WeakPtr<RenderView>& render_view); // 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, - webkit_glue::WebPlugin* plugin, bool load_manually); + virtual bool Initialize(const GURL& url, + const std::vector<std::string>& arg_names, + const std::vector<std::string>& arg_values, + 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); @@ -86,7 +88,6 @@ class WebPluginDelegateProxy : virtual void DidReceiveManualData(const char* buffer, int length); virtual void DidFinishManualLoading(); virtual void DidManualLoadFail(); - virtual FilePath GetPluginPath(); virtual void InstallMissingPlugin(); virtual webkit_glue::WebPluginResourceClient* CreateResourceClient( int resource_id, @@ -94,20 +95,12 @@ class WebPluginDelegateProxy : 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; ~WebPluginDelegateProxy(); private: - WebPluginDelegateProxy(const std::string& mime_type, - const std::string& clsid, - const base::WeakPtr<RenderView>& render_view); - // Message handlers for messages that proxy WebPlugin methods, which // we translate into calls to the real WebPlugin. void OnSetWindow(gfx::PluginWindowHandle window); @@ -175,7 +168,7 @@ class WebPluginDelegateProxy : std::string mime_type_; std::string clsid_; int instance_id_; - FilePath plugin_path_; + WebPluginInfo info_; gfx::Rect plugin_rect_; |