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

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

Issue 202103002: DevTools: refactor InspectorStyleSheet (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebaseline 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
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 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 43
44 class CSSRuleList; 44 class CSSRuleList;
45 class CSSStyleDeclaration; 45 class CSSStyleDeclaration;
46 class CSSStyleRule; 46 class CSSStyleRule;
47 class CSSStyleSheet; 47 class CSSStyleSheet;
48 class Document; 48 class Document;
49 class Element; 49 class Element;
50 class ExceptionState; 50 class ExceptionState;
51 class InspectorPageAgent; 51 class InspectorPageAgent;
52 class InspectorResourceAgent; 52 class InspectorResourceAgent;
53 class InspectorStyleSheet; 53 class InspectorStyleSheetBase;
54 54
55 typedef WillBePersistentHeapVector<RefPtrWillBeMember<CSSRule> > CSSRuleVector; 55 typedef WillBePersistentHeapVector<RefPtrWillBeMember<CSSRule> > CSSRuleVector;
56 typedef String ErrorString; 56 typedef String ErrorString;
57 57
58 class InspectorCSSId { 58 class InspectorCSSId {
59 public: 59 public:
60 InspectorCSSId() 60 InspectorCSSId()
61 : m_ordinal(0) 61 : m_ordinal(0)
62 { 62 {
63 } 63 }
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 125
126 bool hasRawText() const { return !rawText.isEmpty(); } 126 bool hasRawText() const { return !rawText.isEmpty(); }
127 127
128 CSSPropertySourceData sourceData; 128 CSSPropertySourceData sourceData;
129 bool hasSource; 129 bool hasSource;
130 String rawText; 130 String rawText;
131 }; 131 };
132 132
133 class InspectorStyle FINAL : public RefCounted<InspectorStyle> { 133 class InspectorStyle FINAL : public RefCounted<InspectorStyle> {
134 public: 134 public:
135 static PassRefPtr<InspectorStyle> create(const InspectorCSSId& styleId, Pass RefPtr<CSSStyleDeclaration> style, InspectorStyleSheet* parentStyleSheet); 135 static PassRefPtr<InspectorStyle> create(const InspectorCSSId&, PassRefPtr<C SSStyleDeclaration>, InspectorStyleSheetBase* parentStyleSheet);
136 136
137 CSSStyleDeclaration* cssStyle() const { return m_style.get(); } 137 CSSStyleDeclaration* cssStyle() const { return m_style.get(); }
138 PassRefPtr<TypeBuilder::CSS::CSSStyle> buildObjectForStyle() const; 138 PassRefPtr<TypeBuilder::CSS::CSSStyle> buildObjectForStyle() const;
139 PassRefPtr<TypeBuilder::Array<TypeBuilder::CSS::CSSComputedStyleProperty> > buildArrayForComputedStyle() const; 139 PassRefPtr<TypeBuilder::Array<TypeBuilder::CSS::CSSComputedStyleProperty> > buildArrayForComputedStyle() const;
140 bool setPropertyText(unsigned index, const String& text, bool overwrite, Str ing* oldText, ExceptionState&); 140 bool setPropertyText(unsigned index, const String& text, bool overwrite, Str ing* oldText, ExceptionState&);
141 bool styleText(String* result) const; 141 bool styleText(String* result) const;
142 142
143 private: 143 private:
144 InspectorStyle(const InspectorCSSId& styleId, PassRefPtr<CSSStyleDeclaration > style, InspectorStyleSheet* parentStyleSheet); 144 InspectorStyle(const InspectorCSSId&, PassRefPtr<CSSStyleDeclaration>, Inspe ctorStyleSheetBase* parentStyleSheet);
145 145
146 bool verifyPropertyText(const String& propertyText, bool canOmitSemicolon); 146 bool verifyPropertyText(const String& propertyText, bool canOmitSemicolon);
147 void populateAllProperties(Vector<InspectorStyleProperty>& result) const; 147 void populateAllProperties(Vector<InspectorStyleProperty>& result) const;
148 PassRefPtr<TypeBuilder::CSS::CSSStyle> styleWithProperties() const; 148 PassRefPtr<TypeBuilder::CSS::CSSStyle> styleWithProperties() const;
149 PassRefPtr<CSSRuleSourceData> extractSourceData() const; 149 PassRefPtr<CSSRuleSourceData> extractSourceData() const;
150 bool applyStyleText(const String&); 150 bool applyStyleText(const String&);
151 String shorthandValue(const String& shorthandProperty) const; 151 String shorthandValue(const String& shorthandProperty) const;
152 NewLineAndWhitespace& newLineAndWhitespaceDelimiters() const; 152 NewLineAndWhitespace& newLineAndWhitespaceDelimiters() const;
153 inline Document* ownerDocument() const; 153 inline Document* ownerDocument() const;
154 154
155 InspectorCSSId m_styleId; 155 InspectorCSSId m_styleId;
156 RefPtr<CSSStyleDeclaration> m_style; 156 RefPtr<CSSStyleDeclaration> m_style;
157 InspectorStyleSheet* m_parentStyleSheet; 157 InspectorStyleSheetBase* m_parentStyleSheet;
158 mutable std::pair<String, String> m_format; 158 mutable std::pair<String, String> m_format;
159 mutable bool m_formatAcquired; 159 mutable bool m_formatAcquired;
160 }; 160 };
161 161
162 class InspectorStyleSheet : public RefCounted<InspectorStyleSheet> { 162 class InspectorStyleSheetBase : public RefCounted<InspectorStyleSheetBase> {
163 public: 163 public:
164 class Listener { 164 class Listener {
165 public: 165 public:
166 Listener() { } 166 Listener() { }
167 virtual ~Listener() { } 167 virtual ~Listener() { }
168 virtual void styleSheetChanged(InspectorStyleSheet*) = 0; 168 virtual void styleSheetChanged(InspectorStyleSheetBase*) = 0;
169 virtual void willReparseStyleSheet() = 0; 169 virtual void willReparseStyleSheet() = 0;
170 virtual void didReparseStyleSheet() = 0; 170 virtual void didReparseStyleSheet() = 0;
171 }; 171 };
172 virtual ~InspectorStyleSheetBase() { }
172 173
174 String id() const { return m_id; }
175
176 virtual Document* ownerDocument() const = 0;
177 virtual bool setText(const String&, ExceptionState&) = 0;
178 virtual bool getText(String* result) const = 0;
179 virtual void reparseStyleSheet(const String&) = 0;
180 bool setPropertyText(const InspectorCSSId&, unsigned propertyIndex, const St ring& text, bool overwrite, String* oldPropertyText, ExceptionState&);
181
182 virtual CSSStyleDeclaration* styleForId(const InspectorCSSId&) const = 0;
183 virtual InspectorCSSId styleId(CSSStyleDeclaration*) const = 0;
184
185 PassRefPtr<TypeBuilder::CSS::CSSStyle> buildObjectForStyle(CSSStyleDeclarati on*);
186
187 protected:
188 InspectorStyleSheetBase(const String& id, Listener*);
189
190 Listener* listener() const { return m_listener; }
191 void fireStyleSheetChanged();
192
193 virtual PassRefPtr<InspectorStyle> inspectorStyleForId(const InspectorCSSId& ) = 0;
194
195 // Also accessed by friend class InspectorStyle.
196 virtual PassRefPtr<CSSRuleSourceData> ruleSourceDataFor(CSSStyleDeclaration* ) const = 0;
197 virtual bool setStyleText(CSSStyleDeclaration*, const String&) = 0;
198 virtual PassOwnPtr<Vector<unsigned> > lineEndings() const = 0;
199 virtual bool ensureParsedDataReady() = 0;
200
201 private:
202 friend class InspectorStyle;
203
204 String m_id;
205 Listener* m_listener;
206 };
207
208 class InspectorStyleSheet : public InspectorStyleSheetBase {
209 public:
173 static PassRefPtr<InspectorStyleSheet> create(InspectorPageAgent*, Inspector ResourceAgent*, const String& id, PassRefPtrWillBeRawPtr<CSSStyleSheet> pageStyl eSheet, TypeBuilder::CSS::StyleSheetOrigin::Enum, const String& documentURL, Lis tener*); 210 static PassRefPtr<InspectorStyleSheet> create(InspectorPageAgent*, Inspector ResourceAgent*, const String& id, PassRefPtrWillBeRawPtr<CSSStyleSheet> pageStyl eSheet, TypeBuilder::CSS::StyleSheetOrigin::Enum, const String& documentURL, Lis tener*);
174 211
175 virtual ~InspectorStyleSheet(); 212 virtual ~InspectorStyleSheet();
176 213
177 String id() const { return m_id; }
178 String finalURL() const; 214 String finalURL() const;
179 virtual Document* ownerDocument() const; 215 virtual Document* ownerDocument() const OVERRIDE;
180 CSSStyleSheet* pageStyleSheet() const { return m_pageStyleSheet.get(); } 216 virtual void reparseStyleSheet(const String&) OVERRIDE;
181 virtual void reparseStyleSheet(const String&); 217 virtual bool setText(const String&, ExceptionState&) OVERRIDE;
182 virtual bool setText(const String&, ExceptionState&); 218 virtual bool getText(String* result) const OVERRIDE;
183 virtual bool getText(String* result) const;
184 String ruleSelector(const InspectorCSSId&, ExceptionState&); 219 String ruleSelector(const InspectorCSSId&, ExceptionState&);
185 bool setRuleSelector(const InspectorCSSId&, const String& selector, Exceptio nState&); 220 bool setRuleSelector(const InspectorCSSId&, const String& selector, Exceptio nState&);
186 CSSStyleRule* addRule(const String& selector, ExceptionState&); 221 CSSStyleRule* addRule(const String& selector, ExceptionState&);
187 bool deleteRule(const InspectorCSSId&, ExceptionState&); 222 bool deleteRule(const InspectorCSSId&, ExceptionState&);
188 bool setPropertyText(const InspectorCSSId&, unsigned propertyIndex, const St ring& text, bool overwrite, String* oldPropertyText, ExceptionState&); 223
224 CSSStyleSheet* pageStyleSheet() const { return m_pageStyleSheet.get(); }
189 225
190 PassRefPtr<TypeBuilder::CSS::CSSStyleSheetHeader> buildObjectForStyleSheetIn fo() const; 226 PassRefPtr<TypeBuilder::CSS::CSSStyleSheetHeader> buildObjectForStyleSheetIn fo() const;
191 PassRefPtr<TypeBuilder::CSS::CSSRule> buildObjectForRule(CSSStyleRule*, Pass RefPtr<TypeBuilder::Array<TypeBuilder::CSS::CSSMedia> >); 227 PassRefPtr<TypeBuilder::CSS::CSSRule> buildObjectForRule(CSSStyleRule*, Pass RefPtr<TypeBuilder::Array<TypeBuilder::CSS::CSSMedia> >);
192 PassRefPtr<TypeBuilder::CSS::CSSStyle> buildObjectForStyle(CSSStyleDeclarati on*);
193 228
194 PassRefPtr<TypeBuilder::CSS::SourceRange> ruleHeaderSourceRange(const CSSRul e*); 229 PassRefPtr<TypeBuilder::CSS::SourceRange> ruleHeaderSourceRange(const CSSRul e*);
195 230
196 InspectorCSSId ruleId(CSSStyleRule*) const; 231 InspectorCSSId ruleId(CSSStyleRule*) const;
197 InspectorCSSId styleId(CSSStyleDeclaration* style) const { return ruleIdBySt yle(style); } 232 CSSStyleRule* ruleForId(const InspectorCSSId&) const;
198 virtual CSSStyleRule* ruleForId(const InspectorCSSId&) const; 233
199 virtual CSSStyleDeclaration* styleForId(const InspectorCSSId&) const; 234 virtual InspectorCSSId styleId(CSSStyleDeclaration* style) const OVERRIDE { return ruleIdByStyle(style); }
235 virtual CSSStyleDeclaration* styleForId(const InspectorCSSId&) const OVERRID E;
200 236
201 protected: 237 protected:
202 InspectorStyleSheet(InspectorPageAgent*, InspectorResourceAgent*, const Stri ng& id, PassRefPtrWillBeRawPtr<CSSStyleSheet> pageStyleSheet, TypeBuilder::CSS:: StyleSheetOrigin::Enum, const String& documentURL, Listener*); 238 virtual PassRefPtr<InspectorStyle> inspectorStyleForId(const InspectorCSSId& ) OVERRIDE;
203
204 void fireStyleSheetChanged();
205 virtual PassRefPtr<CSSRuleSourceData> ruleSourceDataFor(CSSStyleDeclaration* ) const;
206 virtual unsigned ruleIndexByStyle(CSSStyleDeclaration*) const;
207 virtual unsigned ruleIndexByRule(const CSSRule*) const;
208 virtual bool ensureParsedDataReady();
209 virtual PassRefPtr<InspectorStyle> inspectorStyleForId(const InspectorCSSId& );
210 virtual String sourceMapURL() const;
211 virtual String sourceURL() const;
212 239
213 // Also accessed by friend class InspectorStyle. 240 // Also accessed by friend class InspectorStyle.
214 virtual bool setStyleText(CSSStyleDeclaration*, const String&); 241 virtual PassRefPtr<CSSRuleSourceData> ruleSourceDataFor(CSSStyleDeclaration* ) const OVERRIDE;
215 virtual PassOwnPtr<Vector<unsigned> > lineEndings() const; 242 virtual bool setStyleText(CSSStyleDeclaration*, const String&) OVERRIDE;
243 virtual PassOwnPtr<Vector<unsigned> > lineEndings() const OVERRIDE;
244 virtual bool ensureParsedDataReady() OVERRIDE;
216 245
217 private: 246 private:
218 friend class InspectorStyle; 247 InspectorStyleSheet(InspectorPageAgent*, InspectorResourceAgent*, const Stri ng& id, PassRefPtr<CSSStyleSheet> pageStyleSheet, TypeBuilder::CSS::StyleSheetOr igin::Enum, const String& documentURL, Listener*);
219 248
220 InspectorCSSId ruleIdByStyle(CSSStyleDeclaration*) const; 249 InspectorCSSId ruleIdByStyle(CSSStyleDeclaration*) const;
250 unsigned ruleIndexByStyle(CSSStyleDeclaration*) const;
251 unsigned ruleIndexByRule(const CSSRule*) const;
252 String sourceMapURL() const;
253 String sourceURL() const;
221 bool checkPageStyleSheet(ExceptionState&) const; 254 bool checkPageStyleSheet(ExceptionState&) const;
222 bool ensureText() const; 255 bool ensureText() const;
223 void ensureFlatRules() const; 256 void ensureFlatRules() const;
224 bool styleSheetTextWithChangedStyle(CSSStyleDeclaration*, const String& newS tyleText, String* result); 257 bool styleSheetTextWithChangedStyle(CSSStyleDeclaration*, const String& newS tyleText, String* result);
225 bool originalStyleSheetText(String* result) const; 258 bool originalStyleSheetText(String* result) const;
226 bool resourceStyleSheetText(String* result) const; 259 bool resourceStyleSheetText(String* result) const;
227 bool inlineStyleSheetText(String* result) const; 260 bool inlineStyleSheetText(String* result) const;
228 PassRefPtr<TypeBuilder::Array<TypeBuilder::CSS::Selector> > selectorsFromSou rce(const CSSRuleSourceData*, const String&) const; 261 PassRefPtr<TypeBuilder::Array<TypeBuilder::CSS::Selector> > selectorsFromSou rce(const CSSRuleSourceData*, const String&) const;
229 PassRefPtr<TypeBuilder::CSS::SelectorList> buildObjectForSelectorList(CSSSty leRule*); 262 PassRefPtr<TypeBuilder::CSS::SelectorList> buildObjectForSelectorList(CSSSty leRule*);
230 String url() const; 263 String url() const;
231 bool hasSourceURL() const; 264 bool hasSourceURL() const;
232 bool startsAtZero() const; 265 bool startsAtZero() const;
233 266
234 InspectorPageAgent* m_pageAgent; 267 InspectorPageAgent* m_pageAgent;
235 InspectorResourceAgent* m_resourceAgent; 268 InspectorResourceAgent* m_resourceAgent;
236 String m_id;
237 RefPtrWillBePersistent<CSSStyleSheet> m_pageStyleSheet; 269 RefPtrWillBePersistent<CSSStyleSheet> m_pageStyleSheet;
238 TypeBuilder::CSS::StyleSheetOrigin::Enum m_origin; 270 TypeBuilder::CSS::StyleSheetOrigin::Enum m_origin;
239 String m_documentURL; 271 String m_documentURL;
240 OwnPtr<ParsedStyleSheet> m_parsedStyleSheet; 272 OwnPtr<ParsedStyleSheet> m_parsedStyleSheet;
241 mutable CSSRuleVector m_flatRules; 273 mutable CSSRuleVector m_flatRules;
242 Listener* m_listener;
243 mutable String m_sourceURL; 274 mutable String m_sourceURL;
244 }; 275 };
245 276
246 class InspectorStyleSheetForInlineStyle FINAL : public InspectorStyleSheet { 277 class InspectorStyleSheetForInlineStyle FINAL : public InspectorStyleSheetBase {
247 public: 278 public:
248 static PassRefPtr<InspectorStyleSheetForInlineStyle> create(InspectorPageAge nt*, InspectorResourceAgent*, const String& id, PassRefPtr<Element>, Listener*); 279 static PassRefPtr<InspectorStyleSheetForInlineStyle> create(const String& id , PassRefPtr<Element>, Listener*);
249 280
250 void didModifyElementAttribute(); 281 void didModifyElementAttribute();
251 virtual Document* ownerDocument() const OVERRIDE; 282 virtual Document* ownerDocument() const OVERRIDE;
252 virtual void reparseStyleSheet(const String&) OVERRIDE; 283 virtual void reparseStyleSheet(const String&) OVERRIDE;
253 virtual bool setText(const String&, ExceptionState&) OVERRIDE; 284 virtual bool setText(const String&, ExceptionState&) OVERRIDE;
254 virtual bool getText(String* result) const OVERRIDE; 285 virtual bool getText(String* result) const OVERRIDE;
255 virtual CSSStyleRule* ruleForId(const InspectorCSSId&) const OVERRIDE { retu rn 0; } 286
256 virtual CSSStyleDeclaration* styleForId(const InspectorCSSId& id) const OVER RIDE { ASSERT_UNUSED(id, !id.ordinal()); return inlineStyle(); } 287 virtual CSSStyleDeclaration* styleForId(const InspectorCSSId& id) const OVER RIDE { ASSERT_UNUSED(id, !id.ordinal()); return inlineStyle(); }
288 virtual InspectorCSSId styleId(CSSStyleDeclaration* style) const OVERRIDE { return InspectorCSSId(id(), 0); }
257 289
258 protected: 290 protected:
259 InspectorStyleSheetForInlineStyle(InspectorPageAgent*, InspectorResourceAgen t*, const String& id, PassRefPtr<Element>, Listener*);
260
261 virtual PassRefPtr<CSSRuleSourceData> ruleSourceDataFor(CSSStyleDeclaration* style) const OVERRIDE { ASSERT_UNUSED(style, style == inlineStyle()); return m_ ruleSourceData; }
262 virtual unsigned ruleIndexByStyle(CSSStyleDeclaration*) const OVERRIDE { ret urn 0; }
263 virtual bool ensureParsedDataReady() OVERRIDE;
264 virtual PassRefPtr<InspectorStyle> inspectorStyleForId(const InspectorCSSId& ) OVERRIDE; 291 virtual PassRefPtr<InspectorStyle> inspectorStyleForId(const InspectorCSSId& ) OVERRIDE;
265 virtual String sourceMapURL() const OVERRIDE { return String(); }
266 virtual String sourceURL() const OVERRIDE { return String(); }
267 292
268 // Also accessed by friend class InspectorStyle. 293 // Also accessed by friend class InspectorStyle.
294 virtual bool ensureParsedDataReady() OVERRIDE;
295 virtual PassRefPtr<CSSRuleSourceData> ruleSourceDataFor(CSSStyleDeclaration* style) const OVERRIDE { ASSERT_UNUSED(style, style == inlineStyle()); return m_ ruleSourceData; }
269 virtual bool setStyleText(CSSStyleDeclaration*, const String&) OVERRIDE; 296 virtual bool setStyleText(CSSStyleDeclaration*, const String&) OVERRIDE;
270 virtual PassOwnPtr<Vector<unsigned> > lineEndings() const OVERRIDE; 297 virtual PassOwnPtr<Vector<unsigned> > lineEndings() const OVERRIDE;
271 298
272 private: 299 private:
300 InspectorStyleSheetForInlineStyle(const String& id, PassRefPtr<Element>, Lis tener*);
273 CSSStyleDeclaration* inlineStyle() const; 301 CSSStyleDeclaration* inlineStyle() const;
274 const String& elementStyleText() const; 302 const String& elementStyleText() const;
275 PassRefPtr<CSSRuleSourceData> getStyleAttributeData() const; 303 PassRefPtr<CSSRuleSourceData> getStyleAttributeData() const;
276 304
277 RefPtr<Element> m_element; 305 RefPtr<Element> m_element;
278 RefPtr<CSSRuleSourceData> m_ruleSourceData; 306 RefPtr<CSSRuleSourceData> m_ruleSourceData;
279 RefPtr<InspectorStyle> m_inspectorStyle; 307 RefPtr<InspectorStyle> m_inspectorStyle;
280 308
281 // Contains "style" attribute value. 309 // Contains "style" attribute value.
282 mutable String m_styleText; 310 mutable String m_styleText;
283 mutable bool m_isStyleTextValid; 311 mutable bool m_isStyleTextValid;
284 }; 312 };
285 313
286 314
287 } // namespace WebCore 315 } // namespace WebCore
288 316
289 #endif // !defined(InspectorStyleSheet_h) 317 #endif // !defined(InspectorStyleSheet_h)
OLDNEW
« no previous file with comments | « Source/core/inspector/InspectorCSSAgent.cpp ('k') | Source/core/inspector/InspectorStyleSheet.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698