DevTools: cleanup InspectorStyleSheet

This patch cleans up InspectorStyleSheet after the InspectorStyleSheet
and InspectorStyleSheetForInlineStyle implementations were separated.
It does the following changes:
- remove InspectorStyleSheet.checkPageStyleSheet as it is never used
- inline InspectorStyleSheet.ruleIndexByRule
- inline method InspectorStyleSheet.ruleIdByStyle into InspectorStyleSheet.styleId
- introduce single implementation for lineEndings in InspectorStyleSheetBase
- eliminate method InspectorStyleSheetBase.reparsestyleSheet

BUG=341506

Review URL: https://codereview.chromium.org/203633003

git-svn-id: svn://svn.chromium.org/blink/trunk@169574 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 1ba5b821
...@@ -187,20 +187,12 @@ public: ...@@ -187,20 +187,12 @@ public:
virtual bool undo(ExceptionState& exceptionState) OVERRIDE virtual bool undo(ExceptionState& exceptionState) OVERRIDE
{ {
if (m_styleSheet->setText(m_oldText, exceptionState)) { return m_styleSheet->setText(m_oldText, exceptionState);
m_styleSheet->reparseStyleSheet(m_oldText);
return true;
}
return false;
} }
virtual bool redo(ExceptionState& exceptionState) OVERRIDE virtual bool redo(ExceptionState& exceptionState) OVERRIDE
{ {
if (m_styleSheet->setText(m_text, exceptionState)) { return m_styleSheet->setText(m_text, exceptionState);
m_styleSheet->reparseStyleSheet(m_text);
return true;
}
return false;
} }
virtual String mergeId() OVERRIDE virtual String mergeId() OVERRIDE
......
...@@ -888,6 +888,14 @@ PassRefPtr<TypeBuilder::CSS::CSSStyle> InspectorStyleSheetBase::buildObjectForSt ...@@ -888,6 +888,14 @@ PassRefPtr<TypeBuilder::CSS::CSSStyle> InspectorStyleSheetBase::buildObjectForSt
return result.release(); return result.release();
} }
PassOwnPtr<Vector<unsigned> > InspectorStyleSheetBase::lineEndings()
{
String text;
if (!getText(&text))
return PassOwnPtr<Vector<unsigned> >();
return WTF::lineEndings(text);
}
PassRefPtr<InspectorStyleSheet> InspectorStyleSheet::create(InspectorPageAgent* pageAgent, InspectorResourceAgent* resourceAgent, const String& id, PassRefPtrWillBeRawPtr<CSSStyleSheet> pageStyleSheet, TypeBuilder::CSS::StyleSheetOrigin::Enum origin, const String& documentURL, Listener* listener) PassRefPtr<InspectorStyleSheet> InspectorStyleSheet::create(InspectorPageAgent* pageAgent, InspectorResourceAgent* resourceAgent, const String& id, PassRefPtrWillBeRawPtr<CSSStyleSheet> pageStyleSheet, TypeBuilder::CSS::StyleSheetOrigin::Enum origin, const String& documentURL, Listener* listener)
{ {
return adoptRef(new InspectorStyleSheet(pageAgent, resourceAgent, id, pageStyleSheet, origin, documentURL, listener)); return adoptRef(new InspectorStyleSheet(pageAgent, resourceAgent, id, pageStyleSheet, origin, documentURL, listener));
...@@ -921,8 +929,11 @@ String InspectorStyleSheet::finalURL() const ...@@ -921,8 +929,11 @@ String InspectorStyleSheet::finalURL() const
return url.isEmpty() ? m_documentURL : url; return url.isEmpty() ? m_documentURL : url;
} }
void InspectorStyleSheet::reparseStyleSheet(const String& text) bool InspectorStyleSheet::setText(const String& text, ExceptionState& exceptionState)
{ {
m_parsedStyleSheet->setText(text);
m_flatRules.clear();
if (listener()) if (listener())
listener()->willReparseStyleSheet(); listener()->willReparseStyleSheet();
...@@ -941,13 +952,6 @@ void InspectorStyleSheet::reparseStyleSheet(const String& text) ...@@ -941,13 +952,6 @@ void InspectorStyleSheet::reparseStyleSheet(const String& text)
listener()->didReparseStyleSheet(); listener()->didReparseStyleSheet();
fireStyleSheetChanged(); fireStyleSheetChanged();
m_pageStyleSheet->ownerDocument()->styleResolverChanged(RecalcStyleImmediately, FullStyleUpdate); m_pageStyleSheet->ownerDocument()->styleResolverChanged(RecalcStyleImmediately, FullStyleUpdate);
}
bool InspectorStyleSheet::setText(const String& text, ExceptionState& exceptionState)
{
m_parsedStyleSheet->setText(text);
m_flatRules.clear();
return true; return true;
} }
...@@ -1033,8 +1037,8 @@ CSSStyleRule* InspectorStyleSheet::addRule(const String& selector, ExceptionStat ...@@ -1033,8 +1037,8 @@ CSSStyleRule* InspectorStyleSheet::addRule(const String& selector, ExceptionStat
styleSheetText.append(selector); styleSheetText.append(selector);
styleSheetText.appendLiteral(" {}"); styleSheetText.appendLiteral(" {}");
// Using setText() as this operation changes the style sheet rule set. m_parsedStyleSheet->setText(styleSheetText.toString());
setText(styleSheetText.toString(), ASSERT_NO_EXCEPTION); m_flatRules.clear();
fireStyleSheetChanged(); fireStyleSheetChanged();
...@@ -1068,7 +1072,8 @@ bool InspectorStyleSheet::deleteRule(const InspectorCSSId& id, ExceptionState& e ...@@ -1068,7 +1072,8 @@ bool InspectorStyleSheet::deleteRule(const InspectorCSSId& id, ExceptionState& e
String sheetText = m_parsedStyleSheet->text(); String sheetText = m_parsedStyleSheet->text();
sheetText.remove(sourceData->ruleHeaderRange.start, sourceData->ruleBodyRange.end - sourceData->ruleHeaderRange.start + 1); sheetText.remove(sourceData->ruleHeaderRange.start, sourceData->ruleBodyRange.end - sourceData->ruleHeaderRange.start + 1);
setText(sheetText, ASSERT_NO_EXCEPTION); m_parsedStyleSheet->setText(sheetText);
m_flatRules.clear();
fireStyleSheetChanged(); fireStyleSheetChanged();
return true; return true;
} }
...@@ -1109,7 +1114,7 @@ PassRefPtr<TypeBuilder::CSS::CSSStyleSheetHeader> InspectorStyleSheet::buildObje ...@@ -1109,7 +1114,7 @@ PassRefPtr<TypeBuilder::CSS::CSSStyleSheetHeader> InspectorStyleSheet::buildObje
return result.release(); return result.release();
} }
PassRefPtr<TypeBuilder::Array<TypeBuilder::CSS::Selector> > InspectorStyleSheet::selectorsFromSource(const CSSRuleSourceData* sourceData, const String& sheetText) const PassRefPtr<TypeBuilder::Array<TypeBuilder::CSS::Selector> > InspectorStyleSheet::selectorsFromSource(const CSSRuleSourceData* sourceData, const String& sheetText)
{ {
ScriptRegexp comment("/\\*[^]*?\\*/", TextCaseSensitive, MultilineEnabled); ScriptRegexp comment("/\\*[^]*?\\*/", TextCaseSensitive, MultilineEnabled);
RefPtr<TypeBuilder::Array<TypeBuilder::CSS::Selector> > result = TypeBuilder::Array<TypeBuilder::CSS::Selector>::create(); RefPtr<TypeBuilder::Array<TypeBuilder::CSS::Selector> > result = TypeBuilder::Array<TypeBuilder::CSS::Selector>::create();
...@@ -1211,9 +1216,11 @@ PassRefPtr<TypeBuilder::CSS::SourceRange> InspectorStyleSheet::ruleHeaderSourceR ...@@ -1211,9 +1216,11 @@ PassRefPtr<TypeBuilder::CSS::SourceRange> InspectorStyleSheet::ruleHeaderSourceR
if (!ensureParsedDataReady()) if (!ensureParsedDataReady())
return nullptr; return nullptr;
RefPtr<CSSRuleSourceData> sourceData = m_parsedStyleSheet->ruleSourceDataAt(ruleIndexByRule(rule)); ensureFlatRules();
if (!sourceData) size_t index = m_flatRules.find(rule);
if (index == kNotFound)
return nullptr; return nullptr;
RefPtr<CSSRuleSourceData> sourceData = m_parsedStyleSheet->ruleSourceDataAt(static_cast<unsigned>(index));
return buildSourceRangeObject(sourceData->ruleHeaderRange, lineEndings().get()); return buildSourceRangeObject(sourceData->ruleHeaderRange, lineEndings().get());
} }
...@@ -1301,7 +1308,7 @@ String InspectorStyleSheet::sourceMapURL() const ...@@ -1301,7 +1308,7 @@ String InspectorStyleSheet::sourceMapURL() const
return m_pageAgent->resourceSourceMapURL(finalURL()); return m_pageAgent->resourceSourceMapURL(finalURL());
} }
InspectorCSSId InspectorStyleSheet::ruleIdByStyle(CSSStyleDeclaration* style) const InspectorCSSId InspectorStyleSheet::styleId(CSSStyleDeclaration* style) const
{ {
unsigned index = ruleIndexByStyle(style); unsigned index = ruleIndexByStyle(style);
if (index != UINT_MAX) if (index != UINT_MAX)
...@@ -1319,13 +1326,6 @@ PassRefPtr<CSSRuleSourceData> InspectorStyleSheet::ruleSourceDataFor(CSSStyleDec ...@@ -1319,13 +1326,6 @@ PassRefPtr<CSSRuleSourceData> InspectorStyleSheet::ruleSourceDataFor(CSSStyleDec
return m_parsedStyleSheet->ruleSourceDataAt(ruleIndexByStyle(style)); return m_parsedStyleSheet->ruleSourceDataAt(ruleIndexByStyle(style));
} }
PassOwnPtr<Vector<unsigned> > InspectorStyleSheet::lineEndings() const
{
if (!m_parsedStyleSheet->hasText())
return PassOwnPtr<Vector<unsigned> >();
return WTF::lineEndings(m_parsedStyleSheet->text());
}
unsigned InspectorStyleSheet::ruleIndexByStyle(CSSStyleDeclaration* pageStyle) const unsigned InspectorStyleSheet::ruleIndexByStyle(CSSStyleDeclaration* pageStyle) const
{ {
ensureFlatRules(); ensureFlatRules();
...@@ -1337,22 +1337,6 @@ unsigned InspectorStyleSheet::ruleIndexByStyle(CSSStyleDeclaration* pageStyle) c ...@@ -1337,22 +1337,6 @@ unsigned InspectorStyleSheet::ruleIndexByStyle(CSSStyleDeclaration* pageStyle) c
return UINT_MAX; return UINT_MAX;
} }
unsigned InspectorStyleSheet::ruleIndexByRule(const CSSRule* rule) const
{
ensureFlatRules();
size_t index = m_flatRules.find(rule);
return index == kNotFound ? UINT_MAX : static_cast<unsigned>(index);
}
bool InspectorStyleSheet::checkPageStyleSheet(ExceptionState& exceptionState) const
{
if (!m_pageStyleSheet) {
exceptionState.throwDOMException(NotSupportedError, "No stylesheet is available.");
return false;
}
return true;
}
bool InspectorStyleSheet::ensureParsedDataReady() bool InspectorStyleSheet::ensureParsedDataReady()
{ {
return ensureText() && m_parsedStyleSheet->ensureSourceData(); return ensureText() && m_parsedStyleSheet->ensureSourceData();
...@@ -1415,7 +1399,7 @@ bool InspectorStyleSheet::setStyleText(CSSStyleDeclaration* style, const String& ...@@ -1415,7 +1399,7 @@ bool InspectorStyleSheet::setStyleText(CSSStyleDeclaration* style, const String&
if (!success) if (!success)
return false; return false;
InspectorCSSId id = ruleIdByStyle(style); InspectorCSSId id = styleId(style);
if (id.isEmpty()) if (id.isEmpty())
return false; return false;
...@@ -1450,7 +1434,7 @@ bool InspectorStyleSheet::styleSheetTextWithChangedStyle(CSSStyleDeclaration* st ...@@ -1450,7 +1434,7 @@ bool InspectorStyleSheet::styleSheetTextWithChangedStyle(CSSStyleDeclaration* st
InspectorCSSId InspectorStyleSheet::ruleId(CSSStyleRule* rule) const InspectorCSSId InspectorStyleSheet::ruleId(CSSStyleRule* rule) const
{ {
return ruleIdByStyle(rule->style()); return styleId(rule->style());
} }
bool InspectorStyleSheet::originalStyleSheetText(String* result) const bool InspectorStyleSheet::originalStyleSheetText(String* result) const
...@@ -1511,16 +1495,13 @@ void InspectorStyleSheetForInlineStyle::didModifyElementAttribute() ...@@ -1511,16 +1495,13 @@ void InspectorStyleSheetForInlineStyle::didModifyElementAttribute()
m_ruleSourceData.clear(); m_ruleSourceData.clear();
} }
void InspectorStyleSheetForInlineStyle::reparseStyleSheet(const String& text)
{
fireStyleSheetChanged();
}
bool InspectorStyleSheetForInlineStyle::setText(const String& text, ExceptionState& exceptionState) bool InspectorStyleSheetForInlineStyle::setText(const String& text, ExceptionState& exceptionState)
{ {
bool success = setStyleText(inlineStyle(), text); bool success = setStyleText(inlineStyle(), text);
if (!success) if (!success)
exceptionState.throwDOMException(SyntaxError, "Style sheet text is invalid."); exceptionState.throwDOMException(SyntaxError, "Style sheet text is invalid.");
else
fireStyleSheetChanged();
return success; return success;
} }
...@@ -1550,11 +1531,6 @@ bool InspectorStyleSheetForInlineStyle::setStyleText(CSSStyleDeclaration* style, ...@@ -1550,11 +1531,6 @@ bool InspectorStyleSheetForInlineStyle::setStyleText(CSSStyleDeclaration* style,
return !exceptionState.hadException(); return !exceptionState.hadException();
} }
PassOwnPtr<Vector<unsigned> > InspectorStyleSheetForInlineStyle::lineEndings() const
{
return WTF::lineEndings(elementStyleText());
}
Document* InspectorStyleSheetForInlineStyle::ownerDocument() const Document* InspectorStyleSheetForInlineStyle::ownerDocument() const
{ {
return &m_element->document(); return &m_element->document();
......
...@@ -176,7 +176,6 @@ public: ...@@ -176,7 +176,6 @@ public:
virtual Document* ownerDocument() const = 0; virtual Document* ownerDocument() const = 0;
virtual bool setText(const String&, ExceptionState&) = 0; virtual bool setText(const String&, ExceptionState&) = 0;
virtual bool getText(String* result) const = 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&); bool setPropertyText(const InspectorCSSId&, unsigned propertyIndex, const String& text, bool overwrite, String* oldPropertyText, ExceptionState&);
virtual CSSStyleDeclaration* styleForId(const InspectorCSSId&) const = 0; virtual CSSStyleDeclaration* styleForId(const InspectorCSSId&) const = 0;
...@@ -189,13 +188,13 @@ protected: ...@@ -189,13 +188,13 @@ protected:
Listener* listener() const { return m_listener; } Listener* listener() const { return m_listener; }
void fireStyleSheetChanged(); void fireStyleSheetChanged();
PassOwnPtr<Vector<unsigned> > lineEndings();
virtual PassRefPtr<InspectorStyle> inspectorStyleForId(const InspectorCSSId&) = 0; virtual PassRefPtr<InspectorStyle> inspectorStyleForId(const InspectorCSSId&) = 0;
// Also accessed by friend class InspectorStyle. // Also accessed by friend class InspectorStyle.
virtual PassRefPtr<CSSRuleSourceData> ruleSourceDataFor(CSSStyleDeclaration*) const = 0; virtual PassRefPtr<CSSRuleSourceData> ruleSourceDataFor(CSSStyleDeclaration*) const = 0;
virtual bool setStyleText(CSSStyleDeclaration*, const String&) = 0; virtual bool setStyleText(CSSStyleDeclaration*, const String&) = 0;
virtual PassOwnPtr<Vector<unsigned> > lineEndings() const = 0;
virtual bool ensureParsedDataReady() = 0; virtual bool ensureParsedDataReady() = 0;
private: private:
...@@ -213,7 +212,6 @@ public: ...@@ -213,7 +212,6 @@ public:
String finalURL() const; String finalURL() const;
virtual Document* ownerDocument() const OVERRIDE; virtual Document* ownerDocument() const OVERRIDE;
virtual void reparseStyleSheet(const String&) OVERRIDE;
virtual bool setText(const String&, ExceptionState&) OVERRIDE; virtual bool setText(const String&, ExceptionState&) OVERRIDE;
virtual bool getText(String* result) const OVERRIDE; virtual bool getText(String* result) const OVERRIDE;
String ruleSelector(const InspectorCSSId&, ExceptionState&); String ruleSelector(const InspectorCSSId&, ExceptionState&);
...@@ -231,7 +229,7 @@ public: ...@@ -231,7 +229,7 @@ public:
InspectorCSSId ruleId(CSSStyleRule*) const; InspectorCSSId ruleId(CSSStyleRule*) const;
CSSStyleRule* ruleForId(const InspectorCSSId&) const; CSSStyleRule* ruleForId(const InspectorCSSId&) const;
virtual InspectorCSSId styleId(CSSStyleDeclaration* style) const OVERRIDE { return ruleIdByStyle(style); } virtual InspectorCSSId styleId(CSSStyleDeclaration*) const OVERRIDE;
virtual CSSStyleDeclaration* styleForId(const InspectorCSSId&) const OVERRIDE; virtual CSSStyleDeclaration* styleForId(const InspectorCSSId&) const OVERRIDE;
protected: protected:
...@@ -240,25 +238,21 @@ protected: ...@@ -240,25 +238,21 @@ protected:
// Also accessed by friend class InspectorStyle. // Also accessed by friend class InspectorStyle.
virtual PassRefPtr<CSSRuleSourceData> ruleSourceDataFor(CSSStyleDeclaration*) const OVERRIDE; virtual PassRefPtr<CSSRuleSourceData> ruleSourceDataFor(CSSStyleDeclaration*) const OVERRIDE;
virtual bool setStyleText(CSSStyleDeclaration*, const String&) OVERRIDE; virtual bool setStyleText(CSSStyleDeclaration*, const String&) OVERRIDE;
virtual PassOwnPtr<Vector<unsigned> > lineEndings() const OVERRIDE;
virtual bool ensureParsedDataReady() OVERRIDE; virtual bool ensureParsedDataReady() OVERRIDE;
private: private:
InspectorStyleSheet(InspectorPageAgent*, InspectorResourceAgent*, const String& id, PassRefPtrWillBeRawPtr<CSSStyleSheet> pageStyleSheet, TypeBuilder::CSS::StyleSheetOrigin::Enum, const String& documentURL, Listener*); InspectorStyleSheet(InspectorPageAgent*, InspectorResourceAgent*, const String& id, PassRefPtrWillBeRawPtr<CSSStyleSheet> pageStyleSheet, TypeBuilder::CSS::StyleSheetOrigin::Enum, const String& documentURL, Listener*);
InspectorCSSId ruleIdByStyle(CSSStyleDeclaration*) const;
unsigned ruleIndexByStyle(CSSStyleDeclaration*) const; unsigned ruleIndexByStyle(CSSStyleDeclaration*) const;
unsigned ruleIndexByRule(const CSSRule*) const;
String sourceMapURL() const; String sourceMapURL() const;
String sourceURL() const; String sourceURL() const;
bool checkPageStyleSheet(ExceptionState&) const;
bool ensureText() const; bool ensureText() const;
void ensureFlatRules() const; void ensureFlatRules() const;
bool styleSheetTextWithChangedStyle(CSSStyleDeclaration*, const String& newStyleText, String* result); bool styleSheetTextWithChangedStyle(CSSStyleDeclaration*, const String& newStyleText, String* result);
bool originalStyleSheetText(String* result) const; bool originalStyleSheetText(String* result) const;
bool resourceStyleSheetText(String* result) const; bool resourceStyleSheetText(String* result) const;
bool inlineStyleSheetText(String* result) const; bool inlineStyleSheetText(String* result) const;
PassRefPtr<TypeBuilder::Array<TypeBuilder::CSS::Selector> > selectorsFromSource(const CSSRuleSourceData*, const String&) const; PassRefPtr<TypeBuilder::Array<TypeBuilder::CSS::Selector> > selectorsFromSource(const CSSRuleSourceData*, const String&);
PassRefPtr<TypeBuilder::CSS::SelectorList> buildObjectForSelectorList(CSSStyleRule*); PassRefPtr<TypeBuilder::CSS::SelectorList> buildObjectForSelectorList(CSSStyleRule*);
String url() const; String url() const;
bool hasSourceURL() const; bool hasSourceURL() const;
...@@ -280,7 +274,6 @@ public: ...@@ -280,7 +274,6 @@ public:
void didModifyElementAttribute(); void didModifyElementAttribute();
virtual Document* ownerDocument() const OVERRIDE; virtual Document* ownerDocument() const OVERRIDE;
virtual void reparseStyleSheet(const String&) OVERRIDE;
virtual bool setText(const String&, ExceptionState&) OVERRIDE; virtual bool setText(const String&, ExceptionState&) OVERRIDE;
virtual bool getText(String* result) const OVERRIDE; virtual bool getText(String* result) const OVERRIDE;
...@@ -294,7 +287,6 @@ protected: ...@@ -294,7 +287,6 @@ protected:
virtual bool ensureParsedDataReady() OVERRIDE; virtual bool ensureParsedDataReady() OVERRIDE;
virtual PassRefPtr<CSSRuleSourceData> ruleSourceDataFor(CSSStyleDeclaration* style) const OVERRIDE { ASSERT_UNUSED(style, style == inlineStyle()); return m_ruleSourceData; } virtual PassRefPtr<CSSRuleSourceData> ruleSourceDataFor(CSSStyleDeclaration* style) const OVERRIDE { ASSERT_UNUSED(style, style == inlineStyle()); return m_ruleSourceData; }
virtual bool setStyleText(CSSStyleDeclaration*, const String&) OVERRIDE; virtual bool setStyleText(CSSStyleDeclaration*, const String&) OVERRIDE;
virtual PassOwnPtr<Vector<unsigned> > lineEndings() const OVERRIDE;
private: private:
InspectorStyleSheetForInlineStyle(const String& id, PassRefPtr<Element>, Listener*); InspectorStyleSheetForInlineStyle(const String& id, PassRefPtr<Element>, Listener*);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment