Index: cc/scrollbar_layer.cc |
diff --git a/cc/scrollbar_layer.cc b/cc/scrollbar_layer.cc |
index baecc14cdad1084785b8720e7f64d3f85ae24b02..87b9e6b95e71bbe6230693d010a9b1e0c34f4ad3 100644 |
--- a/cc/scrollbar_layer.cc |
+++ b/cc/scrollbar_layer.cc |
@@ -43,7 +43,7 @@ ScrollbarLayer::~ScrollbarLayer() |
void ScrollbarLayer::pushPropertiesTo(LayerImpl* layer) |
{ |
- Layer::pushPropertiesTo(layer); |
+ ContentsScalingLayer::pushPropertiesTo(layer); |
ScrollbarLayerImpl* scrollbarLayer = static_cast<ScrollbarLayerImpl*>(layer); |
@@ -130,16 +130,6 @@ private: |
DISALLOW_COPY_AND_ASSIGN(ScrollbarBackgroundPainter); |
}; |
-bool ScrollbarLayer::needsContentsScale() const |
-{ |
- return true; |
-} |
- |
-IntSize ScrollbarLayer::contentBounds() const |
-{ |
- return IntSize(lroundf(bounds().width() * contentsScale()), lroundf(bounds().height() * contentsScale())); |
-} |
- |
class ScrollbarThumbPainter : public LayerPainter { |
public: |
static scoped_ptr<ScrollbarThumbPainter> create(WebKit::WebScrollbar* scrollbar, WebKit::WebScrollbarThemePainter painter, WebKit::WebScrollbarThemeGeometry* geometry) |
@@ -182,7 +172,7 @@ void ScrollbarLayer::setLayerTreeHost(LayerTreeHost* host) |
m_thumb.reset(); |
} |
- Layer::setLayerTreeHost(host); |
+ ContentsScalingLayer::setLayerTreeHost(host); |
} |
void ScrollbarLayer::createUpdaterIfNeeded() |
@@ -223,10 +213,8 @@ void ScrollbarLayer::updatePart(CachingBitmapContentLayerUpdater* painter, Layer |
return; |
// Paint and upload the entire part. |
- float widthScale = static_cast<float>(contentBounds().width()) / bounds().width(); |
- float heightScale = static_cast<float>(contentBounds().height()) / bounds().height(); |
gfx::Rect paintedOpaqueRect; |
- painter->prepareToUpdate(rect, rect.size(), widthScale, heightScale, paintedOpaqueRect, stats); |
+ painter->prepareToUpdate(rect, rect.size(), contentsScaleX(), contentsScaleY(), paintedOpaqueRect, stats); |
if (!painter->pixelsDidChange() && texture->texture()->haveBackingTexture()) { |
TRACE_EVENT_INSTANT0("cc","ScrollbarLayer::updatePart no texture upload needed"); |
return; |
@@ -236,6 +224,14 @@ void ScrollbarLayer::updatePart(CachingBitmapContentLayerUpdater* painter, Layer |
texture->update(queue, rect, destOffset, false, stats); |
} |
+IntRect ScrollbarLayer::scrollbarLayerRectToContentRect(const WebRect& layerRect) const |
+{ |
+ // Don't intersect with the bounds as in layerRectToContentRect() because |
+ // layerRect here might be in coordinates of the containing layer. |
+ FloatRect contentRect(layerRect.x, layerRect.y, layerRect.width, layerRect.height); |
+ contentRect.scale(contentsScaleX(), contentsScaleY()); |
+ return enclosingIntRect(contentRect); |
+} |
void ScrollbarLayer::setTexturePriorities(const PriorityCalculator&) |
{ |
@@ -254,7 +250,7 @@ void ScrollbarLayer::setTexturePriorities(const PriorityCalculator&) |
m_foreTrack->texture()->setRequestPriority(PriorityCalculator::uiPriority(drawsToRoot)); |
} |
if (m_thumb) { |
- IntSize thumbSize = layerRectToContentRect(m_geometry->thumbRect(m_scrollbar.get())).size(); |
+ IntSize thumbSize = scrollbarLayerRectToContentRect(m_geometry->thumbRect(m_scrollbar.get())).size(); |
m_thumb->texture()->setDimensions(thumbSize, m_textureFormat); |
m_thumb->texture()->setRequestPriority(PriorityCalculator::uiPriority(drawsToRoot)); |
} |
@@ -267,15 +263,14 @@ void ScrollbarLayer::update(ResourceUpdateQueue& queue, const OcclusionTracker*, |
createUpdaterIfNeeded(); |
- IntPoint scrollbarOrigin(m_scrollbar->location().x, m_scrollbar->location().y); |
- IntRect contentRect = layerRectToContentRect(WebKit::WebRect(scrollbarOrigin.x(), scrollbarOrigin.y(), bounds().width(), bounds().height())); |
+ IntRect contentRect = scrollbarLayerRectToContentRect(WebRect(m_scrollbar->location().x, m_scrollbar->location().y, bounds().width(), bounds().height())); |
updatePart(m_backTrackUpdater.get(), m_backTrack.get(), contentRect, queue, stats); |
if (m_foreTrack && m_foreTrackUpdater) |
updatePart(m_foreTrackUpdater.get(), m_foreTrack.get(), contentRect, queue, stats); |
// Consider the thumb to be at the origin when painting. |
WebKit::WebRect thumbRect = m_geometry->thumbRect(m_scrollbar.get()); |
- IntRect originThumbRect = layerRectToContentRect(WebKit::WebRect(0, 0, thumbRect.width, thumbRect.height)); |
+ IntRect originThumbRect = scrollbarLayerRectToContentRect(WebRect(0, 0, thumbRect.width, thumbRect.height)); |
if (!originThumbRect.isEmpty()) |
updatePart(m_thumbUpdater.get(), m_thumb.get(), originThumbRect, queue, stats); |
} |