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 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
366 , m_styleSheetsPendingMutation(0) | 366 , m_styleSheetsPendingMutation(0) |
367 , m_styleDeclarationPendingMutation(false) | 367 , m_styleDeclarationPendingMutation(false) |
368 , m_creatingViaInspectorStyleSheet(false) | 368 , m_creatingViaInspectorStyleSheet(false) |
369 , m_isSettingStyleSheetText(false) | 369 , m_isSettingStyleSheetText(false) |
370 { | 370 { |
371 m_domAgent->setDOMListener(this); | 371 m_domAgent->setDOMListener(this); |
372 } | 372 } |
373 | 373 |
374 InspectorCSSAgent::~InspectorCSSAgent() | 374 InspectorCSSAgent::~InspectorCSSAgent() |
375 { | 375 { |
| 376 #if !ENABLE(OILPAN) |
376 ASSERT(!m_domAgent); | 377 ASSERT(!m_domAgent); |
377 reset(); | 378 reset(); |
| 379 #endif |
378 } | 380 } |
379 | 381 |
380 void InspectorCSSAgent::setFrontend(InspectorFrontend* frontend) | 382 void InspectorCSSAgent::setFrontend(InspectorFrontend* frontend) |
381 { | 383 { |
382 ASSERT(!m_frontend); | 384 ASSERT(!m_frontend); |
383 m_frontend = frontend->css(); | 385 m_frontend = frontend->css(); |
384 } | 386 } |
385 | 387 |
386 void InspectorCSSAgent::clearFrontend() | 388 void InspectorCSSAgent::clearFrontend() |
387 { | 389 { |
388 ASSERT(m_frontend); | 390 ASSERT(m_frontend); |
389 ErrorString error; | 391 ErrorString error; |
390 disable(&error); | 392 disable(&error); |
391 m_frontend = 0; | 393 m_frontend = 0; |
392 resetNonPersistentData(); | 394 resetNonPersistentData(); |
393 } | 395 } |
394 | 396 |
395 void InspectorCSSAgent::discardAgent() | 397 void InspectorCSSAgent::discardAgent() |
396 { | 398 { |
397 m_domAgent->setDOMListener(0); | 399 m_domAgent->setDOMListener(0); |
398 m_domAgent = 0; | 400 m_domAgent = nullptr; |
399 } | 401 } |
400 | 402 |
401 void InspectorCSSAgent::restore() | 403 void InspectorCSSAgent::restore() |
402 { | 404 { |
403 if (m_state->getBoolean(CSSAgentState::cssAgentEnabled)) | 405 if (m_state->getBoolean(CSSAgentState::cssAgentEnabled)) |
404 wasEnabled(nullptr); | 406 wasEnabled(nullptr); |
405 } | 407 } |
406 | 408 |
407 void InspectorCSSAgent::flushPendingFrontendMessages() | 409 void InspectorCSSAgent::flushPendingFrontendMessages() |
408 { | 410 { |
409 if (!m_invalidatedDocuments.size()) | 411 if (!m_invalidatedDocuments.size()) |
410 return; | 412 return; |
411 HashSet<Document*> invalidatedDocuments; | 413 WillBeHeapHashSet<RawPtrWillBeMember<Document> > invalidatedDocuments; |
412 m_invalidatedDocuments.swap(&invalidatedDocuments); | 414 m_invalidatedDocuments.swap(&invalidatedDocuments); |
413 for (HashSet<Document*>::iterator it = invalidatedDocuments.begin(); it != i
nvalidatedDocuments.end(); ++it) | 415 for (WillBeHeapHashSet<RawPtrWillBeMember<Document> >::iterator it = invalid
atedDocuments.begin(); it != invalidatedDocuments.end(); ++it) |
414 updateActiveStyleSheets(*it, ExistingFrontendRefresh); | 416 updateActiveStyleSheets(*it, ExistingFrontendRefresh); |
415 } | 417 } |
416 | 418 |
417 void InspectorCSSAgent::reset() | 419 void InspectorCSSAgent::reset() |
418 { | 420 { |
419 m_idToInspectorStyleSheet.clear(); | 421 m_idToInspectorStyleSheet.clear(); |
420 m_idToInspectorStyleSheetForInlineStyle.clear(); | 422 m_idToInspectorStyleSheetForInlineStyle.clear(); |
421 m_cssStyleSheetToInspectorStyleSheet.clear(); | 423 m_cssStyleSheetToInspectorStyleSheet.clear(); |
422 m_documentToCSSStyleSheets.clear(); | 424 m_documentToCSSStyleSheets.clear(); |
423 m_invalidatedDocuments.clear(); | 425 m_invalidatedDocuments.clear(); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
467 } | 469 } |
468 | 470 |
469 void InspectorCSSAgent::wasEnabled(PassRefPtr<EnableCallback> callback) | 471 void InspectorCSSAgent::wasEnabled(PassRefPtr<EnableCallback> callback) |
470 { | 472 { |
471 if (!m_state->getBoolean(CSSAgentState::cssAgentEnabled)) { | 473 if (!m_state->getBoolean(CSSAgentState::cssAgentEnabled)) { |
472 // We were disabled while fetching resources. | 474 // We were disabled while fetching resources. |
473 return; | 475 return; |
474 } | 476 } |
475 | 477 |
476 m_instrumentingAgents->setInspectorCSSAgent(this); | 478 m_instrumentingAgents->setInspectorCSSAgent(this); |
477 Vector<Document*> documents = m_domAgent->documents(); | 479 WillBeHeapVector<RawPtrWillBeMember<Document> > documents = m_domAgent->docu
ments(); |
478 for (Vector<Document*>::iterator it = documents.begin(); it != documents.end
(); ++it) | 480 for (WillBeHeapVector<RawPtrWillBeMember<Document> >::iterator it = document
s.begin(); it != documents.end(); ++it) |
479 updateActiveStyleSheets(*it, InitialFrontendLoad); | 481 updateActiveStyleSheets(*it, InitialFrontendLoad); |
480 | 482 |
481 if (callback) | 483 if (callback) |
482 callback->sendSuccess(); | 484 callback->sendSuccess(); |
483 } | 485 } |
484 | 486 |
485 void InspectorCSSAgent::disable(ErrorString*) | 487 void InspectorCSSAgent::disable(ErrorString*) |
486 { | 488 { |
487 reset(); | 489 reset(); |
488 m_instrumentingAgents->setInspectorCSSAgent(0); | 490 m_instrumentingAgents->setInspectorCSSAgent(0); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
538 { | 540 { |
539 if (styleSheetEditInProgress()) | 541 if (styleSheetEditInProgress()) |
540 return; | 542 return; |
541 m_invalidatedDocuments.add(document); | 543 m_invalidatedDocuments.add(document); |
542 if (m_creatingViaInspectorStyleSheet) | 544 if (m_creatingViaInspectorStyleSheet) |
543 flushPendingFrontendMessages(); | 545 flushPendingFrontendMessages(); |
544 } | 546 } |
545 | 547 |
546 void InspectorCSSAgent::updateActiveStyleSheets(Document* document, StyleSheetsU
pdateType styleSheetsUpdateType) | 548 void InspectorCSSAgent::updateActiveStyleSheets(Document* document, StyleSheetsU
pdateType styleSheetsUpdateType) |
547 { | 549 { |
548 Vector<CSSStyleSheet*> newSheetsVector; | 550 WillBeHeapVector<RawPtrWillBeMember<CSSStyleSheet> > newSheetsVector; |
549 collectAllDocumentStyleSheets(document, newSheetsVector); | 551 collectAllDocumentStyleSheets(document, newSheetsVector); |
550 setActiveStyleSheets(document, newSheetsVector, styleSheetsUpdateType); | 552 setActiveStyleSheets(document, newSheetsVector, styleSheetsUpdateType); |
551 } | 553 } |
552 | 554 |
553 void InspectorCSSAgent::setActiveStyleSheets(Document* document, const Vector<CS
SStyleSheet*>& allSheetsVector, StyleSheetsUpdateType styleSheetsUpdateType) | 555 void InspectorCSSAgent::setActiveStyleSheets(Document* document, const WillBeHea
pVector<RawPtrWillBeMember<CSSStyleSheet> >& allSheetsVector, StyleSheetsUpdateT
ype styleSheetsUpdateType) |
554 { | 556 { |
555 bool isInitialFrontendLoad = styleSheetsUpdateType == InitialFrontendLoad; | 557 bool isInitialFrontendLoad = styleSheetsUpdateType == InitialFrontendLoad; |
556 | 558 |
557 HashSet<CSSStyleSheet*>* documentCSSStyleSheets = m_documentToCSSStyleSheets
.get(document); | 559 WillBeHeapHashSet<RawPtrWillBeMember<CSSStyleSheet> >* documentCSSStyleSheet
s = m_documentToCSSStyleSheets.get(document); |
558 if (!documentCSSStyleSheets) { | 560 if (!documentCSSStyleSheets) { |
559 documentCSSStyleSheets = new HashSet<CSSStyleSheet*>(); | 561 documentCSSStyleSheets = new WillBeHeapHashSet<RawPtrWillBeMember<CSSSty
leSheet> >(); |
560 OwnPtr<HashSet<CSSStyleSheet*> > documentCSSStyleSheetsPtr = adoptPtr(do
cumentCSSStyleSheets); | 562 OwnPtrWillBeRawPtr<WillBeHeapHashSet<RawPtrWillBeMember<CSSStyleSheet> >
> documentCSSStyleSheetsPtr = adoptPtrWillBeNoop(documentCSSStyleSheets); |
561 m_documentToCSSStyleSheets.set(document, documentCSSStyleSheetsPtr.relea
se()); | 563 m_documentToCSSStyleSheets.set(document, documentCSSStyleSheetsPtr.relea
se()); |
562 } | 564 } |
563 | 565 |
564 HashSet<CSSStyleSheet*> removedSheets(*documentCSSStyleSheets); | 566 WillBeHeapHashSet<RawPtrWillBeMember<CSSStyleSheet> > removedSheets(*documen
tCSSStyleSheets); |
565 Vector<CSSStyleSheet*> addedSheets; | 567 WillBeHeapVector<RawPtrWillBeMember<CSSStyleSheet> > addedSheets; |
566 for (Vector<CSSStyleSheet*>::const_iterator it = allSheetsVector.begin(); it
!= allSheetsVector.end(); ++it) { | 568 for (WillBeHeapVector<RawPtrWillBeMember<CSSStyleSheet> >::const_iterator it
= allSheetsVector.begin(); it != allSheetsVector.end(); ++it) { |
567 CSSStyleSheet* cssStyleSheet = *it; | 569 CSSStyleSheet* cssStyleSheet = *it; |
568 if (removedSheets.contains(cssStyleSheet)) { | 570 if (removedSheets.contains(cssStyleSheet)) { |
569 removedSheets.remove(cssStyleSheet); | 571 removedSheets.remove(cssStyleSheet); |
570 if (isInitialFrontendLoad) | 572 if (isInitialFrontendLoad) |
571 addedSheets.append(cssStyleSheet); | 573 addedSheets.append(cssStyleSheet); |
572 } else { | 574 } else { |
573 addedSheets.append(cssStyleSheet); | 575 addedSheets.append(cssStyleSheet); |
574 } | 576 } |
575 } | 577 } |
576 | 578 |
577 for (HashSet<CSSStyleSheet*>::iterator it = removedSheets.begin(); it != rem
ovedSheets.end(); ++it) { | 579 for (WillBeHeapHashSet<RawPtrWillBeMember<CSSStyleSheet> >::iterator it = re
movedSheets.begin(); it != removedSheets.end(); ++it) { |
578 CSSStyleSheet* cssStyleSheet = *it; | 580 CSSStyleSheet* cssStyleSheet = *it; |
579 RefPtr<InspectorStyleSheet> inspectorStyleSheet = m_cssStyleSheetToInspe
ctorStyleSheet.get(cssStyleSheet); | 581 RefPtrWillBeRawPtr<InspectorStyleSheet> inspectorStyleSheet = m_cssStyle
SheetToInspectorStyleSheet.get(cssStyleSheet); |
580 ASSERT(inspectorStyleSheet); | 582 ASSERT(inspectorStyleSheet); |
581 | 583 |
582 documentCSSStyleSheets->remove(cssStyleSheet); | 584 documentCSSStyleSheets->remove(cssStyleSheet); |
583 if (m_idToInspectorStyleSheet.contains(inspectorStyleSheet->id())) { | 585 if (m_idToInspectorStyleSheet.contains(inspectorStyleSheet->id())) { |
584 String id = unbindStyleSheet(inspectorStyleSheet.get()); | 586 String id = unbindStyleSheet(inspectorStyleSheet.get()); |
585 if (m_frontend && !isInitialFrontendLoad) | 587 if (m_frontend && !isInitialFrontendLoad) |
586 m_frontend->styleSheetRemoved(id); | 588 m_frontend->styleSheetRemoved(id); |
587 } | 589 } |
588 } | 590 } |
589 | 591 |
590 for (Vector<CSSStyleSheet*>::iterator it = addedSheets.begin(); it != addedS
heets.end(); ++it) { | 592 for (WillBeHeapVector<RawPtrWillBeMember<CSSStyleSheet> >::iterator it = add
edSheets.begin(); it != addedSheets.end(); ++it) { |
591 CSSStyleSheet* cssStyleSheet = *it; | 593 CSSStyleSheet* cssStyleSheet = *it; |
592 bool isNew = isInitialFrontendLoad || !m_cssStyleSheetToInspectorStyleSh
eet.contains(cssStyleSheet); | 594 bool isNew = isInitialFrontendLoad || !m_cssStyleSheetToInspectorStyleSh
eet.contains(cssStyleSheet); |
593 if (isNew) { | 595 if (isNew) { |
594 InspectorStyleSheet* newStyleSheet = bindStyleSheet(cssStyleSheet); | 596 InspectorStyleSheet* newStyleSheet = bindStyleSheet(cssStyleSheet); |
595 documentCSSStyleSheets->add(cssStyleSheet); | 597 documentCSSStyleSheets->add(cssStyleSheet); |
596 if (m_frontend) | 598 if (m_frontend) |
597 m_frontend->styleSheetAdded(newStyleSheet->buildObjectForStyleSh
eetInfo()); | 599 m_frontend->styleSheetAdded(newStyleSheet->buildObjectForStyleSh
eetInfo()); |
598 } | 600 } |
599 } | 601 } |
600 | 602 |
601 if (documentCSSStyleSheets->isEmpty()) | 603 if (documentCSSStyleSheets->isEmpty()) |
602 m_documentToCSSStyleSheets.remove(document); | 604 m_documentToCSSStyleSheets.remove(document); |
603 } | 605 } |
604 | 606 |
605 void InspectorCSSAgent::documentDetached(Document* document) | 607 void InspectorCSSAgent::documentDetached(Document* document) |
606 { | 608 { |
607 m_invalidatedDocuments.remove(document); | 609 m_invalidatedDocuments.remove(document); |
608 setActiveStyleSheets(document, Vector<CSSStyleSheet*>(), ExistingFrontendRef
resh); | 610 setActiveStyleSheets(document, WillBeHeapVector<RawPtrWillBeMember<CSSStyleS
heet> >(), ExistingFrontendRefresh); |
609 } | 611 } |
610 | 612 |
611 bool InspectorCSSAgent::forcePseudoState(Element* element, CSSSelector::PseudoTy
pe pseudoType) | 613 bool InspectorCSSAgent::forcePseudoState(Element* element, CSSSelector::PseudoTy
pe pseudoType) |
612 { | 614 { |
613 if (m_nodeIdToForcedPseudoState.isEmpty()) | 615 if (m_nodeIdToForcedPseudoState.isEmpty()) |
614 return false; | 616 return false; |
615 | 617 |
616 int nodeId = m_domAgent->boundNodeId(element); | 618 int nodeId = m_domAgent->boundNodeId(element); |
617 if (!nodeId) | 619 if (!nodeId) |
618 return false; | 620 return false; |
(...skipping 544 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1163 } | 1165 } |
1164 if (!node->isElementNode()) { | 1166 if (!node->isElementNode()) { |
1165 *errorString = "Not an element node"; | 1167 *errorString = "Not an element node"; |
1166 return 0; | 1168 return 0; |
1167 } | 1169 } |
1168 return toElement(node); | 1170 return toElement(node); |
1169 } | 1171 } |
1170 | 1172 |
1171 void InspectorCSSAgent::collectAllStyleSheets(Vector<InspectorStyleSheet*>& resu
lt) | 1173 void InspectorCSSAgent::collectAllStyleSheets(Vector<InspectorStyleSheet*>& resu
lt) |
1172 { | 1174 { |
1173 Vector<CSSStyleSheet*> cssStyleSheets; | 1175 WillBeHeapVector<RawPtrWillBeMember<CSSStyleSheet> > cssStyleSheets; |
1174 Vector<Document*> documents = m_domAgent->documents(); | 1176 WillBeHeapVector<RawPtrWillBeMember<Document> > documents = m_domAgent->docu
ments(); |
1175 for (Vector<Document*>::iterator it = documents.begin(); it != documents.end
(); ++it) | 1177 for (WillBeHeapVector<RawPtrWillBeMember<Document> >::iterator it = document
s.begin(); it != documents.end(); ++it) |
1176 collectAllDocumentStyleSheets(*it, cssStyleSheets); | 1178 collectAllDocumentStyleSheets(*it, cssStyleSheets); |
1177 for (Vector<CSSStyleSheet*>::iterator it = cssStyleSheets.begin(); it != css
StyleSheets.end(); ++it) | 1179 for (WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet> >::iterator it = css
StyleSheets.begin(); it != cssStyleSheets.end(); ++it) |
1178 result.append(bindStyleSheet(*it)); | 1180 result.append(bindStyleSheet(*it)); |
1179 } | 1181 } |
1180 | 1182 |
1181 void InspectorCSSAgent::collectAllDocumentStyleSheets(Document* document, Vector
<CSSStyleSheet*>& result) | 1183 void InspectorCSSAgent::collectAllDocumentStyleSheets(Document* document, WillBe
HeapVector<RawPtrWillBeMember<CSSStyleSheet> >& result) |
1182 { | 1184 { |
1183 const WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet> > activeStyleSheets
= document->styleEngine()->activeStyleSheetsForInspector(); | 1185 const WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet> > activeStyleSheets
= document->styleEngine()->activeStyleSheetsForInspector(); |
1184 for (WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet> >::const_iterator it
= activeStyleSheets.begin(); it != activeStyleSheets.end(); ++it) { | 1186 for (WillBeHeapVector<RefPtrWillBeMember<CSSStyleSheet> >::const_iterator it
= activeStyleSheets.begin(); it != activeStyleSheets.end(); ++it) { |
1185 CSSStyleSheet* styleSheet = it->get(); | 1187 CSSStyleSheet* styleSheet = it->get(); |
1186 collectStyleSheets(styleSheet, result); | 1188 collectStyleSheets(styleSheet, result); |
1187 } | 1189 } |
1188 } | 1190 } |
1189 | 1191 |
1190 void InspectorCSSAgent::collectStyleSheets(CSSStyleSheet* styleSheet, Vector<CSS
StyleSheet*>& result) | 1192 void InspectorCSSAgent::collectStyleSheets(CSSStyleSheet* styleSheet, WillBeHeap
Vector<RawPtrWillBeMember<CSSStyleSheet> >& result) |
1191 { | 1193 { |
1192 result.append(styleSheet); | 1194 result.append(styleSheet); |
1193 for (unsigned i = 0, size = styleSheet->length(); i < size; ++i) { | 1195 for (unsigned i = 0, size = styleSheet->length(); i < size; ++i) { |
1194 CSSRule* rule = styleSheet->item(i); | 1196 CSSRule* rule = styleSheet->item(i); |
1195 if (rule->type() == CSSRule::IMPORT_RULE) { | 1197 if (rule->type() == CSSRule::IMPORT_RULE) { |
1196 CSSStyleSheet* importedStyleSheet = toCSSImportRule(rule)->styleShee
t(); | 1198 CSSStyleSheet* importedStyleSheet = toCSSImportRule(rule)->styleShee
t(); |
1197 if (importedStyleSheet) | 1199 if (importedStyleSheet) |
1198 collectStyleSheets(importedStyleSheet, result); | 1200 collectStyleSheets(importedStyleSheet, result); |
1199 } | 1201 } |
1200 } | 1202 } |
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1432 } | 1434 } |
1433 | 1435 |
1434 void InspectorCSSAgent::didReparseStyleSheet() | 1436 void InspectorCSSAgent::didReparseStyleSheet() |
1435 { | 1437 { |
1436 ASSERT(m_isSettingStyleSheetText); | 1438 ASSERT(m_isSettingStyleSheetText); |
1437 m_isSettingStyleSheetText = false; | 1439 m_isSettingStyleSheetText = false; |
1438 } | 1440 } |
1439 | 1441 |
1440 void InspectorCSSAgent::resetPseudoStates() | 1442 void InspectorCSSAgent::resetPseudoStates() |
1441 { | 1443 { |
1442 HashSet<Document*> documentsToChange; | 1444 WillBeHeapHashSet<RawPtrWillBeMember<Document> > documentsToChange; |
1443 for (NodeIdToForcedPseudoState::iterator it = m_nodeIdToForcedPseudoState.be
gin(), end = m_nodeIdToForcedPseudoState.end(); it != end; ++it) { | 1445 for (NodeIdToForcedPseudoState::iterator it = m_nodeIdToForcedPseudoState.be
gin(), end = m_nodeIdToForcedPseudoState.end(); it != end; ++it) { |
1444 Element* element = toElement(m_domAgent->nodeForId(it->key)); | 1446 Element* element = toElement(m_domAgent->nodeForId(it->key)); |
1445 if (element && element->ownerDocument()) | 1447 if (element && element->ownerDocument()) |
1446 documentsToChange.add(element->ownerDocument()); | 1448 documentsToChange.add(element->ownerDocument()); |
1447 } | 1449 } |
1448 | 1450 |
1449 m_nodeIdToForcedPseudoState.clear(); | 1451 m_nodeIdToForcedPseudoState.clear(); |
1450 for (HashSet<Document*>::iterator it = documentsToChange.begin(), end = docu
mentsToChange.end(); it != end; ++it) | 1452 for (WillBeHeapHashSet<RawPtrWillBeMember<Document> >::iterator it = documen
tsToChange.begin(), end = documentsToChange.end(); it != end; ++it) |
1451 (*it)->setNeedsStyleRecalc(SubtreeStyleChange); | 1453 (*it)->setNeedsStyleRecalc(SubtreeStyleChange); |
1452 } | 1454 } |
1453 | 1455 |
| 1456 void InspectorCSSAgent::trace(Visitor* visitor) |
| 1457 { |
| 1458 visitor->trace(m_domAgent); |
| 1459 visitor->trace(m_pageAgent); |
| 1460 visitor->trace(m_resourceAgent); |
| 1461 visitor->trace(m_cssStyleSheetToInspectorStyleSheet); |
| 1462 visitor->trace(m_documentToCSSStyleSheets); |
| 1463 visitor->trace(m_invalidatedDocuments); |
| 1464 visitor->trace(m_documentToViaInspectorStyleSheet); |
| 1465 visitor->trace(m_inspectorUserAgentStyleSheet); |
| 1466 InspectorBaseAgent::trace(visitor); |
| 1467 } |
| 1468 |
1454 } // namespace WebCore | 1469 } // namespace WebCore |
1455 | 1470 |
OLD | NEW |