Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(381)

Unified Diff: ui/compositor/layer_unittest.cc

Issue 464643003: Stop painting when receiving delegated frame (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix unittest DCHECK OOPS Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698