| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |