Bug 1449631 part 8. Remove nsIDOMEventTarget::GetEventTargetParent. r=smaug

MozReview-Commit-ID: 5wQ2LYrjUxf
This commit is contained in:
Boris Zbarsky 2018-04-05 13:42:41 -04:00
parent adbcff27c1
commit 14f26fccf6
74 changed files with 169 additions and 217 deletions

View File

@ -307,11 +307,10 @@ Attr::RemoveChildNode(nsIContent* aKid, bool aNotify)
{
}
nsresult
void
Attr::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
aVisitor.mCanHandle = true;
return NS_OK;
}
void

View File

@ -50,7 +50,7 @@ public:
virtual void SetNodeValueInternal(const nsAString& aNodeValue,
ErrorResult& aError) override;
virtual nsresult GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
void GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
// nsIAttribute interface
void SetMap(nsDOMAttributeMap *aMap) override;

View File

@ -3229,7 +3229,7 @@ Element::CheckHandleEventForLinksPrecondition(EventChainVisitor& aVisitor,
return IsLink(aURI);
}
nsresult
void
Element::GetEventTargetParentForLinks(EventChainPreVisitor& aVisitor)
{
// Optimisation: return early if this event doesn't interest us.
@ -3241,17 +3241,15 @@ Element::GetEventTargetParentForLinks(EventChainPreVisitor& aVisitor)
case eBlur:
break;
default:
return NS_OK;
return;
}
// Make sure we meet the preconditions before continuing
nsCOMPtr<nsIURI> absURI;
if (!CheckHandleEventForLinksPrecondition(aVisitor, getter_AddRefs(absURI))) {
return NS_OK;
return;
}
nsresult rv = NS_OK;
// We do the status bar updates in GetEventTargetParent so that the status bar
// gets updated even if the event is consumed before we have a chance to set
// it.
@ -3276,19 +3274,18 @@ Element::GetEventTargetParentForLinks(EventChainPreVisitor& aVisitor)
aVisitor.mEventStatus = nsEventStatus_eConsumeNoDefault;
MOZ_FALLTHROUGH;
case eBlur:
rv = LeaveLink(aVisitor.mPresContext);
if (NS_SUCCEEDED(rv)) {
aVisitor.mEvent->mFlags.mMultipleActionsPrevented = true;
{
nsresult rv = LeaveLink(aVisitor.mPresContext);
if (NS_SUCCEEDED(rv)) {
aVisitor.mEvent->mFlags.mMultipleActionsPrevented = true;
}
break;
}
break;
default:
// switch not in sync with the optimization switch earlier in this function
NS_NOTREACHED("switch statements not in sync");
return NS_ERROR_UNEXPECTED;
}
return rv;
}
nsresult

View File

