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

Side by Side Diff: chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.cc

Issue 1497973002: This CL replaces e-mail with AccountId in wallpaper manager code. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update after review. Created 5 years 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/chromeos/login/users/wallpaper/wallpaper_manager.h" 5 #include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h"
6 6
7 #include <numeric> 7 #include <numeric>
8 #include <vector> 8 #include <vector>
9 9
10 #include "ash/ash_constants.h" 10 #include "ash/ash_constants.h"
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 // Enqueued but not started request might be updated by subsequent load 128 // Enqueued but not started request might be updated by subsequent load
129 // request. Therefore it's created empty, and updated being enqueued. 129 // request. Therefore it's created empty, and updated being enqueued.
130 // 130 //
131 // PendingWallpaper is owned by WallpaperManager, but reference to this object 131 // PendingWallpaper is owned by WallpaperManager, but reference to this object
132 // is passed to other threads by PostTask() calls, therefore it is 132 // is passed to other threads by PostTask() calls, therefore it is
133 // RefCountedThreadSafe. 133 // RefCountedThreadSafe.
134 class WallpaperManager::PendingWallpaper : 134 class WallpaperManager::PendingWallpaper :
135 public base::RefCountedThreadSafe<PendingWallpaper> { 135 public base::RefCountedThreadSafe<PendingWallpaper> {
136 public: 136 public:
137 // Do LoadWallpaper() - image not found in cache. 137 // Do LoadWallpaper() - image not found in cache.
138 PendingWallpaper( 138 PendingWallpaper(const base::TimeDelta delay, const AccountId& account_id)
139 const base::TimeDelta delay, 139 : account_id_(account_id),
140 const std::string& user_id)
141 : user_id_(user_id),
142 default_(false), 140 default_(false),
143 on_finish_(new MovableOnDestroyCallback( 141 on_finish_(new MovableOnDestroyCallback(
144 base::Bind(&WallpaperManager::PendingWallpaper::OnWallpaperSet, 142 base::Bind(&WallpaperManager::PendingWallpaper::OnWallpaperSet,
145 this))) { 143 this))) {
146 timer.Start( 144 timer.Start(
147 FROM_HERE, 145 FROM_HERE,
148 delay, 146 delay,
149 base::Bind(&WallpaperManager::PendingWallpaper::ProcessRequest, this)); 147 base::Bind(&WallpaperManager::PendingWallpaper::ProcessRequest, this));
150 } 148 }
151 149
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 196
199 timer.Stop(); // Erase reference to self. 197 timer.Stop(); // Erase reference to self.
200 198
201 WallpaperManager* manager = WallpaperManager::Get(); 199 WallpaperManager* manager = WallpaperManager::Get();
202 if (manager->pending_inactive_ == this) 200 if (manager->pending_inactive_ == this)
203 manager->pending_inactive_ = NULL; 201 manager->pending_inactive_ = NULL;
204 202
205 started_load_at_ = base::Time::Now(); 203 started_load_at_ = base::Time::Now();
206 204
207 if (default_) { 205 if (default_) {
208 manager->DoSetDefaultWallpaper(user_id_, on_finish_.Pass()); 206 manager->DoSetDefaultWallpaper(account_id_, on_finish_.Pass());
209 } else if (!user_wallpaper_.isNull()) { 207 } else if (!user_wallpaper_.isNull()) {
210 ash::Shell::GetInstance() 208 ash::Shell::GetInstance()
211 ->desktop_background_controller() 209 ->desktop_background_controller()
212 ->SetWallpaperImage(user_wallpaper_, info_.layout); 210 ->SetWallpaperImage(user_wallpaper_, info_.layout);
213 } else if (!wallpaper_path_.empty()) { 211 } else if (!wallpaper_path_.empty()) {
214 manager->task_runner_->PostTask( 212 manager->task_runner_->PostTask(
215 FROM_HERE, 213 FROM_HERE,
216 base::Bind(&WallpaperManager::GetCustomWallpaperInternal, 214 base::Bind(&WallpaperManager::GetCustomWallpaperInternal, account_id_,
217 user_id_, 215 info_, wallpaper_path_, true /* update wallpaper */,
218 info_,
219 wallpaper_path_,
220 true /* update wallpaper */,
221 base::Passed(on_finish_.Pass()), 216 base::Passed(on_finish_.Pass()),
222 manager->weak_factory_.GetWeakPtr())); 217 manager->weak_factory_.GetWeakPtr()));
223 } else if (!info_.location.empty()) { 218 } else if (!info_.location.empty()) {
224 manager->LoadWallpaper(user_id_, info_, true, on_finish_.Pass()); 219 manager->LoadWallpaper(account_id_, info_, true, on_finish_.Pass());
225 } else { 220 } else {
226 // PendingWallpaper was created and never initialized? 221 // PendingWallpaper was created and never initialized?
227 NOTREACHED(); 222 NOTREACHED();
228 // Error. Do not record time. 223 // Error. Do not record time.
229 started_load_at_ = base::Time(); 224 started_load_at_ = base::Time();
230 } 225 }
231 on_finish_.reset(); 226 on_finish_.reset();
232 } 227 }
233 228
234 // This method is called by callback, when load request is finished. 229 // This method is called by callback, when load request is finished.
(...skipping 14 matching lines...) Expand all
249 } 244 }
250 if (manager->pending_inactive_ == this) { 245 if (manager->pending_inactive_ == this) {
251 // ProcessRequest() was never executed. 246 // ProcessRequest() was never executed.
252 manager->pending_inactive_ = NULL; 247 manager->pending_inactive_ = NULL;
253 } 248 }
254 249
255 // Destroy self. 250 // Destroy self.
256 manager->RemovePendingWallpaperFromList(this); 251 manager->RemovePendingWallpaperFromList(this);
257 } 252 }
258 253
259 std::string user_id_; 254 AccountId account_id_;
260 wallpaper::WallpaperInfo info_; 255 wallpaper::WallpaperInfo info_;
261 gfx::ImageSkia user_wallpaper_; 256 gfx::ImageSkia user_wallpaper_;
262 base::FilePath wallpaper_path_; 257 base::FilePath wallpaper_path_;
263 258
264 // Load default wallpaper instead of user image. 259 // Load default wallpaper instead of user image.
265 bool default_; 260 bool default_;
266 261
267 // This is "on destroy" callback that will call OnWallpaperSet() when 262 // This is "on destroy" callback that will call OnWallpaperSet() when
268 // image will be loaded. 263 // image will be loaded.
269 wallpaper::MovableOnDestroyCallbackHolder on_finish_; 264 wallpaper::MovableOnDestroyCallbackHolder on_finish_;
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 return; 324 return;
330 325
331 WallpaperInfo info; 326 WallpaperInfo info;
332 if (GetLoggedInUserWallpaperInfo(&info)) { 327 if (GetLoggedInUserWallpaperInfo(&info)) {
333 UMA_HISTOGRAM_ENUMERATION("Ash.Wallpaper.Type", info.type, 328 UMA_HISTOGRAM_ENUMERATION("Ash.Wallpaper.Type", info.type,
334 user_manager::User::WALLPAPER_TYPE_COUNT); 329 user_manager::User::WALLPAPER_TYPE_COUNT);
335 if (info == current_user_wallpaper_info_) 330 if (info == current_user_wallpaper_info_)
336 return; 331 return;
337 } 332 }
338 SetUserWallpaperNow( 333 SetUserWallpaperNow(
339 user_manager::UserManager::Get()->GetLoggedInUser()->email()); 334 user_manager::UserManager::Get()->GetLoggedInUser()->GetAccountId());
340 } 335 }
341 336
342 void WallpaperManager::InitializeWallpaper() { 337 void WallpaperManager::InitializeWallpaper() {
343 DCHECK_CURRENTLY_ON(BrowserThread::UI); 338 DCHECK_CURRENTLY_ON(BrowserThread::UI);
344 user_manager::UserManager* user_manager = user_manager::UserManager::Get(); 339 user_manager::UserManager* user_manager = user_manager::UserManager::Get();
345 340
346 // Apply device customization. 341 // Apply device customization.
347 if (ShouldUseCustomizedDefaultWallpaper()) { 342 if (ShouldUseCustomizedDefaultWallpaper()) {
348 SetDefaultWallpaperPath(GetCustomizedWallpaperDefaultRescaledFileName( 343 SetDefaultWallpaperPath(GetCustomizedWallpaperDefaultRescaledFileName(
349 wallpaper::kSmallWallpaperSuffix), 344 wallpaper::kSmallWallpaperSuffix),
(...skipping 17 matching lines...) Expand all
367 // Zero delays is also set in autotests. 362 // Zero delays is also set in autotests.
368 if (WizardController::IsZeroDelayEnabled()) { 363 if (WizardController::IsZeroDelayEnabled()) {
369 // Ensure tests have some sort of wallpaper. 364 // Ensure tests have some sort of wallpaper.
370 ash::Shell::GetInstance()->desktop_background_controller()-> 365 ash::Shell::GetInstance()->desktop_background_controller()->
371 CreateEmptyWallpaper(); 366 CreateEmptyWallpaper();
372 return; 367 return;
373 } 368 }
374 369
375 if (!user_manager->IsUserLoggedIn()) { 370 if (!user_manager->IsUserLoggedIn()) {
376 if (!StartupUtils::IsDeviceRegistered()) 371 if (!StartupUtils::IsDeviceRegistered())
377 SetDefaultWallpaperDelayed(login::SignInAccountId().GetUserEmail()); 372 SetDefaultWallpaperDelayed(login::SignInAccountId());
378 else 373 else
379 InitializeRegisteredDeviceWallpaper(); 374 InitializeRegisteredDeviceWallpaper();
380 return; 375 return;
381 } 376 }
382 SetUserWallpaperDelayed(user_manager->GetLoggedInUser()->email()); 377 SetUserWallpaperDelayed(user_manager->GetLoggedInUser()->GetAccountId());
383 } 378 }
384 379
385 void WallpaperManager::Observe(int type, 380 void WallpaperManager::Observe(int type,
386 const content::NotificationSource& source, 381 const content::NotificationSource& source,
387 const content::NotificationDetails& details) { 382 const content::NotificationDetails& details) {
388 DCHECK_CURRENTLY_ON(BrowserThread::UI); 383 DCHECK_CURRENTLY_ON(BrowserThread::UI);
389 switch (type) { 384 switch (type) {
390 case chrome::NOTIFICATION_LOGIN_USER_CHANGED: { 385 case chrome::NOTIFICATION_LOGIN_USER_CHANGED: {
391 ClearDisposableWallpaperCache(); 386 ClearDisposableWallpaperCache();
392 BrowserThread::PostDelayedTask( 387 BrowserThread::PostDelayedTask(
(...skipping 26 matching lines...) Expand all
419 base::TimeDelta::FromMilliseconds(kCacheWallpaperDelayMs)); 414 base::TimeDelta::FromMilliseconds(kCacheWallpaperDelayMs));
420 should_cache_wallpaper_ = false; 415 should_cache_wallpaper_ = false;
421 } 416 }
422 break; 417 break;
423 } 418 }
424 default: 419 default:
425 NOTREACHED() << "Unexpected notification " << type; 420 NOTREACHED() << "Unexpected notification " << type;
426 } 421 }
427 } 422 }
428 423
429 void WallpaperManager::RemoveUserWallpaperInfo(const std::string& user_id) { 424 void WallpaperManager::RemoveUserWallpaperInfo(const AccountId& account_id) {
430 if (wallpaper_cache_.find(user_id) != wallpaper_cache_.end()) 425 if (wallpaper_cache_.find(account_id) != wallpaper_cache_.end())
431 wallpaper_cache_.erase(user_id); 426 wallpaper_cache_.erase(account_id);
432 427
433 PrefService* prefs = g_browser_process->local_state(); 428 PrefService* prefs = g_browser_process->local_state();
434 // PrefService could be NULL in tests. 429 // PrefService could be NULL in tests.
435 if (!prefs) 430 if (!prefs)
436 return; 431 return;
437 WallpaperInfo info; 432 WallpaperInfo info;
438 GetUserWallpaperInfo(user_id, &info); 433 GetUserWallpaperInfo(account_id, &info);
439 DictionaryPrefUpdate prefs_wallpapers_info_update( 434 DictionaryPrefUpdate prefs_wallpapers_info_update(
440 prefs, wallpaper::kUsersWallpaperInfo); 435 prefs, wallpaper::kUsersWallpaperInfo);
441 prefs_wallpapers_info_update->RemoveWithoutPathExpansion(user_id, NULL); 436 prefs_wallpapers_info_update->RemoveWithoutPathExpansion(
442 DeleteUserWallpapers(user_id, info.location); 437 account_id.GetUserEmail(), NULL);
438 DeleteUserWallpapers(account_id, info.location);
443 } 439 }
444 440
445 void WallpaperManager::OnPolicyFetched(const std::string& policy, 441 void WallpaperManager::OnPolicyFetched(const std::string& policy,
446 const std::string& user_id, 442 const AccountId& account_id,
447 scoped_ptr<std::string> data) { 443 scoped_ptr<std::string> data) {
448 if (!data) 444 if (!data)
449 return; 445 return;
450 446
451 wallpaper_loader_->Start( 447 wallpaper_loader_->Start(
452 data.Pass(), 448 data.Pass(),
453 0, // Do not crop. 449 0, // Do not crop.
454 base::Bind(&WallpaperManager::SetPolicyControlledWallpaper, 450 base::Bind(&WallpaperManager::SetPolicyControlledWallpaper,
455 weak_factory_.GetWeakPtr(), 451 weak_factory_.GetWeakPtr(), account_id));
456 user_id));
457 } 452 }
458 453
459 void WallpaperManager::SetCustomWallpaper( 454 void WallpaperManager::SetCustomWallpaper(
460 const std::string& user_id, 455 const AccountId& account_id,
461 const std::string& user_id_hash, 456 const std::string& user_id_hash,
462 const std::string& file, 457 const std::string& file,
463 wallpaper::WallpaperLayout layout, 458 wallpaper::WallpaperLayout layout,
464 user_manager::User::WallpaperType type, 459 user_manager::User::WallpaperType type,
465 const gfx::ImageSkia& image, 460 const gfx::ImageSkia& image,
466 bool update_wallpaper) { 461 bool update_wallpaper) {
467 DCHECK_CURRENTLY_ON(BrowserThread::UI); 462 DCHECK_CURRENTLY_ON(BrowserThread::UI);
468 463
469 // There is no visible background in kiosk mode. 464 // There is no visible background in kiosk mode.
470 if (user_manager::UserManager::Get()->IsLoggedInAsKioskApp()) 465 if (user_manager::UserManager::Get()->IsLoggedInAsKioskApp())
471 return; 466 return;
472 467
473 // Don't allow custom wallpapers while policy is in effect. 468 // Don't allow custom wallpapers while policy is in effect.
474 if (type != user_manager::User::POLICY && IsPolicyControlled(user_id)) 469 if (type != user_manager::User::POLICY && IsPolicyControlled(account_id))
475 return; 470 return;
476 471
477 base::FilePath wallpaper_path = GetCustomWallpaperPath( 472 base::FilePath wallpaper_path = GetCustomWallpaperPath(
478 wallpaper::kOriginalWallpaperSubDir, user_id_hash, file); 473 wallpaper::kOriginalWallpaperSubDir, user_id_hash, file);
479 474
480 // If decoded wallpaper is empty, we have probably failed to decode the file. 475 // If decoded wallpaper is empty, we have probably failed to decode the file.
481 // Use default wallpaper in this case. 476 // Use default wallpaper in this case.
482 if (image.isNull()) { 477 if (image.isNull()) {
483 SetDefaultWallpaperDelayed(user_id); 478 SetDefaultWallpaperDelayed(account_id);
484 return; 479 return;
485 } 480 }
486 481
487 const user_manager::User* user = user_manager::UserManager::Get()->FindUser( 482 const user_manager::User* user =
488 AccountId::FromUserEmail(user_id)); 483 user_manager::UserManager::Get()->FindUser(account_id);
489 CHECK(user); 484 CHECK(user);
490 const bool is_persistent = 485 const bool is_persistent =
491 !user_manager::UserManager::Get()->IsUserNonCryptohomeDataEphemeral( 486 !user_manager::UserManager::Get()->IsUserNonCryptohomeDataEphemeral(
492 AccountId::FromUserEmail(user_id)) || 487 account_id) ||
493 (type == user_manager::User::POLICY && 488 (type == user_manager::User::POLICY &&
494 user->GetType() == user_manager::USER_TYPE_PUBLIC_ACCOUNT); 489 user->GetType() == user_manager::USER_TYPE_PUBLIC_ACCOUNT);
495 490
496 WallpaperInfo wallpaper_info = { 491 WallpaperInfo wallpaper_info = {
497 wallpaper_path.value(), 492 wallpaper_path.value(),
498 layout, 493 layout,
499 type, 494 type,
500 // Date field is not used. 495 // Date field is not used.
501 base::Time::Now().LocalMidnight() 496 base::Time::Now().LocalMidnight()
502 }; 497 };
(...skipping 18 matching lines...) Expand all
521 516
522 std::string relative_path = base::FilePath(user_id_hash).Append(file).value(); 517 std::string relative_path = base::FilePath(user_id_hash).Append(file).value();
523 // User's custom wallpaper path is determined by relative path and the 518 // User's custom wallpaper path is determined by relative path and the
524 // appropriate wallpaper resolution in GetCustomWallpaperInternal. 519 // appropriate wallpaper resolution in GetCustomWallpaperInternal.
525 WallpaperInfo info = { 520 WallpaperInfo info = {
526 relative_path, 521 relative_path,
527 layout, 522 layout,
528 type, 523 type,
529 base::Time::Now().LocalMidnight() 524 base::Time::Now().LocalMidnight()
530 }; 525 };
531 SetUserWallpaperInfo(user_id, info, is_persistent); 526 SetUserWallpaperInfo(account_id, info, is_persistent);
532 if (update_wallpaper) { 527 if (update_wallpaper) {
533 GetPendingWallpaper(user_id, false)->ResetSetWallpaperImage(image, info); 528 GetPendingWallpaper(account_id, false)->ResetSetWallpaperImage(image, info);
534 } 529 }
535 530
536 wallpaper_cache_[user_id] = CustomWallpaperElement(wallpaper_path, image); 531 wallpaper_cache_[account_id] = CustomWallpaperElement(wallpaper_path, image);
537 } 532 }
538 533
539 void WallpaperManager::SetDefaultWallpaperNow(const std::string& user_id) { 534 void WallpaperManager::SetDefaultWallpaperNow(const AccountId& account_id) {
540 GetPendingWallpaper(user_id, false)->ResetSetDefaultWallpaper(); 535 GetPendingWallpaper(account_id, false)->ResetSetDefaultWallpaper();
541 } 536 }
542 537
543 void WallpaperManager::SetDefaultWallpaperDelayed(const std::string& user_id) { 538 void WallpaperManager::SetDefaultWallpaperDelayed(const AccountId& account_id) {
544 GetPendingWallpaper(user_id, true)->ResetSetDefaultWallpaper(); 539 GetPendingWallpaper(account_id, true)->ResetSetDefaultWallpaper();
545 } 540 }
546 541
547 void WallpaperManager::DoSetDefaultWallpaper( 542 void WallpaperManager::DoSetDefaultWallpaper(
548 const std::string& user_id, 543 const AccountId& account_id,
549 MovableOnDestroyCallbackHolder on_finish) { 544 MovableOnDestroyCallbackHolder on_finish) {
550 // There is no visible background in kiosk mode. 545 // There is no visible background in kiosk mode.
551 if (user_manager::UserManager::Get()->IsLoggedInAsKioskApp()) 546 if (user_manager::UserManager::Get()->IsLoggedInAsKioskApp())
552 return; 547 return;
553 wallpaper_cache_.erase(user_id); 548 wallpaper_cache_.erase(account_id);
554 // Some browser tests do not have a shell instance. As no wallpaper is needed 549 // Some browser tests do not have a shell instance. As no wallpaper is needed
555 // in these tests anyway, avoid loading one, preventing crashes and speeding 550 // in these tests anyway, avoid loading one, preventing crashes and speeding
556 // up the tests. 551 // up the tests.
557 if (!ash::Shell::HasInstance()) 552 if (!ash::Shell::HasInstance())
558 return; 553 return;
559 554
560 WallpaperResolution resolution = GetAppropriateResolution(); 555 WallpaperResolution resolution = GetAppropriateResolution();
561 const bool use_small = (resolution == WALLPAPER_RESOLUTION_SMALL); 556 const bool use_small = (resolution == WALLPAPER_RESOLUTION_SMALL);
562 557
563 const base::FilePath* file = NULL; 558 const base::FilePath* file = NULL;
564 559
565 const user_manager::User* user = user_manager::UserManager::Get()->FindUser( 560 const user_manager::User* user =
566 AccountId::FromUserEmail(user_id)); 561 user_manager::UserManager::Get()->FindUser(account_id);
567 562
568 if (user_manager::UserManager::Get()->IsLoggedInAsGuest()) { 563 if (user_manager::UserManager::Get()->IsLoggedInAsGuest()) {
569 file = 564 file =
570 use_small ? &guest_small_wallpaper_file_ : &guest_large_wallpaper_file_; 565 use_small ? &guest_small_wallpaper_file_ : &guest_large_wallpaper_file_;
571 } else if (user && user->GetType() == user_manager::USER_TYPE_CHILD) { 566 } else if (user && user->GetType() == user_manager::USER_TYPE_CHILD) {
572 file = 567 file =
573 use_small ? &child_small_wallpaper_file_ : &child_large_wallpaper_file_; 568 use_small ? &child_small_wallpaper_file_ : &child_large_wallpaper_file_;
574 } else { 569 } else {
575 file = use_small ? &default_small_wallpaper_file_ 570 file = use_small ? &default_small_wallpaper_file_
576 : &default_large_wallpaper_file_; 571 : &default_large_wallpaper_file_;
(...skipping 16 matching lines...) Expand all
593 } 588 }
594 // 1x1 wallpaper is actually solid color, so it should be stretched. 589 // 1x1 wallpaper is actually solid color, so it should be stretched.
595 if (default_wallpaper_image_->image().width() == 1 && 590 if (default_wallpaper_image_->image().width() == 1 &&
596 default_wallpaper_image_->image().height() == 1) 591 default_wallpaper_image_->image().height() == 1)
597 layout = wallpaper::WALLPAPER_LAYOUT_STRETCH; 592 layout = wallpaper::WALLPAPER_LAYOUT_STRETCH;
598 593
599 ash::Shell::GetInstance()->desktop_background_controller()->SetWallpaperImage( 594 ash::Shell::GetInstance()->desktop_background_controller()->SetWallpaperImage(
600 default_wallpaper_image_->image(), layout); 595 default_wallpaper_image_->image(), layout);
601 } 596 }
602 597
603 void WallpaperManager::SetUserWallpaperInfo(const std::string& user_id, 598 void WallpaperManager::SetUserWallpaperInfo(const AccountId& account_id,
604 const WallpaperInfo& info, 599 const WallpaperInfo& info,
605 bool is_persistent) { 600 bool is_persistent) {
606 DCHECK_CURRENTLY_ON(BrowserThread::UI); 601 DCHECK_CURRENTLY_ON(BrowserThread::UI);
607 current_user_wallpaper_info_ = info; 602 current_user_wallpaper_info_ = info;
608 if (!is_persistent) 603 if (!is_persistent)
609 return; 604 return;
610 605
611 PrefService* local_state = g_browser_process->local_state(); 606 PrefService* local_state = g_browser_process->local_state();
612 DictionaryPrefUpdate wallpaper_update(local_state, 607 DictionaryPrefUpdate wallpaper_update(local_state,
613 wallpaper::kUsersWallpaperInfo); 608 wallpaper::kUsersWallpaperInfo);
614 609
615 base::DictionaryValue* wallpaper_info_dict = new base::DictionaryValue(); 610 base::DictionaryValue* wallpaper_info_dict = new base::DictionaryValue();
616 wallpaper_info_dict->SetString(kNewWallpaperDateNodeName, 611 wallpaper_info_dict->SetString(kNewWallpaperDateNodeName,
617 base::Int64ToString(info.date.ToInternalValue())); 612 base::Int64ToString(info.date.ToInternalValue()));
618 wallpaper_info_dict->SetString(kNewWallpaperLocationNodeName, info.location); 613 wallpaper_info_dict->SetString(kNewWallpaperLocationNodeName, info.location);
619 wallpaper_info_dict->SetInteger(kNewWallpaperLayoutNodeName, info.layout); 614 wallpaper_info_dict->SetInteger(kNewWallpaperLayoutNodeName, info.layout);
620 wallpaper_info_dict->SetInteger(kNewWallpaperTypeNodeName, info.type); 615 wallpaper_info_dict->SetInteger(kNewWallpaperTypeNodeName, info.type);
621 wallpaper_update->SetWithoutPathExpansion(user_id, wallpaper_info_dict); 616 wallpaper_update->SetWithoutPathExpansion(account_id.GetUserEmail(),
617 wallpaper_info_dict);
622 } 618 }
623 619
624 void WallpaperManager::ScheduleSetUserWallpaper(const std::string& user_id, 620 void WallpaperManager::ScheduleSetUserWallpaper(const AccountId& account_id,
625 bool delayed) { 621 bool delayed) {
626 DCHECK_CURRENTLY_ON(BrowserThread::UI); 622 DCHECK_CURRENTLY_ON(BrowserThread::UI);
627 // Some unit tests come here without a UserManager or without a pref system. 623 // Some unit tests come here without a UserManager or without a pref system.
628 if (!user_manager::UserManager::IsInitialized() || 624 if (!user_manager::UserManager::IsInitialized() ||
629 !g_browser_process->local_state()) { 625 !g_browser_process->local_state()) {
630 return; 626 return;
631 } 627 }
632 628
633 const AccountId account_id = AccountId::FromUserEmail(user_id);
634 const user_manager::User* user = 629 const user_manager::User* user =
635 user_manager::UserManager::Get()->FindUser(account_id); 630 user_manager::UserManager::Get()->FindUser(account_id);
636 631
637 // User is unknown or there is no visible background in kiosk mode. 632 // User is unknown or there is no visible background in kiosk mode.
638 if (!user || user->GetType() == user_manager::USER_TYPE_KIOSK_APP) 633 if (!user || user->GetType() == user_manager::USER_TYPE_KIOSK_APP)
639 return; 634 return;
640 635
641 // Guest user or regular user in ephemeral mode. 636 // Guest user or regular user in ephemeral mode.
642 if ((user_manager::UserManager::Get()->IsUserNonCryptohomeDataEphemeral( 637 if ((user_manager::UserManager::Get()->IsUserNonCryptohomeDataEphemeral(
643 account_id) && 638 account_id) &&
644 user->HasGaiaAccount()) || 639 user->HasGaiaAccount()) ||
645 user->GetType() == user_manager::USER_TYPE_GUEST) { 640 user->GetType() == user_manager::USER_TYPE_GUEST) {
646 LOG(ERROR) << "User is ephemeral or guest! Fallback to default wallpaper."; 641 LOG(ERROR) << "User is ephemeral or guest! Fallback to default wallpaper.";
647 InitInitialUserWallpaper(user_id, false); 642 InitInitialUserWallpaper(account_id, false);
648 GetPendingWallpaper(user_id, delayed)->ResetSetDefaultWallpaper(); 643 GetPendingWallpaper(account_id, delayed)->ResetSetDefaultWallpaper();
649 return; 644 return;
650 } 645 }
651 646
652 last_selected_user_ = user_id; 647 last_selected_user_ = account_id;
653 648
654 WallpaperInfo info; 649 WallpaperInfo info;
655 650
656 if (!GetUserWallpaperInfo(user_id, &info)) { 651 if (!GetUserWallpaperInfo(account_id, &info)) {
657 InitInitialUserWallpaper(user_id, true); 652 InitInitialUserWallpaper(account_id, true);
658 GetUserWallpaperInfo(user_id, &info); 653 GetUserWallpaperInfo(account_id, &info);
659 } 654 }
660 655
661 gfx::ImageSkia user_wallpaper; 656 gfx::ImageSkia user_wallpaper;
662 current_user_wallpaper_info_ = info; 657 current_user_wallpaper_info_ = info;
663 if (GetWallpaperFromCache(user_id, &user_wallpaper)) { 658 if (GetWallpaperFromCache(account_id, &user_wallpaper)) {
664 GetPendingWallpaper(user_id, delayed) 659 GetPendingWallpaper(account_id, delayed)
665 ->ResetSetWallpaperImage(user_wallpaper, info); 660 ->ResetSetWallpaperImage(user_wallpaper, info);
666 } else { 661 } else {
667 if (info.location.empty()) { 662 if (info.location.empty()) {
668 // Uses default built-in wallpaper when file is empty. Eventually, we 663 // Uses default built-in wallpaper when file is empty. Eventually, we
669 // will only ship one built-in wallpaper in ChromeOS image. 664 // will only ship one built-in wallpaper in ChromeOS image.
670 GetPendingWallpaper(user_id, delayed)->ResetSetDefaultWallpaper(); 665 GetPendingWallpaper(account_id, delayed)->ResetSetDefaultWallpaper();
671 return; 666 return;
672 } 667 }
673 668
674 if (info.type == user_manager::User::CUSTOMIZED || 669 if (info.type == user_manager::User::CUSTOMIZED ||
675 info.type == user_manager::User::POLICY) { 670 info.type == user_manager::User::POLICY) {
676 const char* sub_dir = GetCustomWallpaperSubdirForCurrentResolution(); 671 const char* sub_dir = GetCustomWallpaperSubdirForCurrentResolution();
677 // Wallpaper is not resized when layout is 672 // Wallpaper is not resized when layout is
678 // wallpaper::WALLPAPER_LAYOUT_CENTER. 673 // wallpaper::WALLPAPER_LAYOUT_CENTER.
679 // Original wallpaper should be used in this case. 674 // Original wallpaper should be used in this case.
680 // TODO(bshe): Generates cropped custom wallpaper for CENTER layout. 675 // TODO(bshe): Generates cropped custom wallpaper for CENTER layout.
681 if (info.layout == wallpaper::WALLPAPER_LAYOUT_CENTER) 676 if (info.layout == wallpaper::WALLPAPER_LAYOUT_CENTER)
682 sub_dir = wallpaper::kOriginalWallpaperSubDir; 677 sub_dir = wallpaper::kOriginalWallpaperSubDir;
683 base::FilePath wallpaper_path = GetCustomWallpaperDir(sub_dir); 678 base::FilePath wallpaper_path = GetCustomWallpaperDir(sub_dir);
684 wallpaper_path = wallpaper_path.Append(info.location); 679 wallpaper_path = wallpaper_path.Append(info.location);
685 CustomWallpaperMap::iterator it = wallpaper_cache_.find(user_id); 680 CustomWallpaperMap::iterator it = wallpaper_cache_.find(account_id);
686 // Do not try to load the wallpaper if the path is the same. Since loading 681 // Do not try to load the wallpaper if the path is the same. Since loading
687 // could still be in progress, we ignore the existence of the image. 682 // could still be in progress, we ignore the existence of the image.
688 if (it != wallpaper_cache_.end() && it->second.first == wallpaper_path) 683 if (it != wallpaper_cache_.end() && it->second.first == wallpaper_path)
689 return; 684 return;
690 685
691 // Set the new path and reset the existing image - the image will be 686 // Set the new path and reset the existing image - the image will be
692 // added once it becomes available. 687 // added once it becomes available.
693 wallpaper_cache_[user_id] = 688 wallpaper_cache_[account_id] =
694 CustomWallpaperElement(wallpaper_path, gfx::ImageSkia()); 689 CustomWallpaperElement(wallpaper_path, gfx::ImageSkia());
695 loaded_wallpapers_for_test_++; 690 loaded_wallpapers_for_test_++;
696 691
697 GetPendingWallpaper(user_id, delayed) 692 GetPendingWallpaper(account_id, delayed)
698 ->ResetSetCustomWallpaper(info, wallpaper_path); 693 ->ResetSetCustomWallpaper(info, wallpaper_path);
699 return; 694 return;
700 } 695 }
701 696
702 // Load downloaded ONLINE or converted DEFAULT wallpapers. 697 // Load downloaded ONLINE or converted DEFAULT wallpapers.
703 GetPendingWallpaper(user_id, delayed)->ResetLoadWallpaper(info); 698 GetPendingWallpaper(account_id, delayed)->ResetLoadWallpaper(info);
704 } 699 }
705 } 700 }
706 701
707 void WallpaperManager::SetWallpaperFromImageSkia( 702 void WallpaperManager::SetWallpaperFromImageSkia(
708 const std::string& user_id, 703 const AccountId& account_id,
709 const gfx::ImageSkia& image, 704 const gfx::ImageSkia& image,
710 wallpaper::WallpaperLayout layout, 705 wallpaper::WallpaperLayout layout,
711 bool update_wallpaper) { 706 bool update_wallpaper) {
712 DCHECK(user_manager::UserManager::Get()->IsUserLoggedIn()); 707 DCHECK(user_manager::UserManager::Get()->IsUserLoggedIn());
713 708
714 // There is no visible background in kiosk mode. 709 // There is no visible background in kiosk mode.
715 if (user_manager::UserManager::Get()->IsLoggedInAsKioskApp()) 710 if (user_manager::UserManager::Get()->IsLoggedInAsKioskApp())
716 return; 711 return;
717 WallpaperInfo info; 712 WallpaperInfo info;
718 info.layout = layout; 713 info.layout = layout;
719 714
720 // This is an API call and we do not know the path. So we set the image, but 715 // This is an API call and we do not know the path. So we set the image, but
721 // no path. 716 // no path.
722 wallpaper_cache_[user_id] = CustomWallpaperElement(base::FilePath(), image); 717 wallpaper_cache_[account_id] =
718 CustomWallpaperElement(base::FilePath(), image);
723 719
724 if (update_wallpaper) { 720 if (update_wallpaper) {
725 GetPendingWallpaper(last_selected_user_, false /* Not delayed */) 721 GetPendingWallpaper(last_selected_user_, false /* Not delayed */)
726 ->ResetSetWallpaperImage(image, info); 722 ->ResetSetWallpaperImage(image, info);
727 } 723 }
728 } 724 }
729 725
730 726
731 // WallpaperManager, private: -------------------------------------------------- 727 // WallpaperManager, private: --------------------------------------------------
732 728
(...skipping 16 matching lines...) Expand all
749 BrowserThread::GetBlockingPool() 745 BrowserThread::GetBlockingPool()
750 ->GetSequencedTaskRunnerWithShutdownBehavior( 746 ->GetSequencedTaskRunnerWithShutdownBehavior(
751 sequence_token_, base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); 747 sequence_token_, base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN);
752 wallpaper_loader_ = 748 wallpaper_loader_ =
753 new UserImageLoader(ImageDecoder::ROBUST_JPEG_CODEC, task_runner_); 749 new UserImageLoader(ImageDecoder::ROBUST_JPEG_CODEC, task_runner_);
754 750
755 user_manager::UserManager::Get()->AddSessionStateObserver(this); 751 user_manager::UserManager::Get()->AddSessionStateObserver(this);
756 } 752 }
757 753
758 WallpaperManager::PendingWallpaper* WallpaperManager::GetPendingWallpaper( 754 WallpaperManager::PendingWallpaper* WallpaperManager::GetPendingWallpaper(
759 const std::string& user_id, 755 const AccountId& account_id,
760 bool delayed) { 756 bool delayed) {
761 if (!pending_inactive_) { 757 if (!pending_inactive_) {
762 loading_.push_back(new WallpaperManager::PendingWallpaper( 758 loading_.push_back(new WallpaperManager::PendingWallpaper(
763 (delayed ? GetWallpaperLoadDelay() 759 (delayed ? GetWallpaperLoadDelay()
764 : base::TimeDelta::FromMilliseconds(0)), 760 : base::TimeDelta::FromMilliseconds(0)),
765 user_id)); 761 account_id));
766 pending_inactive_ = loading_.back().get(); 762 pending_inactive_ = loading_.back().get();
767 } 763 }
768 return pending_inactive_; 764 return pending_inactive_;
769 } 765 }
770 766
771 void WallpaperManager::RemovePendingWallpaperFromList( 767 void WallpaperManager::RemovePendingWallpaperFromList(
772 PendingWallpaper* pending) { 768 PendingWallpaper* pending) {
773 DCHECK(loading_.size() > 0); 769 DCHECK(loading_.size() > 0);
774 for (WallpaperManager::PendingList::iterator i = loading_.begin(); 770 for (WallpaperManager::PendingList::iterator i = loading_.begin();
775 i != loading_.end(); 771 i != loading_.end();
(...skipping 17 matching lines...) Expand all
793 bool show_users = true; 789 bool show_users = true;
794 bool result = CrosSettings::Get()->GetBoolean( 790 bool result = CrosSettings::Get()->GetBoolean(
795 kAccountsPrefShowUserNamesOnSignIn, &show_users); 791 kAccountsPrefShowUserNamesOnSignIn, &show_users);
796 DCHECK(result) << "Unable to fetch setting " 792 DCHECK(result) << "Unable to fetch setting "
797 << kAccountsPrefShowUserNamesOnSignIn; 793 << kAccountsPrefShowUserNamesOnSignIn;
798 const user_manager::UserList& users = 794 const user_manager::UserList& users =
799 user_manager::UserManager::Get()->GetUsers(); 795 user_manager::UserManager::Get()->GetUsers();
800 int public_session_user_index = FindPublicSession(users); 796 int public_session_user_index = FindPublicSession(users);
801 if ((!show_users && public_session_user_index == -1) || users.empty()) { 797 if ((!show_users && public_session_user_index == -1) || users.empty()) {
802 // Boot into sign in form, preload default wallpaper. 798 // Boot into sign in form, preload default wallpaper.
803 SetDefaultWallpaperDelayed(login::SignInAccountId().GetUserEmail()); 799 SetDefaultWallpaperDelayed(login::SignInAccountId());
804 return; 800 return;
805 } 801 }
806 802
807 if (!disable_boot_animation) { 803 if (!disable_boot_animation) {
808 int index = public_session_user_index != -1 ? public_session_user_index : 0; 804 int index = public_session_user_index != -1 ? public_session_user_index : 0;
809 // Normal boot, load user wallpaper. 805 // Normal boot, load user wallpaper.
810 // If normal boot animation is disabled wallpaper would be set 806 // If normal boot animation is disabled wallpaper would be set
811 // asynchronously once user pods are loaded. 807 // asynchronously once user pods are loaded.
812 SetUserWallpaperDelayed(users[index]->email()); 808 SetUserWallpaperDelayed(users[index]->GetAccountId());
813 } 809 }
814 } 810 }
815 811
816 bool WallpaperManager::GetUserWallpaperInfo(const std::string& user_id, 812 bool WallpaperManager::GetUserWallpaperInfo(const AccountId& account_id,
817 WallpaperInfo* info) const { 813 WallpaperInfo* info) const {
818 DCHECK_CURRENTLY_ON(BrowserThread::UI); 814 DCHECK_CURRENTLY_ON(BrowserThread::UI);
819 815
820 if (user_manager::UserManager::Get()->IsUserNonCryptohomeDataEphemeral( 816 if (user_manager::UserManager::Get()->IsUserNonCryptohomeDataEphemeral(
821 AccountId::FromUserEmail(user_id))) { 817 account_id)) {
822 // Default to the values cached in memory. 818 // Default to the values cached in memory.
823 *info = current_user_wallpaper_info_; 819 *info = current_user_wallpaper_info_;
824 820
825 // Ephemeral users do not save anything to local state. But we have got 821 // Ephemeral users do not save anything to local state. But we have got
826 // wallpaper info from memory. Returns true. 822 // wallpaper info from memory. Returns true.
827 return true; 823 return true;
828 } 824 }
829 825
830 const base::DictionaryValue* info_dict; 826 const base::DictionaryValue* info_dict;
831 if (!g_browser_process->local_state() 827 if (!g_browser_process->local_state()
832 ->GetDictionary(wallpaper::kUsersWallpaperInfo) 828 ->GetDictionary(wallpaper::kUsersWallpaperInfo)
833 ->GetDictionaryWithoutPathExpansion(user_id, &info_dict)) { 829 ->GetDictionaryWithoutPathExpansion(account_id.GetUserEmail(),
830 &info_dict)) {
834 return false; 831 return false;
835 } 832 }
836 833
837 // Use temporary variables to keep |info| untouched in the error case. 834 // Use temporary variables to keep |info| untouched in the error case.
838 std::string location; 835 std::string location;
839 if (!info_dict->GetString(kNewWallpaperLocationNodeName, &location)) 836 if (!info_dict->GetString(kNewWallpaperLocationNodeName, &location))
840 return false; 837 return false;
841 int layout; 838 int layout;
842 if (!info_dict->GetInteger(kNewWallpaperLayoutNodeName, &layout)) 839 if (!info_dict->GetInteger(kNewWallpaperLayoutNodeName, &layout))
843 return false; 840 return false;
844 int type; 841 int type;
845 if (!info_dict->GetInteger(kNewWallpaperTypeNodeName, &type)) 842 if (!info_dict->GetInteger(kNewWallpaperTypeNodeName, &type))
846 return false; 843 return false;
847 std::string date_string; 844 std::string date_string;
848 if (!info_dict->GetString(kNewWallpaperDateNodeName, &date_string)) 845 if (!info_dict->GetString(kNewWallpaperDateNodeName, &date_string))
849 return false; 846 return false;
850 int64 date_val; 847 int64 date_val;
851 if (!base::StringToInt64(date_string, &date_val)) 848 if (!base::StringToInt64(date_string, &date_val))
852 return false; 849 return false;
853 850
854 info->location = location; 851 info->location = location;
855 info->layout = static_cast<wallpaper::WallpaperLayout>(layout); 852 info->layout = static_cast<wallpaper::WallpaperLayout>(layout);
856 info->type = static_cast<user_manager::User::WallpaperType>(type); 853 info->type = static_cast<user_manager::User::WallpaperType>(type);
857 info->date = base::Time::FromInternalValue(date_val); 854 info->date = base::Time::FromInternalValue(date_val);
858 return true; 855 return true;
859 } 856 }
860 857
861 void WallpaperManager::OnWallpaperDecoded( 858 void WallpaperManager::OnWallpaperDecoded(
862 const std::string& user_id, 859 const AccountId& account_id,
863 wallpaper::WallpaperLayout layout, 860 wallpaper::WallpaperLayout layout,
864 bool update_wallpaper, 861 bool update_wallpaper,
865 MovableOnDestroyCallbackHolder on_finish, 862 MovableOnDestroyCallbackHolder on_finish,
866 const user_manager::UserImage& user_image) { 863 const user_manager::UserImage& user_image) {
867 DCHECK_CURRENTLY_ON(BrowserThread::UI); 864 DCHECK_CURRENTLY_ON(BrowserThread::UI);
868 TRACE_EVENT_ASYNC_END0("ui", "LoadAndDecodeWallpaper", this); 865 TRACE_EVENT_ASYNC_END0("ui", "LoadAndDecodeWallpaper", this);
869 866
870 // If decoded wallpaper is empty, we have probably failed to decode the file. 867 // If decoded wallpaper is empty, we have probably failed to decode the file.
871 // Use default wallpaper in this case. 868 // Use default wallpaper in this case.
872 if (user_image.image().isNull()) { 869 if (user_image.image().isNull()) {
873 // Updates user pref to default wallpaper. 870 // Updates user pref to default wallpaper.
874 WallpaperInfo info = {"", 871 WallpaperInfo info = {"",
875 wallpaper::WALLPAPER_LAYOUT_CENTER_CROPPED, 872 wallpaper::WALLPAPER_LAYOUT_CENTER_CROPPED,
876 user_manager::User::DEFAULT, 873 user_manager::User::DEFAULT,
877 base::Time::Now().LocalMidnight()}; 874 base::Time::Now().LocalMidnight()};
878 SetUserWallpaperInfo(user_id, info, true); 875 SetUserWallpaperInfo(account_id, info, true);
879 876
880 if (update_wallpaper) 877 if (update_wallpaper)
881 DoSetDefaultWallpaper(user_id, on_finish.Pass()); 878 DoSetDefaultWallpaper(account_id, on_finish.Pass());
882 return; 879 return;
883 } 880 }
884 881
885 // Update the image, but keep the path which was set earlier. 882 // Update the image, but keep the path which was set earlier.
886 wallpaper_cache_[user_id].second = user_image.image(); 883 wallpaper_cache_[account_id].second = user_image.image();
887 884
888 if (update_wallpaper) { 885 if (update_wallpaper) {
889 ash::Shell::GetInstance() 886 ash::Shell::GetInstance()
890 ->desktop_background_controller() 887 ->desktop_background_controller()
891 ->SetWallpaperImage(user_image.image(), layout); 888 ->SetWallpaperImage(user_image.image(), layout);
892 } 889 }
893 } 890 }
894 891
895 void WallpaperManager::StartLoad(const std::string& user_id, 892 void WallpaperManager::StartLoad(const AccountId& account_id,
896 const WallpaperInfo& info, 893 const WallpaperInfo& info,
897 bool update_wallpaper, 894 bool update_wallpaper,
898 const base::FilePath& wallpaper_path, 895 const base::FilePath& wallpaper_path,
899 MovableOnDestroyCallbackHolder on_finish) { 896 MovableOnDestroyCallbackHolder on_finish) {
900 DCHECK_CURRENTLY_ON(BrowserThread::UI); 897 DCHECK_CURRENTLY_ON(BrowserThread::UI);
901 TRACE_EVENT_ASYNC_BEGIN0("ui", "LoadAndDecodeWallpaper", this); 898 TRACE_EVENT_ASYNC_BEGIN0("ui", "LoadAndDecodeWallpaper", this);
902 if (update_wallpaper) { 899 if (update_wallpaper) {
903 // We are now about to change the wallpaper, so update the path and remove 900 // We are now about to change the wallpaper, so update the path and remove
904 // the existing image. 901 // the existing image.
905 wallpaper_cache_[user_id] = CustomWallpaperElement(wallpaper_path, 902 wallpaper_cache_[account_id] =
906 gfx::ImageSkia()); 903 CustomWallpaperElement(wallpaper_path, gfx::ImageSkia());
907 } 904 }
908 wallpaper_loader_->Start(wallpaper_path.value(), 905 wallpaper_loader_->Start(
909 0, // Do not crop. 906 wallpaper_path.value(),
910 base::Bind(&WallpaperManager::OnWallpaperDecoded, 907 0, // Do not crop.
911 weak_factory_.GetWeakPtr(), 908 base::Bind(&WallpaperManager::OnWallpaperDecoded,
912 user_id, 909 weak_factory_.GetWeakPtr(), account_id, info.layout,
913 info.layout, 910 update_wallpaper, base::Passed(on_finish.Pass())));
914 update_wallpaper,
915 base::Passed(on_finish.Pass())));
916 } 911 }
917 912
918 void WallpaperManager::SetCustomizedDefaultWallpaperAfterCheck( 913 void WallpaperManager::SetCustomizedDefaultWallpaperAfterCheck(
919 const GURL& wallpaper_url, 914 const GURL& wallpaper_url,
920 const base::FilePath& downloaded_file, 915 const base::FilePath& downloaded_file,
921 scoped_ptr<CustomizedWallpaperRescaledFiles> rescaled_files) { 916 scoped_ptr<CustomizedWallpaperRescaledFiles> rescaled_files) {
922 PrefService* pref_service = g_browser_process->local_state(); 917 PrefService* pref_service = g_browser_process->local_state();
923 918
924 std::string current_url = 919 std::string current_url =
925 pref_service->GetString(prefs::kCustomizationDefaultWallpaperURL); 920 pref_service->GetString(prefs::kCustomizationDefaultWallpaperURL);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
964 rescaled_files->path_rescaled_large(), 959 rescaled_files->path_rescaled_large(),
965 large_wallpaper_image.Pass()); 960 large_wallpaper_image.Pass());
966 VLOG(1) << "Customized default wallpaper applied."; 961 VLOG(1) << "Customized default wallpaper applied.";
967 } 962 }
968 963
969 size_t WallpaperManager::GetPendingListSizeForTesting() const { 964 size_t WallpaperManager::GetPendingListSizeForTesting() const {
970 return loading_.size(); 965 return loading_.size();
971 } 966 }
972 967
973 void WallpaperManager::UserChangedChildStatus(user_manager::User* user) { 968 void WallpaperManager::UserChangedChildStatus(user_manager::User* user) {
974 SetUserWallpaperNow(user->email()); 969 SetUserWallpaperNow(user->GetAccountId());
975 } 970 }
976 971
977 void WallpaperManager::OnDefaultWallpaperDecoded( 972 void WallpaperManager::OnDefaultWallpaperDecoded(
978 const base::FilePath& path, 973 const base::FilePath& path,
979 const wallpaper::WallpaperLayout layout, 974 const wallpaper::WallpaperLayout layout,
980 scoped_ptr<user_manager::UserImage>* result_out, 975 scoped_ptr<user_manager::UserImage>* result_out,
981 MovableOnDestroyCallbackHolder on_finish, 976 MovableOnDestroyCallbackHolder on_finish,
982 const user_manager::UserImage& user_image) { 977 const user_manager::UserImage& user_image) {
983 result_out->reset(new user_manager::UserImage(user_image)); 978 result_out->reset(new user_manager::UserImage(user_image));
984 ash::Shell::GetInstance()->desktop_background_controller()->SetWallpaperImage( 979 ash::Shell::GetInstance()->desktop_background_controller()->SetWallpaperImage(
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
1034 } else { 1029 } else {
1035 if (large_wallpaper_image) { 1030 if (large_wallpaper_image) {
1036 default_wallpaper_image_.reset( 1031 default_wallpaper_image_.reset(
1037 new user_manager::UserImage(*large_wallpaper_image)); 1032 new user_manager::UserImage(*large_wallpaper_image));
1038 default_wallpaper_image_->set_file_path( 1033 default_wallpaper_image_->set_file_path(
1039 default_large_wallpaper_file.value()); 1034 default_large_wallpaper_file.value());
1040 } 1035 }
1041 } 1036 }
1042 1037
1043 if (need_update_screen) { 1038 if (need_update_screen) {
1044 DoSetDefaultWallpaper(std::string(), 1039 DoSetDefaultWallpaper(EmptyAccountId(),
1045 MovableOnDestroyCallbackHolder().Pass()); 1040 MovableOnDestroyCallbackHolder().Pass());
1046 } 1041 }
1047 } 1042 }
1048 1043
1049 } // namespace chromeos 1044 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698