// Copyright 2020 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef SMBFS_MOJOM_FILE_PATH_MOJOM_TRAITS_H_
#define SMBFS_MOJOM_FILE_PATH_MOJOM_TRAITS_H_

#include <string>

#include <base/files/file_path.h>

#include "smbfs/mojom/smbfs.mojom.h"

namespace mojo {

template <>
struct StructTraits<smbfs::mojom::FilePathDataView, base::FilePath> {
  static std::string path(const base::FilePath& path) { return path.value(); }

  static bool Read(smbfs::mojom::FilePathDataView data, base::FilePath* out) {
    std::string path;
    if (!data.ReadPath(&path)) {
      return false;
    }

    base::FilePath file_path(path);
    // Ensure what was deserialised matches what was provided.
    if (path.compare(file_path.value()) != 0) {
      return false;
    }

    if (!file_path.IsAbsolute() || file_path.ReferencesParent() ||
        file_path.EndsWithSeparator()) {
      return false;
    }

    *out = file_path;
    return true;
  }
};

}  // namespace mojo

#endif  // SMBFS_MOJOM_FILE_PATH_MOJOM_TRAITS_H_
