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

Unified Diff: chrome/browser/extensions/api/api_resource_event_notifier.cc

Issue 10224009: Experimental USB API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 8 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 side-by-side diff with in-line comments
Download patch
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();

Powered by Google App Engine
This is Rietveld 408576698