Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / browser_process_platform_part_chromeos.h
1 // Copyright (c) 2013 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_BROWSER_PROCESS_PLATFORM_PART_CHROMEOS_H_
6 #define CHROME_BROWSER_BROWSER_PROCESS_PLATFORM_PART_CHROMEOS_H_
7
8 #include "base/compiler_specific.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "base/threading/non_thread_safe.h"
11 #include "chrome/browser/browser_process_platform_part_base.h"
12
13 namespace base {
14 class CommandLine;
15 }
16
17 namespace chromeos {
18 class ChromeUserManager;
19 class OomPriorityManager;
20 class ProfileHelper;
21 }
22
23 namespace chromeos {
24 namespace system {
25 class AutomaticRebootManager;
26 class DeviceDisablingManager;
27 class DeviceDisablingManagerDefaultDelegate;
28 }
29 }
30
31 namespace policy {
32 class BrowserPolicyConnector;
33 class BrowserPolicyConnectorChromeOS;
34 }
35
36 namespace session_manager {
37 class SessionManager;
38 }
39
40 class Profile;
41
42 class BrowserProcessPlatformPart : public BrowserProcessPlatformPartBase,
43                                    public base::NonThreadSafe {
44  public:
45   BrowserProcessPlatformPart();
46   virtual ~BrowserProcessPlatformPart();
47
48   void InitializeAutomaticRebootManager();
49   void ShutdownAutomaticRebootManager();
50
51   void InitializeChromeUserManager();
52   void DestroyChromeUserManager();
53
54   void InitializeDeviceDisablingManager();
55   void ShutdownDeviceDisablingManager();
56
57   void InitializeSessionManager(const base::CommandLine& parsed_command_line,
58                                 Profile* profile,
59                                 bool is_running_test);
60   void ShutdownSessionManager();
61
62   // Returns the SessionManager instance that is used to initialize and
63   // start user sessions as well as responsible on launching pre-session UI like
64   // out-of-box or login.
65   virtual session_manager::SessionManager* SessionManager();
66
67   // Returns the out-of-memory priority manager.
68   // Virtual for testing (see TestingBrowserProcessPlatformPart).
69   virtual chromeos::OomPriorityManager* oom_priority_manager();
70
71   // Returns the ProfileHelper instance that is used to identify
72   // users and their profiles in Chrome OS multi user session.
73   chromeos::ProfileHelper* profile_helper();
74
75   chromeos::system::AutomaticRebootManager* automatic_reboot_manager() {
76     return automatic_reboot_manager_.get();
77   }
78
79   policy::BrowserPolicyConnectorChromeOS* browser_policy_connector_chromeos();
80
81   chromeos::ChromeUserManager* user_manager() {
82     return chrome_user_manager_.get();
83   }
84
85   chromeos::system::DeviceDisablingManager* device_disabling_manager() {
86     return device_disabling_manager_.get();
87   }
88
89   // Overridden from BrowserProcessPlatformPartBase:
90   virtual void StartTearDown() override;
91
92   virtual scoped_ptr<policy::BrowserPolicyConnector>
93       CreateBrowserPolicyConnector() override;
94
95  private:
96   void CreateProfileHelper();
97
98   scoped_ptr<session_manager::SessionManager> session_manager_;
99
100   bool created_profile_helper_;
101   scoped_ptr<chromeos::ProfileHelper> profile_helper_;
102
103   scoped_ptr<chromeos::OomPriorityManager> oom_priority_manager_;
104
105   scoped_ptr<chromeos::system::AutomaticRebootManager>
106       automatic_reboot_manager_;
107
108   scoped_ptr<chromeos::ChromeUserManager> chrome_user_manager_;
109
110   scoped_ptr<chromeos::system::DeviceDisablingManagerDefaultDelegate>
111       device_disabling_manager_delegate_;
112   scoped_ptr<chromeos::system::DeviceDisablingManager>
113       device_disabling_manager_;
114
115   DISALLOW_COPY_AND_ASSIGN(BrowserProcessPlatformPart);
116 };
117
118 #endif  // CHROME_BROWSER_BROWSER_PROCESS_PLATFORM_PART_CHROMEOS_H_