void MediaDocument::defaultEventHandler(Event* event) { // Match the default Quicktime plugin behavior to allow // clicking and double-clicking to pause and play the media. Node* targetNode = event->target()->toNode(); if (!targetNode) return; HTMLVideoElement* video = descendentVideoElement(targetNode); if (!video) return; if (event->type() == eventNames().clickEvent) { if (!video->canPlay()) { video->pause(event->fromUserGesture()); event->setDefaultHandled(); } } else if (event->type() == eventNames().dblclickEvent) { if (video->canPlay()) { video->play(event->fromUserGesture()); event->setDefaultHandled(); } } else if (event->type() == eventNames().keydownEvent && event->isKeyboardEvent()) { KeyboardEvent* keyboardEvent = static_cast<KeyboardEvent*>(event); if (keyboardEvent->keyIdentifier() == "U+0020") { // space if (video->paused()) { if (video->canPlay()) video->play(event->fromUserGesture()); } else video->pause(event->fromUserGesture()); event->setDefaultHandled(); } } }
void MediaDocument::defaultEventHandler(Event* event) { #if !(PLATFORM(BLACKBERRY) && OS(QNX)) // Match the default Quicktime plugin behavior to allow // clicking and double-clicking to pause and play the media. Node* targetNode = event->target()->toNode(); if (targetNode && targetNode->hasTagName(videoTag)) { HTMLVideoElement* video = static_cast<HTMLVideoElement*>(targetNode); if (event->type() == eventNames().clickEvent) { if (!video->canPlay()) { video->pause(event->fromUserGesture()); event->setDefaultHandled(); } } else if (event->type() == eventNames().dblclickEvent) { if (video->canPlay()) { video->play(event->fromUserGesture()); event->setDefaultHandled(); } } } if (event->type() == eventNames().keydownEvent && event->isKeyboardEvent()) { HTMLVideoElement* video = 0; if (targetNode) { if (targetNode->hasTagName(videoTag)) video = static_cast<HTMLVideoElement*>(targetNode); else { RefPtr<NodeList> nodeList = targetNode->getElementsByTagName("video"); if (nodeList.get()->length() > 0) video = static_cast<HTMLVideoElement*>(nodeList.get()->item(0)); } } if (video) { KeyboardEvent* keyboardEvent = static_cast<KeyboardEvent*>(event); if (keyboardEvent->keyIdentifier() == "U+0020") { // space if (video->paused()) { if (video->canPlay()) video->play(event->fromUserGesture()); } else video->pause(event->fromUserGesture()); event->setDefaultHandled(); } } } #endif }
void MediaDocument::defaultEventHandler(Event* event) { // Match the default Quicktime plugin behavior to allow // clicking and double-clicking to pause and play the media. Node* targetNode = event->target()->toNode(); if (!targetNode) return; if (HTMLVideoElement* video = ancestorVideoElement(targetNode)) { if (event->type() == eventNames().clickEvent) { if (!video->canPlay()) { video->pause(); event->setDefaultHandled(); } } else if (event->type() == eventNames().dblclickEvent) { if (video->canPlay()) { video->play(); event->setDefaultHandled(); } } } if (!is<ContainerNode>(*targetNode)) return; ContainerNode& targetContainer = downcast<ContainerNode>(*targetNode); if (event->type() == eventNames().keydownEvent && is<KeyboardEvent>(*event)) { HTMLVideoElement* video = descendantVideoElement(targetContainer); if (!video) return; KeyboardEvent& keyboardEvent = downcast<KeyboardEvent>(*event); if (keyboardEvent.keyIdentifier() == "U+0020") { // space if (video->paused()) { if (video->canPlay()) video->play(); } else video->pause(); keyboardEvent.setDefaultHandled(); } } }