@ -1919,7 +1919,7 @@ protected:
/**
* Handle status bar updates before they can be cancelled.
*/
nsresult GetEventTargetParentForLinks(EventChainPreVisitor& aVisitor);
void GetEventTargetParentForLinks(EventChainPreVisitor& aVisitor);
/**
* Handle default actions for link event if the event isn't consumed yet.

View File

@ -895,7 +895,7 @@ FindChromeAccessOnlySubtreeOwner(EventTarget* aTarget)
return node.forget();
}
nsresult
void
nsIContent::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
//FIXME! Document how this event retargeting works, Bug 329124.
@ -975,7 +975,7 @@ nsIContent::GetEventTargetParent(EventChainPreVisitor& aVisitor)
aVisitor.SetParentTarget(nullptr, false);
// Event should not propagate to non-anon content.
aVisitor.mCanHandle = isAnonForEvents;
return NS_OK;
return;
}
}
}
@ -1079,7 +1079,7 @@ nsIContent::GetEventTargetParent(EventChainPreVisitor& aVisitor)
// being false, but in Shadow DOM case mTarget really should
// point to a node in Shadow DOM.
aVisitor.mEvent->mTarget = aVisitor.mTargetInKnownToBeHandledScope;
return NS_OK;
return;
}
// Part of step 5. Retargeting target has happened already higher
@ -1123,7 +1123,7 @@ nsIContent::GetEventTargetParent(EventChainPreVisitor& aVisitor)
// being false, but in Shadow DOM case mTarget really should
// point to a node in Shadow DOM.
aVisitor.mEvent->mTarget = aVisitor.mTargetInKnownToBeHandledScope;
return NS_OK;
return;
} else {
// Step 11.6
aVisitor.mRetargetedRelatedTarget = retargetedRelatedTarget;
@ -1137,8 +1137,6 @@ nsIContent::GetEventTargetParent(EventChainPreVisitor& aVisitor)
// Inform that we're about to exit the current scope.
aVisitor.mRelatedTargetRetargetedInCurrentScope = false;
}
return NS_OK;
}
bool

View File

@ -434,7 +434,7 @@ ShadowRoot::RemoveFromIdTable(Element* aElement, nsAtom* aId)
}
}
nsresult
void
ShadowRoot::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
aVisitor.mCanHandle = true;
@ -456,7 +456,7 @@ ShadowRoot::GetEventTargetParent(EventChainPreVisitor& aVisitor)
? win->GetParentTarget() : nullptr;
aVisitor.SetParentTarget(parentTarget, true);
return NS_OK;
return;
}
}
@ -467,8 +467,6 @@ ShadowRoot::GetEventTargetParent(EventChainPreVisitor& aVisitor)
if (content && content->GetBindingParent() == shadowHost) {
aVisitor.mEventTargetAtParent = shadowHost;
}
return NS_OK;
}
ShadowRoot::SlotAssignment

View File

@ -188,7 +188,7 @@ public:
void SetIsComposedDocParticipant(bool aIsComposedDocParticipant);
nsresult GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
void GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
protected:
// FIXME(emilio): This will need to become more fine-grained.

View File

@ -7465,7 +7465,7 @@ nsDocument::GetExistingListenerManager() const
return mListenerManager;
}
nsresult
void
nsDocument::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
if (mDocGroup && aVisitor.mEvent->mMessage != eVoidEvent &&
@ -7484,7 +7484,6 @@ nsDocument::GetEventTargetParent(EventChainPreVisitor& aVisitor)
aVisitor.SetParentTarget(
window ? window->GetTargetForEventTargetChain() : nullptr, false);
}
return NS_OK;
}
already_AddRefed<Event>

View File

@ -211,9 +211,8 @@ public:
using mozilla::dom::DocumentOrShadowRoot::GetElementsByTagNameNS;
using mozilla::dom::DocumentOrShadowRoot::GetElementsByClassName;
// nsIDOMEventTarget
virtual nsresult GetEventTargetParent(
mozilla::EventChainPreVisitor& aVisitor) override;
// EventTarget
void GetEventTargetParent(mozilla::EventChainPreVisitor& aVisitor) override;
virtual mozilla::EventListenerManager*
GetOrCreateListenerManager() override;
virtual mozilla::EventListenerManager*

View File

@ -52,15 +52,15 @@ public:
virtual void UnbindFromTree(bool aDeep, bool aNullParent) override;
virtual EventStates IntrinsicState() const override;
virtual nsresult GetEventTargetParent(EventChainPreVisitor& aVisitor) override
void GetEventTargetParent(EventChainPreVisitor& aVisitor) override
{
MOZ_ASSERT(IsInNativeAnonymousSubtree());
if (aVisitor.mEvent->mMessage == eLoad ||
aVisitor.mEvent->mMessage == eLoadError) {
// Don't propagate the events to the parent.
return NS_OK;
return;
}
return nsGenericHTMLElement::GetEventTargetParent(aVisitor);
nsGenericHTMLElement::GetEventTargetParent(aVisitor);
}
protected:

View File

@ -1947,7 +1947,7 @@ nsGlobalWindowInner::GetTargetForDOMEvent()
return GetOuterWindowInternal();
}
nsresult
void
nsGlobalWindowInner::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
EventMessage msg = aVisitor.mEvent->mMessage;
@ -1986,8 +1986,6 @@ nsGlobalWindowInner::GetEventTargetParent(EventChainPreVisitor& aVisitor)
aVisitor.mEvent->HasDragEventMessage())) {
mAddActiveEventFuzzTime = false;
}
return NS_OK;
}
bool

View File

@ -340,6 +340,8 @@ public:
mozilla::dom::CallerType aCallerType,
mozilla::ErrorResult& aRv) override;
void GetEventTargetParent(mozilla::EventChainPreVisitor& aVisitor) override;
nsresult PostHandleEvent(mozilla::EventChainPostVisitor& aVisitor) override;
// nsPIDOMWindow

View File

@ -2337,7 +2337,7 @@ nsGlobalWindowOuter::GetTargetForEventTargetChain()
return GetCurrentInnerWindowInternal();
}
nsresult
void
nsGlobalWindowOuter::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
MOZ_CRASH("The outer window should not be part of an event path");

View File

@ -297,6 +297,8 @@ public:
mozilla::dom::CallerType aCallerType,
mozilla::ErrorResult& aRv) override;
void GetEventTargetParent(mozilla::EventChainPreVisitor& aVisitor) override;
nsresult PostHandleEvent(mozilla::EventChainPostVisitor& aVisitor) override;
// nsPIDOMWindow

View File

@ -771,8 +771,7 @@ public:
already_AddRefed<mozilla::URLExtraData>
GetURLDataForStyleAttr(nsIPrincipal* aSubjectPrincipal = nullptr) const;
virtual nsresult GetEventTargetParent(
mozilla::EventChainPreVisitor& aVisitor) override;
void GetEventTargetParent(mozilla::EventChainPreVisitor& aVisitor) override;
bool IsPurple() const
{

View File

@ -1087,14 +1087,6 @@ nsINode::AddSystemEventListener(const nsAString& aType,
aWantsUntrusted);
}
nsresult
nsINode::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
MOZ_ASSERT_UNREACHABLE("GetEventTargetParent is only here so that we can "
"use the NS_DECL_NSIDOMTARGET macro");
return NS_ERROR_NOT_IMPLEMENTED;
}
void
nsINode::GetBoxQuads(const BoxQuadOptions& aOptions,
nsTArray<RefPtr<DOMQuad> >& aResult,

View File

@ -257,7 +257,7 @@ nsInProcessTabChildGlobal::GetOwnerContent()
return mOwner;
}
nsresult
void
nsInProcessTabChildGlobal::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
aVisitor.mForceContentDispatch = true;
@ -278,7 +278,7 @@ nsInProcessTabChildGlobal::GetEventTargetParent(EventChainPreVisitor& aVisitor)
if (mPreventEventsEscaping) {
aVisitor.SetParentTarget(nullptr, false);
return NS_OK;
return;
}
if (mIsBrowserFrame &&
@ -293,8 +293,6 @@ nsInProcessTabChildGlobal::GetEventTargetParent(EventChainPreVisitor& aVisitor)
} else {
aVisitor.SetParentTarget(mOwner, false);
}
return NS_OK;
}
nsresult

View File

@ -89,8 +89,7 @@ public:
JS::Handle<JSObject *> aCpows,
nsIPrincipal* aPrincipal) override;
virtual nsresult GetEventTargetParent(
mozilla::EventChainPreVisitor& aVisitor) override;
void GetEventTargetParent(mozilla::EventChainPreVisitor& aVisitor) override;
virtual nsIPrincipal* GetPrincipal() override { return mPrincipal; }
void LoadFrameScript(const nsAString& aURL, bool aRunInGlobalScope);

View File

@ -151,7 +151,7 @@ nsWindowRoot::GetExistingListenerManager() const
return mListenerManager;
}
nsresult
void
nsWindowRoot::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
aVisitor.mCanHandle = true;
@ -159,7 +159,6 @@ nsWindowRoot::GetEventTargetParent(EventChainPreVisitor& aVisitor)
// To keep mWindow alive
aVisitor.mItemData = static_cast<nsISupports *>(mWindow);
aVisitor.SetParentTarget(mParent, false);
return NS_OK;
}
nsresult

View File

@ -42,6 +42,8 @@ public:
mozilla::dom::CallerType aCallerType,
mozilla::ErrorResult& aRv) override;
void GetEventTargetParent(mozilla::EventChainPreVisitor& aVisitor) override;
nsresult PostHandleEvent(mozilla::EventChainPostVisitor& aVisitor) override;
// nsPIWindowRoot

View File

@ -277,12 +277,11 @@ DOMEventTargetHelper::DispatchTrustedEvent(nsIDOMEvent* event)
return rv.StealNSResult();
}
nsresult
void
DOMEventTargetHelper::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
aVisitor.mCanHandle = true;
aVisitor.SetParentTarget(nullptr, false);
return NS_OK;
}
nsresult

View File

@ -84,6 +84,8 @@ public:
bool DispatchEvent(dom::Event& aEvent, dom::CallerType aCallerType,
ErrorResult& aRv) override;
void GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
nsresult PostHandleEvent(EventChainPostVisitor& aVisitor) override;
NS_DECLARE_STATIC_IID_ACCESSOR(NS_DOMEVENTTARGETHELPER_IID)

View File

@ -422,7 +422,7 @@ void
EventTargetChainItem::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
aVisitor.Reset();
Unused << mTarget->GetEventTargetParent(aVisitor);
mTarget->GetEventTargetParent(aVisitor);
SetForceContentDispatch(aVisitor.mForceContentDispatch);
SetWantsWillHandleEvent(aVisitor.mWantsWillHandleEvent);
SetMayHaveListenerManager(aVisitor.mMayHaveListenerManager);

View File

@ -20,6 +20,7 @@ namespace mozilla {
class AsyncEventDispatcher;
class ErrorResult;
class EventChainPostVisitor;
class EventChainPreVisitor;
class EventChainVisitor;
class EventListenerManager;
@ -185,6 +186,23 @@ public:
virtual bool IsApzAware() const;
/**
* Called before the capture phase of the event flow.
* This is used to create the event target chain and implementations
* should set the necessary members of EventChainPreVisitor.
* At least aVisitor.mCanHandle must be set,
* usually also aVisitor.mParentTarget if mCanHandle is true.
* mCanHandle says that this object can handle the aVisitor.mEvent event and
* the mParentTarget is the possible parent object for the event target chain.
* @see EventDispatcher.h for more documentation about aVisitor.
*
* @param aVisitor the visitor object which is used to create the
* event target chain for event dispatching.
*
* @note Only EventDispatcher should call this method.
*/
virtual void GetEventTargetParent(EventChainPreVisitor& aVisitor) = 0;
/**
* Called before the capture phase of the event flow and after event target
* chain creation. This is used to handle things that must be executed before

View File

@ -219,10 +219,10 @@ HTMLAnchorElement::IsHTMLFocusable(bool aWithMouse,
return false;
}
nsresult
void
HTMLAnchorElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
return GetEventTargetParentForAnchors(aVisitor);
GetEventTargetParentForAnchors(aVisitor);
}
nsresult

View File

@ -54,8 +54,7 @@ public:
bool aNullParent = true) override;
virtual bool IsHTMLFocusable(bool aWithMouse, bool *aIsFocusable, int32_t *aTabIndex) override;
virtual nsresult GetEventTargetParent(
EventChainPreVisitor& aVisitor) override;
void GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
virtual nsresult PostHandleEvent(
EventChainPostVisitor& aVisitor) override;
virtual bool IsLink(nsIURI** aURI) const override;

View File

@ -53,10 +53,10 @@ HTMLAreaElement::GetTarget(DOMString& aValue)
}
}
nsresult
void
HTMLAreaElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
return GetEventTargetParentForAnchors(aVisitor);
GetEventTargetParentForAnchors(aVisitor);
}
nsresult

View File

@ -39,8 +39,7 @@ public:
virtual int32_t TabIndexDefault() override;
virtual nsresult GetEventTargetParent(
EventChainPreVisitor& aVisitor) override;
void GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
virtual nsresult PostHandleEvent(EventChainPostVisitor& aVisitor) override;
virtual bool IsLink(nsIURI** aURI) const override;
virtual void GetLinkTarget(nsAString& aTarget) override;

View File

@ -183,12 +183,12 @@ HTMLButtonElement::IsDisabledForEvents(EventMessage aMessage)
return IsElementDisabledForEvents(aMessage, formFrame);
}
nsresult
void
HTMLButtonElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
aVisitor.mCanHandle = false;
if (IsDisabledForEvents(aVisitor.mEvent->mMessage)) {
return NS_OK;
return;
}
// Track whether we're in the outermost Dispatch invocation that will
@ -212,7 +212,7 @@ HTMLButtonElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
}
}
return nsGenericHTMLElement::GetEventTargetParent(aVisitor);
nsGenericHTMLElement::GetEventTargetParent(aVisitor);
}
nsresult

View File

@ -50,9 +50,8 @@ public:
virtual void FieldSetDisabledChanged(bool aNotify) override;
// nsIDOMEventTarget
virtual nsresult GetEventTargetParent(
EventChainPreVisitor& aVisitor) override;
// EventTarget
void GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
virtual nsresult PostHandleEvent(
EventChainPostVisitor& aVisitor) override;

View File

@ -607,14 +607,16 @@ HTMLCanvasElement::CopyInnerTo(Element* aDest,
return rv;
}
nsresult HTMLCanvasElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
void
HTMLCanvasElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
if (aVisitor.mEvent->mClass == eMouseEventClass) {
WidgetMouseEventBase* evt = (WidgetMouseEventBase*)aVisitor.mEvent;
if (mCurrentContext) {
nsIFrame *frame = GetPrimaryFrame();
if (!frame)
return NS_OK;
if (!frame) {
return;
}
nsPoint ptInRoot = nsLayoutUtils::GetEventCoordinatesRelativeTo(evt, frame);
nsRect paddingRect = frame->GetContentRectRelativeToSelf();
Point hitpoint;
@ -625,7 +627,7 @@ nsresult HTMLCanvasElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
aVisitor.mCanHandle = true;
}
}
return nsGenericHTMLElement::GetEventTargetParent(aVisitor);
nsGenericHTMLElement::GetEventTargetParent(aVisitor);
}
nsChangeHint

View File

@ -299,8 +299,7 @@ public:
nsresult CopyInnerTo(mozilla::dom::Element* aDest,
bool aPreallocateChildren);
virtual nsresult GetEventTargetParent(
mozilla::EventChainPreVisitor& aVisitor) override;
void GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
/*
* Helpers called by various users of Canvas

View File

@ -55,16 +55,16 @@ HTMLFieldSetElement::IsDisabledForEvents(EventMessage aMessage)
}
// nsIContent
nsresult
void
HTMLFieldSetElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
// Do not process any DOM events if the element is disabled.
aVisitor.mCanHandle = false;
if (IsDisabledForEvents(aVisitor.mEvent->mMessage)) {
return NS_OK;
return;
}
return nsGenericHTMLFormElement::GetEventTargetParent(aVisitor);
nsGenericHTMLFormElement::GetEventTargetParent(aVisitor);
}
nsresult

View File

@ -33,8 +33,7 @@ public:
NS_DECL_ISUPPORTS_INHERITED
// nsIContent
virtual nsresult GetEventTargetParent(
EventChainPreVisitor& aVisitor) override;
void GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
const nsAttrValue* aValue,
const nsAttrValue* aOldValue,

View File

@ -439,7 +439,7 @@ HTMLFormElement::UnbindFromTree(bool aDeep, bool aNullParent)
ForgetCurrentSubmission();
}
nsresult
void
HTMLFormElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
aVisitor.mWantsWillHandleEvent = true;
@ -448,7 +448,7 @@ HTMLFormElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
if (msg == eFormSubmit) {
if (mGeneratingSubmit) {
aVisitor.mCanHandle = false;
return NS_OK;
return;
}
mGeneratingSubmit = true;
@ -459,12 +459,12 @@ HTMLFormElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
} else if (msg == eFormReset) {
if (mGeneratingReset) {
aVisitor.mCanHandle = false;
return NS_OK;
return;
}
mGeneratingReset = true;
}
}
return nsGenericHTMLElement::GetEventTargetParent(aVisitor);
nsGenericHTMLElement::GetEventTargetParent(aVisitor);
}
void

View File

@ -93,8 +93,7 @@ public:
const nsAString& aValue,
nsIPrincipal* aMaybeScriptedPrincipal,
nsAttrValue& aResult) override;
virtual nsresult GetEventTargetParent(
EventChainPreVisitor& aVisitor) override;
void GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
void WillHandleEvent(EventChainPostVisitor& aVisitor) override;
virtual nsresult PostHandleEvent(
EventChainPostVisitor& aVisitor) override;

View File

@ -500,7 +500,7 @@ HTMLImageElement::AfterMaybeChangeAttr(int32_t aNamespaceID, nsAtom* aName,
}
}
nsresult
void
HTMLImageElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
// We handle image element with attribute ismap in its corresponding frame
@ -510,7 +510,7 @@ HTMLImageElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
if (mouseEvent && mouseEvent->IsLeftClickEvent() && IsMap()) {
mouseEvent->mFlags.mMultipleActionsPrevented = true;
}
return nsGenericHTMLElement::GetEventTargetParent(aVisitor);
nsGenericHTMLElement::GetEventTargetParent(aVisitor);
}
bool

View File

@ -65,8 +65,7 @@ public:
NS_IMETHOD_(bool) IsAttributeMapped(const nsAtom* aAttribute) const override;
virtual nsMapRuleToAttributesFunc GetAttributeMappingFunction() const override;
virtual nsresult GetEventTargetParent(
EventChainPreVisitor& aVisitor) override;
void GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
bool IsHTMLFocusable(bool aWithMouse, bool *aIsFocusable, int32_t *aTabIndex) override;

View File

@ -3536,13 +3536,13 @@ HTMLInputElement::IsDisabledForEvents(EventMessage aMessage)
return IsElementDisabledForEvents(aMessage, GetPrimaryFrame());
}
nsresult
void
HTMLInputElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
// Do not process any DOM events if the element is disabled
aVisitor.mCanHandle = false;
if (IsDisabledForEvents(aVisitor.mEvent->mMessage)) {
return NS_OK;
return;
}
// Initialize the editor if needed.
@ -3554,7 +3554,8 @@ HTMLInputElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
//FIXME Allow submission etc. also when there is no prescontext, Bug 329509.
if (!aVisitor.mPresContext) {
return nsGenericHTMLFormElementWithState::GetEventTargetParent(aVisitor);
nsGenericHTMLFormElementWithState::GetEventTargetParent(aVisitor);
return;
}
//
// Web pages expect the value of a radio button or checkbox to be set
@ -3761,7 +3762,7 @@ HTMLInputElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
}
}
nsresult rv = nsGenericHTMLFormElementWithState::GetEventTargetParent(aVisitor);
nsGenericHTMLFormElementWithState::GetEventTargetParent(aVisitor);
// We do this after calling the base class' GetEventTargetParent so that
// nsIContent::GetEventTargetParent doesn't reset any change we make to
@ -3819,8 +3820,6 @@ HTMLInputElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
aVisitor.mCanHandle = false;
}
}
return rv;
}
nsresult

View File

@ -202,8 +202,7 @@ public:
NS_IMETHOD_(bool) IsAttributeMapped(const nsAtom* aAttribute) const override;
virtual nsMapRuleToAttributesFunc GetAttributeMappingFunction() const override;
virtual nsresult GetEventTargetParent(
EventChainPreVisitor& aVisitor) override;
void GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
virtual nsresult PreHandleEvent(EventChainVisitor& aVisitor) override;
virtual nsresult PostHandleEvent(
EventChainPostVisitor& aVisitor) override;

View File

@ -350,10 +350,10 @@ HTMLLinkElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
aOldValue, aSubjectPrincipal, aNotify);
}
nsresult
void
HTMLLinkElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
return GetEventTargetParentForAnchors(aVisitor);
GetEventTargetParentForAnchors(aVisitor);
}
nsresult

View File

@ -37,9 +37,8 @@ public:
void LinkAdded();
void LinkRemoved();
// nsIDOMEventTarget
virtual nsresult GetEventTargetParent(
EventChainPreVisitor& aVisitor) override;
// EventTarget
void GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
virtual nsresult PostHandleEvent(
EventChainPostVisitor& aVisitor) override;

View File

@ -4213,11 +4213,12 @@ HTMLMediaElement::OutputMediaStream::~OutputMediaStream()
}
}
nsresult
void
HTMLMediaElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
if (!this->Controls() || !aVisitor.mEvent->mFlags.mIsTrusted) {
return nsGenericHTMLElement::GetEventTargetParent(aVisitor);
nsGenericHTMLElement::GetEventTargetParent(aVisitor);
return;
}
HTMLInputElement* el = nullptr;
@ -4239,7 +4240,7 @@ HTMLMediaElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
case eMouseDown:
case eMouseUp:
aVisitor.mCanHandle = false;
return NS_OK;
return;
// The *move events however are only comsumed when the range input is being
// dragged.
@ -4258,12 +4259,14 @@ HTMLMediaElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
}
if (el && el->IsDraggingRange()) {
aVisitor.mCanHandle = false;
return NS_OK;
return;
}
return nsGenericHTMLElement::GetEventTargetParent(aVisitor);
nsGenericHTMLElement::GetEventTargetParent(aVisitor);
return;
default:
return nsGenericHTMLElement::GetEventTargetParent(aVisitor);
nsGenericHTMLElement::GetEventTargetParent(aVisitor);
return;
}
}

View File

@ -143,9 +143,8 @@ public:
IsAnyOfHTMLElements(nsGkAtoms::video,
nsGkAtoms::audio))
// nsIDOMEventTarget
virtual nsresult
GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
// EventTarget
void GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
virtual bool ParseAttribute(int32_t aNamespaceID,
nsAtom* aAttribute,

View File

@ -236,7 +236,7 @@ HTMLMenuItemElement::SetChecked(bool aChecked)
}
}
nsresult
void
HTMLMenuItemElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
if (aVisitor.mEvent->mMessage == eMouseClick) {
@ -269,7 +269,7 @@ HTMLMenuItemElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
aVisitor.mItemFlags |= mType;
}
return nsGenericHTMLElement::GetEventTargetParent(aVisitor);
nsGenericHTMLElement::GetEventTargetParent(aVisitor);
}
nsresult

View File

@ -32,8 +32,7 @@ public:
NS_INLINE_DECL_REFCOUNTING_INHERITED(HTMLMenuItemElement,
nsGenericHTMLElement)
virtual nsresult GetEventTargetParent(
EventChainPreVisitor& aVisitor) override;
void GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
virtual nsresult PostHandleEvent(
EventChainPostVisitor& aVisitor) override;

View File

@ -40,25 +40,25 @@ HTMLOptGroupElement::~HTMLOptGroupElement()
NS_IMPL_ELEMENT_CLONE(HTMLOptGroupElement)
nsresult
void
HTMLOptGroupElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
aVisitor.mCanHandle = false;
// Do not process any DOM events if the element is disabled
// XXXsmaug This is not the right thing to do. But what is?
if (IsDisabled()) {
return NS_OK;
return;
}
if (nsIFrame* frame = GetPrimaryFrame()) {
// FIXME(emilio): This poking at the style of the frame is broken unless we
// flush before every event handling, which we don't really want to.
if (frame->StyleUserInterface()->mUserInput == StyleUserInput::None) {
return NS_OK;
return;
}
}
return nsGenericHTMLElement::GetEventTargetParent(aVisitor);
nsGenericHTMLElement::GetEventTargetParent(aVisitor);
}
Element*

View File

@ -34,8 +34,7 @@ public:
virtual void RemoveChildNode(nsIContent* aKid, bool aNotify) override;
// nsIContent
virtual nsresult GetEventTargetParent(
EventChainPreVisitor& aVisitor) override;
void GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
virtual nsresult Clone(mozilla::dom::NodeInfo* aNodeInfo, nsINode** aResult,
bool aPreallocateChildren) const override;

View File

@ -1344,15 +1344,15 @@ HTMLSelectElement::IsDisabledForEvents(EventMessage aMessage)
return IsElementDisabledForEvents(aMessage, formFrame);
}
nsresult
void
HTMLSelectElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
aVisitor.mCanHandle = false;
if (IsDisabledForEvents(aVisitor.mEvent->mMessage)) {
return NS_OK;
return;
}
return nsGenericHTMLFormElementWithState::GetEventTargetParent(aVisitor);
nsGenericHTMLFormElementWithState::GetEventTargetParent(aVisitor);
}
nsresult

View File

@ -285,8 +285,7 @@ public:
virtual JSObject* WrapNode(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
// nsIContent
virtual nsresult GetEventTargetParent(
EventChainPreVisitor& aVisitor) override;
void GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
virtual nsresult PostHandleEvent(
EventChainPostVisitor& aVisitor) override;

View File

@ -511,19 +511,19 @@ HTMLTextAreaElement::IsDisabledForEvents(EventMessage aMessage)
return IsElementDisabledForEvents(aMessage, formFrame);
}
nsresult
void
HTMLTextAreaElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
aVisitor.mCanHandle = false;
if (IsDisabledForEvents(aVisitor.mEvent->mMessage)) {
return NS_OK;
return;
}
// Don't dispatch a second select event if we are already handling
// one.
if (aVisitor.mEvent->mMessage == eFormSelect) {
if (mHandlingSelect) {
return NS_OK;
return;
}
mHandlingSelect = true;
}
@ -546,7 +546,7 @@ HTMLTextAreaElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
aVisitor.mWantsPreHandleEvent = true;
}
return nsGenericHTMLFormElementWithState::GetEventTargetParent(aVisitor);
nsGenericHTMLFormElementWithState::GetEventTargetParent(aVisitor);
}
nsresult

View File

@ -132,8 +132,7 @@ public:
int32_t aModType) const override;
NS_IMETHOD_(bool) IsAttributeMapped(const nsAtom* aAttribute) const override;
virtual nsresult GetEventTargetParent(
EventChainPreVisitor& aVisitor) override;
void GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
virtual nsresult PreHandleEvent(EventChainVisitor& aVisitor) override;
virtual nsresult PostHandleEvent(
EventChainPostVisitor& aVisitor) override;

View File

@ -546,17 +546,16 @@ nsGenericHTMLElement::CheckHandleEventForAnchorsPreconditions(
IsHTMLElement(nsGkAtoms::area);
}
nsresult
void
nsGenericHTMLElement::GetEventTargetParentForAnchors(EventChainPreVisitor& aVisitor)
{
nsresult rv = nsGenericHTMLElementBase::GetEventTargetParent(aVisitor);
NS_ENSURE_SUCCESS(rv, rv);
nsGenericHTMLElementBase::GetEventTargetParent(aVisitor);
if (!CheckHandleEventForAnchorsPreconditions(aVisitor)) {
return NS_OK;
return;
}
return GetEventTargetParentForLinks(aVisitor);
GetEventTargetParentForLinks(aVisitor);
}
nsresult
@ -1932,7 +1931,7 @@ nsGenericHTMLFormElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
aNotify);
}
nsresult
void
nsGenericHTMLFormElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
if (aVisitor.mEvent->IsTrusted() && (aVisitor.mEvent->mMessage == eFocus ||
@ -1941,7 +1940,7 @@ nsGenericHTMLFormElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
// PreHandleEvent to prevent it breaks event target chain creation.
aVisitor.mWantsPreHandleEvent = true;
}
return nsGenericHTMLElement::GetEventTargetParent(aVisitor);
nsGenericHTMLElement::GetEventTargetParent(aVisitor);
}
nsresult

View File

@ -301,8 +301,7 @@ public:
*/
bool CheckHandleEventForAnchorsPreconditions(
mozilla::EventChainVisitor& aVisitor);
nsresult GetEventTargetParentForAnchors(
mozilla::EventChainPreVisitor& aVisitor);
void GetEventTargetParentForAnchors(mozilla::EventChainPreVisitor& aVisitor);
nsresult PostHandleEventForAnchors(mozilla::EventChainPostVisitor& aVisitor);
bool IsHTMLLink(nsIURI** aURI) const;
@ -1037,8 +1036,7 @@ public:
virtual IMEState GetDesiredIMEState() override;
virtual mozilla::EventStates IntrinsicState() const override;
virtual nsresult GetEventTargetParent(
mozilla::EventChainPreVisitor& aVisitor) override;
void GetEventTargetParent(mozilla::EventChainPreVisitor& aVisitor) override;
virtual nsresult PreHandleEvent(
mozilla::EventChainVisitor& aVisitor) override;

View File

@ -781,14 +781,13 @@ IDBFileHandle::Run()
return NS_OK;
}
nsresult
void
IDBFileHandle::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
AssertIsOnOwningThread();
aVisitor.mCanHandle = true;
aVisitor.SetParentTarget(mMutableFile, false);
return NS_OK;
}
// virtual

View File

@ -246,9 +246,8 @@ public:
NS_DECL_NSIRUNNABLE
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(IDBFileHandle, DOMEventTargetHelper)
// nsIDOMEventTarget
virtual nsresult
GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
// EventTarget
void GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
// WrapperCache
virtual JSObject*

View File

@ -107,14 +107,13 @@ NS_INTERFACE_MAP_END_INHERITING(DOMRequest)
NS_IMPL_CYCLE_COLLECTION_INHERITED(IDBFileRequest, DOMRequest,
mFileHandle)
nsresult
void
IDBFileRequest::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
AssertIsOnOwningThread();
aVisitor.mCanHandle = true;
aVisitor.SetParentTarget(mFileHandle, false);
return NS_OK;
}
// virtual

View File

@ -91,9 +91,8 @@ public:
NS_DECL_ISUPPORTS_INHERITED
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(IDBFileRequest, DOMRequest)
// nsIDOMEventTarget
virtual nsresult
GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
// EventTarget
void GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
// nsWrapperCache
virtual JSObject*

