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

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

Issue 376193002: Move UserImage to user_manager (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 5 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 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 "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h" 5 #include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h"
6 6
7 #include <numeric> 7 #include <numeric>
8 #include <vector> 8 #include <vector>
9 9
10 #include "ash/ash_constants.h" 10 #include "ash/ash_constants.h"
(...skipping 15 matching lines...) Expand all
26 #include "base/strings/string_util.h" 26 #include "base/strings/string_util.h"
27 #include "base/strings/stringprintf.h" 27 #include "base/strings/stringprintf.h"
28 #include "base/sys_info.h" 28 #include "base/sys_info.h"
29 #include "base/threading/worker_pool.h" 29 #include "base/threading/worker_pool.h"
30 #include "base/time/time.h" 30 #include "base/time/time.h"
31 #include "base/values.h" 31 #include "base/values.h"
32 #include "chrome/browser/browser_process.h" 32 #include "chrome/browser/browser_process.h"
33 #include "chrome/browser/chrome_notification_types.h" 33 #include "chrome/browser/chrome_notification_types.h"
34 #include "chrome/browser/chromeos/customization_document.h" 34 #include "chrome/browser/chromeos/customization_document.h"
35 #include "chrome/browser/chromeos/login/startup_utils.h" 35 #include "chrome/browser/chromeos/login/startup_utils.h"
36 #include "chrome/browser/chromeos/login/users/avatar/user_image.h"
37 #include "chrome/browser/chromeos/login/users/user.h" 36 #include "chrome/browser/chromeos/login/users/user.h"
38 #include "chrome/browser/chromeos/login/users/user_manager.h" 37 #include "chrome/browser/chromeos/login/users/user_manager.h"
39 #include "chrome/browser/chromeos/login/wizard_controller.h" 38 #include "chrome/browser/chromeos/login/wizard_controller.h"
40 #include "chrome/browser/chromeos/settings/cros_settings.h" 39 #include "chrome/browser/chromeos/settings/cros_settings.h"
41 #include "chrome/common/chrome_paths.h" 40 #include "chrome/common/chrome_paths.h"
42 #include "chrome/common/chrome_switches.h" 41 #include "chrome/common/chrome_switches.h"
43 #include "chrome/common/pref_names.h" 42 #include "chrome/common/pref_names.h"
44 #include "chromeos/chromeos_switches.h" 43 #include "chromeos/chromeos_switches.h"
45 #include "chromeos/dbus/dbus_thread_manager.h" 44 #include "chromeos/dbus/dbus_thread_manager.h"
46 #include "chromeos/login/user_names.h" 45 #include "chromeos/login/user_names.h"
46 #include "components/user_manager/user_image/user_image.h"
47 #include "components/user_manager/user_type.h" 47 #include "components/user_manager/user_type.h"
48 #include "content/public/browser/browser_thread.h" 48 #include "content/public/browser/browser_thread.h"
49 #include "content/public/browser/notification_service.h" 49 #include "content/public/browser/notification_service.h"
50 #include "third_party/skia/include/core/SkColor.h" 50 #include "third_party/skia/include/core/SkColor.h"
51 #include "ui/gfx/codec/jpeg_codec.h" 51 #include "ui/gfx/codec/jpeg_codec.h"
52 #include "ui/gfx/image/image_skia_operations.h" 52 #include "ui/gfx/image/image_skia_operations.h"
53 #include "ui/gfx/skia_util.h" 53 #include "ui/gfx/skia_util.h"
54 54
55 using content::BrowserThread; 55 using content::BrowserThread;
56 56
(...skipping 770 matching lines...) Expand 10 before | Expand all | Expand 10 after
827 base::FilePath WallpaperManager::GetCustomWallpaperPath( 827 base::FilePath WallpaperManager::GetCustomWallpaperPath(
828 const char* sub_dir, 828 const char* sub_dir,
829 const std::string& user_id_hash, 829 const std::string& user_id_hash,
830 const std::string& file) { 830 const std::string& file) {
831 base::FilePath custom_wallpaper_path = GetCustomWallpaperDir(sub_dir); 831 base::FilePath custom_wallpaper_path = GetCustomWallpaperDir(sub_dir);
832 return custom_wallpaper_path.Append(user_id_hash).Append(file); 832 return custom_wallpaper_path.Append(user_id_hash).Append(file);
833 } 833 }
834 834
835 void WallpaperManager::SetPolicyControlledWallpaper( 835 void WallpaperManager::SetPolicyControlledWallpaper(
836 const std::string& user_id, 836 const std::string& user_id,
837 const UserImage& user_image) { 837 const user_manager::UserImage& user_image) {
838 const User *user = chromeos::UserManager::Get()->FindUser(user_id); 838 const User *user = chromeos::UserManager::Get()->FindUser(user_id);
839 if (!user) { 839 if (!user) {
840 NOTREACHED() << "Unknown user."; 840 NOTREACHED() << "Unknown user.";
841 return; 841 return;
842 } 842 }
843 SetCustomWallpaper(user_id, 843 SetCustomWallpaper(user_id,
844 user->username_hash(), 844 user->username_hash(),
845 "policy-controlled.jpeg", 845 "policy-controlled.jpeg",
846 ash::WALLPAPER_LAYOUT_CENTER_CROPPED, 846 ash::WALLPAPER_LAYOUT_CENTER_CROPPED,
847 User::POLICY, 847 User::POLICY,
(...skipping 684 matching lines...) Expand 10 before | Expand all | Expand 10 after
1532 logged_in_user->email(), 1532 logged_in_user->email(),
1533 logged_in_user->username_hash(), 1533 logged_in_user->username_hash(),
1534 weak_factory_.GetWeakPtr())); 1534 weak_factory_.GetWeakPtr()));
1535 } 1535 }
1536 1536
1537 void WallpaperManager::OnWallpaperDecoded( 1537 void WallpaperManager::OnWallpaperDecoded(
1538 const std::string& user_id, 1538 const std::string& user_id,
1539 ash::WallpaperLayout layout, 1539 ash::WallpaperLayout layout,
1540 bool update_wallpaper, 1540 bool update_wallpaper,
1541 MovableOnDestroyCallbackHolder on_finish, 1541 MovableOnDestroyCallbackHolder on_finish,
1542 const UserImage& user_image) { 1542 const user_manager::UserImage& user_image) {
1543 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 1543 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
1544 TRACE_EVENT_ASYNC_END0("ui", "LoadAndDecodeWallpaper", this); 1544 TRACE_EVENT_ASYNC_END0("ui", "LoadAndDecodeWallpaper", this);
1545 1545
1546 // If decoded wallpaper is empty, we have probably failed to decode the file. 1546 // If decoded wallpaper is empty, we have probably failed to decode the file.
1547 // Use default wallpaper in this case. 1547 // Use default wallpaper in this case.
1548 if (user_image.image().isNull()) { 1548 if (user_image.image().isNull()) {
1549 // Updates user pref to default wallpaper. 1549 // Updates user pref to default wallpaper.
1550 WallpaperInfo info = { 1550 WallpaperInfo info = {
1551 "", 1551 "",
1552 ash::WALLPAPER_LAYOUT_CENTER_CROPPED, 1552 ash::WALLPAPER_LAYOUT_CENTER_CROPPED,
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
1650 SetDefaultWallpaperPath(rescaled_files->path_rescaled_small(), 1650 SetDefaultWallpaperPath(rescaled_files->path_rescaled_small(),
1651 scoped_ptr<gfx::ImageSkia>().Pass(), 1651 scoped_ptr<gfx::ImageSkia>().Pass(),
1652 rescaled_files->path_rescaled_large(), 1652 rescaled_files->path_rescaled_large(),
1653 scoped_ptr<gfx::ImageSkia>().Pass()); 1653 scoped_ptr<gfx::ImageSkia>().Pass());
1654 } 1654 }
1655 } 1655 }
1656 1656
1657 void WallpaperManager::OnCustomizedDefaultWallpaperDecoded( 1657 void WallpaperManager::OnCustomizedDefaultWallpaperDecoded(
1658 const GURL& wallpaper_url, 1658 const GURL& wallpaper_url,
1659 scoped_ptr<CustomizedWallpaperRescaledFiles> rescaled_files, 1659 scoped_ptr<CustomizedWallpaperRescaledFiles> rescaled_files,
1660 const UserImage& wallpaper) { 1660 const user_manager::UserImage& wallpaper) {
1661 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 1661 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
1662 1662
1663 // If decoded wallpaper is empty, we have probably failed to decode the file. 1663 // If decoded wallpaper is empty, we have probably failed to decode the file.
1664 if (wallpaper.image().isNull()) { 1664 if (wallpaper.image().isNull()) {
1665 LOG(WARNING) << "Failed to decode customized wallpaper."; 1665 LOG(WARNING) << "Failed to decode customized wallpaper.";
1666 return; 1666 return;
1667 } 1667 }
1668 1668
1669 wallpaper.image().EnsureRepsForSupportedScales(); 1669 wallpaper.image().EnsureRepsForSupportedScales();
1670 scoped_ptr<gfx::ImageSkia> deep_copy(wallpaper.image().DeepCopy()); 1670 scoped_ptr<gfx::ImageSkia> deep_copy(wallpaper.image().DeepCopy());
(...skipping 21 matching lines...) Expand all
1692 base::Passed(large_wallpaper_image.Pass())); 1692 base::Passed(large_wallpaper_image.Pass()));
1693 1693
1694 if (!task_runner_->PostTaskAndReply( 1694 if (!task_runner_->PostTaskAndReply(
1695 FROM_HERE, resize_closure, on_resized_closure)) { 1695 FROM_HERE, resize_closure, on_resized_closure)) {
1696 LOG(WARNING) << "Failed to start Customized Wallpaper resize."; 1696 LOG(WARNING) << "Failed to start Customized Wallpaper resize.";
1697 } 1697 }
1698 } 1698 }
1699 1699
1700 void WallpaperManager::ResizeCustomizedDefaultWallpaper( 1700 void WallpaperManager::ResizeCustomizedDefaultWallpaper(
1701 scoped_ptr<gfx::ImageSkia> image, 1701 scoped_ptr<gfx::ImageSkia> image,
1702 const UserImage::RawImage& raw_image, 1702 const user_manager::UserImage::RawImage& raw_image,
1703 const CustomizedWallpaperRescaledFiles* rescaled_files, 1703 const CustomizedWallpaperRescaledFiles* rescaled_files,
1704 bool* success, 1704 bool* success,
1705 gfx::ImageSkia* small_wallpaper_image, 1705 gfx::ImageSkia* small_wallpaper_image,
1706 gfx::ImageSkia* large_wallpaper_image) { 1706 gfx::ImageSkia* large_wallpaper_image) {
1707 *success = true; 1707 *success = true;
1708 1708
1709 *success &= ResizeAndSaveWallpaper(*image, 1709 *success &= ResizeAndSaveWallpaper(*image,
1710 rescaled_files->path_rescaled_small(), 1710 rescaled_files->path_rescaled_small(),
1711 ash::WALLPAPER_LAYOUT_STRETCH, 1711 ash::WALLPAPER_LAYOUT_STRETCH,
1712 kSmallWallpaperMaxWidth, 1712 kSmallWallpaperMaxWidth,
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
1821 guest_small_wallpaper_file_ = 1821 guest_small_wallpaper_file_ =
1822 command_line->GetSwitchValuePath(ash::switches::kAshGuestWallpaperSmall); 1822 command_line->GetSwitchValuePath(ash::switches::kAshGuestWallpaperSmall);
1823 guest_large_wallpaper_file_ = 1823 guest_large_wallpaper_file_ =
1824 command_line->GetSwitchValuePath(ash::switches::kAshGuestWallpaperLarge); 1824 command_line->GetSwitchValuePath(ash::switches::kAshGuestWallpaperLarge);
1825 default_wallpaper_image_.reset(); 1825 default_wallpaper_image_.reset();
1826 } 1826 }
1827 1827
1828 void WallpaperManager::OnDefaultWallpaperDecoded( 1828 void WallpaperManager::OnDefaultWallpaperDecoded(
1829 const base::FilePath& path, 1829 const base::FilePath& path,
1830 const ash::WallpaperLayout layout, 1830 const ash::WallpaperLayout layout,
1831 scoped_ptr<chromeos::UserImage>* result_out, 1831 scoped_ptr<user_manager::UserImage>* result_out,
1832 MovableOnDestroyCallbackHolder on_finish, 1832 MovableOnDestroyCallbackHolder on_finish,
1833 const UserImage& user_image) { 1833 const user_manager::UserImage& user_image) {
1834 result_out->reset(new UserImage(user_image)); 1834 result_out->reset(new user_manager::UserImage(user_image));
1835 ash::Shell::GetInstance()->desktop_background_controller()->SetWallpaperImage( 1835 ash::Shell::GetInstance()->desktop_background_controller()->SetWallpaperImage(
1836 user_image.image(), layout); 1836 user_image.image(), layout);
1837 } 1837 }
1838 1838
1839 void WallpaperManager::StartLoadAndSetDefaultWallpaper( 1839 void WallpaperManager::StartLoadAndSetDefaultWallpaper(
1840 const base::FilePath& path, 1840 const base::FilePath& path,
1841 const ash::WallpaperLayout layout, 1841 const ash::WallpaperLayout layout,
1842 MovableOnDestroyCallbackHolder on_finish, 1842 MovableOnDestroyCallbackHolder on_finish,
1843 scoped_ptr<chromeos::UserImage>* result_out) { 1843 scoped_ptr<user_manager::UserImage>* result_out) {
1844 wallpaper_loader_->Start( 1844 wallpaper_loader_->Start(
1845 path.value(), 1845 path.value(),
1846 0, // Do not crop. 1846 0, // Do not crop.
1847 base::Bind(&WallpaperManager::OnDefaultWallpaperDecoded, 1847 base::Bind(&WallpaperManager::OnDefaultWallpaperDecoded,
1848 weak_factory_.GetWeakPtr(), 1848 weak_factory_.GetWeakPtr(),
1849 path, 1849 path,
1850 layout, 1850 layout,
1851 base::Unretained(result_out), 1851 base::Unretained(result_out),
1852 base::Passed(on_finish.Pass()))); 1852 base::Passed(on_finish.Pass())));
1853 } 1853 }
(...skipping 22 matching lines...) Expand all
1876 // as a placeholder only. 1876 // as a placeholder only.
1877 const bool need_update_screen = 1877 const bool need_update_screen =
1878 default_wallpaper_image_.get() && 1878 default_wallpaper_image_.get() &&
1879 dbc->WallpaperIsAlreadyLoaded(default_wallpaper_image_->image(), 1879 dbc->WallpaperIsAlreadyLoaded(default_wallpaper_image_->image(),
1880 false /* compare_layouts */, 1880 false /* compare_layouts */,
1881 ash::WALLPAPER_LAYOUT_CENTER); 1881 ash::WALLPAPER_LAYOUT_CENTER);
1882 1882
1883 default_wallpaper_image_.reset(); 1883 default_wallpaper_image_.reset();
1884 if (GetAppropriateResolution() == WALLPAPER_RESOLUTION_SMALL) { 1884 if (GetAppropriateResolution() == WALLPAPER_RESOLUTION_SMALL) {
1885 if (small_wallpaper_image) { 1885 if (small_wallpaper_image) {
1886 default_wallpaper_image_.reset(new UserImage(*small_wallpaper_image)); 1886 default_wallpaper_image_.reset(
1887 new user_manager::UserImage(*small_wallpaper_image));
1887 default_wallpaper_image_->set_file_path( 1888 default_wallpaper_image_->set_file_path(
1888 default_small_wallpaper_file.value()); 1889 default_small_wallpaper_file.value());
1889 } 1890 }
1890 } else { 1891 } else {
1891 if (large_wallpaper_image) { 1892 if (large_wallpaper_image) {
1892 default_wallpaper_image_.reset(new UserImage(*large_wallpaper_image)); 1893 default_wallpaper_image_.reset(
1894 new user_manager::UserImage(*large_wallpaper_image));
1893 default_wallpaper_image_->set_file_path( 1895 default_wallpaper_image_->set_file_path(
1894 default_large_wallpaper_file.value()); 1896 default_large_wallpaper_file.value());
1895 } 1897 }
1896 } 1898 }
1897 1899
1898 if (need_update_screen) { 1900 if (need_update_screen) {
1899 DoSetDefaultWallpaper(std::string(), 1901 DoSetDefaultWallpaper(std::string(),
1900 MovableOnDestroyCallbackHolder().Pass()); 1902 MovableOnDestroyCallbackHolder().Pass());
1901 } 1903 }
1902 } 1904 }
1903 1905
1904 void WallpaperManager::CreateSolidDefaultWallpaper() { 1906 void WallpaperManager::CreateSolidDefaultWallpaper() {
1905 loaded_wallpapers_++; 1907 loaded_wallpapers_++;
1906 SkBitmap bitmap; 1908 SkBitmap bitmap;
1907 bitmap.allocN32Pixels(1, 1); 1909 bitmap.allocN32Pixels(1, 1);
1908 bitmap.eraseColor(kDefaultWallpaperColor); 1910 bitmap.eraseColor(kDefaultWallpaperColor);
1909 const gfx::ImageSkia image = gfx::ImageSkia::CreateFrom1xBitmap(bitmap); 1911 const gfx::ImageSkia image = gfx::ImageSkia::CreateFrom1xBitmap(bitmap);
1910 default_wallpaper_image_.reset(new UserImage(image)); 1912 default_wallpaper_image_.reset(new user_manager::UserImage(image));
1911 } 1913 }
1912 1914
1913 } // namespace chromeos 1915 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698