| Index: webkit/glue/plugins/webplugin_impl.h
|
| ===================================================================
|
| --- webkit/glue/plugins/webplugin_impl.h (revision 69426)
|
| +++ webkit/glue/plugins/webplugin_impl.h (working copy)
|
| @@ -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_
|
|
|