bool NetscapePlugin::platformHandleMouseEvent(const WebMouseEvent& event) { if (m_isWindowed || !m_impl) return false; if ((event.type() == WebEvent::MouseDown || event.type() == WebEvent::MouseUp) && event.button() == WebMouseEvent::RightButton && quirks().contains(PluginQuirks::IgnoreRightClickInWindowlessMode)) return false; return m_impl->handleMouseEvent(event); }
bool FindController::mouseEvent(PageOverlay*, const WebMouseEvent& mouseEvent) { if (mouseEvent.type() == WebEvent::MouseDown) hideFindUI(); return false; }
virtual bool mouseEvent(PageOverlay* pageOverlay, const WebMouseEvent& event) { switch (event.type()) { case WebEvent::MouseDown: { if (!m_client.mouseDown) return false; return m_client.mouseDown(toAPI(pageOverlay), toAPI(event.position()), toAPI(event.button()), m_client.clientInfo); } case WebEvent::MouseUp: { if (!m_client.mouseUp) return false; return m_client.mouseUp(toAPI(pageOverlay), toAPI(event.position()), toAPI(event.button()), m_client.clientInfo); } case WebEvent::MouseMove: { if (event.button() == WebMouseEvent::NoButton) { if (!m_client.mouseMoved) return false; return m_client.mouseMoved(toAPI(pageOverlay), toAPI(event.position()), m_client.clientInfo); } // This is a MouseMove event with a mouse button pressed. Call mouseDragged. if (!m_client.mouseDragged) return false; return m_client.mouseDragged(toAPI(pageOverlay), toAPI(event.position()), toAPI(event.button()), m_client.clientInfo); } default: return false; } }
bool NetscapePluginX11::handleMouseEvent(const WebMouseEvent& event) { ASSERT(m_plugin.isWindowed()); XEvent xEvent; initializeXEvent(xEvent); switch (event.type()) { case WebEvent::MouseDown: case WebEvent::MouseUp: setXButtonEventFields(xEvent, event, m_plugin.convertToRootView(IntPoint())); break; case WebEvent::MouseMove: setXMotionEventFields(xEvent, event, m_plugin.convertToRootView(IntPoint())); break; case WebEvent::MouseForceChanged: case WebEvent::MouseForceDown: case WebEvent::MouseForceUp: case WebEvent::NoType: case WebEvent::Wheel: case WebEvent::KeyDown: case WebEvent::KeyUp: case WebEvent::RawKeyDown: case WebEvent::Char: #if ENABLE(TOUCH_EVENTS) case WebEvent::TouchStart: case WebEvent::TouchMove: case WebEvent::TouchEnd: case WebEvent::TouchCancel: #endif return false; } return !m_plugin.NPP_HandleEvent(&xEvent); }
bool FindController::mouseEvent(PageOverlay*, const WebMouseEvent& mouseEvent) { // If we get a mouse down event inside the page overlay we should hide the find UI. if (mouseEvent.type() == WebEvent::MouseDown) { // Dismiss the overlay. hideFindUI(); } return false; }
void WebPageProxy::mouseEvent(const WebMouseEvent& event) { if (!isValid()) return; // NOTE: This does not start the responsiveness timer because mouse move should not indicate interaction. if (event.type() != WebEvent::MouseMove) process()->responsivenessTimer()->start(); process()->connection()->send(WebPageMessage::MouseEvent, m_pageID, CoreIPC::In(event)); }
bool NetscapePlugin::platformHandleMouseEvent(const WebMouseEvent& event) { if (m_isWindowed) return false; if ((event.type() == WebEvent::MouseDown || event.type() == WebEvent::MouseUp) && event.button() == WebMouseEvent::RightButton && quirks().contains(PluginQuirks::IgnoreRightClickInWindowlessMode)) return false; XEvent xEvent; initializeXEvent(xEvent); switch (event.type()) { case WebEvent::MouseDown: case WebEvent::MouseUp: setXButtonEventFields(xEvent, event, convertToRootView(IntPoint())); break; case WebEvent::MouseMove: setXMotionEventFields(xEvent, event, convertToRootView(IntPoint())); break; case WebEvent::NoType: case WebEvent::Wheel: case WebEvent::KeyDown: case WebEvent::KeyUp: case WebEvent::RawKeyDown: case WebEvent::Char: #if ENABLE(GESTURE_EVENTS) case WebEvent::GestureScrollBegin: case WebEvent::GestureScrollEnd: #endif #if ENABLE(TOUCH_EVENTS) case WebEvent::TouchStart: case WebEvent::TouchMove: case WebEvent::TouchEnd: case WebEvent::TouchCancel: #endif return false; } return !NPP_HandleEvent(&xEvent); }
WebKit2PlatformMouseEvent(const WebMouseEvent& webEvent) { switch (webEvent.type()) { case WebEvent::MouseDown: m_eventType = WebCore::MouseEventPressed; break; case WebEvent::MouseUp: m_eventType = WebCore::MouseEventReleased; break; case WebEvent::MouseMove: m_eventType = WebCore::MouseEventMoved; break; default: ASSERT_NOT_REACHED(); } switch (webEvent.button()) { case WebMouseEvent::NoButton: m_button = WebCore::NoButton; break; case WebMouseEvent::LeftButton: m_button = WebCore::LeftButton; break; case WebMouseEvent::MiddleButton: m_button = WebCore::MiddleButton; break; case WebMouseEvent::RightButton: m_button = WebCore::RightButton; break; default: ASSERT_NOT_REACHED(); } m_position = WebCore::IntPoint(webEvent.positionX(), webEvent.positionY()); m_globalPosition = WebCore::IntPoint(webEvent.globalPositionX(), webEvent.globalPositionY()); m_clickCount = webEvent.clickCount(); m_timestamp = webEvent.timestamp(); m_shiftKey = webEvent.shiftKey(); m_ctrlKey = webEvent.controlKey(); m_altKey = webEvent.altKey(); m_metaKey = webEvent.metaKey(); m_modifierFlags = 0; if (m_shiftKey) m_modifierFlags |= WebEvent::ShiftKey; if (m_ctrlKey) m_modifierFlags |= WebEvent::ControlKey; if (m_altKey) m_modifierFlags |= WebEvent::AltKey; if (m_metaKey) m_modifierFlags |= WebEvent::MetaKey; }
static inline void setXButtonEventFields(XEvent& xEvent, const WebMouseEvent& webEvent, const WebCore::IntPoint& pluginLocation) { XButtonEvent& xButton = xEvent.xbutton; setCommonMouseEventFields(xButton, webEvent, pluginLocation); xButton.type = (webEvent.type() == WebEvent::MouseDown) ? ButtonPress : ButtonRelease; switch (webEvent.button()) { case WebMouseEvent::LeftButton: xButton.button = Button1; break; case WebMouseEvent::MiddleButton: xButton.button = Button2; break; case WebMouseEvent::RightButton: xButton.button = Button3; break; default: ASSERT_NOT_REACHED(); break; } }
WebKit2PlatformMouseEvent(const WebMouseEvent& webEvent) { // PlatformEvent switch (webEvent.type()) { case WebEvent::MouseDown: m_type = WebCore::PlatformEvent::MousePressed; m_force = WebCore::ForceAtClick; break; case WebEvent::MouseUp: m_type = WebCore::PlatformEvent::MouseReleased; m_force = WebCore::ForceAtClick; break; case WebEvent::MouseMove: m_type = WebCore::PlatformEvent::MouseMoved; m_force = webEvent.force(); break; case WebEvent::MouseForceChanged: m_type = WebCore::PlatformEvent::MouseForceChanged; m_force = webEvent.force(); break; case WebEvent::MouseForceDown: m_type = WebCore::PlatformEvent::MouseForceDown; m_force = WebCore::ForceAtForceClick; break; case WebEvent::MouseForceUp: m_type = WebCore::PlatformEvent::MouseForceUp; m_force = WebCore::ForceAtForceClick; break; default: ASSERT_NOT_REACHED(); } m_modifiers = 0; if (webEvent.shiftKey()) m_modifiers |= ShiftKey; if (webEvent.controlKey()) m_modifiers |= CtrlKey; if (webEvent.altKey()) m_modifiers |= AltKey; if (webEvent.metaKey()) m_modifiers |= MetaKey; m_timestamp = webEvent.timestamp(); // PlatformMouseEvent switch (webEvent.button()) { case WebMouseEvent::NoButton: m_button = WebCore::NoButton; break; case WebMouseEvent::LeftButton: m_button = WebCore::LeftButton; break; case WebMouseEvent::MiddleButton: m_button = WebCore::MiddleButton; break; case WebMouseEvent::RightButton: m_button = WebCore::RightButton; break; default: ASSERT_NOT_REACHED(); } m_position = webEvent.position(); m_globalPosition = webEvent.globalPosition(); m_clickCount = webEvent.clickCount(); #if PLATFORM(MAC) m_eventNumber = webEvent.eventNumber(); m_menuTypeForEvent = webEvent.menuTypeForEvent(); #endif m_modifierFlags = 0; if (webEvent.shiftKey()) m_modifierFlags |= WebEvent::ShiftKey; if (webEvent.controlKey()) m_modifierFlags |= WebEvent::ControlKey; if (webEvent.altKey()) m_modifierFlags |= WebEvent::AltKey; if (webEvent.metaKey()) m_modifierFlags |= WebEvent::MetaKey; }
void WebPage::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder& arguments) { if (messageID.is<CoreIPC::MessageClassDrawingArea>()) { ASSERT(m_drawingArea); m_drawingArea->didReceiveMessage(connection, messageID, arguments); return; } switch (messageID.get<WebPageMessage::Kind>()) { case WebPageMessage::SetActive: { bool active; if (!arguments.decode(active)) return; setActive(active); break; } case WebPageMessage::SetFocused: { bool focused; if (!arguments.decode(focused)) return; setFocused(focused); break; } case WebPageMessage::MouseEvent: { WebMouseEvent event; if (!arguments.decode(event)) return; connection->send(WebPageProxyMessage::DidReceiveEvent, m_pageID, CoreIPC::In((uint32_t)event.type())); PlatformMouseEvent platformEvent = platform(event); mouseEvent(platformEvent); break; } case WebPageMessage::WheelEvent: { WebWheelEvent event; if (!arguments.decode(event)) return; connection->send(WebPageProxyMessage::DidReceiveEvent, m_pageID, CoreIPC::In((uint32_t)event.type())); PlatformWheelEvent platformEvent = platform(event); wheelEvent(platformEvent); break; } case WebPageMessage::KeyEvent: { WebKeyboardEvent event; if (!arguments.decode(event)) return; connection->send(WebPageProxyMessage::DidReceiveEvent, m_pageID, CoreIPC::In((uint32_t)event.type())); PlatformKeyboardEvent platformEvent = platform(event); keyEvent(platformEvent); break; } case WebPageMessage::LoadURL: { String url; if (!arguments.decode(url)) return; loadURL(url); break; } case WebPageMessage::StopLoading: stopLoading(); break; case WebPageMessage::Reload: bool reloadFromOrigin; if (!arguments.decode(CoreIPC::Out(reloadFromOrigin))) return; reload(reloadFromOrigin); break; case WebPageMessage::GoForward: goForward(); break; case WebPageMessage::GoBack: goBack(); break; case WebPageMessage::DidReceivePolicyDecision: { uint64_t frameID; uint64_t listenerID; uint32_t policyAction; if (!arguments.decode(CoreIPC::Out(frameID, listenerID, policyAction))) return; didReceivePolicyDecision(webFrame(frameID), listenerID, (WebCore::PolicyAction)policyAction); break; } case WebPageMessage::RunJavaScriptInMainFrame: { String script; uint64_t callbackID; if (!arguments.decode(CoreIPC::Out(script, callbackID))) return; runJavaScriptInMainFrame(script, callbackID); break; } case WebPageMessage::GetRenderTreeExternalRepresentation: { uint64_t callbackID; if (!arguments.decode(callbackID)) return; getRenderTreeExternalRepresentation(callbackID); break; } case WebPageMessage::Close: { close(); break; } case WebPageMessage::TryClose: { tryClose(); break; } default: ASSERT_NOT_REACHED(); break; } }
WebKit2PlatformMouseEvent(const WebMouseEvent& webEvent) { // PlatformEvent switch (webEvent.type()) { case WebEvent::MouseDown: m_type = WebCore::PlatformEvent::MousePressed; break; case WebEvent::MouseUp: m_type = WebCore::PlatformEvent::MouseReleased; break; case WebEvent::MouseMove: m_type = WebCore::PlatformEvent::MouseMoved; break; default: ASSERT_NOT_REACHED(); } m_modifiers = 0; if (webEvent.shiftKey()) m_modifiers |= ShiftKey; if (webEvent.controlKey()) m_modifiers |= CtrlKey; if (webEvent.altKey()) m_modifiers |= AltKey; if (webEvent.metaKey()) m_modifiers |= MetaKey; m_timestamp = webEvent.timestamp(); // PlatformMouseEvent switch (webEvent.button()) { case WebMouseEvent::NoButton: m_button = WebCore::NoButton; break; case WebMouseEvent::LeftButton: m_button = WebCore::LeftButton; break; case WebMouseEvent::MiddleButton: m_button = WebCore::MiddleButton; break; case WebMouseEvent::RightButton: m_button = WebCore::RightButton; break; default: ASSERT_NOT_REACHED(); } m_position = webEvent.position(); m_globalPosition = webEvent.globalPosition(); m_clickCount = webEvent.clickCount(); m_modifierFlags = 0; if (webEvent.shiftKey()) m_modifierFlags |= WebEvent::ShiftKey; if (webEvent.controlKey()) m_modifierFlags |= WebEvent::ControlKey; if (webEvent.altKey()) m_modifierFlags |= WebEvent::AltKey; if (webEvent.metaKey()) m_modifierFlags |= WebEvent::MetaKey; #if PLATFORM(WIN) m_didActivateWebView = webEvent.didActivateWebView(); #endif }
NPEvent toNP(const WebMouseEvent& event) { NPEvent npEvent; npEvent.wParam = 0; if (event.controlKey()) npEvent.wParam |= MK_CONTROL; if (event.shiftKey()) npEvent.wParam |= MK_SHIFT; npEvent.lParam = MAKELPARAM(event.position().x(), event.position().y()); switch (event.type()) { case WebEvent::MouseMove: npEvent.event = WM_MOUSEMOVE; switch (event.button()) { case WebMouseEvent::LeftButton: npEvent.wParam |= MK_LBUTTON; break; case WebMouseEvent::MiddleButton: npEvent.wParam |= MK_MBUTTON; break; case WebMouseEvent::RightButton: npEvent.wParam |= MK_RBUTTON; break; case WebMouseEvent::NoButton: break; } break; case WebEvent::MouseDown: switch (event.button()) { case WebMouseEvent::LeftButton: npEvent.event = WM_LBUTTONDOWN; break; case WebMouseEvent::MiddleButton: npEvent.event = WM_MBUTTONDOWN; break; case WebMouseEvent::RightButton: npEvent.event = WM_RBUTTONDOWN; break; case WebMouseEvent::NoButton: ASSERT_NOT_REACHED(); break; } break; case WebEvent::MouseUp: switch (event.button()) { case WebMouseEvent::LeftButton: npEvent.event = WM_LBUTTONUP; break; case WebMouseEvent::MiddleButton: npEvent.event = WM_MBUTTONUP; break; case WebMouseEvent::RightButton: npEvent.event = WM_RBUTTONUP; break; case WebMouseEvent::NoButton: ASSERT_NOT_REACHED(); break; } break; default: ASSERT_NOT_REACHED(); break; } return npEvent; }