1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/devtools/remote_debugging_server.h" 6 7 #include "base/path_service.h" 8 #include "chrome/browser/devtools/browser_list_tabcontents_provider.h" 9 #include "chrome/browser/ui/webui/devtools_ui.h" 10 #include "chrome/common/chrome_paths.h" 11 #include "content/public/browser/devtools_http_handler.h" 12 #include "net/socket/tcp_listen_socket.h" 13 14 RemoteDebuggingServer::RemoteDebuggingServer( 15 chrome::HostDesktopType host_desktop_type, 16 const std::string& ip, 17 int port) { 18 base::FilePath output_dir; 19 if (!port) { 20 // The client requested an ephemeral port. Must write the selected 21 // port to a well-known location in the profile directory to 22 // bootstrap the connection process. 23 bool result = PathService::Get(chrome::DIR_USER_DATA, &output_dir); 24 DCHECK(result); 25 } 26 27 devtools_http_handler_ = content::DevToolsHttpHandler::Start( 28 new net::TCPListenSocketFactory(ip, port), 29 "", 30 new BrowserListTabContentsProvider(host_desktop_type), 31 output_dir); 32 } 33 34 RemoteDebuggingServer::~RemoteDebuggingServer() { 35 devtools_http_handler_->Stop(); 36 } 37