Remove network::mojom::OptionalBool in favor of bool?

Bug: 40489779
Change-Id: Ife9fea4e93c52329b7e3644d2b4ba8e3dca8aa7f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6731523
Reviewed-by: Tsuyoshi Horo <[email protected]>
Commit-Queue: David Benjamin <[email protected]>
Reviewed-by: Giovanni Ortuno Urquidi <[email protected]>
Reviewed-by: Andrew Rayskiy <[email protected]>
Reviewed-by: Yao Xiao <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1486951}
diff --git a/content/browser/direct_sockets/direct_sockets_service_impl.cc b/content/browser/direct_sockets/direct_sockets_service_impl.cc
index 8acde00..ff2187d2 100644
--- a/content/browser/direct_sockets/direct_sockets_service_impl.cc
+++ b/content/browser/direct_sockets/direct_sockets_service_impl.cc
@@ -559,11 +559,7 @@
   }
 
   auto socket_options = network::mojom::UDPSocketOptions::New();
-  if (options->ipv6_only.has_value()) {
-    socket_options->ipv6_only = *options->ipv6_only
-                                    ? network::mojom::OptionalBool::kTrue
-                                    : network::mojom::OptionalBool::kFalse;
-  }
+  socket_options->ipv6_only = options->ipv6_only;
   if (options->send_buffer_size.has_value()) {
     socket_options->send_buffer_size = *options->send_buffer_size;
   }
@@ -613,12 +609,7 @@
   }
 
   auto server_options = network::mojom::TCPServerSocketOptions::New();
-
-  if (options->ipv6_only.has_value()) {
-    server_options->ipv6_only = *options->ipv6_only
-                                    ? network::mojom::OptionalBool::kTrue
-                                    : network::mojom::OptionalBool::kFalse;
-  }
+  server_options->ipv6_only = options->ipv6_only;
   // Substitute |options->backlog| with SOMAXCONN if not specified.
   server_options->backlog =
       std::min<uint32_t>(SOMAXCONN, options->backlog.value_or(SOMAXCONN));
diff --git a/content/browser/shared_storage/shared_storage_header_observer_unittest.cc b/content/browser/shared_storage/shared_storage_header_observer_unittest.cc
index d8bc356..cdb24089 100644
--- a/content/browser/shared_storage/shared_storage_header_observer_unittest.cc
+++ b/content/browser/shared_storage/shared_storage_header_observer_unittest.cc
@@ -32,7 +32,6 @@
 #include "services/network/public/cpp/permissions_policy/origin_with_possible_wildcards.h"
 #include "services/network/public/cpp/permissions_policy/permissions_policy_declaration.h"
 #include "services/network/public/cpp/shared_storage_utils.h"
-#include "services/network/public/mojom/optional_bool.mojom.h"
 #include "services/network/public/mojom/permissions_policy/permissions_policy_feature.mojom-shared.h"
 #include "services/network/public/mojom/url_loader_network_service_observer.mojom.h"
 #include "testing/gmock/include/gmock/gmock.h"
diff --git a/services/network/public/mojom/BUILD.gn b/services/network/public/mojom/BUILD.gn
index 3e2e256..e17a681 100644
--- a/services/network/public/mojom/BUILD.gn
+++ b/services/network/public/mojom/BUILD.gn
@@ -608,7 +608,6 @@
     "network_interface_change_listener.mojom",
     "network_types.mojom",
     "no_vary_search.mojom",
-    "optional_bool.mojom",
     "parsed_headers.mojom",
     "parsed_request_cookie.mojom",
     "referrer_policy.mojom",
diff --git a/services/network/public/mojom/optional_bool.mojom b/services/network/public/mojom/optional_bool.mojom
deleted file mode 100644
index f34bef7..0000000
--- a/services/network/public/mojom/optional_bool.mojom
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright 2023 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-module network.mojom;
-
-// Augments a bool to include an 'unset' value.
-enum OptionalBool {
-  kUnset = 0,
-  kFalse = 1,
-  kTrue = 2,
-};
diff --git a/services/network/public/mojom/tcp_socket.mojom b/services/network/public/mojom/tcp_socket.mojom
index 11089ef..b07bb42 100644
--- a/services/network/public/mojom/tcp_socket.mojom
+++ b/services/network/public/mojom/tcp_socket.mojom
@@ -6,7 +6,6 @@
 
 import "services/network/public/mojom/address_list.mojom";
 import "services/network/public/mojom/ip_endpoint.mojom";
-import "services/network/public/mojom/optional_bool.mojom";
 import "services/network/public/mojom/ssl_config.mojom";
 import "services/network/public/mojom/tls_socket.mojom";
 import "services/network/public/mojom/network_param.mojom";
@@ -56,7 +55,7 @@
   // being applied (|true| on Windows, |false| on Posix).
   // TODO(crbug.com/40262165): Investigate the possibility of replacing optional
   // with a platform-agnostic default.
-  OptionalBool ipv6_only;
+  bool? ipv6_only;
 
   [EnableIf=is_chromeos]
   // The caller may choose to supply a |connection_tracker| if they lack access
diff --git a/services/network/public/mojom/udp_socket.mojom b/services/network/public/mojom/udp_socket.mojom
index cacde08..e63f46e4 100644
--- a/services/network/public/mojom/udp_socket.mojom
+++ b/services/network/public/mojom/udp_socket.mojom
@@ -7,7 +7,6 @@
 import "mojo/public/mojom/base/read_only_buffer.mojom";
 import "services/network/public/mojom/ip_address.mojom";
 import "services/network/public/mojom/ip_endpoint.mojom";
-import "services/network/public/mojom/optional_bool.mojom";
 import "services/network/public/mojom/mutable_network_traffic_annotation_tag.mojom";
 
 // Represents options that consumers can set when requesting a UDPSocket
@@ -76,7 +75,7 @@
   // |true| restricts incoming connections to IPv6 only; |false| allows both
   // IPv4/IPv6 connections. Leaving this value unset results in platform default
   // being applied (|true| on Windows, |false| on Posix).
-  OptionalBool ipv6_only;
+  bool? ipv6_only;
 };
 
 // UDPSocket is an interface that exposes UDP socket functionalities.
diff --git a/services/network/public/mojom/url_loader_network_service_observer.mojom b/services/network/public/mojom/url_loader_network_service_observer.mojom
index 2e8c1f96..fcf188b 100644
--- a/services/network/public/mojom/url_loader_network_service_observer.mojom
+++ b/services/network/public/mojom/url_loader_network_service_observer.mojom
@@ -12,7 +12,6 @@
 import "services/network/public/mojom/ip_address.mojom";
 import "services/network/public/mojom/ip_address_space.mojom";
 import "services/network/public/mojom/network_param.mojom";
-import "services/network/public/mojom/optional_bool.mojom";
 import "services/network/public/mojom/shared_storage.mojom";
 import "url/mojom/origin.mojom";
 import "url/mojom/url.mojom";
diff --git a/services/network/shared_storage/shared_storage_test_url_loader_network_observer.cc b/services/network/shared_storage/shared_storage_test_url_loader_network_observer.cc
index df815fb..30c467a 100644
--- a/services/network/shared_storage/shared_storage_test_url_loader_network_observer.cc
+++ b/services/network/shared_storage/shared_storage_test_url_loader_network_observer.cc
@@ -16,7 +16,6 @@
 #include "base/containers/to_vector.h"
 #include "base/functional/bind.h"
 #include "base/functional/callback.h"
-#include "services/network/public/mojom/optional_bool.mojom.h"
 #include "services/network/public/mojom/shared_storage.mojom.h"
 #include "services/network/public/mojom/url_loader_network_service_observer.mojom.h"
 #include "url/origin.h"
diff --git a/services/network/socket_factory.cc b/services/network/socket_factory.cc
index 0f7928e1..1c1ef5cc 100644
--- a/services/network/socket_factory.cc
+++ b/services/network/socket_factory.cc
@@ -154,19 +154,8 @@
     socket->AttachConnectionTracker(std::move(options->connection_tracker));
   }
 #endif  // BUILDFLAG(IS_CHROMEOS)
-  std::optional<bool> ipv6_only;
-  switch (options->ipv6_only) {
-    case mojom::OptionalBool::kTrue:
-      ipv6_only = true;
-      break;
-    case mojom::OptionalBool::kFalse:
-      ipv6_only = false;
-      break;
-    case mojom::OptionalBool::kUnset:
-      break;
-  }
   base::expected<net::IPEndPoint, int32_t> result =
-      socket->Listen(local_addr, options->backlog, ipv6_only);
+      socket->Listen(local_addr, options->backlog, options->ipv6_only);
   if (!result.has_value()) {
     std::move(callback).Run(result.error(), std::nullopt);
     return;
diff --git a/services/network/udp_socket.cc b/services/network/udp_socket.cc
index 4a11bd7..7e57d7c 100644
--- a/services/network/udp_socket.cc
+++ b/services/network/udp_socket.cc
@@ -141,17 +141,8 @@
       result = socket_.SetSendBufferSize(
           ClampUDPBufferSize(options->send_buffer_size));
     }
-    if (result == net::OK) {
-      switch (options->ipv6_only) {
-        case mojom::OptionalBool::kTrue:
-          result = socket_.SetIPv6Only(true);
-          break;
-        case mojom::OptionalBool::kFalse:
-          result = socket_.SetIPv6Only(false);
-          break;
-        default:
-          break;
-      }
+    if (result == net::OK && options->ipv6_only.has_value()) {
+      result = socket_.SetIPv6Only(options->ipv6_only.value());
     }
     return result;
   }