Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(173)

Side by Side Diff: blimp/engine/session/blimp_engine_session.cc

Issue 2439403003: Refactor BlimpConnection to TCPConnection (Closed)
Patch Set: Sync merge Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "blimp/engine/session/blimp_engine_session.h" 5 #include "blimp/engine/session/blimp_engine_session.h"
6 6
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 const base::Closure& closure) { 92 const base::Closure& closure) {
93 task_runner->PostTask(FROM_HERE, closure); 93 task_runner->PostTask(FROM_HERE, closure);
94 } 94 }
95 95
96 // Returns a closure that quits the current (bind-time) MessageLoop. 96 // Returns a closure that quits the current (bind-time) MessageLoop.
97 base::Closure QuitCurrentMessageLoopClosure() { 97 base::Closure QuitCurrentMessageLoopClosure() {
98 return base::Bind(&PostTask, base::ThreadTaskRunnerHandle::Get(), 98 return base::Bind(&PostTask, base::ThreadTaskRunnerHandle::Get(),
99 base::MessageLoop::QuitWhenIdleClosure()); 99 base::MessageLoop::QuitWhenIdleClosure());
100 } 100 }
101 101
102 EngineConnectionManager::EngineTransportType GetTransportType() {
103 const std::string kTcpTransport = "tcp";
Kevin M 2016/10/25 18:49:22 Move these into the anonymous namespace and use co
perumaal 2016/10/25 23:02:39 Done.
104 const std::string kGrpcTransport = "grpc";
105 const auto transport_parsed =
Kevin M 2016/10/25 18:49:22 std::string
perumaal 2016/10/25 23:02:39 Done.
106 base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
107 kEngineTransport);
108 if (transport_parsed == kTcpTransport || transport_parsed.empty()) {
109 return EngineConnectionManager::EngineTransportType::TCP;
110 } else if (transport_parsed == kGrpcTransport) {
111 return EngineConnectionManager::EngineTransportType::GRPC;
112 }
113 LOG(FATAL) << "--engine-transport must either be empty or one of tcp, grpc.";
Kevin M 2016/10/25 18:49:22 Log the flag names using constants, since we got '
perumaal 2016/10/25 23:02:39 Done.
114 return EngineConnectionManager::EngineTransportType::TCP;
115 }
116
102 net::IPAddress GetListeningAddress() { 117 net::IPAddress GetListeningAddress() {
103 if (base::CommandLine::ForCurrentProcess()->HasSwitch(kAllowNonLocalhost)) { 118 if (base::CommandLine::ForCurrentProcess()->HasSwitch(kAllowNonLocalhost)) {
104 return net::IPAddress::IPv4AllZeros(); 119 return net::IPAddress::IPv4AllZeros();
105 } 120 }
106 return net::IPAddress::IPv4Localhost(); 121 return net::IPAddress::IPv4Localhost();
107 } 122 }
108 123
109 uint16_t GetListeningPort() { 124 uint16_t GetListeningPort() {
110 unsigned port_parsed = 0; 125 unsigned port_parsed = 0;
111 if (!base::StringToUint( 126 if (!base::StringToUint(
(...skipping 20 matching lines...) Expand all
132 explicit EngineNetworkComponents(net::NetLog* net_log); 147 explicit EngineNetworkComponents(net::NetLog* net_log);
133 ~EngineNetworkComponents() override; 148 ~EngineNetworkComponents() override;
134 149
135 // Sets up network components and starts listening for incoming connection. 150 // Sets up network components and starts listening for incoming connection.
136 // This should be called after all features have been registered so that 151 // This should be called after all features have been registered so that
137 // received messages can be properly handled. 152 // received messages can be properly handled.
138 void Initialize(scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner, 153 void Initialize(scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
139 base::WeakPtr<BlobChannelSender> blob_channel_sender, 154 base::WeakPtr<BlobChannelSender> blob_channel_sender,
140 const std::string& client_token); 155 const std::string& client_token);
141 156
142 uint16_t GetPortForTesting() { return port_; } 157 uint16_t GetPortForTesting() { return GetListeningPort(); }
Garrett Casto 2016/10/25 18:33:50 I'm surprised that this doesn't break the browser_
Kevin M 2016/10/25 18:49:22 Why make this change? For the e2e tests, this meth
perumaal 2016/10/25 23:02:39 I wanted to minimize the usage of port numbers as
143 158
144 BrowserConnectionHandler* connection_handler() { 159 BrowserConnectionHandler* connection_handler() {
145 return &connection_handler_; 160 return &connection_handler_;
146 } 161 }
147 162
148 BlobChannelService* blob_channel_service() { 163 BlobChannelService* blob_channel_service() {
149 return blob_channel_service_.get(); 164 return blob_channel_service_.get();
150 } 165 }
151 166
152 private: 167 private:
153 // ConnectionHandler implementation. 168 // ConnectionHandler implementation.
154 void HandleConnection(std::unique_ptr<BlimpConnection> connection) override; 169 void HandleConnection(std::unique_ptr<BlimpConnection> connection) override;
155 170
156 // ConnectionErrorObserver implementation. 171 // ConnectionErrorObserver implementation.
157 // Signals the engine session that an authenticated connection was 172 // Signals the engine session that an authenticated connection was
158 // terminated. 173 // terminated.
159 void OnConnectionError(int error) override; 174 void OnConnectionError(int error) override;
160 175
161 net::NetLog* net_log_; 176 net::NetLog* net_log_;
162 uint16_t port_ = 0;
163 177
164 BrowserConnectionHandler connection_handler_; 178 BrowserConnectionHandler connection_handler_;
165 std::unique_ptr<EngineAuthenticationHandler> authentication_handler_; 179 std::unique_ptr<EngineAuthenticationHandler> authentication_handler_;
166 std::unique_ptr<EngineConnectionManager> connection_manager_; 180 std::unique_ptr<EngineConnectionManager> connection_manager_;
167 std::unique_ptr<BlobChannelService> blob_channel_service_; 181 std::unique_ptr<BlobChannelService> blob_channel_service_;
168 base::Closure quit_closure_; 182 base::Closure quit_closure_;
169 183
170 DISALLOW_COPY_AND_ASSIGN(EngineNetworkComponents); 184 DISALLOW_COPY_AND_ASSIGN(EngineNetworkComponents);
171 }; 185 };
172 186
173 EngineNetworkComponents::EngineNetworkComponents(net::NetLog* net_log) 187 EngineNetworkComponents::EngineNetworkComponents(net::NetLog* net_log)
174 : net_log_(net_log), quit_closure_(QuitCurrentMessageLoopClosure()) {} 188 : net_log_(net_log), quit_closure_(QuitCurrentMessageLoopClosure()) {}
175 189
176 EngineNetworkComponents::~EngineNetworkComponents() { 190 EngineNetworkComponents::~EngineNetworkComponents() {
177 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); 191 DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
178 } 192 }
179 193
180 void EngineNetworkComponents::Initialize( 194 void EngineNetworkComponents::Initialize(
181 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner, 195 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
182 base::WeakPtr<BlobChannelSender> blob_channel_sender, 196 base::WeakPtr<BlobChannelSender> blob_channel_sender,
183 const std::string& client_token) { 197 const std::string& client_token) {
184 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); 198 DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
185 DCHECK(!connection_manager_); 199 DCHECK(!connection_manager_);
186 // Plumb authenticated connections from the authentication handler 200 // Plumb authenticated connections from the authentication handler
187 // to |this| (which will then pass it to |connection_handler_|. 201 // to |this| (which will then pass it to |connection_handler_|.
188 authentication_handler_ = 202 authentication_handler_ =
189 base::MakeUnique<EngineAuthenticationHandler>(this, client_token); 203 base::MakeUnique<EngineAuthenticationHandler>(this, client_token);
190 204
191 // Plumb unauthenticated connections to |authentication_handler_|. 205 // Plumb unauthenticated connections to |authentication_handler_|.
192 connection_manager_ = 206 connection_manager_ = base::MakeUnique<EngineConnectionManager>(
193 base::MakeUnique<EngineConnectionManager>(authentication_handler_.get()); 207 authentication_handler_.get(), net_log_);
194 208
195 blob_channel_service_ = 209 blob_channel_service_ =
196 base::MakeUnique<BlobChannelService>(blob_channel_sender, ui_task_runner); 210 base::MakeUnique<BlobChannelService>(blob_channel_sender, ui_task_runner);
197 211
198 // Adds BlimpTransports to connection_manager_. 212 // Adds BlimpTransports to connection_manager_.
199 net::IPEndPoint address(GetListeningAddress(), GetListeningPort()); 213 net::IPEndPoint address(GetListeningAddress(), GetListeningPort());
200 TCPEngineTransport* transport = new TCPEngineTransport(address, net_log_); 214 connection_manager_->ConnectTransport(address, GetTransportType());
201 connection_manager_->AddTransport(base::WrapUnique(transport));
202
203 transport->GetLocalAddress(&address);
204 port_ = address.port();
205 DVLOG(1) << "Engine port #: " << port_;
206 } 215 }
207 216
208 void EngineNetworkComponents::HandleConnection( 217 void EngineNetworkComponents::HandleConnection(
209 std::unique_ptr<BlimpConnection> connection) { 218 std::unique_ptr<BlimpConnection> connection) {
210 // Observe |connection| for disconnection events. 219 // Observe |connection| for disconnection events.
211 connection->AddConnectionErrorObserver(this); 220 connection->AddConnectionErrorObserver(this);
212 connection_handler_.HandleConnection(std::move(connection)); 221 connection_handler_.HandleConnection(std::move(connection));
213 } 222 }
214 223
215 void EngineNetworkComponents::OnConnectionError(int error) { 224 void EngineNetworkComponents::OnConnectionError(int error) {
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after
566 parent->AddChild(content); 575 parent->AddChild(content);
567 content->Show(); 576 content->Show();
568 577
569 tab_ = base::MakeUnique<Tab>(std::move(new_contents), target_tab_id, 578 tab_ = base::MakeUnique<Tab>(std::move(new_contents), target_tab_id,
570 &render_widget_feature_, 579 &render_widget_feature_,
571 navigation_message_sender_.get()); 580 navigation_message_sender_.get());
572 } 581 }
573 582
574 } // namespace engine 583 } // namespace engine
575 } // namespace blimp 584 } // namespace blimp
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698