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

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

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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/inspector/InspectorStyleSheet.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/inspector/InspectorStyleSheet.cpp
diff --git a/Source/core/inspector/InspectorStyleSheet.cpp b/Source/core/inspector/InspectorStyleSheet.cpp
index 479e432e2f2634e69074d431a5d91b4fc902dc8f..d8213cf01c7a9537110af042fb7a32eb593facc1 100644
--- a/Source/core/inspector/InspectorStyleSheet.cpp
+++ b/Source/core/inspector/InspectorStyleSheet.cpp
@@ -504,12 +504,12 @@ static PassRefPtrWillBeRawPtr<CSSRuleList> asCSSRuleList(CSSRule* rule)
return nullptr;
}
-PassRefPtr<InspectorStyle> InspectorStyle::create(const InspectorCSSId& styleId, PassRefPtr<CSSStyleDeclaration> style, InspectorStyleSheet* parentStyleSheet)
+PassRefPtr<InspectorStyle> InspectorStyle::create(const InspectorCSSId& styleId, PassRefPtr<CSSStyleDeclaration> style, InspectorStyleSheetBase* parentStyleSheet)
{
return adoptRef(new InspectorStyle(styleId, style, parentStyleSheet));
}
-InspectorStyle::InspectorStyle(const InspectorCSSId& styleId, PassRefPtr<CSSStyleDeclaration> style, InspectorStyleSheet* parentStyleSheet)
+InspectorStyle::InspectorStyle(const InspectorCSSId& styleId, PassRefPtr<CSSStyleDeclaration> style, InspectorStyleSheetBase* parentStyleSheet)
: m_styleId(styleId)
, m_style(style)
, m_parentStyleSheet(parentStyleSheet)
@@ -830,7 +830,62 @@ NewLineAndWhitespace& InspectorStyle::newLineAndWhitespaceDelimiters() const
Document* InspectorStyle::ownerDocument() const
{
- return m_parentStyleSheet->pageStyleSheet() ? m_parentStyleSheet->pageStyleSheet()->ownerDocument() : 0;
+ return m_parentStyleSheet->ownerDocument();
+}
+
+InspectorStyleSheetBase::InspectorStyleSheetBase(const String& id, Listener* listener)
+ : m_id(id)
+ , m_listener(listener)
+{
+}
+
+bool InspectorStyleSheetBase::setPropertyText(const InspectorCSSId& id, unsigned propertyIndex, const String& text, bool overwrite, String* oldText, ExceptionState& exceptionState)
+{
+ RefPtr<InspectorStyle> inspectorStyle = inspectorStyleForId(id);
+ if (!inspectorStyle) {
+ exceptionState.throwDOMException(NotFoundError, "No property could be found for the given ID.");
+ return false;
+ }
+
+ bool success = inspectorStyle->setPropertyText(propertyIndex, text, overwrite, oldText, exceptionState);
+ if (success)
+ fireStyleSheetChanged();
+ return success;
+}
+
+void InspectorStyleSheetBase::fireStyleSheetChanged()
+{
+ if (listener())
+ listener()->styleSheetChanged(this);
+}
+
+PassRefPtr<TypeBuilder::CSS::CSSStyle> InspectorStyleSheetBase::buildObjectForStyle(CSSStyleDeclaration* style)
+{
+ RefPtr<CSSRuleSourceData> sourceData;
+ if (ensureParsedDataReady())
+ sourceData = ruleSourceDataFor(style);
+
+ InspectorCSSId id = styleId(style);
+ if (id.isEmpty()) {
+ // Any rule coming from User Agent and not from DefaultStyleSheet will not have id.
+ // See InspectorCSSAgent::buildObjectForRule for details.
+ RefPtr<InspectorStyle> inspectorStyle = InspectorStyle::create(id, style, this);
+ return inspectorStyle->buildObjectForStyle();
+ }
+ RefPtr<InspectorStyle> inspectorStyle = inspectorStyleForId(id);
+ RefPtr<TypeBuilder::CSS::CSSStyle> result = inspectorStyle->buildObjectForStyle();
+
+ // Style text cannot be retrieved without stylesheet, so set cssText here.
+ if (sourceData) {
+ String sheetText;
+ bool success = getText(&sheetText);
+ if (success) {
+ const SourceRange& bodyRange = sourceData->ruleBodyRange;
+ result->setCssText(sheetText.substring(bodyRange.start, bodyRange.end - bodyRange.start));
+ }
+ }
+
+ return result.release();
}
PassRefPtr<InspectorStyleSheet> InspectorStyleSheet::create(InspectorPageAgent* pageAgent, InspectorResourceAgent* resourceAgent, const String& id, PassRefPtrWillBeRawPtr<CSSStyleSheet> pageStyleSheet, TypeBuilder::CSS::StyleSheetOrigin::Enum origin, const String& documentURL, Listener* listener)
@@ -839,13 +894,12 @@ PassRefPtr<InspectorStyleSheet> InspectorStyleSheet::create(InspectorPageAgent*
}
InspectorStyleSheet::InspectorStyleSheet(InspectorPageAgent* pageAgent, InspectorResourceAgent* resourceAgent, const String& id, PassRefPtrWillBeRawPtr<CSSStyleSheet> pageStyleSheet, TypeBuilder::CSS::StyleSheetOrigin::Enum origin, const String& documentURL, Listener* listener)
- : m_pageAgent(pageAgent)
+ : InspectorStyleSheetBase(id, listener)
+ , m_pageAgent(pageAgent)
, m_resourceAgent(resourceAgent)
- , m_id(id)
, m_pageStyleSheet(pageStyleSheet)
, m_origin(origin)
, m_documentURL(documentURL)
- , m_listener(listener)
{
m_parsedStyleSheet = adoptPtr(new ParsedStyleSheet(m_pageStyleSheet.get()));
}
@@ -869,8 +923,8 @@ String InspectorStyleSheet::finalURL() const
void InspectorStyleSheet::reparseStyleSheet(const String& text)
{
- if (m_listener)
- m_listener->willReparseStyleSheet();
+ if (listener())
+ listener()->willReparseStyleSheet();
{
// Have a separate scope for clearRules() (bug 95324).
@@ -883,19 +937,14 @@ void InspectorStyleSheet::reparseStyleSheet(const String& text)
m_pageStyleSheet->contents()->parseString(text);
}
- if (m_listener)
- m_listener->didReparseStyleSheet();
+ if (listener())
+ listener()->didReparseStyleSheet();
fireStyleSheetChanged();
m_pageStyleSheet->ownerDocument()->styleResolverChanged(RecalcStyleImmediately, FullStyleUpdate);
}
bool InspectorStyleSheet::setText(const String& text, ExceptionState& exceptionState)
{
- if (!checkPageStyleSheet(exceptionState))
- return false;
- if (!m_parsedStyleSheet)
- return false;
-
m_parsedStyleSheet->setText(text);
m_flatRules.clear();
@@ -914,8 +963,6 @@ String InspectorStyleSheet::ruleSelector(const InspectorCSSId& id, ExceptionStat
bool InspectorStyleSheet::setRuleSelector(const InspectorCSSId& id, const String& selector, ExceptionState& exceptionState)
{
- if (!checkPageStyleSheet(exceptionState))
- return false;
CSSStyleRule* rule = ruleForId(id);
if (!rule) {
exceptionState.throwDOMException(NotFoundError, "No rule was found for the given ID.");
@@ -950,8 +997,6 @@ static bool checkStyleRuleSelector(Document* document, const String& selector)
CSSStyleRule* InspectorStyleSheet::addRule(const String& selector, ExceptionState& exceptionState)
{
- if (!checkPageStyleSheet(exceptionState))
- return 0;
if (!checkStyleRuleSelector(m_pageStyleSheet->ownerDocument(), selector)) {
exceptionState.throwDOMException(SyntaxError, "The selector '" + selector + "' could not be added.");
return 0;
@@ -998,8 +1043,6 @@ CSSStyleRule* InspectorStyleSheet::addRule(const String& selector, ExceptionStat
bool InspectorStyleSheet::deleteRule(const InspectorCSSId& id, ExceptionState& exceptionState)
{
- if (!checkPageStyleSheet(exceptionState))
- return false;
RefPtrWillBeRawPtr<CSSStyleRule> rule = ruleForId(id);
if (!rule) {
exceptionState.throwDOMException(NotFoundError, "No style rule could be found for the provided ID.");
@@ -1146,49 +1189,6 @@ PassRefPtr<TypeBuilder::CSS::CSSRule> InspectorStyleSheet::buildObjectForRule(CS
return result.release();
}
-PassRefPtr<TypeBuilder::CSS::CSSStyle> InspectorStyleSheet::buildObjectForStyle(CSSStyleDeclaration* style)
-{
- RefPtr<CSSRuleSourceData> sourceData;
- if (ensureParsedDataReady())
- sourceData = ruleSourceDataFor(style);
-
- InspectorCSSId id = ruleIdByStyle(style);
- if (id.isEmpty()) {
- // Any rule coming from User Agent and not from DefaultStyleSheet will not have id.
- // See InspectorCSSAgent::buildObjectForRule for details.
- RefPtr<InspectorStyle> inspectorStyle = InspectorStyle::create(id, style, this);
- return inspectorStyle->buildObjectForStyle();
- }
- RefPtr<InspectorStyle> inspectorStyle = inspectorStyleForId(id);
- RefPtr<TypeBuilder::CSS::CSSStyle> result = inspectorStyle->buildObjectForStyle();
-
- // Style text cannot be retrieved without stylesheet, so set cssText here.
- if (sourceData) {
- String sheetText;
- bool success = getText(&sheetText);
- if (success) {
- const SourceRange& bodyRange = sourceData->ruleBodyRange;
- result->setCssText(sheetText.substring(bodyRange.start, bodyRange.end - bodyRange.start));
- }
- }
-
- return result.release();
-}
-
-bool InspectorStyleSheet::setPropertyText(const InspectorCSSId& id, unsigned propertyIndex, const String& text, bool overwrite, String* oldText, ExceptionState& exceptionState)
-{
- RefPtr<InspectorStyle> inspectorStyle = inspectorStyleForId(id);
- if (!inspectorStyle) {
- exceptionState.throwDOMException(NotFoundError, "No property could be found for the given ID.");
- return false;
- }
-
- bool success = inspectorStyle->setPropertyText(propertyIndex, text, overwrite, oldText, exceptionState);
- if (success)
- fireStyleSheetChanged();
- return success;
-}
-
bool InspectorStyleSheet::getText(String* result) const
{
if (!ensureText())
@@ -1206,12 +1206,6 @@ CSSStyleDeclaration* InspectorStyleSheet::styleForId(const InspectorCSSId& id) c
return rule->style();
}
-void InspectorStyleSheet::fireStyleSheetChanged()
-{
- if (m_listener)
- m_listener->styleSheetChanged(this);
-}
-
PassRefPtr<TypeBuilder::CSS::SourceRange> InspectorStyleSheet::ruleHeaderSourceRange(const CSSRule* rule)
{
if (!ensureParsedDataReady())
@@ -1366,8 +1360,6 @@ bool InspectorStyleSheet::ensureParsedDataReady()
bool InspectorStyleSheet::ensureText() const
{
- if (!m_parsedStyleSheet)
- return false;
if (m_parsedStyleSheet->hasText())
return true;
@@ -1415,8 +1407,6 @@ void InspectorStyleSheet::ensureFlatRules() const
bool InspectorStyleSheet::setStyleText(CSSStyleDeclaration* style, const String& text)
{
- if (!m_pageStyleSheet)
- return false;
if (!ensureParsedDataReady())
return false;
@@ -1476,7 +1466,7 @@ bool InspectorStyleSheet::resourceStyleSheetText(String* result) const
if (m_origin == TypeBuilder::CSS::StyleSheetOrigin::User || m_origin == TypeBuilder::CSS::StyleSheetOrigin::User_agent)
return false;
- if (!m_pageStyleSheet || !ownerDocument() || !ownerDocument()->frame())
+ if (!ownerDocument() || !ownerDocument()->frame())
return false;
bool base64Encoded;
@@ -1486,9 +1476,6 @@ bool InspectorStyleSheet::resourceStyleSheetText(String* result) const
bool InspectorStyleSheet::inlineStyleSheetText(String* result) const
{
- if (!m_pageStyleSheet)
- return false;
-
Node* ownerNode = m_pageStyleSheet->ownerNode();
if (!ownerNode || ownerNode->nodeType() != Node::ELEMENT_NODE)
return false;
@@ -1500,13 +1487,13 @@ bool InspectorStyleSheet::inlineStyleSheetText(String* result) const
return true;
}
-PassRefPtr<InspectorStyleSheetForInlineStyle> InspectorStyleSheetForInlineStyle::create(InspectorPageAgent* pageAgent, InspectorResourceAgent* resourceAgent, const String& id, PassRefPtr<Element> element, Listener* listener)
+PassRefPtr<InspectorStyleSheetForInlineStyle> InspectorStyleSheetForInlineStyle::create(const String& id, PassRefPtr<Element> element, Listener* listener)
{
- return adoptRef(new InspectorStyleSheetForInlineStyle(pageAgent, resourceAgent, id, element, listener));
+ return adoptRef(new InspectorStyleSheetForInlineStyle(id, element, listener));
}
-InspectorStyleSheetForInlineStyle::InspectorStyleSheetForInlineStyle(InspectorPageAgent* pageAgent, InspectorResourceAgent* resourceAgent, const String& id, PassRefPtr<Element> element, Listener* listener)
- : InspectorStyleSheet(pageAgent, resourceAgent, id, nullptr, TypeBuilder::CSS::StyleSheetOrigin::Regular, "", listener)
+InspectorStyleSheetForInlineStyle::InspectorStyleSheetForInlineStyle(const String& id, PassRefPtr<Element> element, Listener* listener)
+ : InspectorStyleSheetBase(id, listener)
, m_element(element)
, m_ruleSourceData(nullptr)
, m_isStyleTextValid(false)
« 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