// Copyright 2017 The Chromium 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 COMPONENTS_EXO_FILE_HELPER_H_
#define COMPONENTS_EXO_FILE_HELPER_H_

#include <string>

class GURL;

namespace base {
class FilePath;
}

namespace exo {

class FileHelper {
 public:
  virtual ~FileHelper() {}

  // Returns mime type which is used for list of Uris returned by this
  // FileHelper.
  virtual std::string GetMimeTypeForUriList() const = 0;

  // Converts native file path to URL which can be used by application with
  // |app_id|.  We don't expose enter file system to a container directly.
  // Instead we mount specific directory in the containers' namespace.  Thus we
  // need to convert native path to file URL which points mount point in
  // containers.  The conversion should be container specific, now we only have
  // ARC container though.
  virtual bool GetUrlFromPath(const std::string& app_id,
                              const base::FilePath& path,
                              GURL* out) = 0;

  // Takes in |pickle| constructed by the web contents view and returns true if
  // it contains any valid filesystem URLs.
  virtual bool HasUrlsInPickle(const base::Pickle& pickle) = 0;

  using UrlsFromPickleCallback =
      base::OnceCallback<void(const std::vector<GURL>& urls)>;

  // Takes in |pickle| constructed by the web contents view, reads filesystem
  // URLs from it and converts the URLs to something that applications can
  // understand.  e.g. content:// URI for Android apps.
  virtual void GetUrlsFromPickle(const std::string& app_id,
                                 const base::Pickle& pickle,
                                 UrlsFromPickleCallback callback) = 0;
};

}  // namespace exo

#endif  // COMPONENTS_EXO_FILE_HELPER_H_
