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

Unified Diff: Source/core/inspector/InspectorStyleSheet.h

Issue 202103002: DevTools: refactor InspectorStyleSheet (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: introduce InspectorStyleSheetBase class 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/inspector/InspectorCSSAgent.cpp ('k') | Source/core/inspector/InspectorStyleSheet.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/inspector/InspectorStyleSheet.h
diff --git a/Source/core/inspector/InspectorStyleSheet.h b/Source/core/inspector/InspectorStyleSheet.h
index 15c218f5e364d60fc6f9f0ef97d786313508addc..e1707d1a2270b7d880c5fa2dbddaffd9e4725b1b 100644
--- a/Source/core/inspector/InspectorStyleSheet.h
+++ b/Source/core/inspector/InspectorStyleSheet.h
@@ -50,7 +50,7 @@ class Element;
class ExceptionState;
class InspectorPageAgent;
class InspectorResourceAgent;
-class InspectorStyleSheet;
+class InspectorStyleSheetBase;
typedef WillBePersistentHeapVector<RefPtrWillBeMember<CSSRule> > CSSRuleVector;
typedef String ErrorString;
@@ -132,7 +132,7 @@ struct InspectorStyleProperty {
class InspectorStyle FINAL : public RefCounted<InspectorStyle> {
public:
- static PassRefPtr<InspectorStyle> create(const InspectorCSSId& styleId, PassRefPtr<CSSStyleDeclaration> style, InspectorStyleSheet* parentStyleSheet);
+ static PassRefPtr<InspectorStyle> create(const InspectorCSSId&, PassRefPtr<CSSStyleDeclaration>, InspectorStyleSheetBase* parentStyleSheet);
CSSStyleDeclaration* cssStyle() const { return m_style.get(); }
PassRefPtr<TypeBuilder::CSS::CSSStyle> buildObjectForStyle() const;
@@ -141,7 +141,7 @@ public:
bool styleText(String* result) const;
private:
- InspectorStyle(const InspectorCSSId& styleId, PassRefPtr<CSSStyleDeclaration> style, InspectorStyleSheet* parentStyleSheet);
+ InspectorStyle(const InspectorCSSId&, PassRefPtr<CSSStyleDeclaration>, InspectorStyleSheetBase* parentStyleSheet);
bool verifyPropertyText(const String& propertyText, bool canOmitSemicolon);
void populateAllProperties(Vector<InspectorStyleProperty>& result) const;
@@ -154,70 +154,104 @@ private:
InspectorCSSId m_styleId;
RefPtr<CSSStyleDeclaration> m_style;
- InspectorStyleSheet* m_parentStyleSheet;
+ InspectorStyleSheetBase* m_parentStyleSheet;
mutable std::pair<String, String> m_format;
mutable bool m_formatAcquired;
};
-class InspectorStyleSheet : public RefCounted<InspectorStyleSheet> {
+class InspectorStyleSheetBase : public RefCounted<InspectorStyleSheetBase> {
public:
class Listener {
public:
Listener() { }
virtual ~Listener() { }
- virtual void styleSheetChanged(InspectorStyleSheet*) = 0;
+ virtual void styleSheetChanged(InspectorStyleSheetBase*) = 0;
virtual void willReparseStyleSheet() = 0;
virtual void didReparseStyleSheet() = 0;
};
+ virtual ~InspectorStyleSheetBase() { }
+ String id() const { return m_id; }
+
+ virtual Document* ownerDocument() const = 0;
+ virtual bool setText(const String&, ExceptionState&) = 0;
+ virtual bool getText(String* result) const = 0;
+ virtual void reparseStyleSheet(const String&) = 0;
+ bool setPropertyText(const InspectorCSSId&, unsigned propertyIndex, const String& text, bool overwrite, String* oldPropertyText, ExceptionState&);
+
+ virtual CSSStyleRule* ruleForId(const InspectorCSSId&) const = 0;
vsevik 2014/03/18 16:25:01 This should be on one subclass only.
lushnikov 2014/03/18 16:32:15 Done.
+ virtual CSSStyleDeclaration* styleForId(const InspectorCSSId&) const = 0;
+ virtual InspectorCSSId ruleId(CSSStyleRule*) const = 0;
vsevik 2014/03/18 16:25:01 ditto
lushnikov 2014/03/18 16:32:15 Done.
+ virtual InspectorCSSId styleId(CSSStyleDeclaration*) const = 0;
+
+ PassRefPtr<TypeBuilder::CSS::CSSStyle> buildObjectForStyle(CSSStyleDeclaration*);
+
+protected:
+ InspectorStyleSheetBase(const String& id, Listener*);
+
+ Listener* listener() const { return m_listener; }
+ void fireStyleSheetChanged();
+
+ virtual PassRefPtr<InspectorStyle> inspectorStyleForId(const InspectorCSSId&) = 0;
+
+ // Also accessed by friend class InspectorStyle.
+ virtual PassRefPtr<CSSRuleSourceData> ruleSourceDataFor(CSSStyleDeclaration*) const = 0;
+ virtual bool setStyleText(CSSStyleDeclaration*, const String&) = 0;
+ virtual PassOwnPtr<Vector<unsigned> > lineEndings() const = 0;
vsevik 2014/03/18 16:25:01 Can we have only one implementation?
lushnikov 2014/03/18 16:32:15 Sure, I'll do it in a follow-up patch if you don't
+ virtual bool ensureParsedDataReady() = 0;
+
+private:
+ friend class InspectorStyle;
+
+ String m_id;
+ Listener* m_listener;
+};
+
+class InspectorStyleSheet : public InspectorStyleSheetBase {
+public:
static PassRefPtr<InspectorStyleSheet> create(InspectorPageAgent*, InspectorResourceAgent*, const String& id, PassRefPtr<CSSStyleSheet> pageStyleSheet, TypeBuilder::CSS::StyleSheetOrigin::Enum, const String& documentURL, Listener*);
virtual ~InspectorStyleSheet();
- String id() const { return m_id; }
String finalURL() const;
- virtual Document* ownerDocument() const;
- CSSStyleSheet* pageStyleSheet() const { return m_pageStyleSheet.get(); }
- virtual void reparseStyleSheet(const String&);
- virtual bool setText(const String&, ExceptionState&);
- virtual bool getText(String* result) const;
+ virtual Document* ownerDocument() const OVERRIDE;
+ virtual void reparseStyleSheet(const String&) OVERRIDE;
+ virtual bool setText(const String&, ExceptionState&) OVERRIDE;
+ virtual bool getText(String* result) const OVERRIDE;
String ruleSelector(const InspectorCSSId&, ExceptionState&);
bool setRuleSelector(const InspectorCSSId&, const String& selector, ExceptionState&);
CSSStyleRule* addRule(const String& selector, ExceptionState&);
bool deleteRule(const InspectorCSSId&, ExceptionState&);
- bool setPropertyText(const InspectorCSSId&, unsigned propertyIndex, const String& text, bool overwrite, String* oldPropertyText, ExceptionState&);
+
+ CSSStyleSheet* pageStyleSheet() const { return m_pageStyleSheet.get(); }
PassRefPtr<TypeBuilder::CSS::CSSStyleSheetHeader> buildObjectForStyleSheetInfo() const;
PassRefPtr<TypeBuilder::CSS::CSSRule> buildObjectForRule(CSSStyleRule*, PassRefPtr<TypeBuilder::Array<TypeBuilder::CSS::CSSMedia> >);
- PassRefPtr<TypeBuilder::CSS::CSSStyle> buildObjectForStyle(CSSStyleDeclaration*);
PassRefPtr<TypeBuilder::CSS::SourceRange> ruleHeaderSourceRange(const CSSRule*);
- InspectorCSSId ruleId(CSSStyleRule*) const;
- InspectorCSSId styleId(CSSStyleDeclaration* style) const { return ruleIdByStyle(style); }
- virtual CSSStyleRule* ruleForId(const InspectorCSSId&) const;
- virtual CSSStyleDeclaration* styleForId(const InspectorCSSId&) const;
+ virtual InspectorCSSId ruleId(CSSStyleRule*) const OVERRIDE;
+ virtual InspectorCSSId styleId(CSSStyleDeclaration* style) const OVERRIDE { return ruleIdByStyle(style); }
+ virtual CSSStyleRule* ruleForId(const InspectorCSSId&) const OVERRIDE;
+ virtual CSSStyleDeclaration* styleForId(const InspectorCSSId&) const OVERRIDE;
protected:
- InspectorStyleSheet(InspectorPageAgent*, InspectorResourceAgent*, const String& id, PassRefPtr<CSSStyleSheet> pageStyleSheet, TypeBuilder::CSS::StyleSheetOrigin::Enum, const String& documentURL, Listener*);
-
- void fireStyleSheetChanged();
- virtual PassRefPtr<CSSRuleSourceData> ruleSourceDataFor(CSSStyleDeclaration*) const;
- virtual unsigned ruleIndexByStyle(CSSStyleDeclaration*) const;
- virtual unsigned ruleIndexByRule(const CSSRule*) const;
- virtual bool ensureParsedDataReady();
- virtual PassRefPtr<InspectorStyle> inspectorStyleForId(const InspectorCSSId&);
- virtual String sourceMapURL() const;
- virtual String sourceURL() const;
+ virtual PassRefPtr<InspectorStyle> inspectorStyleForId(const InspectorCSSId&) OVERRIDE;
// Also accessed by friend class InspectorStyle.
- virtual bool setStyleText(CSSStyleDeclaration*, const String&);
- virtual PassOwnPtr<Vector<unsigned> > lineEndings() const;
+ virtual PassRefPtr<CSSRuleSourceData> ruleSourceDataFor(CSSStyleDeclaration*) const OVERRIDE;
+ virtual bool setStyleText(CSSStyleDeclaration*, const String&) OVERRIDE;
+ virtual PassOwnPtr<Vector<unsigned> > lineEndings() const OVERRIDE;
+ virtual bool ensureParsedDataReady() OVERRIDE;
private:
- friend class InspectorStyle;
+ InspectorStyleSheet(InspectorPageAgent*, InspectorResourceAgent*, const String& id, PassRefPtr<CSSStyleSheet> pageStyleSheet, TypeBuilder::CSS::StyleSheetOrigin::Enum, const String& documentURL, Listener*);
InspectorCSSId ruleIdByStyle(CSSStyleDeclaration*) const;
+ unsigned ruleIndexByStyle(CSSStyleDeclaration*) const;
+ unsigned ruleIndexByRule(const CSSRule*) const;
+ String sourceMapURL() const;
+ String sourceURL() const;
bool checkPageStyleSheet(ExceptionState&) const;
bool ensureText() const;
void ensureFlatRules() const;
@@ -233,43 +267,40 @@ private:
InspectorPageAgent* m_pageAgent;
InspectorResourceAgent* m_resourceAgent;
- String m_id;
RefPtr<CSSStyleSheet> m_pageStyleSheet;
TypeBuilder::CSS::StyleSheetOrigin::Enum m_origin;
String m_documentURL;
OwnPtr<ParsedStyleSheet> m_parsedStyleSheet;
mutable CSSRuleVector m_flatRules;
- Listener* m_listener;
mutable String m_sourceURL;
};
-class InspectorStyleSheetForInlineStyle FINAL : public InspectorStyleSheet {
+class InspectorStyleSheetForInlineStyle FINAL : public InspectorStyleSheetBase {
public:
- static PassRefPtr<InspectorStyleSheetForInlineStyle> create(InspectorPageAgent*, InspectorResourceAgent*, const String& id, PassRefPtr<Element>, Listener*);
+ static PassRefPtr<InspectorStyleSheetForInlineStyle> create(const String& id, PassRefPtr<Element>, Listener*);
void didModifyElementAttribute();
virtual Document* ownerDocument() const OVERRIDE;
virtual void reparseStyleSheet(const String&) OVERRIDE;
virtual bool setText(const String&, ExceptionState&) OVERRIDE;
virtual bool getText(String* result) const OVERRIDE;
+
virtual CSSStyleRule* ruleForId(const InspectorCSSId&) const OVERRIDE { return 0; }
virtual CSSStyleDeclaration* styleForId(const InspectorCSSId& id) const OVERRIDE { ASSERT_UNUSED(id, !id.ordinal()); return inlineStyle(); }
+ virtual InspectorCSSId ruleId(CSSStyleRule*) const OVERRIDE { return InspectorCSSId(); }
+ virtual InspectorCSSId styleId(CSSStyleDeclaration* style) const OVERRIDE { return InspectorCSSId(id(), 0); }
protected:
- InspectorStyleSheetForInlineStyle(InspectorPageAgent*, InspectorResourceAgent*, const String& id, PassRefPtr<Element>, Listener*);
-
- virtual PassRefPtr<CSSRuleSourceData> ruleSourceDataFor(CSSStyleDeclaration* style) const OVERRIDE { ASSERT_UNUSED(style, style == inlineStyle()); return m_ruleSourceData; }
- virtual unsigned ruleIndexByStyle(CSSStyleDeclaration*) const OVERRIDE { return 0; }
- virtual bool ensureParsedDataReady() OVERRIDE;
virtual PassRefPtr<InspectorStyle> inspectorStyleForId(const InspectorCSSId&) OVERRIDE;
- virtual String sourceMapURL() const OVERRIDE { return String(); }
- virtual String sourceURL() const OVERRIDE { return String(); }
// Also accessed by friend class InspectorStyle.
+ virtual bool ensureParsedDataReady() OVERRIDE;
+ virtual PassRefPtr<CSSRuleSourceData> ruleSourceDataFor(CSSStyleDeclaration* style) const OVERRIDE { ASSERT_UNUSED(style, style == inlineStyle()); return m_ruleSourceData; }
virtual bool setStyleText(CSSStyleDeclaration*, const String&) OVERRIDE;
virtual PassOwnPtr<Vector<unsigned> > lineEndings() const OVERRIDE;
private:
+ InspectorStyleSheetForInlineStyle(const String& id, PassRefPtr<Element>, Listener*);
CSSStyleDeclaration* inlineStyle() const;
const String& elementStyleText() const;
PassRefPtr<CSSRuleSourceData> getStyleAttributeData() const;
« 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