Bug 1381344: Use original target to determine if context node is remote. r?keeler draft
authorKris Maglione <maglione.k@gmail.com>
Mon, 18 Sep 2017 22:52:21 -0700
changeset 666762 b0858ed56fbdf4681163e7b87031409eade26e2f
parent 665648 6be5c7d30d2def62a762ac187252eba626b23a92
child 732186 3fa6421d3ee86a32e5da3d50faac5a8d1e0a1ad8
push id80493
push usermaglione.k@gmail.com
push dateTue, 19 Sep 2017 05:51:30 +0000
reviewerskeeler
bugs1381344
milestone57.0a1
Bug 1381344: Use original target to determine if context node is remote. r?keeler MozReview-Commit-ID: EQlRNgXkc8B
dom/xul/nsXULPopupListener.cpp
--- a/dom/xul/nsXULPopupListener.cpp
+++ b/dom/xul/nsXULPopupListener.cpp
@@ -133,18 +133,23 @@ nsXULPopupListener::HandleEvent(nsIDOMEv
       return NS_ERROR_FAILURE;
     }
   }
 
   nsCOMPtr<nsIContent> targetContent = do_QueryInterface(target);
   if (!targetContent) {
     return NS_OK;
   }
-  if (EventStateManager::IsRemoteTarget(targetContent)) {
-    return NS_OK;
+
+  {
+    EventTarget* originalTarget = mouseEvent->AsEvent()->InternalDOMEvent()->GetOriginalTarget();
+    nsCOMPtr<nsIContent> content = do_QueryInterface(originalTarget);
+    if (content && EventStateManager::IsRemoteTarget(content)) {
+      return NS_OK;
+    }
   }
 
   bool preventDefault;
   mouseEvent->AsEvent()->GetDefaultPrevented(&preventDefault);
   if (preventDefault && targetNode && mIsContext) {
     // Someone called preventDefault on a context menu.
     // Let's make sure they are allowed to do so.
     bool eventEnabled =