WebNavigationState.h [plain text]
#pragma once
#include <wtf/HashMap.h>
#include <wtf/Ref.h>
namespace API {
class Navigation;
struct SubstituteData;
}
namespace WebCore {
class ResourceRequest;
enum class FrameLoadType : uint8_t;
}
namespace WebKit {
class WebPageProxy;
class WebBackForwardListItem;
class WebNavigationState {
WTF_MAKE_FAST_ALLOCATED;
public:
explicit WebNavigationState();
~WebNavigationState();
Ref<API::Navigation> createBackForwardNavigation(WebBackForwardListItem& targetItem, WebBackForwardListItem* currentItem, WebCore::FrameLoadType);
Ref<API::Navigation> createLoadRequestNavigation(WebCore::ResourceRequest&&, WebBackForwardListItem* currentItem);
Ref<API::Navigation> createReloadNavigation(WebBackForwardListItem* currentAndTargetItem);
Ref<API::Navigation> createLoadDataNavigation(std::unique_ptr<API::SubstituteData>&&);
bool hasNavigation(uint64_t navigationID) const { return m_navigations.contains(navigationID); }
API::Navigation* navigation(uint64_t navigationID);
RefPtr<API::Navigation> takeNavigation(uint64_t navigationID);
void didDestroyNavigation(uint64_t navigationID);
void clearAllNavigations();
uint64_t generateNavigationID()
{
return ++m_navigationID;
}
private:
HashMap<uint64_t, RefPtr<API::Navigation>> m_navigations;
uint64_t m_navigationID { 0 };
};
}