summaryrefslogtreecommitdiffstats
path: root/webkit/glue/plugins/webplugin_impl.h
diff options
context:
space:
mode:
Diffstat (limited to 'webkit/glue/plugins/webplugin_impl.h')
-rw-r--r--webkit/glue/plugins/webplugin_impl.h330
1 files changed, 0 insertions, 330 deletions
diff --git a/webkit/glue/plugins/webplugin_impl.h b/webkit/glue/plugins/webplugin_impl.h
deleted file mode 100644
index 27a692b..0000000
--- a/webkit/glue/plugins/webplugin_impl.h
+++ /dev/null
@@ -1,330 +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 WEBKIT_GLUE_WEBPLUGIN_IMPL_H_
-#define WEBKIT_GLUE_WEBPLUGIN_IMPL_H_
-
-#include <string>
-#include <map>
-#include <vector>
-
-#include "base/basictypes.h"
-#include "base/file_path.h"
-#include "base/task.h"
-#include "base/weak_ptr.h"
-#include "gfx/native_widget_types.h"
-#include "googleurl/src/gurl.h"
-#include "third_party/WebKit/WebKit/chromium/public/WebPlugin.h"
-#include "third_party/WebKit/WebKit/chromium/public/WebRect.h"
-#include "third_party/WebKit/WebKit/chromium/public/WebString.h"
-#include "third_party/WebKit/WebKit/chromium/public/WebURLLoaderClient.h"
-#include "third_party/WebKit/WebKit/chromium/public/WebURLRequest.h"
-#include "third_party/WebKit/WebKit/chromium/public/WebVector.h"
-#include "webkit/glue/plugins/webplugin.h"
-
-class WebViewDelegate;
-
-namespace WebKit {
-class WebDevToolsAgent;
-class WebFrame;
-class WebPluginContainer;
-class WebURLResponse;
-class WebURLLoader;
-class WebURLRequest;
-}
-
-namespace webkit_glue {
-
-class MultipartResponseDelegate;
-class WebPluginDelegate;
-class WebPluginPageDelegate;
-
-// This is the WebKit side of the plugin implementation that forwards calls,
-// after changing out of WebCore types, to a delegate. The delegate may
-// be in a different process.
-class WebPluginImpl : public WebPlugin,
- public WebKit::WebPlugin,
- public WebKit::WebURLLoaderClient {
- public:
- WebPluginImpl(
- WebKit::WebFrame* frame,
- const WebKit::WebPluginParams& params,
- const FilePath& file_path,
- const std::string& mime_type,
- const base::WeakPtr<WebPluginPageDelegate>& page_delegate);
- virtual ~WebPluginImpl();
-
- // Helper function for sorting post data.
- static bool SetPostData(WebKit::WebURLRequest* request,
- const char* buf,
- uint32 length);
-
- virtual WebPluginDelegate* delegate();
-
- private:
- // WebKit::WebPlugin methods:
- virtual bool initialize(
- WebKit::WebPluginContainer* container);
- virtual void destroy();
- virtual NPObject* scriptableObject();
- virtual void paint(
- WebKit::WebCanvas* canvas, const WebKit::WebRect& paint_rect);
- virtual void updateGeometry(
- const WebKit::WebRect& frame_rect, const WebKit::WebRect& clip_rect,
- const WebKit::WebVector<WebKit::WebRect>& cut_outs, bool is_visible);
- virtual unsigned getBackingTextureId();
- virtual void updateFocus(bool focused);
- virtual void updateVisibility(bool visible);
- 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);
- virtual void didFinishLoadingFrameRequest(
- const WebKit::WebURL& url, void* notify_data);
- virtual void didFailLoadingFrameRequest(
- const WebKit::WebURL& url, void* notify_data,
- const WebKit::WebURLError& error);
- virtual bool supportsPaginatedPrint();
- virtual int printBegin(const WebKit::WebRect& printable_area,
- int printer_dpi);
- virtual bool printPage(int page_number, WebKit::WebCanvas* canvas);
- virtual void printEnd();
- virtual bool hasSelection() const;
- virtual WebKit::WebString selectionAsText() const;
- virtual WebKit::WebString selectionAsMarkup() const;
- virtual void setZoomFactor(float scale, bool text_only);
- virtual bool startFind(const WebKit::WebString& search_text,
- bool case_sensitive,
- int identifier);
- virtual void selectFindResult(bool forward);
- virtual void stopFind();
-
- // WebPlugin implementation:
- virtual void SetWindow(gfx::PluginWindowHandle window);
- 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 ShowModalHTMLDialog(const GURL& url, int width, int height,
- const std::string& json_arguments,
- std::string* json_retval);
- virtual void OnMissingPluginStatus(int status);
-
- virtual void URLRedirectResponse(bool allow, int resource_id);
-
- // Given a (maybe partial) url, completes using the base url.
- GURL CompleteURL(const char* url);
-
- // Executes the script passed in. The notify_needed and notify_data arguments
- // are passed in by the plugin process. These indicate whether the plugin
- // expects a notification on script execution. We pass them back to the
- // plugin as is. This avoids having to track the notification arguments in
- // the plugin process.
- bool ExecuteScript(const std::string& url, const std::wstring& script,
- bool notify_needed, intptr_t notify_data,
- bool popups_allowed);
-
- enum RoutingStatus {
- ROUTED,
- NOT_ROUTED,
- INVALID_URL,
- GENERAL_FAILURE
- };
-
- // Determines the referrer value sent along with outgoing HTTP requests
- // issued by plugins.
- enum Referrer {
- PLUGIN_SRC,
- DOCUMENT_URL,
- NO_REFERRER
- };
-
- // Given a download request, check if we need to route the output to a frame.
- // Returns ROUTED if the load is done and routed to a frame, NOT_ROUTED or
- // corresponding error codes otherwise.
- RoutingStatus RouteToFrame(const char* url,
- bool is_javascript_url,
- const char* method,
- const char* target,
- const char* buf,
- unsigned int len,
- int notify_id,
- Referrer referrer_flag);
-
- // Returns the next avaiable resource id. Returns 0 if the operation fails.
- // It may fail if the page has already been closed.
- unsigned long GetNextResourceId();
-
- // Initiates HTTP GET/POST requests.
- // Returns true on success.
- bool InitiateHTTPRequest(unsigned long resource_id,
- WebPluginResourceClient* client,
- const GURL& url,
- const char* method,
- const char* buf,
- int len,
- const char* range_info,
- Referrer referrer_flag,
- bool notify_redirects);
-
- gfx::Rect GetWindowClipRect(const gfx::Rect& rect);
-
- // Sets the actual Widget for the plugin.
- void SetContainer(WebKit::WebPluginContainer* container);
-
- // Destroys the plugin instance.
- // The response_handle_to_ignore parameter if not NULL indicates the
- // resource handle to be left valid during plugin shutdown.
- void TearDownPluginInstance(WebKit::WebURLLoader* loader_to_ignore);
-
- // WebURLLoaderClient implementation. We implement this interface in the
- // renderer process, and then use the simple WebPluginResourceClient interface
- // to relay the callbacks to the plugin.
- virtual void willSendRequest(WebKit::WebURLLoader* loader,
- WebKit::WebURLRequest& request,
- const WebKit::WebURLResponse& response);
- virtual void didSendData(WebKit::WebURLLoader* loader,
- unsigned long long bytes_sent,
- unsigned long long total_bytes_to_be_sent);
- virtual void didReceiveResponse(WebKit::WebURLLoader* loader,
- const WebKit::WebURLResponse& response);
- virtual void didReceiveData(WebKit::WebURLLoader* loader, const char *buffer,
- int length);
- virtual void didFinishLoading(WebKit::WebURLLoader* loader,
- double finishTime);
- virtual void didFail(WebKit::WebURLLoader* loader,
- const WebKit::WebURLError& error);
-
- // Helper function to remove the stored information about a resource
- // request given its index in m_clients.
- void RemoveClient(size_t i);
-
- // Helper function to remove the stored information about a resource
- // request given a handle.
- void RemoveClient(WebKit::WebURLLoader* loader);
-
- 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);
-
- virtual void CancelDocumentLoad();
-
- virtual void InitiateHTTPRangeRequest(
- const char* url, const char* range_info, int pending_request_id);
-
- virtual void SetDeferResourceLoading(unsigned long resource_id, bool defer);
-
- // Ignore in-process plugins mode for this flag.
- virtual bool IsOffTheRecord();
-
- // Handles HTTP multipart responses, i.e. responses received with a HTTP
- // status code of 206.
- void HandleHttpMultipartResponse(const WebKit::WebURLResponse& response,
- WebPluginResourceClient* client);
-
- void HandleURLRequestInternal(const char* url,
- const char* method,
- const char* target,
- const char* buf,
- unsigned int len,
- int notify_id,
- bool popups_allowed,
- Referrer referrer_flag,
- bool notify_redirects);
-
- // Tears down the existing plugin instance and creates a new plugin instance
- // to handle the response identified by the loader parameter.
- bool ReinitializePluginForResponse(WebKit::WebURLLoader* loader);
-
- // Delayed task for downloading the plugin source URL.
- void OnDownloadPluginSrcUrl();
-
- struct ClientInfo;
-
- // Helper functions
- WebPluginResourceClient* GetClientFromLoader(WebKit::WebURLLoader* loader);
- ClientInfo* GetClientInfoFromLoader(WebKit::WebURLLoader* loader);
-
- // Helper function to set the referrer on the request passed in.
- void SetReferrer(WebKit::WebURLRequest* request, Referrer referrer_flag);
-
- // Returns DevToolsAgent for the frame or 0.
- WebKit::WebDevToolsAgent* GetDevToolsAgent();
-
- // Check for invalid chars like @, ;, \ before the first / (in path).
- bool IsValidUrl(const GURL& url, Referrer referrer_flag);
-
- std::vector<ClientInfo> clients_;
-
- bool windowless_;
- gfx::PluginWindowHandle window_;
- bool accepts_input_events_;
- base::WeakPtr<WebPluginPageDelegate> page_delegate_;
- WebKit::WebFrame* webframe_;
-
- WebPluginDelegate* delegate_;
-
- // This is just a weak reference.
- WebKit::WebPluginContainer* container_;
-
- typedef std::map<WebPluginResourceClient*,
- webkit_glue::MultipartResponseDelegate*>
- MultiPartResponseHandlerMap;
- // Tracks HTTP multipart response handlers instantiated for
- // a WebPluginResourceClient instance.
- MultiPartResponseHandlerMap multi_part_response_map_;
-
- // The plugin source URL.
- GURL plugin_url_;
-
- // Indicates if the download would be initiated by the plugin or us.
- bool load_manually_;
-
- // Indicates if this is the first geometry update received by the plugin.
- bool first_geometry_update_;
-
- // Set to true if the next response error should be ignored.
- bool ignore_response_error_;
-
- // The current plugin geometry and clip rectangle.
- WebPluginGeometry geometry_;
-
- // The location of the plugin on disk.
- FilePath file_path_;
-
- // The mime type of the plugin.
- std::string mime_type_;
-
- // Holds the list of argument names and values passed to the plugin. We keep
- // these so that we can re-initialize the plugin if we need to.
- std::vector<std::string> arg_names_;
- std::vector<std::string> arg_values_;
-
- ScopedRunnableMethodFactory<WebPluginImpl> method_factory_;
-
- DISALLOW_COPY_AND_ASSIGN(WebPluginImpl);
-};
-
-} // namespace webkit_glue
-
-#endif // #ifndef WEBKIT_GLUE_WEBPLUGIN_IMPL_H_