OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 #include "build/build_config.h" | 5 #include "build/build_config.h" |
6 | 6 |
7 #include "chrome/browser/user_data_manager.h" | 7 #include "chrome/browser/user_data_manager.h" |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 | 10 |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
214 if (profile_name != chrome::kNotSignedInProfile) { | 214 if (profile_name != chrome::kNotSignedInProfile) { |
215 folder_name += kProfileFolderSeparator; | 215 folder_name += kProfileFolderSeparator; |
216 folder_name += profile_name; | 216 folder_name += profile_name; |
217 } | 217 } |
218 return folder_name; | 218 return folder_name; |
219 } | 219 } |
220 | 220 |
221 std::wstring UserDataManager::GetUserDataFolderForProfile( | 221 std::wstring UserDataManager::GetUserDataFolderForProfile( |
222 const std::wstring& profile_name) const { | 222 const std::wstring& profile_name) const { |
223 std::wstring folder_name = GetFolderNameFromProfileName(profile_name); | 223 std::wstring folder_name = GetFolderNameFromProfileName(profile_name); |
224 std::wstring folder_path(user_data_root_); | 224 FilePath folder_path = |
225 file_util::AppendToPath(&folder_path, folder_name); | 225 FilePath::FromWStringHack(user_data_root_) |
226 return folder_path; | 226 .Append(FilePath::FromWStringHack(folder_name)); |
| 227 return folder_path.ToWStringHack(); |
227 } | 228 } |
228 | 229 |
229 void UserDataManager::LaunchChromeForProfile( | 230 void UserDataManager::LaunchChromeForProfile( |
230 const std::wstring& profile_name) const { | 231 const std::wstring& profile_name) const { |
231 std::wstring user_data_dir = GetUserDataFolderForProfile(profile_name); | 232 std::wstring user_data_dir = GetUserDataFolderForProfile(profile_name); |
232 FilePath command; | 233 FilePath command; |
233 PathService::Get(base::FILE_EXE, &command); | 234 PathService::Get(base::FILE_EXE, &command); |
234 CommandLine command_line(command); | 235 CommandLine command_line(command); |
235 command_line.AppendSwitch(switches::kEnableUserDataDirProfiles); | 236 command_line.AppendSwitch(switches::kEnableUserDataDirProfiles); |
236 command_line.AppendSwitchWithValue(switches::kUserDataDir, | 237 command_line.AppendSwitchWithValue(switches::kUserDataDir, |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
282 std::wstring args = CommandLine::PrefixedSwitchStringWithValue( | 283 std::wstring args = CommandLine::PrefixedSwitchStringWithValue( |
283 switches::kUserDataDir, | 284 switches::kUserDataDir, |
284 user_data_dir); | 285 user_data_dir); |
285 args = StringPrintf(L"\"%ls\"", args.c_str()); | 286 args = StringPrintf(L"\"%ls\"", args.c_str()); |
286 | 287 |
287 // Shortcut path. | 288 // Shortcut path. |
288 std::wstring shortcut_name = l10n_util::GetStringF( | 289 std::wstring shortcut_name = l10n_util::GetStringF( |
289 IDS_START_IN_PROFILE_SHORTCUT_NAME, | 290 IDS_START_IN_PROFILE_SHORTCUT_NAME, |
290 profile_name); | 291 profile_name); |
291 shortcut_name.append(L".lnk"); | 292 shortcut_name.append(L".lnk"); |
292 | 293 FilePath shortcut_path = folder.Append(shortcut_name); |
293 std::wstring shortcut_path = folder.Append(shortcut_name).ToWStringHack(); | |
294 | 294 |
295 // Profile path from user_data_dir. | 295 // Profile path from user_data_dir. |
296 FilePath profile_path = FilePath(user_data_dir).Append( | 296 FilePath profile_path = FilePath(user_data_dir).Append( |
297 chrome::kNotSignedInProfile); | 297 chrome::kNotSignedInProfile); |
298 | 298 |
299 return file_util::CreateShortcutLink( | 299 return file_util::CreateShortcutLink( |
300 cmd.c_str(), | 300 cmd.c_str(), |
301 shortcut_path.c_str(), | 301 shortcut_path.value().c_str(), |
302 exe_folder.c_str(), | 302 exe_folder.c_str(), |
303 args.c_str(), | 303 args.c_str(), |
304 NULL, | 304 NULL, |
305 exe_path.c_str(), | 305 exe_path.c_str(), |
306 0, | 306 0, |
307 ShellIntegration::GetChromiumAppId(profile_path).c_str()); | 307 ShellIntegration::GetChromiumAppId(profile_path).c_str()); |
308 #else | 308 #else |
| 309 // TODO(port): should probably use freedesktop.org standard for desktop files. |
| 310 // See shell_integration.h for an implementation; but this code is reportedly |
| 311 // obsolete. |
309 NOTIMPLEMENTED(); | 312 NOTIMPLEMENTED(); |
310 return false; | 313 return false; |
311 #endif | 314 #endif |
312 } | 315 } |
313 | 316 |
314 bool UserDataManager::CreateDesktopShortcutForProfile( | 317 bool UserDataManager::CreateDesktopShortcutForProfile( |
315 const std::wstring& profile_name) const { | 318 const std::wstring& profile_name) const { |
316 #if defined(OS_WIN) | 319 #if defined(OS_WIN) |
317 std::wstring desktop_path; | 320 std::wstring desktop_path; |
318 if (!ShellUtil::GetDesktopPath(false, &desktop_path)) | 321 if (!ShellUtil::GetDesktopPath(false, &desktop_path)) |
319 return false; | 322 return false; |
320 | 323 |
321 return CreateShortcutForProfileInFolder(FilePath(desktop_path), profile_name); | 324 return CreateShortcutForProfileInFolder(FilePath(desktop_path), profile_name); |
322 #else | 325 #else |
323 // TODO(port): should probably use freedesktop.org standard for desktop files. | 326 // TODO(port): should probably use freedesktop.org standard for desktop files. |
| 327 // See shell_integration.h for an implementation; but this code is reportedly |
| 328 // obsolete. |
324 NOTIMPLEMENTED(); | 329 NOTIMPLEMENTED(); |
325 return false; | 330 return false; |
326 #endif | 331 #endif |
327 } | 332 } |
328 | 333 |
329 void UserDataManager::RefreshUserDataDirProfiles() const { | 334 void UserDataManager::RefreshUserDataDirProfiles() const { |
330 // UserDataDirProfilesUpdater will delete itself when done. | 335 // UserDataDirProfilesUpdater will delete itself when done. |
331 UserDataDirProfilesUpdater* updater = new UserDataDirProfilesUpdater(); | 336 UserDataDirProfilesUpdater* updater = new UserDataDirProfilesUpdater(); |
332 updater->Run(); | 337 updater->Run(); |
333 } | 338 } |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
376 &GetProfilesHelper::InvokeDelegate, | 381 &GetProfilesHelper::InvokeDelegate, |
377 profiles.release())); | 382 profiles.release())); |
378 } | 383 } |
379 | 384 |
380 void GetProfilesHelper::InvokeDelegate(std::vector<std::wstring>* profiles) { | 385 void GetProfilesHelper::InvokeDelegate(std::vector<std::wstring>* profiles) { |
381 scoped_ptr< std::vector<std::wstring> > udd_profiles(profiles); | 386 scoped_ptr< std::vector<std::wstring> > udd_profiles(profiles); |
382 // If the delegate is gone by now, no need to do any work. | 387 // If the delegate is gone by now, no need to do any work. |
383 if (delegate_) | 388 if (delegate_) |
384 delegate_->OnGetProfilesDone(*udd_profiles.get()); | 389 delegate_->OnGetProfilesDone(*udd_profiles.get()); |
385 } | 390 } |
OLD | NEW |