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