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

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

Issue 16745003: DevTools: Move CSS.CSSMedia construction into InspectorCSSAgent (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Get rid of the ISS->ICSSAgent dependency Created 7 years, 6 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 d03a828e158d1b137a078635ecc7ca552b14debf..c01e71fcbfbaf679f351388c21d1d41dadb055e8 100644
--- a/Source/core/inspector/InspectorStyleSheet.cpp
+++ b/Source/core/inspector/InspectorStyleSheet.cpp
@@ -453,36 +453,6 @@ static PassRefPtr<TypeBuilder::CSS::SourceRange> buildSourceRangeObject(const So
return result.release();
}
-static PassRefPtr<TypeBuilder::CSS::CSSMedia> buildMediaObject(const MediaList* media, MediaListSource mediaListSource, const String& sourceURL)
-{
- // Make certain compilers happy by initializing |source| up-front.
- TypeBuilder::CSS::CSSMedia::Source::Enum source = TypeBuilder::CSS::CSSMedia::Source::InlineSheet;
- switch (mediaListSource) {
- case MediaListSourceMediaRule:
- source = TypeBuilder::CSS::CSSMedia::Source::MediaRule;
- break;
- case MediaListSourceImportRule:
- source = TypeBuilder::CSS::CSSMedia::Source::ImportRule;
- break;
- case MediaListSourceLinkedSheet:
- source = TypeBuilder::CSS::CSSMedia::Source::LinkedSheet;
- break;
- case MediaListSourceInlineSheet:
- source = TypeBuilder::CSS::CSSMedia::Source::InlineSheet;
- break;
- }
-
- RefPtr<TypeBuilder::CSS::CSSMedia> mediaObject = TypeBuilder::CSS::CSSMedia::create()
- .setText(media->mediaText())
- .setSource(source);
-
- if (!sourceURL.isEmpty()) {
- mediaObject->setSourceURL(sourceURL);
- mediaObject->setSourceLine(media->queries()->lastLine());
- }
- return mediaObject.release();
-}
-
static PassRefPtr<CSSRuleList> asCSSRuleList(CSSStyleSheet* styleSheet)
{
if (!styleSheet)
@@ -519,61 +489,6 @@ static PassRefPtr<CSSRuleList> asCSSRuleList(CSSRule* rule)
return 0;
}
-static void fillMediaListChain(CSSRule* rule, Array<TypeBuilder::CSS::CSSMedia>* mediaArray)
-{
- MediaList* mediaList;
- CSSRule* parentRule = rule;
- String sourceURL;
- while (parentRule) {
- CSSStyleSheet* parentStyleSheet = 0;
- bool isMediaRule = true;
- if (parentRule->type() == CSSRule::MEDIA_RULE) {
- CSSMediaRule* mediaRule = static_cast<CSSMediaRule*>(parentRule);
- mediaList = mediaRule->media();
- parentStyleSheet = mediaRule->parentStyleSheet();
- } else if (parentRule->type() == CSSRule::IMPORT_RULE) {
- CSSImportRule* importRule = static_cast<CSSImportRule*>(parentRule);
- mediaList = importRule->media();
- parentStyleSheet = importRule->parentStyleSheet();
- isMediaRule = false;
- } else
- mediaList = 0;
-
- if (parentStyleSheet) {
- sourceURL = parentStyleSheet->contents()->baseURL();
- if (sourceURL.isEmpty())
- sourceURL = InspectorDOMAgent::documentURLString(parentStyleSheet->ownerDocument());
- } else
- sourceURL = "";
-
- if (mediaList && mediaList->length())
- mediaArray->addItem(buildMediaObject(mediaList, isMediaRule ? MediaListSourceMediaRule : MediaListSourceImportRule, sourceURL));
-
- if (parentRule->parentRule())
- parentRule = parentRule->parentRule();
- else {
- CSSStyleSheet* styleSheet = parentRule->parentStyleSheet();
- while (styleSheet) {
- mediaList = styleSheet->media();
- if (mediaList && mediaList->length()) {
- Document* doc = styleSheet->ownerDocument();
- if (doc)
- sourceURL = doc->url();
- else if (!styleSheet->contents()->baseURL().isEmpty())
- sourceURL = styleSheet->contents()->baseURL();
- else
- sourceURL = "";
- mediaArray->addItem(buildMediaObject(mediaList, styleSheet->ownerNode() ? MediaListSourceLinkedSheet : MediaListSourceInlineSheet, sourceURL));
- }
- parentRule = styleSheet->ownerRule();
- if (parentRule)
- break;
- styleSheet = styleSheet->parentStyleSheet();
- }
- }
- }
-}
-
PassRefPtr<InspectorStyle> InspectorStyle::create(const InspectorCSSId& styleId, PassRefPtr<CSSStyleDeclaration> style, InspectorStyleSheet* parentStyleSheet)
{
return adoptRef(new InspectorStyle(styleId, style, parentStyleSheet));
@@ -1038,6 +953,25 @@ String InspectorStyleSheet::styleSheetURL(CSSStyleSheet* pageStyleSheet)
return emptyString();
}
+// static
+void InspectorStyleSheet::collectFlatRules(PassRefPtr<CSSRuleList> ruleList, CSSStyleRuleVector* result)
+{
+ if (!ruleList)
+ return;
+
+ for (unsigned i = 0, size = ruleList->length(); i < size; ++i) {
+ CSSRule* rule = ruleList->item(i);
+ CSSStyleRule* styleRule = InspectorCSSAgent::asCSSStyleRule(rule);
+ if (styleRule) {
+ result->append(styleRule);
+ } else {
+ RefPtr<CSSRuleList> childRuleList = asCSSRuleList(rule);
+ if (childRuleList)
+ collectFlatRules(childRuleList, result);
+ }
+ }
+}
+
InspectorStyleSheet::InspectorStyleSheet(InspectorPageAgent* pageAgent, const String& id, PassRefPtr<CSSStyleSheet> pageStyleSheet, TypeBuilder::CSS::StyleSheetOrigin::Enum origin, const String& documentURL, Listener* listener)
: m_pageAgent(pageAgent)
, m_id(id)
@@ -1231,24 +1165,19 @@ CSSStyleRule* InspectorStyleSheet::ruleForId(const InspectorCSSId& id) const
}
-PassRefPtr<TypeBuilder::CSS::CSSStyleSheetBody> InspectorStyleSheet::buildObjectForStyleSheet()
+bool InspectorStyleSheet::fillObjectForStyleSheet(PassRefPtr<TypeBuilder::CSS::CSSStyleSheetBody> prpResult)
{
CSSStyleSheet* styleSheet = pageStyleSheet();
if (!styleSheet)
- return 0;
-
- RefPtr<CSSRuleList> cssRuleList = asCSSRuleList(styleSheet);
+ return false;
- RefPtr<TypeBuilder::CSS::CSSStyleSheetBody> result = TypeBuilder::CSS::CSSStyleSheetBody::create()
- .setStyleSheetId(id())
- .setRules(buildArrayForRuleList(cssRuleList.get()));
+ RefPtr<TypeBuilder::CSS::CSSStyleSheetBody> result = prpResult;
String styleSheetText;
bool success = getText(&styleSheetText);
if (success)
result->setText(styleSheetText);
-
- return result.release();
+ return success;
}
PassRefPtr<TypeBuilder::CSS::CSSStyleSheetHeader> InspectorStyleSheet::buildObjectForStyleSheetInfo() const
@@ -1327,7 +1256,7 @@ PassRefPtr<TypeBuilder::CSS::SelectorList> InspectorStyleSheet::buildObjectForSe
return result.release();
}
-PassRefPtr<TypeBuilder::CSS::CSSRule> InspectorStyleSheet::buildObjectForRule(CSSStyleRule* rule)
+PassRefPtr<TypeBuilder::CSS::CSSRule> InspectorStyleSheet::buildObjectForRule(CSSStyleRule* rule, PassRefPtr<Array<TypeBuilder::CSS::CSSMedia> > mediaStack)
{
CSSStyleSheet* styleSheet = pageStyleSheet();
if (!styleSheet)
@@ -1350,9 +1279,8 @@ PassRefPtr<TypeBuilder::CSS::CSSRule> InspectorStyleSheet::buildObjectForRule(CS
RefPtr<Array<TypeBuilder::CSS::CSSMedia> > mediaArray = Array<TypeBuilder::CSS::CSSMedia>::create();
- fillMediaListChain(rule, mediaArray.get());
- if (mediaArray->length())
- result->setMedia(mediaArray.release());
+ if (mediaStack)
+ result->setMedia(mediaStack);
return result.release();
}
@@ -1742,40 +1670,6 @@ bool InspectorStyleSheet::inlineStyleSheetText(String* result) const
return true;
}
-PassRefPtr<TypeBuilder::Array<TypeBuilder::CSS::CSSRule> > InspectorStyleSheet::buildArrayForRuleList(CSSRuleList* ruleList)
-{
- RefPtr<TypeBuilder::Array<TypeBuilder::CSS::CSSRule> > result = TypeBuilder::Array<TypeBuilder::CSS::CSSRule>::create();
- if (!ruleList)
- return result.release();
-
- RefPtr<CSSRuleList> refRuleList = ruleList;
- CSSStyleRuleVector rules;
- collectFlatRules(refRuleList, &rules);
-
- for (unsigned i = 0, size = rules.size(); i < size; ++i)
- result->addItem(buildObjectForRule(rules.at(i).get()));
-
- return result.release();
-}
-
-void InspectorStyleSheet::collectFlatRules(PassRefPtr<CSSRuleList> ruleList, CSSStyleRuleVector* result)
-{
- if (!ruleList)
- return;
-
- for (unsigned i = 0, size = ruleList->length(); i < size; ++i) {
- CSSRule* rule = ruleList->item(i);
- CSSStyleRule* styleRule = InspectorCSSAgent::asCSSStyleRule(rule);
- if (styleRule)
- result->append(styleRule);
- else {
- RefPtr<CSSRuleList> childRuleList = asCSSRuleList(rule);
- if (childRuleList)
- collectFlatRules(childRuleList, result);
- }
- }
-}
-
PassRefPtr<InspectorStyleSheetForInlineStyle> InspectorStyleSheetForInlineStyle::create(InspectorPageAgent* pageAgent, const String& id, PassRefPtr<Element> element, TypeBuilder::CSS::StyleSheetOrigin::Enum origin, Listener* listener)
{
return adoptRef(new InspectorStyleSheetForInlineStyle(pageAgent, id, element, origin, listener));
« 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