1bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Use of this source code is governed by a BSD-style license that can be 3bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// found in the LICENSE file. 4bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 5bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#ifndef CHROME_BROWSER_SERVICE_SERVICE_PROCESS_CONTROL_MANAGER_H_ 6bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#define CHROME_BROWSER_SERVICE_SERVICE_PROCESS_CONTROL_MANAGER_H_ 7bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 8bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include <vector> 9bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 10bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass Profile; 11bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass ServiceProcessControl; 12bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 13bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// ServiceProcessControlManager is a registrar for all ServiceProcess created 14bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// in the browser process. It is also a factory for creating new 15bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// ServiceProcess. 16bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass ServiceProcessControlManager { 17bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen public: 18bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen typedef std::vector<ServiceProcessControl*> ServiceProcessControlList; 19bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 20bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ServiceProcessControlManager(); 21bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ~ServiceProcessControlManager(); 22bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 23bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Get the ServiceProcess instance corresponding to |profile| and |type|. 24bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // If such an instance doesn't exist a new instance is created. 25bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // 26731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // There will be at most one ServiceProcess for a |profile|. 27bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // 28bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // This method should only be accessed on the UI thread. 29731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ServiceProcessControl* GetProcessControl(Profile* profile); 30bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 31bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Destroy all ServiceProcess objects created. 32bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen void Shutdown(); 33bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 34bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Return the instance of ServiceProcessControlManager. 3521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen static ServiceProcessControlManager* GetInstance(); 36bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 37bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen private: 38bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ServiceProcessControlList process_control_list_; 39bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}; 40bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 41bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#endif // CHROME_BROWSER_SERVICE_SERVICE_PROCESS_CONTROL_MANAGER_H_ 42