From 7c94e8697fd661da3d497ba77144c4a5ac3f5abe Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Thu, 5 Apr 2018 13:42:40 -0400 Subject: [PATCH] Bug 1449631 part 3. Remove nsIDOMEventTarget::RemoveSystemEventListener. r=smaug MozReview-Commit-ID: F67Od8surQ8 --- docshell/base/nsDocShellTreeOwner.cpp | 22 ++++++----------- dom/base/ScreenOrientation.cpp | 21 ++++++---------- dom/base/nsGlobalWindowInner.cpp | 2 -- dom/base/nsGlobalWindowOuter.cpp | 2 -- dom/base/nsINode.cpp | 2 -- dom/base/nsWindowRoot.cpp | 2 -- dom/events/DOMEventTargetHelper.cpp | 2 -- dom/events/EventTarget.cpp | 14 +++++++++++ dom/events/EventTarget.h | 8 ++++++ dom/interfaces/events/nsIDOMEventTarget.idl | 27 --------------------- 10 files changed, 37 insertions(+), 65 deletions(-) diff --git a/docshell/base/nsDocShellTreeOwner.cpp b/docshell/base/nsDocShellTreeOwner.cpp index 2889f87d62bf..dc32cfa2c867 100644 --- a/docshell/base/nsDocShellTreeOwner.cpp +++ b/docshell/base/nsDocShellTreeOwner.cpp @@ -1133,22 +1133,16 @@ NS_IMETHODIMP ChromeTooltipListener::RemoveTooltipListener() { if (mEventTarget) { - nsresult rv = NS_OK; #ifndef XP_WIN - rv = mEventTarget->RemoveSystemEventListener(NS_LITERAL_STRING("keydown"), - this, false); - NS_ENSURE_SUCCESS(rv, rv); + mEventTarget->RemoveSystemEventListener(NS_LITERAL_STRING("keydown"), + this, false); #endif - rv = mEventTarget->RemoveSystemEventListener(NS_LITERAL_STRING("mousedown"), - this, false); - NS_ENSURE_SUCCESS(rv, rv); - rv = mEventTarget->RemoveSystemEventListener(NS_LITERAL_STRING("mouseout"), - this, false); - NS_ENSURE_SUCCESS(rv, rv); - rv = mEventTarget->RemoveSystemEventListener(NS_LITERAL_STRING("mousemove"), - this, false); - NS_ENSURE_SUCCESS(rv, rv); - + mEventTarget->RemoveSystemEventListener(NS_LITERAL_STRING("mousedown"), + this, false); + mEventTarget->RemoveSystemEventListener(NS_LITERAL_STRING("mouseout"), + this, false); + mEventTarget->RemoveSystemEventListener(NS_LITERAL_STRING("mousemove"), + this, false); mTooltipListenerInstalled = false; } diff --git a/dom/base/ScreenOrientation.cpp b/dom/base/ScreenOrientation.cpp index fa47bb1c0f87..d43a15666aaa 100644 --- a/dom/base/ScreenOrientation.cpp +++ b/dom/base/ScreenOrientation.cpp @@ -404,11 +404,9 @@ ScreenOrientation::UnlockDeviceOrientation() // Remove event listener in case of fullscreen lock. nsCOMPtr target = do_QueryInterface(GetOwner()->GetDoc()); if (target) { - DebugOnly rv = - target->RemoveSystemEventListener(NS_LITERAL_STRING("fullscreenchange"), - mFullScreenListener, - /* useCapture */ true); - NS_WARNING_ASSERTION(NS_SUCCEEDED(rv), "RemoveSystemEventListener failed"); + target->RemoveSystemEventListener(NS_LITERAL_STRING("fullscreenchange"), + mFullScreenListener, + /* useCapture */ true); } mFullScreenListener = nullptr; @@ -628,11 +626,8 @@ ScreenOrientation::VisibleEventListener::HandleEvent(nsIDOMEvent* aEvent) ScreenOrientation* orientation = screen->Orientation(); MOZ_ASSERT(orientation); - rv = target->RemoveSystemEventListener(NS_LITERAL_STRING("visibilitychange"), - this, true); - if (NS_WARN_IF(rv.Failed())) { - return rv.StealNSResult(); - } + target->RemoveSystemEventListener(NS_LITERAL_STRING("visibilitychange"), + this, true); if (doc->CurrentOrientationType() != orientation->DeviceType(CallerType::System)) { doc->SetCurrentOrientation(orientation->DeviceType(CallerType::System), @@ -684,9 +679,7 @@ ScreenOrientation::FullScreenEventListener::HandleEvent(nsIDOMEvent* aEvent) hal::UnlockScreenOrientation(); - nsresult rv = target->RemoveSystemEventListener(NS_LITERAL_STRING("fullscreenchange"), - this, true); - NS_ENSURE_SUCCESS(rv, rv); - + target->RemoveSystemEventListener(NS_LITERAL_STRING("fullscreenchange"), + this, true); return NS_OK; } diff --git a/dom/base/nsGlobalWindowInner.cpp b/dom/base/nsGlobalWindowInner.cpp index 5d24b5c6ce6f..9bf3a8a61198 100644 --- a/dom/base/nsGlobalWindowInner.cpp +++ b/dom/base/nsGlobalWindowInner.cpp @@ -4481,8 +4481,6 @@ nsGlobalWindowInner::GetOwnerGlobalForBindings() return nsPIDOMWindowOuter::GetFromCurrentInner(this); } -NS_IMPL_REMOVE_SYSTEM_EVENT_LISTENER(nsGlobalWindowInner) - NS_IMETHODIMP nsGlobalWindowInner::DispatchEvent(nsIDOMEvent* aEvent, bool* aRetVal) { diff --git a/dom/base/nsGlobalWindowOuter.cpp b/dom/base/nsGlobalWindowOuter.cpp index 68f98ca96f0c..e4ccd5225f2a 100644 --- a/dom/base/nsGlobalWindowOuter.cpp +++ b/dom/base/nsGlobalWindowOuter.cpp @@ -6475,8 +6475,6 @@ nsGlobalWindowOuter::GetOwnerGlobalForBindings() return this; } -NS_IMPL_REMOVE_SYSTEM_EVENT_LISTENER(nsGlobalWindowOuter) - NS_IMETHODIMP nsGlobalWindowOuter::DispatchEvent(nsIDOMEvent* aEvent, bool* aRetVal) { diff --git a/dom/base/nsINode.cpp b/dom/base/nsINode.cpp index 4042f49e94f8..0b4598a6c436 100644 --- a/dom/base/nsINode.cpp +++ b/dom/base/nsINode.cpp @@ -1089,8 +1089,6 @@ nsINode::AddSystemEventListener(const nsAString& aType, aWantsUntrusted); } -NS_IMPL_REMOVE_SYSTEM_EVENT_LISTENER(nsINode) - nsresult nsINode::GetEventTargetParent(EventChainPreVisitor& aVisitor) { diff --git a/dom/base/nsWindowRoot.cpp b/dom/base/nsWindowRoot.cpp index 555d9b24735e..f18224626dae 100644 --- a/dom/base/nsWindowRoot.cpp +++ b/dom/base/nsWindowRoot.cpp @@ -72,8 +72,6 @@ NS_IMPL_CYCLE_COLLECTING_RELEASE(nsWindowRoot) NS_IMPL_DOMTARGET_DEFAULTS(nsWindowRoot) -NS_IMPL_REMOVE_SYSTEM_EVENT_LISTENER(nsWindowRoot) - NS_IMETHODIMP nsWindowRoot::DispatchEvent(nsIDOMEvent* aEvt, bool *aRetVal) { diff --git a/dom/events/DOMEventTargetHelper.cpp b/dom/events/DOMEventTargetHelper.cpp index 8078baeb18d2..0dd9ab76508c 100644 --- a/dom/events/DOMEventTargetHelper.cpp +++ b/dom/events/DOMEventTargetHelper.cpp @@ -175,8 +175,6 @@ DOMEventTargetHelper::GetDocumentIfCurrent() const return win->GetDoc(); } -NS_IMPL_REMOVE_SYSTEM_EVENT_LISTENER(DOMEventTargetHelper) - NS_IMETHODIMP DOMEventTargetHelper::AddEventListener(const nsAString& aType, nsIDOMEventListener* aListener, diff --git a/dom/events/EventTarget.cpp b/dom/events/EventTarget.cpp index 2e2b9e4b4596..9001ed19da13 100644 --- a/dom/events/EventTarget.cpp +++ b/dom/events/EventTarget.cpp @@ -50,6 +50,20 @@ EventTarget::RemoveEventListener(const nsAString& aType, } } +void +EventTarget::RemoveSystemEventListener(const nsAString& aType, + nsIDOMEventListener *aListener, + bool aUseCapture) +{ + EventListenerManager* elm = GetExistingListenerManager(); + if (elm) { + EventListenerFlags flags; + flags.mInSystemGroup = true; + flags.mCapture = aUseCapture; + elm->RemoveEventListenerByType(aListener, aType, flags); + } +} + EventHandlerNonNull* EventTarget::GetEventHandler(nsAtom* aType, const nsAString& aTypeString) { diff --git a/dom/events/EventTarget.h b/dom/events/EventTarget.h index 60ecff198a9f..428dffc6efeb 100644 --- a/dom/events/EventTarget.h +++ b/dom/events/EventTarget.h @@ -65,6 +65,14 @@ public: void RemoveEventListener(const nsAString& aType, nsIDOMEventListener* aListener, bool aUseCapture); + /** + * RemoveSystemEventListener() should be used if you have used + * AddSystemEventListener(). + */ + void RemoveSystemEventListener(const nsAString& aType, + nsIDOMEventListener* aListener, + bool aUseCapture); + bool DispatchEvent(Event& aEvent, CallerType aCallerType, ErrorResult& aRv); nsIGlobalObject* GetParentObject() const diff --git a/dom/interfaces/events/nsIDOMEventTarget.idl b/dom/interfaces/events/nsIDOMEventTarget.idl index 91e6a9d6fba2..608d66dbb4f4 100644 --- a/dom/interfaces/events/nsIDOMEventTarget.idl +++ b/dom/interfaces/events/nsIDOMEventTarget.idl @@ -139,15 +139,6 @@ interface nsIDOMEventTarget : nsISupports } %} - /** - * removeSystemEventListener() should be used if you have used - * addSystemEventListener(). - */ - [noscript] void removeSystemEventListener( - in DOMString type, - in nsIDOMEventListener listener, - [optional] in boolean aUseCapture); - /** * This method allows the dispatch of events into the implementations * event model. Events dispatched in this manner will have the same @@ -249,22 +240,4 @@ mozilla::dom::EventTarget* _class::GetTargetForDOMEvent() { return this; } \ mozilla::dom::EventTarget* _class::GetTargetForEventTargetChain() { return this; } \ nsresult _class::WillHandleEvent(mozilla::EventChainPostVisitor& aVisitor) { return NS_OK; } -#define NS_IMPL_REMOVE_SYSTEM_EVENT_LISTENER(aClass) \ -NS_IMETHODIMP \ -aClass::RemoveSystemEventListener(const nsAString& aType, \ - nsIDOMEventListener *aListener, \ - bool aUseCapture) \ -{ \ - mozilla::EventListenerManager* listenerManager = \ - GetExistingListenerManager(); \ - if (!listenerManager) { \ - return NS_OK; \ - } \ - mozilla::EventListenerFlags flags; \ - flags.mInSystemGroup = true; \ - flags.mCapture = aUseCapture; \ - listenerManager->RemoveEventListenerByType(aListener, aType, flags); \ - return NS_OK; \ -} - %}