| Index: remoting/host/host_signaling_manager.cc
|
| diff --git a/remoting/host/host_signaling_manager.cc b/remoting/host/host_signaling_manager.cc
|
| index 20abbd135b6463c608669036fbd23a09aef862a7..99ad431bca7969a676873002b05e5af852295e70 100644
|
| --- a/remoting/host/host_signaling_manager.cc
|
| +++ b/remoting/host/host_signaling_manager.cc
|
| @@ -19,21 +19,16 @@
|
| namespace remoting {
|
|
|
| HostSignalingManager::HostSignalingManager(
|
| - scoped_ptr<base::WeakPtrFactory<Listener>> weak_factory_for_listener,
|
| - const scoped_refptr<AutoThreadTaskRunner>& network_task_runner,
|
| scoped_ptr<SignalStrategy> signal_strategy,
|
| scoped_ptr<SignalingConnector> signaling_connector,
|
| scoped_ptr<HeartbeatSender> heartbeat_sender)
|
| - : weak_factory_for_listener_(weak_factory_for_listener.Pass()),
|
| - network_task_runner_(network_task_runner),
|
| - signal_strategy_(signal_strategy.Pass()),
|
| + : signal_strategy_(signal_strategy.Pass()),
|
| signaling_connector_(signaling_connector.Pass()),
|
| heartbeat_sender_(heartbeat_sender.Pass()) {
|
| }
|
|
|
| scoped_ptr<HostSignalingManager> HostSignalingManager::Create(
|
| Listener* listener,
|
| - const scoped_refptr<AutoThreadTaskRunner>& network_task_runner,
|
| const scoped_refptr<net::URLRequestContextGetter>&
|
| url_request_context_getter,
|
| const XmppSignalStrategy::XmppServerConfig& xmpp_server_config,
|
| @@ -42,11 +37,6 @@ scoped_ptr<HostSignalingManager> HostSignalingManager::Create(
|
| const scoped_refptr<const RsaKeyPair>& host_key_pair,
|
| const std::string& directory_bot_jid,
|
| scoped_ptr<OAuthTokenGetter::OAuthCredentials> oauth_credentials) {
|
| - DCHECK(network_task_runner->BelongsToCurrentThread());
|
| -
|
| - scoped_ptr<base::WeakPtrFactory<Listener>> weak_factory(
|
| - new base::WeakPtrFactory<Listener>(listener));
|
| -
|
| scoped_ptr<XmppSignalStrategy> signal_strategy(
|
| new XmppSignalStrategy(net::ClientSocketFactory::GetDefaultFactory(),
|
| url_request_context_getter, xmpp_server_config));
|
| @@ -56,7 +46,7 @@ scoped_ptr<HostSignalingManager> HostSignalingManager::Create(
|
|
|
| scoped_ptr<SignalingConnector> signaling_connector(new SignalingConnector(
|
| signal_strategy.get(), dns_blackhole_checker.Pass(),
|
| - base::Bind(&Listener::OnAuthFailed, weak_factory->GetWeakPtr())));
|
| + base::Bind(&Listener::OnAuthFailed, base::Unretained(listener))));
|
|
|
| if (!oauth_credentials->refresh_token.empty()) {
|
| scoped_ptr<OAuthTokenGetter> oauth_token_getter(new OAuthTokenGetter(
|
| @@ -66,45 +56,27 @@ scoped_ptr<HostSignalingManager> HostSignalingManager::Create(
|
| }
|
|
|
| scoped_ptr<HeartbeatSender> heartbeat_sender(new HeartbeatSender(
|
| - base::Bind(&Listener::OnHeartbeatSuccessful, weak_factory->GetWeakPtr()),
|
| - base::Bind(&Listener::OnUnknownHostIdError, weak_factory->GetWeakPtr()),
|
| + base::Bind(&Listener::OnHeartbeatSuccessful, base::Unretained(listener)),
|
| + base::Bind(&Listener::OnUnknownHostIdError, base::Unretained(listener)),
|
| host_id, signal_strategy.get(), host_key_pair, directory_bot_jid));
|
|
|
| return scoped_ptr<HostSignalingManager>(new HostSignalingManager(
|
| - weak_factory.Pass(), network_task_runner, signal_strategy.Pass(),
|
| - signaling_connector.Pass(), heartbeat_sender.Pass()));
|
| + signal_strategy.Pass(), signaling_connector.Pass(),
|
| + heartbeat_sender.Pass()));
|
| }
|
|
|
| HostSignalingManager::~HostSignalingManager() {
|
| - DCHECK(network_task_runner_->BelongsToCurrentThread());
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| }
|
|
|
| -void HostSignalingManager::SendHostOfflineReasonAndDelete(
|
| +void HostSignalingManager::SendHostOfflineReason(
|
| const std::string& host_offline_reason,
|
| - const base::TimeDelta& timeout) {
|
| - DCHECK(network_task_runner_->BelongsToCurrentThread());
|
| -
|
| - HOST_LOG << "SendHostOfflineReason: sending " << host_offline_reason;
|
| -
|
| - // Ensure that any subsequent callbacks from the HeartbeatSender or
|
| - // SignalingConnector don't touch the Listener.
|
| - weak_factory_for_listener_->InvalidateWeakPtrs();
|
| -
|
| - heartbeat_sender_->SetHostOfflineReason(
|
| - host_offline_reason, timeout,
|
| - base::Bind(&HostSignalingManager::OnHostOfflineReasonAck,
|
| - base::Unretained(this)));
|
| -}
|
| -
|
| -void HostSignalingManager::OnHostOfflineReasonAck(bool success) {
|
| - DCHECK(network_task_runner_->BelongsToCurrentThread());
|
| - if (success) {
|
| - HOST_LOG << "SendHostOfflineReason: succeeded";
|
| - } else {
|
| - HOST_LOG << "SendHostOfflineReason: timed out";
|
| - }
|
| -
|
| - delete this;
|
| + const base::TimeDelta& timeout,
|
| + const base::Callback<void(bool success)>& ack_callback) {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| + HOST_LOG << "SendHostOfflineReason: sending " << host_offline_reason << ".";
|
| + heartbeat_sender_->SetHostOfflineReason(host_offline_reason, timeout,
|
| + ack_callback);
|
| }
|
|
|
| } // namespace remoting
|
|
|