Chromium Code Reviews| Index: chrome/browser/extensions/api/api_resource_event_notifier.cc |
| diff --git a/chrome/browser/extensions/api/api_resource_event_notifier.cc b/chrome/browser/extensions/api/api_resource_event_notifier.cc |
| index 000ace5797e34814f29af6d7b06c22920b84a90c..63fc4b76898a24a848239473a0c9b6a29c8b5474 100644 |
| --- a/chrome/browser/extensions/api/api_resource_event_notifier.cc |
| +++ b/chrome/browser/extensions/api/api_resource_event_notifier.cc |
| @@ -14,18 +14,20 @@ |
| using content::BrowserThread; |
| namespace events { |
| -// TODO(miket): This should be generic, but at the moment only socket sends |
| -// onEvent events. We'll fix this when serial becomes nonblocking. |
| -const char kOnAPIResourceEvent[] = "experimental.socket.onEvent"; |
| +const char kExperimentalSocketOnEvent[] = "experimental.socket.onEvent"; |
| +const char kExperimentalUsbOnEvent[] = "experimental.usb.onEvent"; |
| }; |
| namespace extensions { |
| const char kEventTypeKey[] = "type"; |
| + |
|
asargent_no_longer_on_chrome
2012/04/26 21:21:45
nit: I have a slight preference to not have this e
|
| const char kEventTypeConnectComplete[] = "connectComplete"; |
| const char kEventTypeDataRead[] = "dataRead"; |
| const char kEventTypeWriteComplete[] = "writeComplete"; |
| +const char kEventTypeTransferComplete[] = "transferComplete"; |
|
asargent_no_longer_on_chrome
2012/04/26 21:21:45
how about moving this up 1 line to be directly und
Garret Kelly
2012/04/27 00:32:34
I had separated the groups based on the extension
|
| + |
| const char kSrcIdKey[] = "srcId"; |
| const char kIsFinalEventKey[] = "isFinalEvent"; |
| @@ -49,7 +51,8 @@ APIResourceEventNotifier::APIResourceEventNotifier( |
| APIResourceEventNotifier::~APIResourceEventNotifier() {} |
| void APIResourceEventNotifier::OnConnectComplete(int result_code) { |
| - SendEventWithResultCode(API_RESOURCE_EVENT_CONNECT_COMPLETE, result_code); |
| + SendEventWithResultCode(events::kExperimentalSocketOnEvent, |
| + API_RESOURCE_EVENT_CONNECT_COMPLETE, result_code); |
| } |
| void APIResourceEventNotifier::OnDataRead(int result_code, |
| @@ -71,14 +74,30 @@ void APIResourceEventNotifier::OnDataRead(int result_code, |
| event->Set(kDataKey, data); |
| event->SetString(kAddressKey, address); |
| event->SetInteger(kPortKey, port); |
| - DispatchEvent(event); |
| + DispatchEvent(events::kExperimentalSocketOnEvent, event); |
| } |
| void APIResourceEventNotifier::OnWriteComplete(int result_code) { |
| - SendEventWithResultCode(API_RESOURCE_EVENT_WRITE_COMPLETE, result_code); |
| + SendEventWithResultCode(events::kExperimentalSocketOnEvent, |
| + API_RESOURCE_EVENT_WRITE_COMPLETE, result_code); |
| +} |
| + |
| +void APIResourceEventNotifier::OnTransferComplete(int result_code, |
| + base::ListValue* data) { |
| + if (src_id_ < 0) { |
| + delete data; |
| + return; |
| + } |
| + |
| + DictionaryValue* event = CreateAPIResourceEvent( |
| + API_RESOURCE_EVENT_TRANSFER_COMPLETE); |
| + event->SetInteger(kResultCodeKey, result_code); |
| + event->Set(kDataKey, data); |
| + DispatchEvent(events::kExperimentalUsbOnEvent, event); |
| } |
| void APIResourceEventNotifier::SendEventWithResultCode( |
| + const std::string &extension, |
| APIResourceEventType event_type, |
| int result_code) { |
| if (src_id_ < 0) |
| @@ -86,18 +105,20 @@ void APIResourceEventNotifier::SendEventWithResultCode( |
| DictionaryValue* event = CreateAPIResourceEvent(event_type); |
| event->SetInteger(kResultCodeKey, result_code); |
| - DispatchEvent(event); |
| + DispatchEvent(extension, event); |
| } |
| -void APIResourceEventNotifier::DispatchEvent(DictionaryValue* event) { |
| +void APIResourceEventNotifier::DispatchEvent(const std::string &extension, |
| + DictionaryValue* event) { |
| BrowserThread::PostTask( |
| BrowserThread::UI, FROM_HERE, |
| base::Bind( |
| - &APIResourceEventNotifier::DispatchEventOnUIThread, this, event)); |
| + &APIResourceEventNotifier::DispatchEventOnUIThread, this, extension, |
| + event)); |
| } |
| void APIResourceEventNotifier::DispatchEventOnUIThread( |
| - DictionaryValue* event) { |
| + const std::string &extension, DictionaryValue* event) { |
| ListValue args; |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| @@ -105,9 +126,8 @@ void APIResourceEventNotifier::DispatchEventOnUIThread( |
| args.Set(0, event); |
| std::string json_args; |
| base::JSONWriter::Write(&args, &json_args); |
| - router_->DispatchEventToExtension(src_extension_id_, |
| - events::kOnAPIResourceEvent, |
| - json_args, profile_, src_url_); |
| + router_->DispatchEventToExtension(src_extension_id_, extension, json_args, |
| + profile_, src_url_); |
| } |
| DictionaryValue* APIResourceEventNotifier::CreateAPIResourceEvent( |
| @@ -135,6 +155,8 @@ std::string APIResourceEventNotifier::APIResourceEventTypeToString( |
| return kEventTypeDataRead; |
| case API_RESOURCE_EVENT_WRITE_COMPLETE: |
| return kEventTypeWriteComplete; |
| + case API_RESOURCE_EVENT_TRANSFER_COMPLETE: |
| + return kEventTypeTransferComplete; |
| } |
| NOTREACHED(); |