Index: Source/core/inspector/InspectorCSSAgent.cpp |
diff --git a/Source/core/inspector/InspectorCSSAgent.cpp b/Source/core/inspector/InspectorCSSAgent.cpp |
index d18aa310a698425582b579a20a7ad310091fd53a..e07fa5d742f6733d99a57c6e0063361af63994e5 100644 |
--- a/Source/core/inspector/InspectorCSSAgent.cpp |
+++ b/Source/core/inspector/InspectorCSSAgent.cpp |
@@ -66,7 +66,6 @@ |
namespace CSSAgentState { |
static const char cssAgentEnabled[] = "cssAgentEnabled"; |
-static const char isSelectorProfiling[] = "isSelectorProfiling"; |
} |
namespace WebCore { |
@@ -79,60 +78,6 @@ enum ForcePseudoClassFlags { |
PseudoVisited = 1 << 3 |
}; |
-struct RuleMatchData { |
- String selector; |
- String url; |
- unsigned lineNumber; |
- double startTime; |
-}; |
- |
-struct RuleMatchingStats { |
- RuleMatchingStats() |
- : lineNumber(0), totalTime(0.0), hits(0), matches(0) |
- { |
- } |
- RuleMatchingStats(const RuleMatchData& data, double totalTime, unsigned hits, unsigned matches) |
- : selector(data.selector), url(data.url), lineNumber(data.lineNumber), totalTime(totalTime), hits(hits), matches(matches) |
- { |
- } |
- |
- String selector; |
- String url; |
- unsigned lineNumber; |
- double totalTime; |
- unsigned hits; |
- unsigned matches; |
-}; |
- |
-class SelectorProfile { |
- WTF_MAKE_FAST_ALLOCATED; |
-public: |
- SelectorProfile() |
- : m_totalMatchingTimeMs(0.0) |
- { |
- } |
- virtual ~SelectorProfile() |
- { |
- } |
- |
- double totalMatchingTimeMs() const { return m_totalMatchingTimeMs; } |
- |
- String makeKey(); |
- void startSelector(const CSSStyleRule*); |
- void commitSelector(bool); |
- void commitSelectorTime(); |
- PassRefPtr<TypeBuilder::CSS::SelectorProfile> toInspectorObject() const; |
- |
-private: |
- |
- // Key is "selector?url:line". |
- typedef HashMap<String, RuleMatchingStats> RuleMatchingStatsMap; |
- |
- double m_totalMatchingTimeMs; |
- RuleMatchingStatsMap m_ruleMatchingStats; |
- RuleMatchData m_currentMatchData; |
-}; |
- |
class StyleSheetAppender { |
public: |
StyleSheetAppender(CSSStyleSheetToInspectorStyleSheet& cssStyleSheetToInspectorStyleSheet, Vector<CSSStyleSheet*>& result) |
@@ -192,72 +137,6 @@ static unsigned computePseudoClassMask(JSONArray* pseudoClassArray) |
return result; |
} |
-inline String SelectorProfile::makeKey() |
-{ |
- return m_currentMatchData.selector + "?" + m_currentMatchData.url + ":" + String::number(m_currentMatchData.lineNumber); |
-} |
- |
-inline void SelectorProfile::startSelector(const CSSStyleRule* rule) |
-{ |
- m_currentMatchData.selector = rule->selectorText(); |
- CSSStyleSheet* styleSheet = rule->parentStyleSheet(); |
- String url = emptyString(); |
- if (styleSheet) { |
- url = InspectorStyleSheet::styleSheetURL(styleSheet); |
- if (url.isEmpty()) |
- url = InspectorDOMAgent::documentURLString(styleSheet->ownerDocument()); |
- } |
- m_currentMatchData.url = url; |
- m_currentMatchData.lineNumber = rule->styleRule()->sourceLine(); |
- m_currentMatchData.startTime = WTF::currentTimeMS(); |
-} |
- |
-inline void SelectorProfile::commitSelector(bool matched) |
-{ |
- double matchTimeMs = WTF::currentTimeMS() - m_currentMatchData.startTime; |
- m_totalMatchingTimeMs += matchTimeMs; |
- |
- RuleMatchingStatsMap::AddResult result = m_ruleMatchingStats.add(makeKey(), RuleMatchingStats(m_currentMatchData, matchTimeMs, 1, matched ? 1 : 0)); |
- if (!result.isNewEntry) { |
- result.iterator->value.totalTime += matchTimeMs; |
- result.iterator->value.hits += 1; |
- if (matched) |
- result.iterator->value.matches += 1; |
- } |
-} |
- |
-inline void SelectorProfile::commitSelectorTime() |
-{ |
- double processingTimeMs = WTF::currentTimeMS() - m_currentMatchData.startTime; |
- m_totalMatchingTimeMs += processingTimeMs; |
- |
- RuleMatchingStatsMap::iterator it = m_ruleMatchingStats.find(makeKey()); |
- if (it == m_ruleMatchingStats.end()) |
- return; |
- |
- it->value.totalTime += processingTimeMs; |
-} |
- |
-PassRefPtr<TypeBuilder::CSS::SelectorProfile> SelectorProfile::toInspectorObject() const |
-{ |
- RefPtr<TypeBuilder::Array<TypeBuilder::CSS::SelectorProfileEntry> > selectorProfileData = TypeBuilder::Array<TypeBuilder::CSS::SelectorProfileEntry>::create(); |
- for (RuleMatchingStatsMap::const_iterator it = m_ruleMatchingStats.begin(); it != m_ruleMatchingStats.end(); ++it) { |
- RefPtr<TypeBuilder::CSS::SelectorProfileEntry> entry = TypeBuilder::CSS::SelectorProfileEntry::create() |
- .setSelector(it->value.selector) |
- .setUrl(it->value.url) |
- .setLineNumber(it->value.lineNumber) |
- .setTime(it->value.totalTime) |
- .setHitCount(it->value.hits) |
- .setMatchCount(it->value.matches); |
- selectorProfileData->addItem(entry.release()); |
- } |
- |
- RefPtr<TypeBuilder::CSS::SelectorProfile> result = TypeBuilder::CSS::SelectorProfile::create() |
- .setTotalTime(totalMatchingTimeMs()) |
- .setData(selectorProfileData); |
- return result.release(); |
-} |
- |
class UpdateRegionLayoutTask { |
public: |
UpdateRegionLayoutTask(InspectorCSSAgent*); |
@@ -865,7 +744,6 @@ void InspectorCSSAgent::clearFrontend() |
ASSERT(m_frontend); |
m_frontend = 0; |
resetNonPersistentData(); |
- stopSelectorProfilerImpl(0, false); |
} |
void InspectorCSSAgent::discardAgent() |
@@ -880,10 +758,6 @@ void InspectorCSSAgent::restore() |
ErrorString error; |
enable(&error); |
} |
- if (m_state->getBoolean(CSSAgentState::isSelectorProfiling)) { |
- String errorString; |
- startSelectorProfiler(&errorString); |
- } |
} |
void InspectorCSSAgent::reset() |
@@ -1472,53 +1346,6 @@ PassRefPtr<TypeBuilder::Array<TypeBuilder::CSS::CSSMedia> > InspectorCSSAgent::b |
return hasItems ? mediaArray : 0; |
} |
-void InspectorCSSAgent::startSelectorProfiler(ErrorString*) |
-{ |
- m_currentSelectorProfile = adoptPtr(new SelectorProfile()); |
- m_state->setBoolean(CSSAgentState::isSelectorProfiling, true); |
-} |
- |
-void InspectorCSSAgent::stopSelectorProfiler(ErrorString* errorString, RefPtr<TypeBuilder::CSS::SelectorProfile>& result) |
-{ |
- result = stopSelectorProfilerImpl(errorString, true); |
-} |
- |
-PassRefPtr<TypeBuilder::CSS::SelectorProfile> InspectorCSSAgent::stopSelectorProfilerImpl(ErrorString*, bool needProfile) |
-{ |
- if (!m_state->getBoolean(CSSAgentState::isSelectorProfiling)) |
- return 0; |
- m_state->setBoolean(CSSAgentState::isSelectorProfiling, false); |
- RefPtr<TypeBuilder::CSS::SelectorProfile> result; |
- if (m_frontend && needProfile) |
- result = m_currentSelectorProfile->toInspectorObject(); |
- m_currentSelectorProfile.clear(); |
- return result.release(); |
-} |
- |
-void InspectorCSSAgent::willMatchRule(StyleRule* rule, InspectorCSSOMWrappers& inspectorCSSOMWrappers, DocumentStyleSheetCollection* styleSheetCollection) |
-{ |
- if (m_currentSelectorProfile) |
- m_currentSelectorProfile->startSelector(inspectorCSSOMWrappers.getWrapperForRuleInSheets(rule, styleSheetCollection)); |
-} |
- |
-void InspectorCSSAgent::didMatchRule(bool matched) |
-{ |
- if (m_currentSelectorProfile) |
- m_currentSelectorProfile->commitSelector(matched); |
-} |
- |
-void InspectorCSSAgent::willProcessRule(StyleRule* rule, StyleResolver* styleResolver) |
-{ |
- if (m_currentSelectorProfile) |
- m_currentSelectorProfile->startSelector(styleResolver->inspectorCSSOMWrappers().getWrapperForRuleInSheets(rule, styleResolver->document()->styleSheetCollection())); |
-} |
- |
-void InspectorCSSAgent::didProcessRule() |
-{ |
- if (m_currentSelectorProfile) |
- m_currentSelectorProfile->commitSelectorTime(); |
-} |
- |
InspectorStyleSheetForInlineStyle* InspectorCSSAgent::asInspectorStyleSheet(Element* element) |
{ |
NodeToInspectorStyleSheet::iterator it = m_nodeToInspectorStyleSheet.find(element); |