| Index: chrome/browser/extensions/api/cast_channel/cast_channel_api.cc
|
| diff --git a/chrome/browser/extensions/api/cast_channel/cast_channel_api.cc b/chrome/browser/extensions/api/cast_channel/cast_channel_api.cc
|
| index b4378ea0ac060e0d54c3e80295f20686c62641c0..1c3a3116bf262d7d38c5e87b9945f5be132d8a3b 100644
|
| --- a/chrome/browser/extensions/api/cast_channel/cast_channel_api.cc
|
| +++ b/chrome/browser/extensions/api/cast_channel/cast_channel_api.cc
|
| @@ -21,6 +21,10 @@
|
| #include "net/base/net_util.h"
|
| #include "url/gurl.h"
|
|
|
| +// Default timeout interval for connection setup.
|
| +// Used if not otherwise specified at ConnectInfo::timeout.
|
| +const int kDefaultConnectTimeoutMillis = 5000; // 5 seconds.
|
| +
|
| namespace extensions {
|
|
|
| namespace Close = cast_channel::Close;
|
| @@ -99,13 +103,14 @@ CastChannelAPI::GetFactoryInstance() {
|
|
|
| scoped_ptr<CastSocket> CastChannelAPI::CreateCastSocket(
|
| const std::string& extension_id, const net::IPEndPoint& ip_endpoint,
|
| - ChannelAuthType channel_auth) {
|
| + ChannelAuthType channel_auth, const base::TimeDelta& timeout) {
|
| if (socket_for_test_.get()) {
|
| return socket_for_test_.Pass();
|
| } else {
|
| return scoped_ptr<CastSocket>(
|
| new CastSocket(extension_id, ip_endpoint, channel_auth, this,
|
| - g_browser_process->net_log()));
|
| + g_browser_process->net_log(),
|
| + timeout));
|
| }
|
| }
|
|
|
| @@ -321,7 +326,12 @@ void CastChannelOpenFunction::AsyncWorkStart() {
|
| DCHECK(api_);
|
| DCHECK(ip_endpoint_.get());
|
| scoped_ptr<CastSocket> socket = api_->CreateCastSocket(
|
| - extension_->id(), *ip_endpoint_, channel_auth_);
|
| + extension_->id(),
|
| + *ip_endpoint_,
|
| + channel_auth_,
|
| + base::TimeDelta::FromMilliseconds(connect_info_->timeout.get()
|
| + ? *connect_info_->timeout
|
| + : kDefaultConnectTimeoutMillis));
|
| new_channel_id_ = AddSocket(socket.release());
|
| GetSocket(new_channel_id_)->Connect(
|
| base::Bind(&CastChannelOpenFunction::OnOpen, this));
|
| @@ -329,6 +339,7 @@ void CastChannelOpenFunction::AsyncWorkStart() {
|
|
|
| void CastChannelOpenFunction::OnOpen(int result) {
|
| DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| + VLOG(1) << "Connect finished, OnOpen invoked.";
|
| SetResultFromSocket(new_channel_id_);
|
| AsyncWorkCompleted();
|
| }
|
|
|