| OLD | NEW | 
|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #ifndef CONTENT_PLUGIN_WEBPLUGIN_PROXY_H_ | 5 #ifndef CONTENT_PLUGIN_WEBPLUGIN_PROXY_H_ | 
| 6 #define CONTENT_PLUGIN_WEBPLUGIN_PROXY_H_ | 6 #define CONTENT_PLUGIN_WEBPLUGIN_PROXY_H_ | 
| 7 | 7 | 
| 8 #include <stdint.h> | 8 #include <stdint.h> | 
| 9 | 9 | 
| 10 #include <string> | 10 #include <string> | 
| (...skipping 11 matching lines...) Expand all  Loading... | 
| 22 #include "ui/gl/gpu_preference.h" | 22 #include "ui/gl/gpu_preference.h" | 
| 23 #include "ui/surface/transport_dib.h" | 23 #include "ui/surface/transport_dib.h" | 
| 24 #include "url/gurl.h" | 24 #include "url/gurl.h" | 
| 25 | 25 | 
| 26 #if defined(OS_MACOSX) | 26 #if defined(OS_MACOSX) | 
| 27 #include <ApplicationServices/ApplicationServices.h> | 27 #include <ApplicationServices/ApplicationServices.h> | 
| 28 | 28 | 
| 29 #include "base/mac/scoped_cftyperef.h" | 29 #include "base/mac/scoped_cftyperef.h" | 
| 30 #endif | 30 #endif | 
| 31 | 31 | 
| 32 struct PluginMsg_FetchURL_Params; |  | 
| 33 |  | 
| 34 namespace content { | 32 namespace content { | 
| 35 class PluginChannel; | 33 class PluginChannel; | 
| 36 class WebPluginDelegateImpl; | 34 class WebPluginDelegateImpl; | 
| 37 | 35 | 
| 38 #if defined(OS_MACOSX) | 36 #if defined(OS_MACOSX) | 
| 39 class WebPluginAcceleratedSurfaceProxy; | 37 class WebPluginAcceleratedSurfaceProxy; | 
| 40 #endif | 38 #endif | 
| 41 | 39 | 
| 42 // This is an implementation of WebPlugin that proxies all calls to the | 40 // This is an implementation of WebPlugin that proxies all calls to the | 
| 43 // renderer. | 41 // renderer. | 
| 44 class WebPluginProxy : public WebPlugin, | 42 class WebPluginProxy : public WebPlugin, | 
| 45                        public IPC::Sender { | 43                        public IPC::Sender { | 
| 46  public: | 44  public: | 
| 47   // Creates a new proxy for WebPlugin, using the given sender to send the | 45   // Creates a new proxy for WebPlugin, using the given sender to send the | 
| 48   // marshalled WebPlugin calls. | 46   // marshalled WebPlugin calls. | 
| 49   WebPluginProxy(PluginChannel* channel, | 47   WebPluginProxy(PluginChannel* channel, | 
| 50                  int route_id, | 48                  int route_id, | 
| 51                  const GURL& page_url, | 49                  const GURL& page_url, | 
| 52                  int host_render_view_routing_id); | 50                  int host_render_view_routing_id); | 
| 53   ~WebPluginProxy() override; | 51   ~WebPluginProxy() override; | 
| 54 | 52 | 
| 55   void set_delegate(WebPluginDelegateImpl* d) { delegate_ = d; } | 53   void set_delegate(WebPluginDelegateImpl* d) { delegate_ = d; } | 
| 56 | 54 | 
| 57   // WebPlugin overrides | 55   // WebPlugin overrides | 
| 58   void SetWindow(gfx::PluginWindowHandle window) override; | 56   void SetWindow(gfx::PluginWindowHandle window) override; | 
| 59   void SetAcceptsInputEvents(bool accepts) override; | 57   void SetAcceptsInputEvents(bool accepts) override; | 
| 60   void WillDestroyWindow(gfx::PluginWindowHandle window) override; | 58   void WillDestroyWindow(gfx::PluginWindowHandle window) override; | 
| 61   void CancelResource(unsigned long id) override; |  | 
| 62   void Invalidate() override; | 59   void Invalidate() override; | 
| 63   void InvalidateRect(const gfx::Rect& rect) override; | 60   void InvalidateRect(const gfx::Rect& rect) override; | 
| 64   NPObject* GetWindowScriptNPObject() override; | 61   NPObject* GetWindowScriptNPObject() override; | 
| 65   NPObject* GetPluginElement() override; | 62   NPObject* GetPluginElement() override; | 
| 66   bool FindProxyForUrl(const GURL& url, std::string* proxy_list) override; | 63   bool FindProxyForUrl(const GURL& url, std::string* proxy_list) override; | 
| 67   void SetCookie(const GURL& url, | 64   void SetCookie(const GURL& url, | 
| 68                  const GURL& first_party_for_cookies, | 65                  const GURL& first_party_for_cookies, | 
| 69                  const std::string& cookie) override; | 66                  const std::string& cookie) override; | 
| 70   std::string GetCookies(const GURL& url, | 67   std::string GetCookies(const GURL& url, | 
| 71                          const GURL& first_party_for_cookies) override; | 68                          const GURL& first_party_for_cookies) override; | 
| 72   void UpdateGeometry(const gfx::Rect& window_rect, | 69   void UpdateGeometry(const gfx::Rect& window_rect, | 
| 73                       const gfx::Rect& clip_rect, | 70                       const gfx::Rect& clip_rect, | 
| 74                       const TransportDIB::Handle& windowless_buffer0, | 71                       const TransportDIB::Handle& windowless_buffer0, | 
| 75                       const TransportDIB::Handle& windowless_buffer1, | 72                       const TransportDIB::Handle& windowless_buffer1, | 
| 76                       int windowless_buffer_index); | 73                       int windowless_buffer_index); | 
| 77   void CancelDocumentLoad() override; | 74   void CancelDocumentLoad() override; | 
| 78   void DidStartLoading() override; | 75   void DidStartLoading() override; | 
| 79   void DidStopLoading() override; | 76   void DidStopLoading() override; | 
| 80   void SetDeferResourceLoading(unsigned long resource_id, bool defer) override; |  | 
| 81   bool IsOffTheRecord() override; | 77   bool IsOffTheRecord() override; | 
| 82   void ResourceClientDeleted(WebPluginResourceClient* resource_client) override; |  | 
| 83   void URLRedirectResponse(bool allow, int resource_id) override; |  | 
| 84 #if defined(OS_WIN) | 78 #if defined(OS_WIN) | 
| 85   void SetWindowlessData(HANDLE pump_messages_event, | 79   void SetWindowlessData(HANDLE pump_messages_event, | 
| 86                          gfx::NativeViewId dummy_activation_window) override; | 80                          gfx::NativeViewId dummy_activation_window) override; | 
| 87 #endif | 81 #endif | 
| 88 #if defined(OS_MACOSX) | 82 #if defined(OS_MACOSX) | 
| 89   void FocusChanged(bool focused) override; | 83   void FocusChanged(bool focused) override; | 
| 90   void StartIme() override; | 84   void StartIme() override; | 
| 91   WebPluginAcceleratedSurface* GetAcceleratedSurface( | 85   WebPluginAcceleratedSurface* GetAcceleratedSurface( | 
| 92       gfx::GpuPreference gpu_preference) override; | 86       gfx::GpuPreference gpu_preference) override; | 
| 93   void AcceleratedPluginEnabledRendering() override; | 87   void AcceleratedPluginEnabledRendering() override; | 
| 94   void AcceleratedPluginAllocatedIOSurface(int32_t width, | 88   void AcceleratedPluginAllocatedIOSurface(int32_t width, | 
| 95                                            int32_t height, | 89                                            int32_t height, | 
| 96                                            uint32_t surface_id) override; | 90                                            uint32_t surface_id) override; | 
| 97   void AcceleratedPluginSwappedIOSurface() override; | 91   void AcceleratedPluginSwappedIOSurface() override; | 
| 98 #endif | 92 #endif | 
| 99 | 93 | 
| 100   // IPC::Sender implementation. | 94   // IPC::Sender implementation. | 
| 101   bool Send(IPC::Message* msg) override; | 95   bool Send(IPC::Message* msg) override; | 
| 102 | 96 | 
| 103   // class-specific methods | 97   // class-specific methods | 
| 104 | 98 | 
| 105   // Returns a WebPluginResourceClient object given its id, or NULL if no |  | 
| 106   // object with that id exists. |  | 
| 107   WebPluginResourceClient* GetResourceClient(int id); |  | 
| 108 |  | 
| 109   // Returns the id of the renderer that contains this plugin. | 99   // Returns the id of the renderer that contains this plugin. | 
| 110   int GetRendererId(); | 100   int GetRendererId(); | 
| 111 | 101 | 
| 112   // Returns the id of the associated render view. | 102   // Returns the id of the associated render view. | 
| 113   int host_render_view_routing_id() const { | 103   int host_render_view_routing_id() const { | 
| 114     return host_render_view_routing_id_; | 104     return host_render_view_routing_id_; | 
| 115   } | 105   } | 
| 116 | 106 | 
| 117   // For windowless plugins, paints the given rectangle into the local buffer. | 107   // For windowless plugins, paints the given rectangle into the local buffer. | 
| 118   void Paint(const gfx::Rect& rect); | 108   void Paint(const gfx::Rect& rect); | 
| 119 | 109 | 
| 120   // Callback from the renderer to let us know that a paint occurred. | 110   // Callback from the renderer to let us know that a paint occurred. | 
| 121   void DidPaint(); | 111   void DidPaint(); | 
| 122 | 112 | 
| 123   // Notification received on a plugin issued resource request creation. |  | 
| 124   void OnResourceCreated(int resource_id, WebPluginResourceClient* client); |  | 
| 125 |  | 
| 126 #if defined(OS_WIN) && !defined(USE_AURA) | 113 #if defined(OS_WIN) && !defined(USE_AURA) | 
| 127   // Retrieves the IME status from a windowless plugin and sends it to a | 114   // Retrieves the IME status from a windowless plugin and sends it to a | 
| 128   // renderer process. A renderer process will convert the coordinates from | 115   // renderer process. A renderer process will convert the coordinates from | 
| 129   // local to the window coordinates and send the converted coordinates to a | 116   // local to the window coordinates and send the converted coordinates to a | 
| 130   // browser process. | 117   // browser process. | 
| 131   void UpdateIMEStatus(); | 118   void UpdateIMEStatus(); | 
| 132 #endif | 119 #endif | 
| 133 | 120 | 
| 134  private: | 121  private: | 
| 135   class SharedTransportDIB : public base::RefCounted<SharedTransportDIB> { | 122   class SharedTransportDIB : public base::RefCounted<SharedTransportDIB> { | 
| (...skipping 30 matching lines...) Expand all  Loading... | 
| 166 #if defined(OS_MACOSX) | 153 #if defined(OS_MACOSX) | 
| 167   CGContextRef windowless_context() const { | 154   CGContextRef windowless_context() const { | 
| 168     return windowless_contexts_[windowless_buffer_index_].get(); | 155     return windowless_contexts_[windowless_buffer_index_].get(); | 
| 169   } | 156   } | 
| 170 #else | 157 #else | 
| 171   skia::RefPtr<SkCanvas> windowless_canvas() const { | 158   skia::RefPtr<SkCanvas> windowless_canvas() const { | 
| 172     return windowless_canvases_[windowless_buffer_index_]; | 159     return windowless_canvases_[windowless_buffer_index_]; | 
| 173   } | 160   } | 
| 174 #endif | 161 #endif | 
| 175 | 162 | 
| 176   typedef base::hash_map<int, WebPluginResourceClient*> ResourceClientMap; |  | 
| 177   ResourceClientMap resource_clients_; |  | 
| 178 |  | 
| 179   scoped_refptr<PluginChannel> channel_; | 163   scoped_refptr<PluginChannel> channel_; | 
| 180   int route_id_; | 164   int route_id_; | 
| 181   NPObject* window_npobject_; | 165   NPObject* window_npobject_; | 
| 182   NPObject* plugin_element_; | 166   NPObject* plugin_element_; | 
| 183   WebPluginDelegateImpl* delegate_; | 167   WebPluginDelegateImpl* delegate_; | 
| 184   gfx::Rect damaged_rect_; | 168   gfx::Rect damaged_rect_; | 
| 185   bool waiting_for_paint_; | 169   bool waiting_for_paint_; | 
| 186   // The url of the main frame hosting the plugin. | 170   // The url of the main frame hosting the plugin. | 
| 187   GURL page_url_; | 171   GURL page_url_; | 
| 188 | 172 | 
| (...skipping 13 matching lines...) Expand all  Loading... | 
| 202 | 186 | 
| 203   // Contains the routing id of the host render view. | 187   // Contains the routing id of the host render view. | 
| 204   int host_render_view_routing_id_; | 188   int host_render_view_routing_id_; | 
| 205 | 189 | 
| 206   base::WeakPtrFactory<WebPluginProxy> weak_factory_; | 190   base::WeakPtrFactory<WebPluginProxy> weak_factory_; | 
| 207 }; | 191 }; | 
| 208 | 192 | 
| 209 }  // namespace content | 193 }  // namespace content | 
| 210 | 194 | 
| 211 #endif  // CONTENT_PLUGIN_WEBPLUGIN_PROXY_H_ | 195 #endif  // CONTENT_PLUGIN_WEBPLUGIN_PROXY_H_ | 
| OLD | NEW | 
|---|