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

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

Issue 11316305: Remove wallpaper thumbnail related c++ code. Thumbnail is now generated by javascript. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/chromeos/login/wallpaper_manager.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <vector> 7 #include <vector>
8 8
9 #include "ash/shell.h" 9 #include "ash/shell.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 // Names of nodes with info about wallpaper in |kUserWallpapersProperties| 63 // Names of nodes with info about wallpaper in |kUserWallpapersProperties|
64 // dictionary. 64 // dictionary.
65 const char kNewWallpaperDateNodeName[] = "date"; 65 const char kNewWallpaperDateNodeName[] = "date";
66 const char kNewWallpaperLayoutNodeName[] = "layout"; 66 const char kNewWallpaperLayoutNodeName[] = "layout";
67 const char kNewWallpaperFileNodeName[] = "file"; 67 const char kNewWallpaperFileNodeName[] = "file";
68 const char kNewWallpaperTypeNodeName[] = "type"; 68 const char kNewWallpaperTypeNodeName[] = "type";
69 69
70 // File path suffix of the original custom wallpaper. 70 // File path suffix of the original custom wallpaper.
71 const char kOriginalCustomWallpaperSuffix[] = "_wallpaper"; 71 const char kOriginalCustomWallpaperSuffix[] = "_wallpaper";
72 72
73 gfx::ImageSkia GetWallpaperThumbnail(const gfx::ImageSkia& wallpaper) {
74 gfx::ImageSkia thumbnail = gfx::ImageSkiaOperations::CreateResizedImage(
75 wallpaper,
76 skia::ImageOperations::RESIZE_LANCZOS3,
77 gfx::Size(kThumbnailWidth, kThumbnailHeight));
78
79 thumbnail.MakeThreadSafe();
80 return thumbnail;
81 }
82
83 // For our scaling ratios we need to round positive numbers. 73 // For our scaling ratios we need to round positive numbers.
84 int RoundPositive(double x) { 74 int RoundPositive(double x) {
85 return static_cast<int>(floor(x + 0.5)); 75 return static_cast<int>(floor(x + 0.5));
86 } 76 }
87 77
88 } // namespace 78 } // namespace
89 79
90 namespace chromeos { 80 namespace chromeos {
91 81
92 const char kWallpaperSequenceTokenName[] = "wallpaper-sequence"; 82 const char kWallpaperSequenceTokenName[] = "wallpaper-sequence";
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 kSmallWallpaperSuffix : kLargeWallpaperSuffix; 177 kSmallWallpaperSuffix : kLargeWallpaperSuffix;
188 178
189 std::string filename = base::StringPrintf("%s_wallpaper%s", 179 std::string filename = base::StringPrintf("%s_wallpaper%s",
190 username.c_str(), 180 username.c_str(),
191 suffix); 181 suffix);
192 FilePath user_data_dir; 182 FilePath user_data_dir;
193 PathService::Get(chrome::DIR_USER_DATA, &user_data_dir); 183 PathService::Get(chrome::DIR_USER_DATA, &user_data_dir);
194 return user_data_dir.AppendASCII(filename); 184 return user_data_dir.AppendASCII(filename);
195 } 185 }
196 186
197 gfx::ImageSkia WallpaperManager::GetCustomWallpaperThumbnail(
198 const std::string& email) {
199 CustomWallpaperMap::const_iterator it =
200 custom_wallpaper_thumbnail_cache_.find(email);
201 if (it != custom_wallpaper_thumbnail_cache_.end())
202 return (*it).second;
203 else
204 return gfx::ImageSkia();
205 }
206
207 bool WallpaperManager::GetLoggedInUserWallpaperInfo(WallpaperInfo* info) { 187 bool WallpaperManager::GetLoggedInUserWallpaperInfo(WallpaperInfo* info) {
208 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 188 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
209 189
210 if (UserManager::Get()->IsLoggedInAsStub()) { 190 if (UserManager::Get()->IsLoggedInAsStub()) {
211 info->file = current_user_wallpaper_info_.file = ""; 191 info->file = current_user_wallpaper_info_.file = "";
212 info->layout = current_user_wallpaper_info_.layout = 192 info->layout = current_user_wallpaper_info_.layout =
213 ash::WALLPAPER_LAYOUT_CENTER_CROPPED; 193 ash::WALLPAPER_LAYOUT_CENTER_CROPPED;
214 info->type = current_user_wallpaper_info_.type = User::DEFAULT; 194 info->type = current_user_wallpaper_info_.type = User::DEFAULT;
215 return true; 195 return true;
216 } 196 }
(...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after
627 task_runner_->PostTask(FROM_HERE, 607 task_runner_->PostTask(FROM_HERE,
628 base::Bind(&WallpaperManager::GetCustomWallpaperInternal, 608 base::Bind(&WallpaperManager::GetCustomWallpaperInternal,
629 base::Unretained(this), email, info, wallpaper_path, 609 base::Unretained(this), email, info, wallpaper_path,
630 false /* do not update wallpaper */)); 610 false /* do not update wallpaper */));
631 return; 611 return;
632 } 612 }
633 LoadWallpaper(email, info, false /* do not update wallpaper */); 613 LoadWallpaper(email, info, false /* do not update wallpaper */);
634 } 614 }
635 } 615 }
636 616
637 void WallpaperManager::CacheThumbnail(const std::string& email,
638 scoped_ptr<gfx::ImageSkia> wallpaper) {
639 DCHECK(BrowserThread::GetBlockingPool()->
640 IsRunningSequenceOnCurrentThread(sequence_token_));
641 custom_wallpaper_thumbnail_cache_[email] =
642 GetWallpaperThumbnail(*wallpaper.get());
643 }
644
645 void WallpaperManager::ClearObsoleteWallpaperPrefs() { 617 void WallpaperManager::ClearObsoleteWallpaperPrefs() {
646 PrefService* prefs = g_browser_process->local_state(); 618 PrefService* prefs = g_browser_process->local_state();
647 DictionaryPrefUpdate wallpaper_properties_pref(prefs, 619 DictionaryPrefUpdate wallpaper_properties_pref(prefs,
648 kUserWallpapersProperties); 620 kUserWallpapersProperties);
649 wallpaper_properties_pref->Clear(); 621 wallpaper_properties_pref->Clear();
650 DictionaryPrefUpdate wallpapers_pref(prefs, kUserWallpapers); 622 DictionaryPrefUpdate wallpapers_pref(prefs, kUserWallpapers);
651 wallpapers_pref->Clear(); 623 wallpapers_pref->Clear();
652 } 624 }
653 625
654 void WallpaperManager::DeleteWallpaperInList( 626 void WallpaperManager::DeleteWallpaperInList(
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
764 &date_string) && 736 &date_string) &&
765 base::StringToInt64(date_string, &val))) 737 base::StringToInt64(date_string, &val)))
766 val = 0; 738 val = 0;
767 info->date = base::Time::FromInternalValue(val); 739 info->date = base::Time::FromInternalValue(val);
768 return true; 740 return true;
769 } 741 }
770 742
771 return false; 743 return false;
772 } 744 }
773 745
774 void WallpaperManager::GenerateUserWallpaperThumbnail(
775 const std::string& email,
776 User::WallpaperType type,
777 const gfx::ImageSkia& wallpaper) {
778 DCHECK(BrowserThread::GetBlockingPool()->
779 IsRunningSequenceOnCurrentThread(sequence_token_));
780 custom_wallpaper_thumbnail_cache_[email] = GetWallpaperThumbnail(wallpaper);
781 }
782
783 void WallpaperManager::GetCustomWallpaperInternal( 746 void WallpaperManager::GetCustomWallpaperInternal(
784 const std::string& email, 747 const std::string& email,
785 const WallpaperInfo& info, 748 const WallpaperInfo& info,
786 const FilePath& wallpaper_path, 749 const FilePath& wallpaper_path,
787 bool update_wallpaper) { 750 bool update_wallpaper) {
788 DCHECK(BrowserThread::GetBlockingPool()-> 751 DCHECK(BrowserThread::GetBlockingPool()->
789 IsRunningSequenceOnCurrentThread(sequence_token_)); 752 IsRunningSequenceOnCurrentThread(sequence_token_));
790 std::string file_name = wallpaper_path.BaseName().value(); 753 std::string file_name = wallpaper_path.BaseName().value();
791 754
792 if (!file_util::PathExists(wallpaper_path)) { 755 if (!file_util::PathExists(wallpaper_path)) {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
829 ash::WALLPAPER_LAYOUT_CENTER_CROPPED, 792 ash::WALLPAPER_LAYOUT_CENTER_CROPPED,
830 User::DEFAULT, 793 User::DEFAULT,
831 base::Time::Now().LocalMidnight() 794 base::Time::Now().LocalMidnight()
832 }; 795 };
833 SetUserWallpaperInfo(email, info, true); 796 SetUserWallpaperInfo(email, info, true);
834 797
835 if (update_wallpaper) 798 if (update_wallpaper)
836 SetDefaultWallpaper(); 799 SetDefaultWallpaper();
837 return; 800 return;
838 } 801 }
839 // Generate all reps before passing to another thread.
840 wallpaper.image().EnsureRepsForSupportedScaleFactors();
841 scoped_ptr<gfx::ImageSkia> deep_copy(wallpaper.image().DeepCopy());
842
843 task_runner_->PostTask(FROM_HERE,
844 base::Bind(&WallpaperManager::CacheThumbnail,
845 base::Unretained(this), email,
846 base::Passed(&deep_copy)));
847 802
848 // Only cache user wallpaper at login screen. 803 // Only cache user wallpaper at login screen.
849 if (!UserManager::Get()->IsUserLoggedIn()) { 804 if (!UserManager::Get()->IsUserLoggedIn()) {
850 wallpaper_cache_.insert(std::make_pair(email, wallpaper.image())); 805 wallpaper_cache_.insert(std::make_pair(email, wallpaper.image()));
851 } 806 }
852 if (update_wallpaper) { 807 if (update_wallpaper) {
853 ash::Shell::GetInstance()->desktop_background_controller()-> 808 ash::Shell::GetInstance()->desktop_background_controller()->
854 SetCustomWallpaper(wallpaper.image(), layout); 809 SetCustomWallpaper(wallpaper.image(), layout);
855 } 810 }
856 } 811 }
857 812
858 void WallpaperManager::ProcessCustomWallpaper( 813 void WallpaperManager::ProcessCustomWallpaper(
859 const std::string& email, 814 const std::string& email,
860 bool persistent, 815 bool persistent,
861 const WallpaperInfo& info, 816 const WallpaperInfo& info,
862 scoped_ptr<gfx::ImageSkia> image, 817 scoped_ptr<gfx::ImageSkia> image,
863 const UserImage::RawImage& raw_image) { 818 const UserImage::RawImage& raw_image) {
864 DCHECK(BrowserThread::GetBlockingPool()-> 819 DCHECK(BrowserThread::GetBlockingPool()->
865 IsRunningSequenceOnCurrentThread(sequence_token_)); 820 IsRunningSequenceOnCurrentThread(sequence_token_));
866 UserImage wallpaper(*image.get(), raw_image); 821 UserImage wallpaper(*image.get(), raw_image);
867 GenerateUserWallpaperThumbnail(email, info.type, wallpaper.image());
868 if (persistent) 822 if (persistent)
869 SaveCustomWallpaper(email, FilePath(info.file), info.layout, wallpaper); 823 SaveCustomWallpaper(email, FilePath(info.file), info.layout, wallpaper);
870 } 824 }
871 825
872 void WallpaperManager::SaveCustomWallpaper(const std::string& email, 826 void WallpaperManager::SaveCustomWallpaper(const std::string& email,
873 const FilePath& path, 827 const FilePath& path,
874 ash::WallpaperLayout layout, 828 ash::WallpaperLayout layout,
875 const UserImage& wallpaper) { 829 const UserImage& wallpaper) {
876 FilePath small_wallpaper_path = GetWallpaperPathForUser(email, true); 830 FilePath small_wallpaper_path = GetWallpaperPathForUser(email, true);
877 // Delete previous saved wallpapers. 831 // Delete previous saved wallpapers.
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
951 FROM_HERE, 905 FROM_HERE,
952 base::Bind(&WallpaperManager::StartLoad, 906 base::Bind(&WallpaperManager::StartLoad,
953 base::Unretained(this), 907 base::Unretained(this),
954 email, 908 email,
955 info, 909 info,
956 update_wallpaper, 910 update_wallpaper,
957 valid_path)); 911 valid_path));
958 } 912 }
959 913
960 } // chromeos 914 } // chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/login/wallpaper_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698