| Index: remoting/host/client_session.cc
|
| diff --git a/remoting/host/client_session.cc b/remoting/host/client_session.cc
|
| index 2edb8f985eaded1064f6be99fe474ca49da21560..1b21feeaf755d08b70347c94252392640169fe13 100644
|
| --- a/remoting/host/client_session.cc
|
| +++ b/remoting/host/client_session.cc
|
| @@ -9,6 +9,7 @@
|
|
|
| #include "base/command_line.h"
|
| #include "base/memory/ptr_util.h"
|
| +#include "base/optional.h"
|
| #include "base/single_thread_task_runner.h"
|
| #include "base/threading/thread_task_runner_handle.h"
|
| #include "build/build_config.h"
|
| @@ -20,6 +21,7 @@
|
| #include "remoting/host/host_extension_session.h"
|
| #include "remoting/host/input_injector.h"
|
| #include "remoting/host/mouse_shape_pump.h"
|
| +#include "remoting/host/process_stats_sender.h"
|
| #include "remoting/host/screen_controls.h"
|
| #include "remoting/host/screen_resolution.h"
|
| #include "remoting/proto/control.pb.h"
|
| @@ -67,6 +69,7 @@ ClientSession::ClientSession(
|
| // controls VP9 video stream color quality.
|
| lossless_video_color_(!base::CommandLine::ForCurrentProcess()->HasSwitch(
|
| kDisableI444SwitchName)),
|
| + current_process_stats_agent_("Network Process"),
|
| weak_factory_(this) {
|
| connection_->session()->AddPlugin(&host_experiment_session_plugin_);
|
| connection_->SetEventHandler(this);
|
| @@ -243,8 +246,9 @@ void ClientSession::OnConnectionAuthenticated() {
|
| event_handler_->OnSessionAuthenticated(this);
|
|
|
| DesktopEnvironmentOptions options = desktop_environment_options_;
|
| - options.ApplyHostSessionOptions(HostSessionOptions(
|
| - host_experiment_session_plugin_.configuration()));
|
| + const HostSessionOptions session_options(
|
| + host_experiment_session_plugin_.configuration());
|
| + options.ApplyHostSessionOptions(session_options);
|
| // Create the desktop environment. Drop the connection if it could not be
|
| // created for any reason (for instance the curtain could not initialize).
|
| desktop_environment_ =
|
| @@ -257,6 +261,30 @@ void ClientSession::OnConnectionAuthenticated() {
|
| // Connect host stub.
|
| connection_->set_host_stub(this);
|
|
|
| + if (connection_->stats_stub()) {
|
| + base::Optional<int> track_process_stats_interval =
|
| + session_options.GetInt("Track-Process-Stats-Interval");
|
| + // Track-Process-Stats-Interval-Ms is for testing only, usually we should
|
| + // not set the interval as small as one second or less.
|
| + base::Optional<int> track_process_stats_interval_ms =
|
| + session_options.GetInt("Track-Process-Stats-Interval-Ms");
|
| + base::TimeDelta interval;
|
| + if (track_process_stats_interval && *track_process_stats_interval > 0) {
|
| + interval = base::TimeDelta::FromSeconds(*track_process_stats_interval);
|
| + } else if (track_process_stats_interval_ms &&
|
| + *track_process_stats_interval_ms > 0) {
|
| + interval = base::TimeDelta::FromMilliseconds(
|
| + *track_process_stats_interval_ms);
|
| + }
|
| + if (interval > base::TimeDelta()) {
|
| + // TODO(zijiehe): Add ForwardProcessStatsAgent from DesktopEnvironment.
|
| + stats_sender_.reset(new ProcessStatsSender(
|
| + connection_->stats_stub(),
|
| + interval,
|
| + { ¤t_process_stats_agent_ }));
|
| + }
|
| + }
|
| +
|
| // Collate the set of capabilities to offer the client, if it supports them.
|
| host_capabilities_ = desktop_environment_->GetCapabilities();
|
| if (!host_capabilities_.empty())
|
| @@ -360,6 +388,7 @@ void ClientSession::OnConnectionClosed(protocol::ErrorCode error) {
|
| input_injector_.reset();
|
| screen_controls_.reset();
|
| desktop_environment_.reset();
|
| + stats_sender_.reset();
|
|
|
| // Notify the ChromotingHost that this client is disconnected.
|
| event_handler_->OnSessionClosed(this);
|
|
|