Chromium Code Reviews| Index: third_party/WebKit/Source/core/fetch/Resource.cpp |
| diff --git a/third_party/WebKit/Source/core/fetch/Resource.cpp b/third_party/WebKit/Source/core/fetch/Resource.cpp |
| index 9d88d0191a75c2bba0f1e63d567acc4874e14f93..b31394ae2d01f01a881bf94082a09743a43f30d2 100644 |
| --- a/third_party/WebKit/Source/core/fetch/Resource.cpp |
| +++ b/third_party/WebKit/Source/core/fetch/Resource.cpp |
| @@ -312,6 +312,7 @@ Resource::Resource(const ResourceRequest& request, |
| m_linkPreload(false), |
| m_isRevalidating(false), |
| m_isAlive(false), |
| + m_isAddClientProhibited(false), |
| m_options(options), |
| m_responseTimestamp(currentTime()), |
| m_cancelTimer(this, &Resource::cancelTimerFired), |
| @@ -686,6 +687,8 @@ void Resource::willAddClientOrObserver(PreloadReferencePolicy policy) { |
| void Resource::addClient(ResourceClient* client, |
| PreloadReferencePolicy policy) { |
| + DCHECK(!m_isAddClientProhibited); |
| + |
| willAddClientOrObserver(policy); |
| if (m_isRevalidating) { |
| @@ -1074,4 +1077,15 @@ bool Resource::isLoadEventBlockingResourceType() const { |
| return false; |
| } |
| +void Resource::willReloadAfterDiskCacheMiss() { |
| + m_resourceRequest.deactivateCacheAwareLoading(); |
|
yhirano
2016/10/04 05:27:10
DCHECK(!m_isAddClientProhibited);
Shao-Chuan Lee
2016/10/04 09:08:04
Done.
|
| + |
| + m_isAddClientProhibited = true; |
|
kouhei (in TOK)
2016/10/03 08:11:47
AutoReset https://cs.chromium.org/chromium/src/thi
Shao-Chuan Lee
2016/10/04 01:39:46
I made this a bit-field like other fields in Resou
hiroshige
2016/10/05 08:27:10
Probably we can make a normal bool and use AutoRes
Shao-Chuan Lee
2016/10/07 08:10:06
Now we have ProhibitAddRemoveClientInScope.
kouhei (in TOK)
2016/10/20 10:43:07
You are right. You may want to introduce your own
|
| + ResourceClientWalker<ResourceClient> w(m_clients); |
| + while (ResourceClient* c = w.next()) { |
| + c->willReloadAfterDiskCacheMiss(this); |
| + } |
| + m_isAddClientProhibited = false; |
| +} |
| + |
| } // namespace blink |