blob: 63f6af4c10122662073a8c541eec5ba82e29f3b1 [file] [log] [blame]
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "url/mojom/scheme_host_port_mojom_traits.h"
#include "base/strings/string_piece.h"
#include "url/mojom/scheme_host_port.mojom-shared.h"
#include "url/scheme_host_port.h"
namespace mojo {
// static
bool StructTraits<url::mojom::SchemeHostPortDataView, url::SchemeHostPort>::
Read(url::mojom::SchemeHostPortDataView data, url::SchemeHostPort* out) {
base::StringPiece scheme, host;
if (!data.ReadScheme(&scheme) || !data.ReadHost(&host))
return false;
*out = url::SchemeHostPort(scheme, host, data.port());
// Consider it an error if the output SchemeHostPort is not valid, but
// non-empty values were received over Mojo.
return out->IsValid() || (scheme.empty() && host.empty() && data.port() == 0);
} // namespace mojo