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

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

Issue 20091002: DevTools: Clean up InspectorStyleSheet, InspectorCSSAgent, and InspectorResourceAgent (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebase Created 7 years, 4 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/InspectorResourceAgent.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 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 60
61 using WebCore::TypeBuilder::Array; 61 using WebCore::TypeBuilder::Array;
62 using WebCore::RuleSourceDataList; 62 using WebCore::RuleSourceDataList;
63 using WebCore::CSSRuleSourceData; 63 using WebCore::CSSRuleSourceData;
64 64
65 class ParsedStyleSheet { 65 class ParsedStyleSheet {
66 WTF_MAKE_FAST_ALLOCATED; 66 WTF_MAKE_FAST_ALLOCATED;
67 public: 67 public:
68 ParsedStyleSheet(); 68 ParsedStyleSheet();
69 69
70 WebCore::CSSStyleSheet* cssStyleSheet() const { return m_parserOutput; }
71 const String& text() const { ASSERT(m_hasText); return m_text; } 70 const String& text() const { ASSERT(m_hasText); return m_text; }
72 void setText(const String& text); 71 void setText(const String& text);
73 bool hasText() const { return m_hasText; } 72 bool hasText() const { return m_hasText; }
74 void setSourceData(PassOwnPtr<RuleSourceDataList>); 73 void setSourceData(PassOwnPtr<RuleSourceDataList>);
75 bool hasSourceData() const { return m_sourceData; } 74 bool hasSourceData() const { return m_sourceData; }
76 PassRefPtr<WebCore::CSSRuleSourceData> ruleSourceDataAt(unsigned) const; 75 PassRefPtr<WebCore::CSSRuleSourceData> ruleSourceDataAt(unsigned) const;
77 76
78 private: 77 private:
79 void flattenSourceData(RuleSourceDataList*); 78 void flattenSourceData(RuleSourceDataList*);
80 79
81 // StyleSheet constructed while parsing m_text.
82 WebCore::CSSStyleSheet* m_parserOutput;
83 String m_text; 80 String m_text;
84 bool m_hasText; 81 bool m_hasText;
85 OwnPtr<RuleSourceDataList> m_sourceData; 82 OwnPtr<RuleSourceDataList> m_sourceData;
86 }; 83 };
87 84
88 ParsedStyleSheet::ParsedStyleSheet() 85 ParsedStyleSheet::ParsedStyleSheet()
89 : m_parserOutput(0) 86 : m_hasText(false)
90 , m_hasText(false)
91 { 87 {
92 } 88 }
93 89
94 void ParsedStyleSheet::setText(const String& text) 90 void ParsedStyleSheet::setText(const String& text)
95 { 91 {
96 m_hasText = true; 92 m_hasText = true;
97 m_text = text; 93 m_text = text;
98 setSourceData(nullptr); 94 setSourceData(nullptr);
99 } 95 }
100 96
(...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after
553 bool InspectorStyle::setPropertyText(unsigned index, const String& propertyText, bool overwrite, String* oldText, ExceptionCode& ec) 549 bool InspectorStyle::setPropertyText(unsigned index, const String& propertyText, bool overwrite, String* oldText, ExceptionCode& ec)
554 { 550 {
555 ASSERT(m_parentStyleSheet); 551 ASSERT(m_parentStyleSheet);
556 DEFINE_STATIC_LOCAL(String, bogusPropertyName, (ASCIILiteral("-webkit-boguz- propertee"))); 552 DEFINE_STATIC_LOCAL(String, bogusPropertyName, (ASCIILiteral("-webkit-boguz- propertee")));
557 553
558 if (!m_parentStyleSheet->ensureParsedDataReady()) { 554 if (!m_parentStyleSheet->ensureParsedDataReady()) {
559 ec = NotFoundError; 555 ec = NotFoundError;
560 return false; 556 return false;
561 } 557 }
562 558
563 Vector<InspectorStyleProperty> allProperties;
564 populateAllProperties(allProperties);
565
566 if (!propertyText.stripWhiteSpace().isEmpty()) { 559 if (!propertyText.stripWhiteSpace().isEmpty()) {
567 RefPtr<MutableStylePropertySet> tempMutableStyle = MutableStylePropertyS et::create(); 560 RefPtr<MutableStylePropertySet> tempMutableStyle = MutableStylePropertyS et::create();
568 String declarationText = propertyText + " " + bogusPropertyName + ": non e"; 561 String declarationText = propertyText + " " + bogusPropertyName + ": non e";
569 RuleSourceDataList sourceData; 562 RuleSourceDataList sourceData;
570 StyleSheetHandler handler(declarationText, ownerDocument(), m_style->par entStyleSheet()->contents(), &sourceData); 563 StyleSheetHandler handler(declarationText, ownerDocument(), m_style->par entStyleSheet()->contents(), &sourceData);
571 createCSSParser(ownerDocument())->parseDeclaration(tempMutableStyle.get( ), declarationText, &handler, m_style->parentStyleSheet()->contents()); 564 createCSSParser(ownerDocument())->parseDeclaration(tempMutableStyle.get( ), declarationText, &handler, m_style->parentStyleSheet()->contents());
572 Vector<CSSPropertySourceData>& propertyData = sourceData.first()->styleS ourceData->propertyData; 565 Vector<CSSPropertySourceData>& propertyData = sourceData.first()->styleS ourceData->propertyData;
573 unsigned propertyCount = propertyData.size(); 566 unsigned propertyCount = propertyData.size();
574 567
575 // At least one property + the bogus property added just above should be present. 568 // At least one property + the bogus property added just above should be present.
(...skipping 15 matching lines...) Expand all
591 return false; 584 return false;
592 } 585 }
593 586
594 String text; 587 String text;
595 bool success = styleText(&text); 588 bool success = styleText(&text);
596 if (!success) { 589 if (!success) {
597 ec = NotFoundError; 590 ec = NotFoundError;
598 return false; 591 return false;
599 } 592 }
600 593
594 Vector<InspectorStyleProperty> allProperties;
595 populateAllProperties(allProperties);
596
601 InspectorStyleTextEditor editor(&allProperties, text, newLineAndWhitespaceDe limiters()); 597 InspectorStyleTextEditor editor(&allProperties, text, newLineAndWhitespaceDe limiters());
602 if (overwrite) { 598 if (overwrite) {
603 if (index >= allProperties.size()) { 599 if (index >= allProperties.size()) {
604 ec = IndexSizeError; 600 ec = IndexSizeError;
605 return false; 601 return false;
606 } 602 }
607 *oldText = allProperties.at(index).rawText; 603 *oldText = allProperties.at(index).rawText;
608 editor.replaceProperty(index, propertyText); 604 editor.replaceProperty(index, propertyText);
609 } else 605 } else
610 editor.insertProperty(index, propertyText, sourceData->ruleBodyRange.len gth()); 606 editor.insertProperty(index, propertyText, sourceData->ruleBodyRange.len gth());
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
664 if (!success) 660 if (!success)
665 return false; 661 return false;
666 662
667 SourceRange& bodyRange = sourceData->ruleBodyRange; 663 SourceRange& bodyRange = sourceData->ruleBodyRange;
668 *result = styleSheetText.substring(bodyRange.start, bodyRange.end - bodyRang e.start); 664 *result = styleSheetText.substring(bodyRange.start, bodyRange.end - bodyRang e.start);
669 return true; 665 return true;
670 } 666 }
671 667
672 void InspectorStyle::populateAllProperties(Vector<InspectorStyleProperty>& resul t) const 668 void InspectorStyle::populateAllProperties(Vector<InspectorStyleProperty>& resul t) const
673 { 669 {
674 HashSet<String> foundShorthands;
675 HashSet<String> sourcePropertyNames; 670 HashSet<String> sourcePropertyNames;
676 671
677 RefPtr<CSSRuleSourceData> sourceData = extractSourceData(); 672 RefPtr<CSSRuleSourceData> sourceData = extractSourceData();
678 OwnPtr<CSSParser> cssParser;
679 if (sourceData) { 673 if (sourceData) {
680 String styleDeclaration; 674 String styleDeclaration;
681 bool isStyleTextKnown = styleText(&styleDeclaration); 675 bool isStyleTextKnown = styleText(&styleDeclaration);
682 ASSERT_UNUSED(isStyleTextKnown, isStyleTextKnown); 676 ASSERT_UNUSED(isStyleTextKnown, isStyleTextKnown);
683 Vector<CSSPropertySourceData>& sourcePropertyData = sourceData->styleSou rceData->propertyData; 677 Vector<CSSPropertySourceData>& sourcePropertyData = sourceData->styleSou rceData->propertyData;
684 for (Vector<CSSPropertySourceData>::const_iterator it = sourcePropertyDa ta.begin(); it != sourcePropertyData.end(); ++it) { 678 for (Vector<CSSPropertySourceData>::const_iterator it = sourcePropertyDa ta.begin(); it != sourcePropertyData.end(); ++it) {
685 InspectorStyleProperty p(*it, true); 679 InspectorStyleProperty p(*it, true);
686 p.setRawTextFromStyleDeclaration(styleDeclaration); 680 p.setRawTextFromStyleDeclaration(styleDeclaration);
687 result.append(p); 681 result.append(p);
688 sourcePropertyNames.add(it->name.lower()); 682 sourcePropertyNames.add(it->name.lower());
689 } 683 }
690 } 684 }
691 685
692 for (int i = 0, size = m_style->length(); i < size; ++i) { 686 for (int i = 0, size = m_style->length(); i < size; ++i) {
693 String name = m_style->item(i); 687 String name = m_style->item(i);
694 if (!sourcePropertyNames.add(name.lower()).isNewEntry) 688 if (!sourcePropertyNames.add(name.lower()).isNewEntry)
695 continue; 689 continue;
696 690
697 result.append(InspectorStyleProperty(CSSPropertySourceData(name, m_style ->getPropertyValue(name), !m_style->getPropertyPriority(name).isEmpty(), false, true, SourceRange()), false)); 691 result.append(InspectorStyleProperty(CSSPropertySourceData(name, m_style ->getPropertyValue(name), !m_style->getPropertyPriority(name).isEmpty(), false, true, SourceRange()), false));
698 } 692 }
699 } 693 }
700 694
701 PassRefPtr<TypeBuilder::CSS::CSSStyle> InspectorStyle::styleWithProperties() con st 695 PassRefPtr<TypeBuilder::CSS::CSSStyle> InspectorStyle::styleWithProperties() con st
702 { 696 {
703 Vector<InspectorStyleProperty> properties;
704 populateAllProperties(properties);
705
706 RefPtr<Array<TypeBuilder::CSS::CSSProperty> > propertiesObject = Array<TypeB uilder::CSS::CSSProperty>::create(); 697 RefPtr<Array<TypeBuilder::CSS::CSSProperty> > propertiesObject = Array<TypeB uilder::CSS::CSSProperty>::create();
707 RefPtr<Array<TypeBuilder::CSS::ShorthandEntry> > shorthandEntries = Array<Ty peBuilder::CSS::ShorthandEntry>::create(); 698 RefPtr<Array<TypeBuilder::CSS::ShorthandEntry> > shorthandEntries = Array<Ty peBuilder::CSS::ShorthandEntry>::create();
708 HashMap<String, RefPtr<TypeBuilder::CSS::CSSProperty> > propertyNameToPrevio usActiveProperty; 699 HashMap<String, RefPtr<TypeBuilder::CSS::CSSProperty> > propertyNameToPrevio usActiveProperty;
709 HashSet<String> foundShorthands; 700 HashSet<String> foundShorthands;
710 String previousPriority; 701 String previousPriority;
711 String previousStatus; 702 String previousStatus;
712 OwnPtr<Vector<unsigned> > lineEndings(m_parentStyleSheet ? m_parentStyleShee t->lineEndings() : PassOwnPtr<Vector<unsigned> >()); 703 OwnPtr<Vector<unsigned> > lineEndings(m_parentStyleSheet ? m_parentStyleShee t->lineEndings() : PassOwnPtr<Vector<unsigned> >());
713 RefPtr<CSSRuleSourceData> sourceData = extractSourceData(); 704 RefPtr<CSSRuleSourceData> sourceData = extractSourceData();
714 unsigned ruleBodyRangeStart = sourceData ? sourceData->ruleBodyRange.start : 0; 705 unsigned ruleBodyRangeStart = sourceData ? sourceData->ruleBodyRange.start : 0;
715 706
707 Vector<InspectorStyleProperty> properties;
708 populateAllProperties(properties);
709
716 for (Vector<InspectorStyleProperty>::iterator it = properties.begin(), itEnd = properties.end(); it != itEnd; ++it) { 710 for (Vector<InspectorStyleProperty>::iterator it = properties.begin(), itEnd = properties.end(); it != itEnd; ++it) {
717 const CSSPropertySourceData& propertyEntry = it->sourceData; 711 const CSSPropertySourceData& propertyEntry = it->sourceData;
718 const String& name = propertyEntry.name; 712 const String& name = propertyEntry.name;
719 const bool disabled = it->sourceData.disabled; 713 const bool disabled = it->sourceData.disabled;
720 714
721 TypeBuilder::CSS::CSSProperty::Status::Enum status = disabled ? TypeBuil der::CSS::CSSProperty::Status::Disabled : TypeBuilder::CSS::CSSProperty::Status: :Active; 715 TypeBuilder::CSS::CSSProperty::Status::Enum status = disabled ? TypeBuil der::CSS::CSSProperty::Status::Disabled : TypeBuilder::CSS::CSSProperty::Status: :Active;
722 716
723 RefPtr<TypeBuilder::CSS::CSSProperty> property = TypeBuilder::CSS::CSSPr operty::create() 717 RefPtr<TypeBuilder::CSS::CSSProperty> property = TypeBuilder::CSS::CSSPr operty::create()
724 .setName(name) 718 .setName(name)
725 .setValue(propertyEntry.value); 719 .setValue(propertyEntry.value);
(...skipping 1089 matching lines...) Expand 10 before | Expand all | Expand 10 after
1815 1809
1816 RefPtr<MutableStylePropertySet> tempDeclaration = MutableStylePropertySet::c reate(); 1810 RefPtr<MutableStylePropertySet> tempDeclaration = MutableStylePropertySet::c reate();
1817 RuleSourceDataList ruleSourceDataResult; 1811 RuleSourceDataList ruleSourceDataResult;
1818 StyleSheetHandler handler(m_styleText, m_element->document(), m_element->doc ument()->elementSheet()->contents(), &ruleSourceDataResult); 1812 StyleSheetHandler handler(m_styleText, m_element->document(), m_element->doc ument()->elementSheet()->contents(), &ruleSourceDataResult);
1819 createCSSParser(m_element->document())->parseDeclaration(tempDeclaration.get (), m_styleText, &handler, m_element->document()->elementSheet()->contents()); 1813 createCSSParser(m_element->document())->parseDeclaration(tempDeclaration.get (), m_styleText, &handler, m_element->document()->elementSheet()->contents());
1820 return ruleSourceDataResult.first().release(); 1814 return ruleSourceDataResult.first().release();
1821 } 1815 }
1822 1816
1823 } // namespace WebCore 1817 } // namespace WebCore
1824 1818
OLDNEW
« no previous file with comments | « Source/core/inspector/InspectorResourceAgent.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698