Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(70)

Side by Side Diff: Source/core/inspector/InspectorStyleSheet.cpp

Issue 951213004: Make CSSRuleSourceData use the CSSRule Type enum (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Use StyleRule::Type Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Source/core/css/parser/CSSPropertyParser.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010, Google Inc. All rights reserved. 2 * Copyright (C) 2010, Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 , m_commentParser(parserContextForDocument(document)) 78 , m_commentParser(parserContextForDocument(document))
79 , m_propertyRangeStart(UINT_MAX) 79 , m_propertyRangeStart(UINT_MAX)
80 , m_selectorRangeStart(UINT_MAX) 80 , m_selectorRangeStart(UINT_MAX)
81 , m_commentRangeStart(UINT_MAX) 81 , m_commentRangeStart(UINT_MAX)
82 , m_mediaQueryExpValueRangeStart(UINT_MAX) 82 , m_mediaQueryExpValueRangeStart(UINT_MAX)
83 { 83 {
84 ASSERT(m_result); 84 ASSERT(m_result);
85 } 85 }
86 86
87 private: 87 private:
88 virtual void startRuleHeader(CSSRuleSourceData::Type, unsigned) override; 88 virtual void startRuleHeader(StyleRule::Type, unsigned) override;
89 virtual void endRuleHeader(unsigned) override; 89 virtual void endRuleHeader(unsigned) override;
90 virtual void startSelector(unsigned) override; 90 virtual void startSelector(unsigned) override;
91 virtual void endSelector(unsigned) override; 91 virtual void endSelector(unsigned) override;
92 virtual void startRuleBody(unsigned) override; 92 virtual void startRuleBody(unsigned) override;
93 virtual void endRuleBody(unsigned, bool) override; 93 virtual void endRuleBody(unsigned, bool) override;
94 virtual void startProperty(unsigned) override; 94 virtual void startProperty(unsigned) override;
95 virtual void endProperty(bool, bool, unsigned, CSSParserError) override; 95 virtual void endProperty(bool, bool, unsigned, CSSParserError) override;
96 virtual void startComment(unsigned) override; 96 virtual void startComment(unsigned) override;
97 virtual void endComment(unsigned) override; 97 virtual void endComment(unsigned) override;
98 virtual void startMediaQueryExp(unsigned offset) override; 98 virtual void startMediaQueryExp(unsigned offset) override;
(...skipping 13 matching lines...) Expand all
112 RuleSourceDataList m_currentRuleDataStack; 112 RuleSourceDataList m_currentRuleDataStack;
113 RefPtrWillBeMember<CSSRuleSourceData> m_currentRuleData; 113 RefPtrWillBeMember<CSSRuleSourceData> m_currentRuleData;
114 CSSParser m_commentParser; 114 CSSParser m_commentParser;
115 unsigned m_propertyRangeStart; 115 unsigned m_propertyRangeStart;
116 unsigned m_selectorRangeStart; 116 unsigned m_selectorRangeStart;
117 unsigned m_commentRangeStart; 117 unsigned m_commentRangeStart;
118 RefPtrWillBeMember<CSSMediaQuerySourceData> m_currentMediaQueryData; 118 RefPtrWillBeMember<CSSMediaQuerySourceData> m_currentMediaQueryData;
119 unsigned m_mediaQueryExpValueRangeStart; 119 unsigned m_mediaQueryExpValueRangeStart;
120 }; 120 };
121 121
122 void StyleSheetHandler::startRuleHeader(CSSRuleSourceData::Type type, unsigned o ffset) 122 void StyleSheetHandler::startRuleHeader(StyleRule::Type type, unsigned offset)
123 { 123 {
124 // Pop off data for a previous invalid rule. 124 // Pop off data for a previous invalid rule.
125 if (m_currentRuleData) 125 if (m_currentRuleData)
126 m_currentRuleDataStack.removeLast(); 126 m_currentRuleDataStack.removeLast();
127 127
128 RefPtrWillBeRawPtr<CSSRuleSourceData> data = CSSRuleSourceData::create(type) ; 128 RefPtrWillBeRawPtr<CSSRuleSourceData> data = CSSRuleSourceData::create(type) ;
129 data->ruleHeaderRange.start = offset; 129 data->ruleHeaderRange.start = offset;
130 m_currentRuleData = data; 130 m_currentRuleData = data;
131 m_currentRuleDataStack.append(data.release()); 131 m_currentRuleDataStack.append(data.release());
132 } 132 }
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after
424 setSourceData(nullptr); 424 setSourceData(nullptr);
425 } 425 }
426 426
427 void ParsedStyleSheet::flattenSourceData(RuleSourceDataList* dataList) 427 void ParsedStyleSheet::flattenSourceData(RuleSourceDataList* dataList)
428 { 428 {
429 for (size_t i = 0; i < dataList->size(); ++i) { 429 for (size_t i = 0; i < dataList->size(); ++i) {
430 RefPtrWillBeMember<CSSRuleSourceData>& data = dataList->at(i); 430 RefPtrWillBeMember<CSSRuleSourceData>& data = dataList->at(i);
431 431
432 // The m_sourceData->append()'ed types should be exactly the same as in collectFlatRules(). 432 // The m_sourceData->append()'ed types should be exactly the same as in collectFlatRules().
433 switch (data->type) { 433 switch (data->type) {
434 case CSSRuleSourceData::STYLE_RULE: 434 case StyleRule::Style:
435 case CSSRuleSourceData::IMPORT_RULE: 435 case StyleRule::Import:
436 case CSSRuleSourceData::CHARSET_RULE: 436 case StyleRule::Page:
437 case CSSRuleSourceData::PAGE_RULE: 437 case StyleRule::FontFace:
438 case CSSRuleSourceData::FONT_FACE_RULE: 438 case StyleRule::Viewport:
439 case CSSRuleSourceData::VIEWPORT_RULE: 439 case StyleRule::Keyframes:
440 case CSSRuleSourceData::KEYFRAMES_RULE:
441 m_sourceData->append(data); 440 m_sourceData->append(data);
442 break; 441 break;
443 case CSSRuleSourceData::MEDIA_RULE: 442 case StyleRule::Media:
444 case CSSRuleSourceData::SUPPORTS_RULE: 443 case StyleRule::Supports:
445 m_sourceData->append(data); 444 m_sourceData->append(data);
446 flattenSourceData(&data->childRules); 445 flattenSourceData(&data->childRules);
447 break; 446 break;
447 case StyleRule::Unknown:
448 default: 448 default:
449 break; 449 break;
450 } 450 }
451 } 451 }
452 } 452 }
453 453
454 bool ParsedStyleSheet::ensureSourceData() 454 bool ParsedStyleSheet::ensureSourceData()
455 { 455 {
456 if (hasSourceData()) 456 if (hasSourceData())
457 return true; 457 return true;
(...skipping 771 matching lines...) Expand 10 before | Expand all | Expand 10 after
1229 { 1229 {
1230 DEFINE_STATIC_LOCAL(String, bogusPropertyName, ("-webkit-boguz-propertee")); 1230 DEFINE_STATIC_LOCAL(String, bogusPropertyName, ("-webkit-boguz-propertee"));
1231 RuleSourceDataList sourceData; 1231 RuleSourceDataList sourceData;
1232 RefPtrWillBeRawPtr<StyleSheetContents> styleSheetContents = StyleSheetConten ts::create(strictCSSParserContext()); 1232 RefPtrWillBeRawPtr<StyleSheetContents> styleSheetContents = StyleSheetConten ts::create(strictCSSParserContext());
1233 String text = selectorText + " { " + bogusPropertyName + ": none; }"; 1233 String text = selectorText + " { " + bogusPropertyName + ": none; }";
1234 StyleSheetHandler handler(text, ownerDocument(), styleSheetContents.get(), & sourceData); 1234 StyleSheetHandler handler(text, ownerDocument(), styleSheetContents.get(), & sourceData);
1235 CSSParser::parseSheet(parserContextForDocument(ownerDocument()), styleSheetC ontents.get(), text, TextPosition::minimumPosition(), &handler); 1235 CSSParser::parseSheet(parserContextForDocument(ownerDocument()), styleSheetC ontents.get(), text, TextPosition::minimumPosition(), &handler);
1236 1236
1237 // Exactly one rule should be parsed. 1237 // Exactly one rule should be parsed.
1238 unsigned ruleCount = sourceData.size(); 1238 unsigned ruleCount = sourceData.size();
1239 if (ruleCount != 1 || sourceData.at(0)->type != CSSRuleSourceData::STYLE_RUL E) 1239 if (ruleCount != 1 || sourceData.at(0)->type != StyleRule::Style)
1240 return false; 1240 return false;
1241 1241
1242 // Exactly one property should be in style rule. 1242 // Exactly one property should be in style rule.
1243 WillBeHeapVector<CSSPropertySourceData>& propertyData = sourceData.at(0)->st yleSourceData->propertyData; 1243 WillBeHeapVector<CSSPropertySourceData>& propertyData = sourceData.at(0)->st yleSourceData->propertyData;
1244 unsigned propertyCount = propertyData.size(); 1244 unsigned propertyCount = propertyData.size();
1245 if (propertyCount != 1) 1245 if (propertyCount != 1)
1246 return false; 1246 return false;
1247 1247
1248 // Check for the property name. 1248 // Check for the property name.
1249 if (propertyData.at(0).name != bogusPropertyName) 1249 if (propertyData.at(0).name != bogusPropertyName)
1250 return false; 1250 return false;
1251 1251
1252 return true; 1252 return true;
1253 } 1253 }
1254 1254
1255 bool InspectorStyleSheet::verifyMediaText(const String& mediaText) 1255 bool InspectorStyleSheet::verifyMediaText(const String& mediaText)
1256 { 1256 {
1257 DEFINE_STATIC_LOCAL(String, bogusPropertyName, ("-webkit-boguz-propertee")); 1257 DEFINE_STATIC_LOCAL(String, bogusPropertyName, ("-webkit-boguz-propertee"));
1258 RuleSourceDataList sourceData; 1258 RuleSourceDataList sourceData;
1259 RefPtrWillBeRawPtr<StyleSheetContents> styleSheetContents = StyleSheetConten ts::create(strictCSSParserContext()); 1259 RefPtrWillBeRawPtr<StyleSheetContents> styleSheetContents = StyleSheetConten ts::create(strictCSSParserContext());
1260 String text = "@media " + mediaText + " { div { " + bogusPropertyName + ": n one; } }"; 1260 String text = "@media " + mediaText + " { div { " + bogusPropertyName + ": n one; } }";
1261 StyleSheetHandler handler(text, ownerDocument(), styleSheetContents.get(), & sourceData); 1261 StyleSheetHandler handler(text, ownerDocument(), styleSheetContents.get(), & sourceData);
1262 CSSParser::parseSheet(parserContextForDocument(ownerDocument()), styleSheetC ontents.get(), text, TextPosition::minimumPosition(), &handler); 1262 CSSParser::parseSheet(parserContextForDocument(ownerDocument()), styleSheetC ontents.get(), text, TextPosition::minimumPosition(), &handler);
1263 1263
1264 // Exactly one media rule should be parsed. 1264 // Exactly one media rule should be parsed.
1265 unsigned ruleCount = sourceData.size(); 1265 unsigned ruleCount = sourceData.size();
1266 if (ruleCount != 1 || sourceData.at(0)->type != CSSRuleSourceData::MEDIA_RUL E) 1266 if (ruleCount != 1 || sourceData.at(0)->type != StyleRule::Media)
1267 return false; 1267 return false;
1268 1268
1269 // Media rule should have exactly one style rule child. 1269 // Media rule should have exactly one style rule child.
1270 RuleSourceDataList& childSourceData = sourceData.at(0)->childRules; 1270 RuleSourceDataList& childSourceData = sourceData.at(0)->childRules;
1271 ruleCount = childSourceData.size(); 1271 ruleCount = childSourceData.size();
1272 if (ruleCount != 1 || !childSourceData.at(0)->styleSourceData) 1272 if (ruleCount != 1 || !childSourceData.at(0)->styleSourceData)
1273 return false; 1273 return false;
1274 1274
1275 // Exactly one property should be in style rule. 1275 // Exactly one property should be in style rule.
1276 WillBeHeapVector<CSSPropertySourceData>& propertyData = childSourceData.at(0 )->styleSourceData->propertyData; 1276 WillBeHeapVector<CSSPropertySourceData>& propertyData = childSourceData.at(0 )->styleSourceData->propertyData;
(...skipping 661 matching lines...) Expand 10 before | Expand all | Expand 10 after
1938 m_isStyleTextValid = true; 1938 m_isStyleTextValid = true;
1939 } 1939 }
1940 1940
1941 if (m_ruleSourceData) 1941 if (m_ruleSourceData)
1942 return true; 1942 return true;
1943 1943
1944 m_ruleSourceData = getStyleAttributeData(); 1944 m_ruleSourceData = getStyleAttributeData();
1945 1945
1946 bool success = !!m_ruleSourceData; 1946 bool success = !!m_ruleSourceData;
1947 if (!success) { 1947 if (!success) {
1948 m_ruleSourceData = CSSRuleSourceData::create(CSSRuleSourceData::STYLE_RU LE); 1948 m_ruleSourceData = CSSRuleSourceData::create(StyleRule::Style);
1949 return false; 1949 return false;
1950 } 1950 }
1951 1951
1952 return true; 1952 return true;
1953 } 1953 }
1954 1954
1955 PassRefPtrWillBeRawPtr<InspectorStyle> InspectorStyleSheetForInlineStyle::inspec torStyleForId(const InspectorCSSId& id) 1955 PassRefPtrWillBeRawPtr<InspectorStyle> InspectorStyleSheetForInlineStyle::inspec torStyleForId(const InspectorCSSId& id)
1956 { 1956 {
1957 ASSERT_UNUSED(id, !id.ordinal()); 1957 ASSERT_UNUSED(id, !id.ordinal());
1958 return m_inspectorStyle; 1958 return m_inspectorStyle;
1959 } 1959 }
1960 1960
1961 CSSStyleDeclaration* InspectorStyleSheetForInlineStyle::inlineStyle() const 1961 CSSStyleDeclaration* InspectorStyleSheetForInlineStyle::inlineStyle() const
1962 { 1962 {
1963 return m_element->style(); 1963 return m_element->style();
1964 } 1964 }
1965 1965
1966 const String& InspectorStyleSheetForInlineStyle::elementStyleText() const 1966 const String& InspectorStyleSheetForInlineStyle::elementStyleText() const
1967 { 1967 {
1968 return m_element->getAttribute("style").string(); 1968 return m_element->getAttribute("style").string();
1969 } 1969 }
1970 1970
1971 PassRefPtrWillBeRawPtr<CSSRuleSourceData> InspectorStyleSheetForInlineStyle::get StyleAttributeData() const 1971 PassRefPtrWillBeRawPtr<CSSRuleSourceData> InspectorStyleSheetForInlineStyle::get StyleAttributeData() const
1972 { 1972 {
1973 if (!m_element->isStyledElement()) 1973 if (!m_element->isStyledElement())
1974 return nullptr; 1974 return nullptr;
1975 1975
1976 if (m_styleText.isEmpty()) { 1976 if (m_styleText.isEmpty()) {
1977 RefPtrWillBeRawPtr<CSSRuleSourceData> result = CSSRuleSourceData::create (CSSRuleSourceData::STYLE_RULE); 1977 RefPtrWillBeRawPtr<CSSRuleSourceData> result = CSSRuleSourceData::create (StyleRule::Style);
1978 result->ruleBodyRange.start = 0; 1978 result->ruleBodyRange.start = 0;
1979 result->ruleBodyRange.end = 0; 1979 result->ruleBodyRange.end = 0;
1980 return result.release(); 1980 return result.release();
1981 } 1981 }
1982 1982
1983 RefPtrWillBeRawPtr<MutableStylePropertySet> tempDeclaration = MutableStylePr opertySet::create(); 1983 RefPtrWillBeRawPtr<MutableStylePropertySet> tempDeclaration = MutableStylePr opertySet::create();
1984 RuleSourceDataList ruleSourceDataResult; 1984 RuleSourceDataList ruleSourceDataResult;
1985 StyleSheetHandler handler(m_styleText, &m_element->document(), m_element->do cument().elementSheet().contents(), &ruleSourceDataResult); 1985 StyleSheetHandler handler(m_styleText, &m_element->document(), m_element->do cument().elementSheet().contents(), &ruleSourceDataResult);
1986 CSSParser(parserContextForDocument(&m_element->document())).parseDeclaration (tempDeclaration.get(), m_styleText, &handler, m_element->document().elementShee t().contents()); 1986 CSSParser(parserContextForDocument(&m_element->document())).parseDeclaration (tempDeclaration.get(), m_styleText, &handler, m_element->document().elementShee t().contents());
1987 return ruleSourceDataResult.first().release(); 1987 return ruleSourceDataResult.first().release();
1988 } 1988 }
1989 1989
1990 DEFINE_TRACE(InspectorStyleSheetForInlineStyle) 1990 DEFINE_TRACE(InspectorStyleSheetForInlineStyle)
1991 { 1991 {
1992 visitor->trace(m_element); 1992 visitor->trace(m_element);
1993 visitor->trace(m_ruleSourceData); 1993 visitor->trace(m_ruleSourceData);
1994 visitor->trace(m_inspectorStyle); 1994 visitor->trace(m_inspectorStyle);
1995 InspectorStyleSheetBase::trace(visitor); 1995 InspectorStyleSheetBase::trace(visitor);
1996 } 1996 }
1997 1997
1998 } // namespace blink 1998 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/css/parser/CSSPropertyParser.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698