browser_process_sub_thread.h revision 5821806d5e7f356e8fa4b058a389a808ea183019
1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CONTENT_BROWSER_BROWSER_PROCESS_SUB_THREAD_H_ 6#define CONTENT_BROWSER_BROWSER_PROCESS_SUB_THREAD_H_ 7 8#include "base/basictypes.h" 9#include "content/browser/browser_thread_impl.h" 10#include "content/common/content_export.h" 11 12#if defined(OS_WIN) 13namespace base { 14namespace win { 15class ScopedCOMInitializer; 16} 17} 18#endif 19 20namespace content { 21class NotificationService; 22} 23 24namespace content { 25 26// ---------------------------------------------------------------------------- 27// BrowserProcessSubThread 28// 29// This simple thread object is used for the specialized threads that the 30// BrowserProcess spins up. 31// 32// Applications must initialize the COM library before they can call 33// COM library functions other than CoGetMalloc and memory allocation 34// functions, so this class initializes COM for those users. 35class CONTENT_EXPORT BrowserProcessSubThread : public BrowserThreadImpl { 36 public: 37 explicit BrowserProcessSubThread(BrowserThread::ID identifier); 38 virtual ~BrowserProcessSubThread(); 39 40 protected: 41 virtual void Init() OVERRIDE; 42 virtual void CleanUp() OVERRIDE; 43 44 private: 45 // These methods encapsulate cleanup that needs to happen on the IO thread 46 // before we call the embedder's CleanUp function. 47 void IOThreadPreCleanUp(); 48 49#if defined (OS_WIN) 50 scoped_ptr<base::win::ScopedCOMInitializer> com_initializer_; 51#endif 52 53 // Each specialized thread has its own notification service. 54 scoped_ptr<NotificationService> notification_service_; 55 56 DISALLOW_COPY_AND_ASSIGN(BrowserProcessSubThread); 57}; 58 59} // namespace content 60 61#endif // CONTENT_BROWSER_BROWSER_PROCESS_SUB_THREAD_H_ 62