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

Side by Side Diff: ui/compositor/compositor_unittest.cc

Issue 2773433003: Fix CompositorResizeLock to do something. (Closed)
Patch Set: resizelock: timeoutparam Created 3 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <stdint.h> 5 #include <stdint.h>
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "base/run_loop.h" 8 #include "base/run_loop.h"
9 #include "base/threading/thread_task_runner_handle.h" 9 #include "base/threading/thread_task_runner_handle.h"
10 #include "cc/output/begin_frame_args.h" 10 #include "cc/output/begin_frame_args.h"
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 base::SingleThreadTaskRunner* task_runner() { return task_runner_.get(); } 55 base::SingleThreadTaskRunner* task_runner() { return task_runner_.get(); }
56 ui::Compositor* compositor() { return compositor_.get(); } 56 ui::Compositor* compositor() { return compositor_.get(); }
57 57
58 private: 58 private:
59 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; 59 scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
60 std::unique_ptr<ui::Compositor> compositor_; 60 std::unique_ptr<ui::Compositor> compositor_;
61 61
62 DISALLOW_COPY_AND_ASSIGN(CompositorTest); 62 DISALLOW_COPY_AND_ASSIGN(CompositorTest);
63 }; 63 };
64 64
65 class MockCompositorLockClient
66 : NON_EXPORTED_BASE(public ui::CompositorLockClient) {
67 public:
68 MOCK_METHOD0(CompositorLockTimedOut, void());
69 };
70
65 } // namespace 71 } // namespace
66 72
67 TEST_F(CompositorTest, LocksTimeOut) { 73 TEST_F(CompositorTest, LocksTimeOut) {
68 scoped_refptr<ui::CompositorLock> lock; 74 scoped_refptr<ui::CompositorLock> lock;
75
76 base::TimeDelta timeout = base::TimeDelta::FromMilliseconds(100);
77
69 { 78 {
79 testing::StrictMock<MockCompositorLockClient> lock_client;
70 base::RunLoop run_loop; 80 base::RunLoop run_loop;
71 // Ensure that the lock times out by default. 81 // This lock has a timeout.
72 lock = compositor()->GetCompositorLock(); 82 lock = compositor()->GetCompositorLock(&lock_client, timeout);
73 EXPECT_TRUE(compositor()->IsLocked()); 83 EXPECT_TRUE(compositor()->IsLocked());
74 task_runner()->PostDelayedTask( 84 task_runner()->PostDelayedTask(FROM_HERE, run_loop.QuitClosure(), timeout);
75 FROM_HERE, run_loop.QuitClosure(), 85 EXPECT_CALL(lock_client, CompositorLockTimedOut()).Times(1);
76 base::TimeDelta::FromMilliseconds(kCompositorLockTimeoutMs));
77 run_loop.Run(); 86 run_loop.Run();
78 EXPECT_FALSE(compositor()->IsLocked()); 87 EXPECT_FALSE(compositor()->IsLocked());
79 } 88 }
80 89
81 { 90 {
91 testing::StrictMock<MockCompositorLockClient> lock_client;
82 base::RunLoop run_loop; 92 base::RunLoop run_loop;
83 // Ensure that the lock does not time out when set. 93 // This lock has no timeout.
84 compositor()->SetLocksWillTimeOut(false); 94 lock = compositor()->GetCompositorLock(&lock_client, base::TimeDelta());
85 lock = compositor()->GetCompositorLock();
86 EXPECT_TRUE(compositor()->IsLocked()); 95 EXPECT_TRUE(compositor()->IsLocked());
87 task_runner()->PostDelayedTask( 96 task_runner()->PostDelayedTask(FROM_HERE, run_loop.QuitClosure(), timeout);
88 FROM_HERE, run_loop.QuitClosure(), 97 EXPECT_CALL(lock_client, CompositorLockTimedOut()).Times(0);
89 base::TimeDelta::FromMilliseconds(kCompositorLockTimeoutMs));
90 run_loop.Run(); 98 run_loop.Run();
91 EXPECT_TRUE(compositor()->IsLocked()); 99 EXPECT_TRUE(compositor()->IsLocked());
92 } 100 }
93 } 101 }
94 102
95 TEST_F(CompositorTest, ReleaseWidgetWithOutputSurfaceNeverCreated) { 103 TEST_F(CompositorTest, ReleaseWidgetWithOutputSurfaceNeverCreated) {
96 compositor()->SetVisible(false); 104 compositor()->SetVisible(false);
97 EXPECT_EQ(gfx::kNullAcceleratedWidget, 105 EXPECT_EQ(gfx::kNullAcceleratedWidget,
98 compositor()->ReleaseAcceleratedWidget()); 106 compositor()->ReleaseAcceleratedWidget());
99 compositor()->SetAcceleratedWidget(gfx::kNullAcceleratedWidget); 107 compositor()->SetAcceleratedWidget(gfx::kNullAcceleratedWidget);
(...skipping 19 matching lines...) Expand all
119 EXPECT_EQ(gfx::kNullAcceleratedWidget, 127 EXPECT_EQ(gfx::kNullAcceleratedWidget,
120 compositor()->ReleaseAcceleratedWidget()); 128 compositor()->ReleaseAcceleratedWidget());
121 compositor()->SetAcceleratedWidget(gfx::kNullAcceleratedWidget); 129 compositor()->SetAcceleratedWidget(gfx::kNullAcceleratedWidget);
122 compositor()->SetVisible(true); 130 compositor()->SetVisible(true);
123 compositor()->ScheduleDraw(); 131 compositor()->ScheduleDraw();
124 DrawWaiterForTest::WaitForCompositingEnded(compositor()); 132 DrawWaiterForTest::WaitForCompositingEnded(compositor());
125 compositor()->SetRootLayer(nullptr); 133 compositor()->SetRootLayer(nullptr);
126 } 134 }
127 135
128 } // namespace ui 136 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698