Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(744)

Unified Diff: third_party/WebKit/Source/modules/fetch/FetchManager.cpp

Issue 2516353002: Introduce url_list to the Response scheme of CacheStorage. (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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());

Powered by Google App Engine
This is Rietveld 408576698