Commit 33a34647 authored by Song Fangzhen's avatar Song Fangzhen Committed by Chromium LUCI CQ

Direct Sockets: Update PopulateLocalAddr().

As Glen's suggestion in
https://chromium-review.googlesource.com/c/chromium/src/+/2603063

We update PopulateLocalAddr() to make this function more readable.

Bug: 905818
Change-Id: I39f131dcdb20b8990e3018358bc4ba316c59f0a5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2612610Reviewed-by: default avatarGlen Robertson <glenrob@chromium.org>
Commit-Queue: Ke He <kehe@chromium.org>
Cr-Commit-Position: refs/heads/master@{#840880}
parent b21b1a21
......@@ -37,17 +37,19 @@ network::mojom::NetworkContext*& GetNetworkContextForTesting() {
return network_context;
}
// Populate |local_addr| from options.
void PopulateLocalAddr(const blink::mojom::DirectSocketOptions& options,
base::Optional<net::IPEndPoint>& local_addr) {
DCHECK(!local_addr);
// Get local ip address from options.
base::Optional<net::IPEndPoint> GetLocalAddr(
const blink::mojom::DirectSocketOptions& options) {
base::Optional<net::IPEndPoint> local_addr = base::nullopt;
if (!options.local_hostname)
return;
return local_addr;
net::IPAddress local_address;
bool success = local_address.AssignFromIPLiteral(*options.local_hostname);
if (success)
local_addr = net::IPEndPoint(local_address, options.local_port);
return local_addr;
}
} // namespace
......@@ -142,8 +144,7 @@ class DirectSocketsServiceImpl::ResolveHostAndOpenSocket final
}
DCHECK(resolved_addresses && !resolved_addresses->empty());
base::Optional<net::IPEndPoint> local_addr = base::nullopt;
PopulateLocalAddr(*options_, local_addr);
const base::Optional<net::IPEndPoint> local_addr = GetLocalAddr(*options_);
network::mojom::TCPConnectedSocketOptionsPtr tcp_connected_socket_options =
network::mojom::TCPConnectedSocketOptions::New();
......@@ -180,8 +181,7 @@ class DirectSocketsServiceImpl::ResolveHostAndOpenSocket final
}
DCHECK(resolved_addresses && !resolved_addresses->empty());
base::Optional<net::IPEndPoint> local_addr = base::nullopt;
PopulateLocalAddr(*options_, local_addr);
base::Optional<net::IPEndPoint> local_addr = GetLocalAddr(*options_);
// TODO(crbug.com/1119620): network_context_->CreateUDPSocket
// TODO(crbug.com/1119620): Connect(remote_addr, udp_socket_options)
......@@ -274,10 +274,10 @@ void DirectSocketsServiceImpl::SetNetworkContextForTesting(
}
// static
void DirectSocketsServiceImpl::PopulateLocalAddrForTesting(
const blink::mojom::DirectSocketOptions& options,
base::Optional<net::IPEndPoint>& local_addr) {
PopulateLocalAddr(options, local_addr);
base::Optional<net::IPEndPoint>
DirectSocketsServiceImpl::GetLocalAddrForTesting(
const blink::mojom::DirectSocketOptions& options) {
return GetLocalAddr(options);
}
void DirectSocketsServiceImpl::RenderFrameDeleted(
......
......@@ -65,9 +65,8 @@ class CONTENT_EXPORT DirectSocketsServiceImpl
static void SetNetworkContextForTesting(network::mojom::NetworkContext*);
static void PopulateLocalAddrForTesting(
const blink::mojom::DirectSocketOptions& options,
base::Optional<net::IPEndPoint>& local_addr);
static base::Optional<net::IPEndPoint> GetLocalAddrForTesting(
const blink::mojom::DirectSocketOptions& options);
private:
friend class DirectSocketsUnitTest;
......
......@@ -35,9 +35,9 @@ class DirectSocketsUnitTest : public RenderViewHostTestHarness {
return direct_sockets_service().ValidateOptions(options);
}
void PopulateLocalAddr(const blink::mojom::DirectSocketOptions& options,
base::Optional<net::IPEndPoint>& local_addr) {
DirectSocketsServiceImpl::PopulateLocalAddrForTesting(options, local_addr);
base::Optional<net::IPEndPoint> GetLocalAddr(
const blink::mojom::DirectSocketOptions& options) {
return DirectSocketsServiceImpl::GetLocalAddrForTesting(options);
}
private:
......@@ -69,30 +69,26 @@ TEST_F(DirectSocketsUnitTest, PopulateLocalAddr) {
blink::mojom::DirectSocketOptions options;
// Test for default condition.
base::Optional<net::IPEndPoint> local_addr = base::nullopt;
PopulateLocalAddr(options, local_addr);
base::Optional<net::IPEndPoint> local_addr = GetLocalAddr(options);
EXPECT_EQ(local_addr, base::nullopt);
// Test with IPv4 address and default port(0) provided.
local_addr = base::nullopt;
options.local_hostname = "12.34.56.78";
PopulateLocalAddr(options, local_addr);
local_addr = GetLocalAddr(options);
const uint8_t ipv4[net::IPAddress::kIPv4AddressSize] = {12, 34, 56, 78};
EXPECT_EQ(local_addr, net::IPEndPoint(net::IPAddress(ipv4), 0));
// Test with IPv6 address and default port(0) provided.
local_addr = base::nullopt;
options.local_hostname = "fedc:ba98:7654:3210:fedc:ba98:7654:3210";
PopulateLocalAddr(options, local_addr);
local_addr = GetLocalAddr(options);
const uint8_t ipv6[net::IPAddress::kIPv6AddressSize] = {
0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10};
EXPECT_EQ(local_addr, net::IPEndPoint(net::IPAddress(ipv6), 0));
// Test with IPv6 address and port(12345) provided.
local_addr = base::nullopt;
options.local_port = 12345;
PopulateLocalAddr(options, local_addr);
local_addr = GetLocalAddr(options);
EXPECT_EQ(local_addr, net::IPEndPoint(net::IPAddress(ipv6), 12345));
}
......
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