| 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 ab640bf1f9ff61bf269c89af8c789146526c6a9b..1261cb2bae6bc915e9c027d847b90eb575ed068d 100644
|
| --- a/content/renderer/gpu/queue_message_swap_promise_unittest.cc
|
| +++ b/content/renderer/gpu/queue_message_swap_promise_unittest.cc
|
| @@ -115,8 +115,10 @@ class QueueMessageSwapPromiseTest : public testing::Test {
|
| for (ScopedVector<cc::SwapPromise>::iterator i = promises_.begin();
|
| i != promises_.end();
|
| ++i) {
|
| - if (*i)
|
| + if (*i) {
|
| + (*i)->DidActivate();
|
| (*i)->DidSwap(NULL);
|
| + }
|
| }
|
| }
|
|
|
| @@ -144,11 +146,13 @@ TEST_F(QueueMessageSwapPromiseTest, NextSwapPolicySchedulesMessageForNextSwap) {
|
| QueueMessages(data, arraysize(data));
|
|
|
| ASSERT_TRUE(promises_[0]);
|
| + promises_[0]->DidActivate();
|
| + promises_[0]->DidSwap(NULL);
|
| +
|
| EXPECT_TRUE(DirectSendMessages().empty());
|
| EXPECT_FALSE(frame_swap_message_queue_->Empty());
|
| + // frame_swap_message_queue_->DidSwap(1);
|
| EXPECT_TRUE(NextSwapHasMessage(messages_[0]));
|
| -
|
| - CleanupPromises();
|
| }
|
|
|
| TEST_F(QueueMessageSwapPromiseTest, NextSwapPolicyNeedsAtMostOnePromise) {
|
| @@ -201,6 +205,7 @@ TEST_F(QueueMessageSwapPromiseTest, NextSwapPolicyRetainsMessageOnCommitFails) {
|
| promises_[0]->DidNotSwap(cc::SwapPromise::COMMIT_FAILS);
|
| EXPECT_TRUE(DirectSendMessages().empty());
|
| EXPECT_FALSE(frame_swap_message_queue_->Empty());
|
| + frame_swap_message_queue_->DidSwap(2);
|
| EXPECT_TRUE(NextSwapHasMessage(messages_[0]));
|
| }
|
|
|
| @@ -236,7 +241,7 @@ TEST_F(QueueMessageSwapPromiseTest,
|
| CleanupPromises();
|
| }
|
|
|
| -TEST_F(QueueMessageSwapPromiseTest, VisualStateSwapPromiseDidSwap) {
|
| +TEST_F(QueueMessageSwapPromiseTest, VisualStateSwapPromiseDidActivate) {
|
| QueueMessageData data[] = {
|
| /* { policy, source_frame_number } */
|
| {MESSAGE_DELIVERY_POLICY_WITH_VISUAL_STATE, 1},
|
| @@ -245,6 +250,7 @@ TEST_F(QueueMessageSwapPromiseTest, VisualStateSwapPromiseDidSwap) {
|
| };
|
| QueueMessages(data, arraysize(data));
|
|
|
| + promises_[0]->DidActivate();
|
| promises_[0]->DidSwap(NULL);
|
| ASSERT_FALSE(promises_[1]);
|
| ScopedVector<IPC::Message> messages;
|
| @@ -254,7 +260,8 @@ TEST_F(QueueMessageSwapPromiseTest, VisualStateSwapPromiseDidSwap) {
|
| EXPECT_TRUE(ContainsMessage(messages, messages_[1]));
|
| EXPECT_FALSE(ContainsMessage(messages, messages_[2]));
|
|
|
| - promises_[2]->DidSwap(NULL);
|
| + promises_[2]->DidActivate();
|
| + promises_[2]->DidNotSwap(cc::SwapPromise::SWAP_FAILS);
|
| messages.swap(NextSwapMessages());
|
| EXPECT_EQ(1u, messages.size());
|
| EXPECT_TRUE(ContainsMessage(messages, messages_[2]));
|
| @@ -274,59 +281,43 @@ void QueueMessageSwapPromiseTest::VisualStateSwapPromiseDidNotSwap(
|
| };
|
| QueueMessages(data, arraysize(data));
|
|
|
| + // If we fail to swap with COMMIT_FAILS or ACTIVATE_FAILS, then
|
| + // messages are delivered by the RenderFrameHostImpl destructor,
|
| + // rather than directly by the swap promise.
|
| + bool msg_delivered = reason != cc::SwapPromise::COMMIT_FAILS &&
|
| + reason != cc::SwapPromise::ACTIVATION_FAILS;
|
| +
|
| promises_[0]->DidNotSwap(reason);
|
| ASSERT_FALSE(promises_[1]);
|
| EXPECT_TRUE(NextSwapMessages().empty());
|
| - EXPECT_EQ(2u, DirectSendMessages().size());
|
| - EXPECT_TRUE(ContainsMessage(DirectSendMessages(), messages_[0]));
|
| - EXPECT_TRUE(ContainsMessage(DirectSendMessages(), messages_[1]));
|
| + EXPECT_EQ(msg_delivered, ContainsMessage(DirectSendMessages(), messages_[0]));
|
| + EXPECT_EQ(msg_delivered, ContainsMessage(DirectSendMessages(), messages_[1]));
|
| EXPECT_FALSE(ContainsMessage(DirectSendMessages(), messages_[2]));
|
|
|
| promises_[2]->DidNotSwap(reason);
|
| EXPECT_TRUE(NextSwapMessages().empty());
|
| - EXPECT_TRUE(ContainsMessage(DirectSendMessages(), messages_[2]));
|
| + EXPECT_EQ(msg_delivered, ContainsMessage(DirectSendMessages(), messages_[2]));
|
|
|
| EXPECT_TRUE(NextSwapMessages().empty());
|
| - EXPECT_TRUE(frame_swap_message_queue_->Empty());
|
| + EXPECT_EQ(msg_delivered, frame_swap_message_queue_->Empty());
|
| }
|
|
|
| -TEST_F(QueueMessageSwapPromiseTest, VisalStateSwapPromiseDidNotSwapNoUpdate) {
|
| +TEST_F(QueueMessageSwapPromiseTest, VisualStateSwapPromiseDidNotSwapNoUpdate) {
|
| VisualStateSwapPromiseDidNotSwap(cc::SwapPromise::COMMIT_NO_UPDATE);
|
| }
|
|
|
| TEST_F(QueueMessageSwapPromiseTest,
|
| 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());
|
| + VisualStateSwapPromiseDidNotSwap(cc::SwapPromise::COMMIT_FAILS);
|
| }
|
|
|
| -TEST_F(QueueMessageSwapPromiseTest, VisalStateSwapPromiseDidNotSwapSwapFails) {
|
| +TEST_F(QueueMessageSwapPromiseTest, VisualStateSwapPromiseDidNotSwapSwapFails) {
|
| VisualStateSwapPromiseDidNotSwap(cc::SwapPromise::SWAP_FAILS);
|
| }
|
|
|
| +TEST_F(QueueMessageSwapPromiseTest,
|
| + VisualStateSwapPromiseDidNotSwapActivationFails) {
|
| + VisualStateSwapPromiseDidNotSwap(cc::SwapPromise::ACTIVATION_FAILS);
|
| +}
|
| +
|
| } // namespace content
|
|
|