• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 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_PROFILES_PROFILE_WINDOW_H_
6 #define CHROME_BROWSER_PROFILES_PROFILE_WINDOW_H_
7 
8 #include "base/callback_forward.h"
9 #include "chrome/browser/profiles/profile_manager.h"
10 #include "chrome/browser/profiles/profile_metrics.h"
11 #include "chrome/browser/ui/browser_window.h"
12 #include "chrome/browser/ui/host_desktop.h"
13 #include "chrome/browser/ui/profile_chooser_constants.h"
14 #include "chrome/browser/ui/startup/startup_types.h"
15 
16 class Profile;
17 namespace base { class FilePath; }
18 
19 namespace profiles {
20 
21 // Different tutorials that can be displayed in the user manager.
22 enum UserManagerTutorialMode {
23   USER_MANAGER_NO_TUTORIAL,        // Does not display a tutorial.
24   USER_MANAGER_TUTORIAL_OVERVIEW,  // Basic overview of new features.
25   USER_MANAGER_TUTORIAL_LOCK,      // TODO(noms): To be implemented.
26 };
27 
28 // Different actions to perform after the user manager selects a profile.
29 enum UserManagerProfileSelected {
30   USER_MANAGER_SELECT_PROFILE_NO_ACTION,
31   USER_MANAGER_SELECT_PROFILE_TASK_MANAGER,
32   USER_MANAGER_SELECT_PROFILE_ABOUT_CHROME,
33 };
34 
35 extern const char kUserManagerDisplayTutorial[];
36 extern const char kUserManagerSelectProfileTaskManager[];
37 extern const char kUserManagerSelectProfileAboutChrome[];
38 
39 // Activates a window for |profile| on the desktop specified by
40 // |desktop_type|. If no such window yet exists, or if |always_create| is
41 // true, this first creates a new window, then activates
42 // that. If activating an exiting window and multiple windows exists then the
43 // window that was most recently active is activated. This is used for
44 // creation of a window from the multi-profile dropdown menu.
45 void FindOrCreateNewWindowForProfile(
46     Profile* profile,
47     chrome::startup::IsProcessStartup process_startup,
48     chrome::startup::IsFirstRun is_first_run,
49     chrome::HostDesktopType desktop_type,
50     bool always_create);
51 
52 // Opens a Browser with the specified profile given by |path|.
53 // If |always_create| is true then a new window is created
54 // even if a window for that profile already exists. When the browser is
55 // opened, |callback| will be run if it isn't null.
56 
57 void SwitchToProfile(const base::FilePath& path,
58                      chrome::HostDesktopType desktop_type,
59                      bool always_create,
60                      ProfileManager::CreateCallback callback,
61                      ProfileMetrics::ProfileOpen metric);
62 
63 // Opens a Browser for the guest profile and runs |callback| if it isn't null.
64 void SwitchToGuestProfile(chrome::HostDesktopType desktop_type,
65                           ProfileManager::CreateCallback callback);
66 
67 // Creates a new profile from the next available profile directory, and
68 // opens a new browser window for the profile once it is ready. When the browser
69 // is opened, |callback| will be run if it isn't null.
70 void CreateAndSwitchToNewProfile(chrome::HostDesktopType desktop_type,
71                                  ProfileManager::CreateCallback callback,
72                                  ProfileMetrics::ProfileAdd metric);
73 
74 // Closes all browser windows that belong to the guest profile.
75 void CloseGuestProfileWindows();
76 
77 // Closes all the browser windows for |profile| and opens the user manager.
78 void LockProfile(Profile* profile);
79 
80 // Creates or reuses the guest profile needed by the user manager. Based on
81 // the value of |tutorial_mode|, the user manager can show a specific
82 // tutorial, or no tutorial at all. If a tutorial is not shown, then
83 // |profile_path_to_focus| could be used to specify which user should be
84 // focused. After a profile is opened from the user manager, perform
85 // |profile_open_action|. |callback| is run with the custom url to be displayed,
86 // as well as a pointer to the guest profile.
87 void CreateGuestProfileForUserManager(
88     const base::FilePath& profile_path_to_focus,
89     profiles::UserManagerTutorialMode tutorial_mode,
90     profiles::UserManagerProfileSelected profile_open_action,
91     const base::Callback<void(Profile*, const std::string&)>& callback);
92 
93 // Based on the |profile| preferences, determines whether a user manager
94 // tutorial needs to be shown, and displays the user manager with or without
95 // the tutorial.
96 void ShowUserManagerMaybeWithTutorial(Profile* profile);
97 
98 // Enables new profile management preview and shows the user manager tutorial.
99 void EnableNewProfileManagementPreview(Profile* profile);
100 
101 // Disables new profile management preview and attempts to relaunch Chrome.
102 void DisableNewProfileManagementPreview(Profile* profile);
103 
104 // Converts from modes in the avatar menu to modes understood by
105 // ProfileChooserView.
106 void BubbleViewModeFromAvatarBubbleMode(
107     BrowserWindow::AvatarBubbleMode mode,
108     BubbleViewMode* bubble_view_mode,
109     TutorialMode* tutorial_mode);
110 
111 }  // namespace profiles
112 
113 #endif  // CHROME_BROWSER_PROFILES_PROFILE_WINDOW_H_
114