Index: chrome/plugin/webplugin_proxy.h |
=================================================================== |
--- chrome/plugin/webplugin_proxy.h (revision 78372) |
+++ chrome/plugin/webplugin_proxy.h (working copy) |
@@ -1,225 +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_PLUGIN_WEBPLUGIN_PROXY_H_ |
-#define CHROME_PLUGIN_WEBPLUGIN_PROXY_H_ |
-#pragma once |
- |
-#include <string> |
- |
-#if defined(USE_X11) |
-#include "ui/base/x/x11_util.h" |
-#endif |
-#include "app/surface/transport_dib.h" |
-#include "base/hash_tables.h" |
-#include "base/ref_counted.h" |
-#if defined(OS_MACOSX) |
-#include "base/mac/scoped_cftyperef.h" |
-#endif |
-#include "base/scoped_handle.h" |
-#include "base/scoped_ptr.h" |
-#include "base/shared_memory.h" |
-#include "base/timer.h" |
-#include "googleurl/src/gurl.h" |
-#include "ipc/ipc_message.h" |
-#include "webkit/plugins/npapi/webplugin.h" |
- |
-class PluginChannel; |
- |
-namespace webkit { |
-namespace npapi { |
-class WebPluginDelegateImpl; |
-} |
-} |
- |
-#if defined(OS_MACOSX) |
-class WebPluginAcceleratedSurfaceProxy; |
-#endif |
- |
-// This is an implementation of WebPlugin that proxies all calls to the |
-// renderer. |
-class WebPluginProxy : public webkit::npapi::WebPlugin { |
- public: |
- // Creates a new proxy for WebPlugin, using the given sender to send the |
- // marshalled WebPlugin calls. |
- WebPluginProxy(PluginChannel* channel, |
- int route_id, |
- const GURL& page_url, |
- gfx::NativeViewId containing_window, |
- int host_render_view_routing_id); |
- ~WebPluginProxy(); |
- |
- void set_delegate(webkit::npapi::WebPluginDelegateImpl* d) { delegate_ = d; } |
- |
- // WebPlugin overrides |
- virtual void SetWindow(gfx::PluginWindowHandle window); |
- |
- // Whether input events should be sent to the delegate. |
- virtual void SetAcceptsInputEvents(bool accepts); |
- |
- virtual void WillDestroyWindow(gfx::PluginWindowHandle window); |
-#if defined(OS_WIN) |
- void SetWindowlessPumpEvent(HANDLE pump_messages_event); |
-#endif |
- |
- virtual void CancelResource(unsigned long id); |
- virtual void Invalidate(); |
- virtual void InvalidateRect(const gfx::Rect& rect); |
- virtual NPObject* GetWindowScriptNPObject(); |
- virtual NPObject* GetPluginElement(); |
- virtual void SetCookie(const GURL& url, |
- const GURL& first_party_for_cookies, |
- const std::string& cookie); |
- virtual std::string GetCookies(const GURL& url, |
- const GURL& first_party_for_cookies); |
- |
- virtual void OnMissingPluginStatus(int status); |
- // class-specific methods |
- |
- // Returns a WebPluginResourceClient object given its id, or NULL if no |
- // object with that id exists. |
- webkit::npapi::WebPluginResourceClient* GetResourceClient(int id); |
- |
- // Returns the id of the renderer that contains this plugin. |
- int GetRendererId(); |
- |
- // Returns the id of the associated render view. |
- int host_render_view_routing_id() const { |
- return host_render_view_routing_id_; |
- } |
- |
- // For windowless plugins, paints the given rectangle into the local buffer. |
- void Paint(const gfx::Rect& rect); |
- |
- // Callback from the renderer to let us know that a paint occurred. |
- void DidPaint(); |
- |
- // Notification received on a plugin issued resource request creation. |
- void OnResourceCreated(int resource_id, |
- webkit::npapi::WebPluginResourceClient* client); |
- |
- virtual void HandleURLRequest(const char* url, |
- const char* method, |
- const char* target, |
- const char* buf, |
- unsigned int len, |
- int notify_id, |
- bool popups_allowed, |
- bool notify_redirects); |
- void UpdateGeometry(const gfx::Rect& window_rect, |
- const gfx::Rect& clip_rect, |
- const TransportDIB::Handle& windowless_buffer, |
- const TransportDIB::Handle& background_buffer, |
- bool transparent |
-#if defined(OS_MACOSX) |
- , |
- int ack_key |
-#endif |
- ); |
- virtual void CancelDocumentLoad(); |
- virtual void InitiateHTTPRangeRequest( |
- const char* url, const char* range_info, int range_request_id); |
- virtual void SetDeferResourceLoading(unsigned long resource_id, bool defer); |
- virtual bool IsOffTheRecord(); |
- virtual void ResourceClientDeleted( |
- webkit::npapi::WebPluginResourceClient* resource_client); |
- gfx::NativeViewId containing_window() { return containing_window_; } |
- |
-#if defined(OS_MACOSX) |
- virtual void FocusChanged(bool focused); |
- |
- virtual void StartIme(); |
- |
- virtual void BindFakePluginWindowHandle(bool opaque); |
- |
- virtual webkit::npapi::WebPluginAcceleratedSurface* GetAcceleratedSurface(); |
- |
- // Tell the browser (via the renderer) to invalidate because the |
- // accelerated buffers have changed. |
- virtual void AcceleratedFrameBuffersDidSwap( |
- gfx::PluginWindowHandle window, uint64 surface_id); |
- |
- // Tell the renderer and browser to associate the given plugin handle with |
- // |accelerated_surface_identifier|. The geometry is used to resize any |
- // native "window" (which on the Mac is a just a view). |
- // This method is used when IOSurface support is available. |
- virtual void SetAcceleratedSurface(gfx::PluginWindowHandle window, |
- const gfx::Size& size, |
- uint64 accelerated_surface_identifier); |
- |
- // Tell the renderer and browser to associate the given plugin handle with |
- // |dib_handle|. The geometry is used to resize any native "window" (which |
- // on the Mac is just a view). |
- // This method is used when IOSurface support is not available. |
- virtual void SetAcceleratedDIB( |
- gfx::PluginWindowHandle window, |
- const gfx::Size& size, |
- const TransportDIB::Handle& dib_handle); |
- |
- // Create/destroy TranportDIBs via messages to the browser process. |
- // These are only used when IOSurface support is not available. |
- virtual void AllocSurfaceDIB(const size_t size, |
- TransportDIB::Handle* dib_handle); |
- virtual void FreeSurfaceDIB(TransportDIB::Id dib_id); |
-#endif |
- |
- virtual void URLRedirectResponse(bool allow, int resource_id); |
- |
- private: |
- bool Send(IPC::Message* msg); |
- |
- // Handler for sending over the paint event to the plugin. |
- void OnPaint(const gfx::Rect& damaged_rect); |
- |
- // Updates the shared memory section where windowless plugins paint. |
- void SetWindowlessBuffer(const TransportDIB::Handle& windowless_buffer, |
- const TransportDIB::Handle& background_buffer, |
- const gfx::Rect& window_rect); |
- |
- typedef base::hash_map<int, webkit::npapi::WebPluginResourceClient*> |
- ResourceClientMap; |
- ResourceClientMap resource_clients_; |
- |
- scoped_refptr<PluginChannel> channel_; |
- int route_id_; |
- NPObject* window_npobject_; |
- NPObject* plugin_element_; |
- webkit::npapi::WebPluginDelegateImpl* delegate_; |
- gfx::Rect damaged_rect_; |
- bool waiting_for_paint_; |
- gfx::NativeViewId containing_window_; |
- // The url of the main frame hosting the plugin. |
- GURL page_url_; |
- |
- // Variables used for desynchronized windowless plugin painting. See note in |
- // webplugin_delegate_proxy.h for how this works. |
- bool transparent_; |
-#if defined(OS_MACOSX) |
- scoped_ptr<TransportDIB> windowless_dib_; |
- scoped_ptr<TransportDIB> background_dib_; |
- base::mac::ScopedCFTypeRef<CGContextRef> windowless_context_; |
- base::mac::ScopedCFTypeRef<CGContextRef> background_context_; |
- scoped_ptr<WebPluginAcceleratedSurfaceProxy> accelerated_surface_; |
-#else |
- scoped_ptr<skia::PlatformCanvas> windowless_canvas_; |
- scoped_ptr<skia::PlatformCanvas> background_canvas_; |
- |
-#if defined(USE_X11) |
- scoped_ptr<TransportDIB> windowless_dib_; |
- scoped_ptr<TransportDIB> background_dib_; |
- // If we can use SHM pixmaps for windowless plugin painting or not. |
- bool use_shm_pixmap_; |
- // The SHM pixmap for windowless plugin painting. |
- XID windowless_shm_pixmap_; |
-#endif |
- |
-#endif |
- |
- // Contains the routing id of the host render view. |
- int host_render_view_routing_id_; |
- |
- ScopedRunnableMethodFactory<WebPluginProxy> runnable_method_factory_; |
-}; |
- |
-#endif // CHROME_PLUGIN_WEBPLUGIN_PROXY_H_ |