summaryrefslogtreecommitdiffstats
path: root/webkit
diff options
context:
space:
mode:
authortwiz@chromium.org <twiz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-26 14:28:35 +0000
committertwiz@chromium.org <twiz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-26 14:28:35 +0000
commit62f2e80c79f7d660d7871b14287cef9082fcc32f (patch)
tree310edb9b2c0aa8409defc654979719cb4d8a4059 /webkit
parentc89b244483969aa8859a1d4bb3396f6ceb54f875 (diff)
downloadchromium_src-62f2e80c79f7d660d7871b14287cef9082fcc32f.zip
chromium_src-62f2e80c79f7d660d7871b14287cef9082fcc32f.tar.gz
chromium_src-62f2e80c79f7d660d7871b14287cef9082fcc32f.tar.bz2
This change implements a first pass in the effort to remove the dependency of PlatformDevice within Chrome. The Skia library now provides multiple back-ends for the SkDevice class, so PlatformDevice's inheritance of SkDevice, and the assumption of instances of PlatformDevice limits the use of these new back-ends.
A new set of helper functions is provided for the PlatformDevice entry points. Upon construction of a PlatformDevice, a pointer to the interface is cached in the parent SkDevice's SkMetaData. The new helper functions forward calls to the interface cached in the metadata. BUG=NONE TEST=NONE Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=86625 Reverted: http://src.chromium.org/viewvc/chrome?view=rev&revision=86625 Review URL: http://codereview.chromium.org/7019013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@86823 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit')
-rw-r--r--webkit/glue/webkit_glue.cc2
-rw-r--r--webkit/glue/webmediaplayer_impl.cc4
-rw-r--r--webkit/plugins/npapi/webplugin_delegate_impl_gtk.cc4
-rw-r--r--webkit/plugins/npapi/webplugin_delegate_impl_win.cc4
-rw-r--r--webkit/plugins/ppapi/ppapi_plugin_instance.cc4
-rw-r--r--webkit/plugins/ppapi/ppb_image_data_impl.cc4
-rw-r--r--webkit/plugins/ppapi/ppb_pdf_impl.cc2
-rw-r--r--webkit/plugins/ppapi/ppb_scrollbar_impl.cc4
-rw-r--r--webkit/plugins/sad_plugin.cc5
-rw-r--r--webkit/tools/test_shell/mac/webwidget_host.mm6
-rw-r--r--webkit/tools/test_shell/test_shell_webthemecontrol.cc9
-rw-r--r--webkit/tools/test_shell/webwidget_host_gtk.cc3
-rw-r--r--webkit/tools/test_shell/webwidget_host_win.cc10
13 files changed, 29 insertions, 32 deletions
diff --git a/webkit/glue/webkit_glue.cc b/webkit/glue/webkit_glue.cc
index 1593c35..6e43e8b88 100644
--- a/webkit/glue/webkit_glue.cc
+++ b/webkit/glue/webkit_glue.cc
@@ -403,7 +403,7 @@ WebCanvas* ToWebCanvas(skia::PlatformCanvas* canvas) {
#if WEBKIT_USING_SKIA
return canvas;
#elif WEBKIT_USING_CG
- return canvas->getTopPlatformDevice().GetBitmapContext();
+ return skia::GetBitmapContext(skia::GetTopDevice(*canvas));
#else
NOTIMPLEMENTED();
return NULL;
diff --git a/webkit/glue/webmediaplayer_impl.cc b/webkit/glue/webmediaplayer_impl.cc
index 8b83468..a8fe341 100644
--- a/webkit/glue/webmediaplayer_impl.cc
+++ b/webkit/glue/webmediaplayer_impl.cc
@@ -687,8 +687,8 @@ void WebMediaPlayerImpl::paint(WebCanvas* canvas,
// Copy the frame rendered to our temporary skia canvas onto the passed in
// canvas.
- skia_canvas_->getTopPlatformDevice().DrawToContext(canvas, 0, 0,
- &normalized_cgrect);
+ skia::DrawToNativeContext(skia_canvas_.get(), canvas, 0, 0,
+ &normalized_cgrect);
CGContextRestoreGState(canvas);
#else
diff --git a/webkit/plugins/npapi/webplugin_delegate_impl_gtk.cc b/webkit/plugins/npapi/webplugin_delegate_impl_gtk.cc
index dc34edb..7e2f584 100644
--- a/webkit/plugins/npapi/webplugin_delegate_impl_gtk.cc
+++ b/webkit/plugins/npapi/webplugin_delegate_impl_gtk.cc
@@ -111,9 +111,9 @@ void WebPluginDelegateImpl::Paint(WebKit::WebCanvas* canvas,
const gfx::Rect& rect) {
if (!windowless_)
return;
- cairo_t* context = skia::BeginPlatformPaint(canvas);
+ skia::ScopedPlatformPaint scoped_platform_paint(canvas);
+ cairo_t* context = scoped_platform_paint.GetPlatformSurface();
WindowlessPaint(context, rect);
- skia::EndPlatformPaint(canvas);
}
void WebPluginDelegateImpl::InstallMissingPlugin() {
diff --git a/webkit/plugins/npapi/webplugin_delegate_impl_win.cc b/webkit/plugins/npapi/webplugin_delegate_impl_win.cc
index c994f39..4e92036 100644
--- a/webkit/plugins/npapi/webplugin_delegate_impl_win.cc
+++ b/webkit/plugins/npapi/webplugin_delegate_impl_win.cc
@@ -463,9 +463,9 @@ void WebPluginDelegateImpl::PlatformDestroyInstance() {
void WebPluginDelegateImpl::Paint(WebKit::WebCanvas* canvas,
const gfx::Rect& rect) {
if (windowless_) {
- HDC hdc = skia::BeginPlatformPaint(canvas);
+ skia::ScopedPlatformPaint scoped_platform_paint(canvas);
+ HDC hdc = scoped_platform_paint.GetPlatformSurface();
WindowlessPaint(hdc, rect);
- skia::EndPlatformPaint(canvas);
}
}
diff --git a/webkit/plugins/ppapi/ppapi_plugin_instance.cc b/webkit/plugins/ppapi/ppapi_plugin_instance.cc
index cfe6386..b704869 100644
--- a/webkit/plugins/ppapi/ppapi_plugin_instance.cc
+++ b/webkit/plugins/ppapi/ppapi_plugin_instance.cc
@@ -1476,7 +1476,8 @@ bool PluginInstance::DrawJPEGToPlatformDC(
return false;
}
- HDC dc = skia::BeginPlatformPaint(canvas);
+ skia::ScopedPlatformPaint scoped_platform_paint(canvas);
+ HDC dc = scoped_platform_paint.GetPlatformSurface();
// TODO(sanjeevr): This is a temporary hack. If we output a JPEG
// to the EMF, the EnumEnhMetaFile call fails in the browser
// process. The failure also happens if we output nothing here.
@@ -1495,7 +1496,6 @@ bool PluginInstance::DrawJPEGToPlatformDC(
&compressed_image.front(),
reinterpret_cast<const BITMAPINFO*>(&bmi),
DIB_RGB_COLORS, SRCCOPY);
- skia::EndPlatformPaint(canvas);
return true;
}
#endif // OS_WIN
diff --git a/webkit/plugins/ppapi/ppb_image_data_impl.cc b/webkit/plugins/ppapi/ppb_image_data_impl.cc
index 9f5c15c..2f722e0 100644
--- a/webkit/plugins/ppapi/ppb_image_data_impl.cc
+++ b/webkit/plugins/ppapi/ppb_image_data_impl.cc
@@ -106,7 +106,7 @@ void* PPB_ImageData_Impl::Map() {
return NULL;
}
const SkBitmap& bitmap =
- mapped_canvas_->getTopPlatformDevice().accessBitmap(true);
+ skia::GetTopDevice(*mapped_canvas_)->accessBitmap(true);
// Our platform bitmaps are set to opaque by default, which we don't want.
const_cast<SkBitmap&>(bitmap).setIsOpaque(false);
@@ -129,7 +129,7 @@ int PPB_ImageData_Impl::GetSharedMemoryHandle(uint32* byte_count) const {
const SkBitmap* PPB_ImageData_Impl::GetMappedBitmap() const {
if (!mapped_canvas_.get())
return NULL;
- return &mapped_canvas_->getTopPlatformDevice().accessBitmap(false);
+ return &skia::GetTopDevice(*mapped_canvas_)->accessBitmap(false);
}
void PPB_ImageData_Impl::Swap(PPB_ImageData_Impl* other) {
diff --git a/webkit/plugins/ppapi/ppb_pdf_impl.cc b/webkit/plugins/ppapi/ppb_pdf_impl.cc
index f58b823..a8be7cd 100644
--- a/webkit/plugins/ppapi/ppb_pdf_impl.cc
+++ b/webkit/plugins/ppapi/ppb_pdf_impl.cc
@@ -153,7 +153,7 @@ PP_Resource GetResourceImage(PP_Instance instance_id,
skia::PlatformCanvas* canvas = image_data->mapped_canvas();
SkBitmap& ret_bitmap =
- const_cast<SkBitmap&>(canvas->getTopPlatformDevice().accessBitmap(true));
+ const_cast<SkBitmap&>(skia::GetTopDevice(*canvas)->accessBitmap(true));
if (!res_bitmap->copyTo(&ret_bitmap, SkBitmap::kARGB_8888_Config, NULL)) {
return 0;
}
diff --git a/webkit/plugins/ppapi/ppb_scrollbar_impl.cc b/webkit/plugins/ppapi/ppb_scrollbar_impl.cc
index 904c804..3820cca 100644
--- a/webkit/plugins/ppapi/ppb_scrollbar_impl.cc
+++ b/webkit/plugins/ppapi/ppb_scrollbar_impl.cc
@@ -178,8 +178,8 @@ bool PPB_Scrollbar_Impl::Paint(const PP_Rect* rect, PPB_ImageData_Impl* image) {
#if defined(OS_WIN)
if (base::win::GetVersion() == base::win::VERSION_XP) {
- canvas->getTopPlatformDevice().makeOpaque(
- gfx_rect.x(), gfx_rect.y(), gfx_rect.width(), gfx_rect.height());
+ skia::MakeOpaque(canvas, gfx_rect.x(), gfx_rect.y(),
+ gfx_rect.width(), gfx_rect.height());
}
#endif
diff --git a/webkit/plugins/sad_plugin.cc b/webkit/plugins/sad_plugin.cc
index c129d34..b85d48a 100644
--- a/webkit/plugins/sad_plugin.cc
+++ b/webkit/plugins/sad_plugin.cc
@@ -38,9 +38,10 @@ void PaintSadPlugin(WebKit::WebCanvas* webcanvas,
// then copy that to the screen than to use the native APIs. The small speed
// penalty is not important when drawing crashed plugins.
#if WEBKIT_USING_SKIA
- gfx::NativeDrawingContext context = skia::BeginPlatformPaint(webcanvas);
+ skia::ScopedPlatformPaint scoped_platform_paint(webcanvas);
+ gfx::NativeDrawingContext context =
+ scoped_platform_paint.GetPlatformSurface();
BlitCanvasToContext(context, plugin_rect, &canvas, gfx::Point(0, 0));
- skia::EndPlatformPaint(webcanvas);
#elif WEBKIT_USING_CG
BlitCanvasToContext(webcanvas, plugin_rect, &canvas, gfx::Point(0, 0));
#endif
diff --git a/webkit/tools/test_shell/mac/webwidget_host.mm b/webkit/tools/test_shell/mac/webwidget_host.mm
index 7677dbf..7610644 100644
--- a/webkit/tools/test_shell/mac/webwidget_host.mm
+++ b/webkit/tools/test_shell/mac/webwidget_host.mm
@@ -179,7 +179,7 @@ void WebWidgetHost::Paint() {
// make sure webkit draws into our bitmap, not the window
CGContextRef bitmap_context =
- canvas_->getTopPlatformDevice().GetBitmapContext();
+ skia::GetBitmapContext(skia::GetTopDevice(*canvas_));
[NSGraphicsContext setCurrentContext:
[NSGraphicsContext graphicsContextWithGraphicsPort:bitmap_context
flipped:YES]];
@@ -221,8 +221,8 @@ void WebWidgetHost::Paint() {
int bitmap_width = CGBitmapContextGetWidth(bitmap_context);
CGRect bitmap_rect = { { 0, 0 },
{ bitmap_width, bitmap_height } };
- canvas_->getTopPlatformDevice().DrawToContext(
- context, 0, client_rect.height() - bitmap_height, &bitmap_rect);
+ skia::DrawToNativeContext(canvas_.get(), context, 0,
+ client_rect.height() - bitmap_height, &bitmap_rect);
[view_ unlockFocus];
}
diff --git a/webkit/tools/test_shell/test_shell_webthemecontrol.cc b/webkit/tools/test_shell/test_shell_webthemecontrol.cc
index 08ca901..25cd94f 100644
--- a/webkit/tools/test_shell/test_shell_webthemecontrol.cc
+++ b/webkit/tools/test_shell/test_shell_webthemecontrol.cc
@@ -246,7 +246,7 @@ void Control::draw() {
// Indents for the the slider track.
const int kSliderIndent = 2;
- skia::BeginPlatformPaint(canvas_);
+ skia::ScopedPlatformPaint scoped_platform_paint(canvas_);
switch (type_) {
case kUnknown_Type:
NOTREACHED();
@@ -391,7 +391,6 @@ void Control::draw() {
}
markState();
- skia::EndPlatformPaint(canvas_);
}
// Because rendering a text field is dependent on input
@@ -401,7 +400,7 @@ void Control::drawTextField(bool draw_edges, bool fill_content_area,
SkColor color) {
SkPaint paint;
- skia::BeginPlatformPaint(canvas_);
+ skia::ScopedPlatformPaint scoped_platform_paint(canvas_);
if (fill_content_area) {
paint.setColor(color);
paint.setStyle(SkPaint::kFill_Style);
@@ -414,14 +413,13 @@ void Control::drawTextField(bool draw_edges, bool fill_content_area,
}
markState();
- skia::EndPlatformPaint(canvas_);
}
void
Control::drawProgressBar(const SkIRect& fill_rect) {
SkPaint paint;
- skia::BeginPlatformPaint(canvas_);
+ skia::ScopedPlatformPaint scoped_platform_paint(canvas_);
paint.setColor(bg_color_);
paint.setStyle(SkPaint::kFill_Style);
canvas_->drawIRect(irect_, paint);
@@ -434,7 +432,6 @@ Control::drawProgressBar(const SkIRect& fill_rect) {
canvas_->drawIRect(tofill, paint);
markState();
- skia::EndPlatformPaint(canvas_);
}
} // namespace TestShellWebTheme
diff --git a/webkit/tools/test_shell/webwidget_host_gtk.cc b/webkit/tools/test_shell/webwidget_host_gtk.cc
index bab38b3..b16ea3b 100644
--- a/webkit/tools/test_shell/webwidget_host_gtk.cc
+++ b/webkit/tools/test_shell/webwidget_host_gtk.cc
@@ -402,7 +402,8 @@ void WebWidgetHost::Paint() {
gdk_window_begin_paint_rect(window, &grect);
// BitBlit to the gdk window.
- cairo_t* source_surface = canvas_->beginPlatformPaint();
+ skia::ScopedPlatformPaint scoped_platform_paint(canvas_.get());
+ cairo_t* source_surface = scoped_platform_paint.GetPlatformSurface();
cairo_t* cairo_drawable = gdk_cairo_create(window);
cairo_set_source_surface(cairo_drawable, cairo_get_target(source_surface),
0, 0);
diff --git a/webkit/tools/test_shell/webwidget_host_win.cc b/webkit/tools/test_shell/webwidget_host_win.cc
index 17d5ae1..005c888 100644
--- a/webkit/tools/test_shell/webwidget_host_win.cc
+++ b/webkit/tools/test_shell/webwidget_host_win.cc
@@ -251,13 +251,13 @@ void WebWidgetHost::Paint() {
// Scroll the canvas if necessary
scroll_rect_ = client_rect.Intersect(scroll_rect_);
if (!scroll_rect_.IsEmpty()) {
- HDC hdc = canvas_->beginPlatformPaint();
+ skia::ScopedPlatformPaint scoped_platform_paint(canvas_.get());
+ HDC hdc = scoped_platform_paint.GetPlatformSurface();
RECT damaged_rect, r = scroll_rect_.ToRECT();
ScrollDC(hdc, scroll_dx_, scroll_dy_, NULL, &r, NULL, &damaged_rect);
PaintRect(gfx::Rect(damaged_rect));
- canvas_->endPlatformPaint();
}
ResetScrollRect();
@@ -279,10 +279,8 @@ void WebWidgetHost::Paint() {
// Paint to the screen
PAINTSTRUCT ps;
BeginPaint(view_, &ps);
- canvas_->getTopPlatformDevice().drawToHDC(ps.hdc,
- ps.rcPaint.left,
- ps.rcPaint.top,
- &ps.rcPaint);
+ skia::DrawToNativeContext(canvas_.get(), ps.hdc, ps.rcPaint.left,
+ ps.rcPaint.top, &ps.rcPaint);
EndPaint(view_, &ps);
// Draw children