| Index: cc/scrollbar_layer.cc
|
| diff --git a/cc/scrollbar_layer.cc b/cc/scrollbar_layer.cc
|
| index 9fb96ff616cb500838ffc846af6ad4630dd1410d..817ead819b532a820254b37fb0400c5cdb6b01fc 100644
|
| --- a/cc/scrollbar_layer.cc
|
| +++ b/cc/scrollbar_layer.cc
|
| @@ -10,10 +10,8 @@
|
| #include "cc/layer_tree_host.h"
|
| #include "cc/resource_update_queue.h"
|
| #include "cc/scrollbar_layer_impl.h"
|
| +#include "third_party/WebKit/Source/Platform/chromium/public/WebRect.h"
|
| #include "ui/gfx/rect_conversions.h"
|
| -#include <public/WebRect.h>
|
| -
|
| -using WebKit::WebRect;
|
|
|
| namespace cc {
|
|
|
| @@ -22,14 +20,22 @@ scoped_ptr<LayerImpl> ScrollbarLayer::createLayerImpl(LayerTreeImpl* treeImpl)
|
| return ScrollbarLayerImpl::create(treeImpl, id()).PassAs<LayerImpl>();
|
| }
|
|
|
| -scoped_refptr<ScrollbarLayer> ScrollbarLayer::create(scoped_ptr<WebKit::WebScrollbar> scrollbar, WebKit::WebScrollbarThemePainter painter, scoped_ptr<WebKit::WebScrollbarThemeGeometry> geometry, int scrollLayerId)
|
| +scoped_refptr<ScrollbarLayer> ScrollbarLayer::create(
|
| + scoped_ptr<WebKit::WebScrollbar> scrollbar,
|
| + scoped_ptr<ScrollbarThemePainter> painter,
|
| + scoped_ptr<WebKit::WebScrollbarThemeGeometry> geometry,
|
| + int scrollLayerId)
|
| {
|
| - return make_scoped_refptr(new ScrollbarLayer(scrollbar.Pass(), painter, geometry.Pass(), scrollLayerId));
|
| + return make_scoped_refptr(new ScrollbarLayer(scrollbar.Pass(), painter.Pass(), geometry.Pass(), scrollLayerId));
|
| }
|
|
|
| -ScrollbarLayer::ScrollbarLayer(scoped_ptr<WebKit::WebScrollbar> scrollbar, WebKit::WebScrollbarThemePainter painter, scoped_ptr<WebKit::WebScrollbarThemeGeometry> geometry, int scrollLayerId)
|
| +ScrollbarLayer::ScrollbarLayer(
|
| + scoped_ptr<WebKit::WebScrollbar> scrollbar,
|
| + scoped_ptr<ScrollbarThemePainter> painter,
|
| + scoped_ptr<WebKit::WebScrollbarThemeGeometry> geometry,
|
| + int scrollLayerId)
|
| : m_scrollbar(scrollbar.Pass())
|
| - , m_painter(painter)
|
| + , m_painter(painter.Pass())
|
| , m_geometry(geometry.Pass())
|
| , m_scrollLayerId(scrollLayerId)
|
| , m_textureFormat(GL_INVALID_ENUM)
|
| @@ -117,46 +123,45 @@ ScrollbarLayer* ScrollbarLayer::toScrollbarLayer()
|
|
|
| class ScrollbarBackgroundPainter : public LayerPainter {
|
| public:
|
| - static scoped_ptr<ScrollbarBackgroundPainter> create(WebKit::WebScrollbar* scrollbar, WebKit::WebScrollbarThemePainter painter, WebKit::WebScrollbarThemeGeometry* geometry, WebKit::WebScrollbar::ScrollbarPart trackPart)
|
| + static scoped_ptr<ScrollbarBackgroundPainter> create(WebKit::WebScrollbar* scrollbar, ScrollbarThemePainter *painter, WebKit::WebScrollbarThemeGeometry* geometry, WebKit::WebScrollbar::ScrollbarPart trackPart)
|
| {
|
| return make_scoped_ptr(new ScrollbarBackgroundPainter(scrollbar, painter, geometry, trackPart));
|
| }
|
|
|
| - virtual void paint(SkCanvas* skCanvas, const gfx::Rect& contentRect, gfx::RectF&) OVERRIDE
|
| + virtual void paint(SkCanvas* canvas, gfx::Rect contentRect, gfx::RectF&) OVERRIDE
|
| {
|
| - WebKit::WebCanvas* canvas = skCanvas;
|
| // The following is a simplification of ScrollbarThemeComposite::paint.
|
| - m_painter.paintScrollbarBackground(canvas, contentRect);
|
| + m_painter->PaintScrollbarBackground(canvas, contentRect);
|
|
|
| if (m_geometry->hasButtons(m_scrollbar)) {
|
| - WebRect backButtonStartPaintRect = m_geometry->backButtonStartRect(m_scrollbar);
|
| - m_painter.paintBackButtonStart(canvas, backButtonStartPaintRect);
|
| + gfx::Rect backButtonStartPaintRect = m_geometry->backButtonStartRect(m_scrollbar);
|
| + m_painter->PaintBackButtonStart(canvas, backButtonStartPaintRect);
|
|
|
| - WebRect backButtonEndPaintRect = m_geometry->backButtonEndRect(m_scrollbar);
|
| - m_painter.paintBackButtonEnd(canvas, backButtonEndPaintRect);
|
| + gfx::Rect backButtonEndPaintRect = m_geometry->backButtonEndRect(m_scrollbar);
|
| + m_painter->PaintBackButtonEnd(canvas, backButtonEndPaintRect);
|
|
|
| - WebRect forwardButtonStartPaintRect = m_geometry->forwardButtonStartRect(m_scrollbar);
|
| - m_painter.paintForwardButtonStart(canvas, forwardButtonStartPaintRect);
|
| + gfx::Rect forwardButtonStartPaintRect = m_geometry->forwardButtonStartRect(m_scrollbar);
|
| + m_painter->PaintForwardButtonStart(canvas, forwardButtonStartPaintRect);
|
|
|
| - WebRect forwardButtonEndPaintRect = m_geometry->forwardButtonEndRect(m_scrollbar);
|
| - m_painter.paintForwardButtonEnd(canvas, forwardButtonEndPaintRect);
|
| + gfx::Rect forwardButtonEndPaintRect = m_geometry->forwardButtonEndRect(m_scrollbar);
|
| + m_painter->PaintForwardButtonEnd(canvas, forwardButtonEndPaintRect);
|
| }
|
|
|
| - WebRect trackPaintRect = m_geometry->trackRect(m_scrollbar);
|
| - m_painter.paintTrackBackground(canvas, trackPaintRect);
|
| + gfx::Rect trackPaintRect = m_geometry->trackRect(m_scrollbar);
|
| + m_painter->PaintTrackBackground(canvas, trackPaintRect);
|
|
|
| bool thumbPresent = m_geometry->hasThumb(m_scrollbar);
|
| if (thumbPresent) {
|
| if (m_trackPart == WebKit::WebScrollbar::ForwardTrackPart)
|
| - m_painter.paintForwardTrackPart(canvas, trackPaintRect);
|
| + m_painter->PaintForwardTrackPart(canvas, trackPaintRect);
|
| else
|
| - m_painter.paintBackTrackPart(canvas, trackPaintRect);
|
| + m_painter->PaintBackTrackPart(canvas, trackPaintRect);
|
| }
|
|
|
| - m_painter.paintTickmarks(canvas, trackPaintRect);
|
| + m_painter->PaintTickmarks(canvas, trackPaintRect);
|
| }
|
| private:
|
| - ScrollbarBackgroundPainter(WebKit::WebScrollbar* scrollbar, WebKit::WebScrollbarThemePainter painter, WebKit::WebScrollbarThemeGeometry* geometry, WebKit::WebScrollbar::ScrollbarPart trackPart)
|
| + ScrollbarBackgroundPainter(WebKit::WebScrollbar* scrollbar, ScrollbarThemePainter *painter, WebKit::WebScrollbarThemeGeometry* geometry, WebKit::WebScrollbar::ScrollbarPart trackPart)
|
| : m_scrollbar(scrollbar)
|
| , m_painter(painter)
|
| , m_geometry(geometry)
|
| @@ -165,7 +170,7 @@ private:
|
| }
|
|
|
| WebKit::WebScrollbar* m_scrollbar;
|
| - WebKit::WebScrollbarThemePainter m_painter;
|
| + ScrollbarThemePainter* m_painter;
|
| WebKit::WebScrollbarThemeGeometry* m_geometry;
|
| WebKit::WebScrollbar::ScrollbarPart m_trackPart;
|
|
|
| @@ -174,24 +179,20 @@ private:
|
|
|
| class ScrollbarThumbPainter : public LayerPainter {
|
| public:
|
| - static scoped_ptr<ScrollbarThumbPainter> create(WebKit::WebScrollbar* scrollbar, WebKit::WebScrollbarThemePainter painter, WebKit::WebScrollbarThemeGeometry* geometry)
|
| + static scoped_ptr<ScrollbarThumbPainter> create(WebKit::WebScrollbar* scrollbar, ScrollbarThemePainter* painter, WebKit::WebScrollbarThemeGeometry* geometry)
|
| {
|
| return make_scoped_ptr(new ScrollbarThumbPainter(scrollbar, painter, geometry));
|
| }
|
|
|
| - virtual void paint(SkCanvas* skCanvas, const gfx::Rect& contentRect, gfx::RectF& opaque) OVERRIDE
|
| + virtual void paint(SkCanvas* canvas, gfx::Rect contentRect, gfx::RectF& opaque) OVERRIDE
|
| {
|
| - WebKit::WebCanvas* canvas = skCanvas;
|
| -
|
| // Consider the thumb to be at the origin when painting.
|
| - WebRect thumbRect = m_geometry->thumbRect(m_scrollbar);
|
| - thumbRect.x = 0;
|
| - thumbRect.y = 0;
|
| - m_painter.paintThumb(canvas, thumbRect);
|
| + gfx::Rect thumbRect = m_geometry->thumbRect(m_scrollbar);
|
| + m_painter->PaintThumb(canvas, gfx::Rect(thumbRect.size()));
|
| }
|
|
|
| private:
|
| - ScrollbarThumbPainter(WebKit::WebScrollbar* scrollbar, WebKit::WebScrollbarThemePainter painter, WebKit::WebScrollbarThemeGeometry* geometry)
|
| + ScrollbarThumbPainter(WebKit::WebScrollbar* scrollbar, ScrollbarThemePainter* painter, WebKit::WebScrollbarThemeGeometry* geometry)
|
| : m_scrollbar(scrollbar)
|
| , m_painter(painter)
|
| , m_geometry(geometry)
|
| @@ -199,7 +200,7 @@ private:
|
| }
|
|
|
| WebKit::WebScrollbar* m_scrollbar;
|
| - WebKit::WebScrollbarThemePainter m_painter;
|
| + ScrollbarThemePainter* m_painter;
|
| WebKit::WebScrollbarThemeGeometry* m_geometry;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(ScrollbarThumbPainter);
|
| @@ -222,48 +223,48 @@ void ScrollbarLayer::createUpdaterIfNeeded()
|
| m_textureFormat = layerTreeHost()->rendererCapabilities().bestTextureFormat;
|
|
|
| if (!m_backTrackUpdater)
|
| - m_backTrackUpdater = CachingBitmapContentLayerUpdater::Create(ScrollbarBackgroundPainter::create(m_scrollbar.get(), m_painter, m_geometry.get(), WebKit::WebScrollbar::BackTrackPart).PassAs<LayerPainter>());
|
| + m_backTrackUpdater = CachingBitmapContentLayerUpdater::Create(ScrollbarBackgroundPainter::create(m_scrollbar.get(), m_painter.get(), m_geometry.get(), WebKit::WebScrollbar::BackTrackPart).PassAs<LayerPainter>());
|
| if (!m_backTrack)
|
| m_backTrack = m_backTrackUpdater->createResource(layerTreeHost()->contentsTextureManager());
|
|
|
| // Only create two-part track if we think the two parts could be different in appearance.
|
| if (m_scrollbar->isCustomScrollbar()) {
|
| if (!m_foreTrackUpdater)
|
| - m_foreTrackUpdater = CachingBitmapContentLayerUpdater::Create(ScrollbarBackgroundPainter::create(m_scrollbar.get(), m_painter, m_geometry.get(), WebKit::WebScrollbar::ForwardTrackPart).PassAs<LayerPainter>());
|
| + m_foreTrackUpdater = CachingBitmapContentLayerUpdater::Create(ScrollbarBackgroundPainter::create(m_scrollbar.get(), m_painter.get(), m_geometry.get(), WebKit::WebScrollbar::ForwardTrackPart).PassAs<LayerPainter>());
|
| if (!m_foreTrack)
|
| m_foreTrack = m_foreTrackUpdater->createResource(layerTreeHost()->contentsTextureManager());
|
| }
|
|
|
| if (!m_thumbUpdater)
|
| - m_thumbUpdater = CachingBitmapContentLayerUpdater::Create(ScrollbarThumbPainter::create(m_scrollbar.get(), m_painter, m_geometry.get()).PassAs<LayerPainter>());
|
| + m_thumbUpdater = CachingBitmapContentLayerUpdater::Create(ScrollbarThumbPainter::create(m_scrollbar.get(), m_painter.get(), m_geometry.get()).PassAs<LayerPainter>());
|
| if (!m_thumb)
|
| m_thumb = m_thumbUpdater->createResource(layerTreeHost()->contentsTextureManager());
|
| }
|
|
|
| -void ScrollbarLayer::updatePart(CachingBitmapContentLayerUpdater* painter, LayerUpdater::Resource* texture, const gfx::Rect& rect, ResourceUpdateQueue& queue, RenderingStats& stats)
|
| +void ScrollbarLayer::updatePart(CachingBitmapContentLayerUpdater* painter, LayerUpdater::Resource* resource, const gfx::Rect& rect, ResourceUpdateQueue& queue, RenderingStats& stats)
|
| {
|
| // Skip painting and uploading if there are no invalidations and
|
| // we already have valid texture data.
|
| - if (texture->texture()->haveBackingTexture()
|
| - && texture->texture()->size() == rect.size()
|
| - && m_updateRect.IsEmpty())
|
| + if (resource->texture()->haveBackingTexture() &&
|
| + resource->texture()->size() == rect.size() &&
|
| + m_updateRect.IsEmpty())
|
| return;
|
|
|
| // We should always have enough memory for UI.
|
| - DCHECK(texture->texture()->canAcquireBackingTexture());
|
| - if (!texture->texture()->canAcquireBackingTexture())
|
| + DCHECK(resource->texture()->canAcquireBackingTexture());
|
| + if (!resource->texture()->canAcquireBackingTexture())
|
| return;
|
|
|
| // Paint and upload the entire part.
|
| gfx::Rect paintedOpaqueRect;
|
| painter->prepareToUpdate(rect, rect.size(), contentsScaleX(), contentsScaleY(), paintedOpaqueRect, stats);
|
| - if (!painter->pixelsDidChange() && texture->texture()->haveBackingTexture()) {
|
| + if (!painter->pixelsDidChange() && resource->texture()->haveBackingTexture()) {
|
| TRACE_EVENT_INSTANT0("cc","ScrollbarLayer::updatePart no texture upload needed");
|
| return;
|
| }
|
|
|
| gfx::Vector2d destOffset(0, 0);
|
| - texture->update(queue, rect, destOffset, false, stats);
|
| + resource->update(queue, rect, destOffset, false, stats);
|
| }
|
|
|
| gfx::Rect ScrollbarLayer::scrollbarLayerRectToContentRect(const gfx::Rect& layerRect) const
|
|
|