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 3 // found in the LICENSE file. 4 5 #ifndef CONTENT_RENDERER_PEPPER_PPEPPER_WEBPLUGIN_IMPL_H_ 6 #define CONTENT_RENDERER_PEPPER_PPEPPER_WEBPLUGIN_IMPL_H_ 7 8 #include <string> 9 #include <vector> 10 11 #include "base/memory/scoped_ptr.h" 12 #include "base/memory/weak_ptr.h" 13 #include "base/sequenced_task_runner_helpers.h" 14 #include "ppapi/c/pp_var.h" 15 #include "third_party/WebKit/public/web/WebPlugin.h" 16 #include "ui/gfx/rect.h" 17 18 struct _NPP; 19 20 namespace WebKit { 21 struct WebPluginParams; 22 struct WebPrintParams; 23 } 24 25 namespace content { 26 27 class PepperPluginInstanceImpl; 28 class PluginModule; 29 class PPB_URLLoader_Impl; 30 class RenderViewImpl; 31 32 class PepperWebPluginImpl : public WebKit::WebPlugin { 33 public: 34 PepperWebPluginImpl(PluginModule* module, 35 const WebKit::WebPluginParams& params, 36 const base::WeakPtr<RenderViewImpl>& render_view); 37 38 PepperPluginInstanceImpl* instance() { return instance_.get(); } 39 40 // WebKit::WebPlugin implementation. 41 virtual WebKit::WebPluginContainer* container() const; 42 virtual bool initialize(WebKit::WebPluginContainer* container); 43 virtual void destroy(); 44 virtual NPObject* scriptableObject(); 45 virtual struct _NPP* pluginNPP(); 46 virtual bool getFormValue(WebKit::WebString& value); 47 virtual void paint(WebKit::WebCanvas* canvas, const WebKit::WebRect& rect); 48 virtual void updateGeometry( 49 const WebKit::WebRect& frame_rect, 50 const WebKit::WebRect& clip_rect, 51 const WebKit::WebVector<WebKit::WebRect>& cut_outs_rects, 52 bool is_visible); 53 virtual void updateFocus(bool focused); 54 virtual void updateVisibility(bool visible); 55 virtual bool acceptsInputEvents(); 56 virtual bool handleInputEvent(const WebKit::WebInputEvent& event, 57 WebKit::WebCursorInfo& cursor_info); 58 virtual void didReceiveResponse(const WebKit::WebURLResponse& response); 59 virtual void didReceiveData(const char* data, int data_length); 60 virtual void didFinishLoading(); 61 virtual void didFailLoading(const WebKit::WebURLError&); 62 virtual void didFinishLoadingFrameRequest(const WebKit::WebURL& url, 63 void* notify_data); 64 virtual void didFailLoadingFrameRequest(const WebKit::WebURL& url, 65 void* notify_data, 66 const WebKit::WebURLError& error); 67 virtual bool hasSelection() const; 68 virtual WebKit::WebString selectionAsText() const; 69 virtual WebKit::WebString selectionAsMarkup() const; 70 virtual WebKit::WebURL linkAtPosition(const WebKit::WebPoint& position) const; 71 virtual void setZoomLevel(double level, bool text_only); 72 virtual bool startFind(const WebKit::WebString& search_text, 73 bool case_sensitive, 74 int identifier); 75 virtual void selectFindResult(bool forward); 76 virtual void stopFind(); 77 virtual bool supportsPaginatedPrint() OVERRIDE; 78 virtual bool isPrintScalingDisabled() OVERRIDE; 79 80 virtual int printBegin(const WebKit::WebPrintParams& print_params) OVERRIDE; 81 virtual bool printPage(int page_number, WebKit::WebCanvas* canvas) OVERRIDE; 82 virtual void printEnd() OVERRIDE; 83 84 virtual bool canRotateView() OVERRIDE; 85 virtual void rotateView(RotationType type) OVERRIDE; 86 virtual bool isPlaceholder() OVERRIDE; 87 88 private: 89 friend class base::DeleteHelper<PepperWebPluginImpl>; 90 91 virtual ~PepperWebPluginImpl(); 92 struct InitData; 93 94 scoped_ptr<InitData> init_data_; // Cleared upon successful initialization. 95 // True if the instance represents the entire document in a frame instead of 96 // being an embedded resource. 97 bool full_frame_; 98 scoped_refptr<PepperPluginInstanceImpl> instance_; 99 gfx::Rect plugin_rect_; 100 PP_Var instance_object_; 101 WebKit::WebPluginContainer* container_; 102 103 DISALLOW_COPY_AND_ASSIGN(PepperWebPluginImpl); 104 }; 105 106 } // namespace content 107 108 #endif // CONTENT_RENDERER_PEPPER_PPEPPER_WEBPLUGIN_IMPL_H_ 109