Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / content / renderer / pepper / pepper_webplugin_impl.h
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 blink {
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 RenderFrameImpl;
31
32 class PepperWebPluginImpl : public blink::WebPlugin {
33  public:
34   PepperWebPluginImpl(PluginModule* module,
35                       const blink::WebPluginParams& params,
36                       RenderFrameImpl* render_frame);
37
38   PepperPluginInstanceImpl* instance() { return instance_.get(); }
39
40   // blink::WebPlugin implementation.
41   virtual blink::WebPluginContainer* container() const;
42   virtual bool initialize(blink::WebPluginContainer* container);
43   virtual void destroy();
44   virtual v8::Local<v8::Object> v8ScriptableObject(
45       v8::Isolate* isolate) override;
46   virtual bool getFormValue(blink::WebString& value);
47   virtual void paint(blink::WebCanvas* canvas, const blink::WebRect& rect);
48   virtual void updateGeometry(
49       const blink::WebRect& frame_rect,
50       const blink::WebRect& clip_rect,
51       const blink::WebVector<blink::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 blink::WebInputEvent& event,
57                                 blink::WebCursorInfo& cursor_info);
58   virtual void didReceiveResponse(const blink::WebURLResponse& response);
59   virtual void didReceiveData(const char* data, int data_length);
60   virtual void didFinishLoading();
61   virtual void didFailLoading(const blink::WebURLError&);
62   virtual void didFinishLoadingFrameRequest(const blink::WebURL& url,
63                                             void* notify_data);
64   virtual void didFailLoadingFrameRequest(const blink::WebURL& url,
65                                           void* notify_data,
66                                           const blink::WebURLError& error);
67   virtual bool hasSelection() const;
68   virtual blink::WebString selectionAsText() const;
69   virtual blink::WebString selectionAsMarkup() const;
70   virtual blink::WebURL linkAtPosition(const blink::WebPoint& position) const;
71   virtual void setZoomLevel(double level, bool text_only);
72   virtual bool startFind(const blink::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 blink::WebPrintParams& print_params) override;
81   virtual bool printPage(int page_number, blink::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   blink::WebPluginContainer* container_;
102
103   DISALLOW_COPY_AND_ASSIGN(PepperWebPluginImpl);
104 };
105
106 }  // namespace content
107
108 #endif  // CONTENT_RENDERER_PEPPER_PPEPPER_WEBPLUGIN_IMPL_H_