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/extensions/wallpaper_private_api.h" | 5 #include "chrome/browser/chromeos/extensions/wallpaper_private_api.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <memory> | 8 #include <memory> |
9 #include <set> | 9 #include <set> |
10 #include <string> | 10 #include <string> |
(...skipping 10 matching lines...) Expand all Loading... |
21 #include "base/command_line.h" | 21 #include "base/command_line.h" |
22 #include "base/files/file_enumerator.h" | 22 #include "base/files/file_enumerator.h" |
23 #include "base/files/file_util.h" | 23 #include "base/files/file_util.h" |
24 #include "base/macros.h" | 24 #include "base/macros.h" |
25 #include "base/memory/ptr_util.h" | 25 #include "base/memory/ptr_util.h" |
26 #include "base/memory/ref_counted_memory.h" | 26 #include "base/memory/ref_counted_memory.h" |
27 #include "base/metrics/histogram_macros.h" | 27 #include "base/metrics/histogram_macros.h" |
28 #include "base/path_service.h" | 28 #include "base/path_service.h" |
29 #include "base/strings/string_number_conversions.h" | 29 #include "base/strings/string_number_conversions.h" |
30 #include "base/strings/stringprintf.h" | 30 #include "base/strings/stringprintf.h" |
| 31 #include "base/threading/sequenced_worker_pool.h" |
31 #include "base/threading/worker_pool.h" | 32 #include "base/threading/worker_pool.h" |
32 #include "chrome/browser/browser_process.h" | 33 #include "chrome/browser/browser_process.h" |
33 #include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h" | 34 #include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h" |
34 #include "chrome/browser/chromeos/profiles/profile_helper.h" | 35 #include "chrome/browser/chromeos/profiles/profile_helper.h" |
35 #include "chrome/browser/profiles/profile.h" | 36 #include "chrome/browser/profiles/profile.h" |
36 #include "chrome/browser/sync/profile_sync_service_factory.h" | 37 #include "chrome/browser/sync/profile_sync_service_factory.h" |
37 #include "chrome/browser/ui/ash/ash_util.h" | 38 #include "chrome/browser/ui/ash/ash_util.h" |
38 #include "chrome/common/chrome_paths.h" | 39 #include "chrome/common/chrome_paths.h" |
39 #include "chrome/common/pref_names.h" | 40 #include "chrome/common/pref_names.h" |
40 #include "chrome/grit/generated_resources.h" | 41 #include "chrome/grit/generated_resources.h" |
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
399 &wallpaper_path)); | 400 &wallpaper_path)); |
400 fallback_path = wallpaper_path.Append(file_name); | 401 fallback_path = wallpaper_path.Append(file_name); |
401 if (params->layout != wallpaper_base::WALLPAPER_LAYOUT_STRETCH && | 402 if (params->layout != wallpaper_base::WALLPAPER_LAYOUT_STRETCH && |
402 resolution == chromeos::WallpaperManager::WALLPAPER_RESOLUTION_SMALL) { | 403 resolution == chromeos::WallpaperManager::WALLPAPER_RESOLUTION_SMALL) { |
403 file_name = base::FilePath(file_name) | 404 file_name = base::FilePath(file_name) |
404 .InsertBeforeExtension(wallpaper::kSmallWallpaperSuffix) | 405 .InsertBeforeExtension(wallpaper::kSmallWallpaperSuffix) |
405 .value(); | 406 .value(); |
406 } | 407 } |
407 wallpaper_path = wallpaper_path.Append(file_name); | 408 wallpaper_path = wallpaper_path.Append(file_name); |
408 | 409 |
409 sequence_token_ = BrowserThread::GetBlockingPool()->GetNamedSequenceToken( | |
410 wallpaper::kWallpaperSequenceTokenName); | |
411 scoped_refptr<base::SequencedTaskRunner> task_runner = | 410 scoped_refptr<base::SequencedTaskRunner> task_runner = |
412 BrowserThread::GetBlockingPool()-> | 411 BrowserThread::GetBlockingPool() |
413 GetSequencedTaskRunnerWithShutdownBehavior(sequence_token_, | 412 ->GetSequencedTaskRunnerWithShutdownBehavior( |
| 413 BrowserThread::GetBlockingPool()->GetNamedSequenceToken( |
| 414 wallpaper::kWallpaperSequenceTokenName), |
414 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); | 415 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); |
415 | 416 |
416 task_runner->PostTask(FROM_HERE, | 417 task_runner->PostTask(FROM_HERE, |
417 base::Bind( | 418 base::Bind( |
418 &WallpaperPrivateSetWallpaperIfExistsFunction:: | 419 &WallpaperPrivateSetWallpaperIfExistsFunction:: |
419 ReadFileAndInitiateStartDecode, | 420 ReadFileAndInitiateStartDecode, |
420 this, wallpaper_path, fallback_path)); | 421 this, wallpaper_path, fallback_path)); |
421 return true; | 422 return true; |
422 } | 423 } |
423 | 424 |
424 void WallpaperPrivateSetWallpaperIfExistsFunction:: | 425 void WallpaperPrivateSetWallpaperIfExistsFunction:: |
425 ReadFileAndInitiateStartDecode(const base::FilePath& file_path, | 426 ReadFileAndInitiateStartDecode(const base::FilePath& file_path, |
426 const base::FilePath& fallback_path) { | 427 const base::FilePath& fallback_path) { |
427 DCHECK(BrowserThread::GetBlockingPool()->IsRunningSequenceOnCurrentThread( | 428 wallpaper::AssertCalledOnWallpaperSequence(); |
428 sequence_token_)); | |
429 base::FilePath path = file_path; | 429 base::FilePath path = file_path; |
430 | 430 |
431 if (!base::PathExists(file_path)) | 431 if (!base::PathExists(file_path)) |
432 path = fallback_path; | 432 path = fallback_path; |
433 | 433 |
434 std::string data; | 434 std::string data; |
435 if (base::PathExists(path) && | 435 if (base::PathExists(path) && |
436 base::ReadFileToString(path, &data)) { | 436 base::ReadFileToString(path, &data)) { |
437 BrowserThread::PostTask( | 437 BrowserThread::PostTask( |
438 BrowserThread::UI, FROM_HERE, | 438 BrowserThread::UI, FROM_HERE, |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
505 | 505 |
506 return true; | 506 return true; |
507 } | 507 } |
508 | 508 |
509 void WallpaperPrivateSetWallpaperFunction::OnWallpaperDecoded( | 509 void WallpaperPrivateSetWallpaperFunction::OnWallpaperDecoded( |
510 const gfx::ImageSkia& image) { | 510 const gfx::ImageSkia& image) { |
511 wallpaper_ = image; | 511 wallpaper_ = image; |
512 // Set unsafe_wallpaper_decoder_ to null since the decoding already finished. | 512 // Set unsafe_wallpaper_decoder_ to null since the decoding already finished. |
513 unsafe_wallpaper_decoder_ = NULL; | 513 unsafe_wallpaper_decoder_ = NULL; |
514 | 514 |
515 sequence_token_ = BrowserThread::GetBlockingPool()->GetNamedSequenceToken( | |
516 wallpaper::kWallpaperSequenceTokenName); | |
517 scoped_refptr<base::SequencedTaskRunner> task_runner = | 515 scoped_refptr<base::SequencedTaskRunner> task_runner = |
518 BrowserThread::GetBlockingPool()-> | 516 BrowserThread::GetBlockingPool() |
519 GetSequencedTaskRunnerWithShutdownBehavior(sequence_token_, | 517 ->GetSequencedTaskRunnerWithShutdownBehavior( |
| 518 BrowserThread::GetBlockingPool()->GetNamedSequenceToken( |
| 519 wallpaper::kWallpaperSequenceTokenName), |
520 base::SequencedWorkerPool::BLOCK_SHUTDOWN); | 520 base::SequencedWorkerPool::BLOCK_SHUTDOWN); |
521 | 521 |
522 task_runner->PostTask(FROM_HERE, | 522 task_runner->PostTask(FROM_HERE, |
523 base::Bind(&WallpaperPrivateSetWallpaperFunction::SaveToFile, this)); | 523 base::Bind(&WallpaperPrivateSetWallpaperFunction::SaveToFile, this)); |
524 } | 524 } |
525 | 525 |
526 void WallpaperPrivateSetWallpaperFunction::SaveToFile() { | 526 void WallpaperPrivateSetWallpaperFunction::SaveToFile() { |
527 DCHECK(BrowserThread::GetBlockingPool()->IsRunningSequenceOnCurrentThread( | 527 wallpaper::AssertCalledOnWallpaperSequence(); |
528 sequence_token_)); | |
529 std::string file_name = GURL(params->url).ExtractFileName(); | 528 std::string file_name = GURL(params->url).ExtractFileName(); |
530 if (SaveData(chrome::DIR_CHROMEOS_WALLPAPERS, file_name, params->wallpaper)) { | 529 if (SaveData(chrome::DIR_CHROMEOS_WALLPAPERS, file_name, params->wallpaper)) { |
531 wallpaper_.EnsureRepsForSupportedScales(); | 530 wallpaper_.EnsureRepsForSupportedScales(); |
532 std::unique_ptr<gfx::ImageSkia> deep_copy(wallpaper_.DeepCopy()); | 531 std::unique_ptr<gfx::ImageSkia> deep_copy(wallpaper_.DeepCopy()); |
533 // ImageSkia is not RefCountedThreadSafe. Use a deep copied ImageSkia if | 532 // ImageSkia is not RefCountedThreadSafe. Use a deep copied ImageSkia if |
534 // post to another thread. | 533 // post to another thread. |
535 BrowserThread::PostTask( | 534 BrowserThread::PostTask( |
536 BrowserThread::UI, FROM_HERE, | 535 BrowserThread::UI, FROM_HERE, |
537 base::Bind(&WallpaperPrivateSetWallpaperFunction::SetDecodedWallpaper, | 536 base::Bind(&WallpaperPrivateSetWallpaperFunction::SetDecodedWallpaper, |
538 this, base::Passed(std::move(deep_copy)))); | 537 this, base::Passed(std::move(deep_copy)))); |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
645 } | 644 } |
646 | 645 |
647 void WallpaperPrivateSetCustomWallpaperFunction::OnWallpaperDecoded( | 646 void WallpaperPrivateSetCustomWallpaperFunction::OnWallpaperDecoded( |
648 const gfx::ImageSkia& image) { | 647 const gfx::ImageSkia& image) { |
649 chromeos::WallpaperManager* wallpaper_manager = | 648 chromeos::WallpaperManager* wallpaper_manager = |
650 chromeos::WallpaperManager::Get(); | 649 chromeos::WallpaperManager::Get(); |
651 base::FilePath thumbnail_path = wallpaper_manager->GetCustomWallpaperPath( | 650 base::FilePath thumbnail_path = wallpaper_manager->GetCustomWallpaperPath( |
652 wallpaper::kThumbnailWallpaperSubDir, wallpaper_files_id_, | 651 wallpaper::kThumbnailWallpaperSubDir, wallpaper_files_id_, |
653 params->file_name); | 652 params->file_name); |
654 | 653 |
655 sequence_token_ = BrowserThread::GetBlockingPool()->GetNamedSequenceToken( | |
656 wallpaper::kWallpaperSequenceTokenName); | |
657 scoped_refptr<base::SequencedTaskRunner> task_runner = | 654 scoped_refptr<base::SequencedTaskRunner> task_runner = |
658 BrowserThread::GetBlockingPool()-> | 655 BrowserThread::GetBlockingPool() |
659 GetSequencedTaskRunnerWithShutdownBehavior(sequence_token_, | 656 ->GetSequencedTaskRunnerWithShutdownBehavior( |
| 657 BrowserThread::GetBlockingPool()->GetNamedSequenceToken( |
| 658 wallpaper::kWallpaperSequenceTokenName), |
660 base::SequencedWorkerPool::BLOCK_SHUTDOWN); | 659 base::SequencedWorkerPool::BLOCK_SHUTDOWN); |
661 | 660 |
662 wallpaper::WallpaperLayout layout = wallpaper_api_util::GetLayoutEnum( | 661 wallpaper::WallpaperLayout layout = wallpaper_api_util::GetLayoutEnum( |
663 wallpaper_base::ToString(params->layout)); | 662 wallpaper_base::ToString(params->layout)); |
664 wallpaper_api_util::RecordCustomWallpaperLayout(layout); | 663 wallpaper_api_util::RecordCustomWallpaperLayout(layout); |
665 | 664 |
666 bool update_wallpaper = | 665 bool update_wallpaper = |
667 account_id_ == | 666 account_id_ == |
668 user_manager::UserManager::Get()->GetActiveUser()->GetAccountId(); | 667 user_manager::UserManager::Get()->GetActiveUser()->GetAccountId(); |
669 wallpaper_manager->SetCustomWallpaper( | 668 wallpaper_manager->SetCustomWallpaper( |
(...skipping 17 matching lines...) Expand all Loading... |
687 &WallpaperPrivateSetCustomWallpaperFunction::GenerateThumbnail, | 686 &WallpaperPrivateSetCustomWallpaperFunction::GenerateThumbnail, |
688 this, thumbnail_path, base::Passed(&deep_copy))); | 687 this, thumbnail_path, base::Passed(&deep_copy))); |
689 } else { | 688 } else { |
690 SendResponse(true); | 689 SendResponse(true); |
691 } | 690 } |
692 } | 691 } |
693 | 692 |
694 void WallpaperPrivateSetCustomWallpaperFunction::GenerateThumbnail( | 693 void WallpaperPrivateSetCustomWallpaperFunction::GenerateThumbnail( |
695 const base::FilePath& thumbnail_path, | 694 const base::FilePath& thumbnail_path, |
696 std::unique_ptr<gfx::ImageSkia> image) { | 695 std::unique_ptr<gfx::ImageSkia> image) { |
697 DCHECK(BrowserThread::GetBlockingPool()->IsRunningSequenceOnCurrentThread( | 696 wallpaper::AssertCalledOnWallpaperSequence(); |
698 sequence_token_)); | |
699 if (!base::PathExists(thumbnail_path.DirName())) | 697 if (!base::PathExists(thumbnail_path.DirName())) |
700 base::CreateDirectory(thumbnail_path.DirName()); | 698 base::CreateDirectory(thumbnail_path.DirName()); |
701 | 699 |
702 scoped_refptr<base::RefCountedBytes> data; | 700 scoped_refptr<base::RefCountedBytes> data; |
703 chromeos::WallpaperManager::Get()->ResizeImage( | 701 chromeos::WallpaperManager::Get()->ResizeImage( |
704 *image, wallpaper::WALLPAPER_LAYOUT_STRETCH, | 702 *image, wallpaper::WALLPAPER_LAYOUT_STRETCH, |
705 wallpaper::kWallpaperThumbnailWidth, wallpaper::kWallpaperThumbnailHeight, | 703 wallpaper::kWallpaperThumbnailWidth, wallpaper::kWallpaperThumbnailHeight, |
706 &data, NULL); | 704 &data, NULL); |
707 BrowserThread::PostTask( | 705 BrowserThread::PostTask( |
708 BrowserThread::UI, FROM_HERE, | 706 BrowserThread::UI, FROM_HERE, |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
805 return false; | 803 return false; |
806 } | 804 } |
807 | 805 |
808 // TODO(bshe): Small resolution wallpaper is used here as wallpaper | 806 // TODO(bshe): Small resolution wallpaper is used here as wallpaper |
809 // thumbnail. We should either resize it or include a wallpaper thumbnail in | 807 // thumbnail. We should either resize it or include a wallpaper thumbnail in |
810 // addition to large and small wallpaper resolutions. | 808 // addition to large and small wallpaper resolutions. |
811 thumbnail_path = base::CommandLine::ForCurrentProcess()->GetSwitchValuePath( | 809 thumbnail_path = base::CommandLine::ForCurrentProcess()->GetSwitchValuePath( |
812 chromeos::switches::kDefaultWallpaperSmall); | 810 chromeos::switches::kDefaultWallpaperSmall); |
813 } | 811 } |
814 | 812 |
815 sequence_token_ = BrowserThread::GetBlockingPool()->GetNamedSequenceToken( | |
816 wallpaper::kWallpaperSequenceTokenName); | |
817 scoped_refptr<base::SequencedTaskRunner> task_runner = | 813 scoped_refptr<base::SequencedTaskRunner> task_runner = |
818 BrowserThread::GetBlockingPool()-> | 814 BrowserThread::GetBlockingPool() |
819 GetSequencedTaskRunnerWithShutdownBehavior(sequence_token_, | 815 ->GetSequencedTaskRunnerWithShutdownBehavior( |
| 816 BrowserThread::GetBlockingPool()->GetNamedSequenceToken( |
| 817 wallpaper::kWallpaperSequenceTokenName), |
820 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); | 818 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); |
821 | 819 |
822 task_runner->PostTask(FROM_HERE, | 820 task_runner->PostTask(FROM_HERE, |
823 base::Bind(&WallpaperPrivateGetThumbnailFunction::Get, this, | 821 base::Bind(&WallpaperPrivateGetThumbnailFunction::Get, this, |
824 thumbnail_path)); | 822 thumbnail_path)); |
825 return true; | 823 return true; |
826 } | 824 } |
827 | 825 |
828 void WallpaperPrivateGetThumbnailFunction::Failure( | 826 void WallpaperPrivateGetThumbnailFunction::Failure( |
829 const std::string& file_name) { | 827 const std::string& file_name) { |
830 SetError(base::StringPrintf("Failed to access wallpaper thumbnails for %s.", | 828 SetError(base::StringPrintf("Failed to access wallpaper thumbnails for %s.", |
831 file_name.c_str())); | 829 file_name.c_str())); |
832 SendResponse(false); | 830 SendResponse(false); |
833 } | 831 } |
834 | 832 |
835 void WallpaperPrivateGetThumbnailFunction::FileNotLoaded() { | 833 void WallpaperPrivateGetThumbnailFunction::FileNotLoaded() { |
836 SendResponse(true); | 834 SendResponse(true); |
837 } | 835 } |
838 | 836 |
839 void WallpaperPrivateGetThumbnailFunction::FileLoaded( | 837 void WallpaperPrivateGetThumbnailFunction::FileLoaded( |
840 const std::string& data) { | 838 const std::string& data) { |
841 SetResult(BinaryValue::CreateWithCopiedBuffer(data.c_str(), data.size())); | 839 SetResult(BinaryValue::CreateWithCopiedBuffer(data.c_str(), data.size())); |
842 SendResponse(true); | 840 SendResponse(true); |
843 } | 841 } |
844 | 842 |
845 void WallpaperPrivateGetThumbnailFunction::Get(const base::FilePath& path) { | 843 void WallpaperPrivateGetThumbnailFunction::Get(const base::FilePath& path) { |
846 DCHECK(BrowserThread::GetBlockingPool()->IsRunningSequenceOnCurrentThread( | 844 wallpaper::AssertCalledOnWallpaperSequence(); |
847 sequence_token_)); | |
848 std::string data; | 845 std::string data; |
849 if (GetData(path, &data)) { | 846 if (GetData(path, &data)) { |
850 if (data.empty()) { | 847 if (data.empty()) { |
851 BrowserThread::PostTask( | 848 BrowserThread::PostTask( |
852 BrowserThread::UI, FROM_HERE, | 849 BrowserThread::UI, FROM_HERE, |
853 base::Bind(&WallpaperPrivateGetThumbnailFunction::FileNotLoaded, this)); | 850 base::Bind(&WallpaperPrivateGetThumbnailFunction::FileNotLoaded, this)); |
854 } else { | 851 } else { |
855 BrowserThread::PostTask( | 852 BrowserThread::PostTask( |
856 BrowserThread::UI, FROM_HERE, | 853 BrowserThread::UI, FROM_HERE, |
857 base::Bind(&WallpaperPrivateGetThumbnailFunction::FileLoaded, this, | 854 base::Bind(&WallpaperPrivateGetThumbnailFunction::FileLoaded, this, |
(...skipping 11 matching lines...) Expand all Loading... |
869 } | 866 } |
870 | 867 |
871 WallpaperPrivateSaveThumbnailFunction:: | 868 WallpaperPrivateSaveThumbnailFunction:: |
872 ~WallpaperPrivateSaveThumbnailFunction() {} | 869 ~WallpaperPrivateSaveThumbnailFunction() {} |
873 | 870 |
874 bool WallpaperPrivateSaveThumbnailFunction::RunAsync() { | 871 bool WallpaperPrivateSaveThumbnailFunction::RunAsync() { |
875 std::unique_ptr<save_thumbnail::Params> params( | 872 std::unique_ptr<save_thumbnail::Params> params( |
876 save_thumbnail::Params::Create(*args_)); | 873 save_thumbnail::Params::Create(*args_)); |
877 EXTENSION_FUNCTION_VALIDATE(params); | 874 EXTENSION_FUNCTION_VALIDATE(params); |
878 | 875 |
879 sequence_token_ = BrowserThread::GetBlockingPool()->GetNamedSequenceToken( | |
880 wallpaper::kWallpaperSequenceTokenName); | |
881 scoped_refptr<base::SequencedTaskRunner> task_runner = | 876 scoped_refptr<base::SequencedTaskRunner> task_runner = |
882 BrowserThread::GetBlockingPool()-> | 877 BrowserThread::GetBlockingPool() |
883 GetSequencedTaskRunnerWithShutdownBehavior(sequence_token_, | 878 ->GetSequencedTaskRunnerWithShutdownBehavior( |
| 879 BrowserThread::GetBlockingPool()->GetNamedSequenceToken( |
| 880 wallpaper::kWallpaperSequenceTokenName), |
884 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); | 881 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); |
885 | 882 |
886 task_runner->PostTask(FROM_HERE, | 883 task_runner->PostTask(FROM_HERE, |
887 base::Bind(&WallpaperPrivateSaveThumbnailFunction::Save, | 884 base::Bind(&WallpaperPrivateSaveThumbnailFunction::Save, |
888 this, params->data, GURL(params->url).ExtractFileName())); | 885 this, params->data, GURL(params->url).ExtractFileName())); |
889 return true; | 886 return true; |
890 } | 887 } |
891 | 888 |
892 void WallpaperPrivateSaveThumbnailFunction::Failure( | 889 void WallpaperPrivateSaveThumbnailFunction::Failure( |
893 const std::string& file_name) { | 890 const std::string& file_name) { |
894 SetError(base::StringPrintf("Failed to create/write thumbnail of %s.", | 891 SetError(base::StringPrintf("Failed to create/write thumbnail of %s.", |
895 file_name.c_str())); | 892 file_name.c_str())); |
896 SendResponse(false); | 893 SendResponse(false); |
897 } | 894 } |
898 | 895 |
899 void WallpaperPrivateSaveThumbnailFunction::Success() { | 896 void WallpaperPrivateSaveThumbnailFunction::Success() { |
900 SendResponse(true); | 897 SendResponse(true); |
901 } | 898 } |
902 | 899 |
903 void WallpaperPrivateSaveThumbnailFunction::Save(const std::vector<char>& data, | 900 void WallpaperPrivateSaveThumbnailFunction::Save(const std::vector<char>& data, |
904 const std::string& file_name) { | 901 const std::string& file_name) { |
905 DCHECK(BrowserThread::GetBlockingPool()->IsRunningSequenceOnCurrentThread( | 902 wallpaper::AssertCalledOnWallpaperSequence(); |
906 sequence_token_)); | |
907 if (SaveData(chrome::DIR_CHROMEOS_WALLPAPER_THUMBNAILS, file_name, data)) { | 903 if (SaveData(chrome::DIR_CHROMEOS_WALLPAPER_THUMBNAILS, file_name, data)) { |
908 BrowserThread::PostTask( | 904 BrowserThread::PostTask( |
909 BrowserThread::UI, FROM_HERE, | 905 BrowserThread::UI, FROM_HERE, |
910 base::Bind(&WallpaperPrivateSaveThumbnailFunction::Success, this)); | 906 base::Bind(&WallpaperPrivateSaveThumbnailFunction::Success, this)); |
911 } else { | 907 } else { |
912 BrowserThread::PostTask( | 908 BrowserThread::PostTask( |
913 BrowserThread::UI, FROM_HERE, | 909 BrowserThread::UI, FROM_HERE, |
914 base::Bind(&WallpaperPrivateSaveThumbnailFunction::Failure, | 910 base::Bind(&WallpaperPrivateSaveThumbnailFunction::Failure, |
915 this, file_name)); | 911 this, file_name)); |
916 } | 912 } |
917 } | 913 } |
918 | 914 |
919 WallpaperPrivateGetOfflineWallpaperListFunction:: | 915 WallpaperPrivateGetOfflineWallpaperListFunction:: |
920 WallpaperPrivateGetOfflineWallpaperListFunction() { | 916 WallpaperPrivateGetOfflineWallpaperListFunction() { |
921 } | 917 } |
922 | 918 |
923 WallpaperPrivateGetOfflineWallpaperListFunction:: | 919 WallpaperPrivateGetOfflineWallpaperListFunction:: |
924 ~WallpaperPrivateGetOfflineWallpaperListFunction() { | 920 ~WallpaperPrivateGetOfflineWallpaperListFunction() { |
925 } | 921 } |
926 | 922 |
927 bool WallpaperPrivateGetOfflineWallpaperListFunction::RunAsync() { | 923 bool WallpaperPrivateGetOfflineWallpaperListFunction::RunAsync() { |
928 sequence_token_ = BrowserThread::GetBlockingPool()->GetNamedSequenceToken( | |
929 wallpaper::kWallpaperSequenceTokenName); | |
930 scoped_refptr<base::SequencedTaskRunner> task_runner = | 924 scoped_refptr<base::SequencedTaskRunner> task_runner = |
931 BrowserThread::GetBlockingPool()-> | 925 BrowserThread::GetBlockingPool() |
932 GetSequencedTaskRunnerWithShutdownBehavior(sequence_token_, | 926 ->GetSequencedTaskRunnerWithShutdownBehavior( |
| 927 BrowserThread::GetBlockingPool()->GetNamedSequenceToken( |
| 928 wallpaper::kWallpaperSequenceTokenName), |
933 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); | 929 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); |
934 | 930 |
935 task_runner->PostTask(FROM_HERE, | 931 task_runner->PostTask(FROM_HERE, |
936 base::Bind(&WallpaperPrivateGetOfflineWallpaperListFunction::GetList, | 932 base::Bind(&WallpaperPrivateGetOfflineWallpaperListFunction::GetList, |
937 this)); | 933 this)); |
938 return true; | 934 return true; |
939 } | 935 } |
940 | 936 |
941 void WallpaperPrivateGetOfflineWallpaperListFunction::GetList() { | 937 void WallpaperPrivateGetOfflineWallpaperListFunction::GetList() { |
942 DCHECK(BrowserThread::GetBlockingPool()->IsRunningSequenceOnCurrentThread( | 938 wallpaper::AssertCalledOnWallpaperSequence(); |
943 sequence_token_)); | |
944 std::vector<std::string> file_list; | 939 std::vector<std::string> file_list; |
945 base::FilePath wallpaper_dir; | 940 base::FilePath wallpaper_dir; |
946 CHECK(PathService::Get(chrome::DIR_CHROMEOS_WALLPAPERS, &wallpaper_dir)); | 941 CHECK(PathService::Get(chrome::DIR_CHROMEOS_WALLPAPERS, &wallpaper_dir)); |
947 if (base::DirectoryExists(wallpaper_dir)) { | 942 if (base::DirectoryExists(wallpaper_dir)) { |
948 base::FileEnumerator files(wallpaper_dir, false, | 943 base::FileEnumerator files(wallpaper_dir, false, |
949 base::FileEnumerator::FILES); | 944 base::FileEnumerator::FILES); |
950 for (base::FilePath current = files.Next(); !current.empty(); | 945 for (base::FilePath current = files.Next(); !current.empty(); |
951 current = files.Next()) { | 946 current = files.Next()) { |
952 std::string file_name = current.BaseName().RemoveExtension().value(); | 947 std::string file_name = current.BaseName().RemoveExtension().value(); |
953 // Do not add file name of small resolution wallpaper to the list. | 948 // Do not add file name of small resolution wallpaper to the list. |
(...skipping 20 matching lines...) Expand all Loading... |
974 WallpaperPrivateRecordWallpaperUMAFunction::Run() { | 969 WallpaperPrivateRecordWallpaperUMAFunction::Run() { |
975 std::unique_ptr<record_wallpaper_uma::Params> params( | 970 std::unique_ptr<record_wallpaper_uma::Params> params( |
976 record_wallpaper_uma::Params::Create(*args_)); | 971 record_wallpaper_uma::Params::Create(*args_)); |
977 EXTENSION_FUNCTION_VALIDATE(params); | 972 EXTENSION_FUNCTION_VALIDATE(params); |
978 | 973 |
979 user_manager::User::WallpaperType source = getWallpaperType(params->source); | 974 user_manager::User::WallpaperType source = getWallpaperType(params->source); |
980 UMA_HISTOGRAM_ENUMERATION("Ash.Wallpaper.Source", source, | 975 UMA_HISTOGRAM_ENUMERATION("Ash.Wallpaper.Source", source, |
981 user_manager::User::WALLPAPER_TYPE_COUNT); | 976 user_manager::User::WALLPAPER_TYPE_COUNT); |
982 return RespondNow(NoArguments()); | 977 return RespondNow(NoArguments()); |
983 } | 978 } |
OLD | NEW |