From 8c8cbe0e4c9caef3fdf94e17fa4d8ad2ea1e9c73 Mon Sep 17 00:00:00 2001 From: Masayuki Nakano Date: Tue, 22 Mar 2016 16:47:52 +0900 Subject: [PATCH] Bug 1256589 part.5 Add DefaultPrevented() and DefaultPreventedByContent() to WidgetEvent r=smaug MozReview-Commit-ID: 5q3QUPTf12Z --HG-- extra : rebase_source : 83ed946b44910713a61c80bd21202aba9430dd2a extra : source : 4eb2193814ab1958a65add0c8c307d07c646d61c --- dom/events/Event.cpp | 4 ++-- dom/events/Event.h | 2 +- dom/events/EventListenerManager.cpp | 4 ++-- dom/events/EventStateManager.cpp | 10 +++++----- dom/events/IMEContentObserver.cpp | 2 +- dom/html/HTMLInputElement.cpp | 4 ++-- dom/ipc/TabParent.cpp | 2 +- gfx/layers/apz/util/APZEventState.cpp | 3 +-- layout/base/nsDocumentViewer.cpp | 3 +-- layout/base/nsPresShell.cpp | 9 ++++----- layout/forms/nsListControlFrame.cpp | 2 +- layout/generic/nsPluginFrame.cpp | 2 +- widget/BasicEvents.h | 14 ++++++++++++++ widget/windows/KeyboardLayout.cpp | 4 ++-- 14 files changed, 38 insertions(+), 27 deletions(-) diff --git a/dom/events/Event.cpp b/dom/events/Event.cpp index dd2cc454843d..d7d23552377a 100644 --- a/dom/events/Event.cpp +++ b/dom/events/Event.cpp @@ -1050,14 +1050,14 @@ Event::DefaultPrevented(JSContext* aCx) const NS_ENSURE_TRUE(mEvent, false); // If preventDefault() has never been called, just return false. - if (!mEvent->mFlags.mDefaultPrevented) { + if (!mEvent->DefaultPrevented()) { return false; } // If preventDefault() has been called by content, return true. Otherwise, // i.e., preventDefault() has been called by chrome, return true only when // this is called by chrome. - return mEvent->mFlags.mDefaultPreventedByContent || IsChrome(aCx); + return mEvent->DefaultPreventedByContent() || IsChrome(aCx); } double diff --git a/dom/events/Event.h b/dom/events/Event.h index 11b219c3ddac..1f2e213288fc 100644 --- a/dom/events/Event.h +++ b/dom/events/Event.h @@ -187,7 +187,7 @@ public: bool DefaultPrevented() const { - return mEvent->mFlags.mDefaultPrevented; + return mEvent->DefaultPrevented(); } bool MultipleActionsPrevented() const diff --git a/dom/events/EventListenerManager.cpp b/dom/events/EventListenerManager.cpp index e766b07d3211..d73bd8524bda 100644 --- a/dom/events/EventListenerManager.cpp +++ b/dom/events/EventListenerManager.cpp @@ -1190,7 +1190,7 @@ EventListenerManager::HandleEventInternal(nsPresContext* aPresContext, nsEventStatus* aEventStatus) { //Set the value of the internal PreventDefault flag properly based on aEventStatus - if (!aEvent->mFlags.mDefaultPrevented && + if (!aEvent->DefaultPrevented() && *aEventStatus == nsEventStatus_eConsumeNoDefault) { // Assume that if only aEventStatus claims that the event has already been // consumed, the consumer is default event handler. @@ -1309,7 +1309,7 @@ EventListenerManager::HandleEventInternal(nsPresContext* aPresContext, mNoListenerForEventAtom = aEvent->userType; } - if (aEvent->mFlags.mDefaultPrevented) { + if (aEvent->DefaultPrevented()) { *aEventStatus = nsEventStatus_eConsumeNoDefault; } } diff --git a/dom/events/EventStateManager.cpp b/dom/events/EventStateManager.cpp index 1c800f1df25f..03ef24b14cf5 100644 --- a/dom/events/EventStateManager.cpp +++ b/dom/events/EventStateManager.cpp @@ -2225,7 +2225,7 @@ EventStateManager::DispatchLegacyMouseScrollEvents(nsIFrame* aTargetFrame, nsWeakFrame targetFrame(aTargetFrame); MOZ_ASSERT(*aStatus != nsEventStatus_eConsumeNoDefault && - !aEvent->mFlags.mDefaultPrevented, + !aEvent->DefaultPrevented(), "If you make legacy events dispatched for default prevented wheel " "event, you need to initialize stateX and stateY"); EventState stateX, stateY; @@ -2311,8 +2311,8 @@ EventStateManager::SendLineScrollEvent(nsIFrame* aTargetFrame, EventDispatcher::Dispatch(targetContent, aTargetFrame->PresContext(), &event, nullptr, &status); aState.mDefaultPrevented = - event.mFlags.mDefaultPrevented || status == nsEventStatus_eConsumeNoDefault; - aState.mDefaultPreventedByContent = event.mFlags.mDefaultPreventedByContent; + event.DefaultPrevented() || status == nsEventStatus_eConsumeNoDefault; + aState.mDefaultPreventedByContent = event.DefaultPreventedByContent(); } void @@ -2351,8 +2351,8 @@ EventStateManager::SendPixelScrollEvent(nsIFrame* aTargetFrame, EventDispatcher::Dispatch(targetContent, aTargetFrame->PresContext(), &event, nullptr, &status); aState.mDefaultPrevented = - event.mFlags.mDefaultPrevented || status == nsEventStatus_eConsumeNoDefault; - aState.mDefaultPreventedByContent = event.mFlags.mDefaultPreventedByContent; + event.DefaultPrevented() || status == nsEventStatus_eConsumeNoDefault; + aState.mDefaultPreventedByContent = event.DefaultPreventedByContent(); } nsIFrame* diff --git a/dom/events/IMEContentObserver.cpp b/dom/events/IMEContentObserver.cpp index 6c9db449d8e9..a45bf89c8309 100644 --- a/dom/events/IMEContentObserver.cpp +++ b/dom/events/IMEContentObserver.cpp @@ -757,7 +757,7 @@ IMEContentObserver::OnMouseButtonEvent(nsPresContext* aPresContext, return false; } if (!aMouseEvent->mFlags.mIsTrusted || - aMouseEvent->mFlags.mDefaultPrevented || + aMouseEvent->DefaultPrevented() || !aMouseEvent->widget) { return false; } diff --git a/dom/html/HTMLInputElement.cpp b/dom/html/HTMLInputElement.cpp index 5e3a26eae6f0..36b346b6dd4e 100644 --- a/dom/html/HTMLInputElement.cpp +++ b/dom/html/HTMLInputElement.cpp @@ -3699,7 +3699,7 @@ HTMLInputElement::MaybeInitPickers(EventChainPostVisitor& aVisitor) // - it's the left mouse button. // We do not prevent non-trusted click because authors can already use // .click(). However, the pickers will follow the rules of popup-blocking. - if (aVisitor.mEvent->mFlags.mDefaultPrevented) { + if (aVisitor.mEvent->DefaultPrevented()) { return NS_OK; } WidgetMouseEvent* mouseEvent = aVisitor.mEvent->AsMouseEvent(); @@ -3890,7 +3890,7 @@ HTMLInputElement::PostHandleEvent(EventChainPostVisitor& aVisitor) // the editor's handling of up/down keypress events. For that reason we // just ignore aVisitor.mEventStatus here and go ahead and handle the // event to increase/decrease the value of the number control. - if (!aVisitor.mEvent->mFlags.mDefaultPreventedByContent && IsMutable()) { + if (!aVisitor.mEvent->DefaultPreventedByContent() && IsMutable()) { StepNumberControlForUserEvent(keyEvent->keyCode == NS_VK_UP ? 1 : -1); aVisitor.mEventStatus = nsEventStatus_eConsumeNoDefault; } diff --git a/dom/ipc/TabParent.cpp b/dom/ipc/TabParent.cpp index c61a74121ddb..f1fa30e83fba 100644 --- a/dom/ipc/TabParent.cpp +++ b/dom/ipc/TabParent.cpp @@ -2139,7 +2139,7 @@ TabParent::RecvDispatchAfterKeyboardEvent(const WidgetKeyboardEvent& aEvent) PresShell::BeforeAfterKeyboardEventEnabled() && localEvent.mMessage != eKeyPress) { presShell->DispatchAfterKeyboardEvent(mFrameElement, localEvent, - aEvent.mFlags.mDefaultPrevented); + aEvent.DefaultPrevented()); } return true; diff --git a/gfx/layers/apz/util/APZEventState.cpp b/gfx/layers/apz/util/APZEventState.cpp index a2c00ce3c589..b9b82562608d 100644 --- a/gfx/layers/apz/util/APZEventState.cpp +++ b/gfx/layers/apz/util/APZEventState.cpp @@ -339,8 +339,7 @@ APZEventState::ProcessWheelEvent(const WidgetWheelEvent& aEvent, { // If this event starts a swipe, indicate that it shouldn't result in a // scroll by setting defaultPrevented to true. - bool defaultPrevented = - aEvent.mFlags.mDefaultPrevented || aEvent.TriggersSwipe(); + bool defaultPrevented = aEvent.DefaultPrevented() || aEvent.TriggersSwipe(); mContentReceivedInputBlockCallback(aGuid, aInputBlockId, defaultPrevented); } diff --git a/layout/base/nsDocumentViewer.cpp b/layout/base/nsDocumentViewer.cpp index ba90c83c8100..746a4a4a6742 100644 --- a/layout/base/nsDocumentViewer.cpp +++ b/layout/base/nsDocumentViewer.cpp @@ -1143,8 +1143,7 @@ nsDocumentViewer::PermitUnloadInternal(bool *aShouldPrompt, // the event being dispatched. if (!sIsBeforeUnloadDisabled && *aShouldPrompt && dialogsAreEnabled && mDocument && (!sBeforeUnloadRequiresInteraction || mDocument->UserHasInteracted()) && - (event->WidgetEventPtr()->mFlags.mDefaultPrevented || - !text.IsEmpty())) { + (event->WidgetEventPtr()->DefaultPrevented() || !text.IsEmpty())) { // Ask the user if it's ok to unload the current page nsCOMPtr prompt = do_GetInterface(docShell); diff --git a/layout/base/nsPresShell.cpp b/layout/base/nsPresShell.cpp index 91f4ac39b966..4b499f4de105 100644 --- a/layout/base/nsPresShell.cpp +++ b/layout/base/nsPresShell.cpp @@ -6971,7 +6971,7 @@ PresShell::DispatchBeforeKeyboardEventInternal(const nsTArray beforeEvent.AssignBeforeAfterKeyEventData(aEvent, false); EventDispatcher::Dispatch(eventTarget, mPresContext, &beforeEvent); - if (beforeEvent.mFlags.mDefaultPrevented) { + if (beforeEvent.DefaultPrevented()) { aDefaultPrevented = true; return; } @@ -7005,7 +7005,7 @@ PresShell::DispatchAfterKeyboardEventInternal(const nsTArray > afterEvent.AssignBeforeAfterKeyEventData(aEvent, false); afterEvent.mEmbeddedCancelled.SetValue(embeddedCancelled); EventDispatcher::Dispatch(eventTarget, mPresContext, &afterEvent); - embeddedCancelled = afterEvent.mFlags.mDefaultPrevented; + embeddedCancelled = afterEvent.DefaultPrevented(); } } @@ -7090,7 +7090,7 @@ PresShell::HandleKeyboardEvent(nsINode* aTarget, EventDispatcher::Dispatch(aTarget, mPresContext, &aEvent, nullptr, aStatus, aEventCB); - if (aEvent.mFlags.mDefaultPrevented) { + if (aEvent.DefaultPrevented()) { // When embedder prevents the default action of actual key event, attribute // 'embeddedCancelled' of after event is false, i.e. |!targetIsIframe|. // On the contrary, if the defult action is prevented by embedded iframe, @@ -7105,8 +7105,7 @@ PresShell::HandleKeyboardEvent(nsINode* aTarget, } // Dispatch after events to all items in the chain. - DispatchAfterKeyboardEventInternal(chain, aEvent, - aEvent.mFlags.mDefaultPrevented); + DispatchAfterKeyboardEventInternal(chain, aEvent, aEvent.DefaultPrevented()); } nsresult diff --git a/layout/forms/nsListControlFrame.cpp b/layout/forms/nsListControlFrame.cpp index c595ce462387..7422b7e0fd0e 100644 --- a/layout/forms/nsListControlFrame.cpp +++ b/layout/forms/nsListControlFrame.cpp @@ -2251,7 +2251,7 @@ nsListControlFrame::KeyPress(nsIDOMEvent* aKeyEvent) // XXX Not I18N compliant // Don't do incremental search if the key event has already consumed. - if (keyEvent->mFlags.mDefaultPrevented) { + if (keyEvent->DefaultPrevented()) { return NS_OK; } diff --git a/layout/generic/nsPluginFrame.cpp b/layout/generic/nsPluginFrame.cpp index 8ed1ab65dbb1..2bec37400f92 100644 --- a/layout/generic/nsPluginFrame.cpp +++ b/layout/generic/nsPluginFrame.cpp @@ -1712,7 +1712,7 @@ void nsPluginFrame::HandleWheelEventAsDefaultAction(WidgetWheelEvent* aWheelEvent) { MOZ_ASSERT(WantsToHandleWheelEventAsDefaultAction()); - MOZ_ASSERT(!aWheelEvent->mFlags.mDefaultPrevented); + MOZ_ASSERT(!aWheelEvent->DefaultPrevented()); if (NS_WARN_IF(!mInstanceOwner) || NS_WARN_IF(aWheelEvent->mMessage != eWheel)) { diff --git a/widget/BasicEvents.h b/widget/BasicEvents.h index 984d593e56df..88acf707fd55 100644 --- a/widget/BasicEvents.h +++ b/widget/BasicEvents.h @@ -164,6 +164,15 @@ public: { mDefaultPrevented = true; } + inline bool DefaultPrevented() const + { + return mDefaultPrevented; + } + inline bool DefaultPreventedByContent() const + { + MOZ_ASSERT(!mDefaultPreventedByContent || DefaultPrevented()); + return mDefaultPreventedByContent; + } inline void Clear() { @@ -354,6 +363,11 @@ public: mFlags.PreventDefault(aCalledByDefaultHandler); } void PreventDefaultBeforeDispatch() { mFlags.PreventDefaultBeforeDispatch(); } + bool DefaultPrevented() const { return mFlags.DefaultPrevented(); } + bool DefaultPreventedByContent() const + { + return mFlags.DefaultPreventedByContent(); + } /** * Utils for checking event types diff --git a/widget/windows/KeyboardLayout.cpp b/widget/windows/KeyboardLayout.cpp index 81645579f824..95b93efba72a 100644 --- a/widget/windows/KeyboardLayout.cpp +++ b/widget/windows/KeyboardLayout.cpp @@ -1207,8 +1207,8 @@ NativeKey::InitKeyEvent(WidgetKeyboardEvent& aKeyEvent, KeyboardLayout::NotifyIdleServiceOfUserActivity(); - return aKeyEvent.mFlags.mDefaultPrevented ? nsEventStatus_eConsumeNoDefault : - nsEventStatus_eIgnore; + return aKeyEvent.DefaultPrevented() ? nsEventStatus_eConsumeNoDefault : + nsEventStatus_eIgnore; } bool