Home | History | Annotate | Download | only in pepper
      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_
    109