Index: chrome/renderer/render_widget_fullscreen_pepper.h |
diff --git a/chrome/renderer/render_widget_fullscreen_pepper.h b/chrome/renderer/render_widget_fullscreen_pepper.h |
index 7133ec540c98ef35c39ab1d75b6b9410499dacf7..7b430e0c2d1b71866d05aeb26fd7d29529dfc653 100644 |
--- a/chrome/renderer/render_widget_fullscreen_pepper.h |
+++ b/chrome/renderer/render_widget_fullscreen_pepper.h |
@@ -7,36 +7,39 @@ |
#include "chrome/renderer/render_widget_fullscreen.h" |
#include "third_party/WebKit/WebKit/chromium/public/WebWidget.h" |
+#include "webkit/plugins/ppapi/fullscreen_container.h" |
namespace webkit { |
namespace ppapi { |
class PluginInstance; |
-class FullscreenContainer; |
} // namespace ppapi |
} // namespace webkit |
+namespace ggl { |
+class Context; |
+} // namespace ggl |
+ |
// A RenderWidget that hosts a fullscreen pepper plugin. This provides a |
// FullscreenContainer that the plugin instance can callback into to e.g. |
// invalidate rects. |
-class RenderWidgetFullscreenPepper : public RenderWidgetFullscreen { |
+class RenderWidgetFullscreenPepper : public RenderWidgetFullscreen, |
+ public webkit::ppapi::FullscreenContainer { |
public: |
static RenderWidgetFullscreenPepper* Create( |
int32 opener_id, |
RenderThreadBase* render_thread, |
webkit::ppapi::PluginInstance* plugin); |
- // Asks the browser to close this view, which will tear off the window and |
- // close this widget. |
- void SendClose(); |
- |
- // Invalidate the whole widget to force a redraw. |
- void GenerateFullRepaint(); |
+ // pepper::FullscreenContainer API. |
+ virtual void Invalidate(); |
+ virtual void InvalidateRect(const WebKit::WebRect& rect); |
+ virtual void ScrollRect(int dx, int dy, const WebKit::WebRect& rect); |
+ virtual void Destroy(); |
+ virtual webkit::ppapi::PluginDelegate::PlatformContext3D* CreateContext3D(); |
- webkit::ppapi::FullscreenContainer* container() const { |
- return container_.get(); |
- } |
+ ggl::Context* context() const { return context_; } |
protected: |
RenderWidgetFullscreenPepper(RenderThreadBase* render_thread, |
@@ -52,16 +55,36 @@ class RenderWidgetFullscreenPepper : public RenderWidgetFullscreen { |
TransportDIB** dib, |
gfx::Rect* location, |
gfx::Rect* clip); |
+ virtual void OnResize(const gfx::Size& new_size, |
+ const gfx::Rect& resizer_rect); |
// RenderWidgetFullscreen API. |
virtual WebKit::WebWidget* CreateWebWidget(); |
private: |
+ // Creates the GL context for compositing. |
+ void CreateContext(); |
+ |
+ // Destroys the GL context for compositing. |
+ void DestroyContext(); |
+ |
+ // Initialize the GL states and resources for compositing. |
+ bool InitContext(); |
+ |
+ // Checks (and returns) whether accelerated compositing should be on or off, |
+ // and notify the browser. |
+ bool CheckCompositing(); |
+ |
// The plugin instance this widget wraps. |
webkit::ppapi::PluginInstance* plugin_; |
- // The FullscreenContainer that the plugin instance can callback into. |
- scoped_ptr<webkit::ppapi::FullscreenContainer> container_; |
+#if defined(OS_MACOSX) |
+ gfx::PluginWindowHandle plugin_handle_; |
+#endif |
+ // GL context for compositing. |
+ ggl::Context* context_; |
+ unsigned int buffer_; |
+ unsigned int program_; |
DISALLOW_COPY_AND_ASSIGN(RenderWidgetFullscreenPepper); |
}; |