| Index: cc/content_layer_unittest.cc
|
| diff --git a/cc/content_layer_unittest.cc b/cc/content_layer_unittest.cc
|
| index c7f32bec60fd0d7cf6726a59c3f7f9ac6db5b520..4a0ab233a42a6b1fab29ab7a0c3ebd3f3252eb7b 100644
|
| --- a/cc/content_layer_unittest.cc
|
| +++ b/cc/content_layer_unittest.cc
|
| @@ -7,6 +7,7 @@
|
| #include "cc/bitmap_content_layer_updater.h"
|
| #include "cc/content_layer_client.h"
|
| #include "cc/rendering_stats.h"
|
| +#include "cc/resource_update_queue.h"
|
| #include "cc/test/geometry_test_utils.h"
|
| #include "skia/ext/platform_canvas.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| @@ -17,6 +18,25 @@ using namespace WebKit;
|
| namespace cc {
|
| namespace {
|
|
|
| +class FakeContentLayer : public ContentLayer {
|
| +public:
|
| + explicit FakeContentLayer(ContentLayerClient* client) : ContentLayer(client) { }
|
| +
|
| + virtual void setNeedsDisplayRect(const gfx::RectF& dirtyRect) OVERRIDE
|
| + {
|
| + m_lastDirtyRect = dirtyRect;
|
| + ContentLayer::setNeedsDisplayRect(dirtyRect);
|
| + }
|
| + gfx::RectF lastDirtyRect() const { return m_lastDirtyRect; }
|
| +
|
| +protected:
|
| + virtual ~FakeContentLayer() { }
|
| + virtual void createUpdaterIfNeeded() OVERRIDE { }
|
| +
|
| +private:
|
| + gfx::RectF m_lastDirtyRect;
|
| +};
|
| +
|
| class MockContentLayerClient : public ContentLayerClient {
|
| public:
|
| explicit MockContentLayerClient(gfx::Rect opaqueLayerRect)
|
| @@ -49,5 +69,59 @@ TEST(ContentLayerTest, ContentLayerPainterWithDeviceScale)
|
| EXPECT_RECT_EQ(gfx::ToEnclosingRect(opaqueRectInContentSpace), resultingOpaqueRect);
|
| }
|
|
|
| +TEST(ContentLayerTest, CanUseLCDTextEnableCount)
|
| +{
|
| + scoped_refptr<FakeContentLayer> layer = new FakeContentLayer(NULL);
|
| + layer->setBounds(gfx::Size(100, 100));
|
| + ResourceUpdateQueue queue;
|
| + RenderingStats stats;
|
| +
|
| + // By default LCD text is disabled.
|
| + EXPECT_FALSE(layer->canUseLCDText());
|
| +
|
| + // LCD text can be enabled once.
|
| + layer->drawProperties().can_use_lcd_text = true;
|
| + layer->update(queue, NULL, stats);
|
| + EXPECT_TRUE(layer->canUseLCDText());
|
| +
|
| + // LCD text can always be disabled.
|
| + layer->drawProperties().can_use_lcd_text = false;
|
| + layer->update(queue, NULL, stats);
|
| + EXPECT_FALSE(layer->canUseLCDText());
|
| +
|
| + // LCD text cannot be enabled anymore.
|
| + layer->drawProperties().can_use_lcd_text = true;
|
| + layer->update(queue, NULL, stats);
|
| + EXPECT_FALSE(layer->canUseLCDText());
|
| +}
|
| +
|
| +TEST(ContentLayerTest, CanUseLCDTextChangeTriggersRepaint)
|
| +{
|
| + scoped_refptr<FakeContentLayer> layer = new FakeContentLayer(NULL);
|
| + layer->setBounds(gfx::Size(100, 100));
|
| + gfx::RectF dirtyRect(100, 100);
|
| + ResourceUpdateQueue queue;
|
| + RenderingStats stats;
|
| +
|
| + // By default LCD text is disabled.
|
| + EXPECT_FALSE(layer->canUseLCDText());
|
| +
|
| + // Enable LCD text and verify that it triggers invalidation.
|
| + layer->drawProperties().can_use_lcd_text = true;
|
| + layer->update(queue, NULL, stats);
|
| + EXPECT_TRUE(layer->canUseLCDText());
|
| + EXPECT_EQ(dirtyRect, layer->lastDirtyRect());
|
| +
|
| + // Reset dirty rect.
|
| + layer->setNeedsDisplayRect(gfx::RectF());
|
| + EXPECT_EQ(gfx::RectF(), layer->lastDirtyRect());
|
| +
|
| + // Disable LCD text and verify that it triggers invalidation.
|
| + layer->drawProperties().can_use_lcd_text = false;
|
| + layer->update(queue, NULL, stats);
|
| + EXPECT_FALSE(layer->canUseLCDText());
|
| + EXPECT_EQ(dirtyRect, layer->lastDirtyRect());
|
| +}
|
| +
|
| } // namespace
|
| } // namespace cc
|
|
|