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

Side by Side Diff: content/browser/renderer_host/compositor_resize_lock_unittest.cc

Issue 2773433003: Fix CompositorResizeLock to do something. (Closed)
Patch Set: resizelock: observer-rebase Created 3 years, 8 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
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "content/browser/renderer_host/compositor_resize_lock.h"
6
7 #include "base/memory/ptr_util.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9 #include "ui/compositor/test/fake_compositor_lock.h"
10
11 namespace content {
12 namespace {
13
14 class FakeCompositorResizeLockClient
15 : public CompositorResizeLockClient,
16 public NON_EXPORTED_BASE(ui::CompositorLockDelegate) {
17 public:
18 FakeCompositorResizeLockClient() : weak_ptr_factory_(this) {}
19
20 std::unique_ptr<ui::CompositorLock> GetCompositorLock(
21 ui::CompositorLockClient* client) override {
22 created_ = true;
23 compositor_lock_ =
24 new ui::FakeCompositorLock(client, weak_ptr_factory_.GetWeakPtr());
25 return base::WrapUnique(compositor_lock_);
26 }
27
28 // CompositorResizeLockClient implementation.
29 void CompositorResizeLockEnded() override {
30 // This informs when the CompositorResizeLock ends for the client to
31 // release anything else it is holding.
32 ended_ = true;
33 }
34
35 // CompositorLockDelegate implementation.
36 void RemoveCompositorLock(ui::CompositorLock* lock) override {
37 // This is where the ui::Compositor would be physically unlocked.
38 unlocked_ = true;
39 }
40
41 void CauseTimeout() { compositor_lock_->TimeoutLock(); }
42
43 bool created() const { return created_; }
44 bool unlocked() const { return unlocked_; }
45 bool ended() const { return ended_; }
46
47 private:
48 bool created_ = false;
49 bool unlocked_ = false;
50 bool ended_ = false;
51 ui::FakeCompositorLock* compositor_lock_ = nullptr;
52 base::WeakPtrFactory<FakeCompositorResizeLockClient> weak_ptr_factory_;
53 };
54
55 TEST(CompositorResizeLockTest, EndWithoutLock) {
56 FakeCompositorResizeLockClient resize_client;
57 gfx::Size resize_to(10, 11);
58
59 {
60 CompositorResizeLock resize_lock(&resize_client, resize_to);
61 EXPECT_FALSE(resize_client.created());
62 EXPECT_FALSE(resize_client.unlocked());
63 EXPECT_FALSE(resize_client.ended());
64 }
65 // The compositor was never locked.
66 EXPECT_FALSE(resize_client.unlocked());
67 // The resize lock tells the client when it is destroyed.
68 EXPECT_TRUE(resize_client.ended());
69 }
70
71 TEST(CompositorResizeLockTest, EndAfterLock) {
72 FakeCompositorResizeLockClient resize_client;
73 gfx::Size resize_to(10, 11);
74
75 {
76 CompositorResizeLock resize_lock(&resize_client, resize_to);
77 EXPECT_FALSE(resize_client.created());
78 EXPECT_FALSE(resize_client.ended());
79
80 resize_lock.Lock();
81 EXPECT_TRUE(resize_client.created());
82 EXPECT_FALSE(resize_client.ended());
83 }
84 // The resize lock unlocks the compositor when it ends.
85 EXPECT_TRUE(resize_client.unlocked());
86 // The resize lock tells the client when it ends.
87 EXPECT_TRUE(resize_client.ended());
88 }
89
90 TEST(CompositorResizeLockTest, EndAfterUnlock) {
91 FakeCompositorResizeLockClient resize_client;
92 gfx::Size resize_to(10, 11);
93
94 {
95 CompositorResizeLock resize_lock(&resize_client, resize_to);
96 EXPECT_FALSE(resize_client.created());
97 EXPECT_FALSE(resize_client.ended());
98
99 resize_lock.Lock();
100 EXPECT_TRUE(resize_client.created());
101 EXPECT_FALSE(resize_client.ended());
102
103 // Unlocking the compositor but keeping the resize lock.
104 resize_lock.UnlockCompositor();
105 EXPECT_TRUE(resize_client.unlocked());
106 EXPECT_FALSE(resize_client.ended());
107 }
108 // The resize lock tells the client when it ends.
109 EXPECT_TRUE(resize_client.ended());
110 }
111
112 TEST(CompositorResizeLockTest, EndAfterTimeout) {
113 FakeCompositorResizeLockClient resize_client;
114 gfx::Size resize_to(10, 11);
115
116 {
117 CompositorResizeLock resize_lock(&resize_client, resize_to);
118 EXPECT_FALSE(resize_client.created());
119 EXPECT_FALSE(resize_client.ended());
120
121 resize_lock.Lock();
122 EXPECT_TRUE(resize_client.created());
123 EXPECT_FALSE(resize_client.ended());
124
125 // A timeout tells the client that the lock ended.
126 resize_client.CauseTimeout();
127 EXPECT_TRUE(resize_client.unlocked());
128 EXPECT_TRUE(resize_client.ended());
129 }
130 }
131
132 } // namespace
133 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/compositor_resize_lock_aura.cc ('k') | content/browser/renderer_host/delegated_frame_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698