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

Side by Side Diff: chrome/browser/user_data_manager.cc

Issue 660038: Fix issue 32106 (Closed)
Patch Set: Created 10 years, 10 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 | « chrome/browser/user_data_manager.h ('k') | chrome/browser/views/new_profile_dialog.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) 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 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 false, file_util::FileEnumerator::DIRECTORIES); 257 false, file_util::FileEnumerator::DIRECTORIES);
258 std::wstring folder_name; 258 std::wstring folder_name;
259 while (!(folder_name = file_enum.Next().ToWStringHack()).empty()) { 259 while (!(folder_name = file_enum.Next().ToWStringHack()).empty()) {
260 folder_name = file_util::GetFilenameFromPath(folder_name); 260 folder_name = file_util::GetFilenameFromPath(folder_name);
261 std::wstring profile_name; 261 std::wstring profile_name;
262 if (GetProfileNameFromFolderName(folder_name, &profile_name)) 262 if (GetProfileNameFromFolderName(folder_name, &profile_name))
263 profiles->push_back(profile_name); 263 profiles->push_back(profile_name);
264 } 264 }
265 } 265 }
266 266
267 bool UserDataManager::CreateDesktopShortcutForProfile( 267 bool UserDataManager::CreateShortcutForProfileInFolder(
268 const FilePath& folder,
268 const std::wstring& profile_name) const { 269 const std::wstring& profile_name) const {
269 #if defined(OS_WIN) 270 #if defined(OS_WIN)
270 std::wstring exe_path; 271 std::wstring exe_path;
271 std::wstring shortcut_path; 272 if (!PathService::Get(base::FILE_EXE, &exe_path))
272 if (!PathService::Get(base::FILE_EXE, &exe_path) ||
273 !ShellUtil::GetDesktopPath(false, &shortcut_path))
274 return false; 273 return false;
275 274
276 // Working directory. 275 // Working directory.
277 std::wstring exe_folder = file_util::GetDirectoryFromPath(exe_path); 276 std::wstring exe_folder = file_util::GetDirectoryFromPath(exe_path);
278 277
279 // Command and arguments. 278 // Command and arguments.
280 std::wstring cmd; 279 std::wstring cmd;
281 cmd = StringPrintf(L"\"%ls\"", exe_path.c_str()); 280 cmd = StringPrintf(L"\"%ls\"", exe_path.c_str());
282 std::wstring user_data_dir = GetUserDataFolderForProfile(profile_name); 281 std::wstring user_data_dir = GetUserDataFolderForProfile(profile_name);
283 std::wstring args = CommandLine::PrefixedSwitchStringWithValue( 282 std::wstring args = CommandLine::PrefixedSwitchStringWithValue(
284 switches::kUserDataDir, 283 switches::kUserDataDir,
285 user_data_dir); 284 user_data_dir);
286 args = StringPrintf(L"\"%ls\"", args.c_str()); 285 args = StringPrintf(L"\"%ls\"", args.c_str());
287 286
288 // Shortcut path. 287 // Shortcut path.
289 std::wstring shortcut_name = l10n_util::GetStringF( 288 std::wstring shortcut_name = l10n_util::GetStringF(
290 IDS_START_IN_PROFILE_SHORTCUT_NAME, 289 IDS_START_IN_PROFILE_SHORTCUT_NAME,
291 profile_name); 290 profile_name);
292 shortcut_name.append(L".lnk"); 291 shortcut_name.append(L".lnk");
293 file_util::AppendToPath(&shortcut_path, shortcut_name); 292
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.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 NOTIMPLEMENTED();
310 return false;
311 #endif
312 }
313
314 bool UserDataManager::CreateDesktopShortcutForProfile(
315 const std::wstring& profile_name) const {
316 #if defined(OS_WIN)
317 std::wstring desktop_path;
318 if (!ShellUtil::GetDesktopPath(false, &desktop_path))
319 return false;
320
321 return CreateShortcutForProfileInFolder(FilePath(desktop_path), profile_name);
322 #else
309 // TODO(port): should probably use freedesktop.org standard for desktop files. 323 // TODO(port): should probably use freedesktop.org standard for desktop files.
310 NOTIMPLEMENTED(); 324 NOTIMPLEMENTED();
311 return false; 325 return false;
312 #endif 326 #endif
313 } 327 }
314 328
315 void UserDataManager::RefreshUserDataDirProfiles() const { 329 void UserDataManager::RefreshUserDataDirProfiles() const {
316 // UserDataDirProfilesUpdater will delete itself when done. 330 // UserDataDirProfilesUpdater will delete itself when done.
317 UserDataDirProfilesUpdater* updater = new UserDataDirProfilesUpdater(); 331 UserDataDirProfilesUpdater* updater = new UserDataDirProfilesUpdater();
318 updater->Run(); 332 updater->Run();
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 &GetProfilesHelper::InvokeDelegate, 376 &GetProfilesHelper::InvokeDelegate,
363 profiles.release())); 377 profiles.release()));
364 } 378 }
365 379
366 void GetProfilesHelper::InvokeDelegate(std::vector<std::wstring>* profiles) { 380 void GetProfilesHelper::InvokeDelegate(std::vector<std::wstring>* profiles) {
367 scoped_ptr< std::vector<std::wstring> > udd_profiles(profiles); 381 scoped_ptr< std::vector<std::wstring> > udd_profiles(profiles);
368 // If the delegate is gone by now, no need to do any work. 382 // If the delegate is gone by now, no need to do any work.
369 if (delegate_) 383 if (delegate_)
370 delegate_->OnGetProfilesDone(*udd_profiles.get()); 384 delegate_->OnGetProfilesDone(*udd_profiles.get());
371 } 385 }
OLDNEW
« no previous file with comments | « chrome/browser/user_data_manager.h ('k') | chrome/browser/views/new_profile_dialog.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698