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 "content/renderer/pepper/pepper_device_enumeration_event_handler.h" | 5 #include "content/renderer/pepper/pepper_device_enumeration_event_handler.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "ppapi/shared_impl/ppb_device_ref_shared.h" | 8 #include "ppapi/shared_impl/ppb_device_ref_shared.h" |
9 | 9 |
10 namespace content { | 10 namespace content { |
(...skipping 19 matching lines...) Expand all Loading... |
30 DCHECK(enumerate_callbacks_.empty()); | 30 DCHECK(enumerate_callbacks_.empty()); |
31 DCHECK(open_callbacks_.empty()); | 31 DCHECK(open_callbacks_.empty()); |
32 } | 32 } |
33 | 33 |
34 int PepperDeviceEnumerationEventHandler::RegisterEnumerateDevicesCallback( | 34 int PepperDeviceEnumerationEventHandler::RegisterEnumerateDevicesCallback( |
35 const webkit::ppapi::PluginDelegate::EnumerateDevicesCallback& callback) { | 35 const webkit::ppapi::PluginDelegate::EnumerateDevicesCallback& callback) { |
36 enumerate_callbacks_[next_id_] = callback; | 36 enumerate_callbacks_[next_id_] = callback; |
37 return next_id_++; | 37 return next_id_++; |
38 } | 38 } |
39 | 39 |
| 40 void PepperDeviceEnumerationEventHandler::UnregisterEnumerateDevicesCallback( |
| 41 int request_id) { |
| 42 enumerate_callbacks_.erase(request_id); |
| 43 } |
| 44 |
40 int PepperDeviceEnumerationEventHandler::RegisterOpenDeviceCallback( | 45 int PepperDeviceEnumerationEventHandler::RegisterOpenDeviceCallback( |
41 const PepperPluginDelegateImpl::OpenDeviceCallback& callback) { | 46 const PepperPluginDelegateImpl::OpenDeviceCallback& callback) { |
42 open_callbacks_[next_id_] = callback; | 47 open_callbacks_[next_id_] = callback; |
43 return next_id_++; | 48 return next_id_++; |
44 } | 49 } |
45 | 50 |
46 void PepperDeviceEnumerationEventHandler::OnStreamGenerated( | 51 void PepperDeviceEnumerationEventHandler::OnStreamGenerated( |
47 int request_id, | 52 int request_id, |
48 const std::string& label, | 53 const std::string& label, |
49 const StreamDeviceInfoArray& audio_device_array, | 54 const StreamDeviceInfoArray& audio_device_array, |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
114 const StreamDeviceInfoArray& device_array) { | 119 const StreamDeviceInfoArray& device_array) { |
115 EnumerateCallbackMap::iterator iter = enumerate_callbacks_.find(request_id); | 120 EnumerateCallbackMap::iterator iter = enumerate_callbacks_.find(request_id); |
116 if (iter == enumerate_callbacks_.end()) { | 121 if (iter == enumerate_callbacks_.end()) { |
117 // This might be enumerated result sent before StopEnumerateDevices is | 122 // This might be enumerated result sent before StopEnumerateDevices is |
118 // called since EnumerateDevices is persistent request. | 123 // called since EnumerateDevices is persistent request. |
119 return; | 124 return; |
120 } | 125 } |
121 | 126 |
122 webkit::ppapi::PluginDelegate::EnumerateDevicesCallback callback = | 127 webkit::ppapi::PluginDelegate::EnumerateDevicesCallback callback = |
123 iter->second; | 128 iter->second; |
124 enumerate_callbacks_.erase(iter); | |
125 | 129 |
126 std::vector<ppapi::DeviceRefData> devices; | 130 std::vector<ppapi::DeviceRefData> devices; |
127 if (succeeded) { | 131 if (succeeded) { |
128 devices.reserve(device_array.size()); | 132 devices.reserve(device_array.size()); |
129 for (StreamDeviceInfoArray::const_iterator info = | 133 for (StreamDeviceInfoArray::const_iterator info = |
130 device_array.begin(); info != device_array.end(); ++info) { | 134 device_array.begin(); info != device_array.end(); ++info) { |
131 devices.push_back(FromStreamDeviceInfo(*info)); | 135 devices.push_back(FromStreamDeviceInfo(*info)); |
132 } | 136 } |
133 } | 137 } |
134 callback.Run(request_id, succeeded, devices); | 138 callback.Run(request_id, succeeded, devices); |
135 } | 139 } |
136 | 140 |
137 void PepperDeviceEnumerationEventHandler::NotifyDeviceOpened( | 141 void PepperDeviceEnumerationEventHandler::NotifyDeviceOpened( |
138 int request_id, | 142 int request_id, |
139 bool succeeded, | 143 bool succeeded, |
140 const std::string& label) { | 144 const std::string& label) { |
141 OpenCallbackMap::iterator iter = open_callbacks_.find(request_id); | 145 OpenCallbackMap::iterator iter = open_callbacks_.find(request_id); |
142 if (iter == open_callbacks_.end()) { | 146 if (iter == open_callbacks_.end()) { |
143 NOTREACHED(); | 147 NOTREACHED(); |
144 return; | 148 return; |
145 } | 149 } |
146 | 150 |
147 PepperPluginDelegateImpl::OpenDeviceCallback callback = iter->second; | 151 PepperPluginDelegateImpl::OpenDeviceCallback callback = iter->second; |
148 open_callbacks_.erase(iter); | 152 open_callbacks_.erase(iter); |
149 | 153 |
150 callback.Run(request_id, succeeded, label); | 154 callback.Run(request_id, succeeded, label); |
151 } | 155 } |
152 | 156 |
153 } // namespace content | 157 } // namespace content |
OLD | NEW |