Commit 1fa1cc40 authored by Helen Li's avatar Helen Li Committed by Commit Bot

Clarify StoragePartition::GetNetworkContext() contract and fix devtools_server.cc

The raw pointer returned by GetNetworkContext() shouldn't be hold onto. This
CL adds documentation to the method and fixes devtools_server.cc to not hold
onto the raw pointer as a member.

Bug: 821000
Change-Id: If6e1a7c9a6742980755ffabd4c3b0d8fe0fa392e
Reviewed-on: https://chromium-review.googlesource.com/1042352Reviewed-by: default avatarJohn Abd-El-Malek <jam@chromium.org>
Reviewed-by: default avatarDmitry Gozman <dgozman@chromium.org>
Commit-Queue: Helen Li <xunjieli@chromium.org>
Cr-Commit-Position: refs/heads/master@{#555792}
parent 987a3758
...@@ -67,12 +67,9 @@ constexpr net::NetworkTrafficAnnotationTag kUIDevtoolsServer = ...@@ -67,12 +67,9 @@ constexpr net::NetworkTrafficAnnotationTag kUIDevtoolsServer =
UiDevToolsServer* UiDevToolsServer::devtools_server_ = nullptr; UiDevToolsServer* UiDevToolsServer::devtools_server_ = nullptr;
UiDevToolsServer::UiDevToolsServer( UiDevToolsServer::UiDevToolsServer(const char* enable_devtools_flag,
network::mojom::NetworkContext* network_context, int default_port)
const char* enable_devtools_flag, : port_(GetUiDevToolsPort(enable_devtools_flag, default_port)),
int default_port)
: network_context_(network_context),
port_(GetUiDevToolsPort(enable_devtools_flag, default_port)),
weak_ptr_factory_(this) { weak_ptr_factory_(this) {
DCHECK(!devtools_server_); DCHECK(!devtools_server_);
devtools_server_ = this; devtools_server_ = this;
...@@ -90,9 +87,8 @@ std::unique_ptr<UiDevToolsServer> UiDevToolsServer::Create( ...@@ -90,9 +87,8 @@ std::unique_ptr<UiDevToolsServer> UiDevToolsServer::Create(
std::unique_ptr<UiDevToolsServer> server; std::unique_ptr<UiDevToolsServer> server;
if (IsDevToolsEnabled(enable_devtools_flag) && !devtools_server_) { if (IsDevToolsEnabled(enable_devtools_flag) && !devtools_server_) {
// TODO(mhashmi): Change port if more than one inspectable clients // TODO(mhashmi): Change port if more than one inspectable clients
server.reset(new UiDevToolsServer(network_context, enable_devtools_flag, server.reset(new UiDevToolsServer(enable_devtools_flag, default_port));
default_port)); server->Start(network_context, "0.0.0.0");
server->Start("0.0.0.0");
} }
return server; return server;
} }
...@@ -125,7 +121,8 @@ void UiDevToolsServer::SendOverWebSocket(int connection_id, ...@@ -125,7 +121,8 @@ void UiDevToolsServer::SendOverWebSocket(int connection_id,
server_->SendOverWebSocket(connection_id, message, kUIDevtoolsServer); server_->SendOverWebSocket(connection_id, message, kUIDevtoolsServer);
} }
void UiDevToolsServer::Start(const std::string& address_string) { void UiDevToolsServer::Start(network::mojom::NetworkContext* network_context,
const std::string& address_string) {
DCHECK_CALLED_ON_VALID_SEQUENCE(devtools_server_sequence_); DCHECK_CALLED_ON_VALID_SEQUENCE(devtools_server_sequence_);
DCHECK(!server_); DCHECK(!server_);
...@@ -136,7 +133,7 @@ void UiDevToolsServer::Start(const std::string& address_string) { ...@@ -136,7 +133,7 @@ void UiDevToolsServer::Start(const std::string& address_string) {
return; return;
constexpr int kBacklog = 1; constexpr int kBacklog = 1;
network_context_->CreateTCPServerSocket( network_context->CreateTCPServerSocket(
net::IPEndPoint(address, port_), kBacklog, net::IPEndPoint(address, port_), kBacklog,
net::MutableNetworkTrafficAnnotationTag(kUIDevtoolsServer), net::MutableNetworkTrafficAnnotationTag(kUIDevtoolsServer),
mojo::MakeRequest(&server_socket), mojo::MakeRequest(&server_socket),
......
...@@ -44,11 +44,10 @@ class UI_DEVTOOLS_EXPORT UiDevToolsServer ...@@ -44,11 +44,10 @@ class UI_DEVTOOLS_EXPORT UiDevToolsServer
int port() const { return port_; } int port() const { return port_; }
private: private:
UiDevToolsServer(network::mojom::NetworkContext* network_context, UiDevToolsServer(const char* enable_devtools_flag, int default_port);
const char* enable_devtools_flag,
int default_port);
void Start(const std::string& address_string); void Start(network::mojom::NetworkContext* network_context,
const std::string& address_string);
void MakeServer(network::mojom::TCPServerSocketPtr server_socket, void MakeServer(network::mojom::TCPServerSocketPtr server_socket,
int result, int result,
const base::Optional<net::IPEndPoint>& local_addr); const base::Optional<net::IPEndPoint>& local_addr);
...@@ -70,7 +69,6 @@ class UI_DEVTOOLS_EXPORT UiDevToolsServer ...@@ -70,7 +69,6 @@ class UI_DEVTOOLS_EXPORT UiDevToolsServer
ConnectionsMap connections_; ConnectionsMap connections_;
std::unique_ptr<network::server::HttpServer> server_; std::unique_ptr<network::server::HttpServer> server_;
network::mojom::NetworkContext* network_context_;
// The port the devtools server listens on // The port the devtools server listens on
const int port_; const int port_;
......
...@@ -76,7 +76,12 @@ class CONTENT_EXPORT StoragePartition { ...@@ -76,7 +76,12 @@ class CONTENT_EXPORT StoragePartition {
virtual base::FilePath GetPath() = 0; virtual base::FilePath GetPath() = 0;
virtual net::URLRequestContextGetter* GetURLRequestContext() = 0; virtual net::URLRequestContextGetter* GetURLRequestContext() = 0;
virtual net::URLRequestContextGetter* GetMediaURLRequestContext() = 0; virtual net::URLRequestContextGetter* GetMediaURLRequestContext() = 0;
// Returns a raw mojom::NetworkContext pointer. When network service crashes
// or restarts, the raw pointer will not be valid or safe to use. Therefore,
// caller should not hold onto this pointer beyond the same message loop task.
virtual network::mojom::NetworkContext* GetNetworkContext() = 0; virtual network::mojom::NetworkContext* GetNetworkContext() = 0;
// Returns a pointer/info to a URLLoaderFactory/CookieManager owned by // Returns a pointer/info to a URLLoaderFactory/CookieManager owned by
// the storage partition. Prefer to use this instead of creating a new // the storage partition. Prefer to use this instead of creating a new
// URLLoaderFactory when issuing requests from the Browser process, to // URLLoaderFactory when issuing requests from the Browser process, to
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment