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 b5f153dbdc656f41233ab1377273d3769cf9d4cc..72de6b11cdaa242aeb65d123b7c75b7fe03760de 100644 |
| --- a/chrome/browser/chromeos/extensions/file_manager/event_router.cc |
| +++ b/chrome/browser/chromeos/extensions/file_manager/event_router.cc |
| @@ -94,26 +94,29 @@ bool IsUploadJob(drive::JobType type) { |
| } |
| // Converts the job info to its JSON (Value) form. |
|
mtomasz
2013/12/25 01:19:56
nit: Please update the comment.
hirono
2013/12/25 02:06:55
Done.
|
| -scoped_ptr<base::DictionaryValue> JobInfoToDictionaryValue( |
| +void JobInfoToDictionaryValue( |
| const std::string& extension_id, |
| const std::string& job_status, |
| - const drive::JobInfo& job_info) { |
| + const drive::JobInfo& job_info, |
| + file_browser_private::FileTransferStatus* status) { |
| DCHECK(IsActiveFileTransferJobInfo(job_info)); |
| scoped_ptr<base::DictionaryValue> result(new base::DictionaryValue); |
| GURL url = util::ConvertRelativeFilePathToFileSystemUrl( |
| job_info.file_path, extension_id); |
| - result->SetString("fileUrl", url.spec()); |
| - result->SetString("transferState", job_status); |
| - result->SetString("transferType", |
| - IsUploadJob(job_info.job_type) ? "upload" : "download"); |
| + status->file_url = url.spec(); |
| + status->transfer_state = file_browser_private::ParseTransferState(job_status); |
| + status->transfer_type = |
| + IsUploadJob(job_info.job_type) ? |
| + file_browser_private::TRANSFER_TYPE_UPLOAD : |
| + file_browser_private::TRANSFER_TYPE_DOWNLOAD; |
| // JavaScript does not have 64-bit integers. Instead we use double, which |
| // is in IEEE 754 formant and accurate up to 52-bits in JS, and in practice |
| // in C++. Larger values are rounded. |
| - result->SetDouble("processed", |
| - static_cast<double>(job_info.num_completed_bytes)); |
| - result->SetDouble("total", static_cast<double>(job_info.num_total_bytes)); |
| - return result.Pass(); |
| + status->processed.reset( |
| + new double(static_cast<double>(job_info.num_completed_bytes))); |
| + status->total.reset( |
| + new double(static_cast<double>(job_info.num_total_bytes))); |
| } |
| // Checks for availability of the Google+ Photos app. |
| @@ -226,7 +229,7 @@ void BroadcastMountCompletedEvent( |
| BroadcastEvent( |
| profile, |
| - extensions::event_names::kOnFileBrowserMountCompleted, |
| + file_browser_private::OnMountCompleted::kEventName, |
| file_browser_private::OnMountCompleted::Create(event)); |
| } |
| @@ -429,7 +432,7 @@ void EventRouter::OnCopyCompleted(int copy_id, |
| BroadcastEvent( |
| profile_, |
| - extensions::event_names::kOnFileBrowserCopyProgress, |
| + file_browser_private::OnCopyProgress::kEventName, |
| file_browser_private::OnCopyProgress::Create(copy_id, status)); |
| } |
| @@ -451,7 +454,7 @@ void EventRouter::OnCopyProgress( |
| BroadcastEvent( |
| profile_, |
| - extensions::event_names::kOnFileBrowserCopyProgress, |
| + file_browser_private::OnCopyProgress::kEventName, |
| file_browser_private::OnCopyProgress::Create(copy_id, status)); |
| } |
| @@ -464,8 +467,8 @@ void EventRouter::DefaultNetworkChanged(const chromeos::NetworkState* network) { |
| BroadcastEvent( |
| profile_, |
| - extensions::event_names::kOnFileBrowserDriveConnectionStatusChanged, |
| - make_scoped_ptr(new base::ListValue)); |
| + file_browser_private::OnDriveConnectionStatusChanged::kEventName, |
| + file_browser_private::OnDriveConnectionStatusChanged::Create()); |
| } |
| void EventRouter::OnFileManagerPrefsChanged() { |
| @@ -477,8 +480,8 @@ void EventRouter::OnFileManagerPrefsChanged() { |
| BroadcastEvent( |
| profile_, |
| - extensions::event_names::kOnFileBrowserPreferencesChanged, |
| - make_scoped_ptr(new base::ListValue)); |
| + file_browser_private::OnPreferencesChanged::kEventName, |
| + file_browser_private::OnPreferencesChanged::Create()); |
| } |
| void EventRouter::OnJobAdded(const drive::JobInfo& job_info) { |
| @@ -539,25 +542,23 @@ void EventRouter::SendDriveFileTransferEvent(bool always) { |
| return; |
| } |
| - // Convert the current |drive_jobs_| to a JSON value. |
| - scoped_ptr<base::ListValue> event_list(new base::ListValue); |
| + // Convert the current |drive_jobs_| to IDL type. |
| + std::vector<linked_ptr<file_browser_private::FileTransferStatus> > |
|
mtomasz
2013/12/25 01:19:56
How about ScopedVector?
https://groups.google.com
hirono
2013/12/25 02:06:55
Because IDL generated methods takes std::vector<li
|
| + status_list; |
| + status_list.resize(drive_jobs_.size()); |
| + size_t i = 0; |
| for (std::map<drive::JobID, DriveJobInfoWithStatus>::iterator |
| iter = drive_jobs_.begin(); iter != drive_jobs_.end(); ++iter) { |
| - |
| - scoped_ptr<base::DictionaryValue> job_info_dict( |
| - JobInfoToDictionaryValue(kFileManagerAppId, |
| - iter->second.status, |
| - iter->second.job_info)); |
| - event_list->Append(job_info_dict.release()); |
| + JobInfoToDictionaryValue(kFileManagerAppId, |
| + iter->second.status, |
| + iter->second.job_info, |
| + status_list[i++].get()); |
| } |
| - scoped_ptr<base::ListValue> args(new base::ListValue()); |
| - args->Append(event_list.release()); |
| - scoped_ptr<extensions::Event> event(new extensions::Event( |
| - extensions::event_names::kOnFileTransfersUpdated, args.Pass())); |
| - extensions::ExtensionSystem::Get(profile_)->event_router()-> |
| - DispatchEventToExtension(kFileManagerAppId, event.Pass()); |
| - |
| + BroadcastEvent( |
| + profile_, |
| + file_browser_private::OnFileTransfersUpdated::kEventName, |
| + file_browser_private::OnFileTransfersUpdated::Create(status_list)); |
| last_file_transfer_event_ = now; |
| } |
| @@ -571,8 +572,8 @@ void EventRouter::OnRefreshTokenInvalid() { |
| // Raise a DriveConnectionStatusChanged event to notify the status offline. |
| BroadcastEvent( |
| profile_, |
| - extensions::event_names::kOnFileBrowserDriveConnectionStatusChanged, |
| - make_scoped_ptr(new base::ListValue)); |
| + file_browser_private::OnDriveConnectionStatusChanged::kEventName, |
| + file_browser_private::OnDriveConnectionStatusChanged::Create()); |
| } |
| void EventRouter::HandleFileWatchNotification(const base::FilePath& local_path, |
| @@ -616,10 +617,10 @@ void EventRouter::DispatchDirectoryChangeEvent( |
| watch_info->Set("entry", entry); |
| watch_info->SetString("eventType", |
| got_error ? kPathWatchError : kPathChanged); |
| - scoped_ptr<extensions::Event> event(new extensions::Event( |
| - extensions::event_names::kOnDirectoryChanged, args.Pass())); |
| - extensions::ExtensionSystem::Get(profile_)->event_router()-> |
| - DispatchEventToExtension(extension_id, event.Pass()); |
| + BroadcastEvent( |
| + profile_, |
| + file_browser_private::OnDirectoryChanged::kEventName, |
| + args.Pass()); |
| } |
| } |