This source file includes following definitions.
- navigationType
#include "config.h"
#include "core/loader/NavigationAction.h"
#include "core/events/MouseEvent.h"
#include "core/loader/FrameLoader.h"
namespace WebCore {
static NavigationType navigationType(FrameLoadType frameLoadType, bool isFormSubmission, bool haveEvent)
{
bool isReload = frameLoadType == FrameLoadTypeReload || frameLoadType == FrameLoadTypeReloadFromOrigin;
bool isBackForward = isBackForwardLoadType(frameLoadType);
if (isFormSubmission)
return (isReload || isBackForward) ? NavigationTypeFormResubmitted : NavigationTypeFormSubmitted;
if (haveEvent)
return NavigationTypeLinkClicked;
if (isReload)
return NavigationTypeReload;
if (isBackForward)
return NavigationTypeBackForward;
return NavigationTypeOther;
}
NavigationAction::NavigationAction()
: m_type(NavigationTypeOther)
{
}
NavigationAction::NavigationAction(const ResourceRequest& resourceRequest, FrameLoadType frameLoadType,
bool isFormSubmission, PassRefPtrWillBeRawPtr<Event> passEvent)
: m_resourceRequest(resourceRequest)
{
RefPtrWillBeRawPtr<Event> event = passEvent;
m_type = navigationType(frameLoadType, isFormSubmission || resourceRequest.httpBody(), event);
m_eventTimeStamp = event ? event->timeStamp() : 0;
const MouseEvent* mouseEvent = 0;
if (m_type == NavigationTypeLinkClicked) {
ASSERT(event);
if (event->isMouseEvent())
mouseEvent = toMouseEvent(event.get());
} else if (m_type == NavigationTypeFormSubmitted && event && event->underlyingEvent() && event->underlyingEvent()->isMouseEvent()) {
mouseEvent = toMouseEvent(event->underlyingEvent());
}
if (!mouseEvent || !navigationPolicyFromMouseEvent(mouseEvent->button(), mouseEvent->ctrlKey(), mouseEvent->shiftKey(), mouseEvent->altKey(), mouseEvent->metaKey(), &m_policy))
m_policy = NavigationPolicyCurrentTab;
}
}