Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(140)

Side by Side Diff: chrome/browser/profile_manager.h

Issue 3075022: Delete AvailableProfile (et al.) in browser/profile_manager.*. (Closed)
Patch Set: Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | chrome/browser/profile_manager.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // This class keeps track of the currently-active profiles in the runtime. 5 // This class keeps track of the currently-active profiles in the runtime.
6 6
7 #ifndef CHROME_BROWSER_PROFILE_MANAGER_H__ 7 #ifndef CHROME_BROWSER_PROFILE_MANAGER_H__
8 #define CHROME_BROWSER_PROFILE_MANAGER_H__ 8 #define CHROME_BROWSER_PROFILE_MANAGER_H__
9 #pragma once 9 #pragma once
10 10
11 #include <map> 11 #include <map>
12 #include <string> 12 #include <string>
13 #include <vector> 13 #include <vector>
14 14
15 #include "app/system_monitor.h" 15 #include "app/system_monitor.h"
16 #include "base/basictypes.h" 16 #include "base/basictypes.h"
17 #include "base/file_path.h" 17 #include "base/file_path.h"
18 #include "base/message_loop.h" 18 #include "base/message_loop.h"
19 #include "base/non_thread_safe.h" 19 #include "base/non_thread_safe.h"
20 #include "base/values.h" 20 #include "base/values.h"
21 #include "chrome/browser/profile.h" 21 #include "chrome/browser/profile.h"
22 #include "chrome/common/notification_observer.h" 22 #include "chrome/common/notification_observer.h"
23 #include "chrome/common/notification_registrar.h" 23 #include "chrome/common/notification_registrar.h"
24 24
25 // This is a small storage class that simply represents some metadata about
26 // profiles that are available in the current user data directory.
27 // These are cached in local state so profiles don't need to be scanned
28 // for their metadata on every launch.
29 class AvailableProfile {
30 public:
31 AvailableProfile(const std::wstring& name,
32 const std::wstring& id,
33 const FilePath& directory)
34 : name_(name), id_(id), directory_(directory) {}
35
36 // Decodes a DictionaryValue into an AvailableProfile
37 static AvailableProfile* FromValue(DictionaryValue* value) {
38 DCHECK(value);
39 std::wstring name, id;
40 FilePath::StringType directory;
41 value->GetString(L"name", &name);
42 value->GetString(L"id", &id);
43 value->GetString(L"directory", &directory);
44 return new AvailableProfile(name, id, FilePath(directory));
45 }
46
47 // Encodes this AvailableProfile into a new DictionaryValue
48 DictionaryValue* ToValue() {
49 DictionaryValue* value = new DictionaryValue;
50 value->SetString(L"name", name_);
51 value->SetString(L"id", id_);
52 value->SetString(L"directory", directory_.value());
53 return value;
54 }
55
56 std::wstring name() const { return name_; }
57 std::wstring id() const { return id_; }
58 FilePath directory() const { return directory_; }
59
60 private:
61 std::wstring name_; // User-visible profile name
62 std::wstring id_; // Profile identifier
63 FilePath directory_; // Subdirectory containing profile (not full path)
64
65 DISALLOW_COPY_AND_ASSIGN(AvailableProfile);
66 };
67
68 class ProfileManager : public NonThreadSafe, 25 class ProfileManager : public NonThreadSafe,
69 public SystemMonitor::PowerObserver, 26 public SystemMonitor::PowerObserver,
70 public NotificationObserver { 27 public NotificationObserver {
71 public: 28 public:
72 ProfileManager(); 29 ProfileManager();
73 virtual ~ProfileManager(); 30 virtual ~ProfileManager();
74 31
75 // Invokes ShutdownSessionService() on all profiles. 32 // Invokes ShutdownSessionService() on all profiles.
76 static void ShutdownSessionServices(); 33 static void ShutdownSessionServices();
77 34
(...skipping 27 matching lines...) Expand all
105 // These allow iteration through the current list of profiles. 62 // These allow iteration through the current list of profiles.
106 typedef std::vector<Profile*> ProfileVector; 63 typedef std::vector<Profile*> ProfileVector;
107 typedef ProfileVector::iterator iterator; 64 typedef ProfileVector::iterator iterator;
108 typedef ProfileVector::const_iterator const_iterator; 65 typedef ProfileVector::const_iterator const_iterator;
109 66
110 iterator begin() { return profiles_.begin(); } 67 iterator begin() { return profiles_.begin(); }
111 const_iterator begin() const { return profiles_.begin(); } 68 const_iterator begin() const { return profiles_.begin(); }
112 iterator end() { return profiles_.end(); } 69 iterator end() { return profiles_.end(); }
113 const_iterator end() const { return profiles_.end(); } 70 const_iterator end() const { return profiles_.end(); }
114 71
115 typedef std::vector<AvailableProfile*> AvailableProfileVector;
116
117 // PowerObserver notifications 72 // PowerObserver notifications
118 void OnSuspend(); 73 void OnSuspend();
119 void OnResume(); 74 void OnResume();
120 75
121 // NotificationObserver implementation. 76 // NotificationObserver implementation.
122 virtual void Observe(NotificationType type, 77 virtual void Observe(NotificationType type,
123 const NotificationSource& source, 78 const NotificationSource& source,
124 const NotificationDetails& details); 79 const NotificationDetails& details);
125 80
126 // ------------------ static utility functions ------------------- 81 // ------------------ static utility functions -------------------
127 82
128 // Returns the path to the default profile directory, based on the given 83 // Returns the path to the default profile directory, based on the given
129 // user data directory. 84 // user data directory.
130 static FilePath GetDefaultProfileDir(const FilePath& user_data_dir); 85 static FilePath GetDefaultProfileDir(const FilePath& user_data_dir);
131 86
132 // Returns the path to the preferences file given the user profile directory. 87 // Returns the path to the preferences file given the user profile directory.
133 static FilePath GetProfilePrefsPath(const FilePath& profile_dir); 88 static FilePath GetProfilePrefsPath(const FilePath& profile_dir);
134 89
135 // Tries to determine whether the given path represents a profile 90 // Tries to determine whether the given path represents a profile
136 // directory, and returns true if it thinks it does. 91 // directory, and returns true if it thinks it does.
137 static bool IsProfile(const FilePath& path); 92 static bool IsProfile(const FilePath& path);
138 93
139 // If a profile with the given path is currently managed by this object, 94 // If a profile with the given path is currently managed by this object,
140 // return a pointer to the corresponding Profile object; 95 // return a pointer to the corresponding Profile object;
141 // otherwise return NULL. 96 // otherwise return NULL.
142 Profile* GetProfileByPath(const FilePath& path) const; 97 Profile* GetProfileByPath(const FilePath& path) const;
(...skipping 12 matching lines...) Expand all
155 // Adds a pre-existing Profile object to the set managed by this 110 // Adds a pre-existing Profile object to the set managed by this
156 // ProfileManager. This ProfileManager takes ownership of the Profile. 111 // ProfileManager. This ProfileManager takes ownership of the Profile.
157 // The Profile should not already be managed by this ProfileManager. 112 // The Profile should not already be managed by this ProfileManager.
158 // Returns true if the profile was added, false otherwise. 113 // Returns true if the profile was added, false otherwise.
159 bool AddProfile(Profile* profile, bool init_extensions); 114 bool AddProfile(Profile* profile, bool init_extensions);
160 115
161 // We keep a simple vector of profiles rather than something fancier 116 // We keep a simple vector of profiles rather than something fancier
162 // because we expect there to be a small number of profiles active. 117 // because we expect there to be a small number of profiles active.
163 ProfileVector profiles_; 118 ProfileVector profiles_;
164 119
165 AvailableProfileVector available_profiles_;
166
167 NotificationRegistrar registrar_; 120 NotificationRegistrar registrar_;
168 121
169 // Indicates that a user has logged in and that the profile specified 122 // Indicates that a user has logged in and that the profile specified
170 // in the --login-profile command line argument should be used as the 123 // in the --login-profile command line argument should be used as the
171 // default. 124 // default.
172 bool logged_in_; 125 bool logged_in_;
173 126
174 DISALLOW_COPY_AND_ASSIGN(ProfileManager); 127 DISALLOW_COPY_AND_ASSIGN(ProfileManager);
175 }; 128 };
176 129
177 #endif // CHROME_BROWSER_PROFILE_MANAGER_H__ 130 #endif // CHROME_BROWSER_PROFILE_MANAGER_H__
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/profile_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698