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

Side by Side Diff: third_party/WebKit/Source/core/fetch/RawResource.cpp

Issue 1987413002: Add link preload as=document support Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: crash fix Created 4 years, 3 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) 2011 Google Inc. All Rights Reserved. 2 * Copyright (C) 2011 Google Inc. All Rights Reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 25 matching lines...) Expand all
36 namespace blink { 36 namespace blink {
37 37
38 Resource* RawResource::fetchSynchronously(FetchRequest& request, ResourceFetcher * fetcher) 38 Resource* RawResource::fetchSynchronously(FetchRequest& request, ResourceFetcher * fetcher)
39 { 39 {
40 request.makeSynchronous(); 40 request.makeSynchronous();
41 return fetcher->requestResource(request, RawResourceFactory(Resource::Raw)); 41 return fetcher->requestResource(request, RawResourceFactory(Resource::Raw));
42 } 42 }
43 43
44 RawResource* RawResource::fetchImport(FetchRequest& request, ResourceFetcher* fe tcher) 44 RawResource* RawResource::fetchImport(FetchRequest& request, ResourceFetcher* fe tcher)
45 { 45 {
46 ASSERT(request.resourceRequest().frameType() == WebURLRequest::FrameTypeNone ); 46 DCHECK(request.resourceRequest().frameType() == WebURLRequest::FrameTypeNone );
47 request.mutableResourceRequest().setRequestContext(WebURLRequest::RequestCon textImport); 47 request.mutableResourceRequest().setRequestContext(WebURLRequest::RequestCon textImport);
48 return toRawResource(fetcher->requestResource(request, RawResourceFactory(Re source::ImportResource))); 48 return toRawResource(fetcher->requestResource(request, RawResourceFactory(Re source::ImportResource)));
49 } 49 }
50 50
51 RawResource* RawResource::fetch(FetchRequest& request, ResourceFetcher* fetcher) 51 RawResource* RawResource::fetch(FetchRequest& request, ResourceFetcher* fetcher)
52 { 52 {
53 ASSERT(request.resourceRequest().frameType() == WebURLRequest::FrameTypeNone ); 53 DCHECK(request.resourceRequest().frameType() == WebURLRequest::FrameTypeNone );
54 ASSERT(request.resourceRequest().requestContext() != WebURLRequest::RequestC ontextUnspecified); 54 DCHECK(request.resourceRequest().requestContext() != WebURLRequest::RequestC ontextUnspecified);
55 return toRawResource(fetcher->requestResource(request, RawResourceFactory(Re source::Raw))); 55 return toRawResource(fetcher->requestResource(request, RawResourceFactory(Re source::Raw)));
56 } 56 }
57 57
58 RawResource* RawResource::fetchMainResource(FetchRequest& request, ResourceFetch er* fetcher, const SubstituteData& substituteData) 58 RawResource* RawResource::fetchMainResource(FetchRequest& request, ResourceFetch er* fetcher, const SubstituteData& substituteData)
59 { 59 {
60 ASSERT(request.resourceRequest().frameType() != WebURLRequest::FrameTypeNone ); 60 DCHECK(request.resourceRequest().frameType() != WebURLRequest::FrameTypeNone );
61 ASSERT(request.resourceRequest().requestContext() == WebURLRequest::RequestC ontextForm || request.resourceRequest().requestContext() == WebURLRequest::Reque stContextFrame || request.resourceRequest().requestContext() == WebURLRequest::R equestContextHyperlink || request.resourceRequest().requestContext() == WebURLRe quest::RequestContextIframe || request.resourceRequest().requestContext() == Web URLRequest::RequestContextInternal || request.resourceRequest().requestContext() == WebURLRequest::RequestContextLocation); 61 DCHECK(request.resourceRequest().requestContext() == WebURLRequest::RequestC ontextForm
62 || request.resourceRequest().requestContext() == WebURLRequest::RequestC ontextFrame
63 || request.resourceRequest().requestContext() == WebURLRequest::RequestC ontextHyperlink
64 || request.resourceRequest().requestContext() == WebURLRequest::RequestC ontextIframe
65 || request.resourceRequest().requestContext() == WebURLRequest::RequestC ontextInternal
66 || request.resourceRequest().requestContext() == WebURLRequest::RequestC ontextLocation);
62 67
63 return toRawResource(fetcher->requestResource(request, RawResourceFactory(Re source::MainResource), substituteData)); 68 return toRawResource(fetcher->requestResource(request, RawResourceFactory(Re source::MainResource), substituteData));
64 } 69 }
65 70
66 RawResource* RawResource::fetchMedia(FetchRequest& request, ResourceFetcher* fet cher) 71 RawResource* RawResource::fetchMedia(FetchRequest& request, ResourceFetcher* fet cher)
67 { 72 {
68 ASSERT(request.resourceRequest().frameType() == WebURLRequest::FrameTypeNone ); 73 DCHECK(request.resourceRequest().frameType() == WebURLRequest::FrameTypeNone );
69 ASSERT(request.resourceRequest().requestContext() == WebURLRequest::RequestC ontextAudio || request.resourceRequest().requestContext() == WebURLRequest::Requ estContextVideo); 74 DCHECK(request.resourceRequest().requestContext() == WebURLRequest::RequestC ontextAudio || request.resourceRequest().requestContext() == WebURLRequest::Requ estContextVideo);
70 return toRawResource(fetcher->requestResource(request, RawResourceFactory(Re source::Media))); 75 return toRawResource(fetcher->requestResource(request, RawResourceFactory(Re source::Media)));
71 } 76 }
72 77
73 RawResource* RawResource::fetchTextTrack(FetchRequest& request, ResourceFetcher* fetcher) 78 RawResource* RawResource::fetchTextTrack(FetchRequest& request, ResourceFetcher* fetcher)
74 { 79 {
75 ASSERT(request.resourceRequest().frameType() == WebURLRequest::FrameTypeNone ); 80 DCHECK(request.resourceRequest().frameType() == WebURLRequest::FrameTypeNone );
76 request.mutableResourceRequest().setRequestContext(WebURLRequest::RequestCon textTrack); 81 request.mutableResourceRequest().setRequestContext(WebURLRequest::RequestCon textTrack);
77 return toRawResource(fetcher->requestResource(request, RawResourceFactory(Re source::TextTrack))); 82 return toRawResource(fetcher->requestResource(request, RawResourceFactory(Re source::TextTrack)));
78 } 83 }
79 84
80 RawResource* RawResource::fetchManifest(FetchRequest& request, ResourceFetcher* fetcher) 85 RawResource* RawResource::fetchManifest(FetchRequest& request, ResourceFetcher* fetcher)
81 { 86 {
82 ASSERT(request.resourceRequest().frameType() == WebURLRequest::FrameTypeNone ); 87 DCHECK(request.resourceRequest().frameType() == WebURLRequest::FrameTypeNone );
83 ASSERT(request.resourceRequest().requestContext() == WebURLRequest::RequestC ontextManifest); 88 DCHECK(request.resourceRequest().requestContext() == WebURLRequest::RequestC ontextManifest);
84 return toRawResource(fetcher->requestResource(request, RawResourceFactory(Re source::Manifest))); 89 return toRawResource(fetcher->requestResource(request, RawResourceFactory(Re source::Manifest)));
85 } 90 }
86 91
87 RawResource::RawResource(const ResourceRequest& resourceRequest, Type type, cons t ResourceLoaderOptions& options) 92 RawResource::RawResource(const ResourceRequest& resourceRequest, Type type, cons t ResourceLoaderOptions& options)
88 : Resource(resourceRequest, type, options) 93 : Resource(resourceRequest, type, options)
89 { 94 {
90 } 95 }
91 96
92 void RawResource::appendData(const char* data, size_t length) 97 void RawResource::appendData(const char* data, size_t length)
93 { 98 {
94 Resource::appendData(data, length); 99 Resource::appendData(data, length);
95 100
96 ResourceClientWalker<RawResourceClient> w(clients()); 101 ResourceClientWalker<RawResourceClient> w(clients());
97 while (RawResourceClient* c = w.next()) 102 while (RawResourceClient* c = w.next())
98 c->dataReceived(this, data, length); 103 c->dataReceived(this, data, length);
99 } 104 }
100 105
101 void RawResource::didAddClient(ResourceClient* c) 106 void RawResource::didAddClient(ResourceClient* c)
102 { 107 {
103 if (!hasClient(c)) 108 if (!hasClient(c))
104 return; 109 return;
105 ASSERT(RawResourceClient::isExpectedType(c)); 110 DCHECK(RawResourceClient::isExpectedType(c));
106 RawResourceClient* client = static_cast<RawResourceClient*>(c); 111 RawResourceClient* client = static_cast<RawResourceClient*>(c);
107 for (const auto& redirect : redirectChain()) { 112 for (const auto& redirect : redirectChain()) {
108 ResourceRequest request(redirect.m_request); 113 ResourceRequest request(redirect.m_request);
109 client->redirectReceived(this, request, redirect.m_redirectResponse); 114 client->redirectReceived(this, request, redirect.m_redirectResponse);
110 if (!hasClient(c)) 115 if (!hasClient(c))
111 return; 116 return;
112 } 117 }
113 118
114 if (!response().isNull()) 119 if (!response().isNull())
115 client->responseReceived(this, response(), nullptr); 120 client->responseReceived(this, response(), nullptr);
116 if (!hasClient(c)) 121 if (!hasClient(c))
117 return; 122 return;
118 if (data()) 123 if (data())
119 client->dataReceived(this, data()->data(), data()->size()); 124 client->dataReceived(this, data()->data(), data()->size());
120 if (!hasClient(c)) 125 if (!hasClient(c))
121 return; 126 return;
122 Resource::didAddClient(client); 127 Resource::didAddClient(client);
123 } 128 }
124 129
125 void RawResource::willFollowRedirect(ResourceRequest& newRequest, const Resource Response& redirectResponse) 130 void RawResource::willFollowRedirect(ResourceRequest& newRequest, const Resource Response& redirectResponse)
126 { 131 {
127 Resource::willFollowRedirect(newRequest, redirectResponse); 132 Resource::willFollowRedirect(newRequest, redirectResponse);
128 133
129 ASSERT(!redirectResponse.isNull()); 134 DCHECK(!redirectResponse.isNull());
130 ResourceClientWalker<RawResourceClient> w(clients()); 135 ResourceClientWalker<RawResourceClient> w(clients());
131 while (RawResourceClient* c = w.next()) 136 while (RawResourceClient* c = w.next())
132 c->redirectReceived(this, newRequest, redirectResponse); 137 c->redirectReceived(this, newRequest, redirectResponse);
133 } 138 }
134 139
135 void RawResource::willNotFollowRedirect() 140 void RawResource::willNotFollowRedirect()
136 { 141 {
137 ResourceClientWalker<RawResourceClient> w(clients()); 142 ResourceClientWalker<RawResourceClient> w(clients());
138 while (RawResourceClient* c = w.next()) 143 while (RawResourceClient* c = w.next())
139 c->redirectBlocked(); 144 c->redirectBlocked();
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 330
326 void RawResourceClientStateChecker::notifyFinished(Resource* resource) 331 void RawResourceClientStateChecker::notifyFinished(Resource* resource)
327 { 332 {
328 SECURITY_CHECK(m_state != NotAddedAsClient); 333 SECURITY_CHECK(m_state != NotAddedAsClient);
329 SECURITY_CHECK(m_state != NotifyFinished); 334 SECURITY_CHECK(m_state != NotifyFinished);
330 SECURITY_CHECK(resource->errorOccurred() || (m_state == ResponseReceived || m_state == SetSerializedCachedMetadata || m_state == DataReceived || m_state == DataDownloaded)); 335 SECURITY_CHECK(resource->errorOccurred() || (m_state == ResponseReceived || m_state == SetSerializedCachedMetadata || m_state == DataReceived || m_state == DataDownloaded));
331 m_state = NotifyFinished; 336 m_state = NotifyFinished;
332 } 337 }
333 338
334 } // namespace blink 339 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/fetch/ImageResourceTest.cpp ('k') | third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698