Index: content/renderer/gpu/queue_message_swap_promise_unittest.cc |
diff --git a/content/renderer/gpu/queue_message_swap_promise_unittest.cc b/content/renderer/gpu/queue_message_swap_promise_unittest.cc |
index c79a6dfe23d2edfeab6774578dba616a1a520c55..7590490f5c830e114ab50bf5e392ccef11acca2f 100644 |
--- a/content/renderer/gpu/queue_message_swap_promise_unittest.cc |
+++ b/content/renderer/gpu/queue_message_swap_promise_unittest.cc |
@@ -294,8 +294,34 @@ TEST_F(QueueMessageSwapPromiseTest, VisalStateSwapPromiseDidNotSwapNoUpdate) { |
} |
TEST_F(QueueMessageSwapPromiseTest, |
- VisalStateSwapPromiseDidNotSwapCommitFails) { |
- VisualStateSwapPromiseDidNotSwap(cc::SwapPromise::COMMIT_FAILS); |
+ VisualStateSwapPromiseDidNotSwapCommitFails) { |
+ // COMMIT_FAILS is treated differently: |
+ // If we fail to swap with COMMIT_FAILS, then the renderer is |
+ // shutting down, which implies that the RenderFrameHostImpl |
+ // destructor will eventually be called, firing the remaining |
+ // response callbacks (with swap_success = false) itself. |
+ QueueMessageData data[] = { |
+ /* { policy, source_frame_number } */ |
+ {MESSAGE_DELIVERY_POLICY_WITH_VISUAL_STATE, 1}, |
+ {MESSAGE_DELIVERY_POLICY_WITH_VISUAL_STATE, 1}, |
+ {MESSAGE_DELIVERY_POLICY_WITH_VISUAL_STATE, 2}, |
+ }; |
+ QueueMessages(data, arraysize(data)); |
+ |
+ promises_[0]->DidNotSwap(cc::SwapPromise::COMMIT_FAILS); |
+ ASSERT_FALSE(promises_[1]); |
+ EXPECT_TRUE(NextSwapMessages().empty()); |
+ EXPECT_EQ(0u, DirectSendMessages().size()); |
+ EXPECT_FALSE(ContainsMessage(DirectSendMessages(), messages_[0])); |
+ EXPECT_FALSE(ContainsMessage(DirectSendMessages(), messages_[1])); |
+ EXPECT_FALSE(ContainsMessage(DirectSendMessages(), messages_[2])); |
+ |
+ promises_[2]->DidNotSwap(cc::SwapPromise::COMMIT_FAILS); |
+ EXPECT_TRUE(NextSwapMessages().empty()); |
+ EXPECT_FALSE(ContainsMessage(DirectSendMessages(), messages_[2])); |
+ |
+ EXPECT_TRUE(NextSwapMessages().empty()); |
+ EXPECT_FALSE(frame_swap_message_queue_->Empty()); |
} |
TEST_F(QueueMessageSwapPromiseTest, VisalStateSwapPromiseDidNotSwapSwapFails) { |