示例#1
0
void MediaDocumentParser::createDocumentStructure()
{
    Ref<Element> rootElement = document()->createElement(htmlTag, false);
    document()->appendChild(rootElement.copyRef(), IGNORE_EXCEPTION);
    document()->setCSSTarget(rootElement.ptr());
    downcast<HTMLHtmlElement>(rootElement.get()).insertedByParser();

    if (document()->frame())
        document()->frame()->injectUserScripts(InjectAtDocumentStart);

#if PLATFORM(IOS)
    Ref<Element> headElement = document()->createElement(headTag, false);
    rootElement->appendChild(headElement.copyRef(), IGNORE_EXCEPTION);

    Ref<Element> metaElement = document()->createElement(metaTag, false);
    metaElement->setAttribute(nameAttr, "viewport");
    metaElement->setAttribute(contentAttr, "width=device-width,initial-scale=1,user-scalable=no");
    headElement->appendChild(WTFMove(metaElement), IGNORE_EXCEPTION);
#endif

    Ref<Element> body = document()->createElement(bodyTag, false);
    rootElement->appendChild(body.copyRef(), IGNORE_EXCEPTION);

    Ref<Element> mediaElement = document()->createElement(videoTag, false);

    m_mediaElement = downcast<HTMLVideoElement>(mediaElement.ptr());
    m_mediaElement->setAttribute(controlsAttr, emptyAtom);
    m_mediaElement->setAttribute(autoplayAttr, emptyAtom);

    m_mediaElement->setAttribute(nameAttr, "media");

    StringBuilder elementStyle;
    elementStyle.appendLiteral("max-width: 100%; max-height: 100%;");
#if PLATFORM(IOS)
    elementStyle.appendLiteral("width: 100%; height: 100%;");
#endif
    m_mediaElement->setAttribute(styleAttr, elementStyle.toString());

    Ref<Element> sourceElement = document()->createElement(sourceTag, false);
    HTMLSourceElement& source = downcast<HTMLSourceElement>(sourceElement.get());
    source.setSrc(document()->url());

    if (DocumentLoader* loader = document()->loader())
        source.setType(loader->responseMIMEType());

    m_mediaElement->appendChild(WTFMove(sourceElement), IGNORE_EXCEPTION);
    body->appendChild(WTFMove(mediaElement), IGNORE_EXCEPTION);

    Frame* frame = document()->frame();
    if (!frame)
        return;

    frame->loader().activeDocumentLoader()->setMainResourceDataBufferingPolicy(DoNotBufferData);
    frame->loader().setOutgoingReferrer(frame->document()->completeURL(m_outgoingReferrer));
}
示例#2
0
void MediaDocumentParser::createDocumentStructure()
{
    RefPtr<Element> rootElement = document()->createElement(htmlTag, false);
    document()->appendChild(rootElement, IGNORE_EXCEPTION);
    document()->setCSSTarget(rootElement.get());
    toHTMLHtmlElement(rootElement.get())->insertedByParser();

    if (document()->frame())
        document()->frame()->injectUserScripts(InjectAtDocumentStart);

    RefPtr<Element> body = document()->createElement(bodyTag, false);
    rootElement->appendChild(body, IGNORE_EXCEPTION);

    RefPtr<Element> mediaElement = document()->createElement(videoTag, false);

    m_mediaElement = toHTMLVideoElement(mediaElement.get());
    m_mediaElement->setAttribute(controlsAttr, "");
    m_mediaElement->setAttribute(autoplayAttr, "");

    m_mediaElement->setAttribute(nameAttr, "media");

    StringBuilder elementStyle;
    elementStyle.appendLiteral("max-width: 100%; max-height: 100%;");
#if PLATFORM(IOS)
    elementStyle.appendLiteral("width: 100%; height: 100%;");
#endif
    m_mediaElement->setAttribute(styleAttr, elementStyle.toString());

    RefPtr<Element> sourceElement = document()->createElement(sourceTag, false);
    HTMLSourceElement& source = toHTMLSourceElement(*sourceElement);
    source.setSrc(document()->url());

    if (DocumentLoader* loader = document()->loader())
        source.setType(loader->responseMIMEType());

    m_mediaElement->appendChild(sourceElement, IGNORE_EXCEPTION);
    body->appendChild(mediaElement, IGNORE_EXCEPTION);

    Frame* frame = document()->frame();
    if (!frame)
        return;

    frame->loader().activeDocumentLoader()->setMainResourceDataBufferingPolicy(DoNotBufferData);
}
示例#3
0
void MediaDocumentParser::createDocumentStructure()
{
    RefPtr<Element> rootElement = document()->createElement(htmlTag, false);
    document()->appendChild(rootElement, IGNORE_EXCEPTION);
    document()->setCSSTarget(rootElement.get());
    static_cast<HTMLHtmlElement*>(rootElement.get())->insertedByParser();

    if (document()->frame())
        document()->frame()->loader()->dispatchDocumentElementAvailable();
        
    RefPtr<Element> body = document()->createElement(bodyTag, false);
    rootElement->appendChild(body, IGNORE_EXCEPTION);

    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(nameAttr, "media");

    RefPtr<Element> sourceElement = document()->createElement(sourceTag, false);
    HTMLSourceElement* source = static_cast<HTMLSourceElement*>(sourceElement.get());
    source->setSrc(document()->url());

    if (DocumentLoader* loader = document()->loader())
        source->setType(loader->responseMIMEType());

    m_mediaElement->appendChild(sourceElement, IGNORE_EXCEPTION);
    body->appendChild(mediaElement, IGNORE_EXCEPTION);

    Frame* frame = document()->frame();
    if (!frame)
        return;

    frame->loader()->activeDocumentLoader()->setMainResourceDataBufferingPolicy(DoNotBufferData);
}