Use common code to set HttpNetworkSession::Param pointers.
[chromium-blink-merge.git] / content / renderer / render_widget_fullscreen_pepper.h
blobb914117d6793006f9255bf35d79f0f2d509fdae1
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_RENDER_WIDGET_FULLSCREEN_PEPPER_H_
6 #define CONTENT_RENDERER_RENDER_WIDGET_FULLSCREEN_PEPPER_H_
8 #include "base/memory/scoped_ptr.h"
9 #include "content/renderer/mouse_lock_dispatcher.h"
10 #include "content/renderer/pepper/fullscreen_container.h"
11 #include "content/renderer/render_widget_fullscreen.h"
12 #include "third_party/WebKit/public/web/WebWidget.h"
14 namespace blink {
15 class WebLayer;
18 namespace content {
19 class PepperPluginInstanceImpl;
21 // A RenderWidget that hosts a fullscreen pepper plugin. This provides a
22 // FullscreenContainer that the plugin instance can callback into to e.g.
23 // invalidate rects.
24 class RenderWidgetFullscreenPepper : public RenderWidgetFullscreen,
25 public FullscreenContainer {
26 public:
27 static RenderWidgetFullscreenPepper* Create(
28 int32 opener_id,
29 CompositorDependencies* compositor_deps,
30 PepperPluginInstanceImpl* plugin,
31 const GURL& active_url,
32 const blink::WebScreenInfo& screen_info);
34 // pepper::FullscreenContainer API.
35 void Invalidate() override;
36 void InvalidateRect(const blink::WebRect& rect) override;
37 void ScrollRect(int dx, int dy, const blink::WebRect& rect) override;
38 void Destroy() override;
39 void DidChangeCursor(const blink::WebCursorInfo& cursor) override;
40 void SetLayer(blink::WebLayer* layer) override;
42 // IPC::Listener implementation. This overrides the implementation
43 // in RenderWidgetFullscreen.
44 bool OnMessageReceived(const IPC::Message& msg) override;
46 // Could be NULL when this widget is closing.
47 PepperPluginInstanceImpl* plugin() const { return plugin_; }
49 MouseLockDispatcher* mouse_lock_dispatcher() const {
50 return mouse_lock_dispatcher_.get();
53 protected:
54 RenderWidgetFullscreenPepper(CompositorDependencies* compositor_deps,
55 PepperPluginInstanceImpl* plugin,
56 const GURL& active_url,
57 const blink::WebScreenInfo& screen_info);
58 ~RenderWidgetFullscreenPepper() override;
60 // RenderWidget API.
61 void DidInitiatePaint() override;
62 void DidFlushPaint() override;
63 void Close() override;
64 void OnResize(const ViewMsg_Resize_Params& params) override;
66 // RenderWidgetFullscreen API.
67 blink::WebWidget* CreateWebWidget() override;
69 // RenderWidget overrides.
70 GURL GetURLForGraphicsContext3D() override;
71 void SetDeviceScaleFactor(float device_scale_factor) override;
73 private:
74 // URL that is responsible for this widget, passed to ggl::CreateViewContext.
75 GURL active_url_;
77 // The plugin instance this widget wraps.
78 PepperPluginInstanceImpl* plugin_;
80 blink::WebLayer* layer_;
82 scoped_ptr<MouseLockDispatcher> mouse_lock_dispatcher_;
84 DISALLOW_COPY_AND_ASSIGN(RenderWidgetFullscreenPepper);
87 } // namespace content
89 #endif // CONTENT_RENDERER_RENDER_WIDGET_FULLSCREEN_PEPPER_H_