| // Copyright 2022 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "socket_broker_impl.h" |
| |
| #include "base/run_loop.h" |
| #include "base/test/task_environment.h" |
| #include "content/public/test/browser_task_environment.h" |
| #include "mojo/public/cpp/bindings/remote.h" |
| #include "net/base/address_family.h" |
| #include "net/base/completion_once_callback.h" |
| #include "net/base/net_errors.h" |
| #include "net/socket/socket_descriptor.h" |
| #include "net/test/gtest_util.h" |
| #include "services/network/public/mojom/socket_broker.mojom.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| namespace content { |
| |
| void DidCompleteCreateTest(base::RunLoop* run_loop, |
| network::TransferableSocket socket, |
| int rv) { |
| EXPECT_NE(socket.TakeSocket(), net::kInvalidSocket); |
| EXPECT_EQ(rv, net::OK); |
| |
| run_loop->Quit(); |
| } |
| |
| TEST(SocketBrokerImplTest, TestCanOpenSocket) { |
| content::BrowserTaskEnvironment task_environment; |
| |
| SocketBrokerImpl socket_broker_impl; |
| base::RunLoop run_loop; |
| mojo::Remote<network::mojom::SocketBroker> remote( |
| socket_broker_impl.BindNewRemote()); |
| remote->CreateTcpSocket(net::ADDRESS_FAMILY_IPV4, |
| base::BindOnce(&DidCompleteCreateTest, &run_loop)); |
| run_loop.Run(); |
| |
| base::RunLoop run_loop2; |
| remote->CreateTcpSocket(net::ADDRESS_FAMILY_IPV6, |
| base::BindOnce(&DidCompleteCreateTest, &run_loop2)); |
| run_loop2.Run(); |
| } |
| |
| } // namespace content |