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

Side by Side Diff: third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp

Issue 2766583002: Set the same headers for data URLs in WebURLLoaderImpl and ResourceFetcher (Closed)
Patch Set: reflect comments Created 3 years, 9 months 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 unified diff | Download patch
« no previous file with comments | « no previous file | third_party/WebKit/Source/platform/loader/fetch/ResourceFetcherTest.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 5 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All
6 rights reserved. 6 rights reserved.
7 Copyright (C) 2009 Torch Mobile Inc. http://www.torchmobile.com/ 7 Copyright (C) 2009 Torch Mobile Inc. http://www.torchmobile.com/
8 8
9 This library is free software; you can redistribute it and/or 9 This library is free software; you can redistribute it and/or
10 modify it under the terms of the GNU Library General Public 10 modify it under the terms of the GNU Library General Public
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 const String cacheIdentifier = getCacheIdentifier(); 362 const String cacheIdentifier = getCacheIdentifier();
363 if (Resource* oldResource = 363 if (Resource* oldResource =
364 memoryCache()->resourceForURL(url, cacheIdentifier)) { 364 memoryCache()->resourceForURL(url, cacheIdentifier)) {
365 // There's no reason to re-parse if we saved the data from the previous 365 // There's no reason to re-parse if we saved the data from the previous
366 // parse. 366 // parse.
367 if (request.options().dataBufferingPolicy != DoNotBufferData) 367 if (request.options().dataBufferingPolicy != DoNotBufferData)
368 return oldResource; 368 return oldResource;
369 memoryCache()->remove(oldResource); 369 memoryCache()->remove(oldResource);
370 } 370 }
371 371
372 AtomicString mimetype; 372 ResourceResponse response;
373 AtomicString charset;
374 RefPtr<SharedBuffer> data; 373 RefPtr<SharedBuffer> data;
375 if (substituteData.isValid()) { 374 if (substituteData.isValid()) {
376 mimetype = substituteData.mimeType();
377 charset = substituteData.textEncoding();
378 data = substituteData.content(); 375 data = substituteData.content();
376 response.setURL(url);
377 response.setMimeType(substituteData.mimeType());
378 response.setExpectedContentLength(data->size());
379 response.setTextEncodingName(substituteData.textEncoding());
379 } else if (url.protocolIsData()) { 380 } else if (url.protocolIsData()) {
380 data = PassRefPtr<SharedBuffer>( 381 data = NetworkUtils::parseDataURLAndPopulateResponse(url, response);
381 NetworkUtils::parseDataURL(url, mimetype, charset));
382 if (!data) 382 if (!data)
383 return nullptr; 383 return nullptr;
384 // |response| is modified by parseDataURLAndPopulateResponse() and is
385 // ready to be used.
384 } else { 386 } else {
385 ArchiveResource* archiveResource = 387 ArchiveResource* archiveResource =
386 m_archive->subresourceForURL(request.url()); 388 m_archive->subresourceForURL(request.url());
387 // Fall back to the network if the archive doesn't contain the resource. 389 // Fall back to the network if the archive doesn't contain the resource.
388 if (!archiveResource) 390 if (!archiveResource)
389 return nullptr; 391 return nullptr;
390 mimetype = archiveResource->mimeType();
391 charset = archiveResource->textEncoding();
392 data = archiveResource->data(); 392 data = archiveResource->data();
393 } 393 response.setURL(url);
394 394 response.setMimeType(archiveResource->mimeType());
395 ResourceResponse response(url, mimetype, data->size(), charset); 395 response.setExpectedContentLength(data->size());
396 if (!substituteData.isValid() && url.protocolIsData()) { 396 response.setTextEncodingName(archiveResource->textEncoding());
397 response.setHTTPStatusCode(200);
398 response.setHTTPStatusText("OK");
399 } 397 }
400 398
401 Resource* resource = factory.create(request.resourceRequest(), 399 Resource* resource = factory.create(request.resourceRequest(),
402 request.options(), request.charset()); 400 request.options(), request.charset());
403 resource->setNeedsSynchronousCacheHit(substituteData.forceSynchronousLoad()); 401 resource->setNeedsSynchronousCacheHit(substituteData.forceSynchronousLoad());
404 // FIXME: We should provide a body stream here. 402 // FIXME: We should provide a body stream here.
405 resource->responseReceived(response, nullptr); 403 resource->responseReceived(response, nullptr);
406 resource->setDataBufferingPolicy(BufferData); 404 resource->setDataBufferingPolicy(BufferData);
407 if (data->size()) 405 if (data->size())
408 resource->setResourceBuffer(data); 406 resource->setResourceBuffer(data);
(...skipping 1144 matching lines...) Expand 10 before | Expand all | Expand 10 after
1553 visitor->trace(m_context); 1551 visitor->trace(m_context);
1554 visitor->trace(m_archive); 1552 visitor->trace(m_archive);
1555 visitor->trace(m_loaders); 1553 visitor->trace(m_loaders);
1556 visitor->trace(m_nonBlockingLoaders); 1554 visitor->trace(m_nonBlockingLoaders);
1557 visitor->trace(m_documentResources); 1555 visitor->trace(m_documentResources);
1558 visitor->trace(m_preloads); 1556 visitor->trace(m_preloads);
1559 visitor->trace(m_resourceTimingInfoMap); 1557 visitor->trace(m_resourceTimingInfoMap);
1560 } 1558 }
1561 1559
1562 } // namespace blink 1560 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/Source/platform/loader/fetch/ResourceFetcherTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698