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

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

Issue 1036723003: favor DCHECK_CURRENTLY_ON for better logs in chrome/browser/chromeos/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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
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 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 const base::FilePath& wallpaper_path, 185 const base::FilePath& wallpaper_path,
186 const bool is_default) { 186 const bool is_default) {
187 user_wallpaper_ = image; 187 user_wallpaper_ = image;
188 info_ = info; 188 info_ = info;
189 wallpaper_path_ = wallpaper_path; 189 wallpaper_path_ = wallpaper_path;
190 default_ = is_default; 190 default_ = is_default;
191 } 191 }
192 192
193 // This method is usually triggered by timer to actually load request. 193 // This method is usually triggered by timer to actually load request.
194 void ProcessRequest() { 194 void ProcessRequest() {
195 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 195 DCHECK_CURRENTLY_ON(BrowserThread::UI);
196 196
197 timer.Stop(); // Erase reference to self. 197 timer.Stop(); // Erase reference to self.
198 198
199 WallpaperManager* manager = WallpaperManager::Get(); 199 WallpaperManager* manager = WallpaperManager::Get();
200 if (manager->pending_inactive_ == this) 200 if (manager->pending_inactive_ == this)
201 manager->pending_inactive_ = NULL; 201 manager->pending_inactive_ = NULL;
202 202
203 started_load_at_ = base::Time::Now(); 203 started_load_at_ = base::Time::Now();
204 204
205 if (default_) { 205 if (default_) {
(...skipping 18 matching lines...) Expand all
224 // PendingWallpaper was created and never initialized? 224 // PendingWallpaper was created and never initialized?
225 NOTREACHED(); 225 NOTREACHED();
226 // Error. Do not record time. 226 // Error. Do not record time.
227 started_load_at_ = base::Time(); 227 started_load_at_ = base::Time();
228 } 228 }
229 on_finish_.reset(); 229 on_finish_.reset();
230 } 230 }
231 231
232 // This method is called by callback, when load request is finished. 232 // This method is called by callback, when load request is finished.
233 void OnWallpaperSet() { 233 void OnWallpaperSet() {
234 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 234 DCHECK_CURRENTLY_ON(BrowserThread::UI);
235 235
236 // The only known case for this check to fail is global destruction during 236 // The only known case for this check to fail is global destruction during
237 // wallpaper load. It should never happen. 237 // wallpaper load. It should never happen.
238 if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) 238 if (!BrowserThread::CurrentlyOn(BrowserThread::UI))
239 return; // We are in a process of global destruction. 239 return; // We are in a process of global destruction.
240 240
241 timer.Stop(); // Erase reference to self. 241 timer.Stop(); // Erase reference to self.
242 242
243 WallpaperManager* manager = WallpaperManager::Get(); 243 WallpaperManager* manager = WallpaperManager::Get();
244 if (!started_load_at_.is_null()) { 244 if (!started_load_at_.is_null()) {
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 296
297 // static 297 // static
298 void WallpaperManager::Shutdown() { 298 void WallpaperManager::Shutdown() {
299 CHECK(wallpaper_manager); 299 CHECK(wallpaper_manager);
300 delete wallpaper_manager; 300 delete wallpaper_manager;
301 wallpaper_manager = nullptr; 301 wallpaper_manager = nullptr;
302 } 302 }
303 303
304 WallpaperManager::WallpaperResolution 304 WallpaperManager::WallpaperResolution
305 WallpaperManager::GetAppropriateResolution() { 305 WallpaperManager::GetAppropriateResolution() {
306 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 306 DCHECK_CURRENTLY_ON(BrowserThread::UI);
307 gfx::Size size = 307 gfx::Size size =
308 ash::DesktopBackgroundController::GetMaxDisplaySizeInNative(); 308 ash::DesktopBackgroundController::GetMaxDisplaySizeInNative();
309 return (size.width() > wallpaper::kSmallWallpaperMaxWidth || 309 return (size.width() > wallpaper::kSmallWallpaperMaxWidth ||
310 size.height() > wallpaper::kSmallWallpaperMaxHeight) 310 size.height() > wallpaper::kSmallWallpaperMaxHeight)
311 ? WALLPAPER_RESOLUTION_LARGE 311 ? WALLPAPER_RESOLUTION_LARGE
312 : WALLPAPER_RESOLUTION_SMALL; 312 : WALLPAPER_RESOLUTION_SMALL;
313 } 313 }
314 314
315 void WallpaperManager::AddObservers() { 315 void WallpaperManager::AddObservers() {
316 show_user_name_on_signin_subscription_ = 316 show_user_name_on_signin_subscription_ =
(...skipping 15 matching lines...) Expand all
332 UMA_HISTOGRAM_ENUMERATION("Ash.Wallpaper.Type", info.type, 332 UMA_HISTOGRAM_ENUMERATION("Ash.Wallpaper.Type", info.type,
333 user_manager::User::WALLPAPER_TYPE_COUNT); 333 user_manager::User::WALLPAPER_TYPE_COUNT);
334 if (info == current_user_wallpaper_info_) 334 if (info == current_user_wallpaper_info_)
335 return; 335 return;
336 } 336 }
337 SetUserWallpaperNow( 337 SetUserWallpaperNow(
338 user_manager::UserManager::Get()->GetLoggedInUser()->email()); 338 user_manager::UserManager::Get()->GetLoggedInUser()->email());
339 } 339 }
340 340
341 void WallpaperManager::InitializeWallpaper() { 341 void WallpaperManager::InitializeWallpaper() {
342 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 342 DCHECK_CURRENTLY_ON(BrowserThread::UI);
343 user_manager::UserManager* user_manager = user_manager::UserManager::Get(); 343 user_manager::UserManager* user_manager = user_manager::UserManager::Get();
344 344
345 // Apply device customization. 345 // Apply device customization.
346 if (ShouldUseCustomizedDefaultWallpaper()) { 346 if (ShouldUseCustomizedDefaultWallpaper()) {
347 SetDefaultWallpaperPath(GetCustomizedWallpaperDefaultRescaledFileName( 347 SetDefaultWallpaperPath(GetCustomizedWallpaperDefaultRescaledFileName(
348 wallpaper::kSmallWallpaperSuffix), 348 wallpaper::kSmallWallpaperSuffix),
349 scoped_ptr<gfx::ImageSkia>().Pass(), 349 scoped_ptr<gfx::ImageSkia>().Pass(),
350 GetCustomizedWallpaperDefaultRescaledFileName( 350 GetCustomizedWallpaperDefaultRescaledFileName(
351 wallpaper::kLargeWallpaperSuffix), 351 wallpaper::kLargeWallpaperSuffix),
352 scoped_ptr<gfx::ImageSkia>().Pass()); 352 scoped_ptr<gfx::ImageSkia>().Pass());
(...skipping 24 matching lines...) Expand all
377 else 377 else
378 InitializeRegisteredDeviceWallpaper(); 378 InitializeRegisteredDeviceWallpaper();
379 return; 379 return;
380 } 380 }
381 SetUserWallpaperDelayed(user_manager->GetLoggedInUser()->email()); 381 SetUserWallpaperDelayed(user_manager->GetLoggedInUser()->email());
382 } 382 }
383 383
384 void WallpaperManager::Observe(int type, 384 void WallpaperManager::Observe(int type,
385 const content::NotificationSource& source, 385 const content::NotificationSource& source,
386 const content::NotificationDetails& details) { 386 const content::NotificationDetails& details) {
387 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 387 DCHECK_CURRENTLY_ON(BrowserThread::UI);
388 switch (type) { 388 switch (type) {
389 case chrome::NOTIFICATION_LOGIN_USER_CHANGED: { 389 case chrome::NOTIFICATION_LOGIN_USER_CHANGED: {
390 ClearDisposableWallpaperCache(); 390 ClearDisposableWallpaperCache();
391 BrowserThread::PostDelayedTask( 391 BrowserThread::PostDelayedTask(
392 BrowserThread::UI, 392 BrowserThread::UI,
393 FROM_HERE, 393 FROM_HERE,
394 base::Bind(&WallpaperManager::MoveLoggedInUserCustomWallpaper, 394 base::Bind(&WallpaperManager::MoveLoggedInUserCustomWallpaper,
395 weak_factory_.GetWeakPtr()), 395 weak_factory_.GetWeakPtr()),
396 base::TimeDelta::FromSeconds(kMoveCustomWallpaperDelaySeconds)); 396 base::TimeDelta::FromSeconds(kMoveCustomWallpaperDelaySeconds));
397 break; 397 break;
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
450 } 450 }
451 451
452 void WallpaperManager::SetCustomWallpaper( 452 void WallpaperManager::SetCustomWallpaper(
453 const std::string& user_id, 453 const std::string& user_id,
454 const std::string& user_id_hash, 454 const std::string& user_id_hash,
455 const std::string& file, 455 const std::string& file,
456 wallpaper::WallpaperLayout layout, 456 wallpaper::WallpaperLayout layout,
457 user_manager::User::WallpaperType type, 457 user_manager::User::WallpaperType type,
458 const gfx::ImageSkia& image, 458 const gfx::ImageSkia& image,
459 bool update_wallpaper) { 459 bool update_wallpaper) {
460 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 460 DCHECK_CURRENTLY_ON(BrowserThread::UI);
461 461
462 // There is no visible background in kiosk mode. 462 // There is no visible background in kiosk mode.
463 if (user_manager::UserManager::Get()->IsLoggedInAsKioskApp()) 463 if (user_manager::UserManager::Get()->IsLoggedInAsKioskApp())
464 return; 464 return;
465 465
466 // Don't allow custom wallpapers while policy is in effect. 466 // Don't allow custom wallpapers while policy is in effect.
467 if (type != user_manager::User::POLICY && IsPolicyControlled(user_id)) 467 if (type != user_manager::User::POLICY && IsPolicyControlled(user_id))
468 return; 468 return;
469 469
470 base::FilePath wallpaper_path = GetCustomWallpaperPath( 470 base::FilePath wallpaper_path = GetCustomWallpaperPath(
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
589 default_wallpaper_image_->image().height() == 1) 589 default_wallpaper_image_->image().height() == 1)
590 layout = wallpaper::WALLPAPER_LAYOUT_STRETCH; 590 layout = wallpaper::WALLPAPER_LAYOUT_STRETCH;
591 591
592 ash::Shell::GetInstance()->desktop_background_controller()->SetWallpaperImage( 592 ash::Shell::GetInstance()->desktop_background_controller()->SetWallpaperImage(
593 default_wallpaper_image_->image(), layout); 593 default_wallpaper_image_->image(), layout);
594 } 594 }
595 595
596 void WallpaperManager::SetUserWallpaperInfo(const std::string& user_id, 596 void WallpaperManager::SetUserWallpaperInfo(const std::string& user_id,
597 const WallpaperInfo& info, 597 const WallpaperInfo& info,
598 bool is_persistent) { 598 bool is_persistent) {
599 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 599 DCHECK_CURRENTLY_ON(BrowserThread::UI);
600 current_user_wallpaper_info_ = info; 600 current_user_wallpaper_info_ = info;
601 if (!is_persistent) 601 if (!is_persistent)
602 return; 602 return;
603 603
604 PrefService* local_state = g_browser_process->local_state(); 604 PrefService* local_state = g_browser_process->local_state();
605 DictionaryPrefUpdate wallpaper_update(local_state, 605 DictionaryPrefUpdate wallpaper_update(local_state,
606 wallpaper::kUsersWallpaperInfo); 606 wallpaper::kUsersWallpaperInfo);
607 607
608 base::DictionaryValue* wallpaper_info_dict = new base::DictionaryValue(); 608 base::DictionaryValue* wallpaper_info_dict = new base::DictionaryValue();
609 wallpaper_info_dict->SetString(kNewWallpaperDateNodeName, 609 wallpaper_info_dict->SetString(kNewWallpaperDateNodeName,
610 base::Int64ToString(info.date.ToInternalValue())); 610 base::Int64ToString(info.date.ToInternalValue()));
611 wallpaper_info_dict->SetString(kNewWallpaperLocationNodeName, info.location); 611 wallpaper_info_dict->SetString(kNewWallpaperLocationNodeName, info.location);
612 wallpaper_info_dict->SetInteger(kNewWallpaperLayoutNodeName, info.layout); 612 wallpaper_info_dict->SetInteger(kNewWallpaperLayoutNodeName, info.layout);
613 wallpaper_info_dict->SetInteger(kNewWallpaperTypeNodeName, info.type); 613 wallpaper_info_dict->SetInteger(kNewWallpaperTypeNodeName, info.type);
614 wallpaper_update->SetWithoutPathExpansion(user_id, wallpaper_info_dict); 614 wallpaper_update->SetWithoutPathExpansion(user_id, wallpaper_info_dict);
615 } 615 }
616 616
617 void WallpaperManager::ScheduleSetUserWallpaper(const std::string& user_id, 617 void WallpaperManager::ScheduleSetUserWallpaper(const std::string& user_id,
618 bool delayed) { 618 bool delayed) {
619 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 619 DCHECK_CURRENTLY_ON(BrowserThread::UI);
620 // Some unit tests come here without a UserManager or without a pref system.q 620 // Some unit tests come here without a UserManager or without a pref system.q
621 if (!user_manager::UserManager::IsInitialized() || 621 if (!user_manager::UserManager::IsInitialized() ||
622 !g_browser_process->local_state()) { 622 !g_browser_process->local_state()) {
623 return; 623 return;
624 } 624 }
625 625
626 // There is no visible background in kiosk mode. 626 // There is no visible background in kiosk mode.
627 if (user_manager::UserManager::Get()->IsLoggedInAsKioskApp()) 627 if (user_manager::UserManager::Get()->IsLoggedInAsKioskApp())
628 return; 628 return;
629 // Guest user, regular user in ephemeral mode, or kiosk app. 629 // Guest user, regular user in ephemeral mode, or kiosk app.
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
811 int index = public_session_user_index != -1 ? public_session_user_index : 0; 811 int index = public_session_user_index != -1 ? public_session_user_index : 0;
812 // Normal boot, load user wallpaper. 812 // Normal boot, load user wallpaper.
813 // If normal boot animation is disabled wallpaper would be set 813 // If normal boot animation is disabled wallpaper would be set
814 // asynchronously once user pods are loaded. 814 // asynchronously once user pods are loaded.
815 SetUserWallpaperDelayed(users[index]->email()); 815 SetUserWallpaperDelayed(users[index]->email());
816 } 816 }
817 } 817 }
818 818
819 bool WallpaperManager::GetUserWallpaperInfo(const std::string& user_id, 819 bool WallpaperManager::GetUserWallpaperInfo(const std::string& user_id,
820 WallpaperInfo* info) const { 820 WallpaperInfo* info) const {
821 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 821 DCHECK_CURRENTLY_ON(BrowserThread::UI);
822 822
823 if (user_manager::UserManager::Get()->IsUserNonCryptohomeDataEphemeral( 823 if (user_manager::UserManager::Get()->IsUserNonCryptohomeDataEphemeral(
824 user_id)) { 824 user_id)) {
825 // Default to the values cached in memory. 825 // Default to the values cached in memory.
826 *info = current_user_wallpaper_info_; 826 *info = current_user_wallpaper_info_;
827 827
828 // Ephemeral users do not save anything to local state. But we have got 828 // Ephemeral users do not save anything to local state. But we have got
829 // wallpaper info from memory. Returns true. 829 // wallpaper info from memory. Returns true.
830 return true; 830 return true;
831 } 831 }
(...skipping 28 matching lines...) Expand all
860 info->date = base::Time::FromInternalValue(date_val); 860 info->date = base::Time::FromInternalValue(date_val);
861 return true; 861 return true;
862 } 862 }
863 863
864 void WallpaperManager::OnWallpaperDecoded( 864 void WallpaperManager::OnWallpaperDecoded(
865 const std::string& user_id, 865 const std::string& user_id,
866 wallpaper::WallpaperLayout layout, 866 wallpaper::WallpaperLayout layout,
867 bool update_wallpaper, 867 bool update_wallpaper,
868 MovableOnDestroyCallbackHolder on_finish, 868 MovableOnDestroyCallbackHolder on_finish,
869 const user_manager::UserImage& user_image) { 869 const user_manager::UserImage& user_image) {
870 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 870 DCHECK_CURRENTLY_ON(BrowserThread::UI);
871 TRACE_EVENT_ASYNC_END0("ui", "LoadAndDecodeWallpaper", this); 871 TRACE_EVENT_ASYNC_END0("ui", "LoadAndDecodeWallpaper", this);
872 872
873 // If decoded wallpaper is empty, we have probably failed to decode the file. 873 // If decoded wallpaper is empty, we have probably failed to decode the file.
874 // Use default wallpaper in this case. 874 // Use default wallpaper in this case.
875 if (user_image.image().isNull()) { 875 if (user_image.image().isNull()) {
876 // Updates user pref to default wallpaper. 876 // Updates user pref to default wallpaper.
877 WallpaperInfo info = {"", 877 WallpaperInfo info = {"",
878 wallpaper::WALLPAPER_LAYOUT_CENTER_CROPPED, 878 wallpaper::WALLPAPER_LAYOUT_CENTER_CROPPED,
879 user_manager::User::DEFAULT, 879 user_manager::User::DEFAULT,
880 base::Time::Now().LocalMidnight()}; 880 base::Time::Now().LocalMidnight()};
(...skipping 12 matching lines...) Expand all
893 ->desktop_background_controller() 893 ->desktop_background_controller()
894 ->SetWallpaperImage(user_image.image(), layout); 894 ->SetWallpaperImage(user_image.image(), layout);
895 } 895 }
896 } 896 }
897 897
898 void WallpaperManager::StartLoad(const std::string& user_id, 898 void WallpaperManager::StartLoad(const std::string& user_id,
899 const WallpaperInfo& info, 899 const WallpaperInfo& info,
900 bool update_wallpaper, 900 bool update_wallpaper,
901 const base::FilePath& wallpaper_path, 901 const base::FilePath& wallpaper_path,
902 MovableOnDestroyCallbackHolder on_finish) { 902 MovableOnDestroyCallbackHolder on_finish) {
903 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 903 DCHECK_CURRENTLY_ON(BrowserThread::UI);
904 TRACE_EVENT_ASYNC_BEGIN0("ui", "LoadAndDecodeWallpaper", this); 904 TRACE_EVENT_ASYNC_BEGIN0("ui", "LoadAndDecodeWallpaper", this);
905 if (update_wallpaper) { 905 if (update_wallpaper) {
906 // We are now about to change the wallpaper, so update the path and remove 906 // We are now about to change the wallpaper, so update the path and remove
907 // the existing image. 907 // the existing image.
908 wallpaper_cache_[user_id] = CustomWallpaperElement(wallpaper_path, 908 wallpaper_cache_[user_id] = CustomWallpaperElement(wallpaper_path,
909 gfx::ImageSkia()); 909 gfx::ImageSkia());
910 } 910 }
911 wallpaper_loader_->Start(wallpaper_path.value(), 911 wallpaper_loader_->Start(wallpaper_path.value(),
912 0, // Do not crop. 912 0, // Do not crop.
913 base::Bind(&WallpaperManager::OnWallpaperDecoded, 913 base::Bind(&WallpaperManager::OnWallpaperDecoded,
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
945 scoped_ptr<gfx::ImageSkia>().Pass()); 945 scoped_ptr<gfx::ImageSkia>().Pass());
946 } 946 }
947 } 947 }
948 948
949 void WallpaperManager::OnCustomizedDefaultWallpaperResized( 949 void WallpaperManager::OnCustomizedDefaultWallpaperResized(
950 const GURL& wallpaper_url, 950 const GURL& wallpaper_url,
951 scoped_ptr<CustomizedWallpaperRescaledFiles> rescaled_files, 951 scoped_ptr<CustomizedWallpaperRescaledFiles> rescaled_files,
952 scoped_ptr<bool> success, 952 scoped_ptr<bool> success,
953 scoped_ptr<gfx::ImageSkia> small_wallpaper_image, 953 scoped_ptr<gfx::ImageSkia> small_wallpaper_image,
954 scoped_ptr<gfx::ImageSkia> large_wallpaper_image) { 954 scoped_ptr<gfx::ImageSkia> large_wallpaper_image) {
955 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 955 DCHECK_CURRENTLY_ON(BrowserThread::UI);
956 DCHECK(rescaled_files); 956 DCHECK(rescaled_files);
957 DCHECK(success.get()); 957 DCHECK(success.get());
958 if (!*success) { 958 if (!*success) {
959 LOG(WARNING) << "Failed to save resized customized default wallpaper"; 959 LOG(WARNING) << "Failed to save resized customized default wallpaper";
960 return; 960 return;
961 } 961 }
962 PrefService* pref_service = g_browser_process->local_state(); 962 PrefService* pref_service = g_browser_process->local_state();
963 pref_service->SetString(prefs::kCustomizationDefaultWallpaperURL, 963 pref_service->SetString(prefs::kCustomizationDefaultWallpaperURL,
964 wallpaper_url.spec()); 964 wallpaper_url.spec());
965 SetDefaultWallpaperPath(rescaled_files->path_rescaled_small(), 965 SetDefaultWallpaperPath(rescaled_files->path_rescaled_small(),
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
1043 } 1043 }
1044 } 1044 }
1045 1045
1046 if (need_update_screen) { 1046 if (need_update_screen) {
1047 DoSetDefaultWallpaper(std::string(), 1047 DoSetDefaultWallpaper(std::string(),
1048 MovableOnDestroyCallbackHolder().Pass()); 1048 MovableOnDestroyCallbackHolder().Pass());
1049 } 1049 }
1050 } 1050 }
1051 1051
1052 } // namespace chromeos 1052 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698