This source file includes following definitions.
- title
- isXSL
- isImport
- importedDocument
- isAlternate
- isEnabledViaScript
- isEnabledAndLoading
- hasPreferrableName
- canBeActivated
- typeOf
- sheet
#include "config.h"
#include "core/dom/StyleSheetCandidate.h"
#include "HTMLNames.h"
#include "core/dom/Element.h"
#include "core/dom/ProcessingInstruction.h"
#include "core/dom/StyleEngine.h"
#include "core/html/HTMLLinkElement.h"
#include "core/html/HTMLStyleElement.h"
#include "core/html/imports/HTMLImport.h"
#include "core/svg/SVGStyleElement.h"
namespace WebCore {
using namespace HTMLNames;
AtomicString StyleSheetCandidate::title() const
{
return isElement() ? toElement(m_node).fastGetAttribute(titleAttr) : nullAtom;
}
bool StyleSheetCandidate::isXSL() const
{
return !m_node.document().isHTMLDocument() && m_type == Pi && toProcessingInstruction(m_node).isXSL();
}
bool StyleSheetCandidate::isImport() const
{
return m_type == HTMLLink && toHTMLLinkElement(m_node).isImport();
}
Document* StyleSheetCandidate::importedDocument() const
{
ASSERT(isImport());
return toHTMLLinkElement(m_node).import();
}
bool StyleSheetCandidate::isAlternate() const
{
if (!isElement())
return false;
return toElement(m_node).getAttribute(relAttr).contains("alternate");
}
bool StyleSheetCandidate::isEnabledViaScript() const
{
return isHTMLLink() && toHTMLLinkElement(m_node).isEnabledViaScript();
}
bool StyleSheetCandidate::isEnabledAndLoading() const
{
return isHTMLLink() && !toHTMLLinkElement(m_node).isDisabled() && toHTMLLinkElement(m_node).styleSheetIsLoading();
}
bool StyleSheetCandidate::hasPreferrableName(const String& currentPreferrableName) const
{
ASSERT(isEnabledAndLoading() || sheet());
return !isEnabledViaScript() && !title().isEmpty() && !isAlternate() && currentPreferrableName.isEmpty();
}
bool StyleSheetCandidate::canBeActivated(const String& currentPreferrableName) const
{
StyleSheet* sheet = this->sheet();
if (!sheet || sheet->disabled() || !sheet->isCSSStyleSheet())
return false;
const AtomicString& title = this->title();
if (!isEnabledViaScript() && !title.isEmpty() && title != currentPreferrableName)
return false;
if (isAlternate() && title.isEmpty())
return false;
return true;
}
StyleSheetCandidate::Type StyleSheetCandidate::typeOf(Node& node)
{
if (node.nodeType() == Node::PROCESSING_INSTRUCTION_NODE)
return Pi;
if (node.isHTMLElement()) {
if (isHTMLLinkElement(node))
return HTMLLink;
if (isHTMLStyleElement(node))
return HTMLStyle;
ASSERT_NOT_REACHED();
return HTMLStyle;
}
if (isSVGStyleElement(node))
return SVGStyle;
ASSERT_NOT_REACHED();
return HTMLStyle;
}
StyleSheet* StyleSheetCandidate::sheet() const
{
switch (m_type) {
case HTMLLink:
return toHTMLLinkElement(m_node).sheet();
case HTMLStyle:
return toHTMLStyleElement(m_node).sheet();
case SVGStyle:
return toSVGStyleElement(m_node).sheet();
case Pi:
return toProcessingInstruction(m_node).sheet();
}
ASSERT_NOT_REACHED();
return 0;
}
}