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

Unified Diff: third_party/mojo/src/mojo/edk/system/channel_manager_unittest.cc

Issue 1676913002: [mojo] Delete third_party/mojo (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: let's try that again Created 4 years, 10 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: 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
« no previous file with comments | « third_party/mojo/src/mojo/edk/system/channel_manager.cc ('k') | third_party/mojo/src/mojo/edk/system/channel_test_base.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698