View File

@ -404,14 +404,13 @@ NS_INTERFACE_MAP_END_INHERITING(IDBWrapperCache)
NS_IMPL_ADDREF_INHERITED(IDBRequest, IDBWrapperCache)
NS_IMPL_RELEASE_INHERITED(IDBRequest, IDBWrapperCache)
nsresult
void
IDBRequest::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
AssertIsOnOwningThread();
aVisitor.mCanHandle = true;
aVisitor.SetParentTarget(mTransaction, false);
return NS_OK;
}
class IDBOpenDBRequest::WorkerHolder final

View File

@ -83,9 +83,8 @@ public:
static uint64_t
NextSerialNumber();
// nsIDOMEventTarget
virtual nsresult
GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
// EventTarget
void GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
void
GetSource(Nullable<OwningIDBObjectStoreOrIDBIndexOrIDBCursor>& aSource) const;

View File

@ -1043,14 +1043,13 @@ IDBTransaction::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
return IDBTransactionBinding::Wrap(aCx, this, aGivenProto);
}
nsresult
void
IDBTransaction::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
AssertIsOnOwningThread();
aVisitor.mCanHandle = true;
aVisitor.SetParentTarget(mDatabase, false);
return NS_OK;
}
NS_IMETHODIMP

View File

@ -317,9 +317,8 @@ public:
virtual JSObject*
WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
// nsIDOMEventTarget
virtual nsresult
GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
// EventTarget
void GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
private:
IDBTransaction(IDBDatabase* aDatabase,

View File

@ -13,7 +13,6 @@
using mozilla::dom::Nullable;
namespace mozilla {
class EventChainPreVisitor;
class EventListenerManager;
namespace dom {
class EventTarget;
@ -36,7 +35,6 @@ class nsPresContext;
[ptr] native nsEventStatusPtr(nsEventStatus);
[ptr] native JSContextPtr(JSContext);
[ref] native EventChainPostVisitorRef(mozilla::EventChainPostVisitor);
[ref] native EventChainPreVisitorRef(mozilla::EventChainPreVisitor);
[ptr] native EventListenerManagerPtr(mozilla::EventListenerManager);
[ptr] native EventTargetPtr(mozilla::dom::EventTarget);
@ -137,21 +135,4 @@ interface nsIDOMEventTarget : nsISupports
}
%}
/**
* Called before the capture phase of the event flow.
* This is used to create the event target chain and implementations
* should set the necessary members of EventChainPreVisitor.
* At least aVisitor.mCanHandle must be set,
* usually also aVisitor.mParentTarget if mCanHandle is PR_TRUE.
* First one tells that this object can handle the aVisitor.mEvent event and
* the latter one is the possible parent object for the event target chain.
* @see EventDispatcher.h for more documentation about aVisitor.
*
* @param aVisitor the visitor object which is used to create the
* event target chain for event dispatching.
*
* @note Only EventDispatcher should call this method.
*/
[noscript, nostdcall]
void GetEventTargetParent(in EventChainPreVisitorRef aVisitor);
};

