Commit ab42137d authored by Olli Pettay's avatar Olli Pettay
Browse files

Bug 1538794, add AnonymousContent.getTargetIdForEvent to be able to detect the...

Bug 1538794, add AnonymousContent.getTargetIdForEvent to be able to detect the event target in anonymous content, r=baku

Differential Revision: https://phabricator.services.mozilla.com//D24955

--HG--
extra : rebase_source : 85fd7443f018b0733826f316e3d79eaa93bac02d
extra : amend_source : c330a92b8c237c6464afb279ef9ffe69e4ce3baa
parent 44a21246
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -197,5 +197,16 @@ void AnonymousContent::GetComputedStylePropertyValue(
  aRv = cs->GetPropertyValue(aPropertyName, aResult);
}

void AnonymousContent::GetTargetIdForEvent(Event& aEvent, DOMString& aResult)
{
  nsCOMPtr<Element> el = do_QueryInterface(aEvent.GetOriginalTarget());
  if (el && el->IsInNativeAnonymousSubtree() && mContentNode->Contains(el)) {
    aResult.SetKnownLiveAtom(el->GetID(), DOMString::eTreatNullAsNull);
    return;
  }

  aResult.SetNull();
}

}  // namespace dom
}  // namespace mozilla
+3 −0
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@
#define mozilla_dom_AnonymousContent_h

#include "mozilla/dom/Element.h"
#include "mozilla/dom/Event.h"
#include "nsCycleCollectionParticipant.h"
#include "nsICSSDeclaration.h"
#include "mozilla/dom/Document.h"
@@ -68,6 +69,8 @@ class AnonymousContent final {
                                     const nsAString& aPropertyName,
                                     DOMString& aResult, ErrorResult& aRv);

  void GetTargetIdForEvent(Event& aEvent, DOMString& aResult);

 private:
  ~AnonymousContent();
  RefPtr<Element> mContentNode;
+6 −0
Original line number Diff line number Diff line
@@ -85,4 +85,10 @@ interface AnonymousContent {
  [Throws]
  DOMString? getComputedStylePropertyValue(DOMString elementId,
                                           DOMString propertyName);

  /**
   * If event's original target is in the anonymous content, this returns the id
   * attribute value of the target.
   */
  DOMString? getTargetIdForEvent(Event event);
};