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

Side by Side Diff: extensions/browser/api/cast_channel/cast_channel_api.cc

Issue 690383002: cast channel error cleanup (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Code review feedback changes. Created 6 years, 1 month 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 unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « extensions/browser/api/cast_channel/cast_channel_api.h ('k') | extensions/browser/api/cast_channel/cast_channel_apitest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698