summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/pepper
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-23 17:13:15 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-23 17:13:15 +0000
commitcdaeeba9d7b9b76ee9334306cfcda1045e94f5f0 (patch)
tree4bce14479b4b7362b2bda9f708d74c74c19ee19e /chrome/renderer/pepper
parentdaf4b54f126919f0cdfefdfa772c42cc0fdf0290 (diff)
downloadchromium_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.cc55
-rw-r--r--chrome/renderer/pepper/pepper_pdf_host.cc27
-rw-r--r--chrome/renderer/pepper/ppb_pdf_impl.cc43
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(&params.glyph_indices[0], glyph_count * 2, sk_positions,
+ paint);
}
- canvas->drawPosText(&params.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,