BaseEventFlags TextComposition::CloneAndDispatchAs( const WidgetCompositionEvent* aCompositionEvent, EventMessage aMessage, nsEventStatus* aStatus, EventDispatchingCallback* aCallBack) { MOZ_RELEASE_ASSERT(!mTabParent); MOZ_ASSERT(IsValidStateForComposition(aCompositionEvent->mWidget), "Should be called only when it's safe to dispatch an event"); WidgetCompositionEvent compositionEvent(aCompositionEvent->IsTrusted(), aMessage, aCompositionEvent->mWidget); compositionEvent.mTime = aCompositionEvent->mTime; compositionEvent.mTimeStamp = aCompositionEvent->mTimeStamp; compositionEvent.mData = aCompositionEvent->mData; compositionEvent.mNativeIMEContext = aCompositionEvent->mNativeIMEContext; compositionEvent.mOriginalMessage = aCompositionEvent->mMessage; compositionEvent.mFlags.mIsSynthesizedForTests = aCompositionEvent->mFlags.mIsSynthesizedForTests; nsEventStatus dummyStatus = nsEventStatus_eConsumeNoDefault; nsEventStatus* status = aStatus ? aStatus : &dummyStatus; if (aMessage == eCompositionUpdate) { mLastData = compositionEvent.mData; mLastRanges = aCompositionEvent->mRanges; } DispatchEvent(&compositionEvent, status, aCallBack, aCompositionEvent); return compositionEvent.mFlags; }
BaseEventFlags TextComposition::CloneAndDispatchAs( const WidgetCompositionEvent* aCompositionEvent, uint32_t aMessage, nsEventStatus* aStatus, EventDispatchingCallback* aCallBack) { MOZ_ASSERT(IsValidStateForComposition(aCompositionEvent->widget), "Should be called only when it's safe to dispatch an event"); WidgetCompositionEvent compositionEvent(aCompositionEvent->mFlags.mIsTrusted, aMessage, aCompositionEvent->widget); compositionEvent.time = aCompositionEvent->time; compositionEvent.timeStamp = aCompositionEvent->timeStamp; compositionEvent.mData = aCompositionEvent->mData; compositionEvent.mFlags.mIsSynthesizedForTests = aCompositionEvent->mFlags.mIsSynthesizedForTests; nsEventStatus dummyStatus = nsEventStatus_eConsumeNoDefault; nsEventStatus* status = aStatus ? aStatus : &dummyStatus; if (aMessage == NS_COMPOSITION_UPDATE) { mLastData = compositionEvent.mData; } EventDispatcher::Dispatch(mNode, mPresContext, &compositionEvent, nullptr, status, aCallBack); return compositionEvent.mFlags; }