diff options
Diffstat (limited to 'chromium/third_party/WebKit/Source/core/loader/NavigationAction.cpp')
-rw-r--r-- | chromium/third_party/WebKit/Source/core/loader/NavigationAction.cpp | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/chromium/third_party/WebKit/Source/core/loader/NavigationAction.cpp b/chromium/third_party/WebKit/Source/core/loader/NavigationAction.cpp index b0cffda86eb..c774000dcf3 100644 --- a/chromium/third_party/WebKit/Source/core/loader/NavigationAction.cpp +++ b/chromium/third_party/WebKit/Source/core/loader/NavigationAction.cpp @@ -55,16 +55,21 @@ NavigationAction::NavigationAction() } NavigationAction::NavigationAction(const ResourceRequest& resourceRequest, FrameLoadType frameLoadType, - bool isFormSubmission, PassRefPtr<Event> event) + bool isFormSubmission, PassRefPtrWillBeRawPtr<Event> passEvent) : m_resourceRequest(resourceRequest) - , m_type(navigationType(frameLoadType, isFormSubmission, event)) - , m_event(event) { + 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 && m_event->isMouseEvent()) - mouseEvent = toMouseEvent(m_event.get()); - else if (m_type == NavigationTypeFormSubmitted && m_event && m_event->underlyingEvent() && m_event->underlyingEvent()->isMouseEvent()) - mouseEvent = toMouseEvent(m_event->underlyingEvent()); + 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; |