blob: 33deefc3e76b72e6f7bd393b3bbb513314f028e8 [file] [log] [blame]
// Copyright 2025 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_WALLET_CHROME_WALLETABLE_PASS_CLIENT_H_
#define CHROME_BROWSER_WALLET_CHROME_WALLETABLE_PASS_CLIENT_H_
#include "base/memory/raw_ref.h"
#include "components/wallet/content/browser/content_walletable_pass_ingestion_controller.h"
#include "components/wallet/core/browser/walletable_pass_client.h"
namespace optimization_guide {
class OptimizationGuideDecider;
class OptimizationGuideModelExecutor;
} // namespace optimization_guide
namespace tabs {
class TabInterface;
} // namespace tabs
namespace wallet {
class ContentWalletablePassIngestionController;
// The Chrome implementation of `wallet::WalletablePassClient`.
//
// This class bridges the core wallet component with browser services, such as
// the Optimization Guide and UI interactions (e.g., showing a saving pass
// bubble). Its lifecycle is scoped to a single tab and managed by
// `TabFeatures`.
class ChromeWalletablePassClient : public WalletablePassClient {
public:
explicit ChromeWalletablePassClient(tabs::TabInterface* tab);
~ChromeWalletablePassClient() override;
// WalleablePassClient implementation.
optimization_guide::OptimizationGuideDecider* GetOptimizationGuideDecider()
override;
optimization_guide::OptimizationGuideModelExecutor*
GetOptimizationGuideModelExecutor() override;
private:
const raw_ref<tabs::TabInterface> tab_;
ContentWalletablePassIngestionController controller_;
};
} // namespace wallet
#endif // CHROME_BROWSER_WALLET_CHROME_WALLETABLE_PASS_CLIENT_H_