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

Side by Side Diff: content/renderer/gpu/frame_swap_message_queue_unittest.cc

Issue 1873783003: Convert //content/renderer from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "content/renderer/gpu/frame_swap_message_queue.h" 5 #include "content/renderer/gpu/frame_swap_message_queue.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/memory/ptr_util.h"
9 #include "ipc/ipc_message.h" 10 #include "ipc/ipc_message.h"
10 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
11 12
12 namespace content { 13 namespace content {
13 14
14 class FrameSwapMessageQueueTest : public testing::Test { 15 class FrameSwapMessageQueueTest : public testing::Test {
15 public: 16 public:
16 FrameSwapMessageQueueTest() 17 FrameSwapMessageQueueTest()
17 : first_message_(41, 1, IPC::Message::PRIORITY_NORMAL), 18 : first_message_(41, 1, IPC::Message::PRIORITY_NORMAL),
18 second_message_(42, 2, IPC::Message::PRIORITY_NORMAL), 19 second_message_(42, 2, IPC::Message::PRIORITY_NORMAL),
19 third_message_(43, 3, IPC::Message::PRIORITY_NORMAL), 20 third_message_(43, 3, IPC::Message::PRIORITY_NORMAL),
20 queue_(new FrameSwapMessageQueue()) {} 21 queue_(new FrameSwapMessageQueue()) {}
21 22
22 protected: 23 protected:
23 void QueueNextSwapMessage(scoped_ptr<IPC::Message> msg) { 24 void QueueNextSwapMessage(std::unique_ptr<IPC::Message> msg) {
24 queue_->QueueMessageForFrame(MESSAGE_DELIVERY_POLICY_WITH_NEXT_SWAP, 0, 25 queue_->QueueMessageForFrame(MESSAGE_DELIVERY_POLICY_WITH_NEXT_SWAP, 0,
25 std::move(msg), NULL); 26 std::move(msg), NULL);
26 } 27 }
27 28
28 void QueueNextSwapMessage(scoped_ptr<IPC::Message> msg, bool* first) { 29 void QueueNextSwapMessage(std::unique_ptr<IPC::Message> msg, bool* first) {
29 queue_->QueueMessageForFrame(MESSAGE_DELIVERY_POLICY_WITH_NEXT_SWAP, 0, 30 queue_->QueueMessageForFrame(MESSAGE_DELIVERY_POLICY_WITH_NEXT_SWAP, 0,
30 std::move(msg), first); 31 std::move(msg), first);
31 } 32 }
32 33
33 void QueueVisualStateMessage(int source_frame_number, 34 void QueueVisualStateMessage(int source_frame_number,
34 scoped_ptr<IPC::Message> msg) { 35 std::unique_ptr<IPC::Message> msg) {
35 queue_->QueueMessageForFrame(MESSAGE_DELIVERY_POLICY_WITH_VISUAL_STATE, 36 queue_->QueueMessageForFrame(MESSAGE_DELIVERY_POLICY_WITH_VISUAL_STATE,
36 source_frame_number, std::move(msg), NULL); 37 source_frame_number, std::move(msg), NULL);
37 } 38 }
38 39
39 void QueueVisualStateMessage(int source_frame_number, 40 void QueueVisualStateMessage(int source_frame_number,
40 scoped_ptr<IPC::Message> msg, 41 std::unique_ptr<IPC::Message> msg,
41 bool* first) { 42 bool* first) {
42 queue_->QueueMessageForFrame(MESSAGE_DELIVERY_POLICY_WITH_VISUAL_STATE, 43 queue_->QueueMessageForFrame(MESSAGE_DELIVERY_POLICY_WITH_VISUAL_STATE,
43 source_frame_number, std::move(msg), first); 44 source_frame_number, std::move(msg), first);
44 } 45 }
45 46
46 void DrainMessages(int source_frame_number, 47 void DrainMessages(int source_frame_number,
47 std::vector<scoped_ptr<IPC::Message>>* messages) { 48 std::vector<std::unique_ptr<IPC::Message>>* messages) {
48 messages->clear(); 49 messages->clear();
49 queue_->DidActivate(source_frame_number); 50 queue_->DidActivate(source_frame_number);
50 queue_->DidSwap(source_frame_number); 51 queue_->DidSwap(source_frame_number);
51 scoped_ptr<FrameSwapMessageQueue::SendMessageScope> send_message_scope = 52 std::unique_ptr<FrameSwapMessageQueue::SendMessageScope>
52 queue_->AcquireSendMessageScope(); 53 send_message_scope = queue_->AcquireSendMessageScope();
53 queue_->DrainMessages(messages); 54 queue_->DrainMessages(messages);
54 } 55 }
55 56
56 bool HasMessageForId(const std::vector<scoped_ptr<IPC::Message>>& messages, 57 bool HasMessageForId(
57 int routing_id) { 58 const std::vector<std::unique_ptr<IPC::Message>>& messages,
59 int routing_id) {
58 for (const auto& msg : messages) { 60 for (const auto& msg : messages) {
59 if (msg->routing_id() == routing_id) 61 if (msg->routing_id() == routing_id)
60 return true; 62 return true;
61 } 63 }
62 return false; 64 return false;
63 } 65 }
64 66
65 scoped_ptr<IPC::Message> CloneMessage(const IPC::Message& other) { 67 std::unique_ptr<IPC::Message> CloneMessage(const IPC::Message& other) {
66 return make_scoped_ptr(new IPC::Message(other)); 68 return base::WrapUnique(new IPC::Message(other));
67 } 69 }
68 70
69 void TestDidNotSwap(cc::SwapPromise::DidNotSwapReason reason); 71 void TestDidNotSwap(cc::SwapPromise::DidNotSwapReason reason);
70 72
71 IPC::Message first_message_; 73 IPC::Message first_message_;
72 IPC::Message second_message_; 74 IPC::Message second_message_;
73 IPC::Message third_message_; 75 IPC::Message third_message_;
74 scoped_refptr<FrameSwapMessageQueue> queue_; 76 scoped_refptr<FrameSwapMessageQueue> queue_;
75 }; 77 };
76 78
77 TEST_F(FrameSwapMessageQueueTest, TestEmptyQueueDrain) { 79 TEST_F(FrameSwapMessageQueueTest, TestEmptyQueueDrain) {
78 std::vector<scoped_ptr<IPC::Message>> messages; 80 std::vector<std::unique_ptr<IPC::Message>> messages;
79 81
80 DrainMessages(0, &messages); 82 DrainMessages(0, &messages);
81 ASSERT_TRUE(messages.empty()); 83 ASSERT_TRUE(messages.empty());
82 } 84 }
83 85
84 TEST_F(FrameSwapMessageQueueTest, TestEmpty) { 86 TEST_F(FrameSwapMessageQueueTest, TestEmpty) {
85 std::vector<scoped_ptr<IPC::Message>> messages; 87 std::vector<std::unique_ptr<IPC::Message>> messages;
86 ASSERT_TRUE(queue_->Empty()); 88 ASSERT_TRUE(queue_->Empty());
87 QueueNextSwapMessage(CloneMessage(first_message_)); 89 QueueNextSwapMessage(CloneMessage(first_message_));
88 ASSERT_FALSE(queue_->Empty()); 90 ASSERT_FALSE(queue_->Empty());
89 DrainMessages(0, &messages); 91 DrainMessages(0, &messages);
90 ASSERT_TRUE(queue_->Empty()); 92 ASSERT_TRUE(queue_->Empty());
91 QueueVisualStateMessage(1, CloneMessage(first_message_)); 93 QueueVisualStateMessage(1, CloneMessage(first_message_));
92 ASSERT_FALSE(queue_->Empty()); 94 ASSERT_FALSE(queue_->Empty());
93 queue_->DidActivate(1); 95 queue_->DidActivate(1);
94 queue_->DidSwap(1); 96 queue_->DidSwap(1);
95 ASSERT_FALSE(queue_->Empty()); 97 ASSERT_FALSE(queue_->Empty());
96 } 98 }
97 99
98 TEST_F(FrameSwapMessageQueueTest, TestQueueMessageFirst) { 100 TEST_F(FrameSwapMessageQueueTest, TestQueueMessageFirst) {
99 std::vector<scoped_ptr<IPC::Message>> messages; 101 std::vector<std::unique_ptr<IPC::Message>> messages;
100 bool visual_state_first = false; 102 bool visual_state_first = false;
101 bool next_swap_first = false; 103 bool next_swap_first = false;
102 104
103 // Queuing the first time should result in true. 105 // Queuing the first time should result in true.
104 QueueVisualStateMessage(1, CloneMessage(first_message_), &visual_state_first); 106 QueueVisualStateMessage(1, CloneMessage(first_message_), &visual_state_first);
105 ASSERT_TRUE(visual_state_first); 107 ASSERT_TRUE(visual_state_first);
106 // Queuing the second time should result in true. 108 // Queuing the second time should result in true.
107 QueueVisualStateMessage( 109 QueueVisualStateMessage(
108 1, CloneMessage(second_message_), &visual_state_first); 110 1, CloneMessage(second_message_), &visual_state_first);
109 ASSERT_FALSE(visual_state_first); 111 ASSERT_FALSE(visual_state_first);
110 // Queuing for a different frame should result in true. 112 // Queuing for a different frame should result in true.
111 QueueVisualStateMessage(2, CloneMessage(first_message_), &visual_state_first); 113 QueueVisualStateMessage(2, CloneMessage(first_message_), &visual_state_first);
112 ASSERT_TRUE(visual_state_first); 114 ASSERT_TRUE(visual_state_first);
113 115
114 // Queuing for a different policy should result in true. 116 // Queuing for a different policy should result in true.
115 QueueNextSwapMessage(CloneMessage(first_message_), &next_swap_first); 117 QueueNextSwapMessage(CloneMessage(first_message_), &next_swap_first);
116 ASSERT_TRUE(next_swap_first); 118 ASSERT_TRUE(next_swap_first);
117 // Second time for the same policy is still false. 119 // Second time for the same policy is still false.
118 QueueNextSwapMessage(CloneMessage(first_message_), &next_swap_first); 120 QueueNextSwapMessage(CloneMessage(first_message_), &next_swap_first);
119 ASSERT_FALSE(next_swap_first); 121 ASSERT_FALSE(next_swap_first);
120 122
121 DrainMessages(4, &messages); 123 DrainMessages(4, &messages);
122 // Queuing after all messages are drained is a true again. 124 // Queuing after all messages are drained is a true again.
123 QueueVisualStateMessage(4, CloneMessage(first_message_), &visual_state_first); 125 QueueVisualStateMessage(4, CloneMessage(first_message_), &visual_state_first);
124 ASSERT_TRUE(visual_state_first); 126 ASSERT_TRUE(visual_state_first);
125 } 127 }
126 128
127 TEST_F(FrameSwapMessageQueueTest, TestNextSwapMessageSentWithNextFrame) { 129 TEST_F(FrameSwapMessageQueueTest, TestNextSwapMessageSentWithNextFrame) {
128 std::vector<scoped_ptr<IPC::Message>> messages; 130 std::vector<std::unique_ptr<IPC::Message>> messages;
129 131
130 DrainMessages(1, &messages); 132 DrainMessages(1, &messages);
131 QueueNextSwapMessage(CloneMessage(first_message_)); 133 QueueNextSwapMessage(CloneMessage(first_message_));
132 DrainMessages(2, &messages); 134 DrainMessages(2, &messages);
133 ASSERT_EQ(1u, messages.size()); 135 ASSERT_EQ(1u, messages.size());
134 ASSERT_EQ(first_message_.routing_id(), messages.front()->routing_id()); 136 ASSERT_EQ(first_message_.routing_id(), messages.front()->routing_id());
135 messages.clear(); 137 messages.clear();
136 138
137 DrainMessages(2, &messages); 139 DrainMessages(2, &messages);
138 ASSERT_TRUE(messages.empty()); 140 ASSERT_TRUE(messages.empty());
139 } 141 }
140 142
141 TEST_F(FrameSwapMessageQueueTest, TestNextSwapMessageSentWithCurrentFrame) { 143 TEST_F(FrameSwapMessageQueueTest, TestNextSwapMessageSentWithCurrentFrame) {
142 std::vector<scoped_ptr<IPC::Message>> messages; 144 std::vector<std::unique_ptr<IPC::Message>> messages;
143 145
144 DrainMessages(1, &messages); 146 DrainMessages(1, &messages);
145 QueueNextSwapMessage(CloneMessage(first_message_)); 147 QueueNextSwapMessage(CloneMessage(first_message_));
146 DrainMessages(1, &messages); 148 DrainMessages(1, &messages);
147 ASSERT_EQ(1u, messages.size()); 149 ASSERT_EQ(1u, messages.size());
148 ASSERT_EQ(first_message_.routing_id(), messages.front()->routing_id()); 150 ASSERT_EQ(first_message_.routing_id(), messages.front()->routing_id());
149 messages.clear(); 151 messages.clear();
150 152
151 DrainMessages(1, &messages); 153 DrainMessages(1, &messages);
152 ASSERT_TRUE(messages.empty()); 154 ASSERT_TRUE(messages.empty());
153 } 155 }
154 156
155 TEST_F(FrameSwapMessageQueueTest, 157 TEST_F(FrameSwapMessageQueueTest,
156 TestDrainsVisualStateMessagesForCorrespondingFrames) { 158 TestDrainsVisualStateMessagesForCorrespondingFrames) {
157 std::vector<scoped_ptr<IPC::Message>> messages; 159 std::vector<std::unique_ptr<IPC::Message>> messages;
158 160
159 QueueVisualStateMessage(1, CloneMessage(first_message_)); 161 QueueVisualStateMessage(1, CloneMessage(first_message_));
160 QueueVisualStateMessage(2, CloneMessage(second_message_)); 162 QueueVisualStateMessage(2, CloneMessage(second_message_));
161 QueueVisualStateMessage(3, CloneMessage(third_message_)); 163 QueueVisualStateMessage(3, CloneMessage(third_message_));
162 DrainMessages(0, &messages); 164 DrainMessages(0, &messages);
163 ASSERT_TRUE(messages.empty()); 165 ASSERT_TRUE(messages.empty());
164 166
165 DrainMessages(2, &messages); 167 DrainMessages(2, &messages);
166 ASSERT_EQ(2u, messages.size()); 168 ASSERT_EQ(2u, messages.size());
167 ASSERT_TRUE(HasMessageForId(messages, first_message_.routing_id())); 169 ASSERT_TRUE(HasMessageForId(messages, first_message_.routing_id()));
168 ASSERT_TRUE(HasMessageForId(messages, second_message_.routing_id())); 170 ASSERT_TRUE(HasMessageForId(messages, second_message_.routing_id()));
169 messages.clear(); 171 messages.clear();
170 172
171 DrainMessages(2, &messages); 173 DrainMessages(2, &messages);
172 ASSERT_TRUE(messages.empty()); 174 ASSERT_TRUE(messages.empty());
173 175
174 DrainMessages(5, &messages); 176 DrainMessages(5, &messages);
175 ASSERT_EQ(1u, messages.size()); 177 ASSERT_EQ(1u, messages.size());
176 ASSERT_EQ(third_message_.routing_id(), messages.front()->routing_id()); 178 ASSERT_EQ(third_message_.routing_id(), messages.front()->routing_id());
177 } 179 }
178 180
179 TEST_F(FrameSwapMessageQueueTest, 181 TEST_F(FrameSwapMessageQueueTest,
180 TestQueueNextSwapMessagePreservesFifoOrdering) { 182 TestQueueNextSwapMessagePreservesFifoOrdering) {
181 std::vector<scoped_ptr<IPC::Message>> messages; 183 std::vector<std::unique_ptr<IPC::Message>> messages;
182 184
183 QueueNextSwapMessage(CloneMessage(first_message_)); 185 QueueNextSwapMessage(CloneMessage(first_message_));
184 QueueNextSwapMessage(CloneMessage(second_message_)); 186 QueueNextSwapMessage(CloneMessage(second_message_));
185 DrainMessages(1, &messages); 187 DrainMessages(1, &messages);
186 ASSERT_EQ(2u, messages.size()); 188 ASSERT_EQ(2u, messages.size());
187 ASSERT_EQ(first_message_.routing_id(), messages[0]->routing_id()); 189 ASSERT_EQ(first_message_.routing_id(), messages[0]->routing_id());
188 ASSERT_EQ(second_message_.routing_id(), messages[1]->routing_id()); 190 ASSERT_EQ(second_message_.routing_id(), messages[1]->routing_id());
189 } 191 }
190 192
191 TEST_F(FrameSwapMessageQueueTest, 193 TEST_F(FrameSwapMessageQueueTest,
192 TestQueueVisualStateMessagePreservesFifoOrdering) { 194 TestQueueVisualStateMessagePreservesFifoOrdering) {
193 std::vector<scoped_ptr<IPC::Message>> messages; 195 std::vector<std::unique_ptr<IPC::Message>> messages;
194 196
195 QueueVisualStateMessage(1, CloneMessage(first_message_)); 197 QueueVisualStateMessage(1, CloneMessage(first_message_));
196 QueueVisualStateMessage(1, CloneMessage(second_message_)); 198 QueueVisualStateMessage(1, CloneMessage(second_message_));
197 DrainMessages(1, &messages); 199 DrainMessages(1, &messages);
198 ASSERT_EQ(2u, messages.size()); 200 ASSERT_EQ(2u, messages.size());
199 ASSERT_EQ(first_message_.routing_id(), messages[0]->routing_id()); 201 ASSERT_EQ(first_message_.routing_id(), messages[0]->routing_id());
200 ASSERT_EQ(second_message_.routing_id(), messages[1]->routing_id()); 202 ASSERT_EQ(second_message_.routing_id(), messages[1]->routing_id());
201 } 203 }
202 204
203 void FrameSwapMessageQueueTest::TestDidNotSwap( 205 void FrameSwapMessageQueueTest::TestDidNotSwap(
204 cc::SwapPromise::DidNotSwapReason reason) { 206 cc::SwapPromise::DidNotSwapReason reason) {
205 std::vector<scoped_ptr<IPC::Message>> messages; 207 std::vector<std::unique_ptr<IPC::Message>> messages;
206 208
207 QueueNextSwapMessage(CloneMessage(first_message_)); 209 QueueNextSwapMessage(CloneMessage(first_message_));
208 QueueVisualStateMessage(2, CloneMessage(second_message_)); 210 QueueVisualStateMessage(2, CloneMessage(second_message_));
209 QueueVisualStateMessage(3, CloneMessage(third_message_)); 211 QueueVisualStateMessage(3, CloneMessage(third_message_));
210 const int rid[] = {first_message_.routing_id(), 212 const int rid[] = {first_message_.routing_id(),
211 second_message_.routing_id(), 213 second_message_.routing_id(),
212 third_message_.routing_id()}; 214 third_message_.routing_id()};
213 215
214 bool msg_delivered = reason != cc::SwapPromise::COMMIT_FAILS && 216 bool msg_delivered = reason != cc::SwapPromise::COMMIT_FAILS &&
215 reason != cc::SwapPromise::ACTIVATION_FAILS; 217 reason != cc::SwapPromise::ACTIVATION_FAILS;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 NotifiesDeletionMessage(bool* deleted, const IPC::Message& other) 257 NotifiesDeletionMessage(bool* deleted, const IPC::Message& other)
256 : IPC::Message(other), deleted_(deleted) {} 258 : IPC::Message(other), deleted_(deleted) {}
257 ~NotifiesDeletionMessage() override { *deleted_ = true; } 259 ~NotifiesDeletionMessage() override { *deleted_ = true; }
258 260
259 private: 261 private:
260 bool* deleted_; 262 bool* deleted_;
261 }; 263 };
262 264
263 TEST_F(FrameSwapMessageQueueTest, TestDeletesNextSwapMessage) { 265 TEST_F(FrameSwapMessageQueueTest, TestDeletesNextSwapMessage) {
264 bool message_deleted = false; 266 bool message_deleted = false;
265 QueueNextSwapMessage(make_scoped_ptr( 267 QueueNextSwapMessage(base::WrapUnique(
266 new NotifiesDeletionMessage(&message_deleted, first_message_))); 268 new NotifiesDeletionMessage(&message_deleted, first_message_)));
267 queue_ = NULL; 269 queue_ = NULL;
268 ASSERT_TRUE(message_deleted); 270 ASSERT_TRUE(message_deleted);
269 } 271 }
270 272
271 TEST_F(FrameSwapMessageQueueTest, TestDeletesVisualStateMessage) { 273 TEST_F(FrameSwapMessageQueueTest, TestDeletesVisualStateMessage) {
272 bool message_deleted = false; 274 bool message_deleted = false;
273 QueueVisualStateMessage(1, 275 QueueVisualStateMessage(1, base::WrapUnique(new NotifiesDeletionMessage(
274 make_scoped_ptr(new NotifiesDeletionMessage( 276 &message_deleted, first_message_)));
275 &message_deleted, first_message_)));
276 queue_ = NULL; 277 queue_ = NULL;
277 ASSERT_TRUE(message_deleted); 278 ASSERT_TRUE(message_deleted);
278 } 279 }
279 280
280 TEST_F(FrameSwapMessageQueueTest, TestDeletesQueuedVisualStateMessage) { 281 TEST_F(FrameSwapMessageQueueTest, TestDeletesQueuedVisualStateMessage) {
281 bool message_deleted = false; 282 bool message_deleted = false;
282 QueueVisualStateMessage(1, 283 QueueVisualStateMessage(1, base::WrapUnique(new NotifiesDeletionMessage(
283 make_scoped_ptr(new NotifiesDeletionMessage( 284 &message_deleted, first_message_)));
284 &message_deleted, first_message_)));
285 queue_->DidActivate(1); 285 queue_->DidActivate(1);
286 queue_->DidSwap(1); 286 queue_->DidSwap(1);
287 queue_ = NULL; 287 queue_ = NULL;
288 ASSERT_TRUE(message_deleted); 288 ASSERT_TRUE(message_deleted);
289 } 289 }
290 290
291 } // namespace content 291 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/gpu/frame_swap_message_queue.cc ('k') | content/renderer/gpu/gpu_benchmarking_extension.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698