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

Side by Side Diff: webkit/plugins/ppapi/ppapi_plugin_instance.cc

Issue 7714017: Reimplement the Pepper fullscreen API to use webkitRequestFullScreen and friends. (Closed) Base URL: ssh://matter.syd/usr/local/google/chromium2/src@master
Patch Set: 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
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 "webkit/plugins/ppapi/ppapi_plugin_instance.h" 5 #include "webkit/plugins/ppapi/ppapi_plugin_instance.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginContainer.h" 43 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginContainer.h"
44 #include "third_party/WebKit/Source/WebKit/chromium/public/WebRect.h" 44 #include "third_party/WebKit/Source/WebKit/chromium/public/WebRect.h"
45 #include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" 45 #include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h"
46 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURL.h" 46 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURL.h"
47 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURLRequest.h" 47 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURLRequest.h"
48 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" 48 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
49 #include "ui/gfx/rect.h" 49 #include "ui/gfx/rect.h"
50 #include "ui/gfx/skia_util.h" 50 #include "ui/gfx/skia_util.h"
51 #include "webkit/plugins/ppapi/common.h" 51 #include "webkit/plugins/ppapi/common.h"
52 #include "webkit/plugins/ppapi/event_conversion.h" 52 #include "webkit/plugins/ppapi/event_conversion.h"
53 #include "webkit/plugins/ppapi/fullscreen_container.h"
54 #include "webkit/plugins/ppapi/message_channel.h" 53 #include "webkit/plugins/ppapi/message_channel.h"
55 #include "webkit/plugins/ppapi/npapi_glue.h" 54 #include "webkit/plugins/ppapi/npapi_glue.h"
56 #include "webkit/plugins/ppapi/plugin_delegate.h" 55 #include "webkit/plugins/ppapi/plugin_delegate.h"
57 #include "webkit/plugins/ppapi/plugin_module.h" 56 #include "webkit/plugins/ppapi/plugin_module.h"
58 #include "webkit/plugins/ppapi/plugin_object.h" 57 #include "webkit/plugins/ppapi/plugin_object.h"
59 #include "webkit/plugins/ppapi/ppb_buffer_impl.h" 58 #include "webkit/plugins/ppapi/ppb_buffer_impl.h"
60 #include "webkit/plugins/ppapi/ppb_graphics_2d_impl.h" 59 #include "webkit/plugins/ppapi/ppb_graphics_2d_impl.h"
61 #include "webkit/plugins/ppapi/ppb_graphics_3d_impl.h" 60 #include "webkit/plugins/ppapi/ppb_graphics_3d_impl.h"
62 #include "webkit/plugins/ppapi/ppb_image_data_impl.h" 61 #include "webkit/plugins/ppapi/ppb_image_data_impl.h"
63 #include "webkit/plugins/ppapi/ppb_input_event_impl.h" 62 #include "webkit/plugins/ppapi/ppb_input_event_impl.h"
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 plugin_private_interface_(NULL), 222 plugin_private_interface_(NULL),
224 plugin_pdf_interface_(NULL), 223 plugin_pdf_interface_(NULL),
225 plugin_policy_updated_interface_(NULL), 224 plugin_policy_updated_interface_(NULL),
226 plugin_selection_interface_(NULL), 225 plugin_selection_interface_(NULL),
227 plugin_zoom_interface_(NULL), 226 plugin_zoom_interface_(NULL),
228 checked_for_plugin_input_event_interface_(false), 227 checked_for_plugin_input_event_interface_(false),
229 checked_for_plugin_messaging_interface_(false), 228 checked_for_plugin_messaging_interface_(false),
230 plugin_print_interface_(NULL), 229 plugin_print_interface_(NULL),
231 plugin_graphics_3d_interface_(NULL), 230 plugin_graphics_3d_interface_(NULL),
232 always_on_top_(false), 231 always_on_top_(false),
233 fullscreen_container_(NULL), 232 desired_fullscreen_state_(false),
234 fullscreen_(false), 233 fullscreen_(false),
235 message_channel_(NULL), 234 message_channel_(NULL),
236 sad_plugin_(NULL), 235 sad_plugin_(NULL),
237 input_event_mask_(0), 236 input_event_mask_(0),
238 filtered_input_event_mask_(0) { 237 filtered_input_event_mask_(0) {
239 pp_instance_ = ResourceTracker::Get()->AddInstance(this); 238 pp_instance_ = ResourceTracker::Get()->AddInstance(this);
240 239
241 memset(&current_print_settings_, 0, sizeof(current_print_settings_)); 240 memset(&current_print_settings_, 0, sizeof(current_print_settings_));
242 DCHECK(delegate); 241 DCHECK(delegate);
243 module_->InstanceCreated(this); 242 module_->InstanceCreated(this);
(...skipping 23 matching lines...) Expand all
267 // account that the plugin may use Var to remove the <embed> from the DOM, which 266 // account that the plugin may use Var to remove the <embed> from the DOM, which
268 // will make the WebPluginImpl drop its reference, usually the last one. If a 267 // will make the WebPluginImpl drop its reference, usually the last one. If a
269 // method needs to access a member of the instance after the call has returned, 268 // method needs to access a member of the instance after the call has returned,
270 // then it needs to keep its own reference on the stack. 269 // then it needs to keep its own reference on the stack.
271 270
272 void PluginInstance::Delete() { 271 void PluginInstance::Delete() {
273 // Keep a reference on the stack. See NOTE above. 272 // Keep a reference on the stack. See NOTE above.
274 scoped_refptr<PluginInstance> ref(this); 273 scoped_refptr<PluginInstance> ref(this);
275 instance_interface_->DidDestroy(pp_instance()); 274 instance_interface_->DidDestroy(pp_instance());
276 275
277 if (fullscreen_container_) {
278 fullscreen_container_->Destroy();
279 fullscreen_container_ = NULL;
280 }
281 container_ = NULL; 276 container_ = NULL;
282 } 277 }
283 278
284 void PluginInstance::Paint(WebCanvas* canvas, 279 void PluginInstance::Paint(WebCanvas* canvas,
285 const gfx::Rect& plugin_rect, 280 const gfx::Rect& plugin_rect,
286 const gfx::Rect& paint_rect) { 281 const gfx::Rect& paint_rect) {
287 if (module()->is_crashed()) { 282 if (module()->is_crashed()) {
288 // Crashed plugin painting. 283 // Crashed plugin painting.
289 if (!sad_plugin_) // Lazily initialize bitmap. 284 if (!sad_plugin_) // Lazily initialize bitmap.
290 sad_plugin_ = delegate_->GetSadPluginBitmap(); 285 sad_plugin_ = delegate_->GetSadPluginBitmap();
291 if (sad_plugin_) 286 if (sad_plugin_)
292 webkit::PaintSadPlugin(canvas, plugin_rect, *sad_plugin_); 287 webkit::PaintSadPlugin(canvas, plugin_rect, *sad_plugin_);
293 return; 288 return;
294 } 289 }
295 290
296 if (GetBoundGraphics2D()) 291 if (GetBoundGraphics2D())
297 GetBoundGraphics2D()->Paint(canvas, plugin_rect, paint_rect); 292 GetBoundGraphics2D()->Paint(canvas, plugin_rect, paint_rect);
298 } 293 }
299 294
300 void PluginInstance::InvalidateRect(const gfx::Rect& rect) { 295 void PluginInstance::InvalidateRect(const gfx::Rect& rect) {
301 if (fullscreen_container_) { 296 if (!container_ || position_.IsEmpty())
302 if (rect.IsEmpty()) 297 return; // Nothing to do.
303 fullscreen_container_->Invalidate(); 298 if (rect.IsEmpty())
304 else 299 container_->invalidate();
305 fullscreen_container_->InvalidateRect(rect); 300 else
301 container_->invalidateRect(rect);
302 }
303
304 void PluginInstance::ScrollRect(int dx, int dy, const gfx::Rect& rect) {
305 if (full_frame_) {
306 container_->scrollRect(dx, dy, rect);
306 } else { 307 } else {
307 if (!container_ || position_.IsEmpty()) 308 // Can't do optimized scrolling since there could be other elements on top
308 return; // Nothing to do. 309 // of us.
309 if (rect.IsEmpty()) 310 InvalidateRect(rect);
310 container_->invalidate();
311 else
312 container_->invalidateRect(rect);
313 } 311 }
314 } 312 }
315 313
316 void PluginInstance::ScrollRect(int dx, int dy, const gfx::Rect& rect) {
317 if (fullscreen_container_) {
318 fullscreen_container_->ScrollRect(dx, dy, rect);
319 } else {
320 if (full_frame_) {
321 container_->scrollRect(dx, dy, rect);
322 } else {
323 // Can't do optimized scrolling since there could be other elements on top
324 // of us.
325 InvalidateRect(rect);
326 }
327 }
328 }
329
330 unsigned PluginInstance::GetBackingTextureId() { 314 unsigned PluginInstance::GetBackingTextureId() {
331 if (GetBoundGraphics3D()) 315 if (GetBoundGraphics3D())
332 return GetBoundGraphics3D()->GetBackingTextureId(); 316 return GetBoundGraphics3D()->GetBackingTextureId();
333 else if (GetBoundSurface3D()) 317 else if (GetBoundSurface3D())
334 return GetBoundSurface3D()->GetBackingTextureId(); 318 return GetBoundSurface3D()->GetBackingTextureId();
335 319
336 return 0; 320 return 0;
337 } 321 }
338 322
339 void PluginInstance::CommitBackingTexture() { 323 void PluginInstance::CommitBackingTexture() {
340 if (fullscreen_container_) 324 container_->commitBackingTexture();
341 fullscreen_container_->Invalidate();
342 else
343 container_->commitBackingTexture();
344 } 325 }
345 326
346 void PluginInstance::InstanceCrashed() { 327 void PluginInstance::InstanceCrashed() {
347 // Force free all resources and vars. 328 // Force free all resources and vars.
348 ResourceTracker::Get()->InstanceCrashed(pp_instance()); 329 ResourceTracker::Get()->InstanceCrashed(pp_instance());
349 330
350 // Free any associated graphics. 331 // Free any associated graphics.
351 SetFullscreen(false, false); 332 SetFullscreen(false, false);
352 bound_graphics_ = NULL; 333 bound_graphics_ = NULL;
353 InvalidateRect(gfx::Rect()); 334 InvalidateRect(gfx::Rect());
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
496 477
497 // If the plugin supports the private instance interface, try to retrieve its 478 // If the plugin supports the private instance interface, try to retrieve its
498 // instance object. 479 // instance object.
499 if (LoadPrivateInterface()) 480 if (LoadPrivateInterface())
500 return plugin_private_interface_->GetInstanceObject(pp_instance()); 481 return plugin_private_interface_->GetInstanceObject(pp_instance());
501 return PP_MakeUndefined(); 482 return PP_MakeUndefined();
502 } 483 }
503 484
504 void PluginInstance::ViewChanged(const gfx::Rect& position, 485 void PluginInstance::ViewChanged(const gfx::Rect& position,
505 const gfx::Rect& clip) { 486 const gfx::Rect& clip) {
506 fullscreen_ = (fullscreen_container_ != NULL); 487 fullscreen_ = desired_fullscreen_state_;
507 position_ = position; 488 position_ = position;
508 489
509 if (clip.IsEmpty()) { 490 if (clip.IsEmpty()) {
510 // WebKit can give weird (x,y) positions for empty clip rects (since the 491 // WebKit can give weird (x,y) positions for empty clip rects (since the
511 // position technically doesn't matter). But we want to make these 492 // position technically doesn't matter). But we want to make these
512 // consistent since this is given to the plugin, so force everything to 0 493 // consistent since this is given to the plugin, so force everything to 0
513 // in the "everything is clipped" case. 494 // in the "everything is clipped" case.
514 clip_ = gfx::Rect(); 495 clip_ = gfx::Rect();
515 } else { 496 } else {
516 clip_ = clip; 497 clip_ = clip;
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
768 } 749 }
769 750
770 return !!plugin_zoom_interface_; 751 return !!plugin_zoom_interface_;
771 } 752 }
772 753
773 bool PluginInstance::PluginHasFocus() const { 754 bool PluginInstance::PluginHasFocus() const {
774 return has_webkit_focus_ && has_content_area_focus_; 755 return has_webkit_focus_ && has_content_area_focus_;
775 } 756 }
776 757
777 void PluginInstance::ReportGeometry() { 758 void PluginInstance::ReportGeometry() {
778 // If this call was delayed, we may have transitioned back to fullscreen in 759 if (container_)
779 // the mean time, so only report the geometry if we are actually in normal
780 // mode.
781 if (container_ && !fullscreen_container_)
782 container_->reportGeometry(); 760 container_->reportGeometry();
783 } 761 }
784 762
785 bool PluginInstance::GetPreferredPrintOutputFormat( 763 bool PluginInstance::GetPreferredPrintOutputFormat(
786 PP_PrintOutputFormat_Dev_0_4* format) { 764 PP_PrintOutputFormat_Dev_0_4* format) {
787 // Keep a reference on the stack. See NOTE above. 765 // Keep a reference on the stack. See NOTE above.
788 scoped_refptr<PluginInstance> ref(this); 766 scoped_refptr<PluginInstance> ref(this);
789 if (!LoadPrintInterface()) 767 if (!LoadPrintInterface())
790 return false; 768 return false;
791 if (plugin_print_interface_->QuerySupportedFormats) { 769 if (plugin_print_interface_->QuerySupportedFormats) {
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
947 if (plugin_print_interface_.get()) 925 if (plugin_print_interface_.get())
948 plugin_print_interface_->End(pp_instance()); 926 plugin_print_interface_->End(pp_instance());
949 927
950 memset(&current_print_settings_, 0, sizeof(current_print_settings_)); 928 memset(&current_print_settings_, 0, sizeof(current_print_settings_));
951 #if defined(OS_MACOSX) 929 #if defined(OS_MACOSX)
952 last_printed_page_ = NULL; 930 last_printed_page_ = NULL;
953 #endif // defined(OS_MACOSX) 931 #endif // defined(OS_MACOSX)
954 } 932 }
955 933
956 bool PluginInstance::IsFullscreenOrPending() { 934 bool PluginInstance::IsFullscreenOrPending() {
957 return fullscreen_container_ != NULL; 935 return desired_fullscreen_state_;
958 } 936 }
959 937
960 void PluginInstance::SetFullscreen(bool fullscreen, bool delay_report) { 938 void PluginInstance::SetFullscreen(bool fullscreen, bool delay_report) {
961 // Keep a reference on the stack. See NOTE above. 939 // Keep a reference on the stack. See NOTE above.
962 scoped_refptr<PluginInstance> ref(this); 940 scoped_refptr<PluginInstance> ref(this);
963 941
964 // We check whether we are trying to switch to the state we're already going 942 // We check whether we are trying to switch to the state we're already going
965 // to (i.e. if we're already switching to fullscreen but the fullscreen 943 // to (i.e. if we're already switching to fullscreen but the fullscreen
966 // container isn't ready yet, don't do anything more). 944 // container isn't ready yet, don't do anything more).
967 if (fullscreen == IsFullscreenOrPending()) 945 if (fullscreen == IsFullscreenOrPending())
968 return; 946 return;
969 947
970 BindGraphics(pp_instance(), 0); 948 desired_fullscreen_state_ = fullscreen;
971 VLOG(1) << "Setting fullscreen to " << (fullscreen ? "on" : "off"); 949 delegate_->SetFullscreen(this, fullscreen);
972 if (fullscreen) { 950 if (!delay_report) {
973 DCHECK(!fullscreen_container_); 951 ReportGeometry();
974 fullscreen_container_ = delegate_->CreateFullscreenContainer(this);
975 } else { 952 } else {
976 DCHECK(fullscreen_container_); 953 MessageLoop::current()->PostTask(
977 fullscreen_container_->Destroy();
978 fullscreen_container_ = NULL;
979 fullscreen_ = false;
980 if (!delay_report) {
981 ReportGeometry();
982 } else {
983 MessageLoop::current()->PostTask(
984 FROM_HERE, NewRunnableMethod(this, &PluginInstance::ReportGeometry)); 954 FROM_HERE, NewRunnableMethod(this, &PluginInstance::ReportGeometry));
985 }
986 } 955 }
987 } 956 }
988 957
989 int32_t PluginInstance::Navigate(PPB_URLRequestInfo_Impl* request, 958 int32_t PluginInstance::Navigate(PPB_URLRequestInfo_Impl* request,
990 const char* target, 959 const char* target,
991 bool from_user_action) { 960 bool from_user_action) {
992 if (!container_) 961 if (!container_)
993 return PP_ERROR_FAILED; 962 return PP_ERROR_FAILED;
994 963
995 WebDocument document = container_->element().document(); 964 WebDocument document = container_->element().document();
(...skipping 23 matching lines...) Expand all
1019 if (web_request.httpMethod() != "GET" && 988 if (web_request.httpMethod() != "GET" &&
1020 web_request.httpMethod() != "POST") 989 web_request.httpMethod() != "POST")
1021 return PP_ERROR_BADARGUMENT; 990 return PP_ERROR_BADARGUMENT;
1022 991
1023 WebString target_str = WebString::fromUTF8(target); 992 WebString target_str = WebString::fromUTF8(target);
1024 container_->loadFrameRequest(web_request, target_str, false, NULL); 993 container_->loadFrameRequest(web_request, target_str, false, NULL);
1025 return PP_OK; 994 return PP_OK;
1026 } 995 }
1027 996
1028 PluginDelegate::PlatformContext3D* PluginInstance::CreateContext3D() { 997 PluginDelegate::PlatformContext3D* PluginInstance::CreateContext3D() {
1029 if (fullscreen_container_) 998 return delegate_->CreateContext3D();
1030 return fullscreen_container_->CreateContext3D();
1031 else
1032 return delegate_->CreateContext3D();
1033 } 999 }
1034 1000
1035 bool PluginInstance::PrintPDFOutput(PP_Resource print_output, 1001 bool PluginInstance::PrintPDFOutput(PP_Resource print_output,
1036 WebKit::WebCanvas* canvas) { 1002 WebKit::WebCanvas* canvas) {
1037 ::ppapi::thunk::EnterResourceNoLock<PPB_Buffer_API> enter(print_output, true); 1003 ::ppapi::thunk::EnterResourceNoLock<PPB_Buffer_API> enter(print_output, true);
1038 if (enter.failed()) 1004 if (enter.failed())
1039 return false; 1005 return false;
1040 1006
1041 BufferAutoMapper mapper(enter.object()); 1007 BufferAutoMapper mapper(enter.object());
1042 if (!mapper.data() || !mapper.size()) { 1008 if (!mapper.data() || !mapper.size()) {
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
1292 PPB_Surface3D_Impl* PluginInstance::GetBoundSurface3D() const { 1258 PPB_Surface3D_Impl* PluginInstance::GetBoundSurface3D() const {
1293 if (bound_graphics_.get() == NULL) 1259 if (bound_graphics_.get() == NULL)
1294 return NULL; 1260 return NULL;
1295 1261
1296 if (bound_graphics_->AsPPB_Surface3D_API()) 1262 if (bound_graphics_->AsPPB_Surface3D_API())
1297 return static_cast<PPB_Surface3D_Impl*>(bound_graphics_.get()); 1263 return static_cast<PPB_Surface3D_Impl*>(bound_graphics_.get());
1298 return NULL; 1264 return NULL;
1299 } 1265 }
1300 1266
1301 void PluginInstance::setBackingTextureId(unsigned int id) { 1267 void PluginInstance::setBackingTextureId(unsigned int id) {
1302 // If we have a full-screen container_ then the plugin is fullscreen,
1303 // and the parent context is not the one for the browser page, but for the
1304 // full-screen window, and so the parent texture ID doesn't correspond to
1305 // anything in the page's context.
1306 //
1307 // TODO(alokp): It would be better at some point to have the equivalent
1308 // in the FullscreenContainer so that we don't need to poll
1309 if (fullscreen_container_)
1310 return;
1311
1312 if (container_) 1268 if (container_)
1313 container_->setBackingTextureId(id); 1269 container_->setBackingTextureId(id);
1314 } 1270 }
1315 1271
1316 void PluginInstance::AddPluginObject(PluginObject* plugin_object) { 1272 void PluginInstance::AddPluginObject(PluginObject* plugin_object) {
1317 DCHECK(live_plugin_objects_.find(plugin_object) == 1273 DCHECK(live_plugin_objects_.find(plugin_object) ==
1318 live_plugin_objects_.end()); 1274 live_plugin_objects_.end());
1319 live_plugin_objects_.insert(plugin_object); 1275 live_plugin_objects_.insert(plugin_object);
1320 } 1276 }
1321 1277
(...skipping 25 matching lines...) Expand all
1347 bound_graphics_ = NULL; 1303 bound_graphics_ = NULL;
1348 } 1304 }
1349 1305
1350 // Special-case clearing the current device. 1306 // Special-case clearing the current device.
1351 if (!device) { 1307 if (!device) {
1352 setBackingTextureId(0); 1308 setBackingTextureId(0);
1353 InvalidateRect(gfx::Rect()); 1309 InvalidateRect(gfx::Rect());
1354 return PP_TRUE; 1310 return PP_TRUE;
1355 } 1311 }
1356 1312
1357 // Refuse to bind if we're transitioning to fullscreen.
1358 if (fullscreen_container_ && !fullscreen_)
1359 return PP_FALSE;
1360
1361 EnterResourceNoLock<PPB_Graphics2D_API> enter_2d(device, false); 1313 EnterResourceNoLock<PPB_Graphics2D_API> enter_2d(device, false);
1362 PPB_Graphics2D_Impl* graphics_2d = enter_2d.succeeded() ? 1314 PPB_Graphics2D_Impl* graphics_2d = enter_2d.succeeded() ?
1363 static_cast<PPB_Graphics2D_Impl*>(enter_2d.object()) : NULL; 1315 static_cast<PPB_Graphics2D_Impl*>(enter_2d.object()) : NULL;
1364 EnterResourceNoLock<PPB_Graphics3D_API> enter_3d(device, false); 1316 EnterResourceNoLock<PPB_Graphics3D_API> enter_3d(device, false);
1365 PPB_Graphics3D_Impl* graphics_3d = enter_3d.succeeded() ? 1317 PPB_Graphics3D_Impl* graphics_3d = enter_3d.succeeded() ?
1366 static_cast<PPB_Graphics3D_Impl*>(enter_3d.object()) : NULL; 1318 static_cast<PPB_Graphics3D_Impl*>(enter_3d.object()) : NULL;
1367 EnterResourceNoLock<PPB_Surface3D_API> enter_surface_3d(device, false); 1319 EnterResourceNoLock<PPB_Surface3D_API> enter_surface_3d(device, false);
1368 PPB_Surface3D_Impl* surface_3d = enter_surface_3d.succeeded() ? 1320 PPB_Surface3D_Impl* surface_3d = enter_surface_3d.succeeded() ?
1369 static_cast<PPB_Surface3D_Impl*>(enter_surface_3d.object()) : NULL; 1321 static_cast<PPB_Surface3D_Impl*>(enter_surface_3d.object()) : NULL;
1370 1322
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
1538 void PluginInstance::PostMessage(PP_Instance instance, PP_Var message) { 1490 void PluginInstance::PostMessage(PP_Instance instance, PP_Var message) {
1539 message_channel_->PostMessageToJavaScript(message); 1491 message_channel_->PostMessageToJavaScript(message);
1540 } 1492 }
1541 1493
1542 void PluginInstance::SubscribeToPolicyUpdates(PP_Instance instance) { 1494 void PluginInstance::SubscribeToPolicyUpdates(PP_Instance instance) {
1543 delegate()->SubscribeToPolicyUpdates(this); 1495 delegate()->SubscribeToPolicyUpdates(this);
1544 } 1496 }
1545 1497
1546 void PluginInstance::DoSetCursor(WebCursorInfo* cursor) { 1498 void PluginInstance::DoSetCursor(WebCursorInfo* cursor) {
1547 cursor_.reset(cursor); 1499 cursor_.reset(cursor);
1548 if (fullscreen_container_)
1549 fullscreen_container_->DidChangeCursor(*cursor);
1550 } 1500 }
1551 1501
1552 } // namespace ppapi 1502 } // namespace ppapi
1553 } // namespace webkit 1503 } // namespace webkit
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698