| // Copyright 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_PROFILES_PROFILE_WINDOW_H_ |
| #define CHROME_BROWSER_PROFILES_PROFILE_WINDOW_H_ |
| |
| #include "base/callback_forward.h" |
| #include "chrome/browser/profiles/profile_metrics.h" |
| #include "chrome/browser/ui/host_desktop.h" |
| #include "chrome/browser/ui/startup/startup_types.h" |
| |
| class Profile; |
| namespace base { class FilePath; } |
| |
| namespace profiles { |
| |
| // Callback to be used when switching to a new profile is completed. |
| typedef base::Callback<void()> ProfileSwitchingDoneCallback; |
| |
| // Different tutorials that can be displayed in the user manager. |
| enum UserManagerTutorialMode { |
| USER_MANAGER_NO_TUTORIAL, // Does not display a tutorial. |
| USER_MANAGER_TUTORIAL_OVERVIEW, // Basic overview of new features. |
| USER_MANAGER_TUTORIAL_LOCK, // TODO(noms): To be implemented. |
| }; |
| |
| // Activates a window for |profile| on the desktop specified by |
| // |desktop_type|. If no such window yet exists, or if |always_create| is |
| // true, this first creates a new window, then activates |
| // that. If activating an exiting window and multiple windows exists then the |
| // window that was most recently active is activated. This is used for |
| // creation of a window from the multi-profile dropdown menu. |
| void FindOrCreateNewWindowForProfile( |
| Profile* profile, |
| chrome::startup::IsProcessStartup process_startup, |
| chrome::startup::IsFirstRun is_first_run, |
| chrome::HostDesktopType desktop_type, |
| bool always_create); |
| |
| // Opens a Browser with the specified profile given by |path|. |
| // If |always_create| is true then a new window is created |
| // even if a window for that profile already exists. When the browser is |
| // opened, |callback| will be run if it isn't null. |
| |
| void SwitchToProfile(const base::FilePath& path, |
| chrome::HostDesktopType desktop_type, |
| bool always_create, |
| ProfileSwitchingDoneCallback callback, |
| ProfileMetrics::ProfileOpen metric); |
| |
| // Opens a Browser for the guest profile and runs |callback| if it isn't null. |
| void SwitchToGuestProfile(chrome::HostDesktopType desktop_type, |
| ProfileSwitchingDoneCallback callback); |
| |
| // Creates a new profile from the next available profile directory, and |
| // opens a new browser window for the profile once it is ready. When the browser |
| // is opened, |callback| will be run if it isn't null. |
| void CreateAndSwitchToNewProfile(chrome::HostDesktopType desktop_type, |
| ProfileSwitchingDoneCallback callback, |
| ProfileMetrics::ProfileAdd metric); |
| |
| // Closes all browser windows that belong to the guest profile. |
| void CloseGuestProfileWindows(); |
| |
| // Closes all the browser windows for |profile| and opens the user manager. |
| void LockProfile(Profile* profile); |
| |
| // Creates or reuses the guest profile needed by the user manager. Based on |
| // the value of |tutorial_mode|, the user manager can show a specific |
| // tutorial, or no tutorial at all. If a tutorial is not shown, then |
| // |profile_path_to_focus| could be used to specify which user should be |
| // focused. |callback| is run with the custom url to be displayed, as well as |
| // a pointer to the guest profile. |
| void CreateGuestProfileForUserManager( |
| const base::FilePath& profile_path_to_focus, |
| profiles::UserManagerTutorialMode tutorial_mode, |
| const base::Callback<void(Profile*, const std::string&)>& callback); |
| |
| // Based on the |profile| preferences, determines whether a user manager |
| // tutorial needs to be shown, and displays the user manager with or without |
| // the tutorial. |
| void ShowUserManagerMaybeWithTutorial(Profile* profile); |
| |
| // Enables new profile management preview and shows the user manager tutorial. |
| void EnableNewProfileManagementPreview(); |
| |
| // Disables new profile management preview and attempts to relaunch Chrome. |
| void DisableNewProfileManagementPreview(); |
| |
| } // namespace profiles |
| |
| #endif // CHROME_BROWSER_PROFILES_PROFILE_WINDOW_H_ |