| Index: third_party/mojo/src/mojo/edk/system/channel_manager_unittest.cc
|
| diff --git a/third_party/mojo/src/mojo/edk/system/channel_manager_unittest.cc b/third_party/mojo/src/mojo/edk/system/channel_manager_unittest.cc
|
| deleted file mode 100644
|
| index 807ec0b2780c560d8e72119e60b27e483b44ce8d..0000000000000000000000000000000000000000
|
| --- a/third_party/mojo/src/mojo/edk/system/channel_manager_unittest.cc
|
| +++ /dev/null
|
| @@ -1,178 +0,0 @@
|
| -// 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 "third_party/mojo/src/mojo/edk/system/channel_manager.h"
|
| -
|
| -#include "base/callback.h"
|
| -#include "base/message_loop/message_loop.h"
|
| -#include "base/run_loop.h"
|
| -#include "base/task_runner.h"
|
| -#include "base/thread_task_runner_handle.h"
|
| -#include "base/threading/simple_thread.h"
|
| -#include "mojo/public/cpp/system/macros.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -#include "third_party/mojo/src/mojo/edk/embedder/platform_channel_pair.h"
|
| -#include "third_party/mojo/src/mojo/edk/embedder/simple_platform_support.h"
|
| -#include "third_party/mojo/src/mojo/edk/system/channel.h"
|
| -#include "third_party/mojo/src/mojo/edk/system/channel_endpoint.h"
|
| -#include "third_party/mojo/src/mojo/edk/system/message_pipe_dispatcher.h"
|
| -
|
| -namespace mojo {
|
| -namespace system {
|
| -namespace {
|
| -
|
| -class ChannelManagerTest : public testing::Test {
|
| - public:
|
| - ChannelManagerTest()
|
| - : message_loop_(base::MessageLoop::TYPE_IO),
|
| - channel_manager_(&platform_support_,
|
| - message_loop_.task_runner(),
|
| - nullptr) {}
|
| - ~ChannelManagerTest() override {
|
| - channel_manager_.ShutdownOnIOThread();
|
| - }
|
| -
|
| - protected:
|
| - ChannelManager& channel_manager() { return channel_manager_; }
|
| -
|
| - private:
|
| - embedder::SimplePlatformSupport platform_support_;
|
| - base::MessageLoop message_loop_;
|
| - // Note: This should be *after* the above, since they must be initialized
|
| - // before it (and should outlive it).
|
| - ChannelManager channel_manager_;
|
| -
|
| - MOJO_DISALLOW_COPY_AND_ASSIGN(ChannelManagerTest);
|
| -};
|
| -
|
| -TEST_F(ChannelManagerTest, Basic) {
|
| - embedder::PlatformChannelPair channel_pair;
|
| -
|
| - const ChannelId id = 1;
|
| - scoped_refptr<MessagePipeDispatcher> d =
|
| - channel_manager().CreateChannelOnIOThread(
|
| - id, channel_pair.PassServerHandle());
|
| -
|
| - scoped_refptr<Channel> ch = channel_manager().GetChannel(id);
|
| - EXPECT_TRUE(ch);
|
| - // |ChannelManager| should have a ref.
|
| - EXPECT_FALSE(ch->HasOneRef());
|
| -
|
| - channel_manager().WillShutdownChannel(id);
|
| - // |ChannelManager| should still have a ref.
|
| - EXPECT_FALSE(ch->HasOneRef());
|
| -
|
| - channel_manager().ShutdownChannelOnIOThread(id);
|
| - // |ChannelManager| should have given up its ref.
|
| - EXPECT_TRUE(ch->HasOneRef());
|
| -
|
| - EXPECT_EQ(MOJO_RESULT_OK, d->Close());
|
| -}
|
| -
|
| -TEST_F(ChannelManagerTest, TwoChannels) {
|
| - embedder::PlatformChannelPair channel_pair;
|
| -
|
| - const ChannelId id1 = 1;
|
| - scoped_refptr<MessagePipeDispatcher> d1 =
|
| - channel_manager().CreateChannelOnIOThread(
|
| - id1, channel_pair.PassServerHandle());
|
| -
|
| - const ChannelId id2 = 2;
|
| - scoped_refptr<MessagePipeDispatcher> d2 =
|
| - channel_manager().CreateChannelOnIOThread(
|
| - id2, channel_pair.PassClientHandle());
|
| -
|
| - scoped_refptr<Channel> ch1 = channel_manager().GetChannel(id1);
|
| - EXPECT_TRUE(ch1);
|
| -
|
| - scoped_refptr<Channel> ch2 = channel_manager().GetChannel(id2);
|
| - EXPECT_TRUE(ch2);
|
| -
|
| - // Calling |WillShutdownChannel()| multiple times (on |id1|) is okay.
|
| - channel_manager().WillShutdownChannel(id1);
|
| - channel_manager().WillShutdownChannel(id1);
|
| - EXPECT_FALSE(ch1->HasOneRef());
|
| - // Not calling |WillShutdownChannel()| (on |id2|) is okay too.
|
| -
|
| - channel_manager().ShutdownChannelOnIOThread(id1);
|
| - EXPECT_TRUE(ch1->HasOneRef());
|
| - channel_manager().ShutdownChannelOnIOThread(id2);
|
| - EXPECT_TRUE(ch2->HasOneRef());
|
| -
|
| - EXPECT_EQ(MOJO_RESULT_OK, d1->Close());
|
| - EXPECT_EQ(MOJO_RESULT_OK, d2->Close());
|
| -}
|
| -
|
| -class OtherThread : public base::SimpleThread {
|
| - public:
|
| - // Note: There should be no other refs to the channel identified by
|
| - // |channel_id| outside the channel manager.
|
| - OtherThread(scoped_refptr<base::TaskRunner> task_runner,
|
| - ChannelManager* channel_manager,
|
| - ChannelId channel_id,
|
| - const base::Closure& quit_closure)
|
| - : base::SimpleThread("other_thread"),
|
| - task_runner_(task_runner),
|
| - channel_manager_(channel_manager),
|
| - channel_id_(channel_id),
|
| - quit_closure_(quit_closure) {}
|
| - ~OtherThread() override {}
|
| -
|
| - private:
|
| - void Run() override {
|
| - // TODO(vtl): Once we have a way of creating a channel from off the I/O
|
| - // thread, do that here instead.
|
| -
|
| - // You can use any unique, nonzero value as the ID.
|
| - scoped_refptr<Channel> ch = channel_manager_->GetChannel(channel_id_);
|
| - // |ChannelManager| should have a ref.
|
| - EXPECT_FALSE(ch->HasOneRef());
|
| -
|
| - channel_manager_->WillShutdownChannel(channel_id_);
|
| - // |ChannelManager| should still have a ref.
|
| - EXPECT_FALSE(ch->HasOneRef());
|
| -
|
| - {
|
| - base::MessageLoop message_loop;
|
| - base::RunLoop run_loop;
|
| - channel_manager_->ShutdownChannel(channel_id_, run_loop.QuitClosure(),
|
| - message_loop.task_runner());
|
| - run_loop.Run();
|
| - }
|
| -
|
| - CHECK(task_runner_->PostTask(FROM_HERE, quit_closure_));
|
| - }
|
| -
|
| - scoped_refptr<base::TaskRunner> task_runner_;
|
| - ChannelManager* channel_manager_;
|
| - ChannelId channel_id_;
|
| - base::Closure quit_closure_;
|
| -
|
| - MOJO_DISALLOW_COPY_AND_ASSIGN(OtherThread);
|
| -};
|
| -
|
| -TEST_F(ChannelManagerTest, CallsFromOtherThread) {
|
| - embedder::PlatformChannelPair channel_pair;
|
| -
|
| - const ChannelId id = 1;
|
| - scoped_refptr<MessagePipeDispatcher> d =
|
| - channel_manager().CreateChannelOnIOThread(
|
| - id, channel_pair.PassServerHandle());
|
| -
|
| - base::RunLoop run_loop;
|
| - OtherThread thread(base::ThreadTaskRunnerHandle::Get(), &channel_manager(),
|
| - id, run_loop.QuitClosure());
|
| - thread.Start();
|
| - run_loop.Run();
|
| - thread.Join();
|
| -
|
| - EXPECT_EQ(MOJO_RESULT_OK, d->Close());
|
| -}
|
| -
|
| -// TODO(vtl): Test |CreateChannelWithoutBootstrapOnIOThread()|. (This will
|
| -// require additional functionality in |Channel|.)
|
| -
|
| -} // namespace
|
| -} // namespace system
|
| -} // namespace mojo
|
|
|