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, 2007, 2008, 2009, 2010, 2011 Apple Inc. All
rights reserved. | 5 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
287 } | 287 } |
288 | 288 |
289 void ResourceFetcher::preCacheDataURIImage(const FetchRequest& request) | 289 void ResourceFetcher::preCacheDataURIImage(const FetchRequest& request) |
290 { | 290 { |
291 const KURL& url = request.resourceRequest().url(); | 291 const KURL& url = request.resourceRequest().url(); |
292 ASSERT(url.protocolIsData()); | 292 ASSERT(url.protocolIsData()); |
293 | 293 |
294 if (memoryCache()->resourceForURL(url)) | 294 if (memoryCache()->resourceForURL(url)) |
295 return; | 295 return; |
296 | 296 |
297 if (Resource* resource = resourceFromDataURIRequest(request.resourceRequest(
), request.options())) | 297 if (Resource* resource = resourceFromDataURIRequest(request.resourceRequest(
), request.options())) { |
298 memoryCache()->add(resource); | 298 memoryCache()->add(resource); |
| 299 scheduleDocumentResourcesGC(); |
| 300 } |
299 } | 301 } |
300 | 302 |
301 ResourcePtr<FontResource> ResourceFetcher::fetchFont(FetchRequest& request) | 303 ResourcePtr<FontResource> ResourceFetcher::fetchFont(FetchRequest& request) |
302 { | 304 { |
303 return toFontResource(requestResource(Resource::Font, request)); | 305 return toFontResource(requestResource(Resource::Font, request)); |
304 } | 306 } |
305 | 307 |
306 ResourcePtr<ShaderResource> ResourceFetcher::fetchShader(FetchRequest& request) | 308 ResourcePtr<ShaderResource> ResourceFetcher::fetchShader(FetchRequest& request) |
307 { | 309 { |
308 return toShaderResource(requestResource(Resource::Shader, request)); | 310 return toShaderResource(requestResource(Resource::Shader, request)); |
(...skipping 692 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1001 if (it != m_resourceTimingInfoMap.end()) { | 1003 if (it != m_resourceTimingInfoMap.end()) { |
1002 RefPtr<ResourceTimingInfo> info = it->value; | 1004 RefPtr<ResourceTimingInfo> info = it->value; |
1003 m_resourceTimingInfoMap.remove(it); | 1005 m_resourceTimingInfoMap.remove(it); |
1004 reportResourceTiming(info.get(), resource, resource->loadFinishTime(
), document(), false); | 1006 reportResourceTiming(info.get(), resource, resource->loadFinishTime(
), document(), false); |
1005 } | 1007 } |
1006 } | 1008 } |
1007 | 1009 |
1008 if (frame()) | 1010 if (frame()) |
1009 frame()->loader().loadDone(); | 1011 frame()->loader().loadDone(); |
1010 performPostLoadActions(); | 1012 performPostLoadActions(); |
| 1013 scheduleDocumentResourcesGC(); |
| 1014 } |
1011 | 1015 |
| 1016 void ResourceFetcher::scheduleDocumentResourcesGC() |
| 1017 { |
1012 if (!m_garbageCollectDocumentResourcesTimer.isActive()) | 1018 if (!m_garbageCollectDocumentResourcesTimer.isActive()) |
1013 m_garbageCollectDocumentResourcesTimer.startOneShot(0); | 1019 m_garbageCollectDocumentResourcesTimer.startOneShot(0); |
1014 } | 1020 } |
1015 | 1021 |
1016 // Garbage collecting m_documentResources is a workaround for the | 1022 // Garbage collecting m_documentResources is a workaround for the |
1017 // ResourcePtrs on the RHS being strong references. Ideally this | 1023 // ResourcePtrs on the RHS being strong references. Ideally this |
1018 // would be a weak map, however ResourcePtrs perform additional | 1024 // would be a weak map, however ResourcePtrs perform additional |
1019 // bookkeeping on Resources, so instead pseudo-GC them -- when the | 1025 // bookkeeping on Resources, so instead pseudo-GC them -- when the |
1020 // reference count reaches 1, m_documentResources is the only reference, so | 1026 // reference count reaches 1, m_documentResources is the only reference, so |
1021 // remove it from the map. | 1027 // remove it from the map. |
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1341 } | 1347 } |
1342 #endif | 1348 #endif |
1343 | 1349 |
1344 const ResourceLoaderOptions& ResourceFetcher::defaultResourceOptions() | 1350 const ResourceLoaderOptions& ResourceFetcher::defaultResourceOptions() |
1345 { | 1351 { |
1346 DEFINE_STATIC_LOCAL(ResourceLoaderOptions, options, (SniffContent, BufferDat
a, AllowStoredCredentials, ClientRequestedCredentials, AskClientForCrossOriginCr
edentials, DoSecurityCheck, CheckContentSecurityPolicy, DocumentContext)); | 1352 DEFINE_STATIC_LOCAL(ResourceLoaderOptions, options, (SniffContent, BufferDat
a, AllowStoredCredentials, ClientRequestedCredentials, AskClientForCrossOriginCr
edentials, DoSecurityCheck, CheckContentSecurityPolicy, DocumentContext)); |
1347 return options; | 1353 return options; |
1348 } | 1354 } |
1349 | 1355 |
1350 } | 1356 } |
OLD | NEW |