#ifndef CHROME_BROWSER_COMMERCE_MERCHANT_VIEWER_MERCHANT_SIGNAL_DB_H_
#define CHROME_BROWSER_COMMERCE_MERCHANT_VIEWER_MERCHANT_SIGNAL_DB_H_
#include "base/android/scoped_java_ref.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/weak_ptr.h"
#include "components/commerce/core/proto/merchant_signal_db_content.pb.h"
#include "components/keyed_service/core/keyed_service.h"
#include "components/leveldb_proto/public/proto_database.h"
namespace content {
class BrowserContext;
}
namespace merchant_signal_db {
class MerchantSignalContentProto;
}
template <typename T>
class SessionProtoDB;
class MerchantSignalDB {
public:
explicit MerchantSignalDB(content::BrowserContext* browser_context);
MerchantSignalDB(const MerchantSignalDB&) = delete;
MerchantSignalDB& operator=(const MerchantSignalDB&) = delete;
~MerchantSignalDB();
void Save(JNIEnv* env,
std::string& key,
const jlong jtimestamp,
const base::android::JavaParamRef<jobject>& jcallback);
void Load(JNIEnv* env,
std::string& key,
const base::android::JavaParamRef<jobject>& jcallback);
void LoadWithPrefix(JNIEnv* env,
std::string& prefix,
const base::android::JavaParamRef<jobject>& jcallback);
void Delete(JNIEnv* env,
std::string& key,
const base::android::JavaParamRef<jobject>& jcallback);
void DeleteAll(JNIEnv* env,
const base::android::JavaParamRef<jobject>& jcallback);
private:
raw_ptr<SessionProtoDB<merchant_signal_db::MerchantSignalContentProto>>
proto_db_;
base::WeakPtrFactory<MerchantSignalDB> weak_ptr_factory_{this};
};
#endif