Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / components / plugins / renderer / webview_plugin.h
index 13e480c..4b87205 100644 (file)
@@ -9,16 +9,16 @@
 
 #include "base/memory/scoped_ptr.h"
 #include "base/sequenced_task_runner_helpers.h"
+#include "third_party/WebKit/public/platform/WebCursorInfo.h"
 #include "third_party/WebKit/public/platform/WebString.h"
 #include "third_party/WebKit/public/platform/WebURLResponse.h"
-#include "third_party/WebKit/public/web/WebCursorInfo.h"
 #include "third_party/WebKit/public/web/WebFrameClient.h"
 #include "third_party/WebKit/public/web/WebPlugin.h"
 #include "third_party/WebKit/public/web/WebViewClient.h"
 
 struct WebPreferences;
 
-namespace WebKit {
+namespace blink {
 class WebMouseEvent;
 }
 
@@ -29,23 +29,22 @@ class WebMouseEvent;
 // call web_view->mainFrame()->loadHTMLString() with the HTML data and a fake
 // chrome:// URL as origin.
 
-class WebViewPlugin : public WebKit::WebPlugin,
-                      public WebKit::WebViewClient,
-                      public WebKit::WebFrameClient {
+class WebViewPlugin : public blink::WebPlugin,
+                      public blink::WebViewClient,
+                      public blink::WebFrameClient {
  public:
   class Delegate {
    public:
     // Bind |frame| to a Javascript object, enabling the delegate to receive
     // callback methods from Javascript inside the WebFrame.
     // This method is called from WebFrameClient::didClearWindowObject.
-    virtual void BindWebFrame(WebKit::WebFrame* frame) = 0;
-
-    // Called before the WebViewPlugin is destroyed. The delegate should delete
-    // itself here.
-    virtual void WillDestroyPlugin() = 0;
+    virtual void BindWebFrame(blink::WebFrame* frame) = 0;
 
     // Called upon a context menu event.
-    virtual void ShowContextMenu(const WebKit::WebMouseEvent&) = 0;
+    virtual void ShowContextMenu(const blink::WebMouseEvent&) = 0;
+
+    // Called when the WebViewPlugin is destroyed.
+    virtual void PluginDestroyed() = 0;
   };
 
   explicit WebViewPlugin(Delegate* delegate);
@@ -58,98 +57,105 @@ class WebViewPlugin : public WebKit::WebPlugin,
                                const std::string& html_data,
                                const GURL& url);
 
-  WebKit::WebView* web_view() { return web_view_; }
+  blink::WebView* web_view() { return web_view_; }
 
   // When loading a plug-in document (i.e. a full page plug-in not embedded in
   // another page), we save all data that has been received, and replay it with
   // this method on the actual plug-in.
-  void ReplayReceivedData(WebKit::WebPlugin* plugin);
+  void ReplayReceivedData(blink::WebPlugin* plugin);
 
   void RestoreTitleText();
 
   // WebPlugin methods:
-  virtual WebKit::WebPluginContainer* container() const;
-  virtual bool initialize(WebKit::WebPluginContainer*);
+  virtual blink::WebPluginContainer* container() const;
+  virtual bool initialize(blink::WebPluginContainer*);
   virtual void destroy();
 
   virtual NPObject* scriptableObject();
   virtual struct _NPP* pluginNPP();
 
-  virtual bool getFormValue(WebKit::WebString& value);
+  virtual bool getFormValue(blink::WebString& value);
 
-  virtual void paint(WebKit::WebCanvas* canvas, const WebKit::WebRect& rect);
+  virtual void paint(blink::WebCanvas* canvas, const blink::WebRect& rect);
 
   // Coordinates are relative to the containing window.
   virtual void updateGeometry(
-      const WebKit::WebRect& frame_rect,
-      const WebKit::WebRect& clip_rect,
-      const WebKit::WebVector<WebKit::WebRect>& cut_out_rects,
+      const blink::WebRect& frame_rect,
+      const blink::WebRect& clip_rect,
+      const blink::WebVector<blink::WebRect>& cut_out_rects,
       bool is_visible);
 
-  virtual void updateFocus(bool) {}
+  virtual void updateFocus(bool);
   virtual void updateVisibility(bool) {}
 
   virtual bool acceptsInputEvents();
-  virtual bool handleInputEvent(const WebKit::WebInputEvent& event,
-                                WebKit::WebCursorInfo& cursor_info);
+  virtual bool handleInputEvent(const blink::WebInputEvent& event,
+                                blink::WebCursorInfo& cursor_info);
 
-  virtual void didReceiveResponse(const WebKit::WebURLResponse& response);
+  virtual void didReceiveResponse(const blink::WebURLResponse& response);
   virtual void didReceiveData(const char* data, int data_length);
   virtual void didFinishLoading();
-  virtual void didFailLoading(const WebKit::WebURLError& error);
+  virtual void didFailLoading(const blink::WebURLError& error);
 
   // Called in response to WebPluginContainer::loadFrameRequest
-  virtual void didFinishLoadingFrameRequest(const WebKit::WebURL& url,
+  virtual void didFinishLoadingFrameRequest(const blink::WebURL& url,
                                             void* notifyData) {}
-  virtual void didFailLoadingFrameRequest(const WebKit::WebURL& url,
+  virtual void didFailLoadingFrameRequest(const blink::WebURL& url,
                                           void* notify_data,
-                                          const WebKit::WebURLError& error) {}
+                                          const blink::WebURLError& error) {}
 
   // WebViewClient methods:
   virtual bool acceptsLoadDrops();
 
-  virtual void setToolTipText(const WebKit::WebString&,
-                              WebKit::WebTextDirection);
+  virtual void setToolTipText(const blink::WebString&,
+                              blink::WebTextDirection);
 
-  virtual void startDragging(WebKit::WebFrame* frame,
-                             const WebKit::WebDragData& drag_data,
-                             WebKit::WebDragOperationsMask mask,
-                             const WebKit::WebImage& image,
-                             const WebKit::WebPoint& point);
+  virtual void startDragging(blink::WebFrame* frame,
+                             const blink::WebDragData& drag_data,
+                             blink::WebDragOperationsMask mask,
+                             const blink::WebImage& image,
+                             const blink::WebPoint& point);
 
   // WebWidgetClient methods:
-  virtual void didInvalidateRect(const WebKit::WebRect&);
-  virtual void didChangeCursor(const WebKit::WebCursorInfo& cursor);
+  virtual void didInvalidateRect(const blink::WebRect&);
+  virtual void didChangeCursor(const blink::WebCursorInfo& cursor);
 
   // WebFrameClient methods:
-  virtual void didClearWindowObject(WebKit::WebFrame* frame);
+  virtual void didClearWindowObject(blink::WebFrame* frame, int world_id);
 
   // This method is defined in WebPlugin as well as in WebFrameClient, but with
   // different parameters. We only care about implementing the WebPlugin
   // version, so we implement this method and call the default in WebFrameClient
   // (which does nothing) to correctly overload it.
-  virtual void didReceiveResponse(WebKit::WebFrame* frame,
+  virtual void didReceiveResponse(blink::WebFrame* frame,
                                   unsigned identifier,
-                                  const WebKit::WebURLResponse& response);
+                                  const blink::WebURLResponse& response);
 
  private:
   friend class base::DeleteHelper<WebViewPlugin>;
   virtual ~WebViewPlugin();
 
+  // Manages its own lifetime.
   Delegate* delegate_;
-  // Destroys itself.
-  WebKit::WebCursorInfo current_cursor_;
+
+  blink::WebCursorInfo current_cursor_;
+
   // Owns us.
-  WebKit::WebPluginContainer* container_;
+  blink::WebPluginContainer* container_;
+
+  // Owned by us, deleted via |close()|.
+  blink::WebView* web_view_;
+
   // Owned by us, deleted via |close()|.
-  WebKit::WebView* web_view_;
+  blink::WebFrame* web_frame_;
   gfx::Rect rect_;
 
-  WebKit::WebURLResponse response_;
+  blink::WebURLResponse response_;
   std::list<std::string> data_;
   bool finished_loading_;
-  scoped_ptr<WebKit::WebURLError> error_;
-  WebKit::WebString old_title_;
+  scoped_ptr<blink::WebURLError> error_;
+  blink::WebString old_title_;
+  bool focused_;
 };
 
 #endif  // COMPONENTS_PLUGINS_RENDERER_WEBVIEW_PLUGIN_H_