Chromium Code Reviews| Index: content/renderer/render_widget_fullscreen_pepper.cc |
| diff --git a/content/renderer/render_widget_fullscreen_pepper.cc b/content/renderer/render_widget_fullscreen_pepper.cc |
| index 2a71e50d4594730385bc2a5154b27e3c0bbab76d..44106f312a0922f660ea304573216b5270ca7d5e 100644 |
| --- a/content/renderer/render_widget_fullscreen_pepper.cc |
| +++ b/content/renderer/render_widget_fullscreen_pepper.cc |
| @@ -35,10 +35,8 @@ namespace { |
| // WebWidget that simply wraps the pepper plugin. |
| class PepperWidget : public WebWidget { |
| public: |
| - PepperWidget(webkit::ppapi::PluginInstance* plugin, |
| - RenderWidgetFullscreenPepper* widget) |
| - : plugin_(plugin), |
| - widget_(widget) { |
| + explicit PepperWidget(RenderWidgetFullscreenPepper* widget) |
| + : widget_(widget) { |
| } |
| virtual ~PepperWidget() {} |
| @@ -56,9 +54,12 @@ class PepperWidget : public WebWidget { |
| } |
| virtual void resize(const WebSize& size) { |
| + if (!widget_->plugin()) |
| + return; |
| + |
| size_ = size; |
| WebRect plugin_rect(0, 0, size_.width, size_.height); |
| - plugin_->ViewChanged(plugin_rect, plugin_rect); |
| + widget_->plugin()->ViewChanged(plugin_rect, plugin_rect); |
| widget_->Invalidate(); |
| } |
| @@ -72,15 +73,21 @@ class PepperWidget : public WebWidget { |
| } |
| virtual void paint(WebCanvas* canvas, const WebRect& rect) { |
| + if (!widget_->plugin()) |
| + return; |
| + |
| WebRect plugin_rect(0, 0, size_.width, size_.height); |
| - plugin_->Paint(canvas, plugin_rect, rect); |
| + widget_->plugin()->Paint(canvas, plugin_rect, rect); |
| } |
| virtual void composite(bool finish) { |
| + if (!widget_->plugin()) |
| + return; |
| + |
| RendererGLContext* context = widget_->context(); |
| DCHECK(context); |
| gpu::gles2::GLES2Implementation* gl = context->GetImplementation(); |
| - unsigned int texture = plugin_->GetBackingTextureId(); |
| + unsigned int texture = widget_->plugin()->GetBackingTextureId(); |
| gl->BindTexture(GL_TEXTURE_2D, texture); |
| gl->DrawArrays(GL_TRIANGLES, 0, 3); |
| widget_->SwapBuffers(); |
| @@ -91,10 +98,13 @@ class PepperWidget : public WebWidget { |
| } |
| virtual bool handleInputEvent(const WebInputEvent& event) { |
| + if (!widget_->plugin()) |
| + return false; |
| + |
| // This cursor info is ignored, we always set the cursor directly from |
| // RenderWidgetFullscreenPepper::DidChangeCursor. |
| WebCursorInfo cursor; |
| - bool result = plugin_->HandleInputEvent(event, &cursor); |
| + bool result = widget_->plugin()->HandleInputEvent(event, &cursor); |
| // For normal web pages, WebViewImpl does input event translations and |
| // generates context menu events. Since we don't have a WebView, we need to |
| @@ -123,7 +133,7 @@ class PepperWidget : public WebWidget { |
| if (send_context_menu_event) { |
| WebMouseEvent context_menu_event(mouse_event); |
| context_menu_event.type = WebInputEvent::ContextMenu; |
| - plugin_->HandleInputEvent(context_menu_event, &cursor); |
| + widget_->plugin()->HandleInputEvent(context_menu_event, &cursor); |
| } |
| } |
| return result; |
| @@ -178,11 +188,11 @@ class PepperWidget : public WebWidget { |
| } |
| virtual bool isAcceleratedCompositingActive() const { |
| - return widget_->context() && (plugin_->GetBackingTextureId() != 0); |
| + return widget_->context() && widget_->plugin() && |
| + (widget_->plugin()->GetBackingTextureId() != 0); |
|
piman
2011/10/07 22:36:22
nit: indentation (4 spaces).
yzshen1
2011/10/07 22:48:14
Done.
|
| } |
| private: |
| - scoped_refptr<webkit::ppapi::PluginInstance> plugin_; |
| RenderWidgetFullscreenPepper* widget_; |
| WebSize size_; |
| @@ -321,7 +331,7 @@ void RenderWidgetFullscreenPepper::OnResize(const gfx::Size& size, |
| } |
| WebWidget* RenderWidgetFullscreenPepper::CreateWebWidget() { |
| - return new PepperWidget(plugin_, this); |
| + return new PepperWidget(this); |
| } |
| bool RenderWidgetFullscreenPepper::SupportsAsynchronousSwapBuffers() { |