Chromium Code Reviews| Index: blimp/engine/session/blimp_engine_session.cc |
| diff --git a/blimp/engine/session/blimp_engine_session.cc b/blimp/engine/session/blimp_engine_session.cc |
| index f4708eaa662112f412ca279c403249b77864a06e..8f12eeb08557c87227155f45479595313d6aac8b 100644 |
| --- a/blimp/engine/session/blimp_engine_session.cc |
| +++ b/blimp/engine/session/blimp_engine_session.cc |
| @@ -72,6 +72,9 @@ const int kDefaultDisplayWidth = 800; |
| const int kDefaultDisplayHeight = 600; |
| const uint16_t kDefaultPort = 25467; |
| +const char kTcpTransport[] = "tcp"; |
| +const char kGrpcTransport[] = "grpc"; |
| + |
| // Focus rules that support activating an child window. |
| class FocusRulesImpl : public wm::BaseFocusRules { |
| public: |
| @@ -99,6 +102,20 @@ base::Closure QuitCurrentMessageLoopClosure() { |
| base::MessageLoop::QuitWhenIdleClosure()); |
| } |
| +EngineConnectionManager::EngineTransportType GetTransportType() { |
| + const std::string transport_parsed = |
| + base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( |
| + kEngineTransport); |
| + if (transport_parsed == kTcpTransport || transport_parsed.empty()) { |
| + return EngineConnectionManager::EngineTransportType::TCP; |
| + } else if (transport_parsed == kGrpcTransport) { |
| + return EngineConnectionManager::EngineTransportType::GRPC; |
| + } |
| + LOG(FATAL) << "--engine-transport must either be empty or one of " |
| + << kGrpcTransport << ", " << kTcpTransport; |
| + return EngineConnectionManager::EngineTransportType::TCP; |
| +} |
| + |
| net::IPAddress GetListeningAddress() { |
| if (base::CommandLine::ForCurrentProcess()->HasSwitch(kAllowNonLocalhost)) { |
| return net::IPAddress::IPv4AllZeros(); |
| @@ -139,6 +156,8 @@ class EngineNetworkComponents : public ConnectionHandler, |
| base::WeakPtr<BlobChannelSender> blob_channel_sender, |
| const std::string& client_token); |
| + // TODO(perumaal): Remove this once gRPC support is ready. |
| + // See crbug.com/659279. |
| uint16_t GetPortForTesting() { return port_; } |
| BrowserConnectionHandler* connection_handler() { |
| @@ -189,20 +208,16 @@ void EngineNetworkComponents::Initialize( |
| base::MakeUnique<EngineAuthenticationHandler>(this, client_token); |
| // Plumb unauthenticated connections to |authentication_handler_|. |
| - connection_manager_ = |
| - base::MakeUnique<EngineConnectionManager>(authentication_handler_.get()); |
| + connection_manager_ = base::MakeUnique<EngineConnectionManager>( |
| + authentication_handler_.get(), net_log_); |
| blob_channel_service_ = |
| base::MakeUnique<BlobChannelService>(blob_channel_sender, ui_task_runner); |
| // Adds BlimpTransports to connection_manager_. |
| net::IPEndPoint address(GetListeningAddress(), GetListeningPort()); |
| - TCPEngineTransport* transport = new TCPEngineTransport(address, net_log_); |
| - connection_manager_->AddTransport(base::WrapUnique(transport)); |
| - |
| - transport->GetLocalAddress(&address); |
| + connection_manager_->ConnectTransport(&address, GetTransportType()); |
|
Garrett Casto
2016/10/26 23:43:48
I think that it's a little cleaner to not have Con
perumaal
2016/10/27 00:16:04
The problem is that I explicitly avoid leaking the
Garrett Casto
2016/10/27 16:45:45
Right, I wasn't very clear about this. What I actu
|
| port_ = address.port(); |
| - DVLOG(1) << "Engine port #: " << port_; |
| } |
| void EngineNetworkComponents::HandleConnection( |