View File

@ -109,11 +109,10 @@ public:
NS_FORWARD_SAFE_NSIMESSAGESENDER(mMessageManager)
NS_DECL_NSICONTENTFRAMEMESSAGEMANAGER
nsresult
void
GetEventTargetParent(EventChainPreVisitor& aVisitor) override
{
aVisitor.mForceContentDispatch = true;
return NS_OK;
}
virtual nsIPrincipal* GetPrincipal() override;

View File

@ -906,13 +906,12 @@ nsMathMLElement::MapMathMLAttributesInto(const nsMappedAttributes* aAttributes,
}
}
nsresult
void
nsMathMLElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
nsresult rv = Element::GetEventTargetParent(aVisitor);
NS_ENSURE_SUCCESS(rv, rv);
Element::GetEventTargetParent(aVisitor);
return GetEventTargetParentForLinks(aVisitor);
GetEventTargetParentForLinks(aVisitor);
}
nsresult

View File

@ -70,8 +70,7 @@ public:
static void MapMathMLAttributesInto(const nsMappedAttributes* aAttributes,
mozilla::GenericSpecifiedValues* aGenericData);
virtual nsresult GetEventTargetParent(
mozilla::EventChainPreVisitor& aVisitor) override;
void GetEventTargetParent(mozilla::EventChainPreVisitor& aVisitor) override;
virtual nsresult PostHandleEvent(
mozilla::EventChainPostVisitor& aVisitor) override;
nsresult Clone(mozilla::dom::NodeInfo* aNodeInfo, nsINode** aResult,

View File

@ -81,13 +81,12 @@ SVGAElement::ElementHasHref() const
//----------------------------------------------------------------------
// nsINode methods
nsresult
void
SVGAElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
nsresult rv = Element::GetEventTargetParent(aVisitor);
NS_ENSURE_SUCCESS(rv, rv);
Element::GetEventTargetParent(aVisitor);
return GetEventTargetParentForLinks(aVisitor);
GetEventTargetParentForLinks(aVisitor);
}
nsresult

