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

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

Issue 7206016: Convert most remaining resources to use the API/thunk system. The significant (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 6 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 "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 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 #if defined(OS_WIN) 78 #if defined(OS_WIN)
79 #include "skia/ext/vector_platform_device_emf_win.h" 79 #include "skia/ext/vector_platform_device_emf_win.h"
80 #include "ui/gfx/codec/jpeg_codec.h" 80 #include "ui/gfx/codec/jpeg_codec.h"
81 #include "ui/gfx/gdi_util.h" 81 #include "ui/gfx/gdi_util.h"
82 #endif 82 #endif
83 83
84 #if defined(OS_MACOSX) && defined(USE_SKIA) 84 #if defined(OS_MACOSX) && defined(USE_SKIA)
85 #include "skia/ext/skia_utils_mac.h" 85 #include "skia/ext/skia_utils_mac.h"
86 #endif 86 #endif
87 87
88 using ::ppapi::thunk::EnterResourceNoLock; 88 using ppapi::thunk::EnterResourceNoLock;
89 using ::ppapi::thunk::PPB_Buffer_API; 89 using ppapi::thunk::PPB_Buffer_API;
90 using ::ppapi::thunk::PPB_Graphics2D_API; 90 using ppapi::thunk::PPB_Graphics2D_API;
91 using ::ppapi::thunk::PPB_Instance_FunctionAPI; 91 using ppapi::thunk::PPB_ImageData_API;
92 using ppapi::thunk::PPB_Instance_FunctionAPI;
93 using ppapi::thunk::PPB_Surface3D_API;
92 using WebKit::WebBindings; 94 using WebKit::WebBindings;
93 using WebKit::WebCanvas; 95 using WebKit::WebCanvas;
94 using WebKit::WebCursorInfo; 96 using WebKit::WebCursorInfo;
95 using WebKit::WebDocument; 97 using WebKit::WebDocument;
96 using WebKit::WebFrame; 98 using WebKit::WebFrame;
97 using WebKit::WebInputEvent; 99 using WebKit::WebInputEvent;
98 using WebKit::WebPluginContainer; 100 using WebKit::WebPluginContainer;
99 using WebKit::WebString; 101 using WebKit::WebString;
100 using WebKit::WebURLRequest; 102 using WebKit::WebURLRequest;
101 using WebKit::WebView; 103 using WebKit::WebView;
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 PP_Resource custom_image, 395 PP_Resource custom_image,
394 const PP_Point* hot_spot) { 396 const PP_Point* hot_spot) {
395 if (type != PP_CURSORTYPE_CUSTOM) { 397 if (type != PP_CURSORTYPE_CUSTOM) {
396 cursor_.reset(new WebCursorInfo(static_cast<WebCursorInfo::Type>(type))); 398 cursor_.reset(new WebCursorInfo(static_cast<WebCursorInfo::Type>(type)));
397 return true; 399 return true;
398 } 400 }
399 401
400 if (!hot_spot) 402 if (!hot_spot)
401 return false; 403 return false;
402 404
403 scoped_refptr<PPB_ImageData_Impl> image_data( 405 EnterResourceNoLock<PPB_ImageData_API> enter(custom_image, true);
404 Resource::GetAs<PPB_ImageData_Impl>(custom_image)); 406 if (enter.failed())
405 if (!image_data.get())
406 return false; 407 return false;
408 PPB_ImageData_Impl* image_data =
409 static_cast<PPB_ImageData_Impl*>(enter.object());
407 410
408 if (image_data->format() != PPB_ImageData_Impl::GetNativeImageDataFormat()) { 411 if (image_data->format() != PPB_ImageData_Impl::GetNativeImageDataFormat()) {
409 // TODO(yzshen): Handle the case that the image format is different from the 412 // TODO(yzshen): Handle the case that the image format is different from the
410 // native format. 413 // native format.
411 NOTIMPLEMENTED(); 414 NOTIMPLEMENTED();
412 return false; 415 return false;
413 } 416 }
414 417
415 ImageDataAutoMapper auto_mapper(image_data); 418 ImageDataAutoMapper auto_mapper(image_data);
416 if (!auto_mapper.is_valid()) 419 if (!auto_mapper.is_valid())
(...skipping 712 matching lines...) Expand 10 before | Expand all | Expand 10 after
1129 size_in_pixels.height(), true, false, true, true); 1132 size_in_pixels.height(), true, false, true, true);
1130 skia::EndPlatformPaint(canvas); 1133 skia::EndPlatformPaint(canvas);
1131 } 1134 }
1132 #endif // defined(OS_WIN) 1135 #endif // defined(OS_WIN)
1133 1136
1134 return ret; 1137 return ret;
1135 } 1138 }
1136 1139
1137 bool PluginInstance::PrintRasterOutput(PP_Resource print_output, 1140 bool PluginInstance::PrintRasterOutput(PP_Resource print_output,
1138 WebKit::WebCanvas* canvas) { 1141 WebKit::WebCanvas* canvas) {
1139 scoped_refptr<PPB_ImageData_Impl> image( 1142 EnterResourceNoLock<PPB_ImageData_API> enter(print_output, true);
1140 Resource::GetAs<PPB_ImageData_Impl>(print_output)); 1143 if (enter.failed())
1141 if (!image.get() || !image->is_mapped()) 1144 return false;
1145 PPB_ImageData_Impl* image =
1146 static_cast<PPB_ImageData_Impl*>(enter.object());
1147
1148 // TODO(brettw) this should not require the image to be mapped. It should
1149 // instead map on demand. The DCHECK here is to remind you if you see the
1150 // assert fire, fix the bug rather than mapping the data.
1151 DCHECK(image->is_mapped());
1152 if (!image->is_mapped())
1142 return false; 1153 return false;
1143 1154
1144 const SkBitmap* bitmap = image->GetMappedBitmap(); 1155 const SkBitmap* bitmap = image->GetMappedBitmap();
1145 if (!bitmap) 1156 if (!bitmap)
1146 return false; 1157 return false;
1147 1158
1148 // Draw the printed image into the supplied canvas. 1159 // Draw the printed image into the supplied canvas.
1149 SkIRect src_rect; 1160 SkIRect src_rect;
1150 src_rect.set(0, 0, bitmap->width(), bitmap->height()); 1161 src_rect.set(0, 0, bitmap->width(), bitmap->height());
1151 SkRect dest_rect; 1162 SkRect dest_rect;
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
1271 1282
1272 CGContextDrawImage(canvas, bounds, image); 1283 CGContextDrawImage(canvas, bounds, image);
1273 CGContextRestoreGState(canvas); 1284 CGContextRestoreGState(canvas);
1274 } 1285 }
1275 #endif // defined(OS_MACOSX) && !defined(USE_SKIA) 1286 #endif // defined(OS_MACOSX) && !defined(USE_SKIA)
1276 1287
1277 PPB_Graphics2D_Impl* PluginInstance::bound_graphics_2d() const { 1288 PPB_Graphics2D_Impl* PluginInstance::bound_graphics_2d() const {
1278 if (bound_graphics_.get() == NULL) 1289 if (bound_graphics_.get() == NULL)
1279 return NULL; 1290 return NULL;
1280 1291
1281 return bound_graphics_->Cast<PPB_Graphics2D_Impl>(); 1292 if (bound_graphics_->AsPPB_Graphics2D_API())
1293 return static_cast<PPB_Graphics2D_Impl*>(bound_graphics_.get());
1294 return NULL;
1282 } 1295 }
1283 1296
1284 PPB_Surface3D_Impl* PluginInstance::bound_graphics_3d() const { 1297 PPB_Surface3D_Impl* PluginInstance::bound_graphics_3d() const {
1285 if (bound_graphics_.get() == NULL) 1298 if (bound_graphics_.get() == NULL)
1286 return NULL; 1299 return NULL;
1287 1300
1288 return bound_graphics_->Cast<PPB_Surface3D_Impl>(); 1301 if (bound_graphics_->AsPPB_Surface3D_API())
1302 return static_cast<PPB_Surface3D_Impl*>(bound_graphics_.get());
1303 return NULL;
1289 } 1304 }
1290 1305
1291 void PluginInstance::setBackingTextureId(unsigned int id) { 1306 void PluginInstance::setBackingTextureId(unsigned int id) {
1292 // If we have a full-screen container_ then the plugin is fullscreen, 1307 // If we have a full-screen container_ then the plugin is fullscreen,
1293 // and the parent context is not the one for the browser page, but for the 1308 // and the parent context is not the one for the browser page, but for the
1294 // full-screen window, and so the parent texture ID doesn't correspond to 1309 // full-screen window, and so the parent texture ID doesn't correspond to
1295 // anything in the page's context. 1310 // anything in the page's context.
1296 // 1311 //
1297 // TODO(alokp): It would be better at some point to have the equivalent 1312 // TODO(alokp): It would be better at some point to have the equivalent
1298 // in the FullscreenContainer so that we don't need to poll 1313 // in the FullscreenContainer so that we don't need to poll
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
1365 setBackingTextureId(0); 1380 setBackingTextureId(0);
1366 InvalidateRect(gfx::Rect()); 1381 InvalidateRect(gfx::Rect());
1367 } 1382 }
1368 bound_graphics_ = NULL; 1383 bound_graphics_ = NULL;
1369 return PP_TRUE; 1384 return PP_TRUE;
1370 } 1385 }
1371 1386
1372 EnterResourceNoLock<PPB_Graphics2D_API> enter_2d(device, false); 1387 EnterResourceNoLock<PPB_Graphics2D_API> enter_2d(device, false);
1373 PPB_Graphics2D_Impl* graphics_2d = enter_2d.succeeded() ? 1388 PPB_Graphics2D_Impl* graphics_2d = enter_2d.succeeded() ?
1374 static_cast<PPB_Graphics2D_Impl*>(enter_2d.object()) : NULL; 1389 static_cast<PPB_Graphics2D_Impl*>(enter_2d.object()) : NULL;
1375 // Surface3D not converted to API yet. 1390 EnterResourceNoLock<PPB_Surface3D_API> enter_3d(device, false);
1376 scoped_refptr<PPB_Surface3D_Impl> graphics_3d = 1391 PPB_Surface3D_Impl* graphics_3d = enter_3d.succeeded() ?
1377 Resource::GetAs<PPB_Surface3D_Impl>(device); 1392 static_cast<PPB_Surface3D_Impl*>(enter_3d.object()) : NULL;
1378 1393
1379 if (graphics_2d) { 1394 if (graphics_2d) {
1380 // Refuse to bind if we're transitioning to fullscreen. 1395 // Refuse to bind if we're transitioning to fullscreen.
1381 if (fullscreen_container_ && !fullscreen_) 1396 if (fullscreen_container_ && !fullscreen_)
1382 return PP_FALSE; 1397 return PP_FALSE;
1383 if (graphics_2d->instance() != this) 1398 if (graphics_2d->instance() != this)
1384 return PP_FALSE; // Can't bind other instance's contexts. 1399 return PP_FALSE; // Can't bind other instance's contexts.
1385 if (!graphics_2d->BindToInstance(this)) 1400 if (!graphics_2d->BindToInstance(this))
1386 return PP_FALSE; // Can't bind to more than one instance. 1401 return PP_FALSE; // Can't bind to more than one instance.
1387 1402
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
1504 } 1519 }
1505 1520
1506 PP_Bool PluginInstance::GetScreenSize(PP_Instance instance, PP_Size* size) { 1521 PP_Bool PluginInstance::GetScreenSize(PP_Instance instance, PP_Size* size) {
1507 gfx::Size screen_size = delegate()->GetScreenSize(); 1522 gfx::Size screen_size = delegate()->GetScreenSize();
1508 *size = PP_MakeSize(screen_size.width(), screen_size.height()); 1523 *size = PP_MakeSize(screen_size.width(), screen_size.height());
1509 return PP_TRUE; 1524 return PP_TRUE;
1510 } 1525 }
1511 1526
1512 } // namespace ppapi 1527 } // namespace ppapi
1513 } // namespace webkit 1528 } // namespace webkit
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698