// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_LACROS_WEB_APP_PROVIDER_BRIDGE_LACROS_H_
#define CHROME_BROWSER_LACROS_WEB_APP_PROVIDER_BRIDGE_LACROS_H_
#include "chromeos/crosapi/mojom/web_app_service.mojom.h"
#include "components/webapps/common/web_app_id.h"
#include "mojo/public/cpp/bindings/receiver.h"
class Profile;
namespace base {
class FilePath;
} // namespace base
namespace crosapi {
// Created in lacros-chrome. Allows ash-chrome to modify web app state in
// lacros-chrome.
class WebAppProviderBridgeLacros : public mojom::WebAppProviderBridge {
public:
WebAppProviderBridgeLacros();
WebAppProviderBridgeLacros(const WebAppProviderBridgeLacros&) = delete;
WebAppProviderBridgeLacros& operator=(const WebAppProviderBridgeLacros&) =
delete;
~WebAppProviderBridgeLacros() override;
// mojom::WebAppProviderBridge overrides:
void WebAppInstalledInArc(mojom::ArcWebAppInstallInfoPtr info,
WebAppInstalledInArcCallback callback) override;
void WebAppUninstalledInArc(const std::string& app_id,
WebAppUninstalledInArcCallback callback) override;
void GetWebApkCreationParams(
const std::string& app_id,
GetWebApkCreationParamsCallback callback) override;
void InstallMicrosoft365(InstallMicrosoft365Callback callback) override;
void ScheduleNavigateAndTriggerInstallDialog(
const GURL& install_url,
const GURL& origin_url,
bool is_renderer_initiated) override;
void GetSubAppIds(const webapps::AppId& app_id,
GetSubAppIdsCallback callback) override;
void GetSubAppToParentMap(GetSubAppToParentMapCallback callback) override;
void InstallWebAppFromVerifiedManifest(
mojom::WebAppVerifiedManifestInstallInfoPtr preload_install_info,
InstallWebAppFromVerifiedManifestCallback callback) override;
void LaunchIsolatedWebAppInstaller(
const base::FilePath& bundle_path) override;
private:
static void WebAppInstalledInArcImpl(
mojom::ArcWebAppInstallInfoPtr arc_install_info,
WebAppInstalledInArcCallback callback,
Profile* profile);
static void WebAppUninstalledInArcImpl(
const std::string& app_id,
WebAppUninstalledInArcCallback callback,
Profile* profile);
static void GetWebApkCreationParamsImpl(
const std::string& app_id,
GetWebApkCreationParamsCallback callback,
Profile* profile);
static void InstallMicrosoft365Impl(InstallMicrosoft365Callback callback,
Profile* profile);
static void ScheduleNavigateAndTriggerInstallDialogImpl(
const GURL& install_url,
const GURL& origin_url,
bool is_renderer_initiated,
Profile* profile);
static void GetSubAppIdsImpl(const webapps::AppId& app_id,
GetSubAppIdsCallback callback,
Profile* profile);
static void GetSubAppToParentMapImpl(GetSubAppToParentMapCallback callback,
Profile* profile);
static void InstallWebAppFromVerifiedManifestImpl(
mojom::WebAppVerifiedManifestInstallInfoPtr preload_install_info,
InstallWebAppFromVerifiedManifestCallback callback,
Profile* profile);
static void LaunchIsolatedWebAppInstallerImpl(
const base::FilePath& bundle_path,
Profile* profile);
mojo::Receiver<mojom::WebAppProviderBridge> receiver_{this};
};
} // namespace crosapi
#endif // CHROME_BROWSER_LACROS_WEB_APP_PROVIDER_BRIDGE_LACROS_H_