Index: chrome/browser/browser_thread_unittest.cc |
=================================================================== |
--- chrome/browser/browser_thread_unittest.cc (revision 75626) |
+++ chrome/browser/browser_thread_unittest.cc (working copy) |
@@ -1,166 +0,0 @@ |
-// Copyright (c) 2010 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.h" |
-#include "base/message_loop_proxy.h" |
-#include "base/scoped_ptr.h" |
-#include "chrome/browser/browser_thread.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
-#include "testing/platform_test.h" |
- |
-class BrowserThreadTest : public testing::Test { |
- public: |
- void Release() const { |
- CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- loop_.PostTask(FROM_HERE, new MessageLoop::QuitTask); |
- } |
- |
- protected: |
- virtual void SetUp() { |
- ui_thread_.reset(new BrowserThread(BrowserThread::UI)); |
- file_thread_.reset(new BrowserThread(BrowserThread::FILE)); |
- ui_thread_->Start(); |
- file_thread_->Start(); |
- } |
- |
- virtual void TearDown() { |
- ui_thread_->Stop(); |
- file_thread_->Stop(); |
- } |
- |
- static void BasicFunction(MessageLoop* message_loop) { |
- CHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
- message_loop->PostTask(FROM_HERE, new MessageLoop::QuitTask); |
- } |
- |
- class DummyTask : public Task { |
- public: |
- explicit DummyTask(bool* deleted) : deleted_(deleted) { } |
- ~DummyTask() { |
- *deleted_ = true; |
- } |
- |
- void Run() { |
- CHECK(false); |
- } |
- |
- private: |
- bool* deleted_; |
- }; |
- |
- class DeletedOnFile |
- : public base::RefCountedThreadSafe< |
- DeletedOnFile, BrowserThread::DeleteOnFileThread> { |
- public: |
- explicit DeletedOnFile(MessageLoop* message_loop) |
- : message_loop_(message_loop) { } |
- |
- ~DeletedOnFile() { |
- CHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
- message_loop_->PostTask(FROM_HERE, new MessageLoop::QuitTask()); |
- } |
- |
- private: |
- MessageLoop* message_loop_; |
- }; |
- |
- class NeverDeleted |
- : public base::RefCountedThreadSafe< |
- NeverDeleted, BrowserThread::DeleteOnWebKitThread> { |
- public: |
- ~NeverDeleted() { |
- CHECK(false); |
- } |
- }; |
- |
- private: |
- scoped_ptr<BrowserThread> ui_thread_; |
- scoped_ptr<BrowserThread> file_thread_; |
- // It's kind of ugly to make this mutable - solely so we can post the Quit |
- // Task from Release(). This should be fixed. |
- mutable MessageLoop loop_; |
-}; |
- |
-TEST_F(BrowserThreadTest, PostTask) { |
- BrowserThread::PostTask( |
- BrowserThread::FILE, FROM_HERE, |
- NewRunnableFunction(&BasicFunction, MessageLoop::current())); |
- MessageLoop::current()->Run(); |
-} |
- |
-TEST_F(BrowserThreadTest, Release) { |
- BrowserThread::ReleaseSoon(BrowserThread::UI, FROM_HERE, this); |
- MessageLoop::current()->Run(); |
-} |
- |
-TEST_F(BrowserThreadTest, TaskToNonExistentThreadIsDeleted) { |
- bool deleted = false; |
- BrowserThread::PostTask( |
- BrowserThread::WEBKIT, FROM_HERE, |
- new DummyTask(&deleted)); |
- EXPECT_TRUE(deleted); |
-} |
- |
-TEST_F(BrowserThreadTest, ReleasedOnCorrectThread) { |
- { |
- scoped_refptr<DeletedOnFile> test( |
- new DeletedOnFile(MessageLoop::current())); |
- } |
- MessageLoop::current()->Run(); |
-} |
- |
-TEST_F(BrowserThreadTest, NotReleasedIfTargetThreadNonExistent) { |
- scoped_refptr<NeverDeleted> test(new NeverDeleted()); |
-} |
- |
-TEST_F(BrowserThreadTest, PostTaskViaMessageLoopProxy) { |
- scoped_refptr<base::MessageLoopProxy> message_loop_proxy = |
- BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE); |
- message_loop_proxy->PostTask(FROM_HERE, |
- NewRunnableFunction(&BasicFunction, |
- MessageLoop::current())); |
- MessageLoop::current()->Run(); |
-} |
- |
-TEST_F(BrowserThreadTest, ReleaseViaMessageLoopProxy) { |
- scoped_refptr<base::MessageLoopProxy> message_loop_proxy = |
- BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI); |
- message_loop_proxy->ReleaseSoon(FROM_HERE, this); |
- MessageLoop::current()->Run(); |
-} |
- |
-TEST_F(BrowserThreadTest, TaskToNonExistentThreadIsDeletedViaMessageLoopProxy) { |
- bool deleted = false; |
- scoped_refptr<base::MessageLoopProxy> message_loop_proxy = |
- BrowserThread::GetMessageLoopProxyForThread(BrowserThread::WEBKIT); |
- message_loop_proxy->PostTask(FROM_HERE, new DummyTask(&deleted)); |
- EXPECT_TRUE(deleted); |
-} |
- |
-TEST_F(BrowserThreadTest, PostTaskViaMessageLoopProxyAfterThreadExits) { |
- scoped_ptr<BrowserThread> io_thread(new BrowserThread(BrowserThread::IO)); |
- io_thread->Start(); |
- io_thread->Stop(); |
- |
- bool deleted = false; |
- scoped_refptr<base::MessageLoopProxy> message_loop_proxy = |
- BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO); |
- bool ret = message_loop_proxy->PostTask(FROM_HERE, new DummyTask(&deleted)); |
- EXPECT_FALSE(ret); |
- EXPECT_TRUE(deleted); |
-} |
- |
-TEST_F(BrowserThreadTest, PostTaskViaMessageLoopProxyAfterThreadIsDeleted) { |
- { |
- scoped_ptr<BrowserThread> io_thread(new BrowserThread(BrowserThread::IO)); |
- io_thread->Start(); |
- } |
- bool deleted = false; |
- scoped_refptr<base::MessageLoopProxy> message_loop_proxy = |
- BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO); |
- bool ret = message_loop_proxy->PostTask(FROM_HERE, new DummyTask(&deleted)); |
- EXPECT_FALSE(ret); |
- EXPECT_TRUE(deleted); |
-} |
- |