 Chromium Code Reviews
 Chromium Code Reviews Issue 2516353002:
  Introduce url_list to the Response scheme of CacheStorage.  (Closed)
    
  
    Issue 2516353002:
  Introduce url_list to the Response scheme of CacheStorage.  (Closed) 
  | Index: third_party/WebKit/Source/modules/fetch/FetchManager.cpp | 
| diff --git a/third_party/WebKit/Source/modules/fetch/FetchManager.cpp b/third_party/WebKit/Source/modules/fetch/FetchManager.cpp | 
| index c62ef76229be9d2a765098793714c03f648b896c..9545e576bda55b4090b33d1c22a8f5ba592050ec 100644 | 
| --- a/third_party/WebKit/Source/modules/fetch/FetchManager.cpp | 
| +++ b/third_party/WebKit/Source/modules/fetch/FetchManager.cpp | 
| @@ -34,6 +34,7 @@ | 
| #include "platform/network/ResourceError.h" | 
| #include "platform/network/ResourceRequest.h" | 
| #include "platform/network/ResourceResponse.h" | 
| +#include "platform/weborigin/KURL.h" | 
| #include "platform/weborigin/SchemeRegistry.h" | 
| #include "platform/weborigin/SecurityOrigin.h" | 
| #include "platform/weborigin/SecurityPolicy.h" | 
| @@ -154,6 +155,7 @@ class FetchManager::Loader final | 
| ~Loader() override; | 
| DECLARE_VIRTUAL_TRACE(); | 
| + void didReceiveRedirectTo(const KURL&) override; | 
| void didReceiveResponse(unsigned long, | 
| const ResourceResponse&, | 
| std::unique_ptr<WebDataConsumerHandle>) override; | 
| @@ -282,6 +284,7 @@ class FetchManager::Loader final | 
| Member<SRIVerifier> m_integrityVerifier; | 
| bool m_didFinishLoading; | 
| bool m_isIsolatedWorld; | 
| + Vector<KURL> m_urlList; | 
| Member<ExecutionContext> m_executionContext; | 
| }; | 
| @@ -301,6 +304,7 @@ FetchManager::Loader::Loader(ExecutionContext* executionContext, | 
| m_isIsolatedWorld(isIsolatedWorld), | 
| m_executionContext(executionContext) { | 
| ThreadState::current()->registerPreFinalizer(this); | 
| + m_urlList.append(request->url()); | 
| } | 
| FetchManager::Loader::~Loader() { | 
| @@ -316,11 +320,18 @@ DEFINE_TRACE(FetchManager::Loader) { | 
| visitor->trace(m_executionContext); | 
| } | 
| +void FetchManager::Loader::didReceiveRedirectTo(const KURL& url) { | 
| + m_urlList.append(url); | 
| +} | 
| + | 
| void FetchManager::Loader::didReceiveResponse( | 
| unsigned long, | 
| const ResourceResponse& response, | 
| std::unique_ptr<WebDataConsumerHandle> handle) { | 
| ASSERT(handle); | 
| + // TODO(horo): This check could be false when we will use the response url | 
| + // in service worker responses. (crbug.com/553535) | 
| + DCHECK(response.url() == m_urlList.back()); | 
| 
falken
2016/11/30 14:57:37
nit: DCHECK_EQ
 
horo
2016/12/01 07:42:13
DCHECK_EQ with KURL causes compile failure.
../..
 | 
| ScriptState* scriptState = m_resolver->getScriptState(); | 
| ScriptState::Scope scope(scriptState); | 
| @@ -423,7 +434,14 @@ void FetchManager::Loader::didReceiveResponse( | 
| responseData->setStatusMessage(response.httpStatusText()); | 
| for (auto& it : response.httpHeaderFields()) | 
| responseData->headerList()->append(it.key, it.value); | 
| - responseData->setURL(response.url()); | 
| + if (response.urlListViaServiceWorker().isEmpty()) { | 
| + // Note: This list is empty, unless it came from a service worker, in which | 
| + // case it will only be empty if it was created through new Response(). | 
| 
falken
2016/11/30 14:57:37
nit: "This list" could plausibly mean |urlListViaS
 
horo
2016/12/01 07:42:13
Done.
 | 
| + responseData->setURLList(m_urlList); | 
| + } else { | 
| + DCHECK(response.wasFetchedViaServiceWorker()); | 
| + responseData->setURLList(response.urlListViaServiceWorker()); | 
| + } | 
| responseData->setMIMEType(response.mimeType()); | 
| responseData->setResponseTime(response.responseTime()); |