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

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

Issue 10820049: Load 2x resources on demand (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: updated comment Created 8 years, 3 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/wallpaper_manager.h" 5 #include "chrome/browser/chromeos/login/wallpaper_manager.h"
6 6
7 #include "ash/desktop_background/desktop_background_controller.h" 7 #include "ash/desktop_background/desktop_background_controller.h"
8 #include "ash/desktop_background/desktop_background_resources.h" 8 #include "ash/desktop_background/desktop_background_resources.h"
9 #include "ash/shell.h" 9 #include "ash/shell.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 const char kNewWallpaperLayoutNodeName[] = "layout"; 69 const char kNewWallpaperLayoutNodeName[] = "layout";
70 const char kNewWallpaperFileNodeName[] = "file"; 70 const char kNewWallpaperFileNodeName[] = "file";
71 const char kNewWallpaperTypeNodeName[] = "type"; 71 const char kNewWallpaperTypeNodeName[] = "type";
72 72
73 gfx::ImageSkia GetWallpaperThumbnail(const gfx::ImageSkia& wallpaper) { 73 gfx::ImageSkia GetWallpaperThumbnail(const gfx::ImageSkia& wallpaper) {
74 gfx::ImageSkia thumbnail = gfx::ImageSkiaOperations::CreateResizedImage( 74 gfx::ImageSkia thumbnail = gfx::ImageSkiaOperations::CreateResizedImage(
75 wallpaper, 75 wallpaper,
76 skia::ImageOperations::RESIZE_LANCZOS3, 76 skia::ImageOperations::RESIZE_LANCZOS3,
77 gfx::Size(kThumbnailWidth, kThumbnailHeight)); 77 gfx::Size(kThumbnailWidth, kThumbnailHeight));
78 78
79 // Ideally, this would call thumbnail.GetRepresentations(). But since that 79 thumbnail.MakeThreadSafe();
80 // isn't exposed on non-mac yet, we have to do this here.
81 std::vector<ui::ScaleFactor> scales = ui::GetSupportedScaleFactors();
82 for (size_t i = 0; i < scales.size(); ++i) {
83 if (wallpaper.HasRepresentation(scales[i]))
84 thumbnail.GetRepresentation(scales[i]);
85 }
86
87 return thumbnail; 80 return thumbnail;
88 } 81 }
89 82
90 gfx::ImageSkia ImageSkiaDeepCopy(const gfx::ImageSkia& image) {
91 gfx::ImageSkia copy;
92 std::vector<gfx::ImageSkiaRep> reps = image.image_reps();
93 for (std::vector<gfx::ImageSkiaRep>::iterator iter = reps.begin();
94 iter != reps.end(); ++iter) {
95 copy.AddRepresentation(*iter);
96 }
97 return copy;
98 }
99
100 } // namespace 83 } // namespace
101 84
102 namespace chromeos { 85 namespace chromeos {
103 86
104 static WallpaperManager* g_wallpaper_manager = NULL; 87 static WallpaperManager* g_wallpaper_manager = NULL;
105 88
106 // WallpaperManager, public: --------------------------------------------------- 89 // WallpaperManager, public: ---------------------------------------------------
107 90
108 // static 91 // static
109 WallpaperManager* WallpaperManager::Get() { 92 WallpaperManager* WallpaperManager::Get() {
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 suffix); 181 suffix);
199 FilePath user_data_dir; 182 FilePath user_data_dir;
200 PathService::Get(chrome::DIR_USER_DATA, &user_data_dir); 183 PathService::Get(chrome::DIR_USER_DATA, &user_data_dir);
201 return user_data_dir.AppendASCII(filename); 184 return user_data_dir.AppendASCII(filename);
202 } 185 }
203 186
204 gfx::ImageSkia WallpaperManager::GetCustomWallpaperThumbnail( 187 gfx::ImageSkia WallpaperManager::GetCustomWallpaperThumbnail(
205 const std::string& email) { 188 const std::string& email) {
206 CustomWallpaperMap::const_iterator it = 189 CustomWallpaperMap::const_iterator it =
207 custom_wallpaper_thumbnail_cache_.find(email); 190 custom_wallpaper_thumbnail_cache_.find(email);
208 if (it != wallpaper_cache_.end()) 191 if (it != custom_wallpaper_thumbnail_cache_.end())
209 return (*it).second; 192 return (*it).second;
210 else 193 else
211 return gfx::ImageSkia(); 194 return gfx::ImageSkia();
212 } 195 }
213 196
214 void WallpaperManager::GetLoggedInUserWallpaperProperties( 197 void WallpaperManager::GetLoggedInUserWallpaperProperties(
215 User::WallpaperType* type, 198 User::WallpaperType* type,
216 int* index, 199 int* index,
217 base::Time* last_modification_date) { 200 base::Time* last_modification_date) {
218 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 201 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after
619 void WallpaperManager::CacheWallpaper(const std::string& email, 602 void WallpaperManager::CacheWallpaper(const std::string& email,
620 const UserImage& wallpaper) { 603 const UserImage& wallpaper) {
621 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 604 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
622 DCHECK(wallpaper_cache_.find(email) == wallpaper_cache_.end()); 605 DCHECK(wallpaper_cache_.find(email) == wallpaper_cache_.end());
623 606
624 BrowserThread::PostTask( 607 BrowserThread::PostTask(
625 BrowserThread::FILE, 608 BrowserThread::FILE,
626 FROM_HERE, 609 FROM_HERE,
627 base::Bind(&WallpaperManager::CacheThumbnail, 610 base::Bind(&WallpaperManager::CacheThumbnail,
628 base::Unretained(this), email, 611 base::Unretained(this), email,
629 ImageSkiaDeepCopy(wallpaper.image()))); 612 wallpaper.image().DeepCopy()));
630 613
631 wallpaper_cache_.insert(std::make_pair(email, wallpaper.image())); 614 wallpaper_cache_.insert(std::make_pair(email, wallpaper.image()));
632 } 615 }
633 616
634 void WallpaperManager::CacheThumbnail(const std::string& email, 617 void WallpaperManager::CacheThumbnail(const std::string& email,
635 const gfx::ImageSkia& wallpaper) { 618 const gfx::ImageSkia& wallpaper) {
636 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 619 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
637 custom_wallpaper_thumbnail_cache_[email] = GetWallpaperThumbnail(wallpaper); 620 custom_wallpaper_thumbnail_cache_[email] = GetWallpaperThumbnail(wallpaper);
638 } 621 }
639 622
(...skipping 21 matching lines...) Expand all
661 void WallpaperManager::FetchWallpaper(const std::string& email, 644 void WallpaperManager::FetchWallpaper(const std::string& email,
662 ash::WallpaperLayout layout, 645 ash::WallpaperLayout layout,
663 const UserImage& wallpaper) { 646 const UserImage& wallpaper) {
664 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 647 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
665 648
666 BrowserThread::PostTask( 649 BrowserThread::PostTask(
667 BrowserThread::FILE, 650 BrowserThread::FILE,
668 FROM_HERE, 651 FROM_HERE,
669 base::Bind(&WallpaperManager::CacheThumbnail, 652 base::Bind(&WallpaperManager::CacheThumbnail,
670 base::Unretained(this), email, 653 base::Unretained(this), email,
671 ImageSkiaDeepCopy(wallpaper.image()))); 654 wallpaper.image().DeepCopy()));
672
673 wallpaper_cache_.insert(std::make_pair(email, wallpaper.image())); 655 wallpaper_cache_.insert(std::make_pair(email, wallpaper.image()));
674 ash::Shell::GetInstance()->desktop_background_controller()-> 656 ash::Shell::GetInstance()->desktop_background_controller()->
675 SetCustomWallpaper(wallpaper.image(), layout); 657 SetCustomWallpaper(wallpaper.image(), layout);
676 } 658 }
677 659
678 bool WallpaperManager::GetUserWallpaperInfo(const std::string& email, 660 bool WallpaperManager::GetUserWallpaperInfo(const std::string& email,
679 WallpaperInfo* info){ 661 WallpaperInfo* info){
680 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 662 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
681 663
682 if (!ShouldPersistDataForUser(email)) { 664 if (!ShouldPersistDataForUser(email)) {
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
913 895
914 void WallpaperManager::SystemResumed() { 896 void WallpaperManager::SystemResumed() {
915 BatchUpdateWallpaper(); 897 BatchUpdateWallpaper();
916 } 898 }
917 899
918 void WallpaperManager::TimezoneChanged(const icu::TimeZone& timezone) { 900 void WallpaperManager::TimezoneChanged(const icu::TimeZone& timezone) {
919 RestartTimer(); 901 RestartTimer();
920 } 902 }
921 903
922 } // chromeos 904 } // chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/login/user_image_loader.cc ('k') | chrome/browser/extensions/image_loading_tracker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698