void MediaDocumentParser::createDocumentStructure() { ExceptionCode ec; RefPtr<Element> rootElement = document()->createElement(htmlTag, false); document()->appendChild(rootElement, ec); static_cast<HTMLHtmlElement*>(rootElement.get())->insertedByParser(); if (document()->frame()) document()->frame()->loader()->dispatchDocumentElementAvailable(); RefPtr<Element> body = document()->createElement(bodyTag, false); body->setAttribute(styleAttr, "background-color: rgb(38,38,38);"); rootElement->appendChild(body, ec); RefPtr<Element> mediaElement = document()->createElement(videoTag, false); m_mediaElement = static_cast<HTMLVideoElement*>(mediaElement.get()); m_mediaElement->setAttribute(controlsAttr, ""); m_mediaElement->setAttribute(autoplayAttr, ""); m_mediaElement->setAttribute(styleAttr, "margin: auto; position: absolute; top: 0; right: 0; bottom: 0; left: 0;"); m_mediaElement->setAttribute(nameAttr, "media"); m_mediaElement->setSrc(document()->url()); body->appendChild(mediaElement, ec); Frame* frame = document()->frame(); if (!frame) return; frame->loader()->activeDocumentLoader()->mainResourceLoader()->setShouldBufferData(DoNotBufferData); }
void MediaTokenizer::createDocumentStructure() { ExceptionCode ec; RefPtr<Element> rootElement = m_doc->createElementNS(xhtmlNamespaceURI, "html", ec); m_doc->appendChild(rootElement, ec); RefPtr<Element> body = m_doc->createElementNS(xhtmlNamespaceURI, "body", ec); body->setAttribute(styleAttr, "background-color: rgb(38,38,38);"); rootElement->appendChild(body, ec); RefPtr<Element> mediaElement = m_doc->createElementNS(xhtmlNamespaceURI, "video", ec); m_mediaElement = static_cast<HTMLVideoElement*>(mediaElement.get()); m_mediaElement->setAttribute(controlsAttr, ""); m_mediaElement->setAttribute(autoplayAttr, ""); m_mediaElement->setAttribute(styleAttr, "margin: auto; position: absolute; top: 0; right: 0; bottom: 0; left: 0;"); m_mediaElement->setAttribute(nameAttr, "media"); m_mediaElement->setSrc(m_doc->url()); body->appendChild(mediaElement, ec); Frame* frame = m_doc->frame(); if (!frame) return; frame->loader()->activeDocumentLoader()->mainResourceLoader()->setShouldBufferData(false); }
void JSHTMLMediaElement::putValueProperty(ExecState* exec, int token, JSValue* value) { switch (token) { case SrcAttrNum: { HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl()); imp->setSrc(value->toString(exec)); break; } case CurrentTimeAttrNum: { HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl()); ExceptionCode ec = 0; imp->setCurrentTime(value->toFloat(exec), ec); setDOMException(exec, ec); break; } case DefaultPlaybackRateAttrNum: { HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl()); ExceptionCode ec = 0; imp->setDefaultPlaybackRate(value->toFloat(exec), ec); setDOMException(exec, ec); break; } case PlaybackRateAttrNum: { HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl()); ExceptionCode ec = 0; imp->setPlaybackRate(value->toFloat(exec), ec); setDOMException(exec, ec); break; } case AutoplayAttrNum: { HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl()); imp->setAutoplay(value->toBoolean(exec)); break; } case StartAttrNum: { HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl()); imp->setStart(value->toFloat(exec)); break; } case EndAttrNum: { HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl()); imp->setEnd(value->toFloat(exec)); break; } case LoopStartAttrNum: { HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl()); imp->setLoopStart(value->toFloat(exec)); break; } case LoopEndAttrNum: { HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl()); imp->setLoopEnd(value->toFloat(exec)); break; } case PlayCountAttrNum: { HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl()); ExceptionCode ec = 0; imp->setPlayCount(value->toInt32(exec), ec); setDOMException(exec, ec); break; } case CurrentLoopAttrNum: { HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl()); imp->setCurrentLoop(value->toInt32(exec)); break; } case ControlsAttrNum: { HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl()); imp->setControls(value->toBoolean(exec)); break; } case VolumeAttrNum: { HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl()); ExceptionCode ec = 0; imp->setVolume(value->toFloat(exec), ec); setDOMException(exec, ec); break; } case MutedAttrNum: { HTMLMediaElement* imp = static_cast<HTMLMediaElement*>(impl()); imp->setMuted(value->toBoolean(exec)); break; } } }
void MediaDocumentParser::createDocumentStructure() { ExceptionCode ec; RefPtr<Element> rootElement = document()->createElement(htmlTag, false); document()->appendChild(rootElement, ec); #if ENABLE(OFFLINE_WEB_APPLICATIONS) static_cast<HTMLHtmlElement*>(rootElement.get())->insertedByParser(); #endif if (document()->frame()) document()->frame()->loader()->dispatchDocumentElementAvailable(); RefPtr<Element> body = document()->createElement(bodyTag, false); body->setAttribute(styleAttr, "background-color: rgb(38,38,38);"); rootElement->appendChild(body, ec); #if PLATFORM(BLACKBERRY) && OS(QNX) // Use the name of the media file as the document title if (document()->title().isEmpty()) { const KURL& url = document()->url(); if (url.isValid()) { document()->setTitle(decodeURLEscapeSequences(url.lastPathComponent())); } } RefPtr<Element> div = document()->createElement(divTag, false); div->setAttribute(styleAttr, "margin-top: 40px; text-align: center; vertical-align: center;"); body->appendChild(div, ec); #endif RefPtr<Element> mediaElement = document()->createElement(videoTag, false); m_mediaElement = static_cast<HTMLVideoElement*>(mediaElement.get()); m_mediaElement->setAttribute(controlsAttr, ""); m_mediaElement->setAttribute(autoplayAttr, ""); #if PLATFORM(BLACKBERRY) && OS(QNX) Frame* frameForWidth = document()->frame(); if (!frameForWidth) return; int layoutWidth = frameForWidth->view()->layoutWidth(); char elementWidthAttr[12]; sprintf(elementWidthAttr, "%d", layoutWidth*3/4); // Make the default width 3/4 of the frame width. m_mediaElement->setAttribute(widthAttr, elementWidthAttr); m_mediaElement->setNeedsSourceWidthUpdate(); // So we know to update the element width if we're playing a video and the size comes in with the metadata. #else m_mediaElement->setAttribute(styleAttr, "margin: auto; position: absolute; top: 0; right: 0; bottom: 0; left: 0;"); #endif m_mediaElement->setAttribute(nameAttr, "media"); m_mediaElement->setSrc(document()->url()); #if PLATFORM(BLACKBERRY) && OS(QNX) div->appendChild(mediaElement, ec); #else body->appendChild(mediaElement, ec); #endif Frame* frame = document()->frame(); if (!frame) return; frame->loader()->activeDocumentLoader()->mainResourceLoader()->setShouldBufferData(false); }