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

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

Issue 1126963006: Move VISUAL_STATE promise to activation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Current state (presubmit warnings, cc_unittests tests failing) Created 5 years, 7 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_update_message_queue.h"
6 #include "ipc/ipc_message.h" 6 #include "ipc/ipc_message.h"
7 #include "testing/gtest/include/gtest/gtest.h" 7 #include "testing/gtest/include/gtest/gtest.h"
8 8
9 namespace content { 9 namespace content {
10 10
11 class FrameSwapMessageQueueTest : public testing::Test { 11 class FrameUpdateMessageQueueTest : public testing::Test {
12 public: 12 public:
13 FrameSwapMessageQueueTest() 13 FrameUpdateMessageQueueTest()
14 : first_message_(41, 1, IPC::Message::PRIORITY_NORMAL), 14 : first_message_(41, 1, IPC::Message::PRIORITY_NORMAL),
15 second_message_(42, 2, IPC::Message::PRIORITY_NORMAL), 15 second_message_(42, 2, IPC::Message::PRIORITY_NORMAL),
16 third_message_(43, 3, IPC::Message::PRIORITY_NORMAL), 16 third_message_(43, 3, IPC::Message::PRIORITY_NORMAL),
17 queue_(new FrameSwapMessageQueue()) {} 17 queue_(new FrameUpdateMessageQueue()) {}
18 18
19 protected: 19 protected:
20 void QueueNextSwapMessage(scoped_ptr<IPC::Message> msg) { 20 void QueueNextSwapMessage(scoped_ptr<IPC::Message> msg) {
21 queue_->QueueMessageForFrame( 21 queue_->QueueMessageForFrame(
22 MESSAGE_DELIVERY_POLICY_WITH_NEXT_SWAP, 0, msg.Pass(), NULL); 22 MESSAGE_DELIVERY_POLICY_WITH_NEXT_SWAP, 0, msg.Pass(), NULL);
23 } 23 }
24 24
25 void QueueNextSwapMessage(scoped_ptr<IPC::Message> msg, bool* first) { 25 void QueueNextSwapMessage(scoped_ptr<IPC::Message> msg, bool* first) {
26 queue_->QueueMessageForFrame( 26 queue_->QueueMessageForFrame(
27 MESSAGE_DELIVERY_POLICY_WITH_NEXT_SWAP, 0, msg.Pass(), first); 27 MESSAGE_DELIVERY_POLICY_WITH_NEXT_SWAP, 0, msg.Pass(), first);
(...skipping 13 matching lines...) Expand all
41 queue_->QueueMessageForFrame(MESSAGE_DELIVERY_POLICY_WITH_VISUAL_STATE, 41 queue_->QueueMessageForFrame(MESSAGE_DELIVERY_POLICY_WITH_VISUAL_STATE,
42 source_frame_number, 42 source_frame_number,
43 msg.Pass(), 43 msg.Pass(),
44 first); 44 first);
45 } 45 }
46 46
47 void DrainMessages(int source_frame_number, 47 void DrainMessages(int source_frame_number,
48 ScopedVector<IPC::Message>* messages) { 48 ScopedVector<IPC::Message>* messages) {
49 messages->clear(); 49 messages->clear();
50 queue_->DidSwap(source_frame_number); 50 queue_->DidSwap(source_frame_number);
51 scoped_ptr<FrameSwapMessageQueue::SendMessageScope> send_message_scope = 51 scoped_ptr<FrameUpdateMessageQueue::SendMessageScope> send_message_scope =
52 queue_->AcquireSendMessageScope(); 52 queue_->AcquireSendMessageScope();
53 queue_->DrainMessages(messages); 53 queue_->DrainMessagesForSwap(messages);
54 } 54 }
55 55
56 bool HasMessageForId(const ScopedVector<IPC::Message>& messages, 56 bool HasMessageForId(const ScopedVector<IPC::Message>& messages,
57 int routing_id) { 57 int routing_id) {
58 for (ScopedVector<IPC::Message>::const_iterator i = messages.begin(); 58 for (ScopedVector<IPC::Message>::const_iterator i = messages.begin();
59 i != messages.end(); 59 i != messages.end();
60 ++i) { 60 ++i) {
61 if ((*i)->routing_id() == routing_id) 61 if ((*i)->routing_id() == routing_id)
62 return true; 62 return true;
63 } 63 }
64 return false; 64 return false;
65 } 65 }
66 66
67 scoped_ptr<IPC::Message> CloneMessage(const IPC::Message& other) { 67 scoped_ptr<IPC::Message> CloneMessage(const IPC::Message& other) {
68 return make_scoped_ptr(new IPC::Message(other)).Pass(); 68 return make_scoped_ptr(new IPC::Message(other)).Pass();
69 } 69 }
70 70
71 void TestDidNotSwap(cc::SwapPromise::DidNotSwapReason reason); 71 void TestDidNotSwap(cc::SwapPromise::DidNotSwapReason reason);
72 72
73 IPC::Message first_message_; 73 IPC::Message first_message_;
74 IPC::Message second_message_; 74 IPC::Message second_message_;
75 IPC::Message third_message_; 75 IPC::Message third_message_;
76 scoped_refptr<FrameSwapMessageQueue> queue_; 76 scoped_refptr<FrameUpdateMessageQueue> queue_;
77 }; 77 };
78 78
79 TEST_F(FrameSwapMessageQueueTest, TestEmptyQueueDrain) { 79 TEST_F(FrameUpdateMessageQueueTest, TestEmptyQueueDrain) {
80 ScopedVector<IPC::Message> messages; 80 ScopedVector<IPC::Message> messages;
81 81
82 DrainMessages(0, &messages); 82 DrainMessages(0, &messages);
83 ASSERT_TRUE(messages.empty()); 83 ASSERT_TRUE(messages.empty());
84 } 84 }
85 85
86 TEST_F(FrameSwapMessageQueueTest, TestEmpty) { 86 TEST_F(FrameUpdateMessageQueueTest, TestEmpty) {
87 ScopedVector<IPC::Message> messages; 87 ScopedVector<IPC::Message> messages;
88 ASSERT_TRUE(queue_->Empty()); 88 ASSERT_TRUE(queue_->Empty());
89 QueueNextSwapMessage(CloneMessage(first_message_)); 89 QueueNextSwapMessage(CloneMessage(first_message_));
90 ASSERT_FALSE(queue_->Empty()); 90 ASSERT_FALSE(queue_->Empty());
91 DrainMessages(0, &messages); 91 DrainMessages(0, &messages);
92 ASSERT_TRUE(queue_->Empty()); 92 ASSERT_TRUE(queue_->Empty());
93 QueueVisualStateMessage(1, CloneMessage(first_message_)); 93 QueueVisualStateMessage(1, CloneMessage(first_message_));
94 ASSERT_FALSE(queue_->Empty()); 94 ASSERT_FALSE(queue_->Empty());
95 queue_->DidSwap(1); 95 queue_->DidSwap(1);
96 ASSERT_FALSE(queue_->Empty()); 96 ASSERT_FALSE(queue_->Empty());
97 } 97 }
98 98
99 TEST_F(FrameSwapMessageQueueTest, TestQueueMessageFirst) { 99 TEST_F(FrameUpdateMessageQueueTest, TestQueueMessageFirst) {
100 ScopedVector<IPC::Message> messages; 100 ScopedVector<IPC::Message> messages;
101 bool visual_state_first = false; 101 bool visual_state_first = false;
102 bool next_swap_first = false; 102 bool next_swap_first = false;
103 103
104 // Queuing the first time should result in true. 104 // Queuing the first time should result in true.
105 QueueVisualStateMessage(1, CloneMessage(first_message_), &visual_state_first); 105 QueueVisualStateMessage(1, CloneMessage(first_message_), &visual_state_first);
106 ASSERT_TRUE(visual_state_first); 106 ASSERT_TRUE(visual_state_first);
107 // Queuing the second time should result in true. 107 // Queuing the second time should result in true.
108 QueueVisualStateMessage( 108 QueueVisualStateMessage(
109 1, CloneMessage(second_message_), &visual_state_first); 109 1, CloneMessage(second_message_), &visual_state_first);
110 ASSERT_FALSE(visual_state_first); 110 ASSERT_FALSE(visual_state_first);
111 // Queuing for a different frame should result in true. 111 // Queuing for a different frame should result in true.
112 QueueVisualStateMessage(2, CloneMessage(first_message_), &visual_state_first); 112 QueueVisualStateMessage(2, CloneMessage(first_message_), &visual_state_first);
113 ASSERT_TRUE(visual_state_first); 113 ASSERT_TRUE(visual_state_first);
114 114
115 // Queuing for a different policy should result in true. 115 // Queuing for a different policy should result in true.
116 QueueNextSwapMessage(CloneMessage(first_message_), &next_swap_first); 116 QueueNextSwapMessage(CloneMessage(first_message_), &next_swap_first);
117 ASSERT_TRUE(next_swap_first); 117 ASSERT_TRUE(next_swap_first);
118 // Second time for the same policy is still false. 118 // Second time for the same policy is still false.
119 QueueNextSwapMessage(CloneMessage(first_message_), &next_swap_first); 119 QueueNextSwapMessage(CloneMessage(first_message_), &next_swap_first);
120 ASSERT_FALSE(next_swap_first); 120 ASSERT_FALSE(next_swap_first);
121 121
122 DrainMessages(4, &messages); 122 DrainMessages(4, &messages);
123 // Queuing after all messages are drained is a true again. 123 // Queuing after all messages are drained is a true again.
124 QueueVisualStateMessage(4, CloneMessage(first_message_), &visual_state_first); 124 QueueVisualStateMessage(4, CloneMessage(first_message_), &visual_state_first);
125 ASSERT_TRUE(visual_state_first); 125 ASSERT_TRUE(visual_state_first);
126 } 126 }
127 127
128 TEST_F(FrameSwapMessageQueueTest, TestNextSwapMessageSentWithNextFrame) { 128 TEST_F(FrameUpdateMessageQueueTest, TestNextSwapMessageSentWithNextFrame) {
129 ScopedVector<IPC::Message> messages; 129 ScopedVector<IPC::Message> messages;
130 130
131 DrainMessages(1, &messages); 131 DrainMessages(1, &messages);
132 QueueNextSwapMessage(CloneMessage(first_message_)); 132 QueueNextSwapMessage(CloneMessage(first_message_));
133 DrainMessages(2, &messages); 133 DrainMessages(2, &messages);
134 ASSERT_EQ(1u, messages.size()); 134 ASSERT_EQ(1u, messages.size());
135 ASSERT_EQ(first_message_.routing_id(), messages.front()->routing_id()); 135 ASSERT_EQ(first_message_.routing_id(), messages.front()->routing_id());
136 messages.clear(); 136 messages.clear();
137 137
138 DrainMessages(2, &messages); 138 DrainMessages(2, &messages);
139 ASSERT_TRUE(messages.empty()); 139 ASSERT_TRUE(messages.empty());
140 } 140 }
141 141
142 TEST_F(FrameSwapMessageQueueTest, TestNextSwapMessageSentWithCurrentFrame) { 142 TEST_F(FrameUpdateMessageQueueTest, TestNextSwapMessageSentWithCurrentFrame) {
143 ScopedVector<IPC::Message> messages; 143 ScopedVector<IPC::Message> messages;
144 144
145 DrainMessages(1, &messages); 145 DrainMessages(1, &messages);
146 QueueNextSwapMessage(CloneMessage(first_message_)); 146 QueueNextSwapMessage(CloneMessage(first_message_));
147 DrainMessages(1, &messages); 147 DrainMessages(1, &messages);
148 ASSERT_EQ(1u, messages.size()); 148 ASSERT_EQ(1u, messages.size());
149 ASSERT_EQ(first_message_.routing_id(), messages.front()->routing_id()); 149 ASSERT_EQ(first_message_.routing_id(), messages.front()->routing_id());
150 messages.clear(); 150 messages.clear();
151 151
152 DrainMessages(1, &messages); 152 DrainMessages(1, &messages);
153 ASSERT_TRUE(messages.empty()); 153 ASSERT_TRUE(messages.empty());
154 } 154 }
155 155
156 TEST_F(FrameSwapMessageQueueTest, 156 TEST_F(FrameUpdateMessageQueueTest,
157 TestDrainsVisualStateMessagesForCorrespondingFrames) { 157 TestDrainsVisualStateMessagesForCorrespondingFrames) {
158 ScopedVector<IPC::Message> messages; 158 ScopedVector<IPC::Message> messages;
159 159
160 QueueVisualStateMessage(1, CloneMessage(first_message_)); 160 QueueVisualStateMessage(1, CloneMessage(first_message_));
161 QueueVisualStateMessage(2, CloneMessage(second_message_)); 161 QueueVisualStateMessage(2, CloneMessage(second_message_));
162 QueueVisualStateMessage(3, CloneMessage(third_message_)); 162 QueueVisualStateMessage(3, CloneMessage(third_message_));
163 DrainMessages(0, &messages); 163 DrainMessages(0, &messages);
164 ASSERT_TRUE(messages.empty()); 164 ASSERT_TRUE(messages.empty());
165 165
166 DrainMessages(2, &messages); 166 DrainMessages(2, &messages);
167 ASSERT_EQ(2u, messages.size()); 167 ASSERT_EQ(2u, messages.size());
168 ASSERT_TRUE(HasMessageForId(messages, first_message_.routing_id())); 168 ASSERT_TRUE(HasMessageForId(messages, first_message_.routing_id()));
169 ASSERT_TRUE(HasMessageForId(messages, second_message_.routing_id())); 169 ASSERT_TRUE(HasMessageForId(messages, second_message_.routing_id()));
170 messages.clear(); 170 messages.clear();
171 171
172 DrainMessages(2, &messages); 172 DrainMessages(2, &messages);
173 ASSERT_TRUE(messages.empty()); 173 ASSERT_TRUE(messages.empty());
174 174
175 DrainMessages(5, &messages); 175 DrainMessages(5, &messages);
176 ASSERT_EQ(1u, messages.size()); 176 ASSERT_EQ(1u, messages.size());
177 ASSERT_EQ(third_message_.routing_id(), messages.front()->routing_id()); 177 ASSERT_EQ(third_message_.routing_id(), messages.front()->routing_id());
178 } 178 }
179 179
180 TEST_F(FrameSwapMessageQueueTest, 180 TEST_F(FrameUpdateMessageQueueTest,
181 TestQueueNextSwapMessagePreservesFifoOrdering) { 181 TestQueueNextSwapMessagePreservesFifoOrdering) {
182 ScopedVector<IPC::Message> messages; 182 ScopedVector<IPC::Message> messages;
183 183
184 QueueNextSwapMessage(CloneMessage(first_message_)); 184 QueueNextSwapMessage(CloneMessage(first_message_));
185 QueueNextSwapMessage(CloneMessage(second_message_)); 185 QueueNextSwapMessage(CloneMessage(second_message_));
186 DrainMessages(1, &messages); 186 DrainMessages(1, &messages);
187 ASSERT_EQ(2u, messages.size()); 187 ASSERT_EQ(2u, messages.size());
188 ASSERT_EQ(first_message_.routing_id(), messages[0]->routing_id()); 188 ASSERT_EQ(first_message_.routing_id(), messages[0]->routing_id());
189 ASSERT_EQ(second_message_.routing_id(), messages[1]->routing_id()); 189 ASSERT_EQ(second_message_.routing_id(), messages[1]->routing_id());
190 } 190 }
191 191
192 TEST_F(FrameSwapMessageQueueTest, 192 TEST_F(FrameUpdateMessageQueueTest,
193 TestQueueVisualStateMessagePreservesFifoOrdering) { 193 TestQueueVisualStateMessagePreservesFifoOrdering) {
194 ScopedVector<IPC::Message> messages; 194 ScopedVector<IPC::Message> messages;
195 195
196 QueueVisualStateMessage(1, CloneMessage(first_message_)); 196 QueueVisualStateMessage(1, CloneMessage(first_message_));
197 QueueVisualStateMessage(1, CloneMessage(second_message_)); 197 QueueVisualStateMessage(1, CloneMessage(second_message_));
198 DrainMessages(1, &messages); 198 DrainMessages(1, &messages);
199 ASSERT_EQ(2u, messages.size()); 199 ASSERT_EQ(2u, messages.size());
200 ASSERT_EQ(first_message_.routing_id(), messages[0]->routing_id()); 200 ASSERT_EQ(first_message_.routing_id(), messages[0]->routing_id());
201 ASSERT_EQ(second_message_.routing_id(), messages[1]->routing_id()); 201 ASSERT_EQ(second_message_.routing_id(), messages[1]->routing_id());
202 } 202 }
203 203
204 void FrameSwapMessageQueueTest::TestDidNotSwap( 204 void FrameUpdateMessageQueueTest::TestDidNotSwap(
205 cc::SwapPromise::DidNotSwapReason reason) { 205 cc::SwapPromise::DidNotSwapReason reason) {
206 ScopedVector<IPC::Message> messages; 206 ScopedVector<IPC::Message> messages;
207 207
208 QueueNextSwapMessage(CloneMessage(first_message_)); 208 QueueNextSwapMessage(CloneMessage(first_message_));
209 QueueVisualStateMessage(2, CloneMessage(second_message_)); 209 QueueVisualStateMessage(2, CloneMessage(second_message_));
210 QueueVisualStateMessage(3, CloneMessage(third_message_)); 210 QueueVisualStateMessage(3, CloneMessage(third_message_));
211 211
212 queue_->DidNotSwap(2, cc::SwapPromise::COMMIT_NO_UPDATE, &messages); 212 queue_->DidNotSwap(2, cc::SwapPromise::COMMIT_NO_UPDATE, &messages);
213 ASSERT_EQ(2u, messages.size()); 213 ASSERT_EQ(2u, messages.size());
214 ASSERT_TRUE(HasMessageForId(messages, first_message_.routing_id())); 214 ASSERT_TRUE(HasMessageForId(messages, first_message_.routing_id()));
215 ASSERT_TRUE(HasMessageForId(messages, second_message_.routing_id())); 215 ASSERT_TRUE(HasMessageForId(messages, second_message_.routing_id()));
216 messages.clear(); 216 messages.clear();
217 217
218 queue_->DidNotSwap(3, cc::SwapPromise::COMMIT_NO_UPDATE, &messages); 218 queue_->DidNotSwap(3, cc::SwapPromise::COMMIT_NO_UPDATE, &messages);
219 ASSERT_EQ(1u, messages.size()); 219 ASSERT_EQ(1u, messages.size());
220 ASSERT_TRUE(HasMessageForId(messages, third_message_.routing_id())); 220 ASSERT_TRUE(HasMessageForId(messages, third_message_.routing_id()));
221 messages.clear(); 221 messages.clear();
222 } 222 }
223 223
224 TEST_F(FrameSwapMessageQueueTest, TestDidNotSwapNoUpdate) { 224 TEST_F(FrameUpdateMessageQueueTest, TestDidNotSwapNoUpdate) {
225 TestDidNotSwap(cc::SwapPromise::COMMIT_NO_UPDATE); 225 TestDidNotSwap(cc::SwapPromise::COMMIT_NO_UPDATE);
226 } 226 }
227 227
228 TEST_F(FrameSwapMessageQueueTest, TestDidNotSwapSwapFails) { 228 TEST_F(FrameUpdateMessageQueueTest, TestDidNotSwapSwapFails) {
229 TestDidNotSwap(cc::SwapPromise::SWAP_FAILS); 229 TestDidNotSwap(cc::SwapPromise::SWAP_FAILS);
230 } 230 }
231 231
232 TEST_F(FrameSwapMessageQueueTest, TestDidNotSwapCommitFails) { 232 TEST_F(FrameUpdateMessageQueueTest, TestDidNotSwapCommitFails) {
233 ScopedVector<IPC::Message> messages; 233 ScopedVector<IPC::Message> messages;
234 234
235 QueueNextSwapMessage(CloneMessage(first_message_)); 235 QueueNextSwapMessage(CloneMessage(first_message_));
236 QueueVisualStateMessage(2, CloneMessage(second_message_)); 236 QueueVisualStateMessage(2, CloneMessage(second_message_));
237 QueueVisualStateMessage(3, CloneMessage(third_message_)); 237 QueueVisualStateMessage(3, CloneMessage(third_message_));
238 238
239 queue_->DidNotSwap(2, cc::SwapPromise::COMMIT_FAILS, &messages); 239 queue_->DidNotSwap(2, cc::SwapPromise::COMMIT_FAILS, &messages);
240 ASSERT_EQ(0u, messages.size()); 240 ASSERT_EQ(0u, messages.size());
241 messages.clear(); 241 messages.clear();
242 242
243 queue_->DidNotSwap(3, cc::SwapPromise::COMMIT_FAILS, &messages); 243 queue_->DidNotSwap(3, cc::SwapPromise::COMMIT_FAILS, &messages);
244 ASSERT_EQ(0u, messages.size()); 244 ASSERT_EQ(0u, messages.size());
245 messages.clear(); 245 messages.clear();
246 246
247 DrainMessages(1, &messages); 247 DrainMessages(1, &messages);
248 ASSERT_EQ(1u, messages.size()); 248 ASSERT_EQ(1u, messages.size());
249 ASSERT_TRUE(HasMessageForId(messages, first_message_.routing_id())); 249 ASSERT_TRUE(HasMessageForId(messages, first_message_.routing_id()));
250 } 250 }
251 251
252 class NotifiesDeletionMessage : public IPC::Message { 252 class NotifiesDeletionMessage : public IPC::Message {
253 public: 253 public:
254 NotifiesDeletionMessage(bool* deleted, const IPC::Message& other) 254 NotifiesDeletionMessage(bool* deleted, const IPC::Message& other)
255 : IPC::Message(other), deleted_(deleted) {} 255 : IPC::Message(other), deleted_(deleted) {}
256 ~NotifiesDeletionMessage() override { *deleted_ = true; } 256 ~NotifiesDeletionMessage() override { *deleted_ = true; }
257 257
258 private: 258 private:
259 bool* deleted_; 259 bool* deleted_;
260 }; 260 };
261 261
262 TEST_F(FrameSwapMessageQueueTest, TestDeletesNextSwapMessage) { 262 TEST_F(FrameUpdateMessageQueueTest, TestDeletesNextSwapMessage) {
263 bool message_deleted = false; 263 bool message_deleted = false;
264 QueueNextSwapMessage(make_scoped_ptr( 264 QueueNextSwapMessage(make_scoped_ptr(
265 new NotifiesDeletionMessage(&message_deleted, first_message_))); 265 new NotifiesDeletionMessage(&message_deleted, first_message_)));
266 queue_ = NULL; 266 queue_ = NULL;
267 ASSERT_TRUE(message_deleted); 267 ASSERT_TRUE(message_deleted);
268 } 268 }
269 269
270 TEST_F(FrameSwapMessageQueueTest, TestDeletesVisualStateMessage) { 270 TEST_F(FrameUpdateMessageQueueTest, TestDeletesVisualStateMessage) {
271 bool message_deleted = false; 271 bool message_deleted = false;
272 QueueVisualStateMessage(1, 272 QueueVisualStateMessage(1,
273 make_scoped_ptr(new NotifiesDeletionMessage( 273 make_scoped_ptr(new NotifiesDeletionMessage(
274 &message_deleted, first_message_))); 274 &message_deleted, first_message_)));
275 queue_ = NULL; 275 queue_ = NULL;
276 ASSERT_TRUE(message_deleted); 276 ASSERT_TRUE(message_deleted);
277 } 277 }
278 278
279 TEST_F(FrameSwapMessageQueueTest, TestDeletesQueuedVisualStateMessage) { 279 TEST_F(FrameUpdateMessageQueueTest, TestDeletesQueuedVisualStateMessage) {
280 bool message_deleted = false; 280 bool message_deleted = false;
281 QueueVisualStateMessage(1, 281 QueueVisualStateMessage(1,
282 make_scoped_ptr(new NotifiesDeletionMessage( 282 make_scoped_ptr(new NotifiesDeletionMessage(
283 &message_deleted, first_message_))); 283 &message_deleted, first_message_)));
284 queue_->DidSwap(1); 284 queue_->DidSwap(1);
285 queue_ = NULL; 285 queue_ = NULL;
286 ASSERT_TRUE(message_deleted); 286 ASSERT_TRUE(message_deleted);
287 } 287 }
288 288
289 } // namespace content 289 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698