summaryrefslogtreecommitdiff
path: root/base/message_loop/message_pump_io_ios_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'base/message_loop/message_pump_io_ios_unittest.cc')
-rw-r--r--base/message_loop/message_pump_io_ios_unittest.cc182
1 files changed, 0 insertions, 182 deletions
diff --git a/base/message_loop/message_pump_io_ios_unittest.cc b/base/message_loop/message_pump_io_ios_unittest.cc
deleted file mode 100644
index ba96f83bbf..0000000000
--- a/base/message_loop/message_pump_io_ios_unittest.cc
+++ /dev/null
@@ -1,182 +0,0 @@
-// Copyright 2012 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 "base/message_loop/message_pump_io_ios.h"
-
-#include <unistd.h>
-
-#include "base/message_loop/message_loop.h"
-#include "base/posix/eintr_wrapper.h"
-#include "base/threading/thread.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace base {
-
-class MessagePumpIOSForIOTest : public testing::Test {
- protected:
- MessagePumpIOSForIOTest()
- : ui_loop_(MessageLoop::TYPE_UI),
- io_thread_("MessagePumpIOSForIOTestIOThread") {}
- ~MessagePumpIOSForIOTest() override {}
-
- void SetUp() override {
- Thread::Options options(MessageLoop::TYPE_IO, 0);
- ASSERT_TRUE(io_thread_.StartWithOptions(options));
- ASSERT_EQ(MessageLoop::TYPE_IO, io_thread_.message_loop()->type());
- int ret = pipe(pipefds_);
- ASSERT_EQ(0, ret);
- ret = pipe(alternate_pipefds_);
- ASSERT_EQ(0, ret);
- }
-
- void TearDown() override {
- if (IGNORE_EINTR(close(pipefds_[0])) < 0)
- PLOG(ERROR) << "close";
- if (IGNORE_EINTR(close(pipefds_[1])) < 0)
- PLOG(ERROR) << "close";
- }
-
- MessageLoop* ui_loop() { return &ui_loop_; }
- MessageLoopForIO* io_loop() const {
- return static_cast<MessageLoopForIO*>(io_thread_.message_loop());
- }
-
- void HandleFdIOEvent(MessageLoopForIO::FileDescriptorWatcher* watcher) {
- MessagePumpIOSForIO::HandleFdIOEvent(watcher->fdref_,
- kCFFileDescriptorReadCallBack | kCFFileDescriptorWriteCallBack,
- watcher);
- }
-
- int pipefds_[2];
- int alternate_pipefds_[2];
-
- private:
- MessageLoop ui_loop_;
- Thread io_thread_;
-
- DISALLOW_COPY_AND_ASSIGN(MessagePumpIOSForIOTest);
-};
-
-namespace {
-
-// Concrete implementation of MessagePumpIOSForIO::Watcher that does
-// nothing useful.
-class StupidWatcher : public MessagePumpIOSForIO::Watcher {
- public:
- ~StupidWatcher() override {}
-
- // base:MessagePumpIOSForIO::Watcher interface
- void OnFileCanReadWithoutBlocking(int fd) override {}
- void OnFileCanWriteWithoutBlocking(int fd) override {}
-};
-
-#if GTEST_HAS_DEATH_TEST && !defined(NDEBUG)
-
-// Test to make sure that we catch calling WatchFileDescriptor off of the
-// wrong thread.
-TEST_F(MessagePumpIOSForIOTest, TestWatchingFromBadThread) {
- MessagePumpIOSForIO::FileDescriptorWatcher watcher;
- StupidWatcher delegate;
-
- ASSERT_DEBUG_DEATH(io_loop()->WatchFileDescriptor(
- STDOUT_FILENO, false, MessageLoopForIO::WATCH_READ, &watcher, &delegate),
- "Check failed: "
- "watch_file_descriptor_caller_checker_.CalledOnValidThread\\(\\)");
-}
-
-#endif // GTEST_HAS_DEATH_TEST && !defined(NDEBUG)
-
-class BaseWatcher : public MessagePumpIOSForIO::Watcher {
- public:
- BaseWatcher(MessagePumpIOSForIO::FileDescriptorWatcher* controller)
- : controller_(controller) {
- DCHECK(controller_);
- }
- ~BaseWatcher() override {}
-
- // MessagePumpIOSForIO::Watcher interface
- void OnFileCanReadWithoutBlocking(int /* fd */) override { NOTREACHED(); }
-
- void OnFileCanWriteWithoutBlocking(int /* fd */) override { NOTREACHED(); }
-
- protected:
- MessagePumpIOSForIO::FileDescriptorWatcher* controller_;
-};
-
-class DeleteWatcher : public BaseWatcher {
- public:
- explicit DeleteWatcher(
- MessagePumpIOSForIO::FileDescriptorWatcher* controller)
- : BaseWatcher(controller) {}
-
- ~DeleteWatcher() override { DCHECK(!controller_); }
-
- void OnFileCanWriteWithoutBlocking(int /* fd */) override {
- DCHECK(controller_);
- delete controller_;
- controller_ = NULL;
- }
-};
-
-TEST_F(MessagePumpIOSForIOTest, DeleteWatcher) {
- scoped_ptr<MessagePumpIOSForIO> pump(new MessagePumpIOSForIO);
- MessagePumpIOSForIO::FileDescriptorWatcher* watcher =
- new MessagePumpIOSForIO::FileDescriptorWatcher;
- DeleteWatcher delegate(watcher);
- pump->WatchFileDescriptor(pipefds_[1],
- false, MessagePumpIOSForIO::WATCH_READ_WRITE, watcher, &delegate);
-
- // Spoof a callback.
- HandleFdIOEvent(watcher);
-}
-
-class StopWatcher : public BaseWatcher {
- public:
- StopWatcher(MessagePumpIOSForIO::FileDescriptorWatcher* controller,
- MessagePumpIOSForIO* pump,
- int fd_to_start_watching = -1)
- : BaseWatcher(controller),
- pump_(pump),
- fd_to_start_watching_(fd_to_start_watching) {}
-
- ~StopWatcher() override {}
-
- void OnFileCanWriteWithoutBlocking(int /* fd */) override {
- controller_->StopWatchingFileDescriptor();
- if (fd_to_start_watching_ >= 0) {
- pump_->WatchFileDescriptor(fd_to_start_watching_,
- false, MessagePumpIOSForIO::WATCH_READ_WRITE, controller_, this);
- }
- }
-
- private:
- MessagePumpIOSForIO* pump_;
- int fd_to_start_watching_;
-};
-
-TEST_F(MessagePumpIOSForIOTest, StopWatcher) {
- scoped_ptr<MessagePumpIOSForIO> pump(new MessagePumpIOSForIO);
- MessagePumpIOSForIO::FileDescriptorWatcher watcher;
- StopWatcher delegate(&watcher, pump.get());
- pump->WatchFileDescriptor(pipefds_[1],
- false, MessagePumpIOSForIO::WATCH_READ_WRITE, &watcher, &delegate);
-
- // Spoof a callback.
- HandleFdIOEvent(&watcher);
-}
-
-TEST_F(MessagePumpIOSForIOTest, StopWatcherAndWatchSomethingElse) {
- scoped_ptr<MessagePumpIOSForIO> pump(new MessagePumpIOSForIO);
- MessagePumpIOSForIO::FileDescriptorWatcher watcher;
- StopWatcher delegate(&watcher, pump.get(), alternate_pipefds_[1]);
- pump->WatchFileDescriptor(pipefds_[1],
- false, MessagePumpIOSForIO::WATCH_READ_WRITE, &watcher, &delegate);
-
- // Spoof a callback.
- HandleFdIOEvent(&watcher);
-}
-
-} // namespace
-
-} // namespace base