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