View File

@ -36,8 +36,7 @@ public:
NS_DECL_ISUPPORTS_INHERITED
// nsINode interface methods
virtual nsresult GetEventTargetParent(
EventChainPreVisitor& aVisitor) override;
void GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
virtual nsresult PostHandleEvent(
EventChainPostVisitor& aVisitor) override;
virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult,

View File

@ -558,7 +558,7 @@ SVGSVGElement::GetAnimatedTransformList(uint32_t aFlags)
return SVGGraphicsElement::GetAnimatedTransformList(aFlags);
}
nsresult
void
SVGSVGElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
if (aVisitor.mEvent->mMessage == eSVGLoad) {
@ -570,7 +570,7 @@ SVGSVGElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
AnimationNeedsResample();
}
}
return SVGSVGElementBase::GetEventTargetParent(aVisitor);
SVGSVGElementBase::GetEventTargetParent(aVisitor);
}
bool

View File

@ -103,8 +103,7 @@ public:
void SetCurrentScaleTranslate(float s, float x, float y);
// nsIContent interface
virtual nsresult GetEventTargetParent(
EventChainPreVisitor& aVisitor) override;
void GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
virtual bool IsEventAttributeNameInternal(nsAtom* aName) override;
// nsINode methods:

View File

@ -187,7 +187,7 @@ SharedWorker::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
return SharedWorkerBinding::Wrap(aCx, this, aGivenProto);
}
nsresult
void
SharedWorker::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
AssertIsOnMainThread();
@ -204,8 +204,8 @@ SharedWorker::GetEventTargetParent(EventChainPreVisitor& aVisitor)
aVisitor.mCanHandle = false;
aVisitor.SetParentTarget(nullptr, false);
return NS_OK;
return;
}
return DOMEventTargetHelper::GetEventTargetParent(aVisitor);
DOMEventTargetHelper::GetEventTargetParent(aVisitor);
}

View File

@ -77,8 +77,7 @@ public:
virtual JSObject*
WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
virtual nsresult
GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
void GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
WorkerPrivate*
GetWorkerPrivate() const

View File

@ -1333,7 +1333,7 @@ nsXULElement::DispatchXULCommand(const EventChainVisitor& aVisitor,
return NS_OK;
}
nsresult
void
nsXULElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
aVisitor.mForceContentDispatch = true; //FIXME! Bug 329119
@ -1341,7 +1341,7 @@ nsXULElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
// Don't propagate these events from native anonymous scrollbar.
aVisitor.mCanHandle = true;
aVisitor.SetParentTarget(nullptr, false);
return NS_OK;
return;
}
if (aVisitor.mEvent->mMessage == eXULCommand &&
aVisitor.mEvent->mClass == eInputEventClass &&
@ -1364,11 +1364,11 @@ nsXULElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
// target chain creation
aVisitor.mWantsPreHandleEvent = true;
aVisitor.mItemFlags |= NS_DISPATCH_XUL_COMMAND;
return NS_OK;
return;
}
}
return nsStyledElement::GetEventTargetParent(aVisitor);
nsStyledElement::GetEventTargetParent(aVisitor);
}
nsresult

View File

@ -353,8 +353,7 @@ public:
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(nsXULElement, nsStyledElement)
// nsINode
virtual nsresult GetEventTargetParent(
mozilla::EventChainPreVisitor& aVisitor) override;
void GetEventTargetParent(mozilla::EventChainPreVisitor& aVisitor) override;
virtual nsresult PreHandleEvent(
mozilla::EventChainVisitor& aVisitor) override;
// nsIContent