diff options
author | danakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-18 07:54:17 +0000 |
---|---|---|
committer | danakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-18 07:54:17 +0000 |
commit | 1c7008ac8b929e2a8c5410525838651411d36dcc (patch) | |
tree | f645c28b2b4990d48ac5926d974eda3f334f242c /webkit | |
parent | 4e735f9f74a2b519d33c27d62cd845e8f9f5ee99 (diff) | |
download | chromium_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')
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_ |