| 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 "components/copresence/rpc/rpc_handler.h" | 5 #include "components/copresence/rpc/rpc_handler.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 255 GetDeviceCapabilities(*request).release()); | 255 GetDeviceCapabilities(*request).release()); |
| 256 SendServerRequest(kReportRequestRpcName, | 256 SendServerRequest(kReportRequestRpcName, |
| 257 app_id, | 257 app_id, |
| 258 request.Pass(), | 258 request.Pass(), |
| 259 // On destruction, this request will be cancelled. | 259 // On destruction, this request will be cancelled. |
| 260 base::Bind(&RpcHandler::ReportResponseHandler, | 260 base::Bind(&RpcHandler::ReportResponseHandler, |
| 261 base::Unretained(this), | 261 base::Unretained(this), |
| 262 status_callback)); | 262 status_callback)); |
| 263 } | 263 } |
| 264 | 264 |
| 265 void RpcHandler::ReportTokens(TokenMedium medium, | 265 void RpcHandler::ReportTokens(const std::vector<FullToken>& tokens) { |
| 266 const std::vector<std::string>& tokens) { | |
| 267 DCHECK_EQ(medium, AUDIO_ULTRASOUND_PASSBAND); | |
| 268 DCHECK(!tokens.empty()); | 266 DCHECK(!tokens.empty()); |
| 269 | 267 |
| 270 scoped_ptr<ReportRequest> request(new ReportRequest); | 268 scoped_ptr<ReportRequest> request(new ReportRequest); |
| 271 for (size_t i = 0; i < tokens.size(); ++i) { | 269 for (size_t i = 0; i < tokens.size(); ++i) { |
| 272 const std::string& token = ToUrlSafe(tokens[i]); | 270 const std::string& token = ToUrlSafe(tokens[i].token); |
| 273 if (invalid_audio_token_cache_.HasKey(token)) | 271 if (invalid_audio_token_cache_.HasKey(token)) |
| 274 continue; | 272 continue; |
| 275 | 273 |
| 276 DVLOG(3) << "Sending token " << token << " to server."; | 274 DVLOG(3) << "Sending token " << token << " to server."; |
| 277 | 275 |
| 278 TokenObservation* token_observation = | 276 TokenObservation* token_observation = |
| 279 request->mutable_update_signals_request()->add_token_observation(); | 277 request->mutable_update_signals_request()->add_token_observation(); |
| 280 token_observation->set_token_id(token); | 278 token_observation->set_token_id(token); |
| 281 | 279 |
| 282 TokenSignals* signals = token_observation->add_signals(); | 280 TokenSignals* signals = token_observation->add_signals(); |
| 283 signals->set_medium(medium); | 281 signals->set_medium(tokens[i].audible ? AUDIO_AUDIBLE_DTMF |
| 282 : AUDIO_ULTRASOUND_PASSBAND); |
| 284 signals->set_observed_time_millis(base::Time::Now().ToJsTime()); | 283 signals->set_observed_time_millis(base::Time::Now().ToJsTime()); |
| 285 } | 284 } |
| 286 SendReportRequest(request.Pass()); | 285 SendReportRequest(request.Pass()); |
| 287 } | 286 } |
| 288 | 287 |
| 289 void RpcHandler::ConnectToWhispernet() { | 288 void RpcHandler::ConnectToWhispernet() { |
| 290 WhispernetClient* whispernet_client = delegate_->GetWhispernetClient(); | 289 WhispernetClient* whispernet_client = delegate_->GetWhispernetClient(); |
| 291 | 290 |
| 292 // |directive_handler_| will be destructed with us, so unretained is safe. | 291 // |directive_handler_| will be destructed with us, so unretained is safe. |
| 293 directive_handler_.reset(new DirectiveHandler); | 292 directive_handler_.reset(new DirectiveHandler); |
| 294 directive_handler_->Initialize( | 293 directive_handler_->Initialize( |
| 295 base::Bind(&WhispernetClient::DecodeSamples, | 294 base::Bind(&WhispernetClient::DecodeSamples, |
| 296 base::Unretained(whispernet_client)), | 295 base::Unretained(whispernet_client)), |
| 297 base::Bind(&RpcHandler::AudioDirectiveListToWhispernetConnector, | 296 base::Bind(&RpcHandler::AudioDirectiveListToWhispernetConnector, |
| 298 base::Unretained(this))); | 297 base::Unretained(this))); |
| 299 | 298 |
| 300 whispernet_client->RegisterTokensCallback( | 299 whispernet_client->RegisterTokensCallback( |
| 301 base::Bind(&RpcHandler::ReportTokens, | 300 base::Bind(&RpcHandler::ReportTokens, |
| 302 // On destruction, this callback will be disconnected. | 301 // On destruction, this callback will be disconnected. |
| 303 base::Unretained(this), | 302 base::Unretained(this))); |
| 304 AUDIO_ULTRASOUND_PASSBAND)); | |
| 305 } | 303 } |
| 306 | 304 |
| 307 // Private methods | 305 // Private methods |
| 308 | 306 |
| 309 void RpcHandler::RegisterResponseHandler( | 307 void RpcHandler::RegisterResponseHandler( |
| 310 const SuccessCallback& init_done_callback, | 308 const SuccessCallback& init_done_callback, |
| 311 HttpPost* completed_post, | 309 HttpPost* completed_post, |
| 312 int http_status_code, | 310 int http_status_code, |
| 313 const std::string& response_data) { | 311 const std::string& response_data) { |
| 314 if (completed_post) { | 312 if (completed_post) { |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 502 bool audible, | 500 bool audible, |
| 503 const WhispernetClient::SamplesCallback& samples_callback) { | 501 const WhispernetClient::SamplesCallback& samples_callback) { |
| 504 WhispernetClient* whispernet_client = delegate_->GetWhispernetClient(); | 502 WhispernetClient* whispernet_client = delegate_->GetWhispernetClient(); |
| 505 if (whispernet_client) { | 503 if (whispernet_client) { |
| 506 whispernet_client->RegisterSamplesCallback(samples_callback); | 504 whispernet_client->RegisterSamplesCallback(samples_callback); |
| 507 whispernet_client->EncodeToken(token, audible); | 505 whispernet_client->EncodeToken(token, audible); |
| 508 } | 506 } |
| 509 } | 507 } |
| 510 | 508 |
| 511 } // namespace copresence | 509 } // namespace copresence |
| OLD | NEW |