#ifndef FUCHSIA_WEB_WEBENGINE_BROWSER_COOKIE_MANAGER_IMPL_H_
#define FUCHSIA_WEB_WEBENGINE_BROWSER_COOKIE_MANAGER_IMPL_H_
#include <fuchsia/web/cpp/fidl.h>
#include "base/functional/callback.h"
#include "fuchsia_web/webengine/web_engine_export.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "services/network/public/cpp/network_context_getter.h"
#include "services/network/public/mojom/cookie_manager.mojom.h"
namespace network {
namespace mojom {
class NetworkContext;
}
}
class WEB_ENGINE_EXPORT CookieManagerImpl final
: public fuchsia::web::CookieManager {
public:
explicit CookieManagerImpl(network::NetworkContextGetter get_network_context);
CookieManagerImpl(const CookieManagerImpl&) = delete;
CookieManagerImpl& operator=(const CookieManagerImpl&) = delete;
~CookieManagerImpl() override;
void ObserveCookieChanges(
fidl::StringPtr url,
fidl::StringPtr name,
fidl::InterfaceRequest<fuchsia::web::CookiesIterator> changes) override;
void GetCookieList(
fidl::StringPtr url,
fidl::StringPtr name,
fidl::InterfaceRequest<fuchsia::web::CookiesIterator> cookies) override;
void set_on_mojo_disconnected_for_test(base::OnceClosure on_disconnected) {
on_mojo_disconnected_for_test_ = std::move(on_disconnected);
}
private:
void EnsureCookieManager();
void OnMojoDisconnect();
const network::NetworkContextGetter get_network_context_;
mojo::Remote<network::mojom::CookieManager> cookie_manager_;
base::OnceClosure on_mojo_disconnected_for_test_;
};
#endif