LinkResource* HTMLLinkElement::linkResourceToProcess()
{
    bool visible = inDocument() && !m_isInShadowTree;
    if (!visible) {
        ASSERT(!linkStyle() || !linkStyle()->hasSheet());
        return 0;
    }

    if (!m_link) {
        if (m_relAttribute.isImport() && RuntimeEnabledFeatures::htmlImportsEnabled()) {
            m_link = LinkImport::create(this);
        } else if (m_relAttribute.isManifest() && RuntimeEnabledFeatures::manifestEnabled()) {
            m_link = LinkManifest::create(this);
        } else {
            OwnPtrWillBeRawPtr<LinkStyle> link = LinkStyle::create(this);
            if (fastHasAttribute(disabledAttr) || m_relAttribute.isTransitionExitingStylesheet())
                link->setDisabledState(true);
            m_link = link.release();
        }
    }

    return m_link.get();
}