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

Side by Side Diff: components/wallpaper/wallpaper_manager_base.cc

Issue 2572793003: [Chrome OS] Implement the device wallpaper policy. (Closed)
Patch Set: Rebase. Created 4 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
« no previous file with comments | « components/wallpaper/wallpaper_manager_base.h ('k') | tools/metrics/histograms/histograms.xml » ('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 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 "components/wallpaper/wallpaper_manager_base.h" 5 #include "components/wallpaper/wallpaper_manager_base.h"
6 6
7 #include <numeric> 7 #include <numeric>
8 #include <vector> 8 #include <vector>
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 455 matching lines...) Expand 10 before | Expand all | Expand 10 after
466 info.type = user_manager::User::POLICY; 466 info.type = user_manager::User::POLICY;
467 SetUserWallpaperInfo(account_id, info, true /* is_persistent */); 467 SetUserWallpaperInfo(account_id, info, true /* is_persistent */);
468 } 468 }
469 469
470 void WallpaperManagerBase::OnPolicyCleared(const std::string& policy, 470 void WallpaperManagerBase::OnPolicyCleared(const std::string& policy,
471 const AccountId& account_id) { 471 const AccountId& account_id) {
472 WallpaperInfo info; 472 WallpaperInfo info;
473 GetUserWallpaperInfo(account_id, &info); 473 GetUserWallpaperInfo(account_id, &info);
474 info.type = user_manager::User::DEFAULT; 474 info.type = user_manager::User::DEFAULT;
475 SetUserWallpaperInfo(account_id, info, true /* is_persistent */); 475 SetUserWallpaperInfo(account_id, info, true /* is_persistent */);
476 SetDefaultWallpaperNow(account_id); 476 // If the user's policy is cleared, try to set the device wallpaper first.
477 // Note We have to modify the user wallpaper info first. Otherwise, we won't
478 // be able to override the current user policy wallpaper. The wallpaper info
479 // will be set correctly if the device wallpaper is set successfully.
480 if (!SetDeviceWallpaperIfApplicable(account_id)) {
481 SetDefaultWallpaperNow(account_id);
482 }
477 } 483 }
478 484
479 // static 485 // static
480 base::FilePath WallpaperManagerBase::GetCustomWallpaperPath( 486 base::FilePath WallpaperManagerBase::GetCustomWallpaperPath(
481 const char* sub_dir, 487 const char* sub_dir,
482 const wallpaper::WallpaperFilesId& wallpaper_files_id, 488 const wallpaper::WallpaperFilesId& wallpaper_files_id,
483 const std::string& file) { 489 const std::string& file) {
484 base::FilePath custom_wallpaper_path = GetCustomWallpaperDir(sub_dir); 490 base::FilePath custom_wallpaper_path = GetCustomWallpaperDir(sub_dir);
485 return custom_wallpaper_path.Append(wallpaper_files_id.id()).Append(file); 491 return custom_wallpaper_path.Append(wallpaper_files_id.id()).Append(file);
486 } 492 }
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
608 } 614 }
609 } 615 }
610 616
611 void WallpaperManagerBase::InitInitialUserWallpaper(const AccountId& account_id, 617 void WallpaperManagerBase::InitInitialUserWallpaper(const AccountId& account_id,
612 bool is_persistent) { 618 bool is_persistent) {
613 current_user_wallpaper_info_.location = ""; 619 current_user_wallpaper_info_.location = "";
614 current_user_wallpaper_info_.layout = WALLPAPER_LAYOUT_CENTER_CROPPED; 620 current_user_wallpaper_info_.layout = WALLPAPER_LAYOUT_CENTER_CROPPED;
615 current_user_wallpaper_info_.type = user_manager::User::DEFAULT; 621 current_user_wallpaper_info_.type = user_manager::User::DEFAULT;
616 current_user_wallpaper_info_.date = base::Time::Now().LocalMidnight(); 622 current_user_wallpaper_info_.date = base::Time::Now().LocalMidnight();
617 623
624 std::string device_wallpaper_url;
625 std::string device_wallpaper_hash;
626 if (ShouldSetDeviceWallpaper(account_id, &device_wallpaper_url,
627 &device_wallpaper_hash)) {
628 current_user_wallpaper_info_.location =
629 GetDeviceWallpaperFilePath().value();
630 current_user_wallpaper_info_.type = user_manager::User::DEVICE;
631 }
632
618 WallpaperInfo info = current_user_wallpaper_info_; 633 WallpaperInfo info = current_user_wallpaper_info_;
619 SetUserWallpaperInfo(account_id, info, is_persistent); 634 SetUserWallpaperInfo(account_id, info, is_persistent);
620 } 635 }
621 636
622 void WallpaperManagerBase::SetUserWallpaperDelayed( 637 void WallpaperManagerBase::SetUserWallpaperDelayed(
623 const AccountId& account_id) { 638 const AccountId& account_id) {
624 ScheduleSetUserWallpaper(account_id, true); 639 ScheduleSetUserWallpaper(account_id, true);
625 } 640 }
626 641
627 void WallpaperManagerBase::SetUserWallpaperNow(const AccountId& account_id) { 642 void WallpaperManagerBase::SetUserWallpaperNow(const AccountId& account_id) {
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
701 if (it != wallpaper_cache_.end() && !it->second.second.isNull()) 716 if (it != wallpaper_cache_.end() && !it->second.second.isNull())
702 return; 717 return;
703 WallpaperInfo info; 718 WallpaperInfo info;
704 if (GetUserWallpaperInfo(account_id, &info)) { 719 if (GetUserWallpaperInfo(account_id, &info)) {
705 if (info.location.empty()) 720 if (info.location.empty())
706 return; 721 return;
707 722
708 base::FilePath wallpaper_dir; 723 base::FilePath wallpaper_dir;
709 base::FilePath wallpaper_path; 724 base::FilePath wallpaper_path;
710 if (info.type == user_manager::User::CUSTOMIZED || 725 if (info.type == user_manager::User::CUSTOMIZED ||
711 info.type == user_manager::User::POLICY) { 726 info.type == user_manager::User::POLICY ||
712 const char* sub_dir = GetCustomWallpaperSubdirForCurrentResolution(); 727 info.type == user_manager::User::DEVICE) {
713 base::FilePath wallpaper_path = GetCustomWallpaperDir(sub_dir); 728 base::FilePath wallpaper_path;
714 wallpaper_path = wallpaper_path.Append(info.location); 729 if (info.type == user_manager::User::DEVICE) {
730 wallpaper_path = GetDeviceWallpaperFilePath();
731 } else {
732 const char* sub_dir = GetCustomWallpaperSubdirForCurrentResolution();
733 wallpaper_path = GetCustomWallpaperDir(sub_dir).Append(info.location);
734 }
715 // Set the path to the cache. 735 // Set the path to the cache.
716 wallpaper_cache_[account_id] = 736 wallpaper_cache_[account_id] =
717 CustomWallpaperElement(wallpaper_path, gfx::ImageSkia()); 737 CustomWallpaperElement(wallpaper_path, gfx::ImageSkia());
718 task_runner_->PostTask( 738 task_runner_->PostTask(
719 FROM_HERE, 739 FROM_HERE,
720 base::Bind(&WallpaperManagerBase::GetCustomWallpaperInternal, 740 base::Bind(&WallpaperManagerBase::GetCustomWallpaperInternal,
721 account_id, info, wallpaper_path, 741 account_id, info, wallpaper_path,
722 false /* do not update wallpaper */, 742 false /* do not update wallpaper */,
723 base::ThreadTaskRunnerHandle::Get(), 743 base::ThreadTaskRunnerHandle::Get(),
724 base::Passed(MovableOnDestroyCallbackHolder()), 744 base::Passed(MovableOnDestroyCallbackHolder()),
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
1019 void WallpaperManagerBase::CreateSolidDefaultWallpaper() { 1039 void WallpaperManagerBase::CreateSolidDefaultWallpaper() {
1020 loaded_wallpapers_for_test_++; 1040 loaded_wallpapers_for_test_++;
1021 SkBitmap bitmap; 1041 SkBitmap bitmap;
1022 bitmap.allocN32Pixels(1, 1); 1042 bitmap.allocN32Pixels(1, 1);
1023 bitmap.eraseColor(kDefaultWallpaperColor); 1043 bitmap.eraseColor(kDefaultWallpaperColor);
1024 const gfx::ImageSkia image = gfx::ImageSkia::CreateFrom1xBitmap(bitmap); 1044 const gfx::ImageSkia image = gfx::ImageSkia::CreateFrom1xBitmap(bitmap);
1025 default_wallpaper_image_.reset(new user_manager::UserImage(image)); 1045 default_wallpaper_image_.reset(new user_manager::UserImage(image));
1026 } 1046 }
1027 1047
1028 } // namespace wallpaper 1048 } // namespace wallpaper
OLDNEW
« no previous file with comments | « components/wallpaper/wallpaper_manager_base.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698