Index: ui/compositor/layer_unittest.cc |
diff --git a/ui/compositor/layer_unittest.cc b/ui/compositor/layer_unittest.cc |
index 9cb80c4d9975ec224fa7bd9ad1a91b3e1d120871..d2996d6fffad9317a340a5b2492e534f90773a8b 100644 |
--- a/ui/compositor/layer_unittest.cc |
+++ b/ui/compositor/layer_unittest.cc |
@@ -66,6 +66,9 @@ class ColoredLayer : public Layer, public LayerDelegate { |
canvas->DrawColor(color_); |
} |
+ virtual void OnDelegatedFrameDamage( |
+ const gfx::Rect& damage_rect_in_dip) OVERRIDE {} |
+ |
virtual void OnDeviceScaleFactorChanged(float device_scale_factor) OVERRIDE { |
} |
@@ -240,6 +243,9 @@ class TestLayerDelegate : public LayerDelegate { |
scale_y_ = matrix.getScaleY(); |
} |
+ virtual void OnDelegatedFrameDamage( |
+ const gfx::Rect& damage_rect_in_dip) OVERRIDE {} |
+ |
virtual void OnDeviceScaleFactorChanged(float device_scale_factor) OVERRIDE { |
device_scale_factor_ = device_scale_factor; |
} |
@@ -283,6 +289,8 @@ class DrawTreeLayerDelegate : public LayerDelegate { |
virtual void OnPaintLayer(gfx::Canvas* canvas) OVERRIDE { |
painted_ = true; |
} |
+ virtual void OnDelegatedFrameDamage( |
+ const gfx::Rect& damage_rect_in_dip) OVERRIDE {} |
virtual void OnDeviceScaleFactorChanged(float device_scale_factor) OVERRIDE { |
} |
virtual base::Closure PrepareForLayerBoundsChange() OVERRIDE { |
@@ -302,10 +310,10 @@ class NullLayerDelegate : public LayerDelegate { |
private: |
// Overridden from LayerDelegate: |
- virtual void OnPaintLayer(gfx::Canvas* canvas) OVERRIDE { |
- } |
- virtual void OnDeviceScaleFactorChanged(float device_scale_factor) OVERRIDE { |
- } |
+ virtual void OnPaintLayer(gfx::Canvas* canvas) OVERRIDE {} |
+ virtual void OnDelegatedFrameDamage( |
+ const gfx::Rect& damage_rect_in_dip) OVERRIDE {} |
+ virtual void OnDeviceScaleFactorChanged(float device_scale_factor) OVERRIDE {} |
virtual base::Closure PrepareForLayerBoundsChange() OVERRIDE { |
return base::Closure(); |
} |
@@ -1121,6 +1129,9 @@ class SchedulePaintLayerDelegate : public LayerDelegate { |
last_clip_rect_ = gfx::SkRectToRectF(sk_clip_rect); |
} |
+ virtual void OnDelegatedFrameDamage( |
+ const gfx::Rect& damage_rect_in_dip) OVERRIDE {} |
+ |
virtual void OnDeviceScaleFactorChanged(float device_scale_factor) OVERRIDE { |
} |
@@ -1591,4 +1602,45 @@ TEST_F(LayerWithRealCompositorTest, SnapLayerToPixels) { |
Vector2dFTo100thPercisionString(c11->subpixel_position_offset())); |
} |
+class FrameDamageCheckingDelegate : public TestLayerDelegate { |
+ public: |
+ FrameDamageCheckingDelegate() : delegated_frame_damage_called_(false) {} |
+ |
+ virtual void OnDelegatedFrameDamage( |
+ const gfx::Rect& damage_rect_in_dip) OVERRIDE { |
+ delegated_frame_damage_called_ = true; |
+ delegated_frame_damage_rect_ = damage_rect_in_dip; |
+ } |
+ |
+ const gfx::Rect& delegated_frame_damage_rect() const { |
+ return delegated_frame_damage_rect_; |
+ } |
+ bool delegated_frame_damage_called() const { |
+ return delegated_frame_damage_called_; |
+ } |
+ |
+ private: |
+ gfx::Rect delegated_frame_damage_rect_; |
+ bool delegated_frame_damage_called_; |
+}; |
+ |
+TEST(LayerDelegateTest, DelegatedFrameDamage) { |
+ scoped_ptr<Layer> layer(new Layer(LAYER_TEXTURED)); |
+ gfx::Rect damage_rect(2, 1, 5, 3); |
+ |
+ FrameDamageCheckingDelegate delegate; |
+ layer->set_delegate(&delegate); |
+ scoped_refptr<cc::DelegatedFrameResourceCollection> resource_collection = |
+ new cc::DelegatedFrameResourceCollection; |
+ scoped_refptr<cc::DelegatedFrameProvider> frame_provider( |
+ new cc::DelegatedFrameProvider(resource_collection.get(), |
+ MakeFrameData(gfx::Size(10, 10)))); |
+ layer->SetShowDelegatedContent(frame_provider, gfx::Size(10, 10)); |
+ |
+ EXPECT_FALSE(delegate.delegated_frame_damage_called()); |
+ layer->OnDelegatedFrameDamage(damage_rect); |
+ EXPECT_TRUE(delegate.delegated_frame_damage_called()); |
+ EXPECT_EQ(damage_rect, delegate.delegated_frame_damage_rect()); |
+} |
+ |
} // namespace ui |