summaryrefslogtreecommitdiffstats
path: root/webkit
diff options
context:
space:
mode:
authordanakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-18 07:54:17 +0000
committerdanakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-18 07:54:17 +0000
commit1c7008ac8b929e2a8c5410525838651411d36dcc (patch)
treef645c28b2b4990d48ac5926d974eda3f334f242c /webkit
parent4e735f9f74a2b519d33c27d62cd845e8f9f5ee99 (diff)
downloadchromium_src-1c7008ac8b929e2a8c5410525838651411d36dcc.zip
chromium_src-1c7008ac8b929e2a8c5410525838651411d36dcc.tar.gz
chromium_src-1c7008ac8b929e2a8c5410525838651411d36dcc.tar.bz2
cc: Create a cc::ScrollbarThemePainter and an adapter class in compositor bindings.
Instead of having the scrollbar layer talk directly to the WebScrollbarThemePainter, we make an abstract interface in cc/ that it can talk to. In the compositor bindings, we implement this class, and forward the function calls made into it over to the WebKit implementation. No change in behaviour, no new tests. This is a prerequisite for https://codereview.chromium.org/11464041/. BUG=123444 NOTRY=true Review URL: https://chromiumcodereview.appspot.com/11609002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@173687 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit')
-rw-r--r--webkit/compositor_bindings/compositor_bindings.gyp2
-rw-r--r--webkit/compositor_bindings/web_scrollbar_layer_impl.cc10
-rw-r--r--webkit/compositor_bindings/web_to_ccscrollbar_theme_painter_adapter.cc65
-rw-r--r--webkit/compositor_bindings/web_to_ccscrollbar_theme_painter_adapter.h55
4 files changed, 131 insertions, 1 deletions
diff --git a/webkit/compositor_bindings/compositor_bindings.gyp b/webkit/compositor_bindings/compositor_bindings.gyp
index e4df060..67c3f03 100644
--- a/webkit/compositor_bindings/compositor_bindings.gyp
+++ b/webkit/compositor_bindings/compositor_bindings.gyp
@@ -33,6 +33,8 @@
'web_nine_patch_layer_impl.h',
'web_to_ccinput_handler_adapter.cc',
'web_to_ccinput_handler_adapter.h',
+ 'web_to_ccscrollbar_theme_painter_adapter.cc',
+ 'web_to_ccscrollbar_theme_painter_adapter.h',
'web_layer_tree_view_impl.cc',
'web_layer_tree_view_impl.h',
'web_scrollbar_layer_impl.cc',
diff --git a/webkit/compositor_bindings/web_scrollbar_layer_impl.cc b/webkit/compositor_bindings/web_scrollbar_layer_impl.cc
index dbadb31..d2153bc 100644
--- a/webkit/compositor_bindings/web_scrollbar_layer_impl.cc
+++ b/webkit/compositor_bindings/web_scrollbar_layer_impl.cc
@@ -6,8 +6,10 @@
#include "cc/scrollbar_layer.h"
#include "web_layer_impl.h"
+#include "web_to_ccscrollbar_theme_painter_adapter.h"
using cc::ScrollbarLayer;
+using cc::ScrollbarThemePainter;
namespace WebKit {
@@ -18,7 +20,13 @@ WebScrollbarLayer* WebScrollbarLayer::create(WebScrollbar* scrollbar, WebScrollb
WebScrollbarLayerImpl::WebScrollbarLayerImpl(WebScrollbar* scrollbar, WebScrollbarThemePainter painter, WebScrollbarThemeGeometry* geometry)
- : m_layer(new WebLayerImpl(ScrollbarLayer::create(make_scoped_ptr(scrollbar), painter, make_scoped_ptr(geometry), 0)))
+ : m_layer(new WebLayerImpl(ScrollbarLayer::create(
+ make_scoped_ptr(scrollbar),
+ WebToCCScrollbarThemePainterAdapter::Create(
+ make_scoped_ptr(new WebScrollbarThemePainter(painter)))
+ .PassAs<ScrollbarThemePainter>(),
+ make_scoped_ptr(geometry),
+ 0)))
{
}
diff --git a/webkit/compositor_bindings/web_to_ccscrollbar_theme_painter_adapter.cc b/webkit/compositor_bindings/web_to_ccscrollbar_theme_painter_adapter.cc
new file mode 100644
index 0000000..2c3361d
--- /dev/null
+++ b/webkit/compositor_bindings/web_to_ccscrollbar_theme_painter_adapter.cc
@@ -0,0 +1,65 @@
+// Copyright 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "web_to_ccscrollbar_theme_painter_adapter.h"
+
+#include "third_party/WebKit/Source/Platform/chromium/public/WebRect.h"
+#include "third_party/WebKit/Source/Platform/chromium/public/WebScrollbarThemePainter.h"
+
+namespace WebKit {
+
+WebToCCScrollbarThemePainterAdapter::~WebToCCScrollbarThemePainterAdapter() {
+}
+
+void WebToCCScrollbarThemePainterAdapter::PaintScrollbarBackground(
+ SkCanvas* canvas, const gfx::Rect& rect) {
+ painter_->paintScrollbarBackground(canvas, rect);
+}
+
+void WebToCCScrollbarThemePainterAdapter::PaintTrackBackground(
+ SkCanvas* canvas, const gfx::Rect& rect) {
+ painter_->paintTrackBackground(canvas, rect);
+}
+
+void WebToCCScrollbarThemePainterAdapter::PaintBackTrackPart(
+ SkCanvas* canvas, const gfx::Rect& rect) {
+ painter_->paintBackTrackPart(canvas, rect);
+}
+
+void WebToCCScrollbarThemePainterAdapter::PaintForwardTrackPart(
+ SkCanvas* canvas, const gfx::Rect& rect) {
+ painter_->paintForwardTrackPart(canvas, rect);
+}
+
+void WebToCCScrollbarThemePainterAdapter::PaintBackButtonStart(
+ SkCanvas* canvas, const gfx::Rect& rect) {
+ painter_->paintBackButtonStart(canvas, rect);
+}
+
+void WebToCCScrollbarThemePainterAdapter::PaintBackButtonEnd(
+ SkCanvas* canvas, const gfx::Rect& rect) {
+ painter_->paintBackButtonEnd(canvas, rect);
+}
+
+void WebToCCScrollbarThemePainterAdapter::PaintForwardButtonStart(
+ SkCanvas* canvas, const gfx::Rect& rect) {
+ painter_->paintForwardButtonStart(canvas, rect);
+}
+
+void WebToCCScrollbarThemePainterAdapter::PaintForwardButtonEnd(
+ SkCanvas* canvas, const gfx::Rect& rect) {
+ painter_->paintForwardButtonEnd(canvas, rect);
+}
+
+void WebToCCScrollbarThemePainterAdapter::PaintTickmarks(
+ SkCanvas* canvas, const gfx::Rect& rect) {
+ painter_->paintTickmarks(canvas, rect);
+}
+
+void WebToCCScrollbarThemePainterAdapter::PaintThumb(
+ SkCanvas* canvas, const gfx::Rect& rect) {
+ painter_->paintThumb(canvas, rect);
+}
+
+} // namespace WebKit
diff --git a/webkit/compositor_bindings/web_to_ccscrollbar_theme_painter_adapter.h b/webkit/compositor_bindings/web_to_ccscrollbar_theme_painter_adapter.h
new file mode 100644
index 0000000..7ad80bc
--- /dev/null
+++ b/webkit/compositor_bindings/web_to_ccscrollbar_theme_painter_adapter.h
@@ -0,0 +1,55 @@
+// Copyright 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef WEBKIT_COMPOSITOR_BINDINGS_WEB_TO_CCSCROLLBAR_THEME_PAINTER_ADAPTER_H_
+#define WEBKIT_COMPOSITOR_BINDINGS_WEB_TO_CCSCROLLBAR_THEME_PAINTER_ADAPTER_H_
+
+#include "base/memory/scoped_ptr.h"
+#include "cc/scrollbar_theme_painter.h"
+
+namespace WebKit {
+
+class WebScrollbarThemePainter;
+
+class WebToCCScrollbarThemePainterAdapter : public cc::ScrollbarThemePainter {
+ public:
+ static scoped_ptr<WebToCCScrollbarThemePainterAdapter> Create(
+ scoped_ptr<WebScrollbarThemePainter> webPainter) {
+ return make_scoped_ptr(new WebToCCScrollbarThemePainterAdapter(
+ webPainter.Pass()));
+ }
+ virtual ~WebToCCScrollbarThemePainterAdapter();
+
+ virtual void PaintScrollbarBackground(SkCanvas* canvas, const gfx::Rect& rect)
+ OVERRIDE;
+ virtual void PaintTrackBackground(SkCanvas* canvas, const gfx::Rect& rect)
+ OVERRIDE;
+ virtual void PaintBackTrackPart(SkCanvas* canvas, const gfx::Rect& rect)
+ OVERRIDE;
+ virtual void PaintForwardTrackPart(SkCanvas* canvas, const gfx::Rect& rect)
+ OVERRIDE;
+ virtual void PaintBackButtonStart(SkCanvas* canvas, const gfx::Rect& rect)
+ OVERRIDE;
+ virtual void PaintBackButtonEnd(SkCanvas* canvas, const gfx::Rect& rect)
+ OVERRIDE;
+ virtual void PaintForwardButtonStart(SkCanvas* canvas, const gfx::Rect& rect)
+ OVERRIDE;
+ virtual void PaintForwardButtonEnd(SkCanvas* canvas, const gfx::Rect& rect)
+ OVERRIDE;
+ virtual void PaintTickmarks(SkCanvas* canvas, const gfx::Rect& rect)
+ OVERRIDE;
+ virtual void PaintThumb(SkCanvas* canvas, const gfx::Rect& rect)
+ OVERRIDE;
+
+ private:
+ WebToCCScrollbarThemePainterAdapter(
+ scoped_ptr<WebScrollbarThemePainter> webPainter)
+ : painter_(webPainter.Pass()) {}
+
+ scoped_ptr<WebScrollbarThemePainter> painter_;
+};
+
+} // namespace WebKit
+
+#endif // WEBKIT_COMPOSITOR_BINDINGS_WEB_TO_CCSCROLLBAR_THEME_PAINTER_ADAPTER_H_