Chromium Code Reviews| Index: chrome/browser/chromeos/extensions/file_manager/event_router.cc |
| diff --git a/chrome/browser/chromeos/extensions/file_manager/event_router.cc b/chrome/browser/chromeos/extensions/file_manager/event_router.cc |
| index 5e024ccb323eab18ddf6cb87626bcf21a68adeca..15dd9182e767b58ba51946040a3eb759405492ea 100644 |
| --- a/chrome/browser/chromeos/extensions/file_manager/event_router.cc |
| +++ b/chrome/browser/chromeos/extensions/file_manager/event_router.cc |
| @@ -30,6 +30,7 @@ |
| #include "chrome/browser/extensions/extension_service.h" |
| #include "chrome/browser/extensions/extension_system.h" |
| #include "chrome/browser/profiles/profile.h" |
| +#include "chrome/common/extensions/api/file_browser_private.h" |
| #include "chrome/common/pref_names.h" |
| #include "chromeos/login/login_state.h" |
| #include "chromeos/network/network_handler.h" |
| @@ -209,6 +210,15 @@ bool IsGooglePhotosInstalled(Profile *profile) { |
| return false; |
| } |
| +// Sends an event named |event_name| with arguemtns |event_args| to extensions. |
|
kinaba
2013/09/09 04:07:49
typo: arguments
hidehiko
2013/09/09 04:57:01
Done.
|
| +void BroadcastEvent(Profile* profile, |
| + const std::string& event_name, |
| + scoped_ptr<base::ListValue> event_args) { |
| + extensions::ExtensionSystem::Get(profile)->event_router()-> |
| + BroadcastEvent(make_scoped_ptr( |
| + new extensions::Event(event_name, event_args.Pass()))); |
| +} |
| + |
| } // namespace |
| // Pass dummy value to JobInfo's constructor for make it default constructible. |
| @@ -221,8 +231,7 @@ EventRouter::DriveJobInfoWithStatus::DriveJobInfoWithStatus( |
| : job_info(info), status(status) { |
| } |
| -EventRouter::EventRouter( |
| - Profile* profile) |
| +EventRouter::EventRouter(Profile* profile) |
| : notifications_(new DesktopNotifications(profile)), |
| pref_change_registrar_(new PrefChangeRegistrar), |
| profile_(profile), |
| @@ -388,6 +397,32 @@ void EventRouter::RemoveFileWatch(const base::FilePath& local_path, |
| } |
| } |
| +void EventRouter::OnCopyCompleted( |
| + int copy_id, const GURL& url, base::PlatformFileError error) { |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| + |
| + using extensions::api::file_browser_private::CopyProgressStatus; |
| + namespace OnCopyProgress = |
| + extensions::api::file_browser_private::OnCopyProgress; |
| + |
| + CopyProgressStatus status; |
| + if (error == base::PLATFORM_FILE_OK) { |
| + // Send success event. |
| + status.type = CopyProgressStatus::TYPE_SUCCESS; |
| + status.url.reset(new std::string(url.spec())); |
| + } else { |
| + // Send error event. |
| + status.type = CopyProgressStatus::TYPE_ERROR; |
| + status.error.reset( |
| + new int(fileapi::PlatformFileErrorToWebFileError(error))); |
| + } |
| + |
| + BroadcastEvent( |
| + profile_, |
| + extensions::event_names::kOnFileBrowserCopyProgress, |
| + OnCopyProgress::Create(copy_id, status)); |
| +} |
| + |
| void EventRouter::OnDiskEvent(DiskMountManager::DiskEvent event, |
| const DiskMountManager::Disk* disk) { |
| // Disk event is dispatched by VolumeManager now. Do nothing. |
| @@ -461,11 +496,11 @@ void EventRouter::NetworkManagerChanged() { |
| NOTREACHED(); |
| return; |
| } |
| - scoped_ptr<extensions::Event> event(new extensions::Event( |
| + |
| + BroadcastEvent( |
| + profile_, |
| extensions::event_names::kOnFileBrowserDriveConnectionStatusChanged, |
| - scoped_ptr<ListValue>(new ListValue()))); |
| - extensions::ExtensionSystem::Get(profile_)->event_router()-> |
| - BroadcastEvent(event.Pass()); |
| + make_scoped_ptr(new ListValue)); |
| } |
| void EventRouter::DefaultNetworkChanged(const chromeos::NetworkState* network) { |
| @@ -497,11 +532,10 @@ void EventRouter::OnFileManagerPrefsChanged() { |
| return; |
| } |
| - scoped_ptr<extensions::Event> event(new extensions::Event( |
| + BroadcastEvent( |
| + profile_, |
| extensions::event_names::kOnFileBrowserPreferencesChanged, |
| - scoped_ptr<ListValue>(new ListValue()))); |
| - extensions::ExtensionSystem::Get(profile_)->event_router()-> |
| - BroadcastEvent(event.Pass()); |
| + make_scoped_ptr(new ListValue)); |
| } |
| void EventRouter::OnJobAdded(const drive::JobInfo& job_info) { |
| @@ -623,11 +657,10 @@ void EventRouter::OnRefreshTokenInvalid() { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| // Raise a DriveConnectionStatusChanged event to notify the status offline. |
| - scoped_ptr<extensions::Event> event(new extensions::Event( |
| + BroadcastEvent( |
| + profile_, |
| extensions::event_names::kOnFileBrowserDriveConnectionStatusChanged, |
| - scoped_ptr<ListValue>(new ListValue()))); |
| - extensions::ExtensionSystem::Get(profile_)->event_router()-> |
| - BroadcastEvent(event.Pass()); |
| + make_scoped_ptr(new ListValue)); |
| } |
| void EventRouter::HandleFileWatchNotification(const base::FilePath& local_path, |
| @@ -719,10 +752,9 @@ void EventRouter::DispatchMountEvent( |
| } |
| } |
| - scoped_ptr<extensions::Event> extension_event(new extensions::Event( |
| - extensions::event_names::kOnFileBrowserMountCompleted, args.Pass())); |
| - extensions::ExtensionSystem::Get(profile_)->event_router()-> |
| - BroadcastEvent(extension_event.Pass()); |
| + BroadcastEvent(profile_, |
| + extensions::event_names::kOnFileBrowserMountCompleted, |
| + args.Pass()); |
| } |
| void EventRouter::ShowRemovableDeviceInFileManager( |