| OLD | NEW |
| 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/queue_message_swap_promise.h" | 5 #include "content/renderer/gpu/queue_message_swap_promise.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <vector> | 10 #include <vector> |
| 11 | 11 |
| 12 #include "base/macros.h" | 12 #include "base/macros.h" |
| 13 #include "base/memory/ptr_util.h" | 13 #include "base/memory/ptr_util.h" |
| 14 #include "base/test/scoped_task_environment.h" | 14 #include "base/test/scoped_task_environment.h" |
| 15 #include "cc/output/swap_promise.h" | 15 #include "cc/output/swap_promise.h" |
| 16 #include "content/common/view_messages.h" | |
| 17 #include "content/renderer/gpu/frame_swap_message_queue.h" | 16 #include "content/renderer/gpu/frame_swap_message_queue.h" |
| 18 #include "content/renderer/gpu/render_widget_compositor.h" | 17 #include "content/renderer/gpu/render_widget_compositor.h" |
| 19 #include "content/renderer/render_widget.h" | 18 #include "content/renderer/render_widget.h" |
| 20 #include "content/test/mock_render_process.h" | 19 #include "content/test/mock_render_process.h" |
| 21 #include "ipc/ipc_message.h" | 20 #include "ipc/ipc_message.h" |
| 22 #include "ipc/ipc_sync_message_filter.h" | 21 #include "ipc/ipc_sync_message_filter.h" |
| 23 #include "ipc/ipc_test_sink.h" | 22 #include "ipc/ipc_test_sink.h" |
| 24 #include "testing/gtest/include/gtest/gtest.h" | 23 #include "testing/gtest/include/gtest/gtest.h" |
| 25 | 24 |
| 26 namespace content { | 25 namespace content { |
| 27 | 26 |
| 28 class TestRenderWidget : public RenderWidget { | 27 class TestRenderWidget : public RenderWidget { |
| 29 public: | 28 public: |
| 30 using RenderWidget::QueueMessageImpl; | 29 using RenderWidget::QueueMessageImpl; |
| 31 | 30 |
| 32 private: | 31 private: |
| 33 ~TestRenderWidget() override {} | 32 ~TestRenderWidget() override {} |
| 34 | 33 |
| 35 DISALLOW_COPY_AND_ASSIGN(TestRenderWidget); | 34 DISALLOW_COPY_AND_ASSIGN(TestRenderWidget); |
| 36 }; | 35 }; |
| 37 | 36 |
| 38 class TestSyncMessageFilter : public IPC::SyncMessageFilter { | 37 class TestSyncMessageFilter : public IPC::SyncMessageFilter { |
| 39 public: | 38 public: |
| 40 TestSyncMessageFilter() : IPC::SyncMessageFilter(nullptr) {} | 39 TestSyncMessageFilter() : IPC::SyncMessageFilter(nullptr) {} |
| 41 | 40 |
| 42 bool Send(IPC::Message* message) override { | 41 bool Send(IPC::Message* message) override { |
| 43 if (message->type() == ViewHostMsg_FrameSwapMessages::ID) { | 42 messages_.push_back(base::WrapUnique(message)); |
| 44 ViewHostMsg_FrameSwapMessages::Param param; | |
| 45 ViewHostMsg_FrameSwapMessages::Read(message, ¶m); | |
| 46 std::vector<IPC::Message> messages = std::get<1>(param); | |
| 47 last_swap_messages_.clear(); | |
| 48 for (const IPC::Message& message : messages) { | |
| 49 last_swap_messages_.push_back(base::MakeUnique<IPC::Message>(message)); | |
| 50 } | |
| 51 delete message; | |
| 52 } else { | |
| 53 direct_send_messages_.push_back(base::WrapUnique(message)); | |
| 54 } | |
| 55 return true; | 43 return true; |
| 56 } | 44 } |
| 57 | 45 |
| 58 std::vector<std::unique_ptr<IPC::Message>>& last_swap_messages() { | 46 std::vector<std::unique_ptr<IPC::Message>>& messages() { return messages_; } |
| 59 return last_swap_messages_; | |
| 60 } | |
| 61 | |
| 62 const std::vector<std::unique_ptr<IPC::Message>>& direct_send_messages() { | |
| 63 return direct_send_messages_; | |
| 64 } | |
| 65 | 47 |
| 66 private: | 48 private: |
| 67 ~TestSyncMessageFilter() override {} | 49 ~TestSyncMessageFilter() override {} |
| 68 | 50 |
| 69 std::vector<std::unique_ptr<IPC::Message>> direct_send_messages_; | 51 std::vector<std::unique_ptr<IPC::Message>> messages_; |
| 70 std::vector<std::unique_ptr<IPC::Message>> last_swap_messages_; | |
| 71 | 52 |
| 72 DISALLOW_COPY_AND_ASSIGN(TestSyncMessageFilter); | 53 DISALLOW_COPY_AND_ASSIGN(TestSyncMessageFilter); |
| 73 }; | 54 }; |
| 74 | 55 |
| 75 struct QueueMessageData { | 56 struct QueueMessageData { |
| 76 MessageDeliveryPolicy policy; | 57 MessageDeliveryPolicy policy; |
| 77 int source_frame_number; | 58 int source_frame_number; |
| 78 }; | 59 }; |
| 79 | 60 |
| 80 class QueueMessageSwapPromiseTest : public testing::Test { | 61 class QueueMessageSwapPromiseTest : public testing::Test { |
| 81 public: | 62 public: |
| 82 QueueMessageSwapPromiseTest() | 63 QueueMessageSwapPromiseTest() |
| 83 : frame_swap_message_queue_(new FrameSwapMessageQueue(0)), | 64 : frame_swap_message_queue_(new FrameSwapMessageQueue()), |
| 84 sync_message_filter_(new TestSyncMessageFilter()) {} | 65 sync_message_filter_(new TestSyncMessageFilter()) {} |
| 85 | 66 |
| 86 ~QueueMessageSwapPromiseTest() override {} | 67 ~QueueMessageSwapPromiseTest() override {} |
| 87 | 68 |
| 88 std::unique_ptr<cc::SwapPromise> QueueMessageImpl( | 69 std::unique_ptr<cc::SwapPromise> QueueMessageImpl( |
| 89 IPC::Message* msg, | 70 IPC::Message* msg, |
| 90 MessageDeliveryPolicy policy, | 71 MessageDeliveryPolicy policy, |
| 91 int source_frame_number) { | 72 int source_frame_number) { |
| 92 return TestRenderWidget::QueueMessageImpl( | 73 return TestRenderWidget::QueueMessageImpl( |
| 93 msg, policy, frame_swap_message_queue_.get(), sync_message_filter_, | 74 msg, policy, frame_swap_message_queue_.get(), sync_message_filter_, |
| 94 source_frame_number); | 75 source_frame_number); |
| 95 } | 76 } |
| 96 | 77 |
| 97 const std::vector<std::unique_ptr<IPC::Message>>& DirectSendMessages() { | 78 const std::vector<std::unique_ptr<IPC::Message>>& DirectSendMessages() { |
| 98 return sync_message_filter_->direct_send_messages(); | 79 return sync_message_filter_->messages(); |
| 99 } | |
| 100 | |
| 101 std::vector<std::unique_ptr<IPC::Message>>& LastSwapMessages() { | |
| 102 return sync_message_filter_->last_swap_messages(); | |
| 103 } | 80 } |
| 104 | 81 |
| 105 std::vector<std::unique_ptr<IPC::Message>>& NextSwapMessages() { | 82 std::vector<std::unique_ptr<IPC::Message>>& NextSwapMessages() { |
| 106 next_swap_messages_.clear(); | 83 next_swap_messages_.clear(); |
| 107 std::unique_ptr<FrameSwapMessageQueue::SendMessageScope> | 84 std::unique_ptr<FrameSwapMessageQueue::SendMessageScope> |
| 108 send_message_scope = | 85 send_message_scope = |
| 109 frame_swap_message_queue_->AcquireSendMessageScope(); | 86 frame_swap_message_queue_->AcquireSendMessageScope(); |
| 110 frame_swap_message_queue_->DrainMessages(&next_swap_messages_); | 87 frame_swap_message_queue_->DrainMessages(&next_swap_messages_); |
| 111 return next_swap_messages_; | 88 return next_swap_messages_; |
| 112 } | 89 } |
| 113 | 90 |
| 114 bool ContainsMessage( | 91 bool ContainsMessage( |
| 115 const std::vector<std::unique_ptr<IPC::Message>>& messages, | 92 const std::vector<std::unique_ptr<IPC::Message>>& messages, |
| 116 const IPC::Message& message) { | 93 const IPC::Message& message) { |
| 117 if (messages.empty()) | 94 if (messages.empty()) |
| 118 return false; | 95 return false; |
| 119 for (const auto& msg : messages) { | 96 for (const auto& msg : messages) { |
| 120 if (msg->type() == message.type()) | 97 if (msg->type() == message.type()) |
| 121 return true; | 98 return true; |
| 122 } | 99 } |
| 123 return false; | 100 return false; |
| 124 } | 101 } |
| 125 | 102 |
| 126 bool LastSwapHasMessage(const IPC::Message& message) { | |
| 127 return ContainsMessage(LastSwapMessages(), message); | |
| 128 } | |
| 129 | |
| 130 bool NextSwapHasMessage(const IPC::Message& message) { | 103 bool NextSwapHasMessage(const IPC::Message& message) { |
| 131 return ContainsMessage(NextSwapMessages(), message); | 104 return ContainsMessage(NextSwapMessages(), message); |
| 132 } | 105 } |
| 133 | 106 |
| 134 void QueueMessages(QueueMessageData data[], size_t count) { | 107 void QueueMessages(QueueMessageData data[], size_t count) { |
| 135 for (size_t i = 0; i < count; ++i) { | 108 for (size_t i = 0; i < count; ++i) { |
| 136 messages_.push_back( | 109 messages_.push_back( |
| 137 IPC::Message(0, i + 1, IPC::Message::PRIORITY_NORMAL)); | 110 IPC::Message(0, i + 1, IPC::Message::PRIORITY_NORMAL)); |
| 138 promises_.push_back(QueueMessageImpl(new IPC::Message(messages_[i]), | 111 promises_.push_back(QueueMessageImpl(new IPC::Message(messages_[i]), |
| 139 data[i].policy, | 112 data[i].policy, |
| 140 data[i].source_frame_number)); | 113 data[i].source_frame_number)); |
| 141 } | 114 } |
| 142 } | 115 } |
| 143 | 116 |
| 144 void CleanupPromises() { | 117 void CleanupPromises() { |
| 145 for (const auto& promise : promises_) { | 118 for (const auto& promise : promises_) { |
| 146 if (promise.get()) { | 119 if (promise.get()) { |
| 147 promise->DidActivate(); | 120 promise->DidActivate(); |
| 148 promise->WillSwap(&dummy_metadata_); | 121 promise->WillSwap(NULL); |
| 149 promise->DidSwap(); | 122 promise->DidSwap(); |
| 150 } | 123 } |
| 151 } | 124 } |
| 152 } | 125 } |
| 153 | 126 |
| 154 protected: | 127 protected: |
| 155 void VisualStateSwapPromiseDidNotSwap( | 128 void VisualStateSwapPromiseDidNotSwap( |
| 156 cc::SwapPromise::DidNotSwapReason reason); | 129 cc::SwapPromise::DidNotSwapReason reason); |
| 157 | 130 |
| 158 base::test::ScopedTaskEnvironment scoped_task_environment_; | 131 base::test::ScopedTaskEnvironment scoped_task_environment_; |
| 159 scoped_refptr<FrameSwapMessageQueue> frame_swap_message_queue_; | 132 scoped_refptr<FrameSwapMessageQueue> frame_swap_message_queue_; |
| 160 scoped_refptr<TestSyncMessageFilter> sync_message_filter_; | 133 scoped_refptr<TestSyncMessageFilter> sync_message_filter_; |
| 161 std::vector<IPC::Message> messages_; | 134 std::vector<IPC::Message> messages_; |
| 162 std::vector<std::unique_ptr<cc::SwapPromise>> promises_; | 135 std::vector<std::unique_ptr<cc::SwapPromise>> promises_; |
| 163 cc::CompositorFrameMetadata dummy_metadata_; | |
| 164 | 136 |
| 165 private: | 137 private: |
| 166 std::vector<std::unique_ptr<IPC::Message>> next_swap_messages_; | 138 std::vector<std::unique_ptr<IPC::Message>> next_swap_messages_; |
| 167 | 139 |
| 168 DISALLOW_COPY_AND_ASSIGN(QueueMessageSwapPromiseTest); | 140 DISALLOW_COPY_AND_ASSIGN(QueueMessageSwapPromiseTest); |
| 169 }; | 141 }; |
| 170 | 142 |
| 171 TEST_F(QueueMessageSwapPromiseTest, NextSwapPolicySchedulesMessageForNextSwap) { | 143 TEST_F(QueueMessageSwapPromiseTest, NextSwapPolicySchedulesMessageForNextSwap) { |
| 172 QueueMessageData data[] = { | 144 QueueMessageData data[] = { |
| 173 /* { policy, source_frame_number } */ | 145 /* { policy, source_frame_number } */ |
| 174 {MESSAGE_DELIVERY_POLICY_WITH_NEXT_SWAP, 1}, | 146 {MESSAGE_DELIVERY_POLICY_WITH_NEXT_SWAP, 1}, |
| 175 }; | 147 }; |
| 176 QueueMessages(data, arraysize(data)); | 148 QueueMessages(data, arraysize(data)); |
| 177 | 149 |
| 178 ASSERT_TRUE(promises_[0].get()); | 150 ASSERT_TRUE(promises_[0].get()); |
| 179 promises_[0]->DidActivate(); | 151 promises_[0]->DidActivate(); |
| 180 promises_[0]->WillSwap(&dummy_metadata_); | 152 promises_[0]->WillSwap(NULL); |
| 181 promises_[0]->DidSwap(); | 153 promises_[0]->DidSwap(); |
| 182 | 154 |
| 183 EXPECT_TRUE(DirectSendMessages().empty()); | 155 EXPECT_TRUE(DirectSendMessages().empty()); |
| 184 EXPECT_TRUE(frame_swap_message_queue_->Empty()); | 156 EXPECT_FALSE(frame_swap_message_queue_->Empty()); |
| 185 EXPECT_TRUE(LastSwapHasMessage(messages_[0])); | 157 // frame_swap_message_queue_->WillSwap(1); |
| 158 EXPECT_TRUE(NextSwapHasMessage(messages_[0])); |
| 186 } | 159 } |
| 187 | 160 |
| 188 TEST_F(QueueMessageSwapPromiseTest, NextSwapPolicyNeedsAtMostOnePromise) { | 161 TEST_F(QueueMessageSwapPromiseTest, NextSwapPolicyNeedsAtMostOnePromise) { |
| 189 QueueMessageData data[] = { | 162 QueueMessageData data[] = { |
| 190 /* { policy, source_frame_number } */ | 163 /* { policy, source_frame_number } */ |
| 191 {MESSAGE_DELIVERY_POLICY_WITH_NEXT_SWAP, 1}, | 164 {MESSAGE_DELIVERY_POLICY_WITH_NEXT_SWAP, 1}, |
| 192 {MESSAGE_DELIVERY_POLICY_WITH_NEXT_SWAP, 1}, | 165 {MESSAGE_DELIVERY_POLICY_WITH_NEXT_SWAP, 1}, |
| 193 }; | 166 }; |
| 194 QueueMessages(data, arraysize(data)); | 167 QueueMessages(data, arraysize(data)); |
| 195 | 168 |
| 196 ASSERT_TRUE(promises_[0].get()); | 169 ASSERT_TRUE(promises_[0].get()); |
| 197 ASSERT_FALSE(promises_[1].get()); | 170 ASSERT_FALSE(promises_[1].get()); |
| 198 | 171 |
| 199 CleanupPromises(); | 172 CleanupPromises(); |
| 200 } | 173 } |
| 201 | 174 |
| 202 TEST_F(QueueMessageSwapPromiseTest, NextSwapPolicySendsMessageOnNoUpdate) { | 175 TEST_F(QueueMessageSwapPromiseTest, NextSwapPolicySendsMessageOnNoUpdate) { |
| 203 QueueMessageData data[] = { | 176 QueueMessageData data[] = { |
| 204 /* { policy, source_frame_number } */ | 177 /* { policy, source_frame_number } */ |
| 205 {MESSAGE_DELIVERY_POLICY_WITH_NEXT_SWAP, 1}, | 178 {MESSAGE_DELIVERY_POLICY_WITH_NEXT_SWAP, 1}, |
| 206 }; | 179 }; |
| 207 QueueMessages(data, arraysize(data)); | 180 QueueMessages(data, arraysize(data)); |
| 208 | 181 |
| 209 promises_[0]->DidNotSwap(cc::SwapPromise::COMMIT_NO_UPDATE); | 182 promises_[0]->DidNotSwap(cc::SwapPromise::COMMIT_NO_UPDATE); |
| 210 EXPECT_TRUE(ContainsMessage(DirectSendMessages(), messages_[0])); | 183 EXPECT_TRUE(ContainsMessage(DirectSendMessages(), messages_[0])); |
| 211 EXPECT_TRUE(LastSwapMessages().empty()); | 184 EXPECT_TRUE(NextSwapMessages().empty()); |
| 212 EXPECT_TRUE(frame_swap_message_queue_->Empty()); | 185 EXPECT_TRUE(frame_swap_message_queue_->Empty()); |
| 213 } | 186 } |
| 214 | 187 |
| 215 TEST_F(QueueMessageSwapPromiseTest, NextSwapPolicySendsMessageOnSwapFails) { | 188 TEST_F(QueueMessageSwapPromiseTest, NextSwapPolicySendsMessageOnSwapFails) { |
| 216 QueueMessageData data[] = { | 189 QueueMessageData data[] = { |
| 217 /* { policy, source_frame_number } */ | 190 /* { policy, source_frame_number } */ |
| 218 {MESSAGE_DELIVERY_POLICY_WITH_NEXT_SWAP, 1}, | 191 {MESSAGE_DELIVERY_POLICY_WITH_NEXT_SWAP, 1}, |
| 219 }; | 192 }; |
| 220 QueueMessages(data, arraysize(data)); | 193 QueueMessages(data, arraysize(data)); |
| 221 | 194 |
| 222 promises_[0]->DidNotSwap(cc::SwapPromise::SWAP_FAILS); | 195 promises_[0]->DidNotSwap(cc::SwapPromise::SWAP_FAILS); |
| 223 EXPECT_TRUE(ContainsMessage(DirectSendMessages(), messages_[0])); | 196 EXPECT_TRUE(ContainsMessage(DirectSendMessages(), messages_[0])); |
| 224 EXPECT_TRUE(LastSwapMessages().empty()); | 197 EXPECT_TRUE(NextSwapMessages().empty()); |
| 225 EXPECT_TRUE(frame_swap_message_queue_->Empty()); | 198 EXPECT_TRUE(frame_swap_message_queue_->Empty()); |
| 226 } | 199 } |
| 227 | 200 |
| 228 TEST_F(QueueMessageSwapPromiseTest, NextSwapPolicyRetainsMessageOnCommitFails) { | 201 TEST_F(QueueMessageSwapPromiseTest, NextSwapPolicyRetainsMessageOnCommitFails) { |
| 229 QueueMessageData data[] = { | 202 QueueMessageData data[] = { |
| 230 /* { policy, source_frame_number } */ | 203 /* { policy, source_frame_number } */ |
| 231 {MESSAGE_DELIVERY_POLICY_WITH_NEXT_SWAP, 1}, | 204 {MESSAGE_DELIVERY_POLICY_WITH_NEXT_SWAP, 1}, |
| 232 }; | 205 }; |
| 233 QueueMessages(data, arraysize(data)); | 206 QueueMessages(data, arraysize(data)); |
| 234 | 207 |
| 235 promises_[0]->DidNotSwap(cc::SwapPromise::COMMIT_FAILS); | 208 promises_[0]->DidNotSwap(cc::SwapPromise::COMMIT_FAILS); |
| 236 EXPECT_TRUE(DirectSendMessages().empty()); | 209 EXPECT_TRUE(DirectSendMessages().empty()); |
| 237 EXPECT_TRUE(LastSwapMessages().empty()); | |
| 238 EXPECT_FALSE(frame_swap_message_queue_->Empty()); | 210 EXPECT_FALSE(frame_swap_message_queue_->Empty()); |
| 239 frame_swap_message_queue_->DidSwap(2); | 211 frame_swap_message_queue_->DidSwap(2); |
| 240 EXPECT_TRUE(NextSwapHasMessage(messages_[0])); | 212 EXPECT_TRUE(NextSwapHasMessage(messages_[0])); |
| 241 } | 213 } |
| 242 | 214 |
| 243 TEST_F(QueueMessageSwapPromiseTest, | 215 TEST_F(QueueMessageSwapPromiseTest, |
| 244 VisualStateQueuesMessageWhenCommitRequested) { | 216 VisualStateQueuesMessageWhenCommitRequested) { |
| 245 QueueMessageData data[] = { | 217 QueueMessageData data[] = { |
| 246 /* { policy, source_frame_number } */ | 218 /* { policy, source_frame_number } */ |
| 247 {MESSAGE_DELIVERY_POLICY_WITH_VISUAL_STATE, 1}, | 219 {MESSAGE_DELIVERY_POLICY_WITH_VISUAL_STATE, 1}, |
| (...skipping 27 matching lines...) Expand all Loading... |
| 275 TEST_F(QueueMessageSwapPromiseTest, VisualStateSwapPromiseDidActivate) { | 247 TEST_F(QueueMessageSwapPromiseTest, VisualStateSwapPromiseDidActivate) { |
| 276 QueueMessageData data[] = { | 248 QueueMessageData data[] = { |
| 277 /* { policy, source_frame_number } */ | 249 /* { policy, source_frame_number } */ |
| 278 {MESSAGE_DELIVERY_POLICY_WITH_VISUAL_STATE, 1}, | 250 {MESSAGE_DELIVERY_POLICY_WITH_VISUAL_STATE, 1}, |
| 279 {MESSAGE_DELIVERY_POLICY_WITH_VISUAL_STATE, 1}, | 251 {MESSAGE_DELIVERY_POLICY_WITH_VISUAL_STATE, 1}, |
| 280 {MESSAGE_DELIVERY_POLICY_WITH_VISUAL_STATE, 2}, | 252 {MESSAGE_DELIVERY_POLICY_WITH_VISUAL_STATE, 2}, |
| 281 }; | 253 }; |
| 282 QueueMessages(data, arraysize(data)); | 254 QueueMessages(data, arraysize(data)); |
| 283 | 255 |
| 284 promises_[0]->DidActivate(); | 256 promises_[0]->DidActivate(); |
| 285 promises_[0]->WillSwap(&dummy_metadata_); | 257 promises_[0]->WillSwap(NULL); |
| 286 promises_[0]->DidSwap(); | 258 promises_[0]->DidSwap(); |
| 287 ASSERT_FALSE(promises_[1].get()); | 259 ASSERT_FALSE(promises_[1].get()); |
| 288 std::vector<std::unique_ptr<IPC::Message>> messages; | 260 std::vector<std::unique_ptr<IPC::Message>> messages; |
| 289 messages.swap(LastSwapMessages()); | 261 messages.swap(NextSwapMessages()); |
| 290 EXPECT_EQ(2u, messages.size()); | 262 EXPECT_EQ(2u, messages.size()); |
| 291 EXPECT_TRUE(ContainsMessage(messages, messages_[0])); | 263 EXPECT_TRUE(ContainsMessage(messages, messages_[0])); |
| 292 EXPECT_TRUE(ContainsMessage(messages, messages_[1])); | 264 EXPECT_TRUE(ContainsMessage(messages, messages_[1])); |
| 293 EXPECT_FALSE(ContainsMessage(messages, messages_[2])); | 265 EXPECT_FALSE(ContainsMessage(messages, messages_[2])); |
| 294 | 266 |
| 295 promises_[2]->DidActivate(); | 267 promises_[2]->DidActivate(); |
| 296 promises_[2]->DidNotSwap(cc::SwapPromise::SWAP_FAILS); | 268 promises_[2]->DidNotSwap(cc::SwapPromise::SWAP_FAILS); |
| 297 messages.swap(NextSwapMessages()); | 269 messages.swap(NextSwapMessages()); |
| 298 EXPECT_TRUE(messages.empty()); | 270 EXPECT_TRUE(messages.empty()); |
| 299 | 271 |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 347 TEST_F(QueueMessageSwapPromiseTest, VisualStateSwapPromiseDidNotSwapSwapFails) { | 319 TEST_F(QueueMessageSwapPromiseTest, VisualStateSwapPromiseDidNotSwapSwapFails) { |
| 348 VisualStateSwapPromiseDidNotSwap(cc::SwapPromise::SWAP_FAILS); | 320 VisualStateSwapPromiseDidNotSwap(cc::SwapPromise::SWAP_FAILS); |
| 349 } | 321 } |
| 350 | 322 |
| 351 TEST_F(QueueMessageSwapPromiseTest, | 323 TEST_F(QueueMessageSwapPromiseTest, |
| 352 VisualStateSwapPromiseDidNotSwapActivationFails) { | 324 VisualStateSwapPromiseDidNotSwapActivationFails) { |
| 353 VisualStateSwapPromiseDidNotSwap(cc::SwapPromise::ACTIVATION_FAILS); | 325 VisualStateSwapPromiseDidNotSwap(cc::SwapPromise::ACTIVATION_FAILS); |
| 354 } | 326 } |
| 355 | 327 |
| 356 } // namespace content | 328 } // namespace content |
| OLD | NEW |