summaryrefslogtreecommitdiff
path: root/Source/WebCore/css/StyleSheetContents.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/css/StyleSheetContents.h
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/WebCore/css/StyleSheetContents.h')
-rw-r--r--Source/WebCore/css/StyleSheetContents.h73
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