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()); |
port_ = address.port(); |
- DVLOG(1) << "Engine port #: " << port_; |
} |
void EngineNetworkComponents::HandleConnection( |