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

Side by Side Diff: content/renderer/render_widget_fullscreen_pepper.cc

Issue 7670008: Fix cursor in fullscreen pepper (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: alpha Created 9 years, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/render_widget_fullscreen_pepper.h" 5 #include "content/renderer/render_widget_fullscreen_pepper.h"
6 6
7 #include "base/message_loop.h" 7 #include "base/message_loop.h"
8 #include "content/common/view_messages.h" 8 #include "content/common/view_messages.h"
9 #include "content/renderer/gpu/gpu_channel_host.h" 9 #include "content/renderer/gpu/gpu_channel_host.h"
10 #include "content/renderer/pepper_platform_context_3d_impl.h" 10 #include "content/renderer/pepper_platform_context_3d_impl.h"
(...skipping 20 matching lines...) Expand all
31 using WebKit::WebWidget; 31 using WebKit::WebWidget;
32 32
33 namespace { 33 namespace {
34 34
35 // WebWidget that simply wraps the pepper plugin. 35 // WebWidget that simply wraps the pepper plugin.
36 class PepperWidget : public WebWidget { 36 class PepperWidget : public WebWidget {
37 public: 37 public:
38 PepperWidget(webkit::ppapi::PluginInstance* plugin, 38 PepperWidget(webkit::ppapi::PluginInstance* plugin,
39 RenderWidgetFullscreenPepper* widget) 39 RenderWidgetFullscreenPepper* widget)
40 : plugin_(plugin), 40 : plugin_(plugin),
41 widget_(widget), 41 widget_(widget) {
42 cursor_(WebCursorInfo::TypePointer) {
43 } 42 }
44 43
45 virtual ~PepperWidget() {} 44 virtual ~PepperWidget() {}
46 45
47 // WebWidget API 46 // WebWidget API
48 virtual void close() { 47 virtual void close() {
49 delete this; 48 delete this;
50 } 49 }
51 50
52 virtual WebSize size() { 51 virtual WebSize size() {
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 gl->BindTexture(GL_TEXTURE_2D, texture); 89 gl->BindTexture(GL_TEXTURE_2D, texture);
91 gl->DrawArrays(GL_TRIANGLES, 0, 3); 90 gl->DrawArrays(GL_TRIANGLES, 0, 3);
92 widget_->SwapBuffers(); 91 widget_->SwapBuffers();
93 } 92 }
94 93
95 virtual void themeChanged() { 94 virtual void themeChanged() {
96 NOTIMPLEMENTED(); 95 NOTIMPLEMENTED();
97 } 96 }
98 97
99 virtual bool handleInputEvent(const WebInputEvent& event) { 98 virtual bool handleInputEvent(const WebInputEvent& event) {
100 bool result = plugin_->HandleInputEvent(event, &cursor_); 99 // This cursor info is ignored, we always set the cursor directly from
100 // RenderWidgetFullscreenPepper::DidChangeCursor.
101 WebCursorInfo cursor;
102 bool result = plugin_->HandleInputEvent(event, &cursor);
101 103
102 // For normal web pages, WebViewImpl does input event translations and 104 // For normal web pages, WebViewImpl does input event translations and
103 // generates context menu events. Since we don't have a WebView, we need to 105 // generates context menu events. Since we don't have a WebView, we need to
104 // do the necessary translation ourselves. 106 // do the necessary translation ourselves.
105 if (WebInputEvent::isMouseEventType(event.type)) { 107 if (WebInputEvent::isMouseEventType(event.type)) {
106 const WebMouseEvent& mouse_event = 108 const WebMouseEvent& mouse_event =
107 reinterpret_cast<const WebMouseEvent&>(event); 109 reinterpret_cast<const WebMouseEvent&>(event);
108 bool send_context_menu_event = false; 110 bool send_context_menu_event = false;
109 // On Mac/Linux, we handle it on mouse down. 111 // On Mac/Linux, we handle it on mouse down.
110 // On Windows, we handle it on mouse up. 112 // On Windows, we handle it on mouse up.
111 #if defined(OS_WIN) 113 #if defined(OS_WIN)
112 send_context_menu_event = 114 send_context_menu_event =
113 mouse_event.type == WebInputEvent::MouseUp && 115 mouse_event.type == WebInputEvent::MouseUp &&
114 mouse_event.button == WebMouseEvent::ButtonRight; 116 mouse_event.button == WebMouseEvent::ButtonRight;
115 #elif defined(OS_MACOSX) 117 #elif defined(OS_MACOSX)
116 send_context_menu_event = 118 send_context_menu_event =
117 mouse_event.type == WebInputEvent::MouseDown && 119 mouse_event.type == WebInputEvent::MouseDown &&
118 (mouse_event.button == WebMouseEvent::ButtonRight || 120 (mouse_event.button == WebMouseEvent::ButtonRight ||
119 (mouse_event.button == WebMouseEvent::ButtonLeft && 121 (mouse_event.button == WebMouseEvent::ButtonLeft &&
120 mouse_event.modifiers & WebMouseEvent::ControlKey)); 122 mouse_event.modifiers & WebMouseEvent::ControlKey));
121 #else 123 #else
122 send_context_menu_event = 124 send_context_menu_event =
123 mouse_event.type == WebInputEvent::MouseDown && 125 mouse_event.type == WebInputEvent::MouseDown &&
124 mouse_event.button == WebMouseEvent::ButtonRight; 126 mouse_event.button == WebMouseEvent::ButtonRight;
125 #endif 127 #endif
126 if (send_context_menu_event) { 128 if (send_context_menu_event) {
127 WebMouseEvent context_menu_event(mouse_event); 129 WebMouseEvent context_menu_event(mouse_event);
128 context_menu_event.type = WebInputEvent::ContextMenu; 130 context_menu_event.type = WebInputEvent::ContextMenu;
129 plugin_->HandleInputEvent(context_menu_event, &cursor_); 131 plugin_->HandleInputEvent(context_menu_event, &cursor);
130 } 132 }
131 } 133 }
132 return result; 134 return result;
133 } 135 }
134 136
135 virtual void mouseCaptureLost() { 137 virtual void mouseCaptureLost() {
136 NOTIMPLEMENTED(); 138 NOTIMPLEMENTED();
137 } 139 }
138 140
139 virtual void setFocus(bool focus) { 141 virtual void setFocus(bool focus) {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 } 183 }
182 184
183 virtual bool isAcceleratedCompositingActive() const { 185 virtual bool isAcceleratedCompositingActive() const {
184 return widget_->context() && (plugin_->GetBackingTextureId() != 0); 186 return widget_->context() && (plugin_->GetBackingTextureId() != 0);
185 } 187 }
186 188
187 private: 189 private:
188 scoped_refptr<webkit::ppapi::PluginInstance> plugin_; 190 scoped_refptr<webkit::ppapi::PluginInstance> plugin_;
189 RenderWidgetFullscreenPepper* widget_; 191 RenderWidgetFullscreenPepper* widget_;
190 WebSize size_; 192 WebSize size_;
191 WebCursorInfo cursor_;
192 193
193 DISALLOW_COPY_AND_ASSIGN(PepperWidget); 194 DISALLOW_COPY_AND_ASSIGN(PepperWidget);
194 }; 195 };
195 196
196 void DestroyContext(RendererGLContext* context, GLuint program, GLuint buffer) { 197 void DestroyContext(RendererGLContext* context, GLuint program, GLuint buffer) {
197 DCHECK(context); 198 DCHECK(context);
198 gpu::gles2::GLES2Implementation* gl = context->GetImplementation(); 199 gpu::gles2::GLES2Implementation* gl = context->GetImplementation();
199 if (program) 200 if (program)
200 gl->DeleteProgram(program); 201 gl->DeleteProgram(program);
201 if (buffer) 202 if (buffer)
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 } 256 }
256 } 257 }
257 258
258 void RenderWidgetFullscreenPepper::Destroy() { 259 void RenderWidgetFullscreenPepper::Destroy() {
259 // This function is called by the plugin instance as it's going away, so reset 260 // This function is called by the plugin instance as it's going away, so reset
260 // plugin_ to NULL to avoid calling into a dangling pointer e.g. on Close(). 261 // plugin_ to NULL to avoid calling into a dangling pointer e.g. on Close().
261 plugin_ = NULL; 262 plugin_ = NULL;
262 Send(new ViewHostMsg_Close(routing_id_)); 263 Send(new ViewHostMsg_Close(routing_id_));
263 } 264 }
264 265
266 void RenderWidgetFullscreenPepper::DidChangeCursor(
267 const WebKit::WebCursorInfo& cursor) {
268 didChangeCursor(cursor);
269 }
270
265 webkit::ppapi::PluginDelegate::PlatformContext3D* 271 webkit::ppapi::PluginDelegate::PlatformContext3D*
266 RenderWidgetFullscreenPepper::CreateContext3D() { 272 RenderWidgetFullscreenPepper::CreateContext3D() {
267 if (!context_) { 273 if (!context_) {
268 CreateContext(); 274 CreateContext();
269 } 275 }
270 if (!context_) 276 if (!context_)
271 return NULL; 277 return NULL;
272 return new PlatformContext3DImpl(context_); 278 return new PlatformContext3DImpl(context_);
273 } 279 }
274 280
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
487 NewRunnableFunction(DestroyContext, context_, program_, buffer_)); 493 NewRunnableFunction(DestroyContext, context_, program_, buffer_));
488 context_ = NULL; 494 context_ = NULL;
489 program_ = 0; 495 program_ = 0;
490 buffer_ = 0; 496 buffer_ = 0;
491 OnSwapBuffersAborted(); 497 OnSwapBuffersAborted();
492 } 498 }
493 499
494 void RenderWidgetFullscreenPepper::OnSwapBuffersCompleteByRendererGLContext() { 500 void RenderWidgetFullscreenPepper::OnSwapBuffersCompleteByRendererGLContext() {
495 OnSwapBuffersComplete(); 501 OnSwapBuffersComplete();
496 } 502 }
OLDNEW
« no previous file with comments | « content/renderer/render_widget_fullscreen_pepper.h ('k') | webkit/plugins/ppapi/fullscreen_container.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698