#ifndef CHROME_BROWSER_BANNERS_TEST_APP_BANNER_MANAGER_DESKTOP_H_
#define CHROME_BROWSER_BANNERS_TEST_APP_BANNER_MANAGER_DESKTOP_H_
#include <optional>
#include "base/values.h"
#include "chrome/browser/banners/app_banner_manager_desktop.h"
namespace content {
class WebContents;
}
namespace webapps {
class TestAppBannerManagerDesktop : public AppBannerManagerDesktop {
public:
explicit TestAppBannerManagerDesktop(content::WebContents* web_contents);
TestAppBannerManagerDesktop(const TestAppBannerManagerDesktop&) = delete;
TestAppBannerManagerDesktop& operator=(const TestAppBannerManagerDesktop&) =
delete;
~TestAppBannerManagerDesktop() override;
static void SetUp();
static TestAppBannerManagerDesktop* FromWebContents(
content::WebContents* contents);
void WaitForInstallableCheckTearDown();
bool WaitForInstallableCheck();
void PrepareDone(base::OnceClosure on_done);
AppBannerManager::State state();
void AwaitAppInstall();
void OnDidGetManifest(const InstallableData& result) override;
void OnDidPerformInstallableWebAppCheck(
const InstallableData& result) override;
void ResetCurrentPageData() override;
TestAppBannerManagerDesktop* AsTestAppBannerManagerDesktopForTesting()
override;
const base::Value::List& debug_log() const { return debug_log_; }
protected:
void OnInstall(blink::mojom::DisplayMode display,
bool set_current_web_app_not_installable) override;
void DidFinishCreatingWebApp(
const webapps::ManifestId& manifest_id,
base::WeakPtr<AppBannerManagerDesktop> is_navigation_current,
const webapps::AppId& app_id,
webapps::InstallResultCode code) override;
void DidFinishLoad(content::RenderFrameHost* render_frame_host,
const GURL& validated_url) override;
void UpdateState(AppBannerManager::State state) override;
void RecheckInstallabilityForLoadedPage() override;
private:
void SetInstallable(bool installable);
void SetPromotable(bool promotable);
void OnFinished();
std::optional<bool> installable_;
base::Value::List debug_log_;
base::OnceClosure tear_down_quit_closure_;
base::OnceClosure installable_quit_closure_;
base::OnceClosure promotable_quit_closure_;
base::OnceClosure on_done_;
base::OnceClosure on_install_;
};
}
#endif