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

Side by Side Diff: WebCore/inspector/InspectorStyleSheet.cpp

Issue 6205007: Merge 74637 - 2010-12-24 Yury Semikhatsky <yurys@chromium.org>... (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/597/
Patch Set: Created 9 years, 11 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 | « WebCore/inspector/InspectorStyleSheet.h ('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 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 case CSSRule::PAGE_RULE: 124 case CSSRule::PAGE_RULE:
125 default: 125 default:
126 return 0; 126 return 0;
127 } 127 }
128 128
129 return result.release(); 129 return result.release();
130 } 130 }
131 return 0; 131 return 0;
132 } 132 }
133 133
134 PassRefPtr<InspectorStyle> InspectorStyle::create(const InspectorCSSId& styleId, PassRefPtr<CSSStyleDeclaration> style, InspectorStyleSheet* parentStyleSheet)
135 {
136 return adoptRef(new InspectorStyle(styleId, style, parentStyleSheet));
137 }
138
139 InspectorStyle::InspectorStyle(const InspectorCSSId& styleId, PassRefPtr<CSSStyl eDeclaration> style, InspectorStyleSheet* parentStyleSheet)
140 : m_styleId(styleId)
141 , m_style(style)
142 , m_parentStyleSheet(parentStyleSheet)
143 {
144 ASSERT(m_style);
145 }
146
134 PassRefPtr<InspectorObject> InspectorStyle::buildObjectForStyle() const 147 PassRefPtr<InspectorObject> InspectorStyle::buildObjectForStyle() const
135 { 148 {
136 RefPtr<InspectorObject> result = InspectorObject::create(); 149 RefPtr<InspectorObject> result = InspectorObject::create();
137 if (!m_styleId.isEmpty()) 150 if (!m_styleId.isEmpty())
138 result->setValue("styleId", m_styleId.asInspectorValue()); 151 result->setValue("styleId", m_styleId.asInspectorValue());
139 152
140 RefPtr<InspectorObject> propertiesObject = InspectorObject::create(); 153 RefPtr<InspectorObject> propertiesObject = InspectorObject::create();
141 propertiesObject->setString("width", m_style->getPropertyValue("width")); 154 propertiesObject->setString("width", m_style->getPropertyValue("width"));
142 propertiesObject->setString("height", m_style->getPropertyValue("height")); 155 propertiesObject->setString("height", m_style->getPropertyValue("height"));
143 156
144 RefPtr<CSSRuleSourceData> sourceData = m_parentStyleSheet ? m_parentStyleShe et->ruleSourceDataFor(m_style) : 0; 157 RefPtr<CSSRuleSourceData> sourceData = m_parentStyleSheet ? m_parentStyleShe et->ruleSourceDataFor(m_style.get()) : 0;
145 if (sourceData) { 158 if (sourceData) {
146 propertiesObject->setNumber("startOffset", sourceData->styleSourceData-> styleBodyRange.start); 159 propertiesObject->setNumber("startOffset", sourceData->styleSourceData-> styleBodyRange.start);
147 propertiesObject->setNumber("endOffset", sourceData->styleSourceData->st yleBodyRange.end); 160 propertiesObject->setNumber("endOffset", sourceData->styleSourceData->st yleBodyRange.end);
148 } 161 }
149 result->setObject("properties", propertiesObject); 162 result->setObject("properties", propertiesObject);
150 163
151 populateObjectWithStyleProperties(result.get()); 164 populateObjectWithStyleProperties(result.get());
152 165
153 return result.release(); 166 return result.release();
154 } 167 }
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 } else { 221 } else {
209 // Patch disabled property text. 222 // Patch disabled property text.
210 m_disabledProperties.at(disabledIndex).rawText = propertyText; 223 m_disabledProperties.at(disabledIndex).rawText = propertyText;
211 } 224 }
212 225
213 // We should not shift subsequent disabled properties when altering a disabled property. 226 // We should not shift subsequent disabled properties when altering a disabled property.
214 return true; 227 return true;
215 } 228 }
216 } else { 229 } else {
217 // Insert at index. 230 // Insert at index.
218 RefPtr<CSSRuleSourceData> sourceData = m_parentStyleSheet->ruleSourceDat aFor(m_style); 231 RefPtr<CSSRuleSourceData> sourceData = m_parentStyleSheet->ruleSourceDat aFor(m_style.get());
219 if (!sourceData) 232 if (!sourceData)
220 return false; 233 return false;
221 String text; 234 String text;
222 bool success = styleText(&text); 235 bool success = styleText(&text);
223 if (!success) 236 if (!success)
224 return false; 237 return false;
225 propertyLengthDelta = propertyText.length(); 238 propertyLengthDelta = propertyText.length();
226 239
227 bool insertLast = true; 240 bool insertLast = true;
228 if (index < allProperties.size()) { 241 if (index < allProperties.size()) {
(...skipping 19 matching lines...) Expand all
248 // the last property has no trailing ";". 261 // the last property has no trailing ";".
249 textToSet.insert("; ", 0); 262 textToSet.insert("; ", 0);
250 } else if (!isHTMLSpace(characters[propertyStart - 1])) { 263 } else if (!isHTMLSpace(characters[propertyStart - 1])) {
251 // Prepend a " " if the last declaration character is not an HTML space. 264 // Prepend a " " if the last declaration character is not an HTML space.
252 textToSet.insert(" ", 0); 265 textToSet.insert(" ", 0);
253 } 266 }
254 } 267 }
255 } 268 }
256 269
257 text.insert(textToSet, propertyStart); 270 text.insert(textToSet, propertyStart);
258 m_parentStyleSheet->setStyleText(m_style, text); 271 m_parentStyleSheet->setStyleText(m_style.get(), text);
259 } 272 }
260 273
261 // Recompute subsequent disabled property ranges if acting on a non-disabled property. 274 // Recompute subsequent disabled property ranges if acting on a non-disabled property.
262 shiftDisabledProperties(disabledIndexByOrdinal(index, true, allProperties), propertyLengthDelta); 275 shiftDisabledProperties(disabledIndexByOrdinal(index, true, allProperties), propertyLengthDelta);
263 276
264 return true; 277 return true;
265 } 278 }
266 279
267 bool InspectorStyle::toggleProperty(unsigned index, bool disable) 280 bool InspectorStyle::toggleProperty(unsigned index, bool disable)
268 { 281 {
269 ASSERT(m_parentStyleSheet); 282 ASSERT(m_parentStyleSheet);
270 if (!m_parentStyleSheet->ensureParsedDataReady()) 283 if (!m_parentStyleSheet->ensureParsedDataReady())
271 return false; // Can toggle only source-based properties. 284 return false; // Can toggle only source-based properties.
272 RefPtr<CSSRuleSourceData> sourceData = m_parentStyleSheet->ruleSourceDataFor (m_style); 285 RefPtr<CSSRuleSourceData> sourceData = m_parentStyleSheet->ruleSourceDataFor (m_style.get());
273 if (!sourceData) 286 if (!sourceData)
274 return false; // No source data for the style. 287 return false; // No source data for the style.
275 288
276 Vector<InspectorStyleProperty> allProperties; 289 Vector<InspectorStyleProperty> allProperties;
277 populateAllProperties(&allProperties); 290 populateAllProperties(&allProperties);
278 if (index >= allProperties.size()) 291 if (index >= allProperties.size())
279 return false; // Outside of property range. 292 return false; // Outside of property range.
280 293
281 InspectorStyleProperty& property = allProperties.at(index); 294 InspectorStyleProperty& property = allProperties.at(index);
282 if (property.disabled == disable) 295 if (property.disabled == disable)
(...skipping 20 matching lines...) Expand all
303 ++disabledIndex; 316 ++disabledIndex;
304 } 317 }
305 } 318 }
306 319
307 return UINT_MAX; 320 return UINT_MAX;
308 } 321 }
309 322
310 bool InspectorStyle::styleText(String* result) const 323 bool InspectorStyle::styleText(String* result) const
311 { 324 {
312 // Precondition: m_parentStyleSheet->ensureParsedDataReady() has been called successfully. 325 // Precondition: m_parentStyleSheet->ensureParsedDataReady() has been called successfully.
313 RefPtr<CSSRuleSourceData> sourceData = m_parentStyleSheet->ruleSourceDataFor (m_style); 326 RefPtr<CSSRuleSourceData> sourceData = m_parentStyleSheet->ruleSourceDataFor (m_style.get());
314 if (!sourceData) 327 if (!sourceData)
315 return false; 328 return false;
316 329
317 String styleSheetText; 330 String styleSheetText;
318 bool success = m_parentStyleSheet->text(&styleSheetText); 331 bool success = m_parentStyleSheet->text(&styleSheetText);
319 if (!success) 332 if (!success)
320 return false; 333 return false;
321 334
322 SourceRange& bodyRange = sourceData->styleSourceData->styleBodyRange; 335 SourceRange& bodyRange = sourceData->styleSourceData->styleBodyRange;
323 *result = styleSheetText.substring(bodyRange.start, bodyRange.end - bodyRang e.start); 336 *result = styleSheetText.substring(bodyRange.start, bodyRange.end - bodyRang e.start);
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 bool InspectorStyle::populateAllProperties(Vector<InspectorStyleProperty>* resul t) const 385 bool InspectorStyle::populateAllProperties(Vector<InspectorStyleProperty>* resul t) const
373 { 386 {
374 HashSet<String> foundShorthands; 387 HashSet<String> foundShorthands;
375 HashSet<String> sourcePropertyNames; 388 HashSet<String> sourcePropertyNames;
376 unsigned disabledIndex = 0; 389 unsigned disabledIndex = 0;
377 unsigned disabledLength = m_disabledProperties.size(); 390 unsigned disabledLength = m_disabledProperties.size();
378 InspectorStyleProperty disabledProperty; 391 InspectorStyleProperty disabledProperty;
379 if (disabledIndex < disabledLength) 392 if (disabledIndex < disabledLength)
380 disabledProperty = m_disabledProperties.at(disabledIndex); 393 disabledProperty = m_disabledProperties.at(disabledIndex);
381 394
382 RefPtr<CSSRuleSourceData> sourceData = (m_parentStyleSheet && m_parentStyleS heet->ensureParsedDataReady()) ? m_parentStyleSheet->ruleSourceDataFor(m_style) : 0; 395 RefPtr<CSSRuleSourceData> sourceData = (m_parentStyleSheet && m_parentStyleS heet->ensureParsedDataReady()) ? m_parentStyleSheet->ruleSourceDataFor(m_style.g et()) : 0;
383 Vector<CSSPropertySourceData>* sourcePropertyData = sourceData ? &(sourceDat a->styleSourceData->propertyData) : 0; 396 Vector<CSSPropertySourceData>* sourcePropertyData = sourceData ? &(sourceDat a->styleSourceData->propertyData) : 0;
384 if (sourcePropertyData) { 397 if (sourcePropertyData) {
385 String styleDeclaration; 398 String styleDeclaration;
386 bool isStyleTextKnown = styleText(&styleDeclaration); 399 bool isStyleTextKnown = styleText(&styleDeclaration);
387 ASSERT_UNUSED(isStyleTextKnown, isStyleTextKnown); 400 ASSERT_UNUSED(isStyleTextKnown, isStyleTextKnown);
388 for (Vector<CSSPropertySourceData>::const_iterator it = sourcePropertyDa ta->begin(); it != sourcePropertyData->end(); ++it) { 401 for (Vector<CSSPropertySourceData>::const_iterator it = sourcePropertyDa ta->begin(); it != sourcePropertyData->end(); ++it) {
389 while (disabledIndex < disabledLength && disabledProperty.sourceData .range.start <= it->range.start) { 402 while (disabledIndex < disabledLength && disabledProperty.sourceData .range.start <= it->range.start) {
390 result->append(disabledProperty); 403 result->append(disabledProperty);
391 if (++disabledIndex < disabledLength) 404 if (++disabledIndex < disabledLength)
392 disabledProperty = m_disabledProperties.at(disabledIndex); 405 disabledProperty = m_disabledProperties.at(disabledIndex);
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
499 512
500 bool InspectorStyle::replacePropertyInStyleText(const InspectorStyleProperty& pr operty, const String& newText) 513 bool InspectorStyle::replacePropertyInStyleText(const InspectorStyleProperty& pr operty, const String& newText)
501 { 514 {
502 // Precondition: m_parentStyleSheet->ensureParsedDataReady() has been called successfully. 515 // Precondition: m_parentStyleSheet->ensureParsedDataReady() has been called successfully.
503 String text; 516 String text;
504 bool success = styleText(&text); 517 bool success = styleText(&text);
505 if (!success) 518 if (!success)
506 return false; 519 return false;
507 const SourceRange& range = property.sourceData.range; 520 const SourceRange& range = property.sourceData.range;
508 text.replace(range.start, range.end - range.start, newText); 521 text.replace(range.start, range.end - range.start, newText);
509 success = m_parentStyleSheet->setStyleText(m_style, text); 522 success = m_parentStyleSheet->setStyleText(m_style.get(), text);
510 return success; 523 return success;
511 } 524 }
512 525
513 String InspectorStyle::shorthandValue(const String& shorthandProperty) const 526 String InspectorStyle::shorthandValue(const String& shorthandProperty) const
514 { 527 {
515 String value = m_style->getPropertyValue(shorthandProperty); 528 String value = m_style->getPropertyValue(shorthandProperty);
516 if (value.isEmpty()) { 529 if (value.isEmpty()) {
517 for (unsigned i = 0; i < m_style->length(); ++i) { 530 for (unsigned i = 0; i < m_style->length(); ++i) {
518 String individualProperty = m_style->item(i); 531 String individualProperty = m_style->item(i);
519 if (m_style->getPropertyShorthand(individualProperty) != shorthandPr operty) 532 if (m_style->getPropertyShorthand(individualProperty) != shorthandPr operty)
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
554 String individualProperty = m_style->item(i); 567 String individualProperty = m_style->item(i);
555 if (foundProperties.contains(individualProperty) || m_style->getProperty Shorthand(individualProperty) != shorthandProperty) 568 if (foundProperties.contains(individualProperty) || m_style->getProperty Shorthand(individualProperty) != shorthandProperty)
556 continue; 569 continue;
557 570
558 foundProperties.add(individualProperty); 571 foundProperties.add(individualProperty);
559 properties.append(individualProperty); 572 properties.append(individualProperty);
560 } 573 }
561 return properties; 574 return properties;
562 } 575 }
563 576
564 InspectorStyleSheet::InspectorStyleSheet(const String& id, CSSStyleSheet* pageSt yleSheet, const String& origin, const String& documentURL) 577 PassRefPtr<InspectorStyleSheet> InspectorStyleSheet::create(const String& id, Pa ssRefPtr<CSSStyleSheet> pageStyleSheet, const String& origin, const String& docu mentURL)
578 {
579 return adoptRef(new InspectorStyleSheet(id, pageStyleSheet, origin, document URL));
580 }
581
582 InspectorStyleSheet::InspectorStyleSheet(const String& id, PassRefPtr<CSSStyleSh eet> pageStyleSheet, const String& origin, const String& documentURL)
565 : m_id(id) 583 : m_id(id)
566 , m_pageStyleSheet(pageStyleSheet) 584 , m_pageStyleSheet(pageStyleSheet)
567 , m_origin(origin) 585 , m_origin(origin)
568 , m_documentURL(documentURL) 586 , m_documentURL(documentURL)
569 , m_isRevalidating(false) 587 , m_isRevalidating(false)
570 { 588 {
571 m_parsedStyleSheet = new ParsedStyleSheet(); 589 m_parsedStyleSheet = new ParsedStyleSheet();
572 } 590 }
573 591
574 InspectorStyleSheet::~InspectorStyleSheet() 592 InspectorStyleSheet::~InspectorStyleSheet()
(...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after
1083 if (styleRule) 1101 if (styleRule)
1084 result->append(styleRule); 1102 result->append(styleRule);
1085 else { 1103 else {
1086 RefPtr<CSSRuleList> childRuleList = asCSSRuleList(rule); 1104 RefPtr<CSSRuleList> childRuleList = asCSSRuleList(rule);
1087 if (childRuleList) 1105 if (childRuleList)
1088 collectFlatRules(childRuleList, result); 1106 collectFlatRules(childRuleList, result);
1089 } 1107 }
1090 } 1108 }
1091 } 1109 }
1092 1110
1093 InspectorStyleSheetForInlineStyle::InspectorStyleSheetForInlineStyle(const Strin g& id, Element* element, const String& origin) 1111 PassRefPtr<InspectorStyleSheetForInlineStyle> InspectorStyleSheetForInlineStyle: :create(const String& id, PassRefPtr<Element> element, const String& origin)
1112 {
1113 return adoptRef(new InspectorStyleSheetForInlineStyle(id, element, origin));
1114 }
1115
1116 InspectorStyleSheetForInlineStyle::InspectorStyleSheetForInlineStyle(const Strin g& id, PassRefPtr<Element> element, const String& origin)
1094 : InspectorStyleSheet(id, 0, origin, "") 1117 : InspectorStyleSheet(id, 0, origin, "")
1095 , m_element(element) 1118 , m_element(element)
1096 , m_ruleSourceData(0) 1119 , m_ruleSourceData(0)
1097 { 1120 {
1098 ASSERT(element); 1121 ASSERT(m_element);
1099 m_inspectorStyle = InspectorStyle::create(InspectorCSSId(id, 0), inlineStyle (), this); 1122 m_inspectorStyle = InspectorStyle::create(InspectorCSSId(id, 0), inlineStyle (), this);
1100 } 1123 }
1101 1124
1102 bool InspectorStyleSheetForInlineStyle::text(String* result) const 1125 bool InspectorStyleSheetForInlineStyle::text(String* result) const
1103 { 1126 {
1104 *result = m_element->getAttribute("style"); 1127 *result = m_element->getAttribute("style");
1105 return true; 1128 return true;
1106 } 1129 }
1107 1130
1108 bool InspectorStyleSheetForInlineStyle::setStyleText(CSSStyleDeclaration* style, const String& text) 1131 bool InspectorStyleSheetForInlineStyle::setStyleText(CSSStyleDeclaration* style, const String& text)
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1161 1184
1162 RefPtr<CSSMutableStyleDeclaration> tempDeclaration = CSSMutableStyleDeclarat ion::create(); 1185 RefPtr<CSSMutableStyleDeclaration> tempDeclaration = CSSMutableStyleDeclarat ion::create();
1163 CSSParser p; 1186 CSSParser p;
1164 p.parseDeclaration(tempDeclaration.get(), styleText, result); 1187 p.parseDeclaration(tempDeclaration.get(), styleText, result);
1165 return true; 1188 return true;
1166 } 1189 }
1167 1190
1168 } // namespace WebCore 1191 } // namespace WebCore
1169 1192
1170 #endif // ENABLE(INSPECTOR) 1193 #endif // ENABLE(INSPECTOR)
OLDNEW
« no previous file with comments | « WebCore/inspector/InspectorStyleSheet.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698