Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(178)

Unified Diff: content/renderer/render_widget_fullscreen_pepper.cc

Issue 8198013: Fix the bug that closing a tab which owns a fullscreen Flash widget causes crash. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/render_widget_fullscreen_pepper.h ('k') | webkit/plugins/ppapi/ppapi_plugin_instance.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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() {
« no previous file with comments | « content/renderer/render_widget_fullscreen_pepper.h ('k') | webkit/plugins/ppapi/ppapi_plugin_instance.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698