diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-23 17:13:15 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-23 17:13:15 +0000 |
commit | cdaeeba9d7b9b76ee9334306cfcda1045e94f5f0 (patch) | |
tree | 4bce14479b4b7362b2bda9f708d74c74c19ee19e /chrome/renderer/pepper | |
parent | daf4b54f126919f0cdfefdfa772c42cc0fdf0290 (diff) | |
download | chromium_src-cdaeeba9d7b9b76ee9334306cfcda1045e94f5f0.zip chromium_src-cdaeeba9d7b9b76ee9334306cfcda1045e94f5f0.tar.gz chromium_src-cdaeeba9d7b9b76ee9334306cfcda1045e94f5f0.tar.bz2 |
Hide knowledge of webkit::ppapi::PPB_ImageData_Impl from chrome. This is part of moving ppapi implementation from webkit/plugins/ppapi to content/renderer.
BUG=263054
R=piman@chromium.org
Review URL: https://codereview.chromium.org/20027002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@213145 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/pepper')
-rw-r--r-- | chrome/renderer/pepper/pepper_flash_renderer_host.cc | 55 | ||||
-rw-r--r-- | chrome/renderer/pepper/pepper_pdf_host.cc | 27 | ||||
-rw-r--r-- | chrome/renderer/pepper/ppb_pdf_impl.cc | 43 |
3 files changed, 56 insertions, 69 deletions
diff --git a/chrome/renderer/pepper/pepper_flash_renderer_host.cc b/chrome/renderer/pepper/pepper_flash_renderer_host.cc index 967650e..6bc0c30 100644 --- a/chrome/renderer/pepper/pepper_flash_renderer_host.cc +++ b/chrome/renderer/pepper/pepper_flash_renderer_host.cc @@ -29,7 +29,6 @@ #include "ui/gfx/rect.h" #include "url/gurl.h" #include "webkit/plugins/ppapi/ppapi_plugin_instance.h" -#include "webkit/plugins/ppapi/ppb_image_data_impl.h" using ppapi::thunk::EnterResourceNoLock; using ppapi::thunk::PPB_ImageData_API; @@ -106,17 +105,6 @@ int32_t PepperFlashRendererHost::OnDrawGlyphs( params.glyph_indices.empty()) return PP_ERROR_FAILED; - EnterResourceNoLock<PPB_ImageData_API> enter( - params.image_data.host_resource(), true); - if (enter.failed()) - return PP_ERROR_FAILED; - webkit::ppapi::PPB_ImageData_Impl* image_resource = - static_cast<webkit::ppapi::PPB_ImageData_Impl*>(enter.object()); - - webkit::ppapi::ImageDataAutoMapper mapper(image_resource); - if (!mapper.is_valid()) - return PP_ERROR_FAILED; - // Set up the typeface. int style = SkTypeface::kNormal; if (static_cast<PP_BrowserFont_Trusted_Weight>(params.font_desc.weight) >= @@ -130,8 +118,24 @@ int32_t PepperFlashRendererHost::OnDrawGlyphs( if (!typeface) return PP_ERROR_FAILED; + EnterResourceNoLock<PPB_ImageData_API> enter( + params.image_data.host_resource(), true); + if (enter.failed()) + return PP_ERROR_FAILED; + // Set up the canvas. - SkCanvas* canvas = image_resource->GetPlatformCanvas(); + PPB_ImageData_API* image = static_cast<PPB_ImageData_API*>( + enter.object()); + SkCanvas* canvas = image->GetPlatformCanvas(); + bool needs_unmapping = false; + if (!canvas) { + needs_unmapping = true; + image->Map(); + canvas = image->GetPlatformCanvas(); + if (!canvas) + return PP_ERROR_FAILED; // Failure mapping. + } + SkAutoCanvasRestore acr(canvas, true); // Clip is applied in pixels before the transform. @@ -173,19 +177,22 @@ int32_t PepperFlashRendererHost::OnDrawGlyphs( // Build up the skia advances. size_t glyph_count = params.glyph_indices.size(); - if (glyph_count == 0) - return PP_OK; - std::vector<SkPoint> storage; - storage.resize(glyph_count); - SkPoint* sk_positions = &storage[0]; - for (uint32_t i = 0; i < glyph_count; i++) { - sk_positions[i].set(x, y); - x += SkFloatToScalar(params.glyph_advances[i].x); - y += SkFloatToScalar(params.glyph_advances[i].y); + if (glyph_count) { + std::vector<SkPoint> storage; + storage.resize(glyph_count); + SkPoint* sk_positions = &storage[0]; + for (uint32_t i = 0; i < glyph_count; i++) { + sk_positions[i].set(x, y); + x += SkFloatToScalar(params.glyph_advances[i].x); + y += SkFloatToScalar(params.glyph_advances[i].y); + } + + canvas->drawPosText(¶ms.glyph_indices[0], glyph_count * 2, sk_positions, + paint); } - canvas->drawPosText(¶ms.glyph_indices[0], glyph_count * 2, sk_positions, - paint); + if (needs_unmapping) + image->Unmap(); return PP_OK; } diff --git a/chrome/renderer/pepper/pepper_pdf_host.cc b/chrome/renderer/pepper/pepper_pdf_host.cc index 69275fa..afe05a6 100644 --- a/chrome/renderer/pepper/pepper_pdf_host.cc +++ b/chrome/renderer/pepper/pepper_pdf_host.cc @@ -19,8 +19,11 @@ #include "ppapi/proxy/host_dispatcher.h" #include "ppapi/proxy/ppapi_messages.h" #include "ppapi/proxy/ppb_image_data_proxy.h" +#include "ppapi/shared_impl/ppb_image_data_shared.h" #include "ppapi/shared_impl/scoped_pp_resource.h" #include "ppapi/thunk/enter.h" +#include "ppapi/thunk/ppb_image_data_api.h" +#include "skia/ext/platform_canvas.h" #include "third_party/WebKit/public/web/WebDocument.h" #include "third_party/WebKit/public/web/WebElement.h" #include "third_party/WebKit/public/web/WebFrame.h" @@ -34,7 +37,6 @@ #include "ui/gfx/image/image_skia_rep.h" #include "ui/gfx/point.h" #include "webkit/plugins/ppapi/ppapi_plugin_instance.h" -#include "webkit/plugins/ppapi/ppb_image_data_impl.h" using webkit::ppapi::PluginInstance; @@ -314,7 +316,7 @@ int32_t PepperPDFHost::OnHostMsgGetResourceImage( uint32_t byte_count = 0; bool success = CreateImageData( pp_instance(), - webkit::ppapi::PPB_ImageData_Impl::GetNativeImageDataFormat(), + ppapi::PPB_ImageData_Shared::GetNativeImageDataFormat(), pp_size, image_skia_rep.sk_bitmap(), &host_resource, @@ -371,17 +373,26 @@ bool PepperPDFHost::CreateImageData( if (enter_resource.failed()) return false; - webkit::ppapi::PPB_ImageData_Impl* image_data = - static_cast<webkit::ppapi::PPB_ImageData_Impl*>(enter_resource.object()); - webkit::ppapi::ImageDataAutoMapper mapper(image_data); - if (!mapper.is_valid()) - return false; + ppapi::thunk::PPB_ImageData_API* image_data = + static_cast<ppapi::thunk::PPB_ImageData_API*>(enter_resource.object()); + SkCanvas* canvas = image_data->GetCanvas(); + bool needs_unmapping = false; + if (!canvas) { + needs_unmapping = true; + image_data->Map(); + canvas = image_data->GetCanvas(); + if (!canvas) + return false; // Failure mapping. + } - const SkBitmap* bitmap = image_data->GetMappedBitmap(); + const SkBitmap* bitmap = &skia::GetTopDevice(*canvas)->accessBitmap(false); pixels_to_write.copyPixelsTo(bitmap->getPixels(), bitmap->getSize(), bitmap->rowBytes()); + if (needs_unmapping) + image_data->Unmap(); + return true; } diff --git a/chrome/renderer/pepper/ppb_pdf_impl.cc b/chrome/renderer/pepper/ppb_pdf_impl.cc index 93aec84..d5b56afc 100644 --- a/chrome/renderer/pepper/ppb_pdf_impl.cc +++ b/chrome/renderer/pepper/ppb_pdf_impl.cc @@ -24,7 +24,6 @@ #include "ppapi/shared_impl/resource.h" #include "ppapi/shared_impl/resource_tracker.h" #include "ppapi/shared_impl/var.h" -#include "skia/ext/platform_canvas.h" #include "third_party/skia/include/core/SkBitmap.h" #include "third_party/WebKit/public/web/WebDocument.h" #include "third_party/WebKit/public/web/WebElement.h" @@ -35,11 +34,8 @@ #include "ui/base/l10n/l10n_util.h" #include "ui/base/layout.h" #include "ui/base/resource/resource_bundle.h" -#include "ui/gfx/image/image_skia.h" -#include "ui/gfx/image/image_skia_rep.h" #include "webkit/plugins/ppapi/host_globals.h" #include "webkit/plugins/ppapi/ppapi_plugin_instance.h" -#include "webkit/plugins/ppapi/ppb_image_data_impl.h" using ppapi::PpapiGlobals; using webkit::ppapi::HostGlobals; @@ -383,7 +379,11 @@ PP_Resource GetResourceImageForScale(PP_Instance instance_id, if (res_id == 0) return 0; - ui::ScaleFactor scale_factor = ui::GetScaleFactorFromScale(scale); + // Validate the instance. + PluginInstance* instance = + content::GetHostGlobals()->GetInstance(instance_id); + if (!instance) + return 0; gfx::ImageSkia* res_image_skia = ResourceBundle::GetSharedInstance().GetImageSkiaNamed(res_id); @@ -391,38 +391,7 @@ PP_Resource GetResourceImageForScale(PP_Instance instance_id, if (!res_image_skia) return 0; - // Validate the instance. - if (!content::GetHostGlobals()->GetInstance(instance_id)) - return 0; - - gfx::ImageSkiaRep image_skia_rep = res_image_skia->GetRepresentation( - scale_factor); - - if (image_skia_rep.is_null() || image_skia_rep.scale_factor() != scale_factor) - return 0; - - scoped_refptr<webkit::ppapi::PPB_ImageData_Impl> image_data( - new webkit::ppapi::PPB_ImageData_Impl( - instance_id, - webkit::ppapi::PPB_ImageData_Impl::PLATFORM)); - if (!image_data->Init( - webkit::ppapi::PPB_ImageData_Impl::GetNativeImageDataFormat(), - image_skia_rep.pixel_width(), - image_skia_rep.pixel_height(), - false)) { - return 0; - } - - webkit::ppapi::ImageDataAutoMapper mapper(image_data.get()); - if (!mapper.is_valid()) - return 0; - - skia::PlatformCanvas* canvas = image_data->GetPlatformCanvas(); - // Note: Do not skBitmap::copyTo the canvas bitmap directly because it will - // ignore the allocated pixels in shared memory and re-allocate a new buffer. - canvas->writePixels(image_skia_rep.sk_bitmap(), 0, 0); - - return image_data->GetReference(); + return instance->CreateImage(res_image_skia, scale); } PP_Resource GetResourceImage(PP_Instance instance_id, |