15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/test_browser_thread.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 79ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/message_loop/message_loop.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/threading/thread.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/browser_thread_impl.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/notification_service_impl.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TestBrowserThreadImpl : public BrowserThreadImpl { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit TestBrowserThreadImpl(BrowserThread::ID identifier) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : BrowserThreadImpl(identifier), 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) notification_service_(NULL) { 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestBrowserThreadImpl(BrowserThread::ID identifier, 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::MessageLoop* message_loop) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : BrowserThreadImpl(identifier, message_loop), 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) notification_service_(NULL) {} 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~TestBrowserThreadImpl() { 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Stop(); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Init() OVERRIDE { 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) notification_service_ = new NotificationServiceImpl; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowserThreadImpl::Init(); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void CleanUp() OVERRIDE { 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) delete notification_service_; 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) notification_service_ = NULL; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowserThreadImpl::CleanUp(); 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NotificationService* notification_service_; 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(TestBrowserThreadImpl); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TestBrowserThread::TestBrowserThread(BrowserThread::ID identifier) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : impl_(new TestBrowserThreadImpl(identifier)) { 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TestBrowserThread::TestBrowserThread(BrowserThread::ID identifier, 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::MessageLoop* message_loop) 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) : impl_(new TestBrowserThreadImpl(identifier, message_loop)) {} 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TestBrowserThread::~TestBrowserThread() { 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Stop(); 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool TestBrowserThread::Start() { 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return impl_->Start(); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool TestBrowserThread::StartIOThread() { 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Thread::Options options; 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) options.message_loop_type = base::MessageLoop::TYPE_IO; 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return impl_->StartWithOptions(options); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void TestBrowserThread::Stop() { 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) impl_->Stop(); 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool TestBrowserThread::IsRunning() { 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return impl_->IsRunning(); 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)base::Thread* TestBrowserThread::DeprecatedGetThreadObject() { 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return impl_.get(); 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace content 82