#ifndef CHROME_BROWSER_WEB_APPLICATIONS_ISOLATED_WEB_APPS_ISOLATED_WEB_APP_SOURCE_H_
#define CHROME_BROWSER_WEB_APPLICATIONS_ISOLATED_WEB_APPS_ISOLATED_WEB_APP_SOURCE_H_
#include <iosfwd>
#include <type_traits>
#include "base/files/file_path.h"
#include "base/types/expected.h"
#include "base/values.h"
#include "chrome/browser/web_applications/isolated_web_apps/isolated_web_app_storage_location.h"
#include "third_party/abseil-cpp/absl/types/variant.h"
#include "url/origin.h"
namespace web_app {
class IwaSource;
class IwaSourceWithMode;
class IwaSourceDevMode;
class IwaSourceProdMode;
class IwaSourceWithModeAndFileOp;
class IwaSourceDevModeWithFileOp;
class IwaSourceProdModeWithFileOp;
class IwaSourceBundle;
class IwaSourceBundleWithMode;
class IwaSourceBundleDevMode;
class IwaSourceBundleProdMode;
class IwaSourceBundleWithModeAndFileOp;
class IwaSourceBundleDevModeWithFileOp;
class IwaSourceBundleProdModeWithFileOp;
class IwaSourceProxy;
class IwaSourceProxy { … };
std::ostream& operator<<(std::ostream& os, const IwaSourceProxy& source);
enum class IwaSourceBundleModeAndFileOp { … };
std::ostream& operator<<(std::ostream& os,
IwaSourceBundleModeAndFileOp bundle_mode_and_file_op);
enum class IwaSourceBundleDevFileOp { … };
std::ostream& operator<<(std::ostream& os, IwaSourceBundleDevFileOp file_op);
enum class IwaSourceBundleProdFileOp { … };
std::ostream& operator<<(std::ostream& os, IwaSourceBundleProdFileOp file_op);
inline constexpr IwaSourceBundleDevFileOp kDefaultBundleDevFileOp = …;
namespace internal {
class IwaSourceBundleBase { … };
}
class IwaSourceBundle : public internal::IwaSourceBundleBase { … };
std::ostream& operator<<(std::ostream& os, const IwaSourceBundle& source);
class IwaSourceBundleWithMode : public internal::IwaSourceBundleBase { … };
std::ostream& operator<<(std::ostream& os,
const IwaSourceBundleWithMode& source);
class IwaSourceBundleDevMode : public internal::IwaSourceBundleBase { … };
std::ostream& operator<<(std::ostream& os,
const IwaSourceBundleDevMode& source);
class IwaSourceBundleProdMode : public internal::IwaSourceBundleBase { … };
std::ostream& operator<<(std::ostream& os,
const IwaSourceBundleProdMode& source);
class IwaSourceBundleWithModeAndFileOp : public internal::IwaSourceBundleBase { … };
std::ostream& operator<<(std::ostream& os,
const IwaSourceBundleWithModeAndFileOp& source);
class IwaSourceBundleDevModeWithFileOp : public IwaSourceBundleDevMode { … };
std::ostream& operator<<(std::ostream& os,
const IwaSourceBundleDevModeWithFileOp& source);
class IwaSourceBundleProdModeWithFileOp : public IwaSourceBundleProdMode { … };
std::ostream& operator<<(std::ostream& os,
const IwaSourceBundleProdModeWithFileOp& source);
class IwaSource { … };
std::ostream& operator<<(std::ostream& os, const IwaSource& source);
class IwaSourceWithMode { … };
std::ostream& operator<<(std::ostream& os, const IwaSourceWithMode& source);
class IwaSourceDevMode { … };
std::ostream& operator<<(std::ostream& os, const IwaSourceDevMode& source);
class IwaSourceProdMode { … };
std::ostream& operator<<(std::ostream& os, const IwaSourceProdMode& source);
class IwaSourceWithModeAndFileOp { … };
std::ostream& operator<<(std::ostream& os,
const IwaSourceWithModeAndFileOp& source);
class IwaSourceDevModeWithFileOp { … };
std::ostream& operator<<(std::ostream& os,
const IwaSourceDevModeWithFileOp& source);
class IwaSourceProdModeWithFileOp { … };
std::ostream& operator<<(std::ostream& os,
const IwaSourceProdModeWithFileOp& source);
}
#endif