зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1375319 part 1 - Make DispatchTrustedEvent able to dispatch composed event and have fullscreen events composed. r=smaug
Depends on D5394 Differential Revision: https://phabricator.services.mozilla.com/D5414 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
956bb2d407
Коммит
35bf576e96
|
@ -4371,6 +4371,7 @@ nsresult GetEventAndTarget(nsIDocument* aDoc, nsISupports* aTarget,
|
|||
const nsAString& aEventName,
|
||||
CanBubble aCanBubble,
|
||||
Cancelable aCancelable,
|
||||
Composed aComposed,
|
||||
Trusted aTrusted,
|
||||
Event** aEvent,
|
||||
EventTarget** aTargetOut)
|
||||
|
@ -4385,7 +4386,7 @@ nsresult GetEventAndTarget(nsIDocument* aDoc, nsISupports* aTarget,
|
|||
return err.StealNSResult();
|
||||
}
|
||||
|
||||
event->InitEvent(aEventName, aCanBubble, aCancelable);
|
||||
event->InitEvent(aEventName, aCanBubble, aCancelable, aComposed);
|
||||
event->SetTrusted(aTrusted == Trusted::eYes);
|
||||
|
||||
event->SetTarget(target);
|
||||
|
@ -4401,10 +4402,11 @@ nsContentUtils::DispatchTrustedEvent(nsIDocument* aDoc, nsISupports* aTarget,
|
|||
const nsAString& aEventName,
|
||||
CanBubble aCanBubble,
|
||||
Cancelable aCancelable,
|
||||
Composed aComposed,
|
||||
bool* aDefaultAction)
|
||||
{
|
||||
return DispatchEvent(aDoc, aTarget, aEventName, aCanBubble, aCancelable,
|
||||
Trusted::eYes, aDefaultAction);
|
||||
aComposed, Trusted::eYes, aDefaultAction);
|
||||
}
|
||||
|
||||
// static
|
||||
|
@ -4416,7 +4418,7 @@ nsContentUtils::DispatchUntrustedEvent(nsIDocument* aDoc, nsISupports* aTarget,
|
|||
bool* aDefaultAction)
|
||||
{
|
||||
return DispatchEvent(aDoc, aTarget, aEventName, aCanBubble, aCancelable,
|
||||
Trusted::eNo, aDefaultAction);
|
||||
Composed::eDefault, Trusted::eNo, aDefaultAction);
|
||||
}
|
||||
|
||||
// static
|
||||
|
@ -4425,6 +4427,7 @@ nsContentUtils::DispatchEvent(nsIDocument* aDoc, nsISupports* aTarget,
|
|||
const nsAString& aEventName,
|
||||
CanBubble aCanBubble,
|
||||
Cancelable aCancelable,
|
||||
Composed aComposed,
|
||||
Trusted aTrusted,
|
||||
bool* aDefaultAction,
|
||||
ChromeOnlyDispatch aOnlyChromeDispatch)
|
||||
|
@ -4432,7 +4435,8 @@ nsContentUtils::DispatchEvent(nsIDocument* aDoc, nsISupports* aTarget,
|
|||
RefPtr<Event> event;
|
||||
nsCOMPtr<EventTarget> target;
|
||||
nsresult rv = GetEventAndTarget(aDoc, aTarget, aEventName, aCanBubble,
|
||||
aCancelable, aTrusted, getter_AddRefs(event),
|
||||
aCancelable, aComposed, aTrusted,
|
||||
getter_AddRefs(event),
|
||||
getter_AddRefs(target));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
event->WidgetEventPtr()->mFlags.mOnlyChromeDispatch =
|
||||
|
@ -4496,7 +4500,8 @@ nsContentUtils::DispatchChromeEvent(nsIDocument *aDoc,
|
|||
RefPtr<Event> event;
|
||||
nsCOMPtr<EventTarget> target;
|
||||
nsresult rv = GetEventAndTarget(aDoc, aTarget, aEventName, aCanBubble,
|
||||
aCancelable, Trusted::eYes,
|
||||
aCancelable, Composed::eDefault,
|
||||
Trusted::eYes,
|
||||
getter_AddRefs(event),
|
||||
getter_AddRefs(target));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
@ -4543,7 +4548,8 @@ nsContentUtils::DispatchEventOnlyToChrome(nsIDocument* aDoc,
|
|||
bool* aDefaultAction)
|
||||
{
|
||||
return DispatchEvent(aDoc, aTarget, aEventName, aCanBubble, aCancelable,
|
||||
Trusted::eYes, aDefaultAction, ChromeOnlyDispatch::eYes);
|
||||
Composed::eDefault, Trusted::eYes, aDefaultAction,
|
||||
ChromeOnlyDispatch::eYes);
|
||||
}
|
||||
|
||||
/* static */
|
||||
|
|
|
@ -203,6 +203,7 @@ class nsContentUtils
|
|||
typedef mozilla::dom::Element Element;
|
||||
typedef mozilla::Cancelable Cancelable;
|
||||
typedef mozilla::CanBubble CanBubble;
|
||||
typedef mozilla::Composed Composed;
|
||||
typedef mozilla::ChromeOnlyDispatch ChromeOnlyDispatch;
|
||||
typedef mozilla::EventMessage EventMessage;
|
||||
typedef mozilla::TimeDuration TimeDuration;
|
||||
|
@ -1345,6 +1346,7 @@ public:
|
|||
* @param aEventName The name of the event.
|
||||
* @param aCanBubble Whether the event can bubble.
|
||||
* @param aCancelable Is the event cancelable.
|
||||
* @param aCopmosed Is the event composed.
|
||||
* @param aDefaultAction Set to true if default action should be taken,
|
||||
* see EventTarget::DispatchEvent.
|
||||
*/
|
||||
|
@ -1353,8 +1355,21 @@ public:
|
|||
const nsAString& aEventName,
|
||||
CanBubble,
|
||||
Cancelable,
|
||||
Composed aComposed = Composed::eDefault,
|
||||
bool* aDefaultAction = nullptr);
|
||||
|
||||
static nsresult DispatchTrustedEvent(nsIDocument* aDoc,
|
||||
nsISupports* aTarget,
|
||||
const nsAString& aEventName,
|
||||
CanBubble aCanBubble,
|
||||
Cancelable aCancelable,
|
||||
bool* aDefaultAction)
|
||||
{
|
||||
return DispatchTrustedEvent(aDoc, aTarget, aEventName,
|
||||
aCanBubble, aCancelable,
|
||||
Composed::eDefault, aDefaultAction);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method creates and dispatches a trusted event using an event message.
|
||||
* @param aDoc The document which will be used to create the event.
|
||||
|
@ -3339,6 +3354,7 @@ private:
|
|||
const nsAString& aEventName,
|
||||
CanBubble,
|
||||
Cancelable,
|
||||
Composed,
|
||||
Trusted,
|
||||
bool* aDefaultAction = nullptr,
|
||||
ChromeOnlyDispatch = ChromeOnlyDispatch::eNo);
|
||||
|
|
|
@ -491,7 +491,8 @@ Event::EnsureWebAccessibleRelatedTarget(EventTarget* aRelatedTarget)
|
|||
void
|
||||
Event::InitEvent(const nsAString& aEventTypeArg,
|
||||
mozilla::CanBubble aCanBubbleArg,
|
||||
mozilla::Cancelable aCancelableArg)
|
||||
mozilla::Cancelable aCancelableArg,
|
||||
mozilla::Composed aComposedArg)
|
||||
{
|
||||
// Make sure this event isn't already being dispatched.
|
||||
NS_ENSURE_TRUE_VOID(!mEvent->mFlags.mIsBeingDispatched);
|
||||
|
@ -507,6 +508,9 @@ Event::InitEvent(const nsAString& aEventTypeArg,
|
|||
|
||||
mEvent->mFlags.mBubbles = aCanBubbleArg == CanBubble::eYes;
|
||||
mEvent->mFlags.mCancelable = aCancelableArg == Cancelable::eYes;
|
||||
if (aComposedArg != Composed::eDefault) {
|
||||
mEvent->mFlags.mComposed = aComposedArg == Composed::eYes;
|
||||
}
|
||||
|
||||
mEvent->mFlags.mDefaultPrevented = false;
|
||||
mEvent->mFlags.mDefaultPreventedByContent = false;
|
||||
|
|
|
@ -158,7 +158,8 @@ public:
|
|||
|
||||
void InitEvent(const nsAString& aEventTypeArg,
|
||||
mozilla::CanBubble,
|
||||
mozilla::Cancelable);
|
||||
mozilla::Cancelable,
|
||||
mozilla::Composed = mozilla::Composed::eDefault);
|
||||
|
||||
void SetTarget(EventTarget* aTarget);
|
||||
virtual void DuplicatePrivateData();
|
||||
|
|
|
@ -52,7 +52,7 @@ public:
|
|||
}
|
||||
Unused << nsContentUtils::DispatchTrustedEvent(
|
||||
mDocument, mDocument, name,
|
||||
CanBubble::eYes, Cancelable::eNo, nullptr);
|
||||
CanBubble::eYes, Cancelable::eNo, Composed::eYes);
|
||||
}
|
||||
|
||||
private:
|
||||
|
|
Загрузка…
Ссылка в новой задаче