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

Side by Side Diff: chrome/browser/extensions/api/media_galleries/media_galleries_api.cc

Issue 440813002: Expose gallery watching functionality to the public mediaGalleries API. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Respond to Tommy's comments. Created 6 years, 4 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 // Implements the Chrome Extensions Media Galleries API. 5 // Implements the Chrome Extensions Media Galleries API.
6 6
7 #include "chrome/browser/extensions/api/media_galleries/media_galleries_api.h" 7 #include "chrome/browser/extensions/api/media_galleries/media_galleries_api.h"
8 8
9 #include <set> 9 #include <set>
10 #include <string> 10 #include <string>
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 using storage_monitor::MediaStorageUtil; 61 using storage_monitor::MediaStorageUtil;
62 using storage_monitor::StorageInfo; 62 using storage_monitor::StorageInfo;
63 using web_modal::WebContentsModalDialogManager; 63 using web_modal::WebContentsModalDialogManager;
64 64
65 namespace extensions { 65 namespace extensions {
66 66
67 namespace MediaGalleries = api::media_galleries; 67 namespace MediaGalleries = api::media_galleries;
68 namespace DropPermissionForMediaFileSystem = 68 namespace DropPermissionForMediaFileSystem =
69 MediaGalleries::DropPermissionForMediaFileSystem; 69 MediaGalleries::DropPermissionForMediaFileSystem;
70 namespace GetMediaFileSystems = MediaGalleries::GetMediaFileSystems; 70 namespace GetMediaFileSystems = MediaGalleries::GetMediaFileSystems;
71 namespace AddGalleryWatch = MediaGalleries::AddGalleryWatch;
72 namespace RemoveGalleryWatch = MediaGalleries::RemoveGalleryWatch;
73 namespace GetAllGalleryWatch = MediaGalleries::GetAllGalleryWatch;
71 74
72 namespace { 75 namespace {
73 76
74 const char kDisallowedByPolicy[] = 77 const char kDisallowedByPolicy[] =
75 "Media Galleries API is disallowed by policy: "; 78 "Media Galleries API is disallowed by policy: ";
76 const char kFailedToSetGalleryPermission[] = 79 const char kFailedToSetGalleryPermission[] =
77 "Failed to set gallery permission."; 80 "Failed to set gallery permission.";
78 const char kInvalidGalleryId[] = "Invalid gallery id."; 81 const char kInvalidGalleryId[] = "Invalid gallery id.";
79 const char kMissingEventListener[] = "Missing event listener registration."; 82 const char kMissingEventListener[] = "Missing event listener registration.";
80 const char kNonExistentGalleryId[] = "Non-existent gallery id."; 83 const char kNonExistentGalleryId[] = "Non-existent gallery id.";
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 prefs::kAllowFileSelectionDialogs; 117 prefs::kAllowFileSelectionDialogs;
115 return false; 118 return false;
116 } 119 }
117 120
118 MediaGalleriesPreferences* preferences = 121 MediaGalleriesPreferences* preferences =
119 media_file_system_registry()->GetPreferences(profile); 122 media_file_system_registry()->GetPreferences(profile);
120 preferences->EnsureInitialized(callback); 123 preferences->EnsureInitialized(callback);
121 return true; 124 return true;
122 } 125 }
123 126
127 // Returns true and sets |gallery_file_path| and |gallery_pref_id| if the
128 // |gallery_id| is valid and returns false otherwise.
129 bool GetGalleryFilePathAndId(const std::string& gallery_id,
130 Profile* profile,
131 const Extension* extension,
132 base::FilePath* gallery_file_path,
133 MediaGalleryPrefId* gallery_pref_id) {
134 MediaGalleryPrefId pref_id;
135 if (!base::StringToUint64(gallery_id, &pref_id))
136 return false;
137 MediaGalleriesPreferences* preferences =
138 g_browser_process->media_file_system_registry()->GetPreferences(profile);
139 base::FilePath file_path(
140 preferences->LookUpGalleryPathForExtension(pref_id, extension, false));
141 if (file_path.empty())
142 return false;
143 *gallery_pref_id = pref_id;
144 *gallery_file_path = file_path;
145 return true;
146 }
147
124 WebContents* GetWebContents(content::RenderViewHost* rvh, 148 WebContents* GetWebContents(content::RenderViewHost* rvh,
125 Profile* profile, 149 Profile* profile,
126 const std::string& app_id) { 150 const std::string& app_id) {
127 WebContents* contents = WebContents::FromRenderViewHost(rvh); 151 WebContents* contents = WebContents::FromRenderViewHost(rvh);
128 WebContentsModalDialogManager* web_contents_modal_dialog_manager = 152 WebContentsModalDialogManager* web_contents_modal_dialog_manager =
129 WebContentsModalDialogManager::FromWebContents(contents); 153 WebContentsModalDialogManager::FromWebContents(contents);
130 if (!web_contents_modal_dialog_manager) { 154 if (!web_contents_modal_dialog_manager) {
131 // If there is no WebContentsModalDialogManager, then this contents is 155 // If there is no WebContentsModalDialogManager, then this contents is
132 // probably the background page for an app. Try to find a app window to 156 // probably the background page for an app. Try to find a app window to
133 // host the dialog. 157 // host the dialog.
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
418 } 442 }
419 443
420 void MediaGalleriesEventRouter::OnListenerRemoved( 444 void MediaGalleriesEventRouter::OnListenerRemoved(
421 const EventListenerInfo& details) { 445 const EventListenerInfo& details) {
422 if (details.event_name == MediaGalleries::OnGalleryChanged::kEventName && 446 if (details.event_name == MediaGalleries::OnGalleryChanged::kEventName &&
423 !ExtensionHasGalleryChangeListener(details.extension_id)) { 447 !ExtensionHasGalleryChangeListener(details.extension_id)) {
424 gallery_watch_manager()->RemoveAllWatches(profile_, details.extension_id); 448 gallery_watch_manager()->RemoveAllWatches(profile_, details.extension_id);
425 } 449 }
426 } 450 }
427 451
452 ///////////////////////////////////////////////////////////////////////////////
453 // MediaGalleriesGetMediaFileSystemsFunction //
454 ///////////////////////////////////////////////////////////////////////////////
428 MediaGalleriesGetMediaFileSystemsFunction:: 455 MediaGalleriesGetMediaFileSystemsFunction::
429 ~MediaGalleriesGetMediaFileSystemsFunction() {} 456 ~MediaGalleriesGetMediaFileSystemsFunction() {}
430 457
431 bool MediaGalleriesGetMediaFileSystemsFunction::RunAsync() { 458 bool MediaGalleriesGetMediaFileSystemsFunction::RunAsync() {
432 media_galleries::UsageCount(media_galleries::GET_MEDIA_FILE_SYSTEMS); 459 media_galleries::UsageCount(media_galleries::GET_MEDIA_FILE_SYSTEMS);
433 scoped_ptr<GetMediaFileSystems::Params> params( 460 scoped_ptr<GetMediaFileSystems::Params> params(
434 GetMediaFileSystems::Params::Create(*args_)); 461 GetMediaFileSystems::Params::Create(*args_));
435 EXTENSION_FUNCTION_VALIDATE(params.get()); 462 EXTENSION_FUNCTION_VALIDATE(params.get());
436 MediaGalleries::GetMediaFileSystemsInteractivity interactive = 463 MediaGalleries::GetMediaFileSystemsInteractivity interactive =
437 MediaGalleries::GET_MEDIA_FILE_SYSTEMS_INTERACTIVITY_NO; 464 MediaGalleries::GET_MEDIA_FILE_SYSTEMS_INTERACTIVITY_NO;
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
525 if (!render_view_host()) { 552 if (!render_view_host()) {
526 cb.Run(std::vector<MediaFileSystemInfo>()); 553 cb.Run(std::vector<MediaFileSystemInfo>());
527 return; 554 return;
528 } 555 }
529 MediaFileSystemRegistry* registry = media_file_system_registry(); 556 MediaFileSystemRegistry* registry = media_file_system_registry();
530 DCHECK(registry->GetPreferences(GetProfile())->IsInitialized()); 557 DCHECK(registry->GetPreferences(GetProfile())->IsInitialized());
531 registry->GetMediaFileSystemsForExtension( 558 registry->GetMediaFileSystemsForExtension(
532 render_view_host(), extension(), cb); 559 render_view_host(), extension(), cb);
533 } 560 }
534 561
562
563 ///////////////////////////////////////////////////////////////////////////////
564 // MediaGalleriesGetAllMediaFileSystemMetadataFunction //
565 ///////////////////////////////////////////////////////////////////////////////
535 MediaGalleriesGetAllMediaFileSystemMetadataFunction:: 566 MediaGalleriesGetAllMediaFileSystemMetadataFunction::
536 ~MediaGalleriesGetAllMediaFileSystemMetadataFunction() {} 567 ~MediaGalleriesGetAllMediaFileSystemMetadataFunction() {}
537 568
538 bool MediaGalleriesGetAllMediaFileSystemMetadataFunction::RunAsync() { 569 bool MediaGalleriesGetAllMediaFileSystemMetadataFunction::RunAsync() {
539 media_galleries::UsageCount( 570 media_galleries::UsageCount(
540 media_galleries::GET_ALL_MEDIA_FILE_SYSTEM_METADATA); 571 media_galleries::GET_ALL_MEDIA_FILE_SYSTEM_METADATA);
541 return Setup(GetProfile(), &error_, base::Bind( 572 return Setup(GetProfile(), &error_, base::Bind(
542 &MediaGalleriesGetAllMediaFileSystemMetadataFunction::OnPreferencesInit, 573 &MediaGalleriesGetAllMediaFileSystemMetadataFunction::OnPreferencesInit,
543 this)); 574 this));
544 } 575 }
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
587 metadata.is_removable = StorageInfo::IsRemovableDevice(gallery.device_id); 618 metadata.is_removable = StorageInfo::IsRemovableDevice(gallery.device_id);
588 metadata.is_media_device = StorageInfo::IsMediaDevice(gallery.device_id); 619 metadata.is_media_device = StorageInfo::IsMediaDevice(gallery.device_id);
589 metadata.is_available = ContainsKey(*available_devices, gallery.device_id); 620 metadata.is_available = ContainsKey(*available_devices, gallery.device_id);
590 list->Append(metadata.ToValue().release()); 621 list->Append(metadata.ToValue().release());
591 } 622 }
592 623
593 SetResult(list); 624 SetResult(list);
594 SendResponse(true); 625 SendResponse(true);
595 } 626 }
596 627
628 ///////////////////////////////////////////////////////////////////////////////
629 // MediaGalleriesAddUserSelectedFolderFunction //
630 ///////////////////////////////////////////////////////////////////////////////
597 MediaGalleriesAddUserSelectedFolderFunction:: 631 MediaGalleriesAddUserSelectedFolderFunction::
598 ~MediaGalleriesAddUserSelectedFolderFunction() {} 632 ~MediaGalleriesAddUserSelectedFolderFunction() {}
599 633
600 bool MediaGalleriesAddUserSelectedFolderFunction::RunAsync() { 634 bool MediaGalleriesAddUserSelectedFolderFunction::RunAsync() {
601 media_galleries::UsageCount(media_galleries::ADD_USER_SELECTED_FOLDER); 635 media_galleries::UsageCount(media_galleries::ADD_USER_SELECTED_FOLDER);
602 return Setup(GetProfile(), &error_, base::Bind( 636 return Setup(GetProfile(), &error_, base::Bind(
603 &MediaGalleriesAddUserSelectedFolderFunction::OnPreferencesInit, this)); 637 &MediaGalleriesAddUserSelectedFolderFunction::OnPreferencesInit, this));
604 } 638 }
605 639
606 void MediaGalleriesAddUserSelectedFolderFunction::OnPreferencesInit() { 640 void MediaGalleriesAddUserSelectedFolderFunction::OnPreferencesInit() {
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
696 if (!render_view_host()) { 730 if (!render_view_host()) {
697 cb.Run(std::vector<MediaFileSystemInfo>()); 731 cb.Run(std::vector<MediaFileSystemInfo>());
698 return; 732 return;
699 } 733 }
700 MediaFileSystemRegistry* registry = media_file_system_registry(); 734 MediaFileSystemRegistry* registry = media_file_system_registry();
701 DCHECK(registry->GetPreferences(GetProfile())->IsInitialized()); 735 DCHECK(registry->GetPreferences(GetProfile())->IsInitialized());
702 registry->GetMediaFileSystemsForExtension( 736 registry->GetMediaFileSystemsForExtension(
703 render_view_host(), extension(), cb); 737 render_view_host(), extension(), cb);
704 } 738 }
705 739
740 ///////////////////////////////////////////////////////////////////////////////
741 // MediaGalleriesDropPermissionForMediaFileSystemFunction //
742 ///////////////////////////////////////////////////////////////////////////////
706 MediaGalleriesDropPermissionForMediaFileSystemFunction:: 743 MediaGalleriesDropPermissionForMediaFileSystemFunction::
707 ~MediaGalleriesDropPermissionForMediaFileSystemFunction() {} 744 ~MediaGalleriesDropPermissionForMediaFileSystemFunction() {}
708 745
709 bool MediaGalleriesDropPermissionForMediaFileSystemFunction::RunAsync() { 746 bool MediaGalleriesDropPermissionForMediaFileSystemFunction::RunAsync() {
710 media_galleries::UsageCount( 747 media_galleries::UsageCount(
711 media_galleries::DROP_PERMISSION_FOR_MEDIA_FILE_SYSTEM); 748 media_galleries::DROP_PERMISSION_FOR_MEDIA_FILE_SYSTEM);
712 749
713 scoped_ptr<DropPermissionForMediaFileSystem::Params> params( 750 scoped_ptr<DropPermissionForMediaFileSystem::Params> params(
714 DropPermissionForMediaFileSystem::Params::Create(*args_)); 751 DropPermissionForMediaFileSystem::Params::Create(*args_));
715 EXTENSION_FUNCTION_VALIDATE(params.get()); 752 EXTENSION_FUNCTION_VALIDATE(params.get());
(...skipping 23 matching lines...) Expand all
739 776
740 bool dropped = preferences->SetGalleryPermissionForExtension( 777 bool dropped = preferences->SetGalleryPermissionForExtension(
741 *extension(), pref_id, false); 778 *extension(), pref_id, false);
742 if (dropped) 779 if (dropped)
743 SetResult(new base::StringValue(base::Uint64ToString(pref_id))); 780 SetResult(new base::StringValue(base::Uint64ToString(pref_id)));
744 else 781 else
745 error_ = kFailedToSetGalleryPermission; 782 error_ = kFailedToSetGalleryPermission;
746 SendResponse(dropped); 783 SendResponse(dropped);
747 } 784 }
748 785
786 ///////////////////////////////////////////////////////////////////////////////
787 // MediaGalleriesStartMediaScanFunction //
788 ///////////////////////////////////////////////////////////////////////////////
749 MediaGalleriesStartMediaScanFunction::~MediaGalleriesStartMediaScanFunction() {} 789 MediaGalleriesStartMediaScanFunction::~MediaGalleriesStartMediaScanFunction() {}
750 790
751 bool MediaGalleriesStartMediaScanFunction::RunAsync() { 791 bool MediaGalleriesStartMediaScanFunction::RunAsync() {
752 media_galleries::UsageCount(media_galleries::START_MEDIA_SCAN); 792 media_galleries::UsageCount(media_galleries::START_MEDIA_SCAN);
753 if (!CheckScanPermission(extension(), &error_)) { 793 if (!CheckScanPermission(extension(), &error_)) {
754 MediaGalleriesEventRouter::Get(GetProfile()) 794 MediaGalleriesEventRouter::Get(GetProfile())
755 ->OnScanError(extension()->id()); 795 ->OnScanError(extension()->id());
756 return false; 796 return false;
757 } 797 }
758 return Setup(GetProfile(), &error_, base::Bind( 798 return Setup(GetProfile(), &error_, base::Bind(
759 &MediaGalleriesStartMediaScanFunction::OnPreferencesInit, this)); 799 &MediaGalleriesStartMediaScanFunction::OnPreferencesInit, this));
760 } 800 }
761 801
762 void MediaGalleriesStartMediaScanFunction::OnPreferencesInit() { 802 void MediaGalleriesStartMediaScanFunction::OnPreferencesInit() {
763 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 803 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
764 MediaGalleriesEventRouter* api = MediaGalleriesEventRouter::Get(GetProfile()); 804 MediaGalleriesEventRouter* api = MediaGalleriesEventRouter::Get(GetProfile());
765 if (!api->ExtensionHasScanProgressListener(extension()->id())) { 805 if (!api->ExtensionHasScanProgressListener(extension()->id())) {
766 error_ = kMissingEventListener; 806 error_ = kMissingEventListener;
767 SendResponse(false); 807 SendResponse(false);
768 return; 808 return;
769 } 809 }
770 810
771 media_scan_manager()->StartScan(GetProfile(), extension(), user_gesture()); 811 media_scan_manager()->StartScan(GetProfile(), extension(), user_gesture());
772 SendResponse(true); 812 SendResponse(true);
773 } 813 }
774 814
815 ///////////////////////////////////////////////////////////////////////////////
816 // MediaGalleriesCancelMediaScanFunction //
817 ///////////////////////////////////////////////////////////////////////////////
775 MediaGalleriesCancelMediaScanFunction:: 818 MediaGalleriesCancelMediaScanFunction::
776 ~MediaGalleriesCancelMediaScanFunction() { 819 ~MediaGalleriesCancelMediaScanFunction() {
777 } 820 }
778 821
779 bool MediaGalleriesCancelMediaScanFunction::RunAsync() { 822 bool MediaGalleriesCancelMediaScanFunction::RunAsync() {
780 media_galleries::UsageCount(media_galleries::CANCEL_MEDIA_SCAN); 823 media_galleries::UsageCount(media_galleries::CANCEL_MEDIA_SCAN);
781 if (!CheckScanPermission(extension(), &error_)) { 824 if (!CheckScanPermission(extension(), &error_)) {
782 MediaGalleriesEventRouter::Get(GetProfile()) 825 MediaGalleriesEventRouter::Get(GetProfile())
783 ->OnScanError(extension()->id()); 826 ->OnScanError(extension()->id());
784 return false; 827 return false;
785 } 828 }
786 return Setup(GetProfile(), &error_, base::Bind( 829 return Setup(GetProfile(), &error_, base::Bind(
787 &MediaGalleriesCancelMediaScanFunction::OnPreferencesInit, this)); 830 &MediaGalleriesCancelMediaScanFunction::OnPreferencesInit, this));
788 } 831 }
789 832
790 void MediaGalleriesCancelMediaScanFunction::OnPreferencesInit() { 833 void MediaGalleriesCancelMediaScanFunction::OnPreferencesInit() {
791 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 834 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
792 media_scan_manager()->CancelScan(GetProfile(), extension()); 835 media_scan_manager()->CancelScan(GetProfile(), extension());
793 SendResponse(true); 836 SendResponse(true);
794 } 837 }
795 838
839 ///////////////////////////////////////////////////////////////////////////////
840 // MediaGalleriesAddScanResultsFunction //
841 ///////////////////////////////////////////////////////////////////////////////
796 MediaGalleriesAddScanResultsFunction::~MediaGalleriesAddScanResultsFunction() {} 842 MediaGalleriesAddScanResultsFunction::~MediaGalleriesAddScanResultsFunction() {}
797 843
798 bool MediaGalleriesAddScanResultsFunction::RunAsync() { 844 bool MediaGalleriesAddScanResultsFunction::RunAsync() {
799 media_galleries::UsageCount(media_galleries::ADD_SCAN_RESULTS); 845 media_galleries::UsageCount(media_galleries::ADD_SCAN_RESULTS);
800 if (!CheckScanPermission(extension(), &error_)) { 846 if (!CheckScanPermission(extension(), &error_)) {
801 // We don't fire a scan progress error here, as it would be unintuitive. 847 // We don't fire a scan progress error here, as it would be unintuitive.
802 return false; 848 return false;
803 } 849 }
804 if (!user_gesture()) 850 if (!user_gesture())
805 return false; 851 return false;
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
860 if (!list.get()) { 906 if (!list.get()) {
861 SendResponse(false); 907 SendResponse(false);
862 return; 908 return;
863 } 909 }
864 910
865 // The custom JS binding will use this list to create DOMFileSystem objects. 911 // The custom JS binding will use this list to create DOMFileSystem objects.
866 SetResult(list.release()); 912 SetResult(list.release());
867 SendResponse(true); 913 SendResponse(true);
868 } 914 }
869 915
916 ///////////////////////////////////////////////////////////////////////////////
917 // MediaGalleriesGetMetadataFunction //
918 ///////////////////////////////////////////////////////////////////////////////
870 MediaGalleriesGetMetadataFunction::~MediaGalleriesGetMetadataFunction() {} 919 MediaGalleriesGetMetadataFunction::~MediaGalleriesGetMetadataFunction() {}
871 920
872 bool MediaGalleriesGetMetadataFunction::RunAsync() { 921 bool MediaGalleriesGetMetadataFunction::RunAsync() {
873 std::string blob_uuid; 922 std::string blob_uuid;
874 EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &blob_uuid)); 923 EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &blob_uuid));
875 924
876 const base::Value* options_value = NULL; 925 const base::Value* options_value = NULL;
877 if (!args_->Get(1, &options_value)) 926 if (!args_->Get(1, &options_value))
878 return false; 927 return false;
879 scoped_ptr<MediaGalleries::MediaMetadataOptions> options = 928 scoped_ptr<MediaGalleries::MediaMetadataOptions> options =
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
1027 base::Passed(&attached_images), base::Passed(&blob_uuids))); 1076 base::Passed(&attached_images), base::Passed(&blob_uuids)));
1028 return; 1077 return;
1029 } 1078 }
1030 1079
1031 // All Blobs have been constructed. The renderer will take ownership. 1080 // All Blobs have been constructed. The renderer will take ownership.
1032 SetResult(result_dictionary.release()); 1081 SetResult(result_dictionary.release());
1033 SetTransferredBlobUUIDs(*blob_uuids); 1082 SetTransferredBlobUUIDs(*blob_uuids);
1034 SendResponse(true); 1083 SendResponse(true);
1035 } 1084 }
1036 1085
1086 ///////////////////////////////////////////////////////////////////////////////
1087 // MediaGalleriesAddGalleryWatchFunction //
1088 ///////////////////////////////////////////////////////////////////////////////
1089 MediaGalleriesAddGalleryWatchFunction::
1090 ~MediaGalleriesAddGalleryWatchFunction() {
1091 }
1092
1093 bool MediaGalleriesAddGalleryWatchFunction::RunAsync() {
1094 DCHECK(GetProfile());
1095 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
1096 if (!render_view_host() || !render_view_host()->GetProcess())
1097 return false;
1098
1099 scoped_ptr<AddGalleryWatch::Params> params(
1100 AddGalleryWatch::Params::Create(*args_));
1101 EXTENSION_FUNCTION_VALIDATE(params.get());
1102
1103 MediaGalleriesPreferences* preferences =
1104 g_browser_process->media_file_system_registry()->GetPreferences(
1105 GetProfile());
1106 preferences->EnsureInitialized(
1107 base::Bind(&MediaGalleriesAddGalleryWatchFunction::OnPreferencesInit,
1108 this,
1109 params->gallery_id));
1110
1111 return true;
1112 }
1113
1114 void MediaGalleriesAddGalleryWatchFunction::OnPreferencesInit(
1115 const std::string& pref_id) {
1116 base::FilePath gallery_file_path;
1117 MediaGalleryPrefId gallery_pref_id = 0;
1118 if (!GetGalleryFilePathAndId(pref_id,
1119 GetProfile(),
1120 extension(),
1121 &gallery_file_path,
1122 &gallery_pref_id)) {
1123 api::media_galleries::AddGalleryWatchResult result;
1124 error_ = kInvalidGalleryId;
1125 result.gallery_id = -1;
1126 result.success = false;
tommycli 2014/08/20 23:21:13 You don't SetResult here, so this result is never
Oren Blasberg 2014/08/21 02:45:21 As discussed in the test file, I've fixed this. Al
1127 SendResponse(false);
1128 return;
1129 }
1130
1131 gallery_watch_manager()->AddWatch(
1132 GetProfile(),
1133 extension(),
1134 gallery_pref_id,
1135 base::Bind(&MediaGalleriesAddGalleryWatchFunction::HandleResponse,
1136 this,
1137 gallery_pref_id));
1138 }
1139
1140 void MediaGalleriesAddGalleryWatchFunction::HandleResponse(
1141 MediaGalleryPrefId gallery_id,
1142 const std::string& error) {
1143 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
1144
1145 // If an app added a file watch without any event listeners on the
1146 // onGalleryChanged event, that's an error.
1147 MediaGalleriesEventRouter* api = MediaGalleriesEventRouter::Get(GetProfile());
1148 if (!api->ExtensionHasGalleryChangeListener(extension()->id())) {
1149 api::media_galleries::AddGalleryWatchResult result;
1150 result.gallery_id = base::Uint64ToString(gallery_id);
1151 result.success = false;
1152 SetResult(result.ToValue().release());
1153 error_ = kMissingEventListener;
1154 SendResponse(false);
1155 return;
1156 }
1157
1158 api::media_galleries::AddGalleryWatchResult result;
1159 result.gallery_id = base::Uint64ToString(gallery_id);
1160 result.success = error.empty();
1161 SetResult(result.ToValue().release());
1162 if (error.empty()) {
1163 SendResponse(true);
1164 } else {
1165 error_ = error.c_str();
1166 SendResponse(false);
1167 }
1168 }
1169
1170 ///////////////////////////////////////////////////////////////////////////////
1171 // MediaGalleriesRemoveGalleryWatchFunction //
1172 ///////////////////////////////////////////////////////////////////////////////
1173
1174 MediaGalleriesRemoveGalleryWatchFunction::
1175 ~MediaGalleriesRemoveGalleryWatchFunction() {
1176 }
1177
1178 bool MediaGalleriesRemoveGalleryWatchFunction::RunAsync() {
1179 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
1180 if (!render_view_host() || !render_view_host()->GetProcess())
1181 return false;
1182
1183 scoped_ptr<RemoveGalleryWatch::Params> params(
1184 RemoveGalleryWatch::Params::Create(*args_));
1185 EXTENSION_FUNCTION_VALIDATE(params.get());
1186
1187 MediaGalleriesPreferences* preferences =
1188 g_browser_process->media_file_system_registry()->GetPreferences(
1189 GetProfile());
1190 preferences->EnsureInitialized(
1191 base::Bind(&MediaGalleriesRemoveGalleryWatchFunction::OnPreferencesInit,
1192 this,
1193 params->gallery_id));
1194 return true;
1195 }
1196
1197 void MediaGalleriesRemoveGalleryWatchFunction::OnPreferencesInit(
1198 const std::string& pref_id) {
1199 base::FilePath gallery_file_path;
1200 MediaGalleryPrefId gallery_pref_id = 0;
1201 if (!GetGalleryFilePathAndId(pref_id,
1202 GetProfile(),
1203 extension(),
1204 &gallery_file_path,
1205 &gallery_pref_id)) {
1206 error_ = kInvalidGalleryId;
1207 SendResponse(false);
1208 return;
1209 }
1210
1211 gallery_watch_manager()->RemoveWatch(
1212 GetProfile(), extension_id(), gallery_pref_id);
1213 SendResponse(true);
1214 }
1215
1216 ///////////////////////////////////////////////////////////////////////////////
1217 // MediaGalleriesGetAllGalleryWatchFunction //
1218 ///////////////////////////////////////////////////////////////////////////////
1219
1220 MediaGalleriesGetAllGalleryWatchFunction::
1221 ~MediaGalleriesGetAllGalleryWatchFunction() {
1222 }
1223
1224 bool MediaGalleriesGetAllGalleryWatchFunction::RunAsync() {
1225 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
1226 if (!render_view_host() || !render_view_host()->GetProcess())
1227 return false;
1228
1229 MediaGalleriesPreferences* preferences =
1230 g_browser_process->media_file_system_registry()->GetPreferences(
1231 GetProfile());
1232 preferences->EnsureInitialized(base::Bind(
1233 &MediaGalleriesGetAllGalleryWatchFunction::OnPreferencesInit, this));
1234 return true;
1235 }
1236
1237 void MediaGalleriesGetAllGalleryWatchFunction::OnPreferencesInit() {
1238 std::vector<std::string> result;
1239 MediaGalleryPrefIdSet gallery_ids =
1240 gallery_watch_manager()->GetWatchSet(GetProfile(), extension_id());
1241 for (MediaGalleryPrefIdSet::const_iterator iter = gallery_ids.begin();
1242 iter != gallery_ids.end();
1243 ++iter) {
1244 result.push_back(base::Uint64ToString(*iter));
1245 }
1246 results_ = GetAllGalleryWatch::Results::Create(result);
1247 SendResponse(true);
1248 }
1249
1250 ///////////////////////////////////////////////////////////////////////////////
1251 // MediaGalleriesRemoveAllGalleryWatchFunction //
1252 ///////////////////////////////////////////////////////////////////////////////
1253
1254 MediaGalleriesRemoveAllGalleryWatchFunction::
1255 ~MediaGalleriesRemoveAllGalleryWatchFunction() {
1256 }
1257
1258 bool MediaGalleriesRemoveAllGalleryWatchFunction::RunAsync() {
1259 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
1260 if (!render_view_host() || !render_view_host()->GetProcess())
1261 return false;
1262
1263 MediaGalleriesPreferences* preferences =
1264 g_browser_process->media_file_system_registry()->GetPreferences(
1265 GetProfile());
1266 preferences->EnsureInitialized(base::Bind(
1267 &MediaGalleriesRemoveAllGalleryWatchFunction::OnPreferencesInit, this));
1268 return true;
1269 }
1270
1271 void MediaGalleriesRemoveAllGalleryWatchFunction::OnPreferencesInit() {
1272 gallery_watch_manager()->RemoveAllWatches(GetProfile(), extension_id());
1273 SendResponse(true);
1274 }
1275
1037 } // namespace extensions 1276 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698