Beispiel #1
0
void MemoryCache::replace(Resource* newResource, Resource* oldResource)
{
    ASSERT(newResource->cacheIdentifier() == oldResource->cacheIdentifier());
    ResourceMap* resources = ensureResourceMap(oldResource->cacheIdentifier());
    if (MemoryCacheEntry* oldEntry = resources->get(oldResource->url()))
        evict(oldEntry);
    add(newResource);
    if (newResource->decodedSize() && newResource->hasClients())
        insertInLiveDecodedResourcesList(resources->get(newResource->url()));
}
ResourceSpawn* ResourceManagerImplementation::getResourceSpawn(const String& spawnName) {
	ResourceSpawn* spawn = NULL;

	ReadLocker locker(_this.getReferenceUnsafeStaticCast());

	ResourceMap* resourceMap = resourceSpawner->getResourceMap();

	spawn = resourceMap->get(spawnName.toLowerCase());

	return spawn;
}
MemoryCacheEntry* MemoryCache::getEntryForResource(const Resource* resource) const
{
    if (resource->url().isNull() || resource->url().isEmpty())
        return nullptr;
    ResourceMap* resources = m_resourceMaps.get(resource->cacheIdentifier());
    if (!resources)
        return nullptr;
    MemoryCacheEntry* entry = resources->get(resource->url());
    if (!entry || entry->m_resource != resource)
        return nullptr;
    return entry;
}
Beispiel #4
0
Resource* MemoryCache::resourceForURL(const KURL& resourceURL, const String& cacheIdentifier)
{
    ASSERT(WTF::isMainThread());
    ResourceMap* resources = m_resourceMaps.get(cacheIdentifier);
    if (!resources)
        return nullptr;
    KURL url = removeFragmentIdentifierIfNeeded(resourceURL);
    MemoryCacheEntry* entry = resources->get(url);
    if (!entry)
        return nullptr;
    Resource* resource = entry->m_resource.get();
    if (resource && !resource->lock()) {
        ASSERT(!resource->hasClients());
        bool didEvict = evict(entry);
        ASSERT_UNUSED(didEvict, didEvict);
        return nullptr;
    }
    return resource;
}