Chromium Code Reviews| Index: content/renderer/gpu/compositor_forwarding_message_filter_unittest.cc |
| diff --git a/content/renderer/gpu/compositor_forwarding_message_filter_unittest.cc b/content/renderer/gpu/compositor_forwarding_message_filter_unittest.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..57c24277bf65e629a6eb84be197fb161dd1c2d44 |
| --- /dev/null |
| +++ b/content/renderer/gpu/compositor_forwarding_message_filter_unittest.cc |
| @@ -0,0 +1,80 @@ |
| +// Copyright 2014 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "content/renderer/gpu/compositor_forwarding_message_filter.h" |
| + |
| +#include "base/bind.h" |
| +#include "base/test/test_simple_task_runner.h" |
| +#include "cc/test/begin_frame_args_test.h" |
| +#include "content/common/view_messages.h" |
| +#include "testing/gtest/include/gtest/gtest.h" |
| + |
| +namespace content { |
| + |
| +class CompositorForwardingMessageFilterTestHandler |
| + : public base::RefCounted<CompositorForwardingMessageFilterTestHandler> { |
| + public: |
| + CompositorForwardingMessageFilterTestHandler() : count_(0) { |
| + } |
| + |
| + void OnPlusMethod(const IPC::Message& msg) { |
| + count_++; |
| + } |
| + |
| + void OnMinusMethod(const IPC::Message& msg) { |
| + count_--; |
| + } |
| + |
| + int count() { return count_; } |
| + |
| + void reset_count() { count_ = 0; } |
|
dcheng
2014/11/10 22:56:15
Not a simple getter/setter, so this should be Rese
simonhong
2014/11/11 12:54:15
Done.
|
| + |
| + private: |
| + friend class base::RefCounted<CompositorForwardingMessageFilterTestHandler>; |
| + ~CompositorForwardingMessageFilterTestHandler() {} |
| + |
| + int count_; |
| +}; |
| + |
| +TEST(CompositorForwardingMessageFilterTest, BasicTest) { |
| + scoped_refptr<CompositorForwardingMessageFilterTestHandler> handler = |
| + new CompositorForwardingMessageFilterTestHandler; |
| + base::TestSimpleTaskRunner* task_runner = new base::TestSimpleTaskRunner; |
|
dcheng
2014/11/10 22:56:15
This is leaked. Just allocate it on the stack.
simonhong
2014/11/11 12:54:15
Done.
dcheng
2014/11/11 18:59:01
Oops, this needs to be held in a scoped_refptr, si
simonhong
2014/11/11 19:33:07
Ah.. sorry my mistake.
Done.
|
| + int route_id = 0; |
| + |
| + ViewMsg_BeginFrame msg(route_id, cc::CreateBeginFrameArgsForTesting()); |
| + |
| + CompositorForwardingMessageFilter::Handler plus_handler = |
| + base::Bind(&CompositorForwardingMessageFilterTestHandler::OnPlusMethod, |
| + handler); |
| + CompositorForwardingMessageFilter::Handler minus_handler = |
| + base::Bind(&CompositorForwardingMessageFilterTestHandler::OnMinusMethod, |
| + handler); |
| + |
| + scoped_refptr<CompositorForwardingMessageFilter> filter = |
| + new CompositorForwardingMessageFilter(task_runner); |
| + |
| + filter->AddHandlerOnCompositorThread(route_id, plus_handler); |
| + filter->OnMessageReceived(msg); |
| + task_runner->RunPendingTasks(); |
| + EXPECT_EQ(1, handler->count()); |
| + |
| + handler->reset_count(); |
| + EXPECT_EQ(0, handler->count()); |
| + |
| + filter->AddHandlerOnCompositorThread(route_id, minus_handler); |
| + filter->OnMessageReceived(msg); |
| + task_runner->RunPendingTasks(); |
| + EXPECT_EQ(0, handler->count()); |
| + |
| + handler->reset_count(); |
| + EXPECT_EQ(0, handler->count()); |
| + |
| + filter->RemoveHandlerOnCompositorThread(route_id, plus_handler); |
| + filter->OnMessageReceived(msg); |
| + task_runner->RunPendingTasks(); |
| + EXPECT_EQ(-1, handler->count()); |
| +} |
| + |
| +} // namespace content |