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 "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h" | 5 #include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 #include <numeric> | 8 #include <numeric> |
9 #include <utility> | 9 #include <utility> |
10 #include <vector> | 10 #include <vector> |
11 | 11 |
12 #include "ash/common/ash_constants.h" | 12 #include "ash/common/ash_constants.h" |
13 #include "ash/common/ash_switches.h" | 13 #include "ash/common/ash_switches.h" |
| 14 #include "ash/common/wallpaper/wallpaper_controller.h" |
| 15 #include "ash/common/wm_shell.h" |
14 #include "ash/public/interfaces/wallpaper.mojom.h" | 16 #include "ash/public/interfaces/wallpaper.mojom.h" |
15 #include "ash/shell.h" | |
16 #include "ash/wallpaper/wallpaper_controller.h" | |
17 #include "base/bind.h" | 17 #include "base/bind.h" |
18 #include "base/bind_helpers.h" | 18 #include "base/bind_helpers.h" |
19 #include "base/command_line.h" | 19 #include "base/command_line.h" |
20 #include "base/files/file_enumerator.h" | 20 #include "base/files/file_enumerator.h" |
21 #include "base/files/file_path.h" | 21 #include "base/files/file_path.h" |
22 #include "base/files/file_util.h" | 22 #include "base/files/file_util.h" |
23 #include "base/logging.h" | 23 #include "base/logging.h" |
24 #include "base/macros.h" | 24 #include "base/macros.h" |
25 #include "base/metrics/histogram_macros.h" | 25 #include "base/metrics/histogram_macros.h" |
26 #include "base/path_service.h" | 26 #include "base/path_service.h" |
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 if (chrome::IsRunningInMash()) { | 213 if (chrome::IsRunningInMash()) { |
214 shell::Connector* connector = | 214 shell::Connector* connector = |
215 content::MojoShellConnection::GetForProcess()->GetConnector(); | 215 content::MojoShellConnection::GetForProcess()->GetConnector(); |
216 ash::mojom::WallpaperControllerPtr wallpaper_controller; | 216 ash::mojom::WallpaperControllerPtr wallpaper_controller; |
217 connector->ConnectToInterface("mojo:ash", &wallpaper_controller); | 217 connector->ConnectToInterface("mojo:ash", &wallpaper_controller); |
218 wallpaper_controller->SetWallpaper(*image.bitmap(), | 218 wallpaper_controller->SetWallpaper(*image.bitmap(), |
219 WallpaperLayoutToMojo(layout)); | 219 WallpaperLayoutToMojo(layout)); |
220 return; | 220 return; |
221 } | 221 } |
222 // Avoid loading unnecessary wallpapers in tests without a shell instance. | 222 // Avoid loading unnecessary wallpapers in tests without a shell instance. |
223 if (ash::Shell::HasInstance()) { | 223 if (ash::WmShell::HasInstance()) { |
224 ash::Shell::GetInstance()->wallpaper_controller()->SetWallpaperImage( | 224 ash::WmShell::Get()->wallpaper_controller()->SetWallpaperImage(image, |
225 image, layout); | 225 layout); |
226 } | 226 } |
227 } | 227 } |
228 | 228 |
229 } // namespace | 229 } // namespace |
230 | 230 |
231 // This is "wallpaper either scheduled to load, or loading right now". | 231 // This is "wallpaper either scheduled to load, or loading right now". |
232 // | 232 // |
233 // While enqueued, it defines moment in the future, when it will be loaded. | 233 // While enqueued, it defines moment in the future, when it will be loaded. |
234 // Enqueued but not started request might be updated by subsequent load | 234 // Enqueued but not started request might be updated by subsequent load |
235 // request. Therefore it's created empty, and updated being enqueued. | 235 // request. Therefore it's created empty, and updated being enqueued. |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
416 CrosSettings::Get()->AddSettingsObserver( | 416 CrosSettings::Get()->AddSettingsObserver( |
417 kAccountsPrefShowUserNamesOnSignIn, | 417 kAccountsPrefShowUserNamesOnSignIn, |
418 base::Bind(&WallpaperManager::InitializeRegisteredDeviceWallpaper, | 418 base::Bind(&WallpaperManager::InitializeRegisteredDeviceWallpaper, |
419 weak_factory_.GetWeakPtr())); | 419 weak_factory_.GetWeakPtr())); |
420 } | 420 } |
421 | 421 |
422 void WallpaperManager::EnsureLoggedInUserWallpaperLoaded() { | 422 void WallpaperManager::EnsureLoggedInUserWallpaperLoaded() { |
423 // Some browser tests do not have a shell instance. As no wallpaper is needed | 423 // Some browser tests do not have a shell instance. As no wallpaper is needed |
424 // in these tests anyway, avoid loading one, preventing crashes and speeding | 424 // in these tests anyway, avoid loading one, preventing crashes and speeding |
425 // up the tests. | 425 // up the tests. |
426 if (!ash::Shell::HasInstance()) | 426 if (!ash::WmShell::HasInstance()) |
427 return; | 427 return; |
428 | 428 |
429 WallpaperInfo info; | 429 WallpaperInfo info; |
430 if (GetLoggedInUserWallpaperInfo(&info)) { | 430 if (GetLoggedInUserWallpaperInfo(&info)) { |
431 UMA_HISTOGRAM_ENUMERATION("Ash.Wallpaper.Type", info.type, | 431 UMA_HISTOGRAM_ENUMERATION("Ash.Wallpaper.Type", info.type, |
432 user_manager::User::WALLPAPER_TYPE_COUNT); | 432 user_manager::User::WALLPAPER_TYPE_COUNT); |
433 if (info == current_user_wallpaper_info_) | 433 if (info == current_user_wallpaper_info_) |
434 return; | 434 return; |
435 } | 435 } |
436 SetUserWallpaperNow( | 436 SetUserWallpaperNow( |
(...skipping 21 matching lines...) Expand all Loading... |
458 // used here to determine if current user is guest. | 458 // used here to determine if current user is guest. |
459 return; | 459 return; |
460 } | 460 } |
461 | 461 |
462 if (command_line->HasSwitch(::switches::kTestType)) | 462 if (command_line->HasSwitch(::switches::kTestType)) |
463 WizardController::SetZeroDelays(); | 463 WizardController::SetZeroDelays(); |
464 | 464 |
465 // Zero delays is also set in autotests. | 465 // Zero delays is also set in autotests. |
466 if (WizardController::IsZeroDelayEnabled()) { | 466 if (WizardController::IsZeroDelayEnabled()) { |
467 // Ensure tests have some sort of wallpaper. | 467 // Ensure tests have some sort of wallpaper. |
468 ash::Shell::GetInstance()->wallpaper_controller()->CreateEmptyWallpaper(); | 468 ash::WmShell::Get()->wallpaper_controller()->CreateEmptyWallpaper(); |
469 return; | 469 return; |
470 } | 470 } |
471 | 471 |
472 if (!user_manager->IsUserLoggedIn()) { | 472 if (!user_manager->IsUserLoggedIn()) { |
473 if (!StartupUtils::IsDeviceRegistered()) | 473 if (!StartupUtils::IsDeviceRegistered()) |
474 SetDefaultWallpaperDelayed(login::SignInAccountId()); | 474 SetDefaultWallpaperDelayed(login::SignInAccountId()); |
475 else | 475 else |
476 InitializeRegisteredDeviceWallpaper(); | 476 InitializeRegisteredDeviceWallpaper(); |
477 return; | 477 return; |
478 } | 478 } |
(...skipping 656 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1135 | 1135 |
1136 void WallpaperManager::SetDefaultWallpaperPath( | 1136 void WallpaperManager::SetDefaultWallpaperPath( |
1137 const base::FilePath& default_small_wallpaper_file, | 1137 const base::FilePath& default_small_wallpaper_file, |
1138 std::unique_ptr<gfx::ImageSkia> small_wallpaper_image, | 1138 std::unique_ptr<gfx::ImageSkia> small_wallpaper_image, |
1139 const base::FilePath& default_large_wallpaper_file, | 1139 const base::FilePath& default_large_wallpaper_file, |
1140 std::unique_ptr<gfx::ImageSkia> large_wallpaper_image) { | 1140 std::unique_ptr<gfx::ImageSkia> large_wallpaper_image) { |
1141 default_small_wallpaper_file_ = default_small_wallpaper_file; | 1141 default_small_wallpaper_file_ = default_small_wallpaper_file; |
1142 default_large_wallpaper_file_ = default_large_wallpaper_file; | 1142 default_large_wallpaper_file_ = default_large_wallpaper_file; |
1143 | 1143 |
1144 ash::WallpaperController* controller = | 1144 ash::WallpaperController* controller = |
1145 ash::Shell::GetInstance()->wallpaper_controller(); | 1145 ash::WmShell::Get()->wallpaper_controller(); |
1146 | 1146 |
1147 // |need_update_screen| is true if the previous default wallpaper is visible | 1147 // |need_update_screen| is true if the previous default wallpaper is visible |
1148 // now, so we need to update wallpaper on the screen. | 1148 // now, so we need to update wallpaper on the screen. |
1149 // | 1149 // |
1150 // Layout is ignored here, so wallpaper::WALLPAPER_LAYOUT_CENTER is used | 1150 // Layout is ignored here, so wallpaper::WALLPAPER_LAYOUT_CENTER is used |
1151 // as a placeholder only. | 1151 // as a placeholder only. |
1152 const bool need_update_screen = | 1152 const bool need_update_screen = |
1153 default_wallpaper_image_.get() && | 1153 default_wallpaper_image_.get() && |
1154 controller->WallpaperIsAlreadyLoaded(default_wallpaper_image_->image(), | 1154 controller->WallpaperIsAlreadyLoaded(default_wallpaper_image_->image(), |
1155 false /* compare_layouts */, | 1155 false /* compare_layouts */, |
(...skipping 25 matching lines...) Expand all Loading... |
1181 &stored_value)) { | 1181 &stored_value)) { |
1182 return wallpaper::WallpaperFilesId::FromString(stored_value); | 1182 return wallpaper::WallpaperFilesId::FromString(stored_value); |
1183 } | 1183 } |
1184 const std::string& old_id = account_id.GetUserEmail(); // Migrated | 1184 const std::string& old_id = account_id.GetUserEmail(); // Migrated |
1185 const wallpaper::WallpaperFilesId files_id = HashWallpaperFilesIdStr(old_id); | 1185 const wallpaper::WallpaperFilesId files_id = HashWallpaperFilesIdStr(old_id); |
1186 SetKnownUserWallpaperFilesId(account_id, files_id); | 1186 SetKnownUserWallpaperFilesId(account_id, files_id); |
1187 return files_id; | 1187 return files_id; |
1188 } | 1188 } |
1189 | 1189 |
1190 } // namespace chromeos | 1190 } // namespace chromeos |
OLD | NEW |