• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2010 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 CHROME_BROWSER_SERVICE_SERVICE_PROCESS_CONTROL_MANAGER_H_
6 #define CHROME_BROWSER_SERVICE_SERVICE_PROCESS_CONTROL_MANAGER_H_
7 
8 #include <vector>
9 
10 class Profile;
11 class ServiceProcessControl;
12 
13 // ServiceProcessControlManager is a registrar for all ServiceProcess created
14 // in the browser process. It is also a factory for creating new
15 // ServiceProcess.
16 class ServiceProcessControlManager {
17  public:
18   typedef std::vector<ServiceProcessControl*> ServiceProcessControlList;
19 
20   ServiceProcessControlManager();
21   ~ServiceProcessControlManager();
22 
23   // Get the ServiceProcess instance corresponding to |profile| and |type|.
24   // If such an instance doesn't exist a new instance is created.
25   //
26   // There will be at most one ServiceProcess for a |profile|.
27   //
28   // This method should only be accessed on the UI thread.
29   ServiceProcessControl* GetProcessControl(Profile* profile);
30 
31   // Destroy all ServiceProcess objects created.
32   void Shutdown();
33 
34   // Return the instance of ServiceProcessControlManager.
35   static ServiceProcessControlManager* GetInstance();
36 
37  private:
38   ServiceProcessControlList process_control_list_;
39 };
40 
41 #endif  // CHROME_BROWSER_SERVICE_SERVICE_PROCESS_CONTROL_MANAGER_H_
42