| OLD | NEW |
| 1 /* | 1 /* |
| 2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) | 2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) |
| 3 Copyright (C) 2001 Dirk Mueller (mueller@kde.org) | 3 Copyright (C) 2001 Dirk Mueller (mueller@kde.org) |
| 4 Copyright (C) 2002 Waldo Bastian (bastian@kde.org) | 4 Copyright (C) 2002 Waldo Bastian (bastian@kde.org) |
| 5 Copyright (C) 2004, 2005, 2006, 2008 Apple Inc. All rights reserved. | 5 Copyright (C) 2004, 2005, 2006, 2008 Apple Inc. All rights reserved. |
| 6 Copyright (C) 2009 Torch Mobile Inc. http://www.torchmobile.com/ | 6 Copyright (C) 2009 Torch Mobile Inc. http://www.torchmobile.com/ |
| 7 | 7 |
| 8 This library is free software; you can redistribute it and/or | 8 This library is free software; you can redistribute it and/or |
| 9 modify it under the terms of the GNU Library General Public | 9 modify it under the terms of the GNU Library General Public |
| 10 License as published by the Free Software Foundation; either | 10 License as published by the Free Software Foundation; either |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 79 return new CachedResource(request, CachedResource::LinkSubresource); | 79 return new CachedResource(request, CachedResource::LinkSubresource); |
| 80 #endif | 80 #endif |
| 81 } | 81 } |
| 82 ASSERT_NOT_REACHED(); | 82 ASSERT_NOT_REACHED(); |
| 83 return 0; | 83 return 0; |
| 84 } | 84 } |
| 85 | 85 |
| 86 CachedResourceLoader::CachedResourceLoader(Document* document) | 86 CachedResourceLoader::CachedResourceLoader(Document* document) |
| 87 : m_document(document) | 87 : m_document(document) |
| 88 , m_requestCount(0) | 88 , m_requestCount(0) |
| 89 , m_garbageCollectDocumentResourcesTimer(this, &CachedResourceLoader::garbag
eCollectDocumentResourcesTimerFired) | |
| 90 , m_autoLoadImages(true) | 89 , m_autoLoadImages(true) |
| 91 , m_loadFinishing(false) | 90 , m_loadFinishing(false) |
| 92 , m_allowStaleResources(false) | 91 , m_allowStaleResources(false) |
| 93 { | 92 { |
| 94 } | 93 } |
| 95 | 94 |
| 96 CachedResourceLoader::~CachedResourceLoader() | 95 CachedResourceLoader::~CachedResourceLoader() |
| 97 { | 96 { |
| 98 m_document = 0; | 97 m_document = 0; |
| 99 | 98 |
| (...skipping 466 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 566 #endif | 565 #endif |
| 567 m_documentResources.remove(resource->url()); | 566 m_documentResources.remove(resource->url()); |
| 568 } | 567 } |
| 569 | 568 |
| 570 void CachedResourceLoader::loadDone() | 569 void CachedResourceLoader::loadDone() |
| 571 { | 570 { |
| 572 m_loadFinishing = false; | 571 m_loadFinishing = false; |
| 573 if (frame()) | 572 if (frame()) |
| 574 frame()->loader()->loadDone(); | 573 frame()->loader()->loadDone(); |
| 575 performPostLoadActions(); | 574 performPostLoadActions(); |
| 576 | |
| 577 if (!m_garbageCollectDocumentResourcesTimer.isActive()) | |
| 578 m_garbageCollectDocumentResourcesTimer.startOneShot(0); | |
| 579 } | |
| 580 | |
| 581 // Garbage collecting m_documentResources is a workaround for the | |
| 582 // CachedResourceHandles on the RHS being strong references. Ideally this | |
| 583 // would be a weak map, however CachedResourceHandles perform additional | |
| 584 // bookkeeping on CachedResources, so instead pseudo-GC them -- when the | |
| 585 // reference count reaches 1, m_documentResources is the only reference, so | |
| 586 // remove it from the map. | |
| 587 void CachedResourceLoader::garbageCollectDocumentResourcesTimerFired(Timer<Cache
dResourceLoader>* timer) | |
| 588 { | |
| 589 ASSERT_UNUSED(timer, timer == &m_garbageCollectDocumentResourcesTimer); | |
| 590 | |
| 591 Vector<String, 10> toDelete; | |
| 592 | |
| 593 for (DocumentResourceMap::iterator it = m_documentResources.begin(); it != m
_documentResources.end(); ++it) { | |
| 594 if (it->second->hasOneHandle()) | |
| 595 toDelete.append(it->first); | |
| 596 } | |
| 597 | |
| 598 for (Vector<String, 10>::const_iterator idel = toDelete.begin(); idel != toD
elete.end(); ++idel) | |
| 599 m_documentResources.remove(*idel); | |
| 600 } | 575 } |
| 601 | 576 |
| 602 void CachedResourceLoader::performPostLoadActions() | 577 void CachedResourceLoader::performPostLoadActions() |
| 603 { | 578 { |
| 604 checkForPendingPreloads(); | 579 checkForPendingPreloads(); |
| 605 resourceLoadScheduler()->servePendingRequests(); | 580 resourceLoadScheduler()->servePendingRequests(); |
| 606 } | 581 } |
| 607 | 582 |
| 608 void CachedResourceLoader::notifyLoadedFromMemoryCache(CachedResource* resource) | 583 void CachedResourceLoader::notifyLoadedFromMemoryCache(CachedResource* resource) |
| 609 { | 584 { |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 778 if (scripts) | 753 if (scripts) |
| 779 printf("SCRIPTS: %d (%d hits, hit rate %d%%)\n", scripts, scripts - scri
ptMisses, (scripts - scriptMisses) * 100 / scripts); | 754 printf("SCRIPTS: %d (%d hits, hit rate %d%%)\n", scripts, scripts - scri
ptMisses, (scripts - scriptMisses) * 100 / scripts); |
| 780 if (stylesheets) | 755 if (stylesheets) |
| 781 printf("STYLESHEETS: %d (%d hits, hit rate %d%%)\n", stylesheets, styles
heets - stylesheetMisses, (stylesheets - stylesheetMisses) * 100 / stylesheets); | 756 printf("STYLESHEETS: %d (%d hits, hit rate %d%%)\n", stylesheets, styles
heets - stylesheetMisses, (stylesheets - stylesheetMisses) * 100 / stylesheets); |
| 782 if (images) | 757 if (images) |
| 783 printf("IMAGES: %d (%d hits, hit rate %d%%)\n", images, images - imageM
isses, (images - imageMisses) * 100 / images); | 758 printf("IMAGES: %d (%d hits, hit rate %d%%)\n", images, images - imageM
isses, (images - imageMisses) * 100 / images); |
| 784 } | 759 } |
| 785 #endif | 760 #endif |
| 786 | 761 |
| 787 } | 762 } |
| OLD | NEW |