OLD | NEW |
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 |
(...skipping 10 matching lines...) Expand all Loading... |
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 "bindings/v8/ExceptionState.h" | 28 #include "bindings/v8/ExceptionState.h" |
29 #include "bindings/v8/ExceptionStatePlaceholder.h" | 29 #include "bindings/v8/ExceptionStatePlaceholder.h" |
30 #include "core/CSSPropertyNames.h" | 30 #include "core/CSSPropertyNames.h" |
| 31 #include "core/FetchInitiatorTypeNames.h" |
31 #include "core/InspectorTypeBuilder.h" | 32 #include "core/InspectorTypeBuilder.h" |
32 #include "core/StylePropertyShorthand.h" | 33 #include "core/StylePropertyShorthand.h" |
33 #include "core/css/CSSComputedStyleDeclaration.h" | 34 #include "core/css/CSSComputedStyleDeclaration.h" |
34 #include "core/css/CSSDefaultStyleSheets.h" | 35 #include "core/css/CSSDefaultStyleSheets.h" |
35 #include "core/css/CSSImportRule.h" | 36 #include "core/css/CSSImportRule.h" |
36 #include "core/css/CSSMediaRule.h" | 37 #include "core/css/CSSMediaRule.h" |
37 #include "core/css/CSSRule.h" | 38 #include "core/css/CSSRule.h" |
38 #include "core/css/CSSRuleList.h" | 39 #include "core/css/CSSRuleList.h" |
39 #include "core/css/CSSStyleRule.h" | 40 #include "core/css/CSSStyleRule.h" |
40 #include "core/css/CSSStyleSheet.h" | 41 #include "core/css/CSSStyleSheet.h" |
41 #include "core/css/MediaList.h" | 42 #include "core/css/MediaList.h" |
42 #include "core/css/MediaQuery.h" | 43 #include "core/css/MediaQuery.h" |
43 #include "core/css/StylePropertySet.h" | 44 #include "core/css/StylePropertySet.h" |
44 #include "core/css/StyleRule.h" | 45 #include "core/css/StyleRule.h" |
45 #include "core/css/StyleSheet.h" | 46 #include "core/css/StyleSheet.h" |
46 #include "core/css/StyleSheetContents.h" | 47 #include "core/css/StyleSheetContents.h" |
47 #include "core/css/StyleSheetList.h" | 48 #include "core/css/StyleSheetList.h" |
48 #include "core/css/resolver/StyleResolver.h" | 49 #include "core/css/resolver/StyleResolver.h" |
49 #include "core/dom/Node.h" | 50 #include "core/dom/Node.h" |
50 #include "core/dom/NodeList.h" | 51 #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" |
51 #include "core/frame/LocalFrame.h" | 56 #include "core/frame/LocalFrame.h" |
52 #include "core/html/HTMLHeadElement.h" | 57 #include "core/html/HTMLHeadElement.h" |
53 #include "core/html/VoidCallback.h" | |
54 #include "core/inspector/InspectorHistory.h" | 58 #include "core/inspector/InspectorHistory.h" |
55 #include "core/inspector/InspectorPageAgent.h" | 59 #include "core/inspector/InspectorPageAgent.h" |
56 #include "core/inspector/InspectorResourceAgent.h" | 60 #include "core/inspector/InspectorResourceAgent.h" |
57 #include "core/inspector/InspectorResourceContentLoader.h" | |
58 #include "core/inspector/InspectorState.h" | 61 #include "core/inspector/InspectorState.h" |
59 #include "core/inspector/InstrumentingAgents.h" | 62 #include "core/inspector/InstrumentingAgents.h" |
60 #include "core/loader/DocumentLoader.h" | 63 #include "core/loader/DocumentLoader.h" |
61 #include "core/page/Page.h" | 64 #include "core/page/Page.h" |
62 #include "core/rendering/InlineTextBox.h" | 65 #include "core/rendering/InlineTextBox.h" |
63 #include "core/rendering/RenderObject.h" | 66 #include "core/rendering/RenderObject.h" |
64 #include "core/rendering/RenderText.h" | 67 #include "core/rendering/RenderText.h" |
65 #include "core/rendering/RenderTextFragment.h" | 68 #include "core/rendering/RenderTextFragment.h" |
66 #include "platform/fonts/Font.h" | 69 #include "platform/fonts/Font.h" |
67 #include "platform/fonts/GlyphBuffer.h" | 70 #include "platform/fonts/GlyphBuffer.h" |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
118 | 121 |
119 class InspectorCSSAgent::StyleSheetAction : public InspectorHistory::Action { | 122 class InspectorCSSAgent::StyleSheetAction : public InspectorHistory::Action { |
120 WTF_MAKE_NONCOPYABLE(StyleSheetAction); | 123 WTF_MAKE_NONCOPYABLE(StyleSheetAction); |
121 public: | 124 public: |
122 StyleSheetAction(const String& name) | 125 StyleSheetAction(const String& name) |
123 : InspectorHistory::Action(name) | 126 : InspectorHistory::Action(name) |
124 { | 127 { |
125 } | 128 } |
126 }; | 129 }; |
127 | 130 |
128 class InspectorCSSAgent::InspectorResourceContentLoaderCallback FINAL : public V
oidCallback { | 131 class InspectorCSSAgent::EnableResourceClient FINAL : public StyleSheetResourceC
lient { |
129 public: | 132 public: |
130 InspectorResourceContentLoaderCallback(InspectorCSSAgent*, PassRefPtr<Enable
Callback>); | 133 EnableResourceClient(InspectorCSSAgent*, const Vector<InspectorStyleSheet*>&
, PassRefPtr<EnableCallback>); |
131 virtual void handleEvent() OVERRIDE; | 134 |
| 135 virtual void setCSSStyleSheet(const String&, const KURL&, const String&, con
st CSSStyleSheetResource*) OVERRIDE; |
132 | 136 |
133 private: | 137 private: |
| 138 RefPtr<EnableCallback> m_callback; |
134 InspectorCSSAgent* m_cssAgent; | 139 InspectorCSSAgent* m_cssAgent; |
135 RefPtr<EnableCallback> m_callback; | 140 int m_pendingResources; |
| 141 Vector<InspectorStyleSheet*> m_styleSheets; |
136 }; | 142 }; |
137 | 143 |
138 InspectorCSSAgent::InspectorResourceContentLoaderCallback::InspectorResourceCont
entLoaderCallback(InspectorCSSAgent* cssAgent, PassRefPtr<EnableCallback> callba
ck) | 144 InspectorCSSAgent::EnableResourceClient::EnableResourceClient(InspectorCSSAgent*
cssAgent, const Vector<InspectorStyleSheet*>& styleSheets, PassRefPtr<EnableCal
lback> callback) |
139 : m_cssAgent(cssAgent) | 145 : m_callback(callback) |
140 , m_callback(callback) | 146 , m_cssAgent(cssAgent) |
| 147 , m_pendingResources(styleSheets.size()) |
| 148 , m_styleSheets(styleSheets) |
141 { | 149 { |
| 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 } |
142 } | 157 } |
143 | 158 |
144 void InspectorCSSAgent::InspectorResourceContentLoaderCallback::handleEvent() | 159 void InspectorCSSAgent::EnableResourceClient::setCSSStyleSheet(const String&, co
nst KURL& url, const String&, const CSSStyleSheetResource* resource) |
145 { | 160 { |
146 // enable always succeeds. | 161 const_cast<CSSStyleSheetResource*>(resource)->removeClient(this); |
147 if (!m_callback->isActive()) | 162 --m_pendingResources; |
| 163 if (m_pendingResources) |
148 return; | 164 return; |
149 | 165 |
150 m_cssAgent->wasEnabled(); | 166 // enable always succeeds. |
151 m_callback->sendSuccess(); | 167 if (m_callback->isActive()) |
| 168 m_cssAgent->wasEnabled(m_callback.release()); |
| 169 delete this; |
152 } | 170 } |
153 | 171 |
154 class InspectorCSSAgent::SetStyleSheetTextAction FINAL : public InspectorCSSAgen
t::StyleSheetAction { | 172 class InspectorCSSAgent::SetStyleSheetTextAction FINAL : public InspectorCSSAgen
t::StyleSheetAction { |
155 WTF_MAKE_NONCOPYABLE(SetStyleSheetTextAction); | 173 WTF_MAKE_NONCOPYABLE(SetStyleSheetTextAction); |
156 public: | 174 public: |
157 SetStyleSheetTextAction(InspectorStyleSheetBase* styleSheet, const String& t
ext) | 175 SetStyleSheetTextAction(InspectorStyleSheetBase* styleSheet, const String& t
ext) |
158 : InspectorCSSAgent::StyleSheetAction("SetStyleSheetText") | 176 : InspectorCSSAgent::StyleSheetAction("SetStyleSheetText") |
159 , m_styleSheet(styleSheet) | 177 , m_styleSheet(styleSheet) |
160 , m_text(text) | 178 , m_text(text) |
161 { | 179 { |
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
376 | 394 |
377 void InspectorCSSAgent::discardAgent() | 395 void InspectorCSSAgent::discardAgent() |
378 { | 396 { |
379 m_domAgent->setDOMListener(0); | 397 m_domAgent->setDOMListener(0); |
380 m_domAgent = 0; | 398 m_domAgent = 0; |
381 } | 399 } |
382 | 400 |
383 void InspectorCSSAgent::restore() | 401 void InspectorCSSAgent::restore() |
384 { | 402 { |
385 if (m_state->getBoolean(CSSAgentState::cssAgentEnabled)) | 403 if (m_state->getBoolean(CSSAgentState::cssAgentEnabled)) |
386 wasEnabled(); | 404 wasEnabled(nullptr); |
387 } | 405 } |
388 | 406 |
389 void InspectorCSSAgent::flushPendingFrontendMessages() | 407 void InspectorCSSAgent::flushPendingFrontendMessages() |
390 { | 408 { |
391 if (!m_invalidatedDocuments.size()) | 409 if (!m_invalidatedDocuments.size()) |
392 return; | 410 return; |
393 HashSet<Document*> invalidatedDocuments; | 411 HashSet<Document*> invalidatedDocuments; |
394 m_invalidatedDocuments.swap(&invalidatedDocuments); | 412 m_invalidatedDocuments.swap(&invalidatedDocuments); |
395 for (HashSet<Document*>::iterator it = invalidatedDocuments.begin(); it != i
nvalidatedDocuments.end(); ++it) | 413 for (HashSet<Document*>::iterator it = invalidatedDocuments.begin(); it != i
nvalidatedDocuments.end(); ++it) |
396 updateActiveStyleSheets(*it, ExistingFrontendRefresh); | 414 updateActiveStyleSheets(*it, ExistingFrontendRefresh); |
(...skipping 12 matching lines...) Expand all Loading... |
409 } | 427 } |
410 | 428 |
411 void InspectorCSSAgent::resetNonPersistentData() | 429 void InspectorCSSAgent::resetNonPersistentData() |
412 { | 430 { |
413 resetPseudoStates(); | 431 resetPseudoStates(); |
414 } | 432 } |
415 | 433 |
416 void InspectorCSSAgent::enable(ErrorString*, PassRefPtr<EnableCallback> prpCallb
ack) | 434 void InspectorCSSAgent::enable(ErrorString*, PassRefPtr<EnableCallback> prpCallb
ack) |
417 { | 435 { |
418 m_state->setBoolean(CSSAgentState::cssAgentEnabled, true); | 436 m_state->setBoolean(CSSAgentState::cssAgentEnabled, true); |
419 if (!m_pageAgent->resourceContentLoader()) { | 437 |
420 wasEnabled(); | 438 Vector<InspectorStyleSheet*> styleSheets; |
421 prpCallback->sendSuccess(); | 439 collectAllStyleSheets(styleSheets); |
| 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); |
422 return; | 464 return; |
423 } | 465 } |
424 m_pageAgent->resourceContentLoader()->addListener(adoptPtr(new InspectorCSSA
gent::InspectorResourceContentLoaderCallback(this, prpCallback))); | 466 new EnableResourceClient(this, styleSheetsToFetch, prpCallback); |
425 } | 467 } |
426 | 468 |
427 void InspectorCSSAgent::wasEnabled() | 469 void InspectorCSSAgent::wasEnabled(PassRefPtr<EnableCallback> callback) |
428 { | 470 { |
429 if (!m_state->getBoolean(CSSAgentState::cssAgentEnabled)) { | 471 if (!m_state->getBoolean(CSSAgentState::cssAgentEnabled)) { |
430 // We were disabled while fetching resources. | 472 // We were disabled while fetching resources. |
431 return; | 473 return; |
432 } | 474 } |
433 | 475 |
434 m_instrumentingAgents->setInspectorCSSAgent(this); | 476 m_instrumentingAgents->setInspectorCSSAgent(this); |
435 Vector<Document*> documents = m_domAgent->documents(); | 477 Vector<Document*> documents = m_domAgent->documents(); |
436 for (Vector<Document*>::iterator it = documents.begin(); it != documents.end
(); ++it) | 478 for (Vector<Document*>::iterator it = documents.begin(); it != documents.end
(); ++it) |
437 updateActiveStyleSheets(*it, InitialFrontendLoad); | 479 updateActiveStyleSheets(*it, InitialFrontendLoad); |
| 480 |
| 481 if (callback) |
| 482 callback->sendSuccess(); |
438 } | 483 } |
439 | 484 |
440 void InspectorCSSAgent::disable(ErrorString*) | 485 void InspectorCSSAgent::disable(ErrorString*) |
441 { | 486 { |
442 reset(); | 487 reset(); |
443 m_instrumentingAgents->setInspectorCSSAgent(0); | 488 m_instrumentingAgents->setInspectorCSSAgent(0); |
444 m_state->setBoolean(CSSAgentState::cssAgentEnabled, false); | 489 m_state->setBoolean(CSSAgentState::cssAgentEnabled, false); |
445 } | 490 } |
446 | 491 |
447 void InspectorCSSAgent::didCommitLoadForMainFrame() | 492 void InspectorCSSAgent::didCommitLoadForMainFrame() |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
494 if (styleSheetEditInProgress()) | 539 if (styleSheetEditInProgress()) |
495 return; | 540 return; |
496 m_invalidatedDocuments.add(document); | 541 m_invalidatedDocuments.add(document); |
497 if (m_creatingViaInspectorStyleSheet) | 542 if (m_creatingViaInspectorStyleSheet) |
498 flushPendingFrontendMessages(); | 543 flushPendingFrontendMessages(); |
499 } | 544 } |
500 | 545 |
501 void InspectorCSSAgent::updateActiveStyleSheets(Document* document, StyleSheetsU
pdateType styleSheetsUpdateType) | 546 void InspectorCSSAgent::updateActiveStyleSheets(Document* document, StyleSheetsU
pdateType styleSheetsUpdateType) |
502 { | 547 { |
503 Vector<CSSStyleSheet*> newSheetsVector; | 548 Vector<CSSStyleSheet*> newSheetsVector; |
504 InspectorCSSAgent::collectAllDocumentStyleSheets(document, newSheetsVector); | 549 collectAllDocumentStyleSheets(document, newSheetsVector); |
505 setActiveStyleSheets(document, newSheetsVector, styleSheetsUpdateType); | 550 setActiveStyleSheets(document, newSheetsVector, styleSheetsUpdateType); |
506 } | 551 } |
507 | 552 |
508 void InspectorCSSAgent::setActiveStyleSheets(Document* document, const Vector<CS
SStyleSheet*>& allSheetsVector, StyleSheetsUpdateType styleSheetsUpdateType) | 553 void InspectorCSSAgent::setActiveStyleSheets(Document* document, const Vector<CS
SStyleSheet*>& allSheetsVector, StyleSheetsUpdateType styleSheetsUpdateType) |
509 { | 554 { |
510 bool isInitialFrontendLoad = styleSheetsUpdateType == InitialFrontendLoad; | 555 bool isInitialFrontendLoad = styleSheetsUpdateType == InitialFrontendLoad; |
511 | 556 |
512 HashSet<CSSStyleSheet*>* documentCSSStyleSheets = m_documentToCSSStyleSheets
.get(document); | 557 HashSet<CSSStyleSheet*>* documentCSSStyleSheets = m_documentToCSSStyleSheets
.get(document); |
513 if (!documentCSSStyleSheets) { | 558 if (!documentCSSStyleSheets) { |
514 documentCSSStyleSheets = new HashSet<CSSStyleSheet*>(); | 559 documentCSSStyleSheets = new HashSet<CSSStyleSheet*>(); |
(...skipping 601 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1116 *errorString = "No node with given id found"; | 1161 *errorString = "No node with given id found"; |
1117 return 0; | 1162 return 0; |
1118 } | 1163 } |
1119 if (!node->isElementNode()) { | 1164 if (!node->isElementNode()) { |
1120 *errorString = "Not an element node"; | 1165 *errorString = "Not an element node"; |
1121 return 0; | 1166 return 0; |
1122 } | 1167 } |
1123 return toElement(node); | 1168 return toElement(node); |
1124 } | 1169 } |
1125 | 1170 |
1126 // static | 1171 void InspectorCSSAgent::collectAllStyleSheets(Vector<InspectorStyleSheet*>& resu
lt) |
| 1172 { |
| 1173 Vector<CSSStyleSheet*> cssStyleSheets; |
| 1174 Vector<Document*> documents = m_domAgent->documents(); |
| 1175 for (Vector<Document*>::iterator it = documents.begin(); it != documents.end
(); ++it) |
| 1176 collectAllDocumentStyleSheets(*it, cssStyleSheets); |
| 1177 for (Vector<CSSStyleSheet*>::iterator it = cssStyleSheets.begin(); it != css
StyleSheets.end(); ++it) |
| 1178 result.append(bindStyleSheet(*it)); |
| 1179 } |
| 1180 |
1127 void InspectorCSSAgent::collectAllDocumentStyleSheets(Document* document, Vector
<CSSStyleSheet*>& result) | 1181 void InspectorCSSAgent::collectAllDocumentStyleSheets(Document* document, Vector
<CSSStyleSheet*>& result) |
1128 { | 1182 { |
1129 const WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet> > activeStyleSheets
= document->styleEngine()->activeStyleSheetsForInspector(); | 1183 const WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet> > activeStyleSheets
= document->styleEngine()->activeStyleSheetsForInspector(); |
1130 for (WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet> >::const_iterator it
= activeStyleSheets.begin(); it != activeStyleSheets.end(); ++it) { | 1184 for (WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet> >::const_iterator it
= activeStyleSheets.begin(); it != activeStyleSheets.end(); ++it) { |
1131 CSSStyleSheet* styleSheet = it->get(); | 1185 CSSStyleSheet* styleSheet = it->get(); |
1132 InspectorCSSAgent::collectStyleSheets(styleSheet, result); | 1186 collectStyleSheets(styleSheet, result); |
1133 } | 1187 } |
1134 } | 1188 } |
1135 | 1189 |
1136 // static | |
1137 void InspectorCSSAgent::collectStyleSheets(CSSStyleSheet* styleSheet, Vector<CSS
StyleSheet*>& result) | 1190 void InspectorCSSAgent::collectStyleSheets(CSSStyleSheet* styleSheet, Vector<CSS
StyleSheet*>& result) |
1138 { | 1191 { |
1139 result.append(styleSheet); | 1192 result.append(styleSheet); |
1140 for (unsigned i = 0, size = styleSheet->length(); i < size; ++i) { | 1193 for (unsigned i = 0, size = styleSheet->length(); i < size; ++i) { |
1141 CSSRule* rule = styleSheet->item(i); | 1194 CSSRule* rule = styleSheet->item(i); |
1142 if (rule->type() == CSSRule::IMPORT_RULE) { | 1195 if (rule->type() == CSSRule::IMPORT_RULE) { |
1143 CSSStyleSheet* importedStyleSheet = toCSSImportRule(rule)->styleShee
t(); | 1196 CSSStyleSheet* importedStyleSheet = toCSSImportRule(rule)->styleShee
t(); |
1144 if (importedStyleSheet) | 1197 if (importedStyleSheet) |
1145 InspectorCSSAgent::collectStyleSheets(importedStyleSheet, result
); | 1198 collectStyleSheets(importedStyleSheet, result); |
1146 } | 1199 } |
1147 } | 1200 } |
1148 } | 1201 } |
1149 | 1202 |
1150 InspectorStyleSheet* InspectorCSSAgent::bindStyleSheet(CSSStyleSheet* styleSheet
) | 1203 InspectorStyleSheet* InspectorCSSAgent::bindStyleSheet(CSSStyleSheet* styleSheet
) |
1151 { | 1204 { |
1152 RefPtr<InspectorStyleSheet> inspectorStyleSheet = m_cssStyleSheetToInspector
StyleSheet.get(styleSheet); | 1205 RefPtr<InspectorStyleSheet> inspectorStyleSheet = m_cssStyleSheetToInspector
StyleSheet.get(styleSheet); |
1153 if (!inspectorStyleSheet) { | 1206 if (!inspectorStyleSheet) { |
1154 String id = String::number(m_lastStyleSheetId++); | 1207 String id = String::number(m_lastStyleSheetId++); |
1155 Document* document = styleSheet->ownerDocument(); | 1208 Document* document = styleSheet->ownerDocument(); |
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1393 documentsToChange.add(element->ownerDocument()); | 1446 documentsToChange.add(element->ownerDocument()); |
1394 } | 1447 } |
1395 | 1448 |
1396 m_nodeIdToForcedPseudoState.clear(); | 1449 m_nodeIdToForcedPseudoState.clear(); |
1397 for (HashSet<Document*>::iterator it = documentsToChange.begin(), end = docu
mentsToChange.end(); it != end; ++it) | 1450 for (HashSet<Document*>::iterator it = documentsToChange.begin(), end = docu
mentsToChange.end(); it != end; ++it) |
1398 (*it)->setNeedsStyleRecalc(SubtreeStyleChange); | 1451 (*it)->setNeedsStyleRecalc(SubtreeStyleChange); |
1399 } | 1452 } |
1400 | 1453 |
1401 } // namespace WebCore | 1454 } // namespace WebCore |
1402 | 1455 |
OLD | NEW |