| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "extensions/browser/api/cast_channel/cast_channel_api.h" | 5 #include "extensions/browser/api/cast_channel/cast_channel_api.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/json/json_writer.h" | 10 #include "base/json/json_writer.h" |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 165 OnMessage::Create(channel_info, message_info); | 165 OnMessage::Create(channel_info, message_info); |
| 166 VLOG(1) << "Sending message " << ParamToString(message_info) | 166 VLOG(1) << "Sending message " << ParamToString(message_info) |
| 167 << " to channel " << ParamToString(channel_info); | 167 << " to channel " << ParamToString(channel_info); |
| 168 scoped_ptr<Event> event(new Event(OnMessage::kEventName, results.Pass())); | 168 scoped_ptr<Event> event(new Event(OnMessage::kEventName, results.Pass())); |
| 169 extensions::EventRouter::Get(browser_context_) | 169 extensions::EventRouter::Get(browser_context_) |
| 170 ->DispatchEventToExtension(socket->owner_extension_id(), event.Pass()); | 170 ->DispatchEventToExtension(socket->owner_extension_id(), event.Pass()); |
| 171 } | 171 } |
| 172 | 172 |
| 173 CastChannelAPI::~CastChannelAPI() {} | 173 CastChannelAPI::~CastChannelAPI() {} |
| 174 | 174 |
| 175 CastChannelAsyncApiFunction::CastChannelAsyncApiFunction() | 175 CastChannelAsyncApiFunction::CastChannelAsyncApiFunction() : manager_(NULL) { |
| 176 : manager_(NULL), error_(cast_channel::CHANNEL_ERROR_NONE) { } | 176 } |
| 177 | 177 |
| 178 CastChannelAsyncApiFunction::~CastChannelAsyncApiFunction() { } | 178 CastChannelAsyncApiFunction::~CastChannelAsyncApiFunction() { } |
| 179 | 179 |
| 180 bool CastChannelAsyncApiFunction::PrePrepare() { | 180 bool CastChannelAsyncApiFunction::PrePrepare() { |
| 181 manager_ = ApiResourceManager<CastSocket>::Get(browser_context()); | 181 manager_ = ApiResourceManager<CastSocket>::Get(browser_context()); |
| 182 return true; | 182 return true; |
| 183 } | 183 } |
| 184 | 184 |
| 185 bool CastChannelAsyncApiFunction::Respond() { | 185 bool CastChannelAsyncApiFunction::Respond() { |
| 186 return error_ == cast_channel::CHANNEL_ERROR_NONE; | 186 return GetError().empty(); |
| 187 } | 187 } |
| 188 | 188 |
| 189 CastSocket* CastChannelAsyncApiFunction::GetSocketOrCompleteWithError( | 189 CastSocket* CastChannelAsyncApiFunction::GetSocketOrCompleteWithError( |
| 190 int channel_id) { | 190 int channel_id) { |
| 191 CastSocket* socket = GetSocket(channel_id); | 191 CastSocket* socket = GetSocket(channel_id); |
| 192 if (!socket) { | 192 if (!socket) { |
| 193 SetResultFromError(channel_id, | 193 SetResultFromError(channel_id, |
| 194 cast_channel::CHANNEL_ERROR_INVALID_CHANNEL_ID); | 194 cast_channel::CHANNEL_ERROR_INVALID_CHANNEL_ID); |
| 195 AsyncWorkCompleted(); | 195 AsyncWorkCompleted(); |
| 196 } | 196 } |
| (...skipping 12 matching lines...) Expand all Loading... |
| 209 void CastChannelAsyncApiFunction::RemoveSocket(int channel_id) { | 209 void CastChannelAsyncApiFunction::RemoveSocket(int channel_id) { |
| 210 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 210 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 211 DCHECK(manager_); | 211 DCHECK(manager_); |
| 212 manager_->Remove(extension_->id(), channel_id); | 212 manager_->Remove(extension_->id(), channel_id); |
| 213 } | 213 } |
| 214 | 214 |
| 215 void CastChannelAsyncApiFunction::SetResultFromSocket( | 215 void CastChannelAsyncApiFunction::SetResultFromSocket( |
| 216 const CastSocket& socket) { | 216 const CastSocket& socket) { |
| 217 ChannelInfo channel_info; | 217 ChannelInfo channel_info; |
| 218 FillChannelInfo(socket, &channel_info); | 218 FillChannelInfo(socket, &channel_info); |
| 219 error_ = socket.error_state(); | 219 ChannelError error = socket.error_state(); |
| 220 if (error != cast_channel::CHANNEL_ERROR_NONE) { |
| 221 SetError("Channel socket error = " + base::IntToString(error)); |
| 222 } |
| 220 SetResultFromChannelInfo(channel_info); | 223 SetResultFromChannelInfo(channel_info); |
| 221 } | 224 } |
| 222 | 225 |
| 223 void CastChannelAsyncApiFunction::SetResultFromError(int channel_id, | 226 void CastChannelAsyncApiFunction::SetResultFromError(int channel_id, |
| 224 ChannelError error) { | 227 ChannelError error) { |
| 225 ChannelInfo channel_info; | 228 ChannelInfo channel_info; |
| 226 channel_info.channel_id = channel_id; | 229 channel_info.channel_id = channel_id; |
| 227 channel_info.url = ""; | 230 channel_info.url = ""; |
| 228 channel_info.ready_state = cast_channel::READY_STATE_CLOSED; | 231 channel_info.ready_state = cast_channel::READY_STATE_CLOSED; |
| 229 channel_info.error_state = error; | 232 channel_info.error_state = error; |
| 230 channel_info.connect_info.ip_address = ""; | 233 channel_info.connect_info.ip_address = ""; |
| 231 channel_info.connect_info.port = 0; | 234 channel_info.connect_info.port = 0; |
| 232 channel_info.connect_info.auth = cast_channel::CHANNEL_AUTH_TYPE_SSL; | 235 channel_info.connect_info.auth = cast_channel::CHANNEL_AUTH_TYPE_SSL; |
| 233 SetResultFromChannelInfo(channel_info); | 236 SetResultFromChannelInfo(channel_info); |
| 234 error_ = error; | 237 SetError("Channel error = " + base::IntToString(error)); |
| 235 } | 238 } |
| 236 | 239 |
| 237 CastSocket* CastChannelAsyncApiFunction::GetSocket(int channel_id) { | 240 CastSocket* CastChannelAsyncApiFunction::GetSocket(int channel_id) { |
| 238 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 241 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 239 DCHECK(manager_); | 242 DCHECK(manager_); |
| 240 return manager_->Get(extension_->id(), channel_id); | 243 return manager_->Get(extension_->id(), channel_id); |
| 241 } | 244 } |
| 242 | 245 |
| 243 void CastChannelAsyncApiFunction::SetResultFromChannelInfo( | 246 void CastChannelAsyncApiFunction::SetResultFromChannelInfo( |
| 244 const ChannelInfo& channel_info) { | 247 const ChannelInfo& channel_info) { |
| (...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 528 std::string& signature = params_->signature; | 531 std::string& signature = params_->signature; |
| 529 if (signature.empty() || keys.empty() || | 532 if (signature.empty() || keys.empty() || |
| 530 !cast_channel::SetTrustedCertificateAuthorities(keys, signature)) { | 533 !cast_channel::SetTrustedCertificateAuthorities(keys, signature)) { |
| 531 SetError("Unable to set authority keys."); | 534 SetError("Unable to set authority keys."); |
| 532 } | 535 } |
| 533 | 536 |
| 534 AsyncWorkCompleted(); | 537 AsyncWorkCompleted(); |
| 535 } | 538 } |
| 536 | 539 |
| 537 } // namespace extensions | 540 } // namespace extensions |
| OLD | NEW |