#include "config.h"
#include "APINavigation.h"
#include "WebBackForwardListItem.h"
#include "WebNavigationState.h"
#include <wtf/DebugUtilities.h>
using namespace WebCore;
using namespace WebKit;
namespace API {
Navigation::Navigation(WebNavigationState& state)
: m_navigationID(state.generateNavigationID())
{
}
Navigation::Navigation(WebNavigationState& state, WebCore::ResourceRequest&& request, WebBackForwardListItem* fromItem)
: m_navigationID(state.generateNavigationID())
, m_originalRequest(WTFMove(request))
, m_currentRequest(m_originalRequest)
, m_fromItem(fromItem)
{
m_redirectChain.append(m_originalRequest.url());
}
Navigation::Navigation(WebNavigationState& state, WebBackForwardListItem& targetItem, WebBackForwardListItem* fromItem, FrameLoadType backForwardFrameLoadType)
: m_navigationID(state.generateNavigationID())
, m_originalRequest(targetItem.url())
, m_currentRequest(m_originalRequest)
, m_targetItem(&targetItem)
, m_fromItem(fromItem)
, m_backForwardFrameLoadType(backForwardFrameLoadType)
{
}
Navigation::~Navigation()
{
}
void Navigation::setCurrentRequest(ResourceRequest&& request, ProcessIdentifier processIdentifier)
{
m_currentRequest = WTFMove(request);
m_currentRequestProcessIdentifier = processIdentifier;
}
void Navigation::appendRedirectionURL(const URL& url)
{
if (m_redirectChain.isEmpty() || m_redirectChain.last() != url)
m_redirectChain.append(url);
}
#if !LOG_DISABLED
const char* Navigation::loggingString() const
{
return debugString("Most recent URL: ", m_currentRequest.url().string(), " Back/forward list item URL: '", m_targetItem ? m_targetItem->url() : String { }, String::format("' (%p)", m_targetItem.get()));
}
#endif
}