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_UTILITY_UTILITY_THREAD_IMPL_H_ 6 #define CONTENT_UTILITY_UTILITY_THREAD_IMPL_H_ 7 8 #include <string> 9 #include <vector> 10 11 #include "base/basictypes.h" 12 #include "base/compiler_specific.h" 13 #include "content/child/child_thread.h" 14 #include "content/common/content_export.h" 15 #include "content/public/utility/utility_thread.h" 16 17 namespace base { 18 class FilePath; 19 } 20 21 namespace content { 22 class WebKitPlatformSupportImpl; 23 24 // This class represents the background thread where the utility task runs. 25 class UtilityThreadImpl : public UtilityThread, 26 public ChildThread { 27 public: 28 UtilityThreadImpl(); 29 // Constructor that's used when running in single process mode. 30 explicit UtilityThreadImpl(const std::string& channel_name); 31 virtual ~UtilityThreadImpl(); 32 virtual void Shutdown() OVERRIDE; 33 34 virtual bool Send(IPC::Message* msg) OVERRIDE; 35 virtual void ReleaseProcessIfNeeded() OVERRIDE; 36 #if defined(OS_WIN) 37 virtual void PreCacheFont(const LOGFONT& log_font) OVERRIDE; 38 virtual void ReleaseCachedFonts() OVERRIDE; 39 #endif 40 41 private: 42 void Init(); 43 44 // ChildThread implementation. 45 virtual bool OnControlMessageReceived(const IPC::Message& msg) OVERRIDE; 46 47 // IPC message handlers. 48 void OnBatchModeStarted(); 49 void OnBatchModeFinished(); 50 51 #if defined(OS_POSIX) 52 void OnLoadPlugins(const std::vector<base::FilePath>& plugin_paths); 53 #endif // OS_POSIX 54 55 // True when we're running in batch mode. 56 bool batch_mode_; 57 58 // True if running in single process mode. 59 bool single_process_; 60 61 scoped_ptr<WebKitPlatformSupportImpl> webkit_platform_support_; 62 63 DISALLOW_COPY_AND_ASSIGN(UtilityThreadImpl); 64 }; 65 66 } // namespace content 67 68 #endif // CONTENT_UTILITY_UTILITY_THREAD_IMPL_H_ 69