Home | History | Annotate | Download | only in browser
      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 }
     27 }
     28 
     29 namespace policy {
     30 class BrowserPolicyConnector;
     31 class BrowserPolicyConnectorChromeOS;
     32 }
     33 
     34 namespace session_manager {
     35 class SessionManager;
     36 }
     37 
     38 class Profile;
     39 
     40 class BrowserProcessPlatformPart : public BrowserProcessPlatformPartBase,
     41                                    public base::NonThreadSafe {
     42  public:
     43   BrowserProcessPlatformPart();
     44   virtual ~BrowserProcessPlatformPart();
     45 
     46   void InitializeAutomaticRebootManager();
     47   void ShutdownAutomaticRebootManager();
     48 
     49   void InitializeChromeUserManager();
     50   void DestroyChromeUserManager();
     51 
     52   void InitializeSessionManager(const base::CommandLine& parsed_command_line,
     53                                 Profile* profile,
     54                                 bool is_running_test);
     55   void ShutdownSessionManager();
     56 
     57   // Returns the SessionManager instance that is used to initialize and
     58   // start user sessions as well as responsible on launching pre-session UI like
     59   // out-of-box or login.
     60   virtual session_manager::SessionManager* SessionManager();
     61 
     62   // Returns the out-of-memory priority manager.
     63   // Virtual for testing (see TestingBrowserProcessPlatformPart).
     64   virtual chromeos::OomPriorityManager* oom_priority_manager();
     65 
     66   // Returns the ProfileHelper instance that is used to identify
     67   // users and their profiles in Chrome OS multi user session.
     68   chromeos::ProfileHelper* profile_helper();
     69 
     70   chromeos::system::AutomaticRebootManager* automatic_reboot_manager() {
     71     return automatic_reboot_manager_.get();
     72   }
     73 
     74   policy::BrowserPolicyConnectorChromeOS* browser_policy_connector_chromeos();
     75 
     76   chromeos::ChromeUserManager* user_manager() {
     77     return chrome_user_manager_.get();
     78   }
     79 
     80   // Overridden from BrowserProcessPlatformPartBase:
     81   virtual void StartTearDown() OVERRIDE;
     82 
     83   virtual scoped_ptr<policy::BrowserPolicyConnector>
     84       CreateBrowserPolicyConnector() OVERRIDE;
     85 
     86  private:
     87   void CreateProfileHelper();
     88 
     89   scoped_ptr<session_manager::SessionManager> session_manager_;
     90 
     91   bool created_profile_helper_;
     92   scoped_ptr<chromeos::ProfileHelper> profile_helper_;
     93 
     94   scoped_ptr<chromeos::OomPriorityManager> oom_priority_manager_;
     95 
     96   scoped_ptr<chromeos::system::AutomaticRebootManager>
     97       automatic_reboot_manager_;
     98 
     99   scoped_ptr<chromeos::ChromeUserManager> chrome_user_manager_;
    100 
    101   DISALLOW_COPY_AND_ASSIGN(BrowserProcessPlatformPart);
    102 };
    103 
    104 #endif  // CHROME_BROWSER_BROWSER_PROCESS_PLATFORM_PART_CHROMEOS_H_
    105