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

Side by Side Diff: remoting/client/plugin/chromoting_instance.cc

Issue 1864213002: Convert //remoting to use std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Mac IWYU Created 4 years, 8 months 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 (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 "remoting/client/plugin/chromoting_instance.h" 5 #include "remoting/client/plugin/chromoting_instance.h"
6 6
7 #include <nacl_io/nacl_io.h> 7 #include <nacl_io/nacl_io.h>
8 #include <sys/mount.h> 8 #include <sys/mount.h>
9 9
10 #include <string> 10 #include <string>
11 #include <utility> 11 #include <utility>
12 #include <vector> 12 #include <vector>
13 13
14 #include "base/bind.h" 14 #include "base/bind.h"
15 #include "base/callback.h" 15 #include "base/callback.h"
16 #include "base/callback_helpers.h" 16 #include "base/callback_helpers.h"
17 #include "base/json/json_reader.h" 17 #include "base/json/json_reader.h"
18 #include "base/json/json_writer.h" 18 #include "base/json/json_writer.h"
19 #include "base/lazy_instance.h" 19 #include "base/lazy_instance.h"
20 #include "base/logging.h" 20 #include "base/logging.h"
21 #include "base/memory/ptr_util.h"
21 #include "base/strings/string_number_conversions.h" 22 #include "base/strings/string_number_conversions.h"
22 #include "base/strings/string_split.h" 23 #include "base/strings/string_split.h"
23 #include "base/strings/stringprintf.h" 24 #include "base/strings/stringprintf.h"
24 #include "base/synchronization/lock.h" 25 #include "base/synchronization/lock.h"
25 #include "base/threading/platform_thread.h" 26 #include "base/threading/platform_thread.h"
26 #include "base/threading/thread.h" 27 #include "base/threading/thread.h"
27 #include "base/values.h" 28 #include "base/values.h"
28 #include "crypto/random.h" 29 #include "crypto/random.h"
29 #include "jingle/glue/thread_wrapper.h" 30 #include "jingle/glue/thread_wrapper.h"
30 #include "net/socket/ssl_server_socket.h" 31 #include "net/socket/ssl_server_socket.h"
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 183
183 // Resister this instance to handle debug log messsages. 184 // Resister this instance to handle debug log messsages.
184 RegisterLoggingInstance(); 185 RegisterLoggingInstance();
185 186
186 // Initialize random seed for libjingle. It's necessary only with OpenSSL. 187 // Initialize random seed for libjingle. It's necessary only with OpenSSL.
187 char random_seed[kRandomSeedSize]; 188 char random_seed[kRandomSeedSize];
188 crypto::RandBytes(random_seed, sizeof(random_seed)); 189 crypto::RandBytes(random_seed, sizeof(random_seed));
189 rtc::InitRandom(random_seed, sizeof(random_seed)); 190 rtc::InitRandom(random_seed, sizeof(random_seed));
190 191
191 // Send hello message. 192 // Send hello message.
192 PostLegacyJsonMessage("hello", make_scoped_ptr(new base::DictionaryValue())); 193 PostLegacyJsonMessage("hello", base::WrapUnique(new base::DictionaryValue()));
193 } 194 }
194 195
195 ChromotingInstance::~ChromotingInstance() { 196 ChromotingInstance::~ChromotingInstance() {
196 DCHECK(plugin_task_runner_->BelongsToCurrentThread()); 197 DCHECK(plugin_task_runner_->BelongsToCurrentThread());
197 198
198 // Disconnect the client. 199 // Disconnect the client.
199 Disconnect(); 200 Disconnect();
200 201
201 // Unregister this instance so that debug log messages will no longer be sent 202 // Unregister this instance so that debug log messages will no longer be sent
202 // to it. This will stop all logging in all Chromoting instances. 203 // to it. This will stop all logging in all Chromoting instances.
(...skipping 16 matching lines...) Expand all
219 220
220 return true; 221 return true;
221 } 222 }
222 223
223 void ChromotingInstance::HandleMessage(const pp::Var& message) { 224 void ChromotingInstance::HandleMessage(const pp::Var& message) {
224 if (!message.is_string()) { 225 if (!message.is_string()) {
225 LOG(ERROR) << "Received a message that is not a string."; 226 LOG(ERROR) << "Received a message that is not a string.";
226 return; 227 return;
227 } 228 }
228 229
229 scoped_ptr<base::Value> json = base::JSONReader::Read( 230 std::unique_ptr<base::Value> json = base::JSONReader::Read(
230 message.AsString(), base::JSON_ALLOW_TRAILING_COMMAS); 231 message.AsString(), base::JSON_ALLOW_TRAILING_COMMAS);
231 base::DictionaryValue* message_dict = nullptr; 232 base::DictionaryValue* message_dict = nullptr;
232 std::string method; 233 std::string method;
233 base::DictionaryValue* data = nullptr; 234 base::DictionaryValue* data = nullptr;
234 if (!json.get() || 235 if (!json.get() ||
235 !json->GetAsDictionary(&message_dict) || 236 !json->GetAsDictionary(&message_dict) ||
236 !message_dict->GetString("method", &method) || 237 !message_dict->GetString("method", &method) ||
237 !message_dict->GetDictionary("data", &data)) { 238 !message_dict->GetDictionary("data", &data)) {
238 LOG(ERROR) << "Received invalid message:" << message.AsString(); 239 LOG(ERROR) << "Received invalid message:" << message.AsString();
239 return; 240 return;
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 // Assume that the decoder failure was caused by the host not encoding video 332 // Assume that the decoder failure was caused by the host not encoding video
332 // correctly and report it as a protocol error. 333 // correctly and report it as a protocol error.
333 // TODO(sergeyu): Consider using a different error code in case the decoder 334 // TODO(sergeyu): Consider using a different error code in case the decoder
334 // error was caused by some other problem. 335 // error was caused by some other problem.
335 OnConnectionState(protocol::ConnectionToHost::FAILED, 336 OnConnectionState(protocol::ConnectionToHost::FAILED,
336 protocol::INCOMPATIBLE_PROTOCOL); 337 protocol::INCOMPATIBLE_PROTOCOL);
337 } 338 }
338 339
339 void ChromotingInstance::OnVideoFirstFrameReceived() { 340 void ChromotingInstance::OnVideoFirstFrameReceived() {
340 PostLegacyJsonMessage("onFirstFrameReceived", 341 PostLegacyJsonMessage("onFirstFrameReceived",
341 make_scoped_ptr(new base::DictionaryValue())); 342 base::WrapUnique(new base::DictionaryValue()));
342 } 343 }
343 344
344 void ChromotingInstance::OnVideoFrameDirtyRegion( 345 void ChromotingInstance::OnVideoFrameDirtyRegion(
345 const webrtc::DesktopRegion& dirty_region) { 346 const webrtc::DesktopRegion& dirty_region) {
346 scoped_ptr<base::ListValue> rects_value(new base::ListValue()); 347 std::unique_ptr<base::ListValue> rects_value(new base::ListValue());
347 for (webrtc::DesktopRegion::Iterator i(dirty_region); !i.IsAtEnd(); 348 for (webrtc::DesktopRegion::Iterator i(dirty_region); !i.IsAtEnd();
348 i.Advance()) { 349 i.Advance()) {
349 const webrtc::DesktopRect& rect = i.rect(); 350 const webrtc::DesktopRect& rect = i.rect();
350 scoped_ptr<base::ListValue> rect_value(new base::ListValue()); 351 std::unique_ptr<base::ListValue> rect_value(new base::ListValue());
351 rect_value->AppendInteger(rect.left()); 352 rect_value->AppendInteger(rect.left());
352 rect_value->AppendInteger(rect.top()); 353 rect_value->AppendInteger(rect.top());
353 rect_value->AppendInteger(rect.width()); 354 rect_value->AppendInteger(rect.width());
354 rect_value->AppendInteger(rect.height()); 355 rect_value->AppendInteger(rect.height());
355 rects_value->Append(rect_value.release()); 356 rects_value->Append(rect_value.release());
356 } 357 }
357 358
358 scoped_ptr<base::DictionaryValue> data(new base::DictionaryValue()); 359 std::unique_ptr<base::DictionaryValue> data(new base::DictionaryValue());
359 data->Set("rects", rects_value.release()); 360 data->Set("rects", rects_value.release());
360 PostLegacyJsonMessage("onDebugRegion", std::move(data)); 361 PostLegacyJsonMessage("onDebugRegion", std::move(data));
361 } 362 }
362 363
363 void ChromotingInstance::OnConnectionState( 364 void ChromotingInstance::OnConnectionState(
364 protocol::ConnectionToHost::State state, 365 protocol::ConnectionToHost::State state,
365 protocol::ErrorCode error) { 366 protocol::ErrorCode error) {
366 pp::UMAPrivate uma(this); 367 pp::UMAPrivate uma(this);
367 368
368 switch (state) { 369 switch (state) {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
407 kFailedSessionDurationHistogram, 408 kFailedSessionDurationHistogram,
408 (base::TimeTicks::Now() - connection_connected_time_) 409 (base::TimeTicks::Now() - connection_connected_time_)
409 .InMilliseconds(), 410 .InMilliseconds(),
410 kConnectionDurationHistogramMinMinutes, 411 kConnectionDurationHistogramMinMinutes,
411 kConnectionDurationHistogramMaxMinutes, 412 kConnectionDurationHistogramMaxMinutes,
412 kConnectionDurationHistogramBuckets); 413 kConnectionDurationHistogramBuckets);
413 } 414 }
414 break; 415 break;
415 } 416 }
416 417
417 scoped_ptr<base::DictionaryValue> data(new base::DictionaryValue()); 418 std::unique_ptr<base::DictionaryValue> data(new base::DictionaryValue());
418 data->SetString("state", protocol::ConnectionToHost::StateToString(state)); 419 data->SetString("state", protocol::ConnectionToHost::StateToString(state));
419 data->SetString("error", ConnectionErrorToString(error)); 420 data->SetString("error", ConnectionErrorToString(error));
420 PostLegacyJsonMessage("onConnectionStatus", std::move(data)); 421 PostLegacyJsonMessage("onConnectionStatus", std::move(data));
421 } 422 }
422 423
423 void ChromotingInstance::FetchThirdPartyToken( 424 void ChromotingInstance::FetchThirdPartyToken(
424 const std::string& host_public_key, 425 const std::string& host_public_key,
425 const std::string& token_url, 426 const std::string& token_url,
426 const std::string& scope, 427 const std::string& scope,
427 const protocol::ThirdPartyTokenFetchedCallback& token_fetched_callback) { 428 const protocol::ThirdPartyTokenFetchedCallback& token_fetched_callback) {
428 // Once the Session object calls this function, it won't continue the 429 // Once the Session object calls this function, it won't continue the
429 // authentication until the callback is called (or connection is canceled). 430 // authentication until the callback is called (or connection is canceled).
430 // So, it's impossible to reach this with a callback already registered. 431 // So, it's impossible to reach this with a callback already registered.
431 DCHECK(third_party_token_fetched_callback_.is_null()); 432 DCHECK(third_party_token_fetched_callback_.is_null());
432 third_party_token_fetched_callback_ = token_fetched_callback; 433 third_party_token_fetched_callback_ = token_fetched_callback;
433 scoped_ptr<base::DictionaryValue> data(new base::DictionaryValue()); 434 std::unique_ptr<base::DictionaryValue> data(new base::DictionaryValue());
434 data->SetString("tokenUrl", token_url); 435 data->SetString("tokenUrl", token_url);
435 data->SetString("hostPublicKey", host_public_key); 436 data->SetString("hostPublicKey", host_public_key);
436 data->SetString("scope", scope); 437 data->SetString("scope", scope);
437 PostLegacyJsonMessage("fetchThirdPartyToken", std::move(data)); 438 PostLegacyJsonMessage("fetchThirdPartyToken", std::move(data));
438 } 439 }
439 440
440 void ChromotingInstance::OnConnectionReady(bool ready) { 441 void ChromotingInstance::OnConnectionReady(bool ready) {
441 scoped_ptr<base::DictionaryValue> data(new base::DictionaryValue()); 442 std::unique_ptr<base::DictionaryValue> data(new base::DictionaryValue());
442 data->SetBoolean("ready", ready); 443 data->SetBoolean("ready", ready);
443 PostLegacyJsonMessage("onConnectionReady", std::move(data)); 444 PostLegacyJsonMessage("onConnectionReady", std::move(data));
444 } 445 }
445 446
446 void ChromotingInstance::OnRouteChanged(const std::string& channel_name, 447 void ChromotingInstance::OnRouteChanged(const std::string& channel_name,
447 const protocol::TransportRoute& route) { 448 const protocol::TransportRoute& route) {
448 scoped_ptr<base::DictionaryValue> data(new base::DictionaryValue()); 449 std::unique_ptr<base::DictionaryValue> data(new base::DictionaryValue());
449 data->SetString("channel", channel_name); 450 data->SetString("channel", channel_name);
450 data->SetString("connectionType", 451 data->SetString("connectionType",
451 protocol::TransportRoute::GetTypeString(route.type)); 452 protocol::TransportRoute::GetTypeString(route.type));
452 PostLegacyJsonMessage("onRouteChanged", std::move(data)); 453 PostLegacyJsonMessage("onRouteChanged", std::move(data));
453 } 454 }
454 455
455 void ChromotingInstance::SetCapabilities(const std::string& capabilities) { 456 void ChromotingInstance::SetCapabilities(const std::string& capabilities) {
456 scoped_ptr<base::DictionaryValue> data(new base::DictionaryValue()); 457 std::unique_ptr<base::DictionaryValue> data(new base::DictionaryValue());
457 data->SetString("capabilities", capabilities); 458 data->SetString("capabilities", capabilities);
458 PostLegacyJsonMessage("setCapabilities", std::move(data)); 459 PostLegacyJsonMessage("setCapabilities", std::move(data));
459 } 460 }
460 461
461 void ChromotingInstance::SetPairingResponse( 462 void ChromotingInstance::SetPairingResponse(
462 const protocol::PairingResponse& pairing_response) { 463 const protocol::PairingResponse& pairing_response) {
463 scoped_ptr<base::DictionaryValue> data(new base::DictionaryValue()); 464 std::unique_ptr<base::DictionaryValue> data(new base::DictionaryValue());
464 data->SetString("clientId", pairing_response.client_id()); 465 data->SetString("clientId", pairing_response.client_id());
465 data->SetString("sharedSecret", pairing_response.shared_secret()); 466 data->SetString("sharedSecret", pairing_response.shared_secret());
466 PostLegacyJsonMessage("pairingResponse", std::move(data)); 467 PostLegacyJsonMessage("pairingResponse", std::move(data));
467 } 468 }
468 469
469 void ChromotingInstance::DeliverHostMessage( 470 void ChromotingInstance::DeliverHostMessage(
470 const protocol::ExtensionMessage& message) { 471 const protocol::ExtensionMessage& message) {
471 scoped_ptr<base::DictionaryValue> data(new base::DictionaryValue()); 472 std::unique_ptr<base::DictionaryValue> data(new base::DictionaryValue());
472 data->SetString("type", message.type()); 473 data->SetString("type", message.type());
473 data->SetString("data", message.data()); 474 data->SetString("data", message.data());
474 PostLegacyJsonMessage("extensionMessage", std::move(data)); 475 PostLegacyJsonMessage("extensionMessage", std::move(data));
475 } 476 }
476 477
477 void ChromotingInstance::SetDesktopSize(const webrtc::DesktopSize& size, 478 void ChromotingInstance::SetDesktopSize(const webrtc::DesktopSize& size,
478 const webrtc::DesktopVector& dpi) { 479 const webrtc::DesktopVector& dpi) {
479 DCHECK(!dpi.is_zero()); 480 DCHECK(!dpi.is_zero());
480 481
481 mouse_input_filter_.set_output_size(size); 482 mouse_input_filter_.set_output_size(size);
482 touch_input_scaler_.set_output_size(size); 483 touch_input_scaler_.set_output_size(size);
483 484
484 scoped_ptr<base::DictionaryValue> data(new base::DictionaryValue()); 485 std::unique_ptr<base::DictionaryValue> data(new base::DictionaryValue());
485 data->SetInteger("width", size.width()); 486 data->SetInteger("width", size.width());
486 data->SetInteger("height", size.height()); 487 data->SetInteger("height", size.height());
487 data->SetInteger("x_dpi", dpi.x()); 488 data->SetInteger("x_dpi", dpi.x());
488 data->SetInteger("y_dpi", dpi.y()); 489 data->SetInteger("y_dpi", dpi.y());
489 PostLegacyJsonMessage("onDesktopSize", std::move(data)); 490 PostLegacyJsonMessage("onDesktopSize", std::move(data));
490 } 491 }
491 492
492 void ChromotingInstance::FetchSecretFromDialog( 493 void ChromotingInstance::FetchSecretFromDialog(
493 bool pairing_supported, 494 bool pairing_supported,
494 const protocol::SecretFetchedCallback& secret_fetched_callback) { 495 const protocol::SecretFetchedCallback& secret_fetched_callback) {
495 // Once the Session object calls this function, it won't continue the 496 // Once the Session object calls this function, it won't continue the
496 // authentication until the callback is called (or connection is canceled). 497 // authentication until the callback is called (or connection is canceled).
497 // So, it's impossible to reach this with a callback already registered. 498 // So, it's impossible to reach this with a callback already registered.
498 DCHECK(secret_fetched_callback_.is_null()); 499 DCHECK(secret_fetched_callback_.is_null());
499 secret_fetched_callback_ = secret_fetched_callback; 500 secret_fetched_callback_ = secret_fetched_callback;
500 scoped_ptr<base::DictionaryValue> data(new base::DictionaryValue()); 501 std::unique_ptr<base::DictionaryValue> data(new base::DictionaryValue());
501 data->SetBoolean("pairingSupported", pairing_supported); 502 data->SetBoolean("pairingSupported", pairing_supported);
502 PostLegacyJsonMessage("fetchPin", std::move(data)); 503 PostLegacyJsonMessage("fetchPin", std::move(data));
503 } 504 }
504 505
505 void ChromotingInstance::FetchSecretFromString( 506 void ChromotingInstance::FetchSecretFromString(
506 const std::string& shared_secret, 507 const std::string& shared_secret,
507 bool pairing_supported, 508 bool pairing_supported,
508 const protocol::SecretFetchedCallback& secret_fetched_callback) { 509 const protocol::SecretFetchedCallback& secret_fetched_callback) {
509 secret_fetched_callback.Run(shared_secret); 510 secret_fetched_callback.Run(shared_secret);
510 } 511 }
511 512
512 protocol::ClipboardStub* ChromotingInstance::GetClipboardStub() { 513 protocol::ClipboardStub* ChromotingInstance::GetClipboardStub() {
513 // TODO(sergeyu): Move clipboard handling to a separate class. 514 // TODO(sergeyu): Move clipboard handling to a separate class.
514 // crbug.com/138108 515 // crbug.com/138108
515 return this; 516 return this;
516 } 517 }
517 518
518 protocol::CursorShapeStub* ChromotingInstance::GetCursorShapeStub() { 519 protocol::CursorShapeStub* ChromotingInstance::GetCursorShapeStub() {
519 return &empty_cursor_filter_; 520 return &empty_cursor_filter_;
520 } 521 }
521 522
522 void ChromotingInstance::InjectClipboardEvent( 523 void ChromotingInstance::InjectClipboardEvent(
523 const protocol::ClipboardEvent& event) { 524 const protocol::ClipboardEvent& event) {
524 scoped_ptr<base::DictionaryValue> data(new base::DictionaryValue()); 525 std::unique_ptr<base::DictionaryValue> data(new base::DictionaryValue());
525 data->SetString("mimeType", event.mime_type()); 526 data->SetString("mimeType", event.mime_type());
526 data->SetString("item", event.data()); 527 data->SetString("item", event.data());
527 PostLegacyJsonMessage("injectClipboardItem", std::move(data)); 528 PostLegacyJsonMessage("injectClipboardItem", std::move(data));
528 } 529 }
529 530
530 void ChromotingInstance::SetCursorShape( 531 void ChromotingInstance::SetCursorShape(
531 const protocol::CursorShapeInfo& cursor_shape) { 532 const protocol::CursorShapeInfo& cursor_shape) {
532 // If the delegated cursor is empty then stop rendering a DOM cursor. 533 // If the delegated cursor is empty then stop rendering a DOM cursor.
533 if (IsCursorShapeEmpty(cursor_shape)) { 534 if (IsCursorShapeEmpty(cursor_shape)) {
534 PostChromotingMessage("unsetCursorShape", pp::VarDictionary()); 535 PostChromotingMessage("unsetCursorShape", pp::VarDictionary());
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
649 base::Bind(&ChromotingInstance::UpdateUmaCustomHistogram, 650 base::Bind(&ChromotingInstance::UpdateUmaCustomHistogram,
650 weak_factory_.GetWeakPtr(), false), 651 weak_factory_.GetWeakPtr(), false),
651 base::Bind(&ChromotingInstance::UpdateUmaEnumHistogram, 652 base::Bind(&ChromotingInstance::UpdateUmaEnumHistogram,
652 weak_factory_.GetWeakPtr())); 653 weak_factory_.GetWeakPtr()));
653 654
654 if (!plugin_view_.is_null()) 655 if (!plugin_view_.is_null())
655 video_renderer_->OnViewChanged(plugin_view_); 656 video_renderer_->OnViewChanged(plugin_view_);
656 657
657 client_.reset( 658 client_.reset(
658 new ChromotingClient(&context_, this, video_renderer_.get(), 659 new ChromotingClient(&context_, this, video_renderer_.get(),
659 make_scoped_ptr(new PepperAudioPlayer(this)))); 660 base::WrapUnique(new PepperAudioPlayer(this))));
660 661
661 // Setup the signal strategy. 662 // Setup the signal strategy.
662 signal_strategy_.reset(new DelegatingSignalStrategy( 663 signal_strategy_.reset(new DelegatingSignalStrategy(
663 local_jid, base::Bind(&ChromotingInstance::SendOutgoingIq, 664 local_jid, base::Bind(&ChromotingInstance::SendOutgoingIq,
664 weak_factory_.GetWeakPtr()))); 665 weak_factory_.GetWeakPtr())));
665 666
666 // Create TransportContext. 667 // Create TransportContext.
667 scoped_refptr<protocol::TransportContext> transport_context( 668 scoped_refptr<protocol::TransportContext> transport_context(
668 new protocol::TransportContext( 669 new protocol::TransportContext(
669 signal_strategy_.get(), 670 signal_strategy_.get(),
670 make_scoped_ptr(new PepperPortAllocatorFactory(this)), 671 base::WrapUnique(new PepperPortAllocatorFactory(this)),
671 make_scoped_ptr(new PepperUrlRequestFactory(this)), 672 base::WrapUnique(new PepperUrlRequestFactory(this)),
672 protocol::NetworkSettings( 673 protocol::NetworkSettings(
673 protocol::NetworkSettings::NAT_TRAVERSAL_FULL), 674 protocol::NetworkSettings::NAT_TRAVERSAL_FULL),
674 protocol::TransportRole::CLIENT)); 675 protocol::TransportRole::CLIENT));
675 676
676 scoped_ptr<protocol::CandidateSessionConfig> config = 677 std::unique_ptr<protocol::CandidateSessionConfig> config =
677 protocol::CandidateSessionConfig::CreateDefault(); 678 protocol::CandidateSessionConfig::CreateDefault();
678 if (std::find(experiments_list.begin(), experiments_list.end(), "vp9") != 679 if (std::find(experiments_list.begin(), experiments_list.end(), "vp9") !=
679 experiments_list.end()) { 680 experiments_list.end()) {
680 config->set_vp9_experiment_enabled(true); 681 config->set_vp9_experiment_enabled(true);
681 } 682 }
682 client_->set_protocol_config(std::move(config)); 683 client_->set_protocol_config(std::move(config));
683 684
684 // Kick off the connection. 685 // Kick off the connection.
685 client_->Start(signal_strategy_.get(), client_auth_config, transport_context, 686 client_->Start(signal_strategy_.get(), client_auth_config, transport_context,
686 host_jid, capabilities); 687 host_jid, capabilities);
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
974 void ChromotingInstance::PostChromotingMessage(const std::string& method, 975 void ChromotingInstance::PostChromotingMessage(const std::string& method,
975 const pp::VarDictionary& data) { 976 const pp::VarDictionary& data) {
976 pp::VarDictionary message; 977 pp::VarDictionary message;
977 message.Set(pp::Var("method"), pp::Var(method)); 978 message.Set(pp::Var("method"), pp::Var(method));
978 message.Set(pp::Var("data"), data); 979 message.Set(pp::Var("data"), data);
979 PostMessage(message); 980 PostMessage(message);
980 } 981 }
981 982
982 void ChromotingInstance::PostLegacyJsonMessage( 983 void ChromotingInstance::PostLegacyJsonMessage(
983 const std::string& method, 984 const std::string& method,
984 scoped_ptr<base::DictionaryValue> data) { 985 std::unique_ptr<base::DictionaryValue> data) {
985 base::DictionaryValue message; 986 base::DictionaryValue message;
986 message.SetString("method", method); 987 message.SetString("method", method);
987 message.Set("data", data.release()); 988 message.Set("data", data.release());
988 989
989 std::string message_json; 990 std::string message_json;
990 base::JSONWriter::Write(message, &message_json); 991 base::JSONWriter::Write(message, &message_json);
991 PostMessage(pp::Var(message_json)); 992 PostMessage(pp::Var(message_json));
992 } 993 }
993 994
994 void ChromotingInstance::SendTrappedKey(uint32_t usb_keycode, bool pressed) { 995 void ChromotingInstance::SendTrappedKey(uint32_t usb_keycode, bool pressed) {
995 scoped_ptr<base::DictionaryValue> data(new base::DictionaryValue()); 996 std::unique_ptr<base::DictionaryValue> data(new base::DictionaryValue());
996 data->SetInteger("usbKeycode", usb_keycode); 997 data->SetInteger("usbKeycode", usb_keycode);
997 data->SetBoolean("pressed", pressed); 998 data->SetBoolean("pressed", pressed);
998 PostLegacyJsonMessage("trappedKeyEvent", std::move(data)); 999 PostLegacyJsonMessage("trappedKeyEvent", std::move(data));
999 } 1000 }
1000 1001
1001 void ChromotingInstance::SendOutgoingIq(const std::string& iq) { 1002 void ChromotingInstance::SendOutgoingIq(const std::string& iq) {
1002 scoped_ptr<base::DictionaryValue> data(new base::DictionaryValue()); 1003 std::unique_ptr<base::DictionaryValue> data(new base::DictionaryValue());
1003 data->SetString("iq", iq); 1004 data->SetString("iq", iq);
1004 PostLegacyJsonMessage("sendOutgoingIq", std::move(data)); 1005 PostLegacyJsonMessage("sendOutgoingIq", std::move(data));
1005 } 1006 }
1006 1007
1007 void ChromotingInstance::UpdatePerfStatsInUI() { 1008 void ChromotingInstance::UpdatePerfStatsInUI() {
1008 // Fetch performance stats from the VideoRenderer and send them to the client 1009 // Fetch performance stats from the VideoRenderer and send them to the client
1009 // for display to users. 1010 // for display to users.
1010 scoped_ptr<base::DictionaryValue> data(new base::DictionaryValue()); 1011 std::unique_ptr<base::DictionaryValue> data(new base::DictionaryValue());
1011 data->SetDouble("videoBandwidth", perf_tracker_.video_bandwidth()); 1012 data->SetDouble("videoBandwidth", perf_tracker_.video_bandwidth());
1012 data->SetDouble("videoFrameRate", perf_tracker_.video_frame_rate()); 1013 data->SetDouble("videoFrameRate", perf_tracker_.video_frame_rate());
1013 data->SetDouble("captureLatency", perf_tracker_.video_capture_ms().Average()); 1014 data->SetDouble("captureLatency", perf_tracker_.video_capture_ms().Average());
1014 data->SetDouble("maxCaptureLatency", perf_tracker_.video_capture_ms().Max()); 1015 data->SetDouble("maxCaptureLatency", perf_tracker_.video_capture_ms().Max());
1015 data->SetDouble("encodeLatency", perf_tracker_.video_encode_ms().Average()); 1016 data->SetDouble("encodeLatency", perf_tracker_.video_encode_ms().Average());
1016 data->SetDouble("maxEncodeLatency", perf_tracker_.video_encode_ms().Max()); 1017 data->SetDouble("maxEncodeLatency", perf_tracker_.video_encode_ms().Max());
1017 data->SetDouble("decodeLatency", perf_tracker_.video_decode_ms().Average()); 1018 data->SetDouble("decodeLatency", perf_tracker_.video_decode_ms().Average());
1018 data->SetDouble("maxDecodeLatency", perf_tracker_.video_decode_ms().Max()); 1019 data->SetDouble("maxDecodeLatency", perf_tracker_.video_decode_ms().Max());
1019 data->SetDouble("renderLatency", perf_tracker_.video_paint_ms().Average()); 1020 data->SetDouble("renderLatency", perf_tracker_.video_paint_ms().Average());
1020 data->SetDouble("maxRenderLatency", perf_tracker_.video_paint_ms().Max()); 1021 data->SetDouble("maxRenderLatency", perf_tracker_.video_paint_ms().Max());
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
1113 if (is_custom_counts_histogram) { 1114 if (is_custom_counts_histogram) {
1114 uma.HistogramCustomCounts(histogram_name, value, histogram_min, 1115 uma.HistogramCustomCounts(histogram_name, value, histogram_min,
1115 histogram_max, histogram_buckets); 1116 histogram_max, histogram_buckets);
1116 } else { 1117 } else {
1117 uma.HistogramCustomTimes(histogram_name, value, histogram_min, 1118 uma.HistogramCustomTimes(histogram_name, value, histogram_min,
1118 histogram_max, histogram_buckets); 1119 histogram_max, histogram_buckets);
1119 } 1120 }
1120 } 1121 }
1121 1122
1122 } // namespace remoting 1123 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/client/plugin/chromoting_instance.h ('k') | remoting/client/plugin/delegating_signal_strategy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698