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

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

Issue 203633003: DevTools: cleanup InspectorStyleSheet (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 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 | Annotate | Revision Log
« no previous file with comments | « Source/core/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 870 matching lines...) Expand 10 before | Expand all | Expand 10 after
881 bool success = getText(&sheetText); 881 bool success = getText(&sheetText);
882 if (success) { 882 if (success) {
883 const SourceRange& bodyRange = sourceData->ruleBodyRange; 883 const SourceRange& bodyRange = sourceData->ruleBodyRange;
884 result->setCssText(sheetText.substring(bodyRange.start, bodyRange.en d - bodyRange.start)); 884 result->setCssText(sheetText.substring(bodyRange.start, bodyRange.en d - bodyRange.start));
885 } 885 }
886 } 886 }
887 887
888 return result.release(); 888 return result.release();
889 } 889 }
890 890
891 PassOwnPtr<Vector<unsigned> > InspectorStyleSheetBase::lineEndings()
892 {
893 String text;
894 if (!getText(&text))
895 return PassOwnPtr<Vector<unsigned> >();
896 return WTF::lineEndings(text);
897 }
898
891 PassRefPtr<InspectorStyleSheet> InspectorStyleSheet::create(InspectorPageAgent* pageAgent, InspectorResourceAgent* resourceAgent, const String& id, PassRefPtr<C SSStyleSheet> pageStyleSheet, TypeBuilder::CSS::StyleSheetOrigin::Enum origin, c onst String& documentURL, Listener* listener) 899 PassRefPtr<InspectorStyleSheet> InspectorStyleSheet::create(InspectorPageAgent* pageAgent, InspectorResourceAgent* resourceAgent, const String& id, PassRefPtr<C SSStyleSheet> pageStyleSheet, TypeBuilder::CSS::StyleSheetOrigin::Enum origin, c onst String& documentURL, Listener* listener)
892 { 900 {
893 return adoptRef(new InspectorStyleSheet(pageAgent, resourceAgent, id, pageSt yleSheet, origin, documentURL, listener)); 901 return adoptRef(new InspectorStyleSheet(pageAgent, resourceAgent, id, pageSt yleSheet, origin, documentURL, listener));
894 } 902 }
895 903
896 InspectorStyleSheet::InspectorStyleSheet(InspectorPageAgent* pageAgent, Inspecto rResourceAgent* resourceAgent, const String& id, PassRefPtr<CSSStyleSheet> pageS tyleSheet, TypeBuilder::CSS::StyleSheetOrigin::Enum origin, const String& docume ntURL, Listener* listener) 904 InspectorStyleSheet::InspectorStyleSheet(InspectorPageAgent* pageAgent, Inspecto rResourceAgent* resourceAgent, const String& id, PassRefPtr<CSSStyleSheet> pageS tyleSheet, TypeBuilder::CSS::StyleSheetOrigin::Enum origin, const String& docume ntURL, Listener* listener)
897 : InspectorStyleSheetBase(id, listener) 905 : InspectorStyleSheetBase(id, listener)
898 , m_pageAgent(pageAgent) 906 , m_pageAgent(pageAgent)
899 , m_resourceAgent(resourceAgent) 907 , m_resourceAgent(resourceAgent)
900 , m_pageStyleSheet(pageStyleSheet) 908 , m_pageStyleSheet(pageStyleSheet)
(...skipping 13 matching lines...) Expand all
914 return pageStyleSheet->contents()->baseURL().string(); 922 return pageStyleSheet->contents()->baseURL().string();
915 return emptyString(); 923 return emptyString();
916 } 924 }
917 925
918 String InspectorStyleSheet::finalURL() const 926 String InspectorStyleSheet::finalURL() const
919 { 927 {
920 String url = styleSheetURL(m_pageStyleSheet.get()); 928 String url = styleSheetURL(m_pageStyleSheet.get());
921 return url.isEmpty() ? m_documentURL : url; 929 return url.isEmpty() ? m_documentURL : url;
922 } 930 }
923 931
924 void InspectorStyleSheet::reparseStyleSheet(const String& text) 932 bool InspectorStyleSheet::setText(const String& text, ExceptionState& exceptionS tate)
925 { 933 {
934 m_parsedStyleSheet->setText(text);
935 m_flatRules.clear();
936
926 if (listener()) 937 if (listener())
927 listener()->willReparseStyleSheet(); 938 listener()->willReparseStyleSheet();
928 939
929 { 940 {
930 // Have a separate scope for clearRules() (bug 95324). 941 // Have a separate scope for clearRules() (bug 95324).
931 CSSStyleSheet::RuleMutationScope mutationScope(m_pageStyleSheet.get()); 942 CSSStyleSheet::RuleMutationScope mutationScope(m_pageStyleSheet.get());
932 m_pageStyleSheet->contents()->clearRules(); 943 m_pageStyleSheet->contents()->clearRules();
933 m_pageStyleSheet->clearChildRuleCSSOMWrappers(); 944 m_pageStyleSheet->clearChildRuleCSSOMWrappers();
934 } 945 }
935 { 946 {
936 CSSStyleSheet::RuleMutationScope mutationScope(m_pageStyleSheet.get()); 947 CSSStyleSheet::RuleMutationScope mutationScope(m_pageStyleSheet.get());
937 m_pageStyleSheet->contents()->parseString(text); 948 m_pageStyleSheet->contents()->parseString(text);
938 } 949 }
939 950
940 if (listener()) 951 if (listener())
941 listener()->didReparseStyleSheet(); 952 listener()->didReparseStyleSheet();
942 fireStyleSheetChanged(); 953 fireStyleSheetChanged();
943 m_pageStyleSheet->ownerDocument()->styleResolverChanged(RecalcStyleImmediate ly, FullStyleUpdate); 954 m_pageStyleSheet->ownerDocument()->styleResolverChanged(RecalcStyleImmediate ly, FullStyleUpdate);
944 }
945
946 bool InspectorStyleSheet::setText(const String& text, ExceptionState& exceptionS tate)
947 {
948 m_parsedStyleSheet->setText(text);
949 m_flatRules.clear();
950
951 return true; 955 return true;
952 } 956 }
953 957
954 String InspectorStyleSheet::ruleSelector(const InspectorCSSId& id, ExceptionStat e& exceptionState) 958 String InspectorStyleSheet::ruleSelector(const InspectorCSSId& id, ExceptionStat e& exceptionState)
955 { 959 {
956 CSSStyleRule* rule = ruleForId(id); 960 CSSStyleRule* rule = ruleForId(id);
957 if (!rule) { 961 if (!rule) {
958 exceptionState.throwDOMException(NotFoundError, "No rule was found for t he given ID."); 962 exceptionState.throwDOMException(NotFoundError, "No rule was found for t he given ID.");
959 return ""; 963 return "";
960 } 964 }
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
1026 m_pageStyleSheet->deleteRule(lastRuleIndex, ASSERT_NO_EXCEPTION); 1030 m_pageStyleSheet->deleteRule(lastRuleIndex, ASSERT_NO_EXCEPTION);
1027 exceptionState.throwDOMException(SyntaxError, "The selector '" + selecto r + "' could not be added."); 1031 exceptionState.throwDOMException(SyntaxError, "The selector '" + selecto r + "' could not be added.");
1028 return 0; 1032 return 0;
1029 } 1033 }
1030 1034
1031 if (!styleSheetText.isEmpty()) 1035 if (!styleSheetText.isEmpty())
1032 styleSheetText.append('\n'); 1036 styleSheetText.append('\n');
1033 1037
1034 styleSheetText.append(selector); 1038 styleSheetText.append(selector);
1035 styleSheetText.appendLiteral(" {}"); 1039 styleSheetText.appendLiteral(" {}");
1036 // Using setText() as this operation changes the style sheet rule set. 1040 m_parsedStyleSheet->setText(styleSheetText.toString());
1037 setText(styleSheetText.toString(), ASSERT_NO_EXCEPTION); 1041 m_flatRules.clear();
1038 1042
1039 fireStyleSheetChanged(); 1043 fireStyleSheetChanged();
1040 1044
1041 return styleRule; 1045 return styleRule;
1042 } 1046 }
1043 1047
1044 bool InspectorStyleSheet::deleteRule(const InspectorCSSId& id, ExceptionState& e xceptionState) 1048 bool InspectorStyleSheet::deleteRule(const InspectorCSSId& id, ExceptionState& e xceptionState)
1045 { 1049 {
1046 RefPtrWillBeRawPtr<CSSStyleRule> rule = ruleForId(id); 1050 RefPtrWillBeRawPtr<CSSStyleRule> rule = ruleForId(id);
1047 if (!rule) { 1051 if (!rule) {
(...skipping 13 matching lines...) Expand all
1061 } 1065 }
1062 1066
1063 styleSheet->deleteRule(id.ordinal(), exceptionState); 1067 styleSheet->deleteRule(id.ordinal(), exceptionState);
1064 // |rule| MAY NOT be addressed after this line! 1068 // |rule| MAY NOT be addressed after this line!
1065 1069
1066 if (exceptionState.hadException()) 1070 if (exceptionState.hadException())
1067 return false; 1071 return false;
1068 1072
1069 String sheetText = m_parsedStyleSheet->text(); 1073 String sheetText = m_parsedStyleSheet->text();
1070 sheetText.remove(sourceData->ruleHeaderRange.start, sourceData->ruleBodyRang e.end - sourceData->ruleHeaderRange.start + 1); 1074 sheetText.remove(sourceData->ruleHeaderRange.start, sourceData->ruleBodyRang e.end - sourceData->ruleHeaderRange.start + 1);
1071 setText(sheetText, ASSERT_NO_EXCEPTION); 1075 m_parsedStyleSheet->setText(sheetText);
1076 m_flatRules.clear();
1072 fireStyleSheetChanged(); 1077 fireStyleSheetChanged();
1073 return true; 1078 return true;
1074 } 1079 }
1075 1080
1076 CSSStyleRule* InspectorStyleSheet::ruleForId(const InspectorCSSId& id) const 1081 CSSStyleRule* InspectorStyleSheet::ruleForId(const InspectorCSSId& id) const
1077 { 1082 {
1078 ASSERT(!id.isEmpty()); 1083 ASSERT(!id.isEmpty());
1079 ensureFlatRules(); 1084 ensureFlatRules();
1080 return InspectorCSSAgent::asCSSStyleRule(id.ordinal() >= m_flatRules.size() ? 0 : m_flatRules.at(id.ordinal()).get()); 1085 return InspectorCSSAgent::asCSSStyleRule(id.ordinal() >= m_flatRules.size() ? 0 : m_flatRules.at(id.ordinal()).get());
1081 } 1086 }
(...skipping 20 matching lines...) Expand all
1102 1107
1103 if (hasSourceURL()) 1108 if (hasSourceURL())
1104 result->setHasSourceURL(true); 1109 result->setHasSourceURL(true);
1105 1110
1106 String sourceMapURLValue = sourceMapURL(); 1111 String sourceMapURLValue = sourceMapURL();
1107 if (!sourceMapURLValue.isEmpty()) 1112 if (!sourceMapURLValue.isEmpty())
1108 result->setSourceMapURL(sourceMapURLValue); 1113 result->setSourceMapURL(sourceMapURLValue);
1109 return result.release(); 1114 return result.release();
1110 } 1115 }
1111 1116
1112 PassRefPtr<TypeBuilder::Array<TypeBuilder::CSS::Selector> > InspectorStyleSheet: :selectorsFromSource(const CSSRuleSourceData* sourceData, const String& sheetTex t) const 1117 PassRefPtr<TypeBuilder::Array<TypeBuilder::CSS::Selector> > InspectorStyleSheet: :selectorsFromSource(const CSSRuleSourceData* sourceData, const String& sheetTex t)
1113 { 1118 {
1114 ScriptRegexp comment("/\\*[^]*?\\*/", TextCaseSensitive, MultilineEnabled); 1119 ScriptRegexp comment("/\\*[^]*?\\*/", TextCaseSensitive, MultilineEnabled);
1115 RefPtr<TypeBuilder::Array<TypeBuilder::CSS::Selector> > result = TypeBuilder ::Array<TypeBuilder::CSS::Selector>::create(); 1120 RefPtr<TypeBuilder::Array<TypeBuilder::CSS::Selector> > result = TypeBuilder ::Array<TypeBuilder::CSS::Selector>::create();
1116 const SelectorRangeList& ranges = sourceData->selectorRanges; 1121 const SelectorRangeList& ranges = sourceData->selectorRanges;
1117 for (size_t i = 0, size = ranges.size(); i < size; ++i) { 1122 for (size_t i = 0, size = ranges.size(); i < size; ++i) {
1118 const SourceRange& range = ranges.at(i); 1123 const SourceRange& range = ranges.at(i);
1119 String selector = sheetText.substring(range.start, range.length()); 1124 String selector = sheetText.substring(range.start, range.length());
1120 1125
1121 // We don't want to see any comments in the selector components, only th e meaningful parts. 1126 // We don't want to see any comments in the selector components, only th e meaningful parts.
1122 int matchLength; 1127 int matchLength;
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
1204 return 0; 1209 return 0;
1205 1210
1206 return rule->style(); 1211 return rule->style();
1207 } 1212 }
1208 1213
1209 PassRefPtr<TypeBuilder::CSS::SourceRange> InspectorStyleSheet::ruleHeaderSourceR ange(const CSSRule* rule) 1214 PassRefPtr<TypeBuilder::CSS::SourceRange> InspectorStyleSheet::ruleHeaderSourceR ange(const CSSRule* rule)
1210 { 1215 {
1211 if (!ensureParsedDataReady()) 1216 if (!ensureParsedDataReady())
1212 return nullptr; 1217 return nullptr;
1213 1218
1214 RefPtr<CSSRuleSourceData> sourceData = m_parsedStyleSheet->ruleSourceDataAt( ruleIndexByRule(rule)); 1219 ensureFlatRules();
1215 if (!sourceData) 1220 size_t index = m_flatRules.find(rule);
1221 if (index == kNotFound)
1216 return nullptr; 1222 return nullptr;
1223 RefPtr<CSSRuleSourceData> sourceData = m_parsedStyleSheet->ruleSourceDataAt( static_cast<unsigned>(index));
1217 return buildSourceRangeObject(sourceData->ruleHeaderRange, lineEndings().get ()); 1224 return buildSourceRangeObject(sourceData->ruleHeaderRange, lineEndings().get ());
1218 } 1225 }
1219 1226
1220 PassRefPtr<InspectorStyle> InspectorStyleSheet::inspectorStyleForId(const Inspec torCSSId& id) 1227 PassRefPtr<InspectorStyle> InspectorStyleSheet::inspectorStyleForId(const Inspec torCSSId& id)
1221 { 1228 {
1222 CSSStyleDeclaration* style = styleForId(id); 1229 CSSStyleDeclaration* style = styleForId(id);
1223 if (!style) 1230 if (!style)
1224 return nullptr; 1231 return nullptr;
1225 1232
1226 return InspectorStyle::create(id, style, this); 1233 return InspectorStyle::create(id, style, this);
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
1294 bool deprecated; 1301 bool deprecated;
1295 String commentValue = ContentSearchUtils::findSourceMapURL(styleSheetTex t, ContentSearchUtils::CSSMagicComment, &deprecated); 1302 String commentValue = ContentSearchUtils::findSourceMapURL(styleSheetTex t, ContentSearchUtils::CSSMagicComment, &deprecated);
1296 if (!commentValue.isEmpty()) { 1303 if (!commentValue.isEmpty()) {
1297 // FIXME: add deprecated console message here. 1304 // FIXME: add deprecated console message here.
1298 return commentValue; 1305 return commentValue;
1299 } 1306 }
1300 } 1307 }
1301 return m_pageAgent->resourceSourceMapURL(finalURL()); 1308 return m_pageAgent->resourceSourceMapURL(finalURL());
1302 } 1309 }
1303 1310
1304 InspectorCSSId InspectorStyleSheet::ruleIdByStyle(CSSStyleDeclaration* style) co nst 1311 InspectorCSSId InspectorStyleSheet::styleId(CSSStyleDeclaration* style) const
1305 { 1312 {
1306 unsigned index = ruleIndexByStyle(style); 1313 unsigned index = ruleIndexByStyle(style);
1307 if (index != UINT_MAX) 1314 if (index != UINT_MAX)
1308 return InspectorCSSId(id(), index); 1315 return InspectorCSSId(id(), index);
1309 return InspectorCSSId(); 1316 return InspectorCSSId();
1310 } 1317 }
1311 1318
1312 Document* InspectorStyleSheet::ownerDocument() const 1319 Document* InspectorStyleSheet::ownerDocument() const
1313 { 1320 {
1314 return m_pageStyleSheet->ownerDocument(); 1321 return m_pageStyleSheet->ownerDocument();
1315 } 1322 }
1316 1323
1317 PassRefPtr<CSSRuleSourceData> InspectorStyleSheet::ruleSourceDataFor(CSSStyleDec laration* style) const 1324 PassRefPtr<CSSRuleSourceData> InspectorStyleSheet::ruleSourceDataFor(CSSStyleDec laration* style) const
1318 { 1325 {
1319 return m_parsedStyleSheet->ruleSourceDataAt(ruleIndexByStyle(style)); 1326 return m_parsedStyleSheet->ruleSourceDataAt(ruleIndexByStyle(style));
1320 } 1327 }
1321 1328
1322 PassOwnPtr<Vector<unsigned> > InspectorStyleSheet::lineEndings() const
1323 {
1324 if (!m_parsedStyleSheet->hasText())
1325 return PassOwnPtr<Vector<unsigned> >();
1326 return WTF::lineEndings(m_parsedStyleSheet->text());
1327 }
1328
1329 unsigned InspectorStyleSheet::ruleIndexByStyle(CSSStyleDeclaration* pageStyle) c onst 1329 unsigned InspectorStyleSheet::ruleIndexByStyle(CSSStyleDeclaration* pageStyle) c onst
1330 { 1330 {
1331 ensureFlatRules(); 1331 ensureFlatRules();
1332 for (unsigned i = 0, size = m_flatRules.size(); i < size; ++i) { 1332 for (unsigned i = 0, size = m_flatRules.size(); i < size; ++i) {
1333 CSSStyleRule* styleRule = InspectorCSSAgent::asCSSStyleRule(m_flatRules. at(i).get()); 1333 CSSStyleRule* styleRule = InspectorCSSAgent::asCSSStyleRule(m_flatRules. at(i).get());
1334 if (styleRule && styleRule->style() == pageStyle) 1334 if (styleRule && styleRule->style() == pageStyle)
1335 return i; 1335 return i;
1336 } 1336 }
1337 return UINT_MAX; 1337 return UINT_MAX;
1338 } 1338 }
1339 1339
1340 unsigned InspectorStyleSheet::ruleIndexByRule(const CSSRule* rule) const
1341 {
1342 ensureFlatRules();
1343 size_t index = m_flatRules.find(rule);
1344 return index == kNotFound ? UINT_MAX : static_cast<unsigned>(index);
1345 }
1346
1347 bool InspectorStyleSheet::checkPageStyleSheet(ExceptionState& exceptionState) co nst
1348 {
1349 if (!m_pageStyleSheet) {
1350 exceptionState.throwDOMException(NotSupportedError, "No stylesheet is av ailable.");
1351 return false;
1352 }
1353 return true;
1354 }
1355
1356 bool InspectorStyleSheet::ensureParsedDataReady() 1340 bool InspectorStyleSheet::ensureParsedDataReady()
1357 { 1341 {
1358 return ensureText() && m_parsedStyleSheet->ensureSourceData(); 1342 return ensureText() && m_parsedStyleSheet->ensureSourceData();
1359 } 1343 }
1360 1344
1361 bool InspectorStyleSheet::ensureText() const 1345 bool InspectorStyleSheet::ensureText() const
1362 { 1346 {
1363 if (m_parsedStyleSheet->hasText()) 1347 if (m_parsedStyleSheet->hasText())
1364 return true; 1348 return true;
1365 1349
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1408 bool InspectorStyleSheet::setStyleText(CSSStyleDeclaration* style, const String& text) 1392 bool InspectorStyleSheet::setStyleText(CSSStyleDeclaration* style, const String& text)
1409 { 1393 {
1410 if (!ensureParsedDataReady()) 1394 if (!ensureParsedDataReady())
1411 return false; 1395 return false;
1412 1396
1413 String patchedStyleSheetText; 1397 String patchedStyleSheetText;
1414 bool success = styleSheetTextWithChangedStyle(style, text, &patchedStyleShee tText); 1398 bool success = styleSheetTextWithChangedStyle(style, text, &patchedStyleShee tText);
1415 if (!success) 1399 if (!success)
1416 return false; 1400 return false;
1417 1401
1418 InspectorCSSId id = ruleIdByStyle(style); 1402 InspectorCSSId id = styleId(style);
1419 if (id.isEmpty()) 1403 if (id.isEmpty())
1420 return false; 1404 return false;
1421 1405
1422 TrackExceptionState exceptionState; 1406 TrackExceptionState exceptionState;
1423 style->setCSSText(text, exceptionState); 1407 style->setCSSText(text, exceptionState);
1424 if (!exceptionState.hadException()) 1408 if (!exceptionState.hadException())
1425 m_parsedStyleSheet->setText(patchedStyleSheetText); 1409 m_parsedStyleSheet->setText(patchedStyleSheetText);
1426 1410
1427 return !exceptionState.hadException(); 1411 return !exceptionState.hadException();
1428 } 1412 }
(...skipping 14 matching lines...) Expand all
1443 String text = m_parsedStyleSheet->text(); 1427 String text = m_parsedStyleSheet->text();
1444 ASSERT_WITH_SECURITY_IMPLICATION(bodyEnd <= text.length()); // bodyEnd is ex clusive 1428 ASSERT_WITH_SECURITY_IMPLICATION(bodyEnd <= text.length()); // bodyEnd is ex clusive
1445 1429
1446 text.replace(bodyStart, bodyEnd - bodyStart, newStyleText); 1430 text.replace(bodyStart, bodyEnd - bodyStart, newStyleText);
1447 *result = text; 1431 *result = text;
1448 return true; 1432 return true;
1449 } 1433 }
1450 1434
1451 InspectorCSSId InspectorStyleSheet::ruleId(CSSStyleRule* rule) const 1435 InspectorCSSId InspectorStyleSheet::ruleId(CSSStyleRule* rule) const
1452 { 1436 {
1453 return ruleIdByStyle(rule->style()); 1437 return styleId(rule->style());
1454 } 1438 }
1455 1439
1456 bool InspectorStyleSheet::originalStyleSheetText(String* result) const 1440 bool InspectorStyleSheet::originalStyleSheetText(String* result) const
1457 { 1441 {
1458 bool success = inlineStyleSheetText(result); 1442 bool success = inlineStyleSheetText(result);
1459 if (!success) 1443 if (!success)
1460 success = resourceStyleSheetText(result); 1444 success = resourceStyleSheetText(result);
1461 return success; 1445 return success;
1462 } 1446 }
1463 1447
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
1504 } 1488 }
1505 1489
1506 void InspectorStyleSheetForInlineStyle::didModifyElementAttribute() 1490 void InspectorStyleSheetForInlineStyle::didModifyElementAttribute()
1507 { 1491 {
1508 m_isStyleTextValid = false; 1492 m_isStyleTextValid = false;
1509 if (m_element->isStyledElement() && m_element->style() != m_inspectorStyle-> cssStyle()) 1493 if (m_element->isStyledElement() && m_element->style() != m_inspectorStyle-> cssStyle())
1510 m_inspectorStyle = InspectorStyle::create(InspectorCSSId(id(), 0), inlin eStyle(), this); 1494 m_inspectorStyle = InspectorStyle::create(InspectorCSSId(id(), 0), inlin eStyle(), this);
1511 m_ruleSourceData.clear(); 1495 m_ruleSourceData.clear();
1512 } 1496 }
1513 1497
1514 void InspectorStyleSheetForInlineStyle::reparseStyleSheet(const String& text)
1515 {
1516 fireStyleSheetChanged();
1517 }
1518
1519 bool InspectorStyleSheetForInlineStyle::setText(const String& text, ExceptionSta te& exceptionState) 1498 bool InspectorStyleSheetForInlineStyle::setText(const String& text, ExceptionSta te& exceptionState)
1520 { 1499 {
1521 bool success = setStyleText(inlineStyle(), text); 1500 bool success = setStyleText(inlineStyle(), text);
1522 if (!success) 1501 if (!success)
1523 exceptionState.throwDOMException(SyntaxError, "Style sheet text is inval id."); 1502 exceptionState.throwDOMException(SyntaxError, "Style sheet text is inval id.");
vsevik 2014/03/19 08:26:53 This could be moved out to agent.
lushnikov 2014/03/19 08:57:37 Discussed offline, decided to leave it as-is
1503 else
1504 fireStyleSheetChanged();
1524 return success; 1505 return success;
1525 } 1506 }
1526 1507
1527 bool InspectorStyleSheetForInlineStyle::getText(String* result) const 1508 bool InspectorStyleSheetForInlineStyle::getText(String* result) const
1528 { 1509 {
1529 if (!m_isStyleTextValid) { 1510 if (!m_isStyleTextValid) {
1530 m_styleText = elementStyleText(); 1511 m_styleText = elementStyleText();
1531 m_isStyleTextValid = true; 1512 m_isStyleTextValid = true;
1532 } 1513 }
1533 *result = m_styleText; 1514 *result = m_styleText;
1534 return true; 1515 return true;
1535 } 1516 }
1536 1517
1537 bool InspectorStyleSheetForInlineStyle::setStyleText(CSSStyleDeclaration* style, const String& text) 1518 bool InspectorStyleSheetForInlineStyle::setStyleText(CSSStyleDeclaration* style, const String& text)
1538 { 1519 {
1539 ASSERT_UNUSED(style, style == inlineStyle()); 1520 ASSERT_UNUSED(style, style == inlineStyle());
1540 TrackExceptionState exceptionState; 1521 TrackExceptionState exceptionState;
1541 1522
1542 { 1523 {
1543 InspectorCSSAgent::InlineStyleOverrideScope overrideScope(m_element->own erDocument()); 1524 InspectorCSSAgent::InlineStyleOverrideScope overrideScope(m_element->own erDocument());
1544 m_element->setAttribute("style", AtomicString(text), exceptionState); 1525 m_element->setAttribute("style", AtomicString(text), exceptionState);
1545 } 1526 }
1546 1527
1547 m_styleText = text; 1528 m_styleText = text;
1548 m_isStyleTextValid = true; 1529 m_isStyleTextValid = true;
1549 m_ruleSourceData.clear(); 1530 m_ruleSourceData.clear();
1550 return !exceptionState.hadException(); 1531 return !exceptionState.hadException();
1551 } 1532 }
1552 1533
1553 PassOwnPtr<Vector<unsigned> > InspectorStyleSheetForInlineStyle::lineEndings() c onst
1554 {
1555 return WTF::lineEndings(elementStyleText());
1556 }
1557
1558 Document* InspectorStyleSheetForInlineStyle::ownerDocument() const 1534 Document* InspectorStyleSheetForInlineStyle::ownerDocument() const
1559 { 1535 {
1560 return &m_element->document(); 1536 return &m_element->document();
1561 } 1537 }
1562 1538
1563 bool InspectorStyleSheetForInlineStyle::ensureParsedDataReady() 1539 bool InspectorStyleSheetForInlineStyle::ensureParsedDataReady()
1564 { 1540 {
1565 // The "style" property value can get changed indirectly, e.g. via element.s tyle.borderWidth = "2px". 1541 // The "style" property value can get changed indirectly, e.g. via element.s tyle.borderWidth = "2px".
1566 const String& currentStyleText = elementStyleText(); 1542 const String& currentStyleText = elementStyleText();
1567 if (m_styleText != currentStyleText) { 1543 if (m_styleText != currentStyleText) {
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
1614 1590
1615 RefPtr<MutableStylePropertySet> tempDeclaration = MutableStylePropertySet::c reate(); 1591 RefPtr<MutableStylePropertySet> tempDeclaration = MutableStylePropertySet::c reate();
1616 RuleSourceDataList ruleSourceDataResult; 1592 RuleSourceDataList ruleSourceDataResult;
1617 StyleSheetHandler handler(m_styleText, &m_element->document(), m_element->do cument().elementSheet().contents(), &ruleSourceDataResult); 1593 StyleSheetHandler handler(m_styleText, &m_element->document(), m_element->do cument().elementSheet().contents(), &ruleSourceDataResult);
1618 createCSSParser(&m_element->document())->parseDeclaration(tempDeclaration.ge t(), m_styleText, &handler, m_element->document().elementSheet().contents()); 1594 createCSSParser(&m_element->document())->parseDeclaration(tempDeclaration.ge t(), m_styleText, &handler, m_element->document().elementSheet().contents());
1619 return ruleSourceDataResult.first().release(); 1595 return ruleSourceDataResult.first().release();
1620 } 1596 }
1621 1597
1622 } // namespace WebCore 1598 } // namespace WebCore
1623 1599
OLDNEW
« no previous file with comments | « Source/core/inspector/InspectorStyleSheet.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698