| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 386 return true; | 386 return true; |
| 387 } | 387 } |
| 388 | 388 |
| 389 void WallpaperManager::ResizeAndSaveWallpaper(const UserImage& wallpaper, | 389 void WallpaperManager::ResizeAndSaveWallpaper(const UserImage& wallpaper, |
| 390 const base::FilePath& path, | 390 const base::FilePath& path, |
| 391 ash::WallpaperLayout layout, | 391 ash::WallpaperLayout layout, |
| 392 int preferred_width, | 392 int preferred_width, |
| 393 int preferred_height) { | 393 int preferred_height) { |
| 394 if (layout == ash::WALLPAPER_LAYOUT_CENTER) { | 394 if (layout == ash::WALLPAPER_LAYOUT_CENTER) { |
| 395 // TODO(bshe): Generates cropped custom wallpaper for CENTER layout. | 395 // TODO(bshe): Generates cropped custom wallpaper for CENTER layout. |
| 396 if (file_util::PathExists(path)) | 396 if (base::PathExists(path)) |
| 397 base::Delete(path, false); | 397 base::Delete(path, false); |
| 398 return; | 398 return; |
| 399 } | 399 } |
| 400 scoped_refptr<base::RefCountedBytes> data; | 400 scoped_refptr<base::RefCountedBytes> data; |
| 401 if (ResizeWallpaper(wallpaper, layout, preferred_width, preferred_height, | 401 if (ResizeWallpaper(wallpaper, layout, preferred_width, preferred_height, |
| 402 &data)) { | 402 &data)) { |
| 403 SaveWallpaperInternal(path, | 403 SaveWallpaperInternal(path, |
| 404 reinterpret_cast<const char*>(data->front()), | 404 reinterpret_cast<const char*>(data->front()), |
| 405 data->size()); | 405 data->size()); |
| 406 } | 406 } |
| (...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 724 base::Bind(&WallpaperManager::DeleteWallpaperInList, | 724 base::Bind(&WallpaperManager::DeleteWallpaperInList, |
| 725 base::Unretained(this), | 725 base::Unretained(this), |
| 726 file_to_remove), | 726 file_to_remove), |
| 727 false); | 727 false); |
| 728 } | 728 } |
| 729 | 729 |
| 730 void WallpaperManager::EnsureCustomWallpaperDirectories( | 730 void WallpaperManager::EnsureCustomWallpaperDirectories( |
| 731 const std::string& email) { | 731 const std::string& email) { |
| 732 base::FilePath dir; | 732 base::FilePath dir; |
| 733 dir = GetCustomWallpaperDir(kSmallWallpaperSubDir, email); | 733 dir = GetCustomWallpaperDir(kSmallWallpaperSubDir, email); |
| 734 if (!file_util::PathExists(dir)) | 734 if (!base::PathExists(dir)) |
| 735 file_util::CreateDirectory(dir); | 735 file_util::CreateDirectory(dir); |
| 736 dir = GetCustomWallpaperDir(kLargeWallpaperSubDir, email); | 736 dir = GetCustomWallpaperDir(kLargeWallpaperSubDir, email); |
| 737 if (!file_util::PathExists(dir)) | 737 if (!base::PathExists(dir)) |
| 738 file_util::CreateDirectory(dir); | 738 file_util::CreateDirectory(dir); |
| 739 dir = GetCustomWallpaperDir(kOriginalWallpaperSubDir, email); | 739 dir = GetCustomWallpaperDir(kOriginalWallpaperSubDir, email); |
| 740 if (!file_util::PathExists(dir)) | 740 if (!base::PathExists(dir)) |
| 741 file_util::CreateDirectory(dir); | 741 file_util::CreateDirectory(dir); |
| 742 dir = GetCustomWallpaperDir(kThumbnailWallpaperSubDir, email); | 742 dir = GetCustomWallpaperDir(kThumbnailWallpaperSubDir, email); |
| 743 if (!file_util::PathExists(dir)) | 743 if (!base::PathExists(dir)) |
| 744 file_util::CreateDirectory(dir); | 744 file_util::CreateDirectory(dir); |
| 745 } | 745 } |
| 746 | 746 |
| 747 void WallpaperManager::FallbackToOldCustomWallpaper(const std::string& email, | 747 void WallpaperManager::FallbackToOldCustomWallpaper(const std::string& email, |
| 748 const WallpaperInfo& info, | 748 const WallpaperInfo& info, |
| 749 bool update_wallpaper){ | 749 bool update_wallpaper){ |
| 750 ash::WallpaperResolution resolution = ash::Shell::GetInstance()-> | 750 ash::WallpaperResolution resolution = ash::Shell::GetInstance()-> |
| 751 desktop_background_controller()->GetAppropriateResolution(); | 751 desktop_background_controller()->GetAppropriateResolution(); |
| 752 bool is_small = resolution == ash::WALLPAPER_RESOLUTION_SMALL; | 752 bool is_small = resolution == ash::WALLPAPER_RESOLUTION_SMALL; |
| 753 base::FilePath wallpaper_path = GetWallpaperPathForUser(email, is_small); | 753 base::FilePath wallpaper_path = GetWallpaperPathForUser(email, is_small); |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 839 IsRunningSequenceOnCurrentThread(sequence_token_)); | 839 IsRunningSequenceOnCurrentThread(sequence_token_)); |
| 840 | 840 |
| 841 base::FilePath from_path; | 841 base::FilePath from_path; |
| 842 base::FilePath to_path; | 842 base::FilePath to_path; |
| 843 // Move old custom wallpapers to new place for all existing users. | 843 // Move old custom wallpapers to new place for all existing users. |
| 844 for (UserList::const_iterator it = users.begin(); it != users.end(); ++it) { | 844 for (UserList::const_iterator it = users.begin(); it != users.end(); ++it) { |
| 845 std::string email = (*it)->email(); | 845 std::string email = (*it)->email(); |
| 846 EnsureCustomWallpaperDirectories(email); | 846 EnsureCustomWallpaperDirectories(email); |
| 847 from_path = GetWallpaperPathForUser(email, true); | 847 from_path = GetWallpaperPathForUser(email, true); |
| 848 // Old wallpaper with extension name may still exist. | 848 // Old wallpaper with extension name may still exist. |
| 849 if (!file_util::PathExists(from_path)) | 849 if (!base::PathExists(from_path)) |
| 850 from_path = from_path.AddExtension(".png"); | 850 from_path = from_path.AddExtension(".png"); |
| 851 if (file_util::PathExists(from_path)) { | 851 if (base::PathExists(from_path)) { |
| 852 // Appends DUMMY to the file name of moved custom wallpaper. This way we | 852 // Appends DUMMY to the file name of moved custom wallpaper. This way we |
| 853 // do not need to update WallpaperInfo for user. | 853 // do not need to update WallpaperInfo for user. |
| 854 to_path = GetCustomWallpaperPath(kSmallWallpaperSubDir, email, "DUMMY"); | 854 to_path = GetCustomWallpaperPath(kSmallWallpaperSubDir, email, "DUMMY"); |
| 855 base::Move(from_path, to_path); | 855 base::Move(from_path, to_path); |
| 856 } | 856 } |
| 857 from_path = GetWallpaperPathForUser(email, false); | 857 from_path = GetWallpaperPathForUser(email, false); |
| 858 if (!file_util::PathExists(from_path)) | 858 if (!base::PathExists(from_path)) |
| 859 from_path = from_path.AddExtension(".png"); | 859 from_path = from_path.AddExtension(".png"); |
| 860 if (file_util::PathExists(from_path)) { | 860 if (base::PathExists(from_path)) { |
| 861 to_path = GetCustomWallpaperPath(kLargeWallpaperSubDir, email, "DUMMY"); | 861 to_path = GetCustomWallpaperPath(kLargeWallpaperSubDir, email, "DUMMY"); |
| 862 base::Move(from_path, to_path); | 862 base::Move(from_path, to_path); |
| 863 } | 863 } |
| 864 from_path = GetOriginalWallpaperPathForUser(email); | 864 from_path = GetOriginalWallpaperPathForUser(email); |
| 865 if (!file_util::PathExists(from_path)) | 865 if (!base::PathExists(from_path)) |
| 866 from_path = from_path.AddExtension(".png"); | 866 from_path = from_path.AddExtension(".png"); |
| 867 if (file_util::PathExists(from_path)) { | 867 if (base::PathExists(from_path)) { |
| 868 to_path = GetCustomWallpaperPath(kOriginalWallpaperSubDir, email, | 868 to_path = GetCustomWallpaperPath(kOriginalWallpaperSubDir, email, |
| 869 "DUMMY"); | 869 "DUMMY"); |
| 870 base::Move(from_path, to_path); | 870 base::Move(from_path, to_path); |
| 871 } | 871 } |
| 872 } | 872 } |
| 873 } | 873 } |
| 874 | 874 |
| 875 bool WallpaperManager::GetUserWallpaperInfo(const std::string& email, | 875 bool WallpaperManager::GetUserWallpaperInfo(const std::string& email, |
| 876 WallpaperInfo* info){ | 876 WallpaperInfo* info){ |
| 877 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 877 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 915 | 915 |
| 916 void WallpaperManager::GetCustomWallpaperInternalOld( | 916 void WallpaperManager::GetCustomWallpaperInternalOld( |
| 917 const std::string& email, | 917 const std::string& email, |
| 918 const WallpaperInfo& info, | 918 const WallpaperInfo& info, |
| 919 const base::FilePath& wallpaper_path, | 919 const base::FilePath& wallpaper_path, |
| 920 bool update_wallpaper) { | 920 bool update_wallpaper) { |
| 921 DCHECK(BrowserThread::GetBlockingPool()-> | 921 DCHECK(BrowserThread::GetBlockingPool()-> |
| 922 IsRunningSequenceOnCurrentThread(sequence_token_)); | 922 IsRunningSequenceOnCurrentThread(sequence_token_)); |
| 923 std::string file_name = wallpaper_path.BaseName().value(); | 923 std::string file_name = wallpaper_path.BaseName().value(); |
| 924 | 924 |
| 925 if (!file_util::PathExists(wallpaper_path)) { | 925 if (!base::PathExists(wallpaper_path)) { |
| 926 if (file_util::PathExists(wallpaper_path.AddExtension(".png"))) { | 926 if (base::PathExists(wallpaper_path.AddExtension(".png"))) { |
| 927 // Old wallpaper may have a png extension. | 927 // Old wallpaper may have a png extension. |
| 928 file_name += ".png"; | 928 file_name += ".png"; |
| 929 } else { | 929 } else { |
| 930 // Falls back on original file if the correct resoltuion file does not | 930 // Falls back on original file if the correct resoltuion file does not |
| 931 // exist. This may happen when the original custom wallpaper is small or | 931 // exist. This may happen when the original custom wallpaper is small or |
| 932 // browser shutdown before resized wallpaper saved. | 932 // browser shutdown before resized wallpaper saved. |
| 933 file_name = GetOriginalWallpaperPathForUser(email).BaseName().value(); | 933 file_name = GetOriginalWallpaperPathForUser(email).BaseName().value(); |
| 934 } | 934 } |
| 935 } | 935 } |
| 936 | 936 |
| 937 base::FilePath valid_path = wallpaper_path.DirName().Append(file_name); | 937 base::FilePath valid_path = wallpaper_path.DirName().Append(file_name); |
| 938 if (!file_util::PathExists(valid_path)) | 938 if (!base::PathExists(valid_path)) |
| 939 valid_path = valid_path.AddExtension(".png"); | 939 valid_path = valid_path.AddExtension(".png"); |
| 940 BrowserThread::PostTask( | 940 BrowserThread::PostTask( |
| 941 BrowserThread::UI, FROM_HERE, | 941 BrowserThread::UI, FROM_HERE, |
| 942 base::Bind(&WallpaperManager::StartLoad, base::Unretained(this), email, | 942 base::Bind(&WallpaperManager::StartLoad, base::Unretained(this), email, |
| 943 info, update_wallpaper, valid_path)); | 943 info, update_wallpaper, valid_path)); |
| 944 BrowserThread::PostTask( | 944 BrowserThread::PostTask( |
| 945 BrowserThread::UI, FROM_HERE, | 945 BrowserThread::UI, FROM_HERE, |
| 946 base::Bind(&WallpaperManager::MoveCustomWallpapers, | 946 base::Bind(&WallpaperManager::MoveCustomWallpapers, |
| 947 base::Unretained(this))); | 947 base::Unretained(this))); |
| 948 } | 948 } |
| 949 | 949 |
| 950 void WallpaperManager::GetCustomWallpaperInternal( | 950 void WallpaperManager::GetCustomWallpaperInternal( |
| 951 const std::string& email, | 951 const std::string& email, |
| 952 const WallpaperInfo& info, | 952 const WallpaperInfo& info, |
| 953 const base::FilePath& wallpaper_path, | 953 const base::FilePath& wallpaper_path, |
| 954 bool update_wallpaper) { | 954 bool update_wallpaper) { |
| 955 DCHECK(BrowserThread::GetBlockingPool()-> | 955 DCHECK(BrowserThread::GetBlockingPool()-> |
| 956 IsRunningSequenceOnCurrentThread(sequence_token_)); | 956 IsRunningSequenceOnCurrentThread(sequence_token_)); |
| 957 | 957 |
| 958 base::FilePath valid_path = wallpaper_path; | 958 base::FilePath valid_path = wallpaper_path; |
| 959 if (!file_util::PathExists(wallpaper_path)) { | 959 if (!base::PathExists(wallpaper_path)) { |
| 960 // Falls back on original file if the correct resoltuion file does not | 960 // Falls back on original file if the correct resoltuion file does not |
| 961 // exist. This may happen when the original custom wallpaper is small or | 961 // exist. This may happen when the original custom wallpaper is small or |
| 962 // browser shutdown before resized wallpaper saved. | 962 // browser shutdown before resized wallpaper saved. |
| 963 valid_path = GetCustomWallpaperPath(kOriginalWallpaperSubDir, email, | 963 valid_path = GetCustomWallpaperPath(kOriginalWallpaperSubDir, email, |
| 964 info.file); | 964 info.file); |
| 965 } | 965 } |
| 966 | 966 |
| 967 if (!file_util::PathExists(valid_path)) { | 967 if (!base::PathExists(valid_path)) { |
| 968 BrowserThread::PostTask( | 968 BrowserThread::PostTask( |
| 969 BrowserThread::UI, | 969 BrowserThread::UI, |
| 970 FROM_HERE, | 970 FROM_HERE, |
| 971 base::Bind(&WallpaperManager::FallbackToOldCustomWallpaper, | 971 base::Bind(&WallpaperManager::FallbackToOldCustomWallpaper, |
| 972 base::Unretained(this), | 972 base::Unretained(this), |
| 973 email, | 973 email, |
| 974 info, | 974 info, |
| 975 update_wallpaper)); | 975 update_wallpaper)); |
| 976 } else { | 976 } else { |
| 977 BrowserThread::PostTask(BrowserThread::UI, | 977 BrowserThread::PostTask(BrowserThread::UI, |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1098 | 1098 |
| 1099 void WallpaperManager::SystemResumed(const base::TimeDelta& sleep_duration) { | 1099 void WallpaperManager::SystemResumed(const base::TimeDelta& sleep_duration) { |
| 1100 BatchUpdateWallpaper(); | 1100 BatchUpdateWallpaper(); |
| 1101 } | 1101 } |
| 1102 | 1102 |
| 1103 void WallpaperManager::TimezoneChanged(const icu::TimeZone& timezone) { | 1103 void WallpaperManager::TimezoneChanged(const icu::TimeZone& timezone) { |
| 1104 RestartTimer(); | 1104 RestartTimer(); |
| 1105 } | 1105 } |
| 1106 | 1106 |
| 1107 } // namespace chromeos | 1107 } // namespace chromeos |
| OLD | NEW |