#ifndef StyleElement_h
#define StyleElement_h
#include "core/css/CSSStyleSheet.h"
#include "wtf/text/TextPosition.h"
namespace WebCore {
class ContainerNode;
class Document;
class Element;
class TreeScope;
class StyleElement {
public:
StyleElement(Document*, bool createdByParser);
virtual ~StyleElement();
protected:
virtual const AtomicString& type() const = 0;
virtual const AtomicString& media() const = 0;
CSSStyleSheet* sheet() const { return m_sheet.get(); }
bool isLoading() const;
bool sheetLoaded(Document&);
void startLoadingDynamicSheet(Document&);
void processStyleSheet(Document&, Element*);
void removedFromDocument(Document&, Element*);
void removedFromDocument(Document&, Element*, ContainerNode* scopingNode, TreeScope&);
void clearDocumentData(Document&, Element*);
void childrenChanged(Element*);
void finishParsingChildren(Element*);
RefPtrWillBePersistent<CSSStyleSheet> m_sheet;
private:
void createSheet(Element*, const String& text = String());
void process(Element*);
void clearSheet(Element* ownerElement = 0);
bool m_createdByParser : 1;
bool m_loading : 1;
bool m_registeredAsCandidate : 1;
TextPosition m_startPosition;
};
}
#endif