OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 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 "chrome/browser/ui/app_list/app_list_service_impl.h" | 5 #include "chrome/browser/ui/app_list/app_list_service_impl.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "apps/pref_names.h" | 9 #include "apps/pref_names.h" |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
277 } | 277 } |
278 | 278 |
279 void AppListServiceImpl::SetProfilePath(const base::FilePath& profile_path) { | 279 void AppListServiceImpl::SetProfilePath(const base::FilePath& profile_path) { |
280 local_state_->SetString( | 280 local_state_->SetString( |
281 prefs::kAppListProfile, | 281 prefs::kAppListProfile, |
282 profile_path.BaseName().MaybeAsASCII()); | 282 profile_path.BaseName().MaybeAsASCII()); |
283 } | 283 } |
284 | 284 |
285 void AppListServiceImpl::CreateShortcut() {} | 285 void AppListServiceImpl::CreateShortcut() {} |
286 | 286 |
287 // We need to watch for profile removal to keep kAppListProfile updated. | |
288 void AppListServiceImpl::OnProfileWillBeRemoved( | 287 void AppListServiceImpl::OnProfileWillBeRemoved( |
289 const base::FilePath& profile_path) { | 288 const base::FilePath& profile_path) { |
290 // If the profile the app list uses just got deleted, reset it to the last | 289 // We need to watch for profile removal to keep kAppListProfile updated, for |
291 // used profile. | 290 // the case that the deleted profile is being used by the app list. |
292 std::string app_list_last_profile = local_state_->GetString( | 291 std::string app_list_last_profile = local_state_->GetString( |
293 prefs::kAppListProfile); | 292 prefs::kAppListProfile); |
294 if (profile_path.BaseName().MaybeAsASCII() == app_list_last_profile) { | 293 if (profile_path.BaseName().MaybeAsASCII() != app_list_last_profile) |
295 local_state_->SetString(prefs::kAppListProfile, | 294 return; |
296 local_state_->GetString(prefs::kProfileLastUsed)); | 295 |
297 } | 296 // Switch the app list over to a valid profile. |
| 297 // Before ProfileInfoCache::DeleteProfileFromCache() calls this function, |
| 298 // ProfileManager::ScheduleProfileForDeletion() will have checked to see if |
| 299 // the deleted profile was also "last used", and updated that setting with |
| 300 // something valid. |
| 301 local_state_->SetString(prefs::kAppListProfile, |
| 302 local_state_->GetString(prefs::kProfileLastUsed)); |
| 303 |
| 304 // The Chrome AppListViewDelegate now needs to be torn down, beacuse: |
| 305 // 1. it has many references to the profile and can't be profile-keyed, and |
| 306 // 2. the last used profile might not be loaded yet. |
| 307 // - this loading is sometimes done by the ProfileManager asynchronously, |
| 308 // so the app list can't just switch to that. |
| 309 // Currently, the AppListViewDelegate is owned by the platform-specific |
| 310 // AppListView, so just force-close the window. |
| 311 DestroyAppList(); |
298 } | 312 } |
299 | 313 |
300 void AppListServiceImpl::Show() { | 314 void AppListServiceImpl::Show() { |
301 profile_loader_->LoadProfileInvalidatingOtherLoads( | 315 profile_loader_->LoadProfileInvalidatingOtherLoads( |
302 GetProfilePath(profile_store_->GetUserDataDir()), | 316 GetProfilePath(profile_store_->GetUserDataDir()), |
303 base::Bind(&AppListServiceImpl::ShowForProfile, | 317 base::Bind(&AppListServiceImpl::ShowForProfile, |
304 weak_factory_.GetWeakPtr())); | 318 weak_factory_.GetWeakPtr())); |
305 } | 319 } |
306 | 320 |
307 void AppListServiceImpl::AutoShowForProfile(Profile* requested_profile) { | 321 void AppListServiceImpl::AutoShowForProfile(Profile* requested_profile) { |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
360 if (!base::MessageLoop::current()) | 374 if (!base::MessageLoop::current()) |
361 return; // In a unit test. | 375 return; // In a unit test. |
362 | 376 |
363 // Send app list usage stats after a delay. | 377 // Send app list usage stats after a delay. |
364 const int kSendUsageStatsDelay = 5; | 378 const int kSendUsageStatsDelay = 5; |
365 base::MessageLoop::current()->PostDelayedTask( | 379 base::MessageLoop::current()->PostDelayedTask( |
366 FROM_HERE, | 380 FROM_HERE, |
367 base::Bind(&AppListServiceImpl::SendAppListStats), | 381 base::Bind(&AppListServiceImpl::SendAppListStats), |
368 base::TimeDelta::FromSeconds(kSendUsageStatsDelay)); | 382 base::TimeDelta::FromSeconds(kSendUsageStatsDelay)); |
369 } | 383 } |
OLD | NEW |