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

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

Issue 2855163002: Avoid sending mixed-content requests for ImageSet contexts (Closed)
Patch Set: Better check and a test Created 3 years, 7 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 | « third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.h ('k') | no next file » | 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 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 static void PopulateTimingInfo(ResourceTimingInfo* info, Resource* resource) { 212 static void PopulateTimingInfo(ResourceTimingInfo* info, Resource* resource) {
213 KURL initial_url = resource->GetResponse().RedirectResponses().IsEmpty() 213 KURL initial_url = resource->GetResponse().RedirectResponses().IsEmpty()
214 ? resource->GetResourceRequest().Url() 214 ? resource->GetResourceRequest().Url()
215 : resource->GetResponse().RedirectResponses()[0].Url(); 215 : resource->GetResponse().RedirectResponses()[0].Url();
216 info->SetInitialURL(initial_url); 216 info->SetInitialURL(initial_url);
217 info->SetFinalResponse(resource->GetResponse()); 217 info->SetFinalResponse(resource->GetResponse());
218 } 218 }
219 219
220 WebURLRequest::RequestContext ResourceFetcher::DetermineRequestContext( 220 WebURLRequest::RequestContext ResourceFetcher::DetermineRequestContext(
221 Resource::Type type, 221 Resource::Type type,
222 IsImageSet is_image_set,
222 bool is_main_frame) { 223 bool is_main_frame) {
224 DCHECK((is_image_set == kImageNotImageSet) ||
225 (type == Resource::kImage && is_image_set == kImageIsImageSet));
223 switch (type) { 226 switch (type) {
224 case Resource::kMainResource: 227 case Resource::kMainResource:
225 if (!is_main_frame) 228 if (!is_main_frame)
226 return WebURLRequest::kRequestContextIframe; 229 return WebURLRequest::kRequestContextIframe;
227 // FIXME: Change this to a context frame type (once we introduce them): 230 // FIXME: Change this to a context frame type (once we introduce them):
228 // http://fetch.spec.whatwg.org/#concept-request-context-frame-type 231 // http://fetch.spec.whatwg.org/#concept-request-context-frame-type
229 return WebURLRequest::kRequestContextHyperlink; 232 return WebURLRequest::kRequestContextHyperlink;
230 case Resource::kXSLStyleSheet: 233 case Resource::kXSLStyleSheet:
231 DCHECK(RuntimeEnabledFeatures::xsltEnabled()); 234 DCHECK(RuntimeEnabledFeatures::xsltEnabled());
232 case Resource::kCSSStyleSheet: 235 case Resource::kCSSStyleSheet:
233 return WebURLRequest::kRequestContextStyle; 236 return WebURLRequest::kRequestContextStyle;
234 case Resource::kScript: 237 case Resource::kScript:
235 return WebURLRequest::kRequestContextScript; 238 return WebURLRequest::kRequestContextScript;
236 case Resource::kFont: 239 case Resource::kFont:
237 return WebURLRequest::kRequestContextFont; 240 return WebURLRequest::kRequestContextFont;
238 case Resource::kImage: 241 case Resource::kImage:
242 if (is_image_set == kImageIsImageSet)
243 return WebURLRequest::kRequestContextImageSet;
239 return WebURLRequest::kRequestContextImage; 244 return WebURLRequest::kRequestContextImage;
240 case Resource::kRaw: 245 case Resource::kRaw:
241 return WebURLRequest::kRequestContextSubresource; 246 return WebURLRequest::kRequestContextSubresource;
242 case Resource::kImportResource: 247 case Resource::kImportResource:
243 return WebURLRequest::kRequestContextImport; 248 return WebURLRequest::kRequestContextImport;
244 case Resource::kLinkPrefetch: 249 case Resource::kLinkPrefetch:
245 return WebURLRequest::kRequestContextPrefetch; 250 return WebURLRequest::kRequestContextPrefetch;
246 case Resource::kTextTrack: 251 case Resource::kTextTrack:
247 return WebURLRequest::kRequestContextTrack; 252 return WebURLRequest::kRequestContextTrack;
248 case Resource::kSVGDocument: 253 case Resource::kSVGDocument:
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after
668 673
669 void ResourceFetcher::ResourceTimingReportTimerFired(TimerBase* timer) { 674 void ResourceFetcher::ResourceTimingReportTimerFired(TimerBase* timer) {
670 DCHECK_EQ(timer, &resource_timing_report_timer_); 675 DCHECK_EQ(timer, &resource_timing_report_timer_);
671 Vector<RefPtr<ResourceTimingInfo>> timing_reports; 676 Vector<RefPtr<ResourceTimingInfo>> timing_reports;
672 timing_reports.swap(scheduled_resource_timing_reports_); 677 timing_reports.swap(scheduled_resource_timing_reports_);
673 for (const auto& timing_info : timing_reports) 678 for (const auto& timing_info : timing_reports)
674 Context().AddResourceTiming(*timing_info); 679 Context().AddResourceTiming(*timing_info);
675 } 680 }
676 681
677 WebURLRequest::RequestContext ResourceFetcher::DetermineRequestContext( 682 WebURLRequest::RequestContext ResourceFetcher::DetermineRequestContext(
678 Resource::Type type) const { 683 Resource::Type type,
679 return DetermineRequestContext(type, Context().IsMainFrame()); 684 IsImageSet is_image_set) const {
685 return DetermineRequestContext(type, is_image_set, Context().IsMainFrame());
680 } 686 }
681 687
682 void ResourceFetcher::InitializeResourceRequest( 688 void ResourceFetcher::InitializeResourceRequest(
683 ResourceRequest& request, 689 ResourceRequest& request,
684 Resource::Type type, 690 Resource::Type type,
685 FetchParameters::DeferOption defer) { 691 FetchParameters::DeferOption defer) {
686 if (request.GetCachePolicy() == WebCachePolicy::kUseProtocolCachePolicy) { 692 if (request.GetCachePolicy() == WebCachePolicy::kUseProtocolCachePolicy) {
687 request.SetCachePolicy( 693 request.SetCachePolicy(
688 Context().ResourceRequestCachePolicy(request, type, defer)); 694 Context().ResourceRequestCachePolicy(request, type, defer));
689 } 695 }
690 if (request.GetRequestContext() == WebURLRequest::kRequestContextUnspecified) 696 if (request.GetRequestContext() == WebURLRequest::kRequestContextUnspecified)
691 request.SetRequestContext(DetermineRequestContext(type)); 697 request.SetRequestContext(DetermineRequestContext(type, kImageNotImageSet));
692 if (type == Resource::kLinkPrefetch) 698 if (type == Resource::kLinkPrefetch)
693 request.SetHTTPHeaderField(HTTPNames::Purpose, "prefetch"); 699 request.SetHTTPHeaderField(HTTPNames::Purpose, "prefetch");
694 700
695 Context().AddAdditionalRequestHeaders( 701 Context().AddAdditionalRequestHeaders(
696 request, (type == Resource::kMainResource) ? kFetchMainResource 702 request, (type == Resource::kMainResource) ? kFetchMainResource
697 : kFetchSubresource); 703 : kFetchSubresource);
698 } 704 }
699 705
700 void ResourceFetcher::InitializeRevalidation( 706 void ResourceFetcher::InitializeRevalidation(
701 ResourceRequest& revalidating_request, 707 ResourceRequest& revalidating_request,
(...skipping 825 matching lines...) Expand 10 before | Expand all | Expand 10 after
1527 visitor->Trace(context_); 1533 visitor->Trace(context_);
1528 visitor->Trace(archive_); 1534 visitor->Trace(archive_);
1529 visitor->Trace(loaders_); 1535 visitor->Trace(loaders_);
1530 visitor->Trace(non_blocking_loaders_); 1536 visitor->Trace(non_blocking_loaders_);
1531 visitor->Trace(document_resources_); 1537 visitor->Trace(document_resources_);
1532 visitor->Trace(preloads_); 1538 visitor->Trace(preloads_);
1533 visitor->Trace(resource_timing_info_map_); 1539 visitor->Trace(resource_timing_info_map_);
1534 } 1540 }
1535 1541
1536 } // namespace blink 1542 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698