diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-17 19:15:35 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-17 19:15:35 +0000 |
commit | 6f516083864319feeb02ae4dc32609216455366b (patch) | |
tree | 285a57fee02c581e22d272951633d4a56a7846e6 /chrome/renderer/webplugin_delegate_proxy.h | |
parent | 6421fe84fee932545c65ab77b7dcdc60be28accc (diff) | |
download | chromium_src-6f516083864319feeb02ae4dc32609216455366b.zip chromium_src-6f516083864319feeb02ae4dc32609216455366b.tar.gz chromium_src-6f516083864319feeb02ae4dc32609216455366b.tar.bz2 |
Move a bunch of gpu/worker/plugin renderer code to content. I temporarily disabled the sad plugin code while I add a renderer chrome interface in a follow up.
TBR=avi
Review URL: http://codereview.chromium.org/6713005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@78579 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/webplugin_delegate_proxy.h')
-rw-r--r-- | chrome/renderer/webplugin_delegate_proxy.h | 275 |
1 files changed, 0 insertions, 275 deletions
diff --git a/chrome/renderer/webplugin_delegate_proxy.h b/chrome/renderer/webplugin_delegate_proxy.h deleted file mode 100644 index 3a84996..0000000 --- a/chrome/renderer/webplugin_delegate_proxy.h +++ /dev/null @@ -1,275 +0,0 @@ -// Copyright (c) 2010 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 CHROME_RENDERER_WEBPLUGIN_DELEGATE_PROXY_H_ -#define CHROME_RENDERER_WEBPLUGIN_DELEGATE_PROXY_H_ -#pragma once - -#include <string> -#include <vector> - -#include "app/surface/transport_dib.h" -#include "base/ref_counted.h" -#include "base/scoped_ptr.h" -#include "base/weak_ptr.h" -#include "googleurl/src/gurl.h" -#include "ipc/ipc_channel.h" -#include "ipc/ipc_message.h" -#include "ui/gfx/native_widget_types.h" -#include "ui/gfx/rect.h" -#include "webkit/plugins/npapi/webplugininfo.h" -#include "webkit/plugins/npapi/webplugin_delegate.h" - -#if defined(OS_MACOSX) -#include "base/hash_tables.h" -#include "base/linked_ptr.h" -#endif - -struct NPObject; -class NPObjectStub; -struct NPVariant_Param; -class PluginChannelHost; -struct PluginHostMsg_URLRequest_Params; -class RenderView; -class SkBitmap; - -namespace base { -class SharedMemory; -class WaitableEvent; -} - -namespace skia { -class PlatformCanvas; -} - -namespace webkit { -namespace npapi { -class WebPlugin; -} -} - -// An implementation of WebPluginDelegate that proxies all calls to -// the plugin process. -class WebPluginDelegateProxy - : public webkit::npapi::WebPluginDelegate, - public IPC::Channel::Listener, - public IPC::Message::Sender, - public base::SupportsWeakPtr<WebPluginDelegateProxy> { - public: - WebPluginDelegateProxy(const std::string& mime_type, - const base::WeakPtr<RenderView>& render_view); - - // WebPluginDelegate implementation: - virtual void PluginDestroyed(); - virtual bool Initialize(const GURL& url, - const std::vector<std::string>& arg_names, - const std::vector<std::string>& arg_values, - webkit::npapi::WebPlugin* plugin, - bool load_manually); - virtual void UpdateGeometry(const gfx::Rect& window_rect, - const gfx::Rect& clip_rect); - virtual void Paint(WebKit::WebCanvas* canvas, const gfx::Rect& rect); - virtual void Print(gfx::NativeDrawingContext context); - virtual NPObject* GetPluginScriptableObject(); - virtual void DidFinishLoadWithReason(const GURL& url, NPReason reason, - int notify_id); - virtual void SetFocus(bool focused); - virtual bool HandleInputEvent(const WebKit::WebInputEvent& event, - WebKit::WebCursorInfo* cursor); - virtual int GetProcessId(); - - // Informs the plugin that its containing content view has gained or lost - // first responder status. - virtual void SetContentAreaFocus(bool has_focus); -#if defined(OS_MACOSX) - // Informs the plugin that its enclosing window has gained or lost focus. - virtual void SetWindowFocus(bool window_has_focus); - // Informs the plugin that its container (window/tab) has changed visibility. - virtual void SetContainerVisibility(bool is_visible); - // Informs the plugin that its enclosing window's frame has changed. - virtual void WindowFrameChanged(gfx::Rect window_frame, gfx::Rect view_frame); - // Informs the plugin that plugin IME has completed. - // If |text| is empty, composition was cancelled. - virtual void ImeCompositionCompleted(const string16& text, int plugin_id); -#endif - - // IPC::Channel::Listener implementation: - virtual bool OnMessageReceived(const IPC::Message& msg); - virtual void OnChannelError(); - - // IPC::Message::Sender implementation: - virtual bool Send(IPC::Message* msg); - - virtual void SendJavaScriptStream(const GURL& url, - const std::string& result, - bool success, - int notify_id); - - virtual void DidReceiveManualResponse(const GURL& url, - const std::string& mime_type, - const std::string& headers, - uint32 expected_length, - uint32 last_modified); - virtual void DidReceiveManualData(const char* buffer, int length); - virtual void DidFinishManualLoading(); - virtual void DidManualLoadFail(); - virtual void InstallMissingPlugin(); - virtual webkit::npapi::WebPluginResourceClient* CreateResourceClient( - unsigned long resource_id, const GURL& url, int notify_id); - virtual webkit::npapi::WebPluginResourceClient* CreateSeekableResourceClient( - unsigned long resource_id, int range_request_id); - - gfx::PluginWindowHandle GetPluginWindowHandle(); - - protected: - template<class WebPluginDelegateProxy> friend class DeleteTask; - ~WebPluginDelegateProxy(); - - private: - // Message handlers for messages that proxy WebPlugin methods, which - // we translate into calls to the real WebPlugin. - void OnSetWindow(gfx::PluginWindowHandle window); -#if defined(OS_WIN) - void OnSetWindowlessPumpEvent(HANDLE modal_loop_pump_messages_event); -#endif - void OnCompleteURL(const std::string& url_in, std::string* url_out, - bool* result); - void OnHandleURLRequest(const PluginHostMsg_URLRequest_Params& params); - void OnCancelResource(int id); - void OnInvalidateRect(const gfx::Rect& rect); - void OnGetWindowScriptNPObject(int route_id, bool* success); - void OnGetPluginElement(int route_id, bool* success); - void OnSetCookie(const GURL& url, - const GURL& first_party_for_cookies, - const std::string& cookie); - void OnGetCookies(const GURL& url, const GURL& first_party_for_cookies, - std::string* cookies); - void OnMissingPluginStatus(int status); - void OnCancelDocumentLoad(); - void OnInitiateHTTPRangeRequest(const std::string& url, - const std::string& range_info, - int range_request_id); - void OnDeferResourceLoading(unsigned long resource_id, bool defer); - -#if defined(OS_MACOSX) - void OnFocusChanged(bool focused); - void OnStartIme(); - void OnBindFakePluginWindowHandle(bool opaque); - void OnUpdateGeometry_ACK(int ack_key); - void OnAcceleratedSurfaceSetIOSurface(gfx::PluginWindowHandle window, - int32 width, - int32 height, - uint64 io_surface_identifier); - void OnAcceleratedSurfaceSetTransportDIB(gfx::PluginWindowHandle window, - int32 width, - int32 height, - TransportDIB::Handle transport_dib); - void OnAcceleratedSurfaceAllocTransportDIB(size_t size, - TransportDIB::Handle* dib_handle); - void OnAcceleratedSurfaceFreeTransportDIB(TransportDIB::Id dib_id); - void OnAcceleratedSurfaceBuffersSwapped(gfx::PluginWindowHandle window, - uint64 surface_id); -#endif - - void OnURLRedirectResponse(bool allow, int resource_id); - - // Draw a graphic indicating a crashed plugin. - void PaintSadPlugin(WebKit::WebCanvas* canvas, const gfx::Rect& rect); - - // Returns true if the given rectangle is different in the native drawing - // context and the current background bitmap. - bool BackgroundChanged(gfx::NativeDrawingContext context, - const gfx::Rect& rect); - - // Copies the given rectangle from the transport bitmap to the backing store. - void CopyFromTransportToBacking(const gfx::Rect& rect); - - // Clears the shared memory section and canvases used for windowless plugins. - void ResetWindowlessBitmaps(); - -#if !defined(OS_WIN) - // Creates a process-local memory section and canvas. PlatformCanvas on - // Windows only works with a DIB, not arbitrary memory. - bool CreateLocalBitmap(std::vector<uint8>* memory, - scoped_ptr<skia::PlatformCanvas>* canvas); -#endif - - // Creates a shared memory section and canvas. - bool CreateSharedBitmap(scoped_ptr<TransportDIB>* memory, - scoped_ptr<skia::PlatformCanvas>* canvas); - - // Called for cleanup during plugin destruction. Normally right before the - // plugin window gets destroyed, or when the plugin has crashed (at which - // point the window has already been destroyed). - void WillDestroyWindow(); - -#if defined(OS_MACOSX) - // Synthesize a fake window handle for the plug-in to identify the instance - // to the browser, allowing mapping to a surface for hardware acceleration - // of plug-in content. The browser generates the handle which is then set on - // the plug-in. Returns true if it successfully sets the window handle on the - // plug-in. - bool BindFakePluginWindowHandle(bool opaque); - - typedef base::hash_map<int, linked_ptr<TransportDIB> > OldTransportDIBMap; - - OldTransportDIBMap old_transport_dibs_; -#endif // OS_MACOSX - -#if defined(OS_WIN) - // Returns true if we should update the plugin geometry synchronously. - bool UseSynchronousGeometryUpdates(); -#endif - - base::WeakPtr<RenderView> render_view_; - webkit::npapi::WebPlugin* plugin_; - bool uses_shared_bitmaps_; - gfx::PluginWindowHandle window_; - scoped_refptr<PluginChannelHost> channel_host_; - std::string mime_type_; - int instance_id_; - webkit::npapi::WebPluginInfo info_; - - gfx::Rect plugin_rect_; - gfx::Rect clip_rect_; - - NPObject* npobject_; - base::WeakPtr<NPObjectStub> window_script_object_; - - // Event passed in by the plugin process and is used to decide if - // messages need to be pumped in the NPP_HandleEvent sync call. - scoped_ptr<base::WaitableEvent> modal_loop_pump_messages_event_; - - // Bitmap for crashed plugin - SkBitmap* sad_plugin_; - - // True if we got an invalidate from the plugin and are waiting for a paint. - bool invalidate_pending_; - - // Used to desynchronize windowless painting. When WebKit paints, we bitblt - // from our backing store of what the plugin rectangle looks like. The - // plugin paints into the transport store, and we copy that to our backing - // store when we get an invalidate from it. The background bitmap is used - // for transparent plugins, as they need the backgroud data during painting. - bool transparent_; -#if defined(OS_WIN) - scoped_ptr<TransportDIB> backing_store_; -#else - std::vector<uint8> backing_store_; -#endif - scoped_ptr<skia::PlatformCanvas> backing_store_canvas_; - scoped_ptr<TransportDIB> transport_store_; - scoped_ptr<skia::PlatformCanvas> transport_store_canvas_; - scoped_ptr<TransportDIB> background_store_; - scoped_ptr<skia::PlatformCanvas> background_store_canvas_; - // This lets us know which portion of the backing store has been painted into. - gfx::Rect backing_store_painted_; - - // The url of the main frame hosting the plugin. - GURL page_url_; - - DISALLOW_COPY_AND_ASSIGN(WebPluginDelegateProxy); -}; - -#endif // CHROME_RENDERER_WEBPLUGIN_DELEGATE_PROXY_H_ |