diff options
author | chase@chromium.org <chase@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-21 00:23:26 +0000 |
---|---|---|
committer | chase@chromium.org <chase@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-21 00:23:26 +0000 |
commit | c85b0ba71b5a55647b01de9d345e46896979033d (patch) | |
tree | ae99657ca1440b7540da473e1bbe6156e43e9be3 /webkit/glue/plugins/webview_plugin.h | |
parent | 887ba3adc7b32b7df315ef292ae9395fd75653e5 (diff) | |
download | chromium_src-c85b0ba71b5a55647b01de9d345e46896979033d.zip chromium_src-c85b0ba71b5a55647b01de9d345e46896979033d.tar.gz chromium_src-c85b0ba71b5a55647b01de9d345e46896979033d.tar.bz2 |
Revert "Move the NPAPI files from webkit/glue/plugins to webkit/plugins/npapi"
Manually reverting r69755, which broke the tree.
BUG=none
TEST=none
TBR=dmaclach@chromium.org
Review URL: http://codereview.chromium.org/5998002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@69771 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/glue/plugins/webview_plugin.h')
-rw-r--r-- | webkit/glue/plugins/webview_plugin.h | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/webkit/glue/plugins/webview_plugin.h b/webkit/glue/plugins/webview_plugin.h new file mode 100644 index 0000000..f3c75c1 --- /dev/null +++ b/webkit/glue/plugins/webview_plugin.h @@ -0,0 +1,142 @@ +// 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 WEBKIT_GLUE_PLUGINS_WEBVIEW_PLUGIN_H_ +#define WEBKIT_GLUE_PLUGINS_WEBVIEW_PLUGIN_H_ + +#include <list> + +#include "base/scoped_ptr.h" +#include "base/task.h" +#include "third_party/WebKit/WebKit/chromium/public/WebCursorInfo.h" +#include "third_party/WebKit/WebKit/chromium/public/WebFrameClient.h" +#include "third_party/WebKit/WebKit/chromium/public/WebPlugin.h" +#include "third_party/WebKit/WebKit/chromium/public/WebString.h" +#include "third_party/WebKit/WebKit/chromium/public/WebTextDirection.h" +#include "third_party/WebKit/WebKit/chromium/public/WebURLResponse.h" +#include "third_party/WebKit/WebKit/chromium/public/WebViewClient.h" + +namespace WebKit { +class WebMouseEvent; +} +struct WebPreferences; + +// This class implements the WebPlugin interface by forwarding drawing and +// handling input events to a WebView. +// It can be used as a placeholder for an actual plugin, using HTML for the UI. +// To show HTML data inside the WebViewPlugin, +// 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 { + 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; + + // Called upon a context menu event. + virtual void ShowContextMenu(const WebKit::WebMouseEvent&) = 0; + }; + + explicit WebViewPlugin(Delegate* delegate); + + // Convenience method to set up a new WebViewPlugin using |preferences| + // and displaying |html_data|. |url| should be a (fake) chrome:// URL; it is + // only used for navigation and never actually resolved. + static WebViewPlugin* Create(Delegate* delegate, + const WebPreferences& preferences, + const std::string& html_data, + const GURL& url); + + WebKit::WebView* web_view() { return web_view_; } + + WebKit::WebPluginContainer* container() { return container_; } + + // 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); + + // WebPlugin methods: + virtual bool initialize(WebKit::WebPluginContainer*); + virtual void destroy(); + + virtual NPObject* scriptableObject(); + + virtual void paint(WebKit::WebCanvas* canvas, const WebKit::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, bool is_visible); + + virtual void updateFocus(bool) { } + virtual void updateVisibility(bool) { } + + virtual bool acceptsInputEvents(); + virtual bool handleInputEvent(const WebKit::WebInputEvent& event, + WebKit::WebCursorInfo& cursor_info); + + virtual void didReceiveResponse(const WebKit::WebURLResponse& response); + virtual void didReceiveData(const char* data, int data_length); + virtual void didFinishLoading(); + virtual void didFailLoading(const WebKit::WebURLError& error); + + // Called in response to WebPluginContainer::loadFrameRequest + virtual void didFinishLoadingFrameRequest( + const WebKit::WebURL& url, void* notifyData) { } + virtual void didFailLoadingFrameRequest(const WebKit::WebURL& url, + void* notify_data, + const WebKit::WebURLError& error) { } + + // WebViewClient methods: + virtual bool acceptsLoadDrops(); + + virtual void setToolTipText(const WebKit::WebString&, + WebKit::WebTextDirection); + + virtual void startDragging(const WebKit::WebDragData& drag_data, + WebKit::WebDragOperationsMask mask, + const WebKit::WebImage& image, + const WebKit::WebPoint& point); + + // WebWidgetClient methods: + virtual void didInvalidateRect(const WebKit::WebRect&); + virtual void didChangeCursor(const WebKit::WebCursorInfo& cursor); + + // WebFrameClient methods: + virtual void didClearWindowObject(WebKit::WebFrame* frame); + + virtual bool canHandleRequest(WebKit::WebFrame* frame, + const WebKit::WebURLRequest& request); + + virtual WebKit::WebURLError cancelledError( + WebKit::WebFrame* frame, const WebKit::WebURLRequest& request); + + private: + friend class DeleteTask<WebViewPlugin>; + virtual ~WebViewPlugin(); + + Delegate* delegate_; + WebKit::WebCursorInfo current_cursor_; + WebKit::WebPluginContainer* container_; + WebKit::WebView* web_view_; + gfx::Rect rect_; + + WebKit::WebURLResponse response_; + std::list<std::string> data_; + bool finished_loading_; + scoped_ptr<WebKit::WebURLError> error_; + WebKit::WebString old_title_; +}; + +#endif // WEBKIT_GLUE_PLUGINS_WEBVIEW_PLUGIN_H_ |