already_AddRefed<nsDOMMouseEvent> nsDOMMouseEvent::Constructor(const mozilla::dom::GlobalObject& aGlobal, const nsAString& aType, const mozilla::dom::MouseEventInit& aParam, mozilla::ErrorResult& aRv) { nsCOMPtr<mozilla::dom::EventTarget> t = do_QueryInterface(aGlobal.GetAsSupports()); nsRefPtr<nsDOMMouseEvent> e = new nsDOMMouseEvent(t, nullptr, nullptr); bool trusted = e->Init(t); e->InitMouseEvent(aType, aParam.mBubbles, aParam.mCancelable, aParam.mView, aParam.mDetail, aParam.mScreenX, aParam.mScreenY, aParam.mClientX, aParam.mClientY, aParam.mCtrlKey, aParam.mAltKey, aParam.mShiftKey, aParam.mMetaKey, aParam.mButton, aParam.mRelatedTarget, aRv); e->SetTrusted(trusted); switch (e->mEvent->eventStructType) { case NS_MOUSE_EVENT: case NS_MOUSE_SCROLL_EVENT: case NS_WHEEL_EVENT: case NS_DRAG_EVENT: case NS_SIMPLE_GESTURE_EVENT: static_cast<nsMouseEvent_base*>(e->mEvent)->buttons = aParam.mButtons; break; default: break; } return e.forget(); }
already_AddRefed<nsDOMClipboardEvent> nsDOMClipboardEvent::Constructor(const mozilla::dom::GlobalObject& aGlobal, const nsAString& aType, const mozilla::dom::ClipboardEventInit& aParam, mozilla::ErrorResult& aRv) { nsCOMPtr<mozilla::dom::EventTarget> t = do_QueryInterface(aGlobal.GetAsSupports()); nsRefPtr<nsDOMClipboardEvent> e = new nsDOMClipboardEvent(t, nullptr, nullptr); bool trusted = e->Init(t); nsRefPtr<nsDOMDataTransfer> clipboardData; if (e->mEventIsInternal) { nsClipboardEvent* event = static_cast<nsClipboardEvent*>(e->mEvent); if (event) { // Always create a clipboardData for the copy event. If this is changed to // support other types of events, make sure that read/write privileges are // checked properly within nsDOMDataTransfer. clipboardData = new nsDOMDataTransfer(NS_COPY, false, -1); clipboardData->SetData(aParam.mDataType, aParam.mData); } } aRv = e->InitClipboardEvent(aType, aParam.mBubbles, aParam.mCancelable, clipboardData); e->SetTrusted(trusted); return e.forget(); }
//static already_AddRefed<nsDOMUIEvent> nsDOMUIEvent::Constructor(const mozilla::dom::GlobalObject& aGlobal, const nsAString& aType, const mozilla::dom::UIEventInit& aParam, mozilla::ErrorResult& aRv) { nsCOMPtr<mozilla::dom::EventTarget> t = do_QueryInterface(aGlobal.GetAsSupports()); nsRefPtr<nsDOMUIEvent> e = new nsDOMUIEvent(t, nullptr, nullptr); bool trusted = e->Init(t); aRv = e->InitUIEvent(aType, aParam.mBubbles, aParam.mCancelable, aParam.mView, aParam.mDetail); e->SetTrusted(trusted); return e.forget(); }
//static already_AddRefed<nsDOMAnimationEvent> nsDOMAnimationEvent::Constructor(const mozilla::dom::GlobalObject& aGlobal, const nsAString& aType, const mozilla::dom::AnimationEventInit& aParam, mozilla::ErrorResult& aRv) { nsCOMPtr<mozilla::dom::EventTarget> t = do_QueryInterface(aGlobal.GetAsSupports()); nsRefPtr<nsDOMAnimationEvent> e = new nsDOMAnimationEvent(t, nullptr, nullptr); bool trusted = e->Init(t); aRv = e->InitEvent(aType, aParam.mBubbles, aParam.mCancelable); e->AnimationEvent()->animationName = aParam.mAnimationName; e->AnimationEvent()->elapsedTime = aParam.mElapsedTime; e->AnimationEvent()->pseudoElement = aParam.mPseudoElement; e->SetTrusted(trusted); return e.forget(); }