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 fda7013cb281c10fadf23d3e970fa7f1e9e69cb5..6c65fa5dbbe3cbf3c9b60dd9f4f2ec1d10d11a56 100644 |
--- a/chrome/browser/chromeos/extensions/file_manager/event_router.cc |
+++ b/chrome/browser/chromeos/extensions/file_manager/event_router.cc |
@@ -31,6 +31,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" |
@@ -227,6 +228,15 @@ std::string MountTypeToString(chromeos::MountType type) { |
return ""; |
} |
+// Sends an event named |event_name| with arguments |event_args| to extensions. |
+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. |
@@ -239,8 +249,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), |
@@ -406,6 +415,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. |
@@ -479,11 +514,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) { |
@@ -515,11 +550,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) { |
@@ -641,11 +675,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, |
@@ -736,10 +769,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( |