| Index: Source/core/inspector/InspectorCSSAgent.cpp
|
| diff --git a/Source/core/inspector/InspectorCSSAgent.cpp b/Source/core/inspector/InspectorCSSAgent.cpp
|
| index 1382093d40c53e211c2fc0a998617d32d178b628..3cdc8b588aa1f2d222039604e8ec634bf97adfb2 100644
|
| --- a/Source/core/inspector/InspectorCSSAgent.cpp
|
| +++ b/Source/core/inspector/InspectorCSSAgent.cpp
|
| @@ -26,7 +26,6 @@
|
| #include "core/inspector/InspectorCSSAgent.h"
|
|
|
| #include "CSSPropertyNames.h"
|
| -#include "FetchInitiatorTypeNames.h"
|
| #include "InspectorTypeBuilder.h"
|
| #include "StylePropertyShorthand.h"
|
| #include "bindings/v8/ExceptionState.h"
|
| @@ -48,15 +47,10 @@
|
| #include "core/css/resolver/StyleResolver.h"
|
| #include "core/dom/Node.h"
|
| #include "core/dom/NodeList.h"
|
| -#include "core/fetch/CSSStyleSheetResource.h"
|
| -#include "core/fetch/ResourceClient.h"
|
| -#include "core/fetch/ResourceFetcher.h"
|
| -#include "core/fetch/StyleSheetResourceClient.h"
|
| #include "core/frame/LocalFrame.h"
|
| #include "core/html/HTMLHeadElement.h"
|
| #include "core/inspector/InspectorHistory.h"
|
| #include "core/inspector/InspectorPageAgent.h"
|
| -#include "core/inspector/InspectorResourceAgent.h"
|
| #include "core/inspector/InspectorState.h"
|
| #include "core/inspector/InstrumentingAgents.h"
|
| #include "core/loader/DocumentLoader.h"
|
| @@ -77,8 +71,6 @@ namespace CSSAgentState {
|
| static const char cssAgentEnabled[] = "cssAgentEnabled";
|
| }
|
|
|
| -typedef WebCore::InspectorBackendDispatcher::CSSCommandHandler::EnableCallback EnableCallback;
|
| -
|
| namespace WebCore {
|
|
|
| enum ForcePseudoClassFlags {
|
| @@ -127,47 +119,6 @@ public:
|
| }
|
| };
|
|
|
| -class InspectorCSSAgent::EnableResourceClient FINAL : public StyleSheetResourceClient {
|
| -public:
|
| - EnableResourceClient(InspectorCSSAgent*, const Vector<InspectorStyleSheet*>&, PassRefPtr<EnableCallback>);
|
| -
|
| - virtual void setCSSStyleSheet(const String&, const KURL&, const String&, const CSSStyleSheetResource*) OVERRIDE;
|
| -
|
| -private:
|
| - RefPtr<EnableCallback> m_callback;
|
| - InspectorCSSAgent* m_cssAgent;
|
| - int m_pendingResources;
|
| - Vector<InspectorStyleSheet*> m_styleSheets;
|
| -};
|
| -
|
| -InspectorCSSAgent::EnableResourceClient::EnableResourceClient(InspectorCSSAgent* cssAgent, const Vector<InspectorStyleSheet*>& styleSheets, PassRefPtr<EnableCallback> callback)
|
| - : m_callback(callback)
|
| - , m_cssAgent(cssAgent)
|
| - , m_pendingResources(styleSheets.size())
|
| - , m_styleSheets(styleSheets)
|
| -{
|
| - for (size_t i = 0; i < styleSheets.size(); ++i) {
|
| - InspectorStyleSheet* styleSheet = styleSheets.at(i);
|
| - Document* document = styleSheet->ownerDocument();
|
| - FetchRequest request(ResourceRequest(styleSheet->finalURL()), FetchInitiatorTypeNames::internal);
|
| - ResourcePtr<Resource> resource = document->fetcher()->fetchCSSStyleSheet(request);
|
| - resource->addClient(this);
|
| - }
|
| -}
|
| -
|
| -void InspectorCSSAgent::EnableResourceClient::setCSSStyleSheet(const String&, const KURL& url, const String&, const CSSStyleSheetResource* resource)
|
| -{
|
| - const_cast<CSSStyleSheetResource*>(resource)->removeClient(this);
|
| - --m_pendingResources;
|
| - if (m_pendingResources)
|
| - return;
|
| -
|
| - // enable always succeeds.
|
| - if (m_callback->isActive())
|
| - m_cssAgent->wasEnabled(m_callback.release());
|
| - delete this;
|
| -}
|
| -
|
| class InspectorCSSAgent::SetStyleSheetTextAction FINAL : public InspectorCSSAgent::StyleSheetAction {
|
| WTF_MAKE_NONCOPYABLE(SetStyleSheetTextAction);
|
| public:
|
| @@ -355,12 +306,11 @@ CSSStyleRule* InspectorCSSAgent::asCSSStyleRule(CSSRule* rule)
|
| return toCSSStyleRule(rule);
|
| }
|
|
|
| -InspectorCSSAgent::InspectorCSSAgent(InspectorDOMAgent* domAgent, InspectorPageAgent* pageAgent, InspectorResourceAgent* resourceAgent)
|
| +InspectorCSSAgent::InspectorCSSAgent(InspectorDOMAgent* domAgent, InspectorPageAgent* pageAgent)
|
| : InspectorBaseAgent<InspectorCSSAgent>("CSS")
|
| , m_frontend(0)
|
| , m_domAgent(domAgent)
|
| , m_pageAgent(pageAgent)
|
| - , m_resourceAgent(resourceAgent)
|
| , m_lastStyleSheetId(1)
|
| , m_styleSheetsPendingMutation(0)
|
| , m_styleDeclarationPendingMutation(false)
|
| @@ -400,7 +350,7 @@ void InspectorCSSAgent::discardAgent()
|
| void InspectorCSSAgent::restore()
|
| {
|
| if (m_state->getBoolean(CSSAgentState::cssAgentEnabled))
|
| - wasEnabled(nullptr);
|
| + wasEnabled();
|
| }
|
|
|
| void InspectorCSSAgent::flushPendingFrontendMessages()
|
| @@ -430,42 +380,15 @@ void InspectorCSSAgent::resetNonPersistentData()
|
| resetPseudoStates();
|
| }
|
|
|
| -void InspectorCSSAgent::enable(ErrorString*, PassRefPtr<EnableCallback> prpCallback)
|
| +void InspectorCSSAgent::enable(ErrorString*)
|
| {
|
| m_state->setBoolean(CSSAgentState::cssAgentEnabled, true);
|
| -
|
| Vector<InspectorStyleSheet*> styleSheets;
|
| - collectAllStyleSheets(styleSheets);
|
| -
|
| - // Re-issue stylesheet requets for resources that are no longer in memory cache.
|
| - Vector<InspectorStyleSheet*> styleSheetsToFetch;
|
| - HashSet<String> urlsToFetch;
|
| - for (size_t i = 0; i < styleSheets.size(); ++i) {
|
| - InspectorStyleSheet* styleSheet = styleSheets.at(i);
|
| - String url = styleSheet->finalURL();
|
| - if (urlsToFetch.contains(url))
|
| - continue;
|
| - CSSStyleSheet* pageStyleSheet = styleSheet->pageStyleSheet();
|
| - if (pageStyleSheet->isInline() || !pageStyleSheet->contents()->loadCompleted())
|
| - continue;
|
| - Document* document = styleSheet->ownerDocument();
|
| - if (!document)
|
| - continue;
|
| - Resource* cachedResource = document->fetcher()->cachedResource(document->completeURL(url));
|
| - if (cachedResource)
|
| - continue;
|
| - urlsToFetch.add(styleSheet->finalURL());
|
| - styleSheetsToFetch.append(styleSheet);
|
| - }
|
| -
|
| - if (styleSheetsToFetch.isEmpty()) {
|
| - wasEnabled(prpCallback);
|
| - return;
|
| - }
|
| - new EnableResourceClient(this, styleSheetsToFetch, prpCallback);
|
| + bindAllStyleSheets();
|
| + wasEnabled();
|
| }
|
|
|
| -void InspectorCSSAgent::wasEnabled(PassRefPtr<EnableCallback> callback)
|
| +void InspectorCSSAgent::wasEnabled()
|
| {
|
| if (!m_state->getBoolean(CSSAgentState::cssAgentEnabled)) {
|
| // We were disabled while fetching resources.
|
| @@ -476,9 +399,6 @@ void InspectorCSSAgent::wasEnabled(PassRefPtr<EnableCallback> callback)
|
| Vector<Document*> documents = m_domAgent->documents();
|
| for (Vector<Document*>::iterator it = documents.begin(); it != documents.end(); ++it)
|
| updateActiveStyleSheets(*it, InitialFrontendLoad);
|
| -
|
| - if (callback)
|
| - callback->sendSuccess();
|
| }
|
|
|
| void InspectorCSSAgent::disable(ErrorString*)
|
| @@ -545,7 +465,7 @@ void InspectorCSSAgent::activeStyleSheetsUpdated(Document* document)
|
| void InspectorCSSAgent::updateActiveStyleSheets(Document* document, StyleSheetsUpdateType styleSheetsUpdateType)
|
| {
|
| Vector<CSSStyleSheet*> newSheetsVector;
|
| - collectAllDocumentStyleSheets(document, newSheetsVector);
|
| + InspectorCSSAgent::collectAllDocumentStyleSheets(document, newSheetsVector);
|
| setActiveStyleSheets(document, newSheetsVector, styleSheetsUpdateType);
|
| }
|
|
|
| @@ -1108,26 +1028,28 @@ Element* InspectorCSSAgent::elementForId(ErrorString* errorString, int nodeId)
|
| return toElement(node);
|
| }
|
|
|
| -void InspectorCSSAgent::collectAllStyleSheets(Vector<InspectorStyleSheet*>& result)
|
| +void InspectorCSSAgent::bindAllStyleSheets()
|
| {
|
| Vector<CSSStyleSheet*> cssStyleSheets;
|
| Vector<Document*> documents = m_domAgent->documents();
|
| for (Vector<Document*>::iterator it = documents.begin(); it != documents.end(); ++it)
|
| - collectAllDocumentStyleSheets(*it, cssStyleSheets);
|
| + InspectorCSSAgent::collectAllDocumentStyleSheets(*it, cssStyleSheets);
|
| for (Vector<CSSStyleSheet*>::iterator it = cssStyleSheets.begin(); it != cssStyleSheets.end(); ++it)
|
| - result.append(bindStyleSheet(*it));
|
| + bindStyleSheet(*it);
|
| }
|
|
|
| +// static
|
| void InspectorCSSAgent::collectAllDocumentStyleSheets(Document* document, Vector<CSSStyleSheet*>& result)
|
| {
|
| const WillBeHeapVector<RefPtrWillBeMember<StyleSheet> > activeStyleSheets = document->styleEngine()->activeStyleSheetsForInspector();
|
| for (WillBeHeapVector<RefPtrWillBeMember<StyleSheet> >::const_iterator it = activeStyleSheets.begin(); it != activeStyleSheets.end(); ++it) {
|
| StyleSheet* styleSheet = it->get();
|
| if (styleSheet->isCSSStyleSheet())
|
| - collectStyleSheets(toCSSStyleSheet(styleSheet), result);
|
| + InspectorCSSAgent::collectStyleSheets(toCSSStyleSheet(styleSheet), result);
|
| }
|
| }
|
|
|
| +// static
|
| void InspectorCSSAgent::collectStyleSheets(CSSStyleSheet* styleSheet, Vector<CSSStyleSheet*>& result)
|
| {
|
| result.append(styleSheet);
|
| @@ -1136,7 +1058,7 @@ void InspectorCSSAgent::collectStyleSheets(CSSStyleSheet* styleSheet, Vector<CSS
|
| if (rule->type() == CSSRule::IMPORT_RULE) {
|
| CSSStyleSheet* importedStyleSheet = toCSSImportRule(rule)->styleSheet();
|
| if (importedStyleSheet)
|
| - collectStyleSheets(importedStyleSheet, result);
|
| + InspectorCSSAgent::collectStyleSheets(importedStyleSheet, result);
|
| }
|
| }
|
| }
|
| @@ -1147,7 +1069,7 @@ InspectorStyleSheet* InspectorCSSAgent::bindStyleSheet(CSSStyleSheet* styleSheet
|
| if (!inspectorStyleSheet) {
|
| String id = String::number(m_lastStyleSheetId++);
|
| Document* document = styleSheet->ownerDocument();
|
| - inspectorStyleSheet = InspectorStyleSheet::create(m_pageAgent, m_resourceAgent, id, styleSheet, detectOrigin(styleSheet, document), InspectorDOMAgent::documentURLString(document), this);
|
| + inspectorStyleSheet = InspectorStyleSheet::create(m_pageAgent, id, styleSheet, detectOrigin(styleSheet, document), InspectorDOMAgent::documentURLString(document), this);
|
| m_idToInspectorStyleSheet.set(id, inspectorStyleSheet);
|
| m_cssStyleSheetToInspectorStyleSheet.set(styleSheet, inspectorStyleSheet);
|
| if (m_creatingViaInspectorStyleSheet)
|
|
|