| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/extensions/api/api_resource_event_notifier.h" | 5 #include "chrome/browser/extensions/api/api_resource_event_notifier.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/json/json_writer.h" | 8 #include "base/json/json_writer.h" |
| 9 #include "base/values.h" | 9 #include "base/values.h" |
| 10 #include "chrome/browser/extensions/event_router.h" | 10 #include "chrome/browser/extensions/event_router.h" |
| 11 #include "chrome/browser/profiles/profile.h" | 11 #include "chrome/browser/profiles/profile.h" |
| 12 #include "content/public/browser/browser_thread.h" | 12 #include "content/public/browser/browser_thread.h" |
| 13 | 13 |
| 14 using content::BrowserThread; | 14 using content::BrowserThread; |
| 15 | 15 |
| 16 namespace events { | 16 namespace events { |
| 17 const char kExperimentalSocketOnEvent[] = "experimental.socket.onEvent"; | |
| 18 const char kExperimentalUsbOnEvent[] = "experimental.usb.onEvent"; | 17 const char kExperimentalUsbOnEvent[] = "experimental.usb.onEvent"; |
| 19 }; | 18 }; |
| 20 | 19 |
| 21 namespace extensions { | 20 namespace extensions { |
| 22 | 21 |
| 23 const char kEventTypeKey[] = "type"; | 22 const char kEventTypeKey[] = "type"; |
| 24 | 23 |
| 25 const char kEventTypeConnectComplete[] = "connectComplete"; | 24 const char kEventTypeConnectComplete[] = "connectComplete"; |
| 26 const char kEventTypeDataRead[] = "dataRead"; | 25 const char kEventTypeDataRead[] = "dataRead"; |
| 27 const char kEventTypeWriteComplete[] = "writeComplete"; | 26 const char kEventTypeWriteComplete[] = "writeComplete"; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 43 const std::string& src_extension_id, | 42 const std::string& src_extension_id, |
| 44 int src_id, | 43 int src_id, |
| 45 const GURL& src_url) | 44 const GURL& src_url) |
| 46 : router_(router), | 45 : router_(router), |
| 47 profile_(profile), | 46 profile_(profile), |
| 48 src_extension_id_(src_extension_id), | 47 src_extension_id_(src_extension_id), |
| 49 src_id_(src_id), | 48 src_id_(src_id), |
| 50 src_url_(src_url) { | 49 src_url_(src_url) { |
| 51 } | 50 } |
| 52 | 51 |
| 53 void ApiResourceEventNotifier::OnConnectComplete(int result_code) { | |
| 54 SendEventWithResultCode(events::kExperimentalSocketOnEvent, | |
| 55 API_RESOURCE_EVENT_CONNECT_COMPLETE, result_code); | |
| 56 } | |
| 57 | |
| 58 void ApiResourceEventNotifier::OnDataRead(int result_code, | |
| 59 base::ListValue* data, | |
| 60 const std::string& address, | |
| 61 int port) { | |
| 62 // Do we have a destination for this event? There will be one if a source id | |
| 63 // was injected by the request handler for the resource's create method in | |
| 64 // schema_generated_bindings.js, which will in turn be the case if the caller | |
| 65 // of the create method provided an onEvent closure. | |
| 66 if (src_id_ < 0) { | |
| 67 delete data; | |
| 68 return; | |
| 69 } | |
| 70 | |
| 71 DictionaryValue* event = CreateApiResourceEvent( | |
| 72 API_RESOURCE_EVENT_DATA_READ); | |
| 73 event->SetInteger(kResultCodeKey, result_code); | |
| 74 event->Set(kDataKey, data); | |
| 75 event->SetString(kAddressKey, address); | |
| 76 event->SetInteger(kPortKey, port); | |
| 77 DispatchEvent(events::kExperimentalSocketOnEvent, event); | |
| 78 } | |
| 79 | |
| 80 void ApiResourceEventNotifier::OnWriteComplete(int result_code) { | |
| 81 SendEventWithResultCode(events::kExperimentalSocketOnEvent, | |
| 82 API_RESOURCE_EVENT_WRITE_COMPLETE, result_code); | |
| 83 } | |
| 84 | |
| 85 void ApiResourceEventNotifier::OnTransferComplete(UsbTransferStatus status, | 52 void ApiResourceEventNotifier::OnTransferComplete(UsbTransferStatus status, |
| 86 const std::string& error, | 53 const std::string& error, |
| 87 base::BinaryValue* data) { | 54 base::BinaryValue* data) { |
| 88 if (src_id_ < 0) { | 55 if (src_id_ < 0) { |
| 89 delete data; | 56 delete data; |
| 90 return; | 57 return; |
| 91 } | 58 } |
| 92 | 59 |
| 93 DictionaryValue* event = CreateApiResourceEvent( | 60 DictionaryValue* event = CreateApiResourceEvent( |
| 94 API_RESOURCE_EVENT_TRANSFER_COMPLETE); | 61 API_RESOURCE_EVENT_TRANSFER_COMPLETE); |
| 95 event->SetInteger(kResultCodeKey, status); | 62 event->SetInteger(kResultCodeKey, status); |
| 96 event->Set(kDataKey, data); | 63 event->Set(kDataKey, data); |
| 97 if (!error.empty()) { | 64 if (!error.empty()) { |
| 98 event->SetString(kErrorKey, error); | 65 event->SetString(kErrorKey, error); |
| 99 } | 66 } |
| 100 | 67 |
| 101 DispatchEvent(events::kExperimentalUsbOnEvent, event); | 68 DispatchEvent(events::kExperimentalUsbOnEvent, event); |
| 102 } | 69 } |
| 103 | 70 |
| 104 // static | 71 // static |
| 105 std::string ApiResourceEventNotifier::ApiResourceEventTypeToString( | 72 std::string ApiResourceEventNotifier::ApiResourceEventTypeToString( |
| 106 ApiResourceEventType event_type) { | 73 ApiResourceEventType event_type) { |
| 107 switch (event_type) { | 74 switch (event_type) { |
| 108 case API_RESOURCE_EVENT_CONNECT_COMPLETE: | |
| 109 return kEventTypeConnectComplete; | |
| 110 case API_RESOURCE_EVENT_DATA_READ: | |
| 111 return kEventTypeDataRead; | |
| 112 case API_RESOURCE_EVENT_WRITE_COMPLETE: | |
| 113 return kEventTypeWriteComplete; | |
| 114 case API_RESOURCE_EVENT_TRANSFER_COMPLETE: | 75 case API_RESOURCE_EVENT_TRANSFER_COMPLETE: |
| 115 return kEventTypeTransferComplete; | 76 return kEventTypeTransferComplete; |
| 116 } | 77 } |
| 117 | 78 |
| 118 NOTREACHED(); | 79 NOTREACHED(); |
| 119 return std::string(); | 80 return std::string(); |
| 120 } | 81 } |
| 121 | 82 |
| 122 ApiResourceEventNotifier::~ApiResourceEventNotifier() {} | 83 ApiResourceEventNotifier::~ApiResourceEventNotifier() {} |
| 123 | 84 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 161 int result_code) { | 122 int result_code) { |
| 162 if (src_id_ < 0) | 123 if (src_id_ < 0) |
| 163 return; | 124 return; |
| 164 | 125 |
| 165 DictionaryValue* event = CreateApiResourceEvent(event_type); | 126 DictionaryValue* event = CreateApiResourceEvent(event_type); |
| 166 event->SetInteger(kResultCodeKey, result_code); | 127 event->SetInteger(kResultCodeKey, result_code); |
| 167 DispatchEvent(extension, event); | 128 DispatchEvent(extension, event); |
| 168 } | 129 } |
| 169 | 130 |
| 170 } // namespace extensions | 131 } // namespace extensions |
| OLD | NEW |