| 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..6bd93a88f915243c655e38d6820eea7e3daec6f5
|
| --- /dev/null
|
| +++ b/content/renderer/gpu/compositor_forwarding_message_filter_unittest.cc
|
| @@ -0,0 +1,107 @@
|
| +// 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 "ipc/ipc_message.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +
|
| +#define IPC_MESSAGE_IMPL
|
| +#include "ipc/ipc_message_macros.h"
|
| +
|
| +#define IPC_MESSAGE_START TestMsgStart
|
| +
|
| +namespace content {
|
| +
|
| +IPC_MESSAGE_ROUTED0(TestMessage);
|
| +
|
| +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; }
|
| +
|
| + private:
|
| + friend class base::RefCounted<CompositorForwardingMessageFilterTestHandler>;
|
| + ~CompositorForwardingMessageFilterTestHandler() {}
|
| +
|
| + int count_;
|
| +};
|
| +
|
| +class TestCompositorForwardingMessageFilter
|
| + : public CompositorForwardingMessageFilter {
|
| + public:
|
| + TestCompositorForwardingMessageFilter(
|
| + const uint32* message_ids_to_filter,
|
| + size_t num_message_ids_to_filter,
|
| + base::TaskRunner* target_task_runner)
|
| + : CompositorForwardingMessageFilter(message_ids_to_filter,
|
| + num_message_ids_to_filter,
|
| + target_task_runner) {
|
| + }
|
| +
|
| + private:
|
| + virtual ~TestCompositorForwardingMessageFilter() {}
|
| +};
|
| +
|
| +TEST(CompositorForwardingMessageFilterTest, BasicTest) {
|
| + scoped_refptr<CompositorForwardingMessageFilterTestHandler> handler =
|
| + new CompositorForwardingMessageFilterTestHandler;
|
| + base::TestSimpleTaskRunner* task_runner = new base::TestSimpleTaskRunner;
|
| + uint32 messages_to_filter[] = {
|
| + TestMessage::ID
|
| + };
|
| + int route_id = 0;
|
| +
|
| + TestMessage msg(route_id);
|
| +
|
| + CompositorForwardingMessageFilter::Handler plus_handler =
|
| + base::Bind(&CompositorForwardingMessageFilterTestHandler::OnPlusMethod,
|
| + handler);
|
| + CompositorForwardingMessageFilter::Handler minus_handler =
|
| + base::Bind(&CompositorForwardingMessageFilterTestHandler::OnMinusMethod,
|
| + handler);
|
| +
|
| + scoped_refptr<CompositorForwardingMessageFilter> filter =
|
| + new TestCompositorForwardingMessageFilter(messages_to_filter,
|
| + 1,
|
| + task_runner);
|
| +
|
| + filter->AddRoute(route_id, plus_handler);
|
| + filter->OnMessageReceived(msg);
|
| + task_runner->RunPendingTasks();
|
| + EXPECT_EQ(1, handler->count());
|
| +
|
| + handler->reset_count();
|
| + EXPECT_EQ(0, handler->count());
|
| +
|
| + filter->AddRoute(route_id, minus_handler);
|
| + filter->OnMessageReceived(msg);
|
| + task_runner->RunPendingTasks();
|
| + EXPECT_EQ(0, handler->count());
|
| +
|
| + handler->reset_count();
|
| + EXPECT_EQ(0, handler->count());
|
| +
|
| + filter->RemoveRoute(route_id, plus_handler);
|
| + filter->OnMessageReceived(msg);
|
| + task_runner->RunPendingTasks();
|
| + EXPECT_EQ(-1, handler->count());
|
| +}
|
| +
|
| +} // namespace content
|
|
|