Chromium Code Reviews| 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 752 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 763 | 763 |
| 764 // FIXME: Temporarily leave main resource caching disabled for chromium, | 764 // FIXME: Temporarily leave main resource caching disabled for chromium, |
| 765 // see https://bugs.webkit.org/show_bug.cgi?id=107962. Before caching main | 765 // see https://bugs.webkit.org/show_bug.cgi?id=107962. Before caching main |
| 766 // resources, we should be sure to understand the implications for memory | 766 // resources, we should be sure to understand the implications for memory |
| 767 // use. | 767 // use. |
| 768 // Remove main resource from cache to prevent reuse. | 768 // Remove main resource from cache to prevent reuse. |
| 769 if (type == Resource::MainResource) { | 769 if (type == Resource::MainResource) { |
| 770 ASSERT(policy != Use || m_documentLoader->substituteData().isValid()); | 770 ASSERT(policy != Use || m_documentLoader->substituteData().isValid()); |
| 771 ASSERT(policy != Revalidate); | 771 ASSERT(policy != Revalidate); |
| 772 memoryCache()->remove(resource.get()); | 772 memoryCache()->remove(resource.get()); |
| 773 } else { | |
| 774 // Remove a resource to be handled by Service Worker from the cache to | |
| 775 // prevent reuse because Service Worker can serve an arbitrary resource | |
| 776 // for an URL and pollute a memory cache entry. | |
| 777 // FIXME: isControlledByServiceWorker() always returns false on main | |
| 778 // resource request, but main resource is always removed from the cache | |
| 779 // as the above comment (http://crbug.com/388375). | |
| 780 if (frame() && m_documentLoader && frame()->loader().client()->isControl ledByServiceWorker(*m_documentLoader)) { | |
| 781 ASSERT(policy == Load || policy == Reload); | |
| 782 memoryCache()->remove(resource.get()); | |
|
Nate Chapin
2014/10/09 17:56:22
Re: "(*) I'm not sure we can fetch a resource to b
nhiroki
2014/10/10 06:20:37
Thank you for your detailed answer! I'll take a lo
| |
| 783 } | |
| 773 } | 784 } |
| 774 | 785 |
| 775 requestLoadStarted(resource.get(), request, policy == Use ? ResourceLoadingF romCache : ResourceLoadingFromNetwork); | 786 requestLoadStarted(resource.get(), request, policy == Use ? ResourceLoadingF romCache : ResourceLoadingFromNetwork); |
| 776 | 787 |
| 777 ASSERT(resource->url() == url.string()); | 788 ASSERT(resource->url() == url.string()); |
| 778 m_documentResources.set(resource->url(), resource); | 789 m_documentResources.set(resource->url(), resource); |
| 779 return resource; | 790 return resource; |
| 780 } | 791 } |
| 781 | 792 |
| 782 void ResourceFetcher::resourceTimingReportTimerFired(Timer<ResourceFetcher>* tim er) | 793 void ResourceFetcher::resourceTimingReportTimerFired(Timer<ResourceFetcher>* tim er) |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 921 } | 932 } |
| 922 } | 933 } |
| 923 | 934 |
| 924 ResourceFetcher::RevalidationPolicy ResourceFetcher::determineRevalidationPolicy (Resource::Type type, const FetchRequest& fetchRequest, Resource* existingResour ce) const | 935 ResourceFetcher::RevalidationPolicy ResourceFetcher::determineRevalidationPolicy (Resource::Type type, const FetchRequest& fetchRequest, Resource* existingResour ce) const |
| 925 { | 936 { |
| 926 const ResourceRequest& request = fetchRequest.resourceRequest(); | 937 const ResourceRequest& request = fetchRequest.resourceRequest(); |
| 927 | 938 |
| 928 if (!existingResource) | 939 if (!existingResource) |
| 929 return Load; | 940 return Load; |
| 930 | 941 |
| 942 // FIXME: Currently caching for a resource to be handled by Service Worker | |
| 943 // is disabled (http://crbug.com/388375). | |
| 944 if (frame() && m_documentLoader && frame()->loader().client()->isControlledB yServiceWorker(*m_documentLoader)) | |
| 945 return Reload; | |
| 946 | |
| 931 // We already have a preload going for this URL. | 947 // We already have a preload going for this URL. |
| 932 if (fetchRequest.forPreload() && existingResource->isPreloaded()) | 948 if (fetchRequest.forPreload() && existingResource->isPreloaded()) |
| 933 return Use; | 949 return Use; |
| 934 | 950 |
| 935 // If the same URL has been loaded as a different type, we need to reload. | 951 // If the same URL has been loaded as a different type, we need to reload. |
| 936 if (existingResource->type() != type) { | 952 if (existingResource->type() != type) { |
| 937 // FIXME: If existingResource is a Preload and the new type is LinkPrefe tch | 953 // FIXME: If existingResource is a Preload and the new type is LinkPrefe tch |
| 938 // We really should discard the new prefetch since the preload has more | 954 // We really should discard the new prefetch since the preload has more |
| 939 // specific type information! crbug.com/379893 | 955 // specific type information! crbug.com/379893 |
| 940 // fast/dom/HTMLLinkElement/link-and-subresource-test hits this case. | 956 // fast/dom/HTMLLinkElement/link-and-subresource-test hits this case. |
| (...skipping 582 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1523 | 1539 |
| 1524 void ResourceFetcher::trace(Visitor* visitor) | 1540 void ResourceFetcher::trace(Visitor* visitor) |
| 1525 { | 1541 { |
| 1526 visitor->trace(m_document); | 1542 visitor->trace(m_document); |
| 1527 visitor->trace(m_loaders); | 1543 visitor->trace(m_loaders); |
| 1528 visitor->trace(m_multipartLoaders); | 1544 visitor->trace(m_multipartLoaders); |
| 1529 ResourceLoaderHost::trace(visitor); | 1545 ResourceLoaderHost::trace(visitor); |
| 1530 } | 1546 } |
| 1531 | 1547 |
| 1532 } | 1548 } |
| OLD | NEW |