[Ozone-Gbm] Explicitly crash if trying software rendering on GBM
[chromium-blink-merge.git] / content / renderer / pepper / pepper_webplugin_impl.h
blob983bab10cc729ce439a8933c2d0cdd027d780852
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.
5 #ifndef CONTENT_RENDERER_PEPPER_PEPPER_WEBPLUGIN_IMPL_H_
6 #define CONTENT_RENDERER_PEPPER_PEPPER_WEBPLUGIN_IMPL_H_
8 #include <string>
9 #include <vector>
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/geometry/rect.h"
18 struct _NPP;
20 namespace blink {
21 struct WebPluginParams;
22 struct WebPrintParams;
25 namespace content {
27 class PepperPluginInstanceImpl;
28 class PluginInstanceThrottlerImpl;
29 class PluginModule;
30 class PPB_URLLoader_Impl;
31 class RenderFrameImpl;
33 class PepperWebPluginImpl : public blink::WebPlugin {
34 public:
35 PepperWebPluginImpl(PluginModule* module,
36 const blink::WebPluginParams& params,
37 RenderFrameImpl* render_frame,
38 scoped_ptr<PluginInstanceThrottlerImpl> throttler);
40 PepperPluginInstanceImpl* instance() { return instance_.get(); }
42 // blink::WebPlugin implementation.
43 virtual blink::WebPluginContainer* container() const;
44 virtual bool initialize(blink::WebPluginContainer* container);
45 virtual void destroy();
46 virtual v8::Local<v8::Object> v8ScriptableObject(
47 v8::Isolate* isolate) override;
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, blink::WebFocusType focus_type);
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 bool getPrintPresetOptionsFromDocument(
74 blink::WebPrintPresetOptions* preset_options);
75 virtual void setZoomLevel(double level, bool text_only);
76 virtual bool startFind(const blink::WebString& search_text,
77 bool case_sensitive,
78 int identifier);
79 virtual void selectFindResult(bool forward);
80 virtual void stopFind();
81 virtual bool supportsPaginatedPrint() override;
82 virtual bool isPrintScalingDisabled() override;
84 virtual int printBegin(const blink::WebPrintParams& print_params) override;
85 virtual bool printPage(int page_number, blink::WebCanvas* canvas) override;
86 virtual void printEnd() override;
88 virtual bool canRotateView() override;
89 virtual void rotateView(RotationType type) override;
90 virtual bool isPlaceholder() override;
92 private:
93 friend class base::DeleteHelper<PepperWebPluginImpl>;
95 virtual ~PepperWebPluginImpl();
96 struct InitData;
98 scoped_ptr<InitData> init_data_; // Cleared upon successful initialization.
99 // True if the instance represents the entire document in a frame instead of
100 // being an embedded resource.
101 bool full_frame_;
102 scoped_ptr<PluginInstanceThrottlerImpl> throttler_;
103 scoped_refptr<PepperPluginInstanceImpl> instance_;
104 gfx::Rect plugin_rect_;
105 PP_Var instance_object_;
106 blink::WebPluginContainer* container_;
108 DISALLOW_COPY_AND_ASSIGN(PepperWebPluginImpl);
111 } // namespace content
113 #endif // CONTENT_RENDERER_PEPPER_PEPPER_WEBPLUGIN_IMPL_H_