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

Unified Diff: ui/compositor/layer_unittest.cc

Issue 16304003: Unified OutputSurface::SwapBuffers. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase to 205473 Created 7 years, 6 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
« no previous file with comments | « ui/compositor/compositor.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/compositor/layer_unittest.cc
diff --git a/ui/compositor/layer_unittest.cc b/ui/compositor/layer_unittest.cc
index 10edfba03e7dce6eb396fbf764e4fdf71f2203f4..c165a2590d0930c1e2f40f1f19967d387eab1cca 100644
--- a/ui/compositor/layer_unittest.cc
+++ b/ui/compositor/layer_unittest.cc
@@ -126,6 +126,10 @@ class LayerWithRealCompositorTest : public testing::Test {
ui::DrawWaiterForTest::Wait(GetCompositor());
}
+ void WaitForCommit() {
+ ui::DrawWaiterForTest::WaitForCommit(GetCompositor());
+ }
+
// Invalidates the entire contents of the layer.
void SchedulePaintForLayer(Layer* layer) {
layer->SchedulePaint(
@@ -254,12 +258,14 @@ class NullLayerDelegate : public LayerDelegate {
class TestCompositorObserver : public CompositorObserver {
public:
TestCompositorObserver()
- : started_(false), ended_(false), aborted_(false) {}
+ : committed_(false), started_(false), ended_(false), aborted_(false) {}
+ bool committed() const { return committed_; }
bool notified() const { return started_ && ended_; }
bool aborted() const { return aborted_; }
void Reset() {
+ committed_ = false;
started_ = false;
ended_ = false;
aborted_ = false;
@@ -267,6 +273,7 @@ class TestCompositorObserver : public CompositorObserver {
private:
virtual void OnCompositingDidCommit(Compositor* compositor) OVERRIDE {
+ committed_ = true;
}
virtual void OnCompositingStarted(Compositor* compositor,
@@ -290,6 +297,7 @@ class TestCompositorObserver : public CompositorObserver {
base::TimeDelta interval) OVERRIDE {
}
+ bool committed_;
bool started_;
bool ended_;
bool aborted_;
@@ -418,6 +426,10 @@ class LayerWithDelegateTest : public testing::Test, public CompositorDelegate {
DrawWaiterForTest::Wait(compositor());
}
+ void WaitForCommit() {
+ DrawWaiterForTest::WaitForCommit(compositor());
+ }
+
// CompositorDelegate overrides.
virtual void ScheduleDraw() OVERRIDE {
DCHECK(!ui::Compositor::WasInitializedWithThread());
@@ -819,11 +831,11 @@ TEST_F(LayerWithRealCompositorTest, MAYBE_CompositorObservers) {
DrawTree(l1.get());
EXPECT_TRUE(observer.notified());
- // As should scheduling a draw and waiting.
+ // ScheduleDraw without any visible change should cause a commit.
observer.Reset();
l1->ScheduleDraw();
- WaitForDraw();
- EXPECT_TRUE(observer.notified());
+ WaitForCommit();
+ EXPECT_TRUE(observer.committed());
// Moving, but not resizing, a layer should alert the observers.
observer.Reset();
@@ -917,15 +929,15 @@ TEST_F(LayerWithRealCompositorTest, MAYBE_ModifyHierarchy) {
// WritePNGFile(bitmap, ref_img2);
EXPECT_TRUE(MatchesPNGFile(bitmap, ref_img2, cc::ExactPixelComparator(true)));
- // l11 is already at the front, should have no effect.
- l0->StackAtTop(l11.get());
+ // should restore to original configuration
+ l0->StackAbove(l12.get(), l11.get());
DrawTree(l0.get());
ASSERT_TRUE(ReadPixels(&bitmap));
ASSERT_FALSE(bitmap.empty());
- EXPECT_TRUE(MatchesPNGFile(bitmap, ref_img2, cc::ExactPixelComparator(true)));
+ EXPECT_TRUE(MatchesPNGFile(bitmap, ref_img1, cc::ExactPixelComparator(true)));
- // l11 is already at the front, should have no effect.
- l0->StackAbove(l11.get(), l12.get());
+ // l11 back to front
+ l0->StackAtTop(l11.get());
DrawTree(l0.get());
ASSERT_TRUE(ReadPixels(&bitmap));
ASSERT_FALSE(bitmap.empty());
@@ -937,6 +949,13 @@ TEST_F(LayerWithRealCompositorTest, MAYBE_ModifyHierarchy) {
ASSERT_TRUE(ReadPixels(&bitmap));
ASSERT_FALSE(bitmap.empty());
EXPECT_TRUE(MatchesPNGFile(bitmap, ref_img1, cc::ExactPixelComparator(true)));
+
+ // l11 back to front
+ l0->StackAbove(l11.get(), l12.get());
+ DrawTree(l0.get());
+ ASSERT_TRUE(ReadPixels(&bitmap));
+ ASSERT_FALSE(bitmap.empty());
+ EXPECT_TRUE(MatchesPNGFile(bitmap, ref_img2, cc::ExactPixelComparator(true)));
}
// Opacity is rendered correctly.
@@ -1033,18 +1052,17 @@ TEST_F(LayerWithDelegateTest, SchedulePaintFromOnPaintLayer) {
SchedulePaintForLayer(root.get());
DrawTree(root.get());
child->SchedulePaint(gfx::Rect(0, 0, 20, 20));
- child_delegate.GetPaintCountAndClear();
+ EXPECT_EQ(1, child_delegate.GetPaintCountAndClear());
// Set a rect so that when OnPaintLayer() is invoked SchedulePaint is invoked
// again.
child_delegate.SetSchedulePaintRect(gfx::Rect(10, 10, 30, 30));
- WaitForDraw();
- // |child| should have been painted once.
+ WaitForCommit();
EXPECT_EQ(1, child_delegate.GetPaintCountAndClear());
// Because SchedulePaint() was invoked from OnPaintLayer() |child| should
// still need to be painted.
- WaitForDraw();
+ WaitForCommit();
EXPECT_EQ(1, child_delegate.GetPaintCountAndClear());
EXPECT_TRUE(child_delegate.last_clip_rect().Contains(
gfx::Rect(10, 10, 30, 30)));
@@ -1227,7 +1245,6 @@ TEST_F(LayerWithDelegateTest, SetBoundsWhenInvisible) {
// Move layer.
child->SetBounds(gfx::Rect(200, 200, 500, 500));
child->SetVisible(true);
- WaitForDraw();
DrawTree(root.get());
EXPECT_FALSE(delegate.painted());
@@ -1239,7 +1256,6 @@ TEST_F(LayerWithDelegateTest, SetBoundsWhenInvisible) {
// Resize layer.
child->SetBounds(gfx::Rect(200, 200, 400, 400));
child->SetVisible(true);
- WaitForDraw();
DrawTree(root.get());
EXPECT_TRUE(delegate.painted());
}
« no previous file with comments | « ui/compositor/compositor.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698