Home | History | Annotate | Download | only in utility
      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