Diff
Modified: trunk/Source/WebCore/ChangeLog (174252 => 174253)
--- trunk/Source/WebCore/ChangeLog 2014-10-03 00:37:47 UTC (rev 174252)
+++ trunk/Source/WebCore/ChangeLog 2014-10-03 01:40:12 UTC (rev 174253)
@@ -1,3 +1,36 @@
+2014-10-02 Christophe Dumez <[email protected]>
+
+ Use is<>() / downcast<>() for CSSRule subclasses
+ https://bugs.webkit.org/show_bug.cgi?id=137364
+
+ Reviewed by Benjamin Poulain.
+
+ Use is<>() / downcast<>() functions for CSSRule subclasses.
+
+ No new tests, no behavior change.
+
+ * css/CSSFontFaceRule.h:
+ * css/CSSImportRule.h:
+ * css/CSSMediaRule.h:
+ * css/CSSRule.h:
+ * css/CSSStyleRule.h:
+ * css/CSSSupportsRule.h:
+ * css/InspectorCSSOMWrappers.cpp:
+ (WebCore::InspectorCSSOMWrappers::collect):
+ * css/WebKitCSSKeyframesRule.h:
+ * css/WebKitCSSRegionRule.h:
+ * inspector/InspectorCSSAgent.cpp:
+ (WebCore::InspectorCSSAgent::asCSSStyleRule):
+ (WebCore::InspectorCSSAgent::collectStyleSheets):
+ (WebCore::InspectorCSSAgent::buildArrayForRuleList):
+ * inspector/InspectorStyleSheet.cpp:
+ (WebCore::asCSSRuleList):
+ (WebCore::fillMediaListChain):
+ (WebCore::InspectorStyleSheet::addRule):
+ (WebCore::InspectorStyleSheet::collectFlatRules):
+ * page/PageSerializer.cpp:
+ (WebCore::PageSerializer::serializeCSSStyleSheet):
+
2014-10-02 Dan Bernstein <[email protected]>
<rdar://problem/18531395> REGRESSION (r173272): Crash in ResourceResponse::platformSuggestedFilename() when called on the null response
Modified: trunk/Source/WebCore/css/CSSFontFaceRule.h (174252 => 174253)
--- trunk/Source/WebCore/css/CSSFontFaceRule.h 2014-10-03 00:37:47 UTC (rev 174252)
+++ trunk/Source/WebCore/css/CSSFontFaceRule.h 2014-10-03 01:40:12 UTC (rev 174253)
@@ -51,4 +51,6 @@
} // namespace WebCore
+SPECIALIZE_TYPE_TRAITS_CSS_RULE(CSSFontFaceRule, CSSRule::FONT_FACE_RULE)
+
#endif // CSSFontFaceRule_h
Modified: trunk/Source/WebCore/css/CSSImportRule.h (174252 => 174253)
--- trunk/Source/WebCore/css/CSSImportRule.h 2014-10-03 00:37:47 UTC (rev 174252)
+++ trunk/Source/WebCore/css/CSSImportRule.h 2014-10-03 01:40:12 UTC (rev 174253)
@@ -53,8 +53,8 @@
mutable RefPtr<CSSStyleSheet> m_styleSheetCSSOMWrapper;
};
-CSS_RULE_TYPE_CASTS(CSSImportRule, CSSRule::IMPORT_RULE)
-
} // namespace WebCore
+SPECIALIZE_TYPE_TRAITS_CSS_RULE(CSSImportRule, CSSRule::IMPORT_RULE)
+
#endif // CSSImportRule_h
Modified: trunk/Source/WebCore/css/CSSMediaRule.h (174252 => 174253)
--- trunk/Source/WebCore/css/CSSMediaRule.h 2014-10-03 00:37:47 UTC (rev 174252)
+++ trunk/Source/WebCore/css/CSSMediaRule.h 2014-10-03 01:40:12 UTC (rev 174253)
@@ -50,8 +50,8 @@
mutable RefPtr<MediaList> m_mediaCSSOMWrapper;
};
-CSS_RULE_TYPE_CASTS(CSSMediaRule, CSSRule::MEDIA_RULE)
-
} // namespace WebCore
+SPECIALIZE_TYPE_TRAITS_CSS_RULE(CSSMediaRule, CSSRule::MEDIA_RULE)
+
#endif // CSSMediaRule_h
Modified: trunk/Source/WebCore/css/CSSRule.h (174252 => 174253)
--- trunk/Source/WebCore/css/CSSRule.h 2014-10-03 00:37:47 UTC (rev 174252)
+++ trunk/Source/WebCore/css/CSSRule.h 2014-10-03 01:40:12 UTC (rev 174253)
@@ -24,6 +24,7 @@
#define CSSRule_h
#include <wtf/RefCounted.h>
+#include <wtf/TypeCasts.h>
#include <wtf/text/WTFString.h>
namespace WebCore {
@@ -112,9 +113,11 @@
};
};
-#define CSS_RULE_TYPE_CASTS(ToValueTypeName, predicate) \
- TYPE_CASTS_BASE(ToValueTypeName, CSSRule, rule, rule->type() == predicate, rule.type() == predicate)
-
} // namespace WebCore
+#define SPECIALIZE_TYPE_TRAITS_CSS_RULE(ToValueTypeName, predicate) \
+SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::ToValueTypeName) \
+ static bool isType(const WebCore::CSSRule& rule) { return rule.type() == WebCore::predicate; } \
+SPECIALIZE_TYPE_TRAITS_END()
+
#endif // CSSRule_h
Modified: trunk/Source/WebCore/css/CSSStyleRule.h (174252 => 174253)
--- trunk/Source/WebCore/css/CSSStyleRule.h 2014-10-03 00:37:47 UTC (rev 174252)
+++ trunk/Source/WebCore/css/CSSStyleRule.h 2014-10-03 01:40:12 UTC (rev 174253)
@@ -57,8 +57,8 @@
RefPtr<StyleRuleCSSStyleDeclaration> m_propertiesCSSOMWrapper;
};
-CSS_RULE_TYPE_CASTS(CSSStyleRule, CSSRule::STYLE_RULE)
-
} // namespace WebCore
+SPECIALIZE_TYPE_TRAITS_CSS_RULE(CSSStyleRule, CSSRule::STYLE_RULE)
+
#endif // CSSStyleRule_h
Modified: trunk/Source/WebCore/css/CSSSupportsRule.h (174252 => 174253)
--- trunk/Source/WebCore/css/CSSSupportsRule.h 2014-10-03 00:37:47 UTC (rev 174252)
+++ trunk/Source/WebCore/css/CSSSupportsRule.h 2014-10-03 01:40:12 UTC (rev 174253)
@@ -56,10 +56,10 @@
CSSSupportsRule(StyleRuleSupports*, CSSStyleSheet*);
};
-CSS_RULE_TYPE_CASTS(CSSSupportsRule, CSSRule::SUPPORTS_RULE)
-
} // namespace WebCore
+SPECIALIZE_TYPE_TRAITS_CSS_RULE(CSSSupportsRule, CSSRule::SUPPORTS_RULE)
+
#endif // ENABLE(CSS3_CONDITIONAL_RULES)
#endif // CSSSupportsRule_h
Modified: trunk/Source/WebCore/css/InspectorCSSOMWrappers.cpp (174252 => 174253)
--- trunk/Source/WebCore/css/InspectorCSSOMWrappers.cpp 2014-10-03 00:37:47 UTC (rev 174252)
+++ trunk/Source/WebCore/css/InspectorCSSOMWrappers.cpp 2014-10-03 01:40:12 UTC (rev 174253)
@@ -58,23 +58,23 @@
CSSRule* cssRule = listType->item(i);
switch (cssRule->type()) {
case CSSRule::IMPORT_RULE:
- collect(toCSSImportRule(cssRule)->styleSheet());
+ collect(downcast<CSSImportRule>(*cssRule).styleSheet());
break;
case CSSRule::MEDIA_RULE:
- collect(toCSSMediaRule(cssRule));
+ collect(downcast<CSSMediaRule>(cssRule));
break;
#if ENABLE(CSS3_CONDITIONAL_RULES)
case CSSRule::SUPPORTS_RULE:
- collect(toCSSSupportsRule(cssRule));
+ collect(downcast<CSSSupportsRule>(cssRule));
break;
#endif
#if ENABLE(CSS_REGIONS)
case CSSRule::WEBKIT_REGION_RULE:
- collect(toWebKitCSSRegionRule(cssRule));
+ collect(downcast<WebKitCSSRegionRule>(cssRule));
break;
#endif
case CSSRule::STYLE_RULE:
- m_styleRuleToCSSOMWrapperMap.add(toCSSStyleRule(cssRule)->styleRule(), toCSSStyleRule(cssRule));
+ m_styleRuleToCSSOMWrapperMap.add(downcast<CSSStyleRule>(*cssRule).styleRule(), downcast<CSSStyleRule>(cssRule));
break;
default:
break;
Modified: trunk/Source/WebCore/css/WebKitCSSKeyframesRule.h (174252 => 174253)
--- trunk/Source/WebCore/css/WebKitCSSKeyframesRule.h 2014-10-03 00:37:47 UTC (rev 174252)
+++ trunk/Source/WebCore/css/WebKitCSSKeyframesRule.h 2014-10-03 01:40:12 UTC (rev 174253)
@@ -99,4 +99,6 @@
} // namespace WebCore
+SPECIALIZE_TYPE_TRAITS_CSS_RULE(WebKitCSSKeyframesRule, CSSRule::WEBKIT_KEYFRAMES_RULE)
+
#endif // WebKitCSSKeyframesRule_h
Modified: trunk/Source/WebCore/css/WebKitCSSRegionRule.h (174252 => 174253)
--- trunk/Source/WebCore/css/WebKitCSSRegionRule.h 2014-10-03 00:37:47 UTC (rev 174252)
+++ trunk/Source/WebCore/css/WebKitCSSRegionRule.h 2014-10-03 01:40:12 UTC (rev 174253)
@@ -50,9 +50,9 @@
WebKitCSSRegionRule(StyleRuleRegion*, CSSStyleSheet* parent);
};
-CSS_RULE_TYPE_CASTS(WebKitCSSRegionRule, CSSRule::WEBKIT_REGION_RULE)
+} // namespace WebCore
-}
+SPECIALIZE_TYPE_TRAITS_CSS_RULE(WebKitCSSRegionRule, CSSRule::WEBKIT_REGION_RULE)
#endif // ENABLE(CSS_REGIONS)
Modified: trunk/Source/WebCore/inspector/InspectorCSSAgent.cpp (174252 => 174253)
--- trunk/Source/WebCore/inspector/InspectorCSSAgent.cpp 2014-10-03 00:37:47 UTC (rev 174252)
+++ trunk/Source/WebCore/inspector/InspectorCSSAgent.cpp 2014-10-03 01:40:12 UTC (rev 174253)
@@ -427,11 +427,11 @@
};
// static
-CSSStyleRule* InspectorCSSAgent::asCSSStyleRule(CSSRule* rule)
+CSSStyleRule* InspectorCSSAgent::asCSSStyleRule(CSSRule& rule)
{
- if (rule->type() != CSSRule::STYLE_RULE)
+ if (!is<CSSStyleRule>(rule))
return nullptr;
- return toCSSStyleRule(rule);
+ return downcast<CSSStyleRule>(&rule);
}
InspectorCSSAgent::InspectorCSSAgent(InstrumentingAgents* instrumentingAgents, InspectorDOMAgent* domAgent)
@@ -918,9 +918,8 @@
result->addItem(inspectorStyleSheet->buildObjectForStyleSheetInfo());
for (unsigned i = 0, size = styleSheet->length(); i < size; ++i) {
CSSRule* rule = styleSheet->item(i);
- if (rule->type() == CSSRule::IMPORT_RULE) {
- CSSStyleSheet* importedStyleSheet = toCSSImportRule(rule)->styleSheet();
- if (importedStyleSheet)
+ if (is<CSSImportRule>(*rule)) {
+ if (CSSStyleSheet* importedStyleSheet = downcast<CSSImportRule>(*rule).styleSheet())
collectStyleSheets(importedStyleSheet, result);
}
}
@@ -1046,7 +1045,7 @@
return result.release();
for (unsigned i = 0, size = ruleList->length(); i < size; ++i) {
- CSSStyleRule* rule = asCSSStyleRule(ruleList->item(i));
+ CSSStyleRule* rule = asCSSStyleRule(*ruleList->item(i));
RefPtr<Inspector::Protocol::CSS::CSSRule> ruleObject = buildObjectForRule(rule);
if (!ruleObject)
continue;
Modified: trunk/Source/WebCore/inspector/InspectorCSSAgent.h (174252 => 174253)
--- trunk/Source/WebCore/inspector/InspectorCSSAgent.h 2014-10-03 00:37:47 UTC (rev 174252)
+++ trunk/Source/WebCore/inspector/InspectorCSSAgent.h 2014-10-03 01:40:12 UTC (rev 174253)
@@ -92,7 +92,7 @@
InspectorCSSAgent(InstrumentingAgents*, InspectorDOMAgent*);
~InspectorCSSAgent();
- static CSSStyleRule* asCSSStyleRule(CSSRule*);
+ static CSSStyleRule* asCSSStyleRule(CSSRule&);
bool forcePseudoState(Element*, CSSSelector::PseudoClassType);
virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::InspectorBackendDispatcher*) override;
Modified: trunk/Source/WebCore/inspector/InspectorStyleSheet.cpp (174252 => 174253)
--- trunk/Source/WebCore/inspector/InspectorStyleSheet.cpp 2014-10-03 00:37:47 UTC (rev 174252)
+++ trunk/Source/WebCore/inspector/InspectorStyleSheet.cpp 2014-10-03 01:40:12 UTC (rev 174253)
@@ -214,15 +214,15 @@
if (!rule)
return nullptr;
- if (rule->type() == CSSRule::MEDIA_RULE)
- return &toCSSMediaRule(rule)->cssRules();
+ if (is<CSSMediaRule>(*rule))
+ return &downcast<CSSMediaRule>(*rule).cssRules();
- if (rule->type() == CSSRule::WEBKIT_KEYFRAMES_RULE)
- return &static_cast<WebKitCSSKeyframesRule*>(rule)->cssRules();
+ if (is<WebKitCSSKeyframesRule>(*rule))
+ return &downcast<WebKitCSSKeyframesRule>(*rule).cssRules();
#if ENABLE(CSS3_CONDITIONAL_RULES)
- if (rule->type() == CSSRule::SUPPORTS_RULE)
- return &toCSSSupportsRule(rule)->cssRules();
+ if (is<CSSSupportsRule>(*rule))
+ return &downcast<CSSSupportsRule>(*rule).cssRules();
#endif
return nullptr;
@@ -236,14 +236,14 @@
while (parentRule) {
CSSStyleSheet* parentStyleSheet = nullptr;
bool isMediaRule = true;
- if (parentRule->type() == CSSRule::MEDIA_RULE) {
- CSSMediaRule* mediaRule = toCSSMediaRule(parentRule);
- mediaList = mediaRule->media();
- parentStyleSheet = mediaRule->parentStyleSheet();
- } else if (parentRule->type() == CSSRule::IMPORT_RULE) {
- CSSImportRule* importRule = toCSSImportRule(parentRule);
- mediaList = &importRule->media();
- parentStyleSheet = importRule->parentStyleSheet();
+ if (is<CSSMediaRule>(*parentRule)) {
+ CSSMediaRule& mediaRule = downcast<CSSMediaRule>(*parentRule);
+ mediaList = mediaRule.media();
+ parentStyleSheet = mediaRule.parentStyleSheet();
+ } else if (is<CSSImportRule>(*parentRule)) {
+ CSSImportRule& importRule = downcast<CSSImportRule>(*parentRule);
+ mediaList = &importRule.media();
+ parentStyleSheet = importRule.parentStyleSheet();
isMediaRule = false;
} else
mediaList = nullptr;
@@ -892,7 +892,7 @@
CSSRule* rule = m_pageStyleSheet->item(lastRuleIndex);
ASSERT(rule);
- CSSStyleRule* styleRule = InspectorCSSAgent::asCSSStyleRule(rule);
+ CSSStyleRule* styleRule = InspectorCSSAgent::asCSSStyleRule(*rule);
if (!styleRule) {
// What we just added has to be a CSSStyleRule - we cannot handle other types of rules yet.
// If it is not a style rule, pretend we never touched the stylesheet.
@@ -1421,7 +1421,7 @@
for (unsigned i = 0, size = ruleList->length(); i < size; ++i) {
CSSRule* rule = ruleList->item(i);
- CSSStyleRule* styleRule = InspectorCSSAgent::asCSSStyleRule(rule);
+ CSSStyleRule* styleRule = InspectorCSSAgent::asCSSStyleRule(*rule);
if (styleRule)
result->append(styleRule);
else {
Modified: trunk/Source/WebCore/page/PageSerializer.cpp (174252 => 174253)
--- trunk/Source/WebCore/page/PageSerializer.cpp 2014-10-03 00:37:47 UTC (rev 174252)
+++ trunk/Source/WebCore/page/PageSerializer.cpp 2014-10-03 01:40:12 UTC (rev 174253)
@@ -31,6 +31,7 @@
#include "config.h"
#include "PageSerializer.h"
+#include "CSSFontFaceRule.h"
#include "CSSImageValue.h"
#include "CSSImportRule.h"
#include "CSSStyleRule.h"
@@ -265,17 +266,17 @@
}
Document* document = styleSheet->ownerDocument();
// Some rules have resources associated with them that we need to retrieve.
- if (rule->type() == CSSRule::IMPORT_RULE) {
- CSSImportRule* importRule = toCSSImportRule(rule);
- URL importURL = document->completeURL(importRule->href());
+ if (is<CSSImportRule>(*rule)) {
+ CSSImportRule& importRule = downcast<CSSImportRule>(*rule);
+ URL importURL = document->completeURL(importRule.href());
if (m_resourceURLs.contains(importURL))
continue;
- serializeCSSStyleSheet(importRule->styleSheet(), importURL);
- } else if (rule->type() == CSSRule::FONT_FACE_RULE) {
+ serializeCSSStyleSheet(importRule.styleSheet(), importURL);
+ } else if (is<CSSFontFaceRule>(*rule)) {
// FIXME: Add support for font face rule. It is not clear to me at this point if the actual otf/eot file can
// be retrieved from the CSSFontFaceRule object.
- } else if (rule->type() == CSSRule::STYLE_RULE)
- retrieveResourcesForRule(toCSSStyleRule(rule)->styleRule(), document);
+ } else if (is<CSSStyleRule>(*rule))
+ retrieveResourcesForRule(downcast<CSSStyleRule>(*rule).styleRule(), document);
}
if (url.isValid() && !m_resourceURLs.contains(url)) {