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
This commit is contained in:
Olli Pettay 2019-03-26 21:40:29 +02:00
parent 44a2124609
commit ab42137d71
3 changed files with 20 additions and 0 deletions

View File

@ -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

View File

@ -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;

View File

@ -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);
};