#ifndef CHROME_BROWSER_WEB_APPLICATIONS_WEB_APP_H_
#define CHROME_BROWSER_WEB_APPLICATIONS_WEB_APP_H_
#include <stdint.h>
#include <iosfwd>
#include <optional>
#include <set>
#include <string>
#include <vector>
#include "base/containers/flat_map.h"
#include "base/containers/flat_set.h"
#include "base/not_fatal_until.h"
#include "base/time/time.h"
#include "base/values.h"
#include "base/version.h"
#include "build/chromeos_buildflags.h"
#include "chrome/browser/web_applications/features.h"
#include "chrome/browser/web_applications/isolated_web_apps/isolated_web_app_integrity_block_data.h"
#include "chrome/browser/web_applications/isolated_web_apps/isolated_web_app_storage_location.h"
#include "chrome/browser/web_applications/mojom/user_display_mode.mojom-forward.h"
#include "chrome/browser/web_applications/proto/web_app.pb.h"
#include "chrome/browser/web_applications/proto/web_app_os_integration_state.pb.h"
#include "chrome/browser/web_applications/proto/web_app_proto_package.pb.h"
#include "chrome/browser/web_applications/scope_extension_info.h"
#include "chrome/browser/web_applications/user_display_mode.h"
#include "chrome/browser/web_applications/web_app_chromeos_data.h"
#include "chrome/browser/web_applications/web_app_constants.h"
#include "chrome/browser/web_applications/web_app_install_info.h"
#include "components/services/app_service/public/cpp/file_handler.h"
#include "components/services/app_service/public/cpp/icon_info.h"
#include "components/services/app_service/public/cpp/protocol_handler_info.h"
#include "components/services/app_service/public/cpp/share_target.h"
#include "components/services/app_service/public/cpp/url_handler_info.h"
#include "components/sync/model/string_ordinal.h"
#include "components/sync/protocol/web_app_specifics.pb.h"
#include "components/webapps/common/web_app_id.h"
#include "third_party/blink/public/common/manifest/manifest.h"
#include "third_party/blink/public/common/permissions_policy/permissions_policy_declaration.h"
#include "third_party/blink/public/mojom/manifest/capture_links.mojom-shared.h"
#include "third_party/blink/public/mojom/manifest/display_mode.mojom-shared.h"
#include "third_party/skia/include/core/SkColor.h"
#include "url/gurl.h"
#if BUILDFLAG(IS_CHROMEOS_ASH)
#include "chrome/browser/ash/system_web_apps/types/system_web_app_data.h"
#endif
namespace webapps {
enum class WebappInstallSource;
}
namespace web_app {
class WebApp { … };
std::ostream& operator<<(std::ostream& out, const WebApp& app);
std::ostream& operator<<(
std::ostream& out,
const WebApp::ExternalManagementConfig& management_config);
bool operator==(const WebApp::ExternalManagementConfig& management_config1,
const WebApp::ExternalManagementConfig& management_config2);
bool operator!=(const WebApp::ExternalManagementConfig& management_config1,
const WebApp::ExternalManagementConfig& management_config2);
namespace proto {
bool operator==(const WebAppOsIntegrationState& os_integration_state1,
const WebAppOsIntegrationState& os_integration_state2);
bool operator!=(const WebAppOsIntegrationState& os_integration_state1,
const WebAppOsIntegrationState& os_integration_state2);
}
std::vector<std::string> GetSerializedAllowedOrigins(
const blink::ParsedPermissionsPolicyDeclaration
permissions_policy_declaration);
}
namespace sync_pb {
bool operator==(const WebAppSpecifics& sync_proto1,
const WebAppSpecifics& sync_proto2);
bool operator!=(const WebAppSpecifics& sync_proto1,
const WebAppSpecifics& sync_proto2);
}
#endif