| Index: webrtc/base/messagequeue_unittest.cc | 
| diff --git a/webrtc/base/messagequeue_unittest.cc b/webrtc/base/messagequeue_unittest.cc | 
| deleted file mode 100644 | 
| index 9652bb38d533cd296c9b0859d251eb6191e1bc93..0000000000000000000000000000000000000000 | 
| --- a/webrtc/base/messagequeue_unittest.cc | 
| +++ /dev/null | 
| @@ -1,217 +0,0 @@ | 
| -/* | 
| - *  Copyright 2004 The WebRTC Project Authors. All rights reserved. | 
| - * | 
| - *  Use of this source code is governed by a BSD-style license | 
| - *  that can be found in the LICENSE file in the root of the source | 
| - *  tree. An additional intellectual property rights grant can be found | 
| - *  in the file PATENTS.  All contributing project authors may | 
| - *  be found in the AUTHORS file in the root of the source tree. | 
| - */ | 
| - | 
| -#include "webrtc/base/messagequeue.h" | 
| - | 
| -#include <functional> | 
| - | 
| -#include "webrtc/base/atomicops.h" | 
| -#include "webrtc/base/bind.h" | 
| -#include "webrtc/base/event.h" | 
| -#include "webrtc/base/gunit.h" | 
| -#include "webrtc/base/logging.h" | 
| -#include "webrtc/base/thread.h" | 
| -#include "webrtc/base/timeutils.h" | 
| -#include "webrtc/base/nullsocketserver.h" | 
| - | 
| -using namespace rtc; | 
| - | 
| -class MessageQueueTest: public testing::Test, public MessageQueue { | 
| - public: | 
| -  MessageQueueTest() : MessageQueue(SocketServer::CreateDefault(), true) {} | 
| -  bool IsLocked_Worker() { | 
| -    if (!crit_.TryEnter()) { | 
| -      return true; | 
| -    } | 
| -    crit_.Leave(); | 
| -    return false; | 
| -  } | 
| -  bool IsLocked() { | 
| -    // We have to do this on a worker thread, or else the TryEnter will | 
| -    // succeed, since our critical sections are reentrant. | 
| -    Thread worker; | 
| -    worker.Start(); | 
| -    return worker.Invoke<bool>( | 
| -        RTC_FROM_HERE, rtc::Bind(&MessageQueueTest::IsLocked_Worker, this)); | 
| -  } | 
| -}; | 
| - | 
| -struct DeletedLockChecker { | 
| -  DeletedLockChecker(MessageQueueTest* test, bool* was_locked, bool* deleted) | 
| -      : test(test), was_locked(was_locked), deleted(deleted) { } | 
| -  ~DeletedLockChecker() { | 
| -    *deleted = true; | 
| -    *was_locked = test->IsLocked(); | 
| -  } | 
| -  MessageQueueTest* test; | 
| -  bool* was_locked; | 
| -  bool* deleted; | 
| -}; | 
| - | 
| -static void DelayedPostsWithIdenticalTimesAreProcessedInFifoOrder( | 
| -    MessageQueue* q) { | 
| -  EXPECT_TRUE(q != nullptr); | 
| -  int64_t now = TimeMillis(); | 
| -  q->PostAt(RTC_FROM_HERE, now, nullptr, 3); | 
| -  q->PostAt(RTC_FROM_HERE, now - 2, nullptr, 0); | 
| -  q->PostAt(RTC_FROM_HERE, now - 1, nullptr, 1); | 
| -  q->PostAt(RTC_FROM_HERE, now, nullptr, 4); | 
| -  q->PostAt(RTC_FROM_HERE, now - 1, nullptr, 2); | 
| - | 
| -  Message msg; | 
| -  for (size_t i=0; i<5; ++i) { | 
| -    memset(&msg, 0, sizeof(msg)); | 
| -    EXPECT_TRUE(q->Get(&msg, 0)); | 
| -    EXPECT_EQ(i, msg.message_id); | 
| -  } | 
| - | 
| -  EXPECT_FALSE(q->Get(&msg, 0));  // No more messages | 
| -} | 
| - | 
| -TEST_F(MessageQueueTest, | 
| -       DelayedPostsWithIdenticalTimesAreProcessedInFifoOrder) { | 
| -  MessageQueue q(SocketServer::CreateDefault(), true); | 
| -  DelayedPostsWithIdenticalTimesAreProcessedInFifoOrder(&q); | 
| - | 
| -  NullSocketServer nullss; | 
| -  MessageQueue q_nullss(&nullss, true); | 
| -  DelayedPostsWithIdenticalTimesAreProcessedInFifoOrder(&q_nullss); | 
| -} | 
| - | 
| -TEST_F(MessageQueueTest, DisposeNotLocked) { | 
| -  bool was_locked = true; | 
| -  bool deleted = false; | 
| -  DeletedLockChecker* d = new DeletedLockChecker(this, &was_locked, &deleted); | 
| -  Dispose(d); | 
| -  Message msg; | 
| -  EXPECT_FALSE(Get(&msg, 0)); | 
| -  EXPECT_TRUE(deleted); | 
| -  EXPECT_FALSE(was_locked); | 
| -} | 
| - | 
| -class DeletedMessageHandler : public MessageHandler { | 
| - public: | 
| -  explicit DeletedMessageHandler(bool* deleted) : deleted_(deleted) { } | 
| -  ~DeletedMessageHandler() { | 
| -    *deleted_ = true; | 
| -  } | 
| -  void OnMessage(Message* msg) { } | 
| - private: | 
| -  bool* deleted_; | 
| -}; | 
| - | 
| -TEST_F(MessageQueueTest, DiposeHandlerWithPostedMessagePending) { | 
| -  bool deleted = false; | 
| -  DeletedMessageHandler *handler = new DeletedMessageHandler(&deleted); | 
| -  // First, post a dispose. | 
| -  Dispose(handler); | 
| -  // Now, post a message, which should *not* be returned by Get(). | 
| -  Post(RTC_FROM_HERE, handler, 1); | 
| -  Message msg; | 
| -  EXPECT_FALSE(Get(&msg, 0)); | 
| -  EXPECT_TRUE(deleted); | 
| -} | 
| - | 
| -struct UnwrapMainThreadScope { | 
| -  UnwrapMainThreadScope() : rewrap_(Thread::Current() != nullptr) { | 
| -    if (rewrap_) ThreadManager::Instance()->UnwrapCurrentThread(); | 
| -  } | 
| -  ~UnwrapMainThreadScope() { | 
| -    if (rewrap_) ThreadManager::Instance()->WrapCurrentThread(); | 
| -  } | 
| - private: | 
| -  bool rewrap_; | 
| -}; | 
| - | 
| -TEST(MessageQueueManager, Clear) { | 
| -  UnwrapMainThreadScope s; | 
| -  if (MessageQueueManager::IsInitialized()) { | 
| -    LOG(LS_INFO) << "Unable to run MessageQueueManager::Clear test, since the " | 
| -                 << "MessageQueueManager was already initialized by some " | 
| -                 << "other test in this run."; | 
| -    return; | 
| -  } | 
| -  bool deleted = false; | 
| -  DeletedMessageHandler* handler = new DeletedMessageHandler(&deleted); | 
| -  delete handler; | 
| -  EXPECT_TRUE(deleted); | 
| -  EXPECT_FALSE(MessageQueueManager::IsInitialized()); | 
| -} | 
| - | 
| -// Ensure that ProcessAllMessageQueues does its essential function; process | 
| -// all messages (both delayed and non delayed) up until the current time, on | 
| -// all registered message queues. | 
| -TEST(MessageQueueManager, ProcessAllMessageQueues) { | 
| -  Event entered_process_all_message_queues(true, false); | 
| -  Thread a; | 
| -  Thread b; | 
| -  a.Start(); | 
| -  b.Start(); | 
| - | 
| -  volatile int messages_processed = 0; | 
| -  FunctorMessageHandler<void, std::function<void()>> incrementer( | 
| -      [&messages_processed, &entered_process_all_message_queues] { | 
| -        // Wait for event as a means to ensure Increment doesn't occur outside | 
| -        // of ProcessAllMessageQueues. The event is set by a message posted to | 
| -        // the main thread, which is guaranteed to be handled inside | 
| -        // ProcessAllMessageQueues. | 
| -        entered_process_all_message_queues.Wait(Event::kForever); | 
| -        AtomicOps::Increment(&messages_processed); | 
| -      }); | 
| -  FunctorMessageHandler<void, std::function<void()>> event_signaler( | 
| -      [&entered_process_all_message_queues] { | 
| -        entered_process_all_message_queues.Set(); | 
| -      }); | 
| - | 
| -  // Post messages (both delayed and non delayed) to both threads. | 
| -  a.Post(RTC_FROM_HERE, &incrementer); | 
| -  b.Post(RTC_FROM_HERE, &incrementer); | 
| -  a.PostDelayed(RTC_FROM_HERE, 0, &incrementer); | 
| -  b.PostDelayed(RTC_FROM_HERE, 0, &incrementer); | 
| -  rtc::Thread::Current()->Post(RTC_FROM_HERE, &event_signaler); | 
| - | 
| -  MessageQueueManager::ProcessAllMessageQueues(); | 
| -  EXPECT_EQ(4, AtomicOps::AcquireLoad(&messages_processed)); | 
| -} | 
| - | 
| -// Test that ProcessAllMessageQueues doesn't hang if a thread is quitting. | 
| -TEST(MessageQueueManager, ProcessAllMessageQueuesWithQuittingThread) { | 
| -  Thread t; | 
| -  t.Start(); | 
| -  t.Quit(); | 
| -  MessageQueueManager::ProcessAllMessageQueues(); | 
| -} | 
| - | 
| -// Test that ProcessAllMessageQueues doesn't hang if a queue clears its | 
| -// messages. | 
| -TEST(MessageQueueManager, ProcessAllMessageQueuesWithClearedQueue) { | 
| -  Event entered_process_all_message_queues(true, false); | 
| -  Thread t; | 
| -  t.Start(); | 
| - | 
| -  FunctorMessageHandler<void, std::function<void()>> clearer( | 
| -      [&entered_process_all_message_queues] { | 
| -        // Wait for event as a means to ensure Clear doesn't occur outside of | 
| -        // ProcessAllMessageQueues. The event is set by a message posted to the | 
| -        // main thread, which is guaranteed to be handled inside | 
| -        // ProcessAllMessageQueues. | 
| -        entered_process_all_message_queues.Wait(Event::kForever); | 
| -        rtc::Thread::Current()->Clear(nullptr); | 
| -      }); | 
| -  FunctorMessageHandler<void, std::function<void()>> event_signaler( | 
| -      [&entered_process_all_message_queues] { | 
| -        entered_process_all_message_queues.Set(); | 
| -      }); | 
| - | 
| -  // Post messages (both delayed and non delayed) to both threads. | 
| -  t.Post(RTC_FROM_HERE, &clearer); | 
| -  rtc::Thread::Current()->Post(RTC_FROM_HERE, &event_signaler); | 
| -  MessageQueueManager::ProcessAllMessageQueues(); | 
| -} | 
|  |