SimulatedMouseEvent(const AtomicString& eventType, DOMWindow* view, RefPtr<Event>&& underlyingEvent, Element& target, SimulatedClickSource source) : MouseEvent(eventType, true, true, underlyingEvent ? underlyingEvent->timeStamp() : currentTime(), view, 0, { }, { }, #if ENABLE(POINTER_LOCK) { }, #endif false, false, false, false, 0, 0, 0, 0, 0, true) { if (source == SimulatedClickSource::Bindings) setUntrusted(); if (UIEventWithKeyState* keyStateEvent = findEventWithKeyState(underlyingEvent.get())) { m_ctrlKey = keyStateEvent->ctrlKey(); m_altKey = keyStateEvent->altKey(); m_shiftKey = keyStateEvent->shiftKey(); m_metaKey = keyStateEvent->metaKey(); } setUnderlyingEvent(underlyingEvent.get()); if (is<MouseEvent>(this->underlyingEvent())) { MouseEvent& mouseEvent = downcast<MouseEvent>(*this->underlyingEvent()); m_screenLocation = mouseEvent.screenLocation(); initCoordinates(mouseEvent.clientLocation()); } else if (source == SimulatedClickSource::UserAgent) { // If there is no underlying event, we only populate the coordinates for events coming // from the user agent (e.g. accessibility). For those coming from JavaScript (e.g. // (element.click()), the coordinates will be 0, similarly to Firefox and Chrome. // Note that the call to screenRect() causes a synchronous IPC with the UI process. m_screenLocation = target.screenRect().center(); initCoordinates(LayoutPoint(target.clientRect().center())); } }
SimulatedMouseEvent::SimulatedMouseEvent(const AtomicString& eventType, PassRefPtr<AbstractView> view, PassRefPtr<Event> underlyingEvent) : MouseEvent(eventType, true, true, view, 0, 0, 0, 0, 0, false, false, false, false, 0, 0, 0, true) { if (UIEventWithKeyState* keyStateEvent = findEventWithKeyState(underlyingEvent.get())) { m_ctrlKey = keyStateEvent->ctrlKey(); m_altKey = keyStateEvent->altKey(); m_shiftKey = keyStateEvent->shiftKey(); m_metaKey = keyStateEvent->metaKey(); } setUnderlyingEvent(underlyingEvent); if (this->underlyingEvent() && this->underlyingEvent()->isMouseEvent()) { MouseEvent* mouseEvent = static_cast<MouseEvent*>(this->underlyingEvent()); m_screenLocation = mouseEvent->screenLocation(); initCoordinates(mouseEvent->clientLocation()); } }
SimulatedMouseEvent::SimulatedMouseEvent(const AtomicString& eventType, PassRefPtrWillBeRawPtr<AbstractView> view, PassRefPtrWillBeRawPtr<Event> underlyingEvent) : MouseEvent(eventType, true, true, view, 0, 0, 0, 0, 0, 0, 0, false, false, false, false, 0, 0, nullptr, nullptr, true, PlatformMouseEvent::RealOrIndistinguishable) { if (UIEventWithKeyState* keyStateEvent = findEventWithKeyState(underlyingEvent.get())) { m_ctrlKey = keyStateEvent->ctrlKey(); m_altKey = keyStateEvent->altKey(); m_shiftKey = keyStateEvent->shiftKey(); m_metaKey = keyStateEvent->metaKey(); } setUnderlyingEvent(underlyingEvent); if (this->underlyingEvent() && this->underlyingEvent()->isMouseEvent()) { MouseEvent* mouseEvent = toMouseEvent(this->underlyingEvent()); m_screenLocation = mouseEvent->screenLocation(); initCoordinates(mouseEvent->clientLocation()); } }
SimulatedMouseEvent(const AtomicString& eventType, DOMWindow* view, RefPtr<Event>&& underlyingEvent, Element& target) : MouseEvent(eventType, true, true, underlyingEvent ? underlyingEvent->timeStamp() : currentTime(), view, 0, 0, 0, 0, 0, #if ENABLE(POINTER_LOCK) 0, 0, #endif false, false, false, false, 0, 0, 0, 0, 0, true) { if (UIEventWithKeyState* keyStateEvent = findEventWithKeyState(underlyingEvent.get())) { m_ctrlKey = keyStateEvent->ctrlKey(); m_altKey = keyStateEvent->altKey(); m_shiftKey = keyStateEvent->shiftKey(); m_metaKey = keyStateEvent->metaKey(); } setUnderlyingEvent(underlyingEvent.get()); if (is<MouseEvent>(this->underlyingEvent())) { MouseEvent& mouseEvent = downcast<MouseEvent>(*this->underlyingEvent()); m_screenLocation = mouseEvent.screenLocation(); initCoordinates(mouseEvent.clientLocation()); } else { m_screenLocation = target.screenRect().center(); initCoordinates(LayoutPoint(target.clientRect().center())); } }
SimulatedMouseEvent::SimulatedMouseEvent(const AtomicString& eventType, PassRefPtr<AbstractView> view, PassRefPtr<Event> underlyingEvent, Element* target) : MouseEvent(eventType, true, true, underlyingEvent ? underlyingEvent->timeStamp() : currentTime(), view, 0, 0, 0, 0, 0, #if ENABLE(POINTER_LOCK) 0, 0, #endif false, false, false, false, 0, 0, 0, true) { if (UIEventWithKeyState* keyStateEvent = findEventWithKeyState(underlyingEvent.get())) { m_ctrlKey = keyStateEvent->ctrlKey(); m_altKey = keyStateEvent->altKey(); m_shiftKey = keyStateEvent->shiftKey(); m_metaKey = keyStateEvent->metaKey(); } setUnderlyingEvent(underlyingEvent); if (this->underlyingEvent() && this->underlyingEvent()->isMouseEvent()) { MouseEvent* mouseEvent = static_cast<MouseEvent*>(this->underlyingEvent()); m_screenLocation = mouseEvent->screenLocation(); initCoordinates(mouseEvent->clientLocation()); } else if (target) { m_screenLocation = target->screenRect().center(); initCoordinates(LayoutPoint(target->clientRect().center())); } }