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

Unified Diff: content/renderer/gpu/queue_message_swap_promise_unittest.cc

Issue 2899073006: Send FrameSwapMessageQueue's messages in QueueMessageSwapPromise (Closed)
Patch Set: Fixed memory leak Created 3 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 side-by-side diff with in-line comments
Download patch
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 18d3b2cc1c76cb9917f43f356d67924e58e8aba1..a02cc382bb063ee563707a83e1d666e4e9229d11 100644
--- a/content/renderer/gpu/queue_message_swap_promise_unittest.cc
+++ b/content/renderer/gpu/queue_message_swap_promise_unittest.cc
@@ -13,6 +13,7 @@
#include "base/memory/ptr_util.h"
#include "base/test/scoped_task_environment.h"
#include "cc/output/swap_promise.h"
+#include "content/common/view_messages.h"
#include "content/renderer/gpu/frame_swap_message_queue.h"
#include "content/renderer/gpu/render_widget_compositor.h"
#include "content/renderer/render_widget.h"
@@ -39,16 +40,34 @@ class TestSyncMessageFilter : public IPC::SyncMessageFilter {
TestSyncMessageFilter() : IPC::SyncMessageFilter(nullptr) {}
bool Send(IPC::Message* message) override {
- messages_.push_back(base::WrapUnique(message));
+ if (message->type() == ViewHostMsg_FrameSwapMessages::ID) {
+ ViewHostMsg_FrameSwapMessages::Param param;
+ ViewHostMsg_FrameSwapMessages::Read(message, &param);
+ std::vector<IPC::Message> messages = std::get<1>(param);
+ last_swap_messages_.clear();
+ for (const IPC::Message& message : messages) {
+ last_swap_messages_.push_back(base::MakeUnique<IPC::Message>(message));
+ }
+ delete message;
+ } else {
+ direct_send_messages_.push_back(base::WrapUnique(message));
+ }
return true;
}
- std::vector<std::unique_ptr<IPC::Message>>& messages() { return messages_; }
+ std::vector<std::unique_ptr<IPC::Message>>& last_swap_messages() {
+ return last_swap_messages_;
+ }
+
+ const std::vector<std::unique_ptr<IPC::Message>>& direct_send_messages() {
+ return direct_send_messages_;
+ }
private:
~TestSyncMessageFilter() override {}
- std::vector<std::unique_ptr<IPC::Message>> messages_;
+ std::vector<std::unique_ptr<IPC::Message>> direct_send_messages_;
+ std::vector<std::unique_ptr<IPC::Message>> last_swap_messages_;
DISALLOW_COPY_AND_ASSIGN(TestSyncMessageFilter);
};
@@ -61,7 +80,7 @@ struct QueueMessageData {
class QueueMessageSwapPromiseTest : public testing::Test {
public:
QueueMessageSwapPromiseTest()
- : frame_swap_message_queue_(new FrameSwapMessageQueue()),
+ : frame_swap_message_queue_(new FrameSwapMessageQueue(0)),
sync_message_filter_(new TestSyncMessageFilter()) {}
~QueueMessageSwapPromiseTest() override {}
@@ -76,7 +95,11 @@ class QueueMessageSwapPromiseTest : public testing::Test {
}
const std::vector<std::unique_ptr<IPC::Message>>& DirectSendMessages() {
- return sync_message_filter_->messages();
+ return sync_message_filter_->direct_send_messages();
+ }
+
+ std::vector<std::unique_ptr<IPC::Message>>& LastSwapMessages() {
+ return sync_message_filter_->last_swap_messages();
}
std::vector<std::unique_ptr<IPC::Message>>& NextSwapMessages() {
@@ -100,6 +123,10 @@ class QueueMessageSwapPromiseTest : public testing::Test {
return false;
}
+ bool LastSwapHasMessage(const IPC::Message& message) {
+ return ContainsMessage(LastSwapMessages(), message);
+ }
+
bool NextSwapHasMessage(const IPC::Message& message) {
return ContainsMessage(NextSwapMessages(), message);
}
@@ -118,7 +145,7 @@ class QueueMessageSwapPromiseTest : public testing::Test {
for (const auto& promise : promises_) {
if (promise.get()) {
promise->DidActivate();
- promise->WillSwap(NULL);
+ promise->WillSwap(&dummy_metadata_);
promise->DidSwap();
}
}
@@ -133,6 +160,7 @@ class QueueMessageSwapPromiseTest : public testing::Test {
scoped_refptr<TestSyncMessageFilter> sync_message_filter_;
std::vector<IPC::Message> messages_;
std::vector<std::unique_ptr<cc::SwapPromise>> promises_;
+ cc::CompositorFrameMetadata dummy_metadata_;
private:
std::vector<std::unique_ptr<IPC::Message>> next_swap_messages_;
@@ -149,13 +177,12 @@ TEST_F(QueueMessageSwapPromiseTest, NextSwapPolicySchedulesMessageForNextSwap) {
ASSERT_TRUE(promises_[0].get());
promises_[0]->DidActivate();
- promises_[0]->WillSwap(NULL);
+ promises_[0]->WillSwap(&dummy_metadata_);
promises_[0]->DidSwap();
EXPECT_TRUE(DirectSendMessages().empty());
- EXPECT_FALSE(frame_swap_message_queue_->Empty());
- // frame_swap_message_queue_->WillSwap(1);
- EXPECT_TRUE(NextSwapHasMessage(messages_[0]));
+ EXPECT_TRUE(frame_swap_message_queue_->Empty());
+ EXPECT_TRUE(LastSwapHasMessage(messages_[0]));
}
TEST_F(QueueMessageSwapPromiseTest, NextSwapPolicyNeedsAtMostOnePromise) {
@@ -181,7 +208,7 @@ TEST_F(QueueMessageSwapPromiseTest, NextSwapPolicySendsMessageOnNoUpdate) {
promises_[0]->DidNotSwap(cc::SwapPromise::COMMIT_NO_UPDATE);
EXPECT_TRUE(ContainsMessage(DirectSendMessages(), messages_[0]));
- EXPECT_TRUE(NextSwapMessages().empty());
+ EXPECT_TRUE(LastSwapMessages().empty());
EXPECT_TRUE(frame_swap_message_queue_->Empty());
}
@@ -194,7 +221,7 @@ TEST_F(QueueMessageSwapPromiseTest, NextSwapPolicySendsMessageOnSwapFails) {
promises_[0]->DidNotSwap(cc::SwapPromise::SWAP_FAILS);
EXPECT_TRUE(ContainsMessage(DirectSendMessages(), messages_[0]));
- EXPECT_TRUE(NextSwapMessages().empty());
+ EXPECT_TRUE(LastSwapMessages().empty());
EXPECT_TRUE(frame_swap_message_queue_->Empty());
}
@@ -207,6 +234,7 @@ TEST_F(QueueMessageSwapPromiseTest, NextSwapPolicyRetainsMessageOnCommitFails) {
promises_[0]->DidNotSwap(cc::SwapPromise::COMMIT_FAILS);
EXPECT_TRUE(DirectSendMessages().empty());
+ EXPECT_TRUE(LastSwapMessages().empty());
EXPECT_FALSE(frame_swap_message_queue_->Empty());
frame_swap_message_queue_->DidSwap(2);
EXPECT_TRUE(NextSwapHasMessage(messages_[0]));
@@ -254,11 +282,11 @@ TEST_F(QueueMessageSwapPromiseTest, VisualStateSwapPromiseDidActivate) {
QueueMessages(data, arraysize(data));
promises_[0]->DidActivate();
- promises_[0]->WillSwap(NULL);
+ promises_[0]->WillSwap(&dummy_metadata_);
promises_[0]->DidSwap();
ASSERT_FALSE(promises_[1].get());
std::vector<std::unique_ptr<IPC::Message>> messages;
- messages.swap(NextSwapMessages());
+ messages.swap(LastSwapMessages());
EXPECT_EQ(2u, messages.size());
EXPECT_TRUE(ContainsMessage(messages, messages_[0]));
EXPECT_TRUE(ContainsMessage(messages, messages_[1]));
« no previous file with comments | « content/renderer/gpu/queue_message_swap_promise.cc ('k') | content/renderer/gpu/renderer_compositor_frame_sink.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698