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 |