#include "core/page/scrolling/ScrollingCoordinator.h"
#include "core/page/Page.h"
+#include "core/rendering/RenderPart.h"
#include "core/rendering/RenderView.h"
-#include "core/rendering/RenderWidget.h"
#include "core/rendering/compositing/CompositedLayerMapping.h"
#include "core/rendering/compositing/RenderLayerCompositor.h"
#include "core/testing/URLTestHelpers.h"
FrameTestHelpers::WebViewHelper m_helper;
};
+class GraphicsLayerForScrollTesting : public GraphicsLayer {
+public:
+ virtual WebLayer* contentsLayer() const { return GraphicsLayer::contentsLayer(); }
+};
+
TEST_F(ScrollingCoordinatorChromiumTest, fastScrollingByDefault)
{
navigateTo("about:blank");
RenderObject* renderer = scrollableFrame->renderer();
ASSERT_TRUE(renderer);
- ASSERT_TRUE(renderer->isWidget());
+ ASSERT_TRUE(renderer->isRenderPart());
- RenderWidget* renderWidget = toRenderWidget(renderer);
- ASSERT_TRUE(renderWidget);
- ASSERT_TRUE(renderWidget->widget());
- ASSERT_TRUE(renderWidget->widget()->isFrameView());
+ RenderPart* renderPart = toRenderPart(renderer);
+ ASSERT_TRUE(renderPart);
+ ASSERT_TRUE(renderPart->widget());
+ ASSERT_TRUE(renderPart->widget()->isFrameView());
- FrameView* innerFrameView = toFrameView(renderWidget->widget());
+ FrameView* innerFrameView = toFrameView(renderPart->widget());
RenderView* innerRenderView = innerFrameView->renderView();
ASSERT_TRUE(innerRenderView);
RenderObject* renderer = scrollableFrame->renderer();
ASSERT_TRUE(renderer);
- ASSERT_TRUE(renderer->isWidget());
+ ASSERT_TRUE(renderer->isRenderPart());
- RenderWidget* renderWidget = toRenderWidget(renderer);
- ASSERT_TRUE(renderWidget);
- ASSERT_TRUE(renderWidget->widget());
- ASSERT_TRUE(renderWidget->widget()->isFrameView());
+ RenderPart* renderPart = toRenderPart(renderer);
+ ASSERT_TRUE(renderPart);
+ ASSERT_TRUE(renderPart->widget());
+ ASSERT_TRUE(renderPart->widget()->isFrameView());
- FrameView* innerFrameView = toFrameView(renderWidget->widget());
+ FrameView* innerFrameView = toFrameView(renderPart->widget());
RenderView* innerRenderView = innerFrameView->renderView();
ASSERT_TRUE(innerRenderView);
ASSERT_TRUE(webScrollLayer->scrollable());
int expectedScrollPosition = 958 + (innerFrameView->verticalScrollbar()->isOverlayScrollbar() ? 0 : 15);
- ASSERT_EQ(expectedScrollPosition, webScrollLayer->scrollPosition().x);
+ ASSERT_EQ(expectedScrollPosition, webScrollLayer->scrollPositionDouble().x);
}
TEST_F(ScrollingCoordinatorChromiumTest, setupScrollbarLayerShouldNotCrash)
// an empty document by javascript.
}
+#if OS(MACOSX)
+TEST_F(ScrollingCoordinatorChromiumTest, DISABLED_setupScrollbarLayerShouldSetScrollLayerOpaque)
+#else
+TEST_F(ScrollingCoordinatorChromiumTest, setupScrollbarLayerShouldSetScrollLayerOpaque)
+#endif
+{
+ registerMockedHttpURLLoad("wide_document.html");
+ navigateTo(m_baseURL + "wide_document.html");
+ forceFullCompositingUpdate();
+
+ FrameView* frameView = frame()->view();
+ ASSERT_TRUE(frameView);
+
+ GraphicsLayerForScrollTesting* scrollbarGraphicsLayer = static_cast<GraphicsLayerForScrollTesting*>(frameView->layerForHorizontalScrollbar());
+ ASSERT_TRUE(scrollbarGraphicsLayer);
+
+ WebLayer* platformLayer = scrollbarGraphicsLayer->platformLayer();
+ ASSERT_TRUE(platformLayer);
+
+ WebLayer* contentsLayer = scrollbarGraphicsLayer->contentsLayer();
+ ASSERT_TRUE(contentsLayer);
+
+ // After scrollableAreaScrollbarLayerDidChange,
+ // if the main frame's scrollbarLayer is opaque,
+ // contentsLayer should be opaque too.
+ ASSERT_EQ(platformLayer->opaque(), contentsLayer->opaque());
+}
+
} // namespace