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

Side by Side Diff: Source/core/inspector/InspectorCSSAgent.cpp

Issue 267393003: DevTools: Load document (html) content from disk cache in page agent enabling. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/inspector/InspectorCSSAgent.h ('k') | Source/core/inspector/InspectorPageAgent.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010, Google Inc. All rights reserved. 2 * Copyright (C) 2010, Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution. 11 * documentation and/or other materials provided with the distribution.
12 * 12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND AN Y 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND AN Y
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
15 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 15 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
16 * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR AN Y 16 * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR AN Y
17 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 17 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
18 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 18 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
19 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND O N 19 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND O N
20 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 20 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 21 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
22 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 22 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 */ 23 */
24 24
25 #include "config.h" 25 #include "config.h"
26 #include "core/inspector/InspectorCSSAgent.h" 26 #include "core/inspector/InspectorCSSAgent.h"
27 27
28 #include "CSSPropertyNames.h" 28 #include "CSSPropertyNames.h"
29 #include "FetchInitiatorTypeNames.h"
30 #include "InspectorTypeBuilder.h" 29 #include "InspectorTypeBuilder.h"
31 #include "StylePropertyShorthand.h" 30 #include "StylePropertyShorthand.h"
32 #include "bindings/v8/ExceptionState.h" 31 #include "bindings/v8/ExceptionState.h"
33 #include "bindings/v8/ExceptionStatePlaceholder.h" 32 #include "bindings/v8/ExceptionStatePlaceholder.h"
34 #include "core/css/CSSComputedStyleDeclaration.h" 33 #include "core/css/CSSComputedStyleDeclaration.h"
35 #include "core/css/CSSDefaultStyleSheets.h" 34 #include "core/css/CSSDefaultStyleSheets.h"
36 #include "core/css/CSSImportRule.h" 35 #include "core/css/CSSImportRule.h"
37 #include "core/css/CSSMediaRule.h" 36 #include "core/css/CSSMediaRule.h"
38 #include "core/css/CSSRule.h" 37 #include "core/css/CSSRule.h"
39 #include "core/css/CSSRuleList.h" 38 #include "core/css/CSSRuleList.h"
40 #include "core/css/CSSStyleRule.h" 39 #include "core/css/CSSStyleRule.h"
41 #include "core/css/CSSStyleSheet.h" 40 #include "core/css/CSSStyleSheet.h"
42 #include "core/css/MediaList.h" 41 #include "core/css/MediaList.h"
43 #include "core/css/MediaQuery.h" 42 #include "core/css/MediaQuery.h"
44 #include "core/css/StylePropertySet.h" 43 #include "core/css/StylePropertySet.h"
45 #include "core/css/StyleRule.h" 44 #include "core/css/StyleRule.h"
46 #include "core/css/StyleSheet.h" 45 #include "core/css/StyleSheet.h"
47 #include "core/css/StyleSheetContents.h" 46 #include "core/css/StyleSheetContents.h"
48 #include "core/css/StyleSheetList.h" 47 #include "core/css/StyleSheetList.h"
49 #include "core/css/resolver/StyleResolver.h" 48 #include "core/css/resolver/StyleResolver.h"
50 #include "core/dom/Node.h" 49 #include "core/dom/Node.h"
51 #include "core/dom/NodeList.h" 50 #include "core/dom/NodeList.h"
52 #include "core/fetch/CSSStyleSheetResource.h"
53 #include "core/fetch/ResourceClient.h"
54 #include "core/fetch/ResourceFetcher.h"
55 #include "core/fetch/StyleSheetResourceClient.h"
56 #include "core/frame/LocalFrame.h" 51 #include "core/frame/LocalFrame.h"
57 #include "core/html/HTMLHeadElement.h" 52 #include "core/html/HTMLHeadElement.h"
53 #include "core/html/VoidCallback.h"
58 #include "core/inspector/InspectorHistory.h" 54 #include "core/inspector/InspectorHistory.h"
59 #include "core/inspector/InspectorPageAgent.h" 55 #include "core/inspector/InspectorPageAgent.h"
60 #include "core/inspector/InspectorResourceAgent.h" 56 #include "core/inspector/InspectorResourceAgent.h"
57 #include "core/inspector/InspectorResourceContentLoader.h"
61 #include "core/inspector/InspectorState.h" 58 #include "core/inspector/InspectorState.h"
62 #include "core/inspector/InstrumentingAgents.h" 59 #include "core/inspector/InstrumentingAgents.h"
63 #include "core/loader/DocumentLoader.h" 60 #include "core/loader/DocumentLoader.h"
64 #include "core/page/Page.h" 61 #include "core/page/Page.h"
65 #include "core/rendering/InlineTextBox.h" 62 #include "core/rendering/InlineTextBox.h"
66 #include "core/rendering/RenderObject.h" 63 #include "core/rendering/RenderObject.h"
67 #include "core/rendering/RenderText.h" 64 #include "core/rendering/RenderText.h"
68 #include "core/rendering/RenderTextFragment.h" 65 #include "core/rendering/RenderTextFragment.h"
69 #include "platform/fonts/Font.h" 66 #include "platform/fonts/Font.h"
70 #include "platform/fonts/GlyphBuffer.h" 67 #include "platform/fonts/GlyphBuffer.h"
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 118
122 class InspectorCSSAgent::StyleSheetAction : public InspectorHistory::Action { 119 class InspectorCSSAgent::StyleSheetAction : public InspectorHistory::Action {
123 WTF_MAKE_NONCOPYABLE(StyleSheetAction); 120 WTF_MAKE_NONCOPYABLE(StyleSheetAction);
124 public: 121 public:
125 StyleSheetAction(const String& name) 122 StyleSheetAction(const String& name)
126 : InspectorHistory::Action(name) 123 : InspectorHistory::Action(name)
127 { 124 {
128 } 125 }
129 }; 126 };
130 127
131 class InspectorCSSAgent::EnableResourceClient FINAL : public StyleSheetResourceC lient { 128 class InspectorCSSAgent::InspectorResourceContentLoaderCallback FINAL : public V oidCallback {
132 public: 129 public:
133 EnableResourceClient(InspectorCSSAgent*, const Vector<InspectorStyleSheet*>& , PassRefPtr<EnableCallback>); 130 InspectorResourceContentLoaderCallback(InspectorCSSAgent*, PassRefPtr<Enable Callback>);
134 131 virtual void handleEvent() OVERRIDE;
135 virtual void setCSSStyleSheet(const String&, const KURL&, const String&, con st CSSStyleSheetResource*) OVERRIDE;
136 132
137 private: 133 private:
134 InspectorCSSAgent* m_cssAgent;
138 RefPtr<EnableCallback> m_callback; 135 RefPtr<EnableCallback> m_callback;
139 InspectorCSSAgent* m_cssAgent;
140 int m_pendingResources;
141 Vector<InspectorStyleSheet*> m_styleSheets;
142 }; 136 };
143 137
144 InspectorCSSAgent::EnableResourceClient::EnableResourceClient(InspectorCSSAgent* cssAgent, const Vector<InspectorStyleSheet*>& styleSheets, PassRefPtr<EnableCal lback> callback) 138 InspectorCSSAgent::InspectorResourceContentLoaderCallback::InspectorResourceCont entLoaderCallback(InspectorCSSAgent* cssAgent, PassRefPtr<EnableCallback> callba ck)
145 : m_callback(callback) 139 : m_cssAgent(cssAgent)
146 , m_cssAgent(cssAgent) 140 , m_callback(callback)
147 , m_pendingResources(styleSheets.size())
148 , m_styleSheets(styleSheets)
149 { 141 {
150 for (size_t i = 0; i < styleSheets.size(); ++i) {
151 InspectorStyleSheet* styleSheet = styleSheets.at(i);
152 Document* document = styleSheet->ownerDocument();
153 FetchRequest request(ResourceRequest(styleSheet->finalURL()), FetchIniti atorTypeNames::internal);
154 ResourcePtr<Resource> resource = document->fetcher()->fetchCSSStyleSheet (request);
155 resource->addClient(this);
156 }
157 } 142 }
158 143
159 void InspectorCSSAgent::EnableResourceClient::setCSSStyleSheet(const String&, co nst KURL& url, const String&, const CSSStyleSheetResource* resource) 144 void InspectorCSSAgent::InspectorResourceContentLoaderCallback::handleEvent()
160 { 145 {
161 const_cast<CSSStyleSheetResource*>(resource)->removeClient(this); 146 // enable always succeeds.
162 --m_pendingResources; 147 if (!m_callback->isActive())
163 if (m_pendingResources)
164 return; 148 return;
165 149
166 // enable always succeeds. 150 m_cssAgent->wasEnabled();
167 if (m_callback->isActive()) 151 m_callback->sendSuccess();
168 m_cssAgent->wasEnabled(m_callback.release());
169 delete this;
170 } 152 }
171 153
172 class InspectorCSSAgent::SetStyleSheetTextAction FINAL : public InspectorCSSAgen t::StyleSheetAction { 154 class InspectorCSSAgent::SetStyleSheetTextAction FINAL : public InspectorCSSAgen t::StyleSheetAction {
173 WTF_MAKE_NONCOPYABLE(SetStyleSheetTextAction); 155 WTF_MAKE_NONCOPYABLE(SetStyleSheetTextAction);
174 public: 156 public:
175 SetStyleSheetTextAction(InspectorStyleSheetBase* styleSheet, const String& t ext) 157 SetStyleSheetTextAction(InspectorStyleSheetBase* styleSheet, const String& t ext)
176 : InspectorCSSAgent::StyleSheetAction("SetStyleSheetText") 158 : InspectorCSSAgent::StyleSheetAction("SetStyleSheetText")
177 , m_styleSheet(styleSheet) 159 , m_styleSheet(styleSheet)
178 , m_text(text) 160 , m_text(text)
179 { 161 {
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
394 376
395 void InspectorCSSAgent::discardAgent() 377 void InspectorCSSAgent::discardAgent()
396 { 378 {
397 m_domAgent->setDOMListener(0); 379 m_domAgent->setDOMListener(0);
398 m_domAgent = 0; 380 m_domAgent = 0;
399 } 381 }
400 382
401 void InspectorCSSAgent::restore() 383 void InspectorCSSAgent::restore()
402 { 384 {
403 if (m_state->getBoolean(CSSAgentState::cssAgentEnabled)) 385 if (m_state->getBoolean(CSSAgentState::cssAgentEnabled))
404 wasEnabled(nullptr); 386 wasEnabled();
405 } 387 }
406 388
407 void InspectorCSSAgent::flushPendingFrontendMessages() 389 void InspectorCSSAgent::flushPendingFrontendMessages()
408 { 390 {
409 if (!m_invalidatedDocuments.size()) 391 if (!m_invalidatedDocuments.size())
410 return; 392 return;
411 HashSet<Document*> invalidatedDocuments; 393 HashSet<Document*> invalidatedDocuments;
412 m_invalidatedDocuments.swap(&invalidatedDocuments); 394 m_invalidatedDocuments.swap(&invalidatedDocuments);
413 for (HashSet<Document*>::iterator it = invalidatedDocuments.begin(); it != i nvalidatedDocuments.end(); ++it) 395 for (HashSet<Document*>::iterator it = invalidatedDocuments.begin(); it != i nvalidatedDocuments.end(); ++it)
414 updateActiveStyleSheets(*it, ExistingFrontendRefresh); 396 updateActiveStyleSheets(*it, ExistingFrontendRefresh);
(...skipping 12 matching lines...) Expand all
427 } 409 }
428 410
429 void InspectorCSSAgent::resetNonPersistentData() 411 void InspectorCSSAgent::resetNonPersistentData()
430 { 412 {
431 resetPseudoStates(); 413 resetPseudoStates();
432 } 414 }
433 415
434 void InspectorCSSAgent::enable(ErrorString*, PassRefPtr<EnableCallback> prpCallb ack) 416 void InspectorCSSAgent::enable(ErrorString*, PassRefPtr<EnableCallback> prpCallb ack)
435 { 417 {
436 m_state->setBoolean(CSSAgentState::cssAgentEnabled, true); 418 m_state->setBoolean(CSSAgentState::cssAgentEnabled, true);
437 419 if (!m_pageAgent->resourceContentLoader()) {
438 Vector<InspectorStyleSheet*> styleSheets; 420 wasEnabled();
439 collectAllStyleSheets(styleSheets); 421 prpCallback->sendSuccess();
440
441 // Re-issue stylesheet requets for resources that are no longer in memory ca che.
442 Vector<InspectorStyleSheet*> styleSheetsToFetch;
443 HashSet<String> urlsToFetch;
444 for (size_t i = 0; i < styleSheets.size(); ++i) {
445 InspectorStyleSheet* styleSheet = styleSheets.at(i);
446 String url = styleSheet->finalURL();
447 if (urlsToFetch.contains(url))
448 continue;
449 CSSStyleSheet* pageStyleSheet = styleSheet->pageStyleSheet();
450 if (pageStyleSheet->isInline() || !pageStyleSheet->contents()->loadCompl eted())
451 continue;
452 Document* document = styleSheet->ownerDocument();
453 if (!document)
454 continue;
455 Resource* cachedResource = document->fetcher()->cachedResource(document- >completeURL(url));
456 if (cachedResource)
457 continue;
458 urlsToFetch.add(styleSheet->finalURL());
459 styleSheetsToFetch.append(styleSheet);
460 }
461
462 if (styleSheetsToFetch.isEmpty()) {
463 wasEnabled(prpCallback);
464 return; 422 return;
465 } 423 }
466 new EnableResourceClient(this, styleSheetsToFetch, prpCallback); 424 m_pageAgent->resourceContentLoader()->addListener(adoptPtr(new InspectorCSSA gent::InspectorResourceContentLoaderCallback(this, prpCallback)));
467 } 425 }
468 426
469 void InspectorCSSAgent::wasEnabled(PassRefPtr<EnableCallback> callback) 427 void InspectorCSSAgent::wasEnabled()
470 { 428 {
471 if (!m_state->getBoolean(CSSAgentState::cssAgentEnabled)) { 429 if (!m_state->getBoolean(CSSAgentState::cssAgentEnabled)) {
472 // We were disabled while fetching resources. 430 // We were disabled while fetching resources.
473 return; 431 return;
474 } 432 }
475 433
476 m_instrumentingAgents->setInspectorCSSAgent(this); 434 m_instrumentingAgents->setInspectorCSSAgent(this);
477 Vector<Document*> documents = m_domAgent->documents(); 435 Vector<Document*> documents = m_domAgent->documents();
478 for (Vector<Document*>::iterator it = documents.begin(); it != documents.end (); ++it) 436 for (Vector<Document*>::iterator it = documents.begin(); it != documents.end (); ++it)
479 updateActiveStyleSheets(*it, InitialFrontendLoad); 437 updateActiveStyleSheets(*it, InitialFrontendLoad);
480
481 if (callback)
482 callback->sendSuccess();
483 } 438 }
484 439
485 void InspectorCSSAgent::disable(ErrorString*) 440 void InspectorCSSAgent::disable(ErrorString*)
486 { 441 {
487 reset(); 442 reset();
488 m_instrumentingAgents->setInspectorCSSAgent(0); 443 m_instrumentingAgents->setInspectorCSSAgent(0);
489 m_state->setBoolean(CSSAgentState::cssAgentEnabled, false); 444 m_state->setBoolean(CSSAgentState::cssAgentEnabled, false);
490 } 445 }
491 446
492 void InspectorCSSAgent::didCommitLoadForMainFrame() 447 void InspectorCSSAgent::didCommitLoadForMainFrame()
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
539 if (styleSheetEditInProgress()) 494 if (styleSheetEditInProgress())
540 return; 495 return;
541 m_invalidatedDocuments.add(document); 496 m_invalidatedDocuments.add(document);
542 if (m_creatingViaInspectorStyleSheet) 497 if (m_creatingViaInspectorStyleSheet)
543 flushPendingFrontendMessages(); 498 flushPendingFrontendMessages();
544 } 499 }
545 500
546 void InspectorCSSAgent::updateActiveStyleSheets(Document* document, StyleSheetsU pdateType styleSheetsUpdateType) 501 void InspectorCSSAgent::updateActiveStyleSheets(Document* document, StyleSheetsU pdateType styleSheetsUpdateType)
547 { 502 {
548 Vector<CSSStyleSheet*> newSheetsVector; 503 Vector<CSSStyleSheet*> newSheetsVector;
549 collectAllDocumentStyleSheets(document, newSheetsVector); 504 InspectorCSSAgent::collectAllDocumentStyleSheets(document, newSheetsVector);
550 setActiveStyleSheets(document, newSheetsVector, styleSheetsUpdateType); 505 setActiveStyleSheets(document, newSheetsVector, styleSheetsUpdateType);
551 } 506 }
552 507
553 void InspectorCSSAgent::setActiveStyleSheets(Document* document, const Vector<CS SStyleSheet*>& allSheetsVector, StyleSheetsUpdateType styleSheetsUpdateType) 508 void InspectorCSSAgent::setActiveStyleSheets(Document* document, const Vector<CS SStyleSheet*>& allSheetsVector, StyleSheetsUpdateType styleSheetsUpdateType)
554 { 509 {
555 bool isInitialFrontendLoad = styleSheetsUpdateType == InitialFrontendLoad; 510 bool isInitialFrontendLoad = styleSheetsUpdateType == InitialFrontendLoad;
556 511
557 HashSet<CSSStyleSheet*>* documentCSSStyleSheets = m_documentToCSSStyleSheets .get(document); 512 HashSet<CSSStyleSheet*>* documentCSSStyleSheets = m_documentToCSSStyleSheets .get(document);
558 if (!documentCSSStyleSheets) { 513 if (!documentCSSStyleSheets) {
559 documentCSSStyleSheets = new HashSet<CSSStyleSheet*>(); 514 documentCSSStyleSheets = new HashSet<CSSStyleSheet*>();
(...skipping 602 matching lines...) Expand 10 before | Expand all | Expand 10 after
1162 *errorString = "No node with given id found"; 1117 *errorString = "No node with given id found";
1163 return 0; 1118 return 0;
1164 } 1119 }
1165 if (!node->isElementNode()) { 1120 if (!node->isElementNode()) {
1166 *errorString = "Not an element node"; 1121 *errorString = "Not an element node";
1167 return 0; 1122 return 0;
1168 } 1123 }
1169 return toElement(node); 1124 return toElement(node);
1170 } 1125 }
1171 1126
1172 void InspectorCSSAgent::collectAllStyleSheets(Vector<InspectorStyleSheet*>& resu lt) 1127 // static
1173 {
1174 Vector<CSSStyleSheet*> cssStyleSheets;
1175 Vector<Document*> documents = m_domAgent->documents();
1176 for (Vector<Document*>::iterator it = documents.begin(); it != documents.end (); ++it)
1177 collectAllDocumentStyleSheets(*it, cssStyleSheets);
1178 for (Vector<CSSStyleSheet*>::iterator it = cssStyleSheets.begin(); it != css StyleSheets.end(); ++it)
1179 result.append(bindStyleSheet(*it));
1180 }
1181
1182 void InspectorCSSAgent::collectAllDocumentStyleSheets(Document* document, Vector <CSSStyleSheet*>& result) 1128 void InspectorCSSAgent::collectAllDocumentStyleSheets(Document* document, Vector <CSSStyleSheet*>& result)
1183 { 1129 {
1184 const WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet> > activeStyleSheets = document->styleEngine()->activeStyleSheetsForInspector(); 1130 const WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet> > activeStyleSheets = document->styleEngine()->activeStyleSheetsForInspector();
1185 for (WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet> >::const_iterator it = activeStyleSheets.begin(); it != activeStyleSheets.end(); ++it) { 1131 for (WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet> >::const_iterator it = activeStyleSheets.begin(); it != activeStyleSheets.end(); ++it) {
1186 CSSStyleSheet* styleSheet = it->get(); 1132 CSSStyleSheet* styleSheet = it->get();
1187 collectStyleSheets(styleSheet, result); 1133 InspectorCSSAgent::collectStyleSheets(styleSheet, result);
1188 } 1134 }
1189 } 1135 }
1190 1136
1137 // static
1191 void InspectorCSSAgent::collectStyleSheets(CSSStyleSheet* styleSheet, Vector<CSS StyleSheet*>& result) 1138 void InspectorCSSAgent::collectStyleSheets(CSSStyleSheet* styleSheet, Vector<CSS StyleSheet*>& result)
1192 { 1139 {
1193 result.append(styleSheet); 1140 result.append(styleSheet);
1194 for (unsigned i = 0, size = styleSheet->length(); i < size; ++i) { 1141 for (unsigned i = 0, size = styleSheet->length(); i < size; ++i) {
1195 CSSRule* rule = styleSheet->item(i); 1142 CSSRule* rule = styleSheet->item(i);
1196 if (rule->type() == CSSRule::IMPORT_RULE) { 1143 if (rule->type() == CSSRule::IMPORT_RULE) {
1197 CSSStyleSheet* importedStyleSheet = toCSSImportRule(rule)->styleShee t(); 1144 CSSStyleSheet* importedStyleSheet = toCSSImportRule(rule)->styleShee t();
1198 if (importedStyleSheet) 1145 if (importedStyleSheet)
1199 collectStyleSheets(importedStyleSheet, result); 1146 InspectorCSSAgent::collectStyleSheets(importedStyleSheet, result );
1200 } 1147 }
1201 } 1148 }
1202 } 1149 }
1203 1150
1204 InspectorStyleSheet* InspectorCSSAgent::bindStyleSheet(CSSStyleSheet* styleSheet ) 1151 InspectorStyleSheet* InspectorCSSAgent::bindStyleSheet(CSSStyleSheet* styleSheet )
1205 { 1152 {
1206 RefPtr<InspectorStyleSheet> inspectorStyleSheet = m_cssStyleSheetToInspector StyleSheet.get(styleSheet); 1153 RefPtr<InspectorStyleSheet> inspectorStyleSheet = m_cssStyleSheetToInspector StyleSheet.get(styleSheet);
1207 if (!inspectorStyleSheet) { 1154 if (!inspectorStyleSheet) {
1208 String id = String::number(m_lastStyleSheetId++); 1155 String id = String::number(m_lastStyleSheetId++);
1209 Document* document = styleSheet->ownerDocument(); 1156 Document* document = styleSheet->ownerDocument();
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
1447 documentsToChange.add(element->ownerDocument()); 1394 documentsToChange.add(element->ownerDocument());
1448 } 1395 }
1449 1396
1450 m_nodeIdToForcedPseudoState.clear(); 1397 m_nodeIdToForcedPseudoState.clear();
1451 for (HashSet<Document*>::iterator it = documentsToChange.begin(), end = docu mentsToChange.end(); it != end; ++it) 1398 for (HashSet<Document*>::iterator it = documentsToChange.begin(), end = docu mentsToChange.end(); it != end; ++it)
1452 (*it)->setNeedsStyleRecalc(SubtreeStyleChange); 1399 (*it)->setNeedsStyleRecalc(SubtreeStyleChange);
1453 } 1400 }
1454 1401
1455 } // namespace WebCore 1402 } // namespace WebCore
1456 1403
OLDNEW
« no previous file with comments | « Source/core/inspector/InspectorCSSAgent.h ('k') | Source/core/inspector/InspectorPageAgent.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698