diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/css/StyleSheetContents.h | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/WebCore/css/StyleSheetContents.h')
-rw-r--r-- | Source/WebCore/css/StyleSheetContents.h | 73 |
1 files changed, 41 insertions, 32 deletions
diff --git a/Source/WebCore/css/StyleSheetContents.h b/Source/WebCore/css/StyleSheetContents.h index 817e723a0..da6f6591d 100644 --- a/Source/WebCore/css/StyleSheetContents.h +++ b/Source/WebCore/css/StyleSheetContents.h @@ -18,55 +18,61 @@ * Boston, MA 02110-1301, USA. */ -#ifndef StyleSheetContents_h -#define StyleSheetContents_h +#pragma once #include "CSSParserMode.h" +#include "CachePolicy.h" #include "URL.h" #include <wtf/HashMap.h> #include <wtf/ListHashSet.h> #include <wtf/RefCounted.h> #include <wtf/Vector.h> +#include <wtf/WeakPtr.h> #include <wtf/text/AtomicStringHash.h> +#include <wtf/text/TextPosition.h> namespace WebCore { class CSSStyleSheet; class CachedCSSStyleSheet; +class CachedResource; class Document; class Node; class SecurityOrigin; class StyleRuleBase; class StyleRuleImport; +class StyleRuleNamespace; -class StyleSheetContents : public RefCounted<StyleSheetContents> { +class StyleSheetContents final : public RefCounted<StyleSheetContents> { public: - static PassRef<StyleSheetContents> create(const CSSParserContext& context = CSSParserContext(CSSStrictMode)) + static Ref<StyleSheetContents> create(const CSSParserContext& context = CSSParserContext(HTMLStandardMode)) { return adoptRef(*new StyleSheetContents(0, String(), context)); } - static PassRef<StyleSheetContents> create(const String& originalURL, const CSSParserContext& context) + static Ref<StyleSheetContents> create(const String& originalURL, const CSSParserContext& context) { return adoptRef(*new StyleSheetContents(0, originalURL, context)); } - static PassRef<StyleSheetContents> create(StyleRuleImport* ownerRule, const String& originalURL, const CSSParserContext& context) + static Ref<StyleSheetContents> create(StyleRuleImport* ownerRule, const String& originalURL, const CSSParserContext& context) { return adoptRef(*new StyleSheetContents(ownerRule, originalURL, context)); } - ~StyleSheetContents(); + WEBCORE_EXPORT ~StyleSheetContents(); const CSSParserContext& parserContext() const { return m_parserContext; } - - const AtomicString& determineNamespace(const AtomicString& prefix); + + const AtomicString& defaultNamespace() { return m_defaultNamespace; } + const AtomicString& namespaceURIFromPrefix(const AtomicString& prefix); void parseAuthorStyleSheet(const CachedCSSStyleSheet*, const SecurityOrigin*); - bool parseString(const String&); - bool parseStringAtLine(const String&, int startLineNumber, bool); + WEBCORE_EXPORT bool parseString(const String&); bool isCacheable() const; bool isLoading() const; + bool subresourcesAllowReuse(CachePolicy) const; + WEBCORE_EXPORT bool isLoadingSubresources() const; void checkLoaded(); void startLoadingDynamicSheet(); @@ -78,10 +84,9 @@ public: const String& charset() const { return m_parserContext.charset; } bool loadCompleted() const { return m_loadCompleted; } - bool hasFailedOrCanceledSubresources() const; URL completeURL(const String& url) const; - void addSubresourceStyleURLs(ListHashSet<URL>&); + bool traverseSubresources(const std::function<bool (const CachedResource&)>& handler) const; void setIsUserStyleSheet(bool b) { m_isUserStyleSheet = b; } bool isUserStyleSheet() const { return m_isUserStyleSheet; } @@ -89,17 +94,17 @@ public: bool hasSyntacticallyValidCSSHeader() const { return m_hasSyntacticallyValidCSSHeader; } void parserAddNamespace(const AtomicString& prefix, const AtomicString& uri); - void parserAppendRule(PassRefPtr<StyleRuleBase>); + void parserAppendRule(Ref<StyleRuleBase>&&); void parserSetEncodingFromCharsetRule(const String& encoding); - void parserSetUsesRemUnits(bool b) { m_usesRemUnits = b; } + void parserSetUsesStyleBasedEditability() { m_usesStyleBasedEditability = true; } void clearRules(); - bool hasCharsetRule() const { return !m_encodingFromCharsetRule.isNull(); } String encodingFromCharsetRule() const { return m_encodingFromCharsetRule; } // Rules other than @charset and @import. const Vector<RefPtr<StyleRuleBase>>& childRules() const { return m_childRules; } const Vector<RefPtr<StyleRuleImport>>& importRules() const { return m_importRules; } + const Vector<RefPtr<StyleRuleNamespace>>& namespaceRules() const { return m_namespaceRules; } void notifyLoadedSheet(const CachedCSSStyleSheet*); @@ -116,14 +121,14 @@ public: unsigned ruleCount() const; StyleRuleBase* ruleAt(unsigned index) const; - bool usesRemUnits() const { return m_usesRemUnits; } + bool usesStyleBasedEditability() const { return m_usesStyleBasedEditability; } unsigned estimatedSizeInBytes() const; - bool wrapperInsertRule(PassRefPtr<StyleRuleBase>, unsigned index); + bool wrapperInsertRule(Ref<StyleRuleBase>&&, unsigned index); void wrapperDeleteRule(unsigned index); - PassRef<StyleSheetContents> copy() const { return adoptRef(*new StyleSheetContents(*this)); } + Ref<StyleSheetContents> copy() const { return adoptRef(*new StyleSheetContents(*this)); } void registerClient(CSSStyleSheet*); void unregisterClient(CSSStyleSheet*); @@ -132,14 +137,16 @@ public: bool isMutable() const { return m_isMutable; } void setMutable() { m_isMutable = true; } - bool isInMemoryCache() const { return m_isInMemoryCache; } + bool isInMemoryCache() const { return m_inMemoryCacheCount; } void addedToMemoryCache(); void removedFromMemoryCache(); void shrinkToFit(); + WeakPtr<StyleSheetContents> createWeakPtr() { return m_weakPtrFactory.createWeakPtr(); } + private: - StyleSheetContents(StyleRuleImport* ownerRule, const String& originalURL, const CSSParserContext&); + WEBCORE_EXPORT StyleSheetContents(StyleRuleImport* ownerRule, const String& originalURL, const CSSParserContext&); StyleSheetContents(const StyleSheetContents&); void clearCharsetRule(); @@ -150,23 +157,25 @@ private: String m_encodingFromCharsetRule; Vector<RefPtr<StyleRuleImport>> m_importRules; + Vector<RefPtr<StyleRuleNamespace>> m_namespaceRules; Vector<RefPtr<StyleRuleBase>> m_childRules; typedef HashMap<AtomicString, AtomicString> PrefixNamespaceURIMap; PrefixNamespaceURIMap m_namespaces; + AtomicString m_defaultNamespace; + + bool m_isUserStyleSheet; + bool m_loadCompleted { false }; + bool m_hasSyntacticallyValidCSSHeader { true }; + bool m_didLoadErrorOccur { false }; + bool m_usesStyleBasedEditability { false }; + bool m_isMutable { false }; + unsigned m_inMemoryCacheCount { 0 }; - bool m_loadCompleted : 1; - bool m_isUserStyleSheet : 1; - bool m_hasSyntacticallyValidCSSHeader : 1; - bool m_didLoadErrorOccur : 1; - bool m_usesRemUnits : 1; - bool m_isMutable : 1; - bool m_isInMemoryCache : 1; - CSSParserContext m_parserContext; Vector<CSSStyleSheet*> m_clients; + + WeakPtrFactory<StyleSheetContents> m_weakPtrFactory { this }; }; -} // namespace - -#endif +} // namespace WebCore |