OLD | NEW |
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 475 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
486 // TODO(bshe): Lifetime of WallpaperManagerBase needs more consideration. | 486 // TODO(bshe): Lifetime of WallpaperManagerBase needs more consideration. |
487 // http://crbug.com/171694 | 487 // http://crbug.com/171694 |
488 weak_factory_.InvalidateWeakPtrs(); | 488 weak_factory_.InvalidateWeakPtrs(); |
489 } | 489 } |
490 | 490 |
491 // static | 491 // static |
492 void WallpaperManagerBase::SaveCustomWallpaper( | 492 void WallpaperManagerBase::SaveCustomWallpaper( |
493 const WallpaperFilesId& wallpaper_files_id, | 493 const WallpaperFilesId& wallpaper_files_id, |
494 const base::FilePath& original_path, | 494 const base::FilePath& original_path, |
495 WallpaperLayout layout, | 495 WallpaperLayout layout, |
496 scoped_ptr<gfx::ImageSkia> image) { | 496 std::unique_ptr<gfx::ImageSkia> image) { |
497 base::DeleteFile(GetCustomWallpaperDir(kOriginalWallpaperSubDir) | 497 base::DeleteFile(GetCustomWallpaperDir(kOriginalWallpaperSubDir) |
498 .Append(wallpaper_files_id.id()), | 498 .Append(wallpaper_files_id.id()), |
499 true /* recursive */); | 499 true /* recursive */); |
500 base::DeleteFile(GetCustomWallpaperDir(kSmallWallpaperSubDir) | 500 base::DeleteFile(GetCustomWallpaperDir(kSmallWallpaperSubDir) |
501 .Append(wallpaper_files_id.id()), | 501 .Append(wallpaper_files_id.id()), |
502 true /* recursive */); | 502 true /* recursive */); |
503 base::DeleteFile(GetCustomWallpaperDir(kLargeWallpaperSubDir) | 503 base::DeleteFile(GetCustomWallpaperDir(kLargeWallpaperSubDir) |
504 .Append(wallpaper_files_id.id()), | 504 .Append(wallpaper_files_id.id()), |
505 true /* recursive */); | 505 true /* recursive */); |
506 EnsureCustomWallpaperDirectories(wallpaper_files_id); | 506 EnsureCustomWallpaperDirectories(wallpaper_files_id); |
(...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
903 if (interval > delay) | 903 if (interval > delay) |
904 delay = base::TimeDelta::FromMilliseconds(0); | 904 delay = base::TimeDelta::FromMilliseconds(0); |
905 else if (interval > base::TimeDelta::FromMilliseconds(0)) | 905 else if (interval > base::TimeDelta::FromMilliseconds(0)) |
906 delay -= interval; | 906 delay -= interval; |
907 } | 907 } |
908 return delay; | 908 return delay; |
909 } | 909 } |
910 | 910 |
911 void WallpaperManagerBase::OnCustomizedDefaultWallpaperDecoded( | 911 void WallpaperManagerBase::OnCustomizedDefaultWallpaperDecoded( |
912 const GURL& wallpaper_url, | 912 const GURL& wallpaper_url, |
913 scoped_ptr<CustomizedWallpaperRescaledFiles> rescaled_files, | 913 std::unique_ptr<CustomizedWallpaperRescaledFiles> rescaled_files, |
914 scoped_ptr<user_manager::UserImage> wallpaper) { | 914 std::unique_ptr<user_manager::UserImage> wallpaper) { |
915 DCHECK(thread_checker_.CalledOnValidThread()); | 915 DCHECK(thread_checker_.CalledOnValidThread()); |
916 | 916 |
917 // If decoded wallpaper is empty, we have probably failed to decode the file. | 917 // If decoded wallpaper is empty, we have probably failed to decode the file. |
918 if (wallpaper->image().isNull()) { | 918 if (wallpaper->image().isNull()) { |
919 LOG(WARNING) << "Failed to decode customized wallpaper."; | 919 LOG(WARNING) << "Failed to decode customized wallpaper."; |
920 return; | 920 return; |
921 } | 921 } |
922 | 922 |
923 wallpaper->image().EnsureRepsForSupportedScales(); | 923 wallpaper->image().EnsureRepsForSupportedScales(); |
924 // TODO(crbug.com/593251): DeepCopy() may be unnecessary as this function | 924 // TODO(crbug.com/593251): DeepCopy() may be unnecessary as this function |
925 // owns |wallpaper| as scoped_ptr whereas it used to be a const reference. | 925 // owns |wallpaper| as scoped_ptr whereas it used to be a const reference. |
926 scoped_ptr<gfx::ImageSkia> deep_copy(wallpaper->image().DeepCopy()); | 926 std::unique_ptr<gfx::ImageSkia> deep_copy(wallpaper->image().DeepCopy()); |
927 | 927 |
928 scoped_ptr<bool> success(new bool(false)); | 928 std::unique_ptr<bool> success(new bool(false)); |
929 scoped_ptr<gfx::ImageSkia> small_wallpaper_image(new gfx::ImageSkia); | 929 std::unique_ptr<gfx::ImageSkia> small_wallpaper_image(new gfx::ImageSkia); |
930 scoped_ptr<gfx::ImageSkia> large_wallpaper_image(new gfx::ImageSkia); | 930 std::unique_ptr<gfx::ImageSkia> large_wallpaper_image(new gfx::ImageSkia); |
931 | 931 |
932 // TODO(bshe): This may break if Bytes becomes RefCountedMemory. | 932 // TODO(bshe): This may break if Bytes becomes RefCountedMemory. |
933 base::Closure resize_closure = base::Bind( | 933 base::Closure resize_closure = base::Bind( |
934 &WallpaperManagerBase::ResizeCustomizedDefaultWallpaper, | 934 &WallpaperManagerBase::ResizeCustomizedDefaultWallpaper, |
935 base::Passed(&deep_copy), | 935 base::Passed(&deep_copy), |
936 base::Unretained(rescaled_files.get()), base::Unretained(success.get()), | 936 base::Unretained(rescaled_files.get()), base::Unretained(success.get()), |
937 base::Unretained(small_wallpaper_image.get()), | 937 base::Unretained(small_wallpaper_image.get()), |
938 base::Unretained(large_wallpaper_image.get())); | 938 base::Unretained(large_wallpaper_image.get())); |
939 base::Closure on_resized_closure = base::Bind( | 939 base::Closure on_resized_closure = base::Bind( |
940 &WallpaperManagerBase::OnCustomizedDefaultWallpaperResized, | 940 &WallpaperManagerBase::OnCustomizedDefaultWallpaperResized, |
941 weak_factory_.GetWeakPtr(), wallpaper_url, | 941 weak_factory_.GetWeakPtr(), wallpaper_url, |
942 base::Passed(std::move(rescaled_files)), base::Passed(std::move(success)), | 942 base::Passed(std::move(rescaled_files)), base::Passed(std::move(success)), |
943 base::Passed(std::move(small_wallpaper_image)), | 943 base::Passed(std::move(small_wallpaper_image)), |
944 base::Passed(std::move(large_wallpaper_image))); | 944 base::Passed(std::move(large_wallpaper_image))); |
945 | 945 |
946 if (!task_runner_->PostTaskAndReply(FROM_HERE, resize_closure, | 946 if (!task_runner_->PostTaskAndReply(FROM_HERE, resize_closure, |
947 on_resized_closure)) { | 947 on_resized_closure)) { |
948 LOG(WARNING) << "Failed to start Customized Wallpaper resize."; | 948 LOG(WARNING) << "Failed to start Customized Wallpaper resize."; |
949 } | 949 } |
950 } | 950 } |
951 | 951 |
952 void WallpaperManagerBase::ResizeCustomizedDefaultWallpaper( | 952 void WallpaperManagerBase::ResizeCustomizedDefaultWallpaper( |
953 scoped_ptr<gfx::ImageSkia> image, | 953 std::unique_ptr<gfx::ImageSkia> image, |
954 const CustomizedWallpaperRescaledFiles* rescaled_files, | 954 const CustomizedWallpaperRescaledFiles* rescaled_files, |
955 bool* success, | 955 bool* success, |
956 gfx::ImageSkia* small_wallpaper_image, | 956 gfx::ImageSkia* small_wallpaper_image, |
957 gfx::ImageSkia* large_wallpaper_image) { | 957 gfx::ImageSkia* large_wallpaper_image) { |
958 *success = true; | 958 *success = true; |
959 | 959 |
960 *success &= ResizeAndSaveWallpaper( | 960 *success &= ResizeAndSaveWallpaper( |
961 *image, rescaled_files->path_rescaled_small(), WALLPAPER_LAYOUT_STRETCH, | 961 *image, rescaled_files->path_rescaled_small(), WALLPAPER_LAYOUT_STRETCH, |
962 kSmallWallpaperMaxWidth, kSmallWallpaperMaxHeight, small_wallpaper_image); | 962 kSmallWallpaperMaxWidth, kSmallWallpaperMaxHeight, small_wallpaper_image); |
963 | 963 |
964 *success &= ResizeAndSaveWallpaper( | 964 *success &= ResizeAndSaveWallpaper( |
965 *image, rescaled_files->path_rescaled_large(), WALLPAPER_LAYOUT_STRETCH, | 965 *image, rescaled_files->path_rescaled_large(), WALLPAPER_LAYOUT_STRETCH, |
966 kLargeWallpaperMaxWidth, kLargeWallpaperMaxHeight, large_wallpaper_image); | 966 kLargeWallpaperMaxWidth, kLargeWallpaperMaxHeight, large_wallpaper_image); |
967 } | 967 } |
968 | 968 |
969 void WallpaperManagerBase::SetCustomizedDefaultWallpaper( | 969 void WallpaperManagerBase::SetCustomizedDefaultWallpaper( |
970 const GURL& wallpaper_url, | 970 const GURL& wallpaper_url, |
971 const base::FilePath& downloaded_file, | 971 const base::FilePath& downloaded_file, |
972 const base::FilePath& resized_directory) { | 972 const base::FilePath& resized_directory) { |
973 // Should fail if this ever happens in tests. | 973 // Should fail if this ever happens in tests. |
974 DCHECK(wallpaper_url.is_valid()); | 974 DCHECK(wallpaper_url.is_valid()); |
975 if (!wallpaper_url.is_valid()) { | 975 if (!wallpaper_url.is_valid()) { |
976 if (!wallpaper_url.is_empty()) { | 976 if (!wallpaper_url.is_empty()) { |
977 LOG(WARNING) << "Invalid Customized Wallpaper URL '" | 977 LOG(WARNING) << "Invalid Customized Wallpaper URL '" |
978 << wallpaper_url.spec() << "'"; | 978 << wallpaper_url.spec() << "'"; |
979 } | 979 } |
980 return; | 980 return; |
981 } | 981 } |
982 std::string downloaded_file_name = downloaded_file.BaseName().value(); | 982 std::string downloaded_file_name = downloaded_file.BaseName().value(); |
983 scoped_ptr<CustomizedWallpaperRescaledFiles> rescaled_files( | 983 std::unique_ptr<CustomizedWallpaperRescaledFiles> rescaled_files( |
984 new CustomizedWallpaperRescaledFiles( | 984 new CustomizedWallpaperRescaledFiles( |
985 downloaded_file, resized_directory.Append(downloaded_file_name + | 985 downloaded_file, resized_directory.Append(downloaded_file_name + |
986 kSmallWallpaperSuffix), | 986 kSmallWallpaperSuffix), |
987 resized_directory.Append(downloaded_file_name + | 987 resized_directory.Append(downloaded_file_name + |
988 kLargeWallpaperSuffix))); | 988 kLargeWallpaperSuffix))); |
989 | 989 |
990 base::Closure check_file_exists = rescaled_files->CreateCheckerClosure(); | 990 base::Closure check_file_exists = rescaled_files->CreateCheckerClosure(); |
991 base::Closure on_checked_closure = | 991 base::Closure on_checked_closure = |
992 base::Bind(&WallpaperManagerBase::SetCustomizedDefaultWallpaperAfterCheck, | 992 base::Bind(&WallpaperManagerBase::SetCustomizedDefaultWallpaperAfterCheck, |
993 weak_factory_.GetWeakPtr(), wallpaper_url, downloaded_file, | 993 weak_factory_.GetWeakPtr(), wallpaper_url, downloaded_file, |
(...skipping 14 matching lines...) Expand all Loading... |
1008 void WallpaperManagerBase::CreateSolidDefaultWallpaper() { | 1008 void WallpaperManagerBase::CreateSolidDefaultWallpaper() { |
1009 loaded_wallpapers_for_test_++; | 1009 loaded_wallpapers_for_test_++; |
1010 SkBitmap bitmap; | 1010 SkBitmap bitmap; |
1011 bitmap.allocN32Pixels(1, 1); | 1011 bitmap.allocN32Pixels(1, 1); |
1012 bitmap.eraseColor(kDefaultWallpaperColor); | 1012 bitmap.eraseColor(kDefaultWallpaperColor); |
1013 const gfx::ImageSkia image = gfx::ImageSkia::CreateFrom1xBitmap(bitmap); | 1013 const gfx::ImageSkia image = gfx::ImageSkia::CreateFrom1xBitmap(bitmap); |
1014 default_wallpaper_image_.reset(new user_manager::UserImage(image)); | 1014 default_wallpaper_image_.reset(new user_manager::UserImage(image)); |
1015 } | 1015 } |
1016 | 1016 |
1017 } // namespace wallpaper | 1017 } // namespace wallpaper |
OLD | NEW |