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

Side by Side Diff: third_party/WebKit/Source/core/loader/DocumentLoader.cpp

Issue 1757633005: Don't duplicate ResourceRequests and ResourceLoaderOptions on ResourceLoader (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Make synchronousPolicy check higher priority in determineRevalidationPolicy Created 4 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.
3 * Copyright (C) 2011 Google Inc. All rights reserved. 3 * Copyright (C) 2011 Google Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 8 *
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 commitData(0, 0); 319 commitData(0, 0);
320 } 320 }
321 321
322 m_applicationCacheHost->finishedLoadingMainResource(); 322 m_applicationCacheHost->finishedLoadingMainResource();
323 endWriting(m_writer.get()); 323 endWriting(m_writer.get());
324 if (m_state < MainResourceDone) 324 if (m_state < MainResourceDone)
325 m_state = MainResourceDone; 325 m_state = MainResourceDone;
326 clearMainResourceHandle(); 326 clearMainResourceHandle();
327 } 327 }
328 328
329 void DocumentLoader::updateRequest(Resource* resource, const ResourceRequest& re quest)
330 {
331 ASSERT_UNUSED(resource, resource == m_mainResource);
332 m_request = request;
333 }
334
335 void DocumentLoader::redirectReceived(Resource* resource, ResourceRequest& reque st, const ResourceResponse& redirectResponse) 329 void DocumentLoader::redirectReceived(Resource* resource, ResourceRequest& reque st, const ResourceResponse& redirectResponse)
336 { 330 {
337 ASSERT_UNUSED(resource, resource == m_mainResource); 331 ASSERT_UNUSED(resource, resource == m_mainResource);
338 ASSERT(!redirectResponse.isNull()); 332 ASSERT(!redirectResponse.isNull());
339 m_request = request; 333 m_request = request;
340 334
341 // If the redirecting url is not allowed to display content from the target origin, 335 // If the redirecting url is not allowed to display content from the target origin,
342 // then block the redirect. 336 // then block the redirect.
343 const KURL& requestURL = m_request.url(); 337 const KURL& requestURL = m_request.url();
344 RefPtr<SecurityOrigin> redirectingOrigin = SecurityOrigin::create(redirectRe sponse.url()); 338 RefPtr<SecurityOrigin> redirectingOrigin = SecurityOrigin::create(redirectRe sponse.url());
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after
684 678
685 if (maybeLoadEmpty()) 679 if (maybeLoadEmpty())
686 return; 680 return;
687 681
688 ASSERT(timing().navigationStart()); 682 ASSERT(timing().navigationStart());
689 ASSERT(!timing().fetchStart()); 683 ASSERT(!timing().fetchStart());
690 timing().markFetchStart(); 684 timing().markFetchStart();
691 685
692 m_applicationCacheHost->willStartLoadingMainResource(m_request); 686 m_applicationCacheHost->willStartLoadingMainResource(m_request);
693 687
694 ResourceRequest request(m_request);
695 DEFINE_STATIC_LOCAL(ResourceLoaderOptions, mainResourceLoadOptions, 688 DEFINE_STATIC_LOCAL(ResourceLoaderOptions, mainResourceLoadOptions,
696 (DoNotBufferData, AllowStoredCredentials, ClientRequestedCredentials, Ch eckContentSecurityPolicy, DocumentContext)); 689 (DoNotBufferData, AllowStoredCredentials, ClientRequestedCredentials, Ch eckContentSecurityPolicy, DocumentContext));
697 FetchRequest cachedResourceRequest(request, FetchInitiatorTypeNames::documen t, mainResourceLoadOptions); 690 FetchRequest fetchRequest(m_request, FetchInitiatorTypeNames::document, main ResourceLoadOptions);
698 m_mainResource = RawResource::fetchMainResource(cachedResourceRequest, fetch er(), m_substituteData); 691 m_mainResource = RawResource::fetchMainResource(fetchRequest, fetcher(), m_s ubstituteData);
699 if (!m_mainResource) { 692 if (!m_mainResource) {
700 m_request = ResourceRequest(); 693 m_request = ResourceRequest();
701 // If the load was aborted by clearing m_request, it's possible the Appl icationCacheHost 694 // If the load was aborted by clearing m_request, it's possible the Appl icationCacheHost
702 // is now in a state where starting an empty load will be inconsistent. Replace it with 695 // is now in a state where starting an empty load will be inconsistent. Replace it with
703 // a new ApplicationCacheHost. 696 // a new ApplicationCacheHost.
704 if (m_applicationCacheHost) 697 if (m_applicationCacheHost)
705 m_applicationCacheHost->detachFromDocumentLoader(); 698 m_applicationCacheHost->detachFromDocumentLoader();
706 m_applicationCacheHost = ApplicationCacheHost::create(this); 699 m_applicationCacheHost = ApplicationCacheHost::create(this);
707 maybeLoadEmpty(); 700 maybeLoadEmpty();
708 return; 701 return;
709 } 702 }
710 if (mainResourceLoader()) { 703 // A bunch of headers are set when the underlying ResourceLoader is created, and m_request needs to include those.
711 // A bunch of headers are set when the underlying ResourceLoader 704 // Even when using a cached resource, we may make some modification to the r equest, e.g. adding the referer header.
712 // is created, and m_request needs to include those. 705 m_request = mainResourceLoader() ? m_mainResource->resourceRequest() : fetch Request.resourceRequest();
713 request = mainResourceLoader()->originalRequest();
714 } else {
715 // Even when using a cached resource, we may make some modification
716 // to the request, e.g. adding the referer header.
717 request = cachedResourceRequest.resourceRequest();
718 }
719 // If there was a fragment identifier on m_request, the cache will have stri pped it. m_request should include 706 // If there was a fragment identifier on m_request, the cache will have stri pped it. m_request should include
720 // the fragment identifier, so add that back in. 707 // the fragment identifier, so add that back in.
721 if (equalIgnoringFragmentIdentifier(m_request.url(), request.url())) 708 if (equalIgnoringFragmentIdentifier(m_request.url(), fetchRequest.url()))
722 request.setURL(m_request.url()); 709 m_request.setURL(fetchRequest.url());
723 m_request = request;
724 m_mainResource->addClient(this); 710 m_mainResource->addClient(this);
725 } 711 }
726 712
727 void DocumentLoader::cancelMainResourceLoad(const ResourceError& resourceError) 713 void DocumentLoader::cancelMainResourceLoad(const ResourceError& resourceError)
728 { 714 {
729 RefPtrWillBeRawPtr<DocumentLoader> protect(this); 715 RefPtrWillBeRawPtr<DocumentLoader> protect(this);
730 ResourceError error = resourceError.isNull() ? ResourceError::cancelledError (m_request.url()) : resourceError; 716 ResourceError error = resourceError.isNull() ? ResourceError::cancelledError (m_request.url()) : resourceError;
731 717
732 if (mainResourceLoader()) 718 if (mainResourceLoader())
733 mainResourceLoader()->cancel(error); 719 mainResourceLoader()->cancel(error);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
771 { 757 {
772 m_writer = createWriterFor(init, mimeType(), m_writer ? m_writer->encoding() : emptyAtom, true, ForceSynchronousParsing); 758 m_writer = createWriterFor(init, mimeType(), m_writer ? m_writer->encoding() : emptyAtom, true, ForceSynchronousParsing);
773 if (!source.isNull()) 759 if (!source.isNull())
774 m_writer->appendReplacingData(source); 760 m_writer->appendReplacingData(source);
775 endWriting(m_writer.get()); 761 endWriting(m_writer.get());
776 } 762 }
777 763
778 DEFINE_WEAK_IDENTIFIER_MAP(DocumentLoader); 764 DEFINE_WEAK_IDENTIFIER_MAP(DocumentLoader);
779 765
780 } // namespace blink 766 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698