| 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 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 203 | 203 |
| 204 void UserDataManager::LaunchChromeForProfile(int index) const { | 204 void UserDataManager::LaunchChromeForProfile(int index) const { |
| 205 // Helper deletes itself when done. | 205 // Helper deletes itself when done. |
| 206 LaunchChromeForProfileIndexHelper* helper = | 206 LaunchChromeForProfileIndexHelper* helper = |
| 207 new LaunchChromeForProfileIndexHelper(this, index); | 207 new LaunchChromeForProfileIndexHelper(this, index); |
| 208 helper->StartLaunch(); | 208 helper->StartLaunch(); |
| 209 } | 209 } |
| 210 | 210 |
| 211 void UserDataManager::GetProfiles(std::vector<std::wstring>* profiles) const { | 211 void UserDataManager::GetProfiles(std::vector<std::wstring>* profiles) const { |
| 212 // This function should be called on the file thread. | 212 // This function should be called on the file thread. |
| 213 DCHECK(MessageLoop::current() == | 213 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE)); |
| 214 ChromeThread::GetMessageLoop(ChromeThread::FILE)); | |
| 215 file_util::FileEnumerator file_enum( | 214 file_util::FileEnumerator file_enum( |
| 216 FilePath::FromWStringHack(user_data_root_), | 215 FilePath::FromWStringHack(user_data_root_), |
| 217 false, file_util::FileEnumerator::DIRECTORIES); | 216 false, file_util::FileEnumerator::DIRECTORIES); |
| 218 std::wstring folder_name; | 217 std::wstring folder_name; |
| 219 while (!(folder_name = file_enum.Next().ToWStringHack()).empty()) { | 218 while (!(folder_name = file_enum.Next().ToWStringHack()).empty()) { |
| 220 folder_name = file_util::GetFilenameFromPath(folder_name); | 219 folder_name = file_util::GetFilenameFromPath(folder_name); |
| 221 std::wstring profile_name; | 220 std::wstring profile_name; |
| 222 if (GetProfileNameFromFolderName(folder_name, &profile_name)) | 221 if (GetProfileNameFromFolderName(folder_name, &profile_name)) |
| 223 profiles->push_back(profile_name); | 222 profiles->push_back(profile_name); |
| 224 } | 223 } |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 274 void GetProfilesHelper::GetProfiles(MessageLoop* target_loop) { | 273 void GetProfilesHelper::GetProfiles(MessageLoop* target_loop) { |
| 275 // If the target loop is not NULL then use the target loop, or if it's NULL | 274 // If the target loop is not NULL then use the target loop, or if it's NULL |
| 276 // then use the current message loop to post a task on it later when we are | 275 // then use the current message loop to post a task on it later when we are |
| 277 // done building a list of profiles. | 276 // done building a list of profiles. |
| 278 if (target_loop) { | 277 if (target_loop) { |
| 279 message_loop_ = target_loop; | 278 message_loop_ = target_loop; |
| 280 } else { | 279 } else { |
| 281 message_loop_ = MessageLoop::current(); | 280 message_loop_ = MessageLoop::current(); |
| 282 } | 281 } |
| 283 DCHECK(message_loop_); | 282 DCHECK(message_loop_); |
| 284 MessageLoop* file_loop = ChromeThread::GetMessageLoop(ChromeThread::FILE); | 283 ChromeThread::PostTask( |
| 285 file_loop->PostTask( | 284 ChromeThread::FILE, FROM_HERE, |
| 286 FROM_HERE, | |
| 287 NewRunnableMethod(this, &GetProfilesHelper::GetProfilesFromManager)); | 285 NewRunnableMethod(this, &GetProfilesHelper::GetProfilesFromManager)); |
| 288 } | 286 } |
| 289 | 287 |
| 290 // Records that the delegate is closed. | 288 // Records that the delegate is closed. |
| 291 void GetProfilesHelper::OnDelegateDeleted() { | 289 void GetProfilesHelper::OnDelegateDeleted() { |
| 292 delegate_ = NULL; | 290 delegate_ = NULL; |
| 293 } | 291 } |
| 294 | 292 |
| 295 void GetProfilesHelper::GetProfilesFromManager() { | 293 void GetProfilesHelper::GetProfilesFromManager() { |
| 296 // This function should be called on the file thread. | 294 // This function should be called on the file thread. |
| 297 DCHECK(MessageLoop::current() == | 295 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE)); |
| 298 ChromeThread::GetMessageLoop(ChromeThread::FILE)); | |
| 299 | 296 |
| 300 // If the delegate is gone by now, no need to do any work. | 297 // If the delegate is gone by now, no need to do any work. |
| 301 if (!delegate_) | 298 if (!delegate_) |
| 302 return; | 299 return; |
| 303 | 300 |
| 304 scoped_ptr< std::vector<std::wstring> > profiles( | 301 scoped_ptr< std::vector<std::wstring> > profiles( |
| 305 new std::vector<std::wstring>); | 302 new std::vector<std::wstring>); |
| 306 UserDataManager::Get()->GetProfiles(profiles.get()); | 303 UserDataManager::Get()->GetProfiles(profiles.get()); |
| 307 | 304 |
| 308 // Post a task on the original thread to call the delegate. | 305 // Post a task on the original thread to call the delegate. |
| 309 message_loop_->PostTask( | 306 message_loop_->PostTask( |
| 310 FROM_HERE, | 307 FROM_HERE, |
| 311 NewRunnableMethod(this, | 308 NewRunnableMethod(this, |
| 312 &GetProfilesHelper::InvokeDelegate, | 309 &GetProfilesHelper::InvokeDelegate, |
| 313 profiles.release())); | 310 profiles.release())); |
| 314 } | 311 } |
| 315 | 312 |
| 316 void GetProfilesHelper::InvokeDelegate(std::vector<std::wstring>* profiles) { | 313 void GetProfilesHelper::InvokeDelegate(std::vector<std::wstring>* profiles) { |
| 317 scoped_ptr< std::vector<std::wstring> > udd_profiles(profiles); | 314 scoped_ptr< std::vector<std::wstring> > udd_profiles(profiles); |
| 318 // If the delegate is gone by now, no need to do any work. | 315 // If the delegate is gone by now, no need to do any work. |
| 319 if (delegate_) | 316 if (delegate_) |
| 320 delegate_->OnGetProfilesDone(*udd_profiles.get()); | 317 delegate_->OnGetProfilesDone(*udd_profiles.get()); |
| 321 } | 318 } |
| OLD | NEW |