xref: /aosp_15_r20/external/cronet/url/mojom/scheme_host_port_mojom_traits.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2021 The Chromium Authors
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 "url/mojom/scheme_host_port_mojom_traits.h"
6 
7 #include <string_view>
8 
9 #include "url/mojom/scheme_host_port.mojom-shared.h"
10 #include "url/scheme_host_port.h"
11 
12 namespace mojo {
13 
14 // static
15 bool StructTraits<url::mojom::SchemeHostPortDataView, url::SchemeHostPort>::
Read(url::mojom::SchemeHostPortDataView data,url::SchemeHostPort * out)16     Read(url::mojom::SchemeHostPortDataView data, url::SchemeHostPort* out) {
17   std::string_view scheme, host;
18   if (!data.ReadScheme(&scheme) || !data.ReadHost(&host))
19     return false;
20 
21   *out = url::SchemeHostPort(scheme, host, data.port());
22 
23   // Consider it an error if the output SchemeHostPort is not valid, but
24   // non-empty values were received over Mojo.
25   return out->IsValid() || (scheme.empty() && host.empty() && data.port() == 0);
26 }
27 
28 }  // namespace mojo
29