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

Side by Side Diff: content/browser/service_worker/service_worker_url_request_job.h

Issue 2290453005: service worker: Refactor blob reading out of ServiceWorkerURLRequestJob (Closed)
Patch Set: 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 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_URL_REQUEST_JOB_H_ 5 #ifndef CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_URL_REQUEST_JOB_H_
6 #define CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_URL_REQUEST_JOB_H_ 6 #define CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_URL_REQUEST_JOB_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <map> 10 #include <map>
(...skipping 28 matching lines...) Expand all
39 39
40 namespace storage { 40 namespace storage {
41 class BlobDataHandle; 41 class BlobDataHandle;
42 class BlobStorageContext; 42 class BlobStorageContext;
43 } 43 }
44 44
45 namespace content { 45 namespace content {
46 46
47 class ResourceContext; 47 class ResourceContext;
48 class ResourceRequestBodyImpl; 48 class ResourceRequestBodyImpl;
49 class ServiceWorkerBlobReader;
49 class ServiceWorkerContextCore; 50 class ServiceWorkerContextCore;
50 class ServiceWorkerFetchDispatcher; 51 class ServiceWorkerFetchDispatcher;
51 class ServiceWorkerProviderHost; 52 class ServiceWorkerProviderHost;
52 class ServiceWorkerVersion; 53 class ServiceWorkerVersion;
53 class Stream; 54 class Stream;
54 55
55 class CONTENT_EXPORT ServiceWorkerURLRequestJob 56 class CONTENT_EXPORT ServiceWorkerURLRequestJob
56 : public net::URLRequestJob, 57 : public net::URLRequestJob,
57 public net::URLRequest::Delegate,
58 public StreamReadObserver, 58 public StreamReadObserver,
59 public StreamRegisterObserver { 59 public StreamRegisterObserver {
60 public: 60 public:
61 class CONTENT_EXPORT Delegate { 61 class CONTENT_EXPORT Delegate {
62 public: 62 public:
63 virtual ~Delegate() {} 63 virtual ~Delegate() {}
64 64
65 // Will be invoked before the request is restarted. The caller 65 // Will be invoked before the request is restarted. The caller
66 // can use this opportunity to grab state from the 66 // can use this opportunity to grab state from the
67 // ServiceWorkerURLRequestJob to determine how it should behave when the 67 // ServiceWorkerURLRequestJob to determine how it should behave when the
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 void Kill() override; 128 void Kill() override;
129 net::LoadState GetLoadState() const override; 129 net::LoadState GetLoadState() const override;
130 bool GetCharset(std::string* charset) override; 130 bool GetCharset(std::string* charset) override;
131 bool GetMimeType(std::string* mime_type) const override; 131 bool GetMimeType(std::string* mime_type) const override;
132 void GetResponseInfo(net::HttpResponseInfo* info) override; 132 void GetResponseInfo(net::HttpResponseInfo* info) override;
133 void GetLoadTimingInfo(net::LoadTimingInfo* load_timing_info) const override; 133 void GetLoadTimingInfo(net::LoadTimingInfo* load_timing_info) const override;
134 int GetResponseCode() const override; 134 int GetResponseCode() const override;
135 void SetExtraRequestHeaders(const net::HttpRequestHeaders& headers) override; 135 void SetExtraRequestHeaders(const net::HttpRequestHeaders& headers) override;
136 int ReadRawData(net::IOBuffer* buf, int buf_size) override; 136 int ReadRawData(net::IOBuffer* buf, int buf_size) override;
137 137
138 // net::URLRequest::Delegate overrides that read the blob from the
139 // ServiceWorkerFetchResponse.
140 void OnReceivedRedirect(net::URLRequest* request,
141 const net::RedirectInfo& redirect_info,
142 bool* defer_redirect) override;
143 void OnAuthRequired(net::URLRequest* request,
144 net::AuthChallengeInfo* auth_info) override;
145 void OnCertificateRequested(
146 net::URLRequest* request,
147 net::SSLCertRequestInfo* cert_request_info) override;
148 void OnSSLCertificateError(net::URLRequest* request,
149 const net::SSLInfo& ssl_info,
150 bool fatal) override;
151 void OnResponseStarted(net::URLRequest* request) override;
152 void OnReadCompleted(net::URLRequest* request, int bytes_read) override;
153
154 // StreamObserver override: 138 // StreamObserver override:
155 void OnDataAvailable(Stream* stream) override; 139 void OnDataAvailable(Stream* stream) override;
156 140
157 // StreamRegisterObserver override: 141 // StreamRegisterObserver override:
158 void OnStreamRegistered(Stream* stream) override; 142 void OnStreamRegistered(Stream* stream) override;
159 143
144 //----------------------------------------------------------------------------
145 // The following are intended for use by ServiceWorkerBlobReader.
146 void OnResponseStarted();
147 void OnReadRawDataComplete(int bytes_read);
148 void RecordResult(ServiceWorkerMetrics::URLRequestJobResult result);
149 //----------------------------------------------------------------------------
150
160 base::WeakPtr<ServiceWorkerURLRequestJob> GetWeakPtr(); 151 base::WeakPtr<ServiceWorkerURLRequestJob> GetWeakPtr();
161 152
162 private: 153 private:
163 class BlobConstructionWaiter; 154 class BlobConstructionWaiter;
164 155
165 enum ResponseType { 156 enum ResponseType {
166 NOT_DETERMINED, 157 NOT_DETERMINED,
167 FALLBACK_TO_NETWORK, 158 FALLBACK_TO_NETWORK,
168 FALLBACK_TO_RENDERER, // Use this when falling back with CORS check 159 FALLBACK_TO_RENDERER, // Use this when falling back with CORS check
169 FORWARD_TO_SERVICE_WORKER, 160 FORWARD_TO_SERVICE_WORKER,
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 // This can be called after StartRequest. 210 // This can be called after StartRequest.
220 void FinalizeFallbackToRenderer(); 211 void FinalizeFallbackToRenderer();
221 212
222 // True if need to send back a response with fall_back_required set as true to 213 // True if need to send back a response with fall_back_required set as true to
223 // trigger subsequent network requests with CORS checking. 214 // trigger subsequent network requests with CORS checking.
224 bool IsFallbackToRendererNeeded() const; 215 bool IsFallbackToRendererNeeded() const;
225 216
226 // For UMA. 217 // For UMA.
227 void SetResponseBodyType(ResponseBodyType type); 218 void SetResponseBodyType(ResponseBodyType type);
228 bool ShouldRecordResult(); 219 bool ShouldRecordResult();
229 void RecordResult(ServiceWorkerMetrics::URLRequestJobResult result);
230 void RecordStatusZeroResponseError( 220 void RecordStatusZeroResponseError(
231 blink::WebServiceWorkerResponseError error); 221 blink::WebServiceWorkerResponseError error);
232 222
233 // Releases the resources for streaming. 223 // Releases the resources for streaming.
234 void ClearStream(); 224 void ClearStream();
235 225
236 const net::HttpResponseInfo* http_info() const; 226 const net::HttpResponseInfo* http_info() const;
237 227
238 // Invoke callbacks before invoking corresponding URLRequestJob methods. 228 // Invoke callbacks before invoking corresponding URLRequestJob methods.
239 void NotifyHeadersComplete(); 229 void NotifyHeadersComplete();
(...skipping 28 matching lines...) Expand all
268 // Headers that have not yet been committed to |http_response_info_|. 258 // Headers that have not yet been committed to |http_response_info_|.
269 scoped_refptr<net::HttpResponseHeaders> http_response_headers_; 259 scoped_refptr<net::HttpResponseHeaders> http_response_headers_;
270 GURL response_url_; 260 GURL response_url_;
271 blink::WebServiceWorkerResponseType service_worker_response_type_; 261 blink::WebServiceWorkerResponseType service_worker_response_type_;
272 262
273 // Used when response type is FORWARD_TO_SERVICE_WORKER. 263 // Used when response type is FORWARD_TO_SERVICE_WORKER.
274 std::unique_ptr<ServiceWorkerFetchDispatcher> fetch_dispatcher_; 264 std::unique_ptr<ServiceWorkerFetchDispatcher> fetch_dispatcher_;
275 std::string client_id_; 265 std::string client_id_;
276 base::WeakPtr<storage::BlobStorageContext> blob_storage_context_; 266 base::WeakPtr<storage::BlobStorageContext> blob_storage_context_;
277 const ResourceContext* resource_context_; 267 const ResourceContext* resource_context_;
278 std::unique_ptr<net::URLRequest> blob_request_; 268 std::unique_ptr<ServiceWorkerBlobReader> blob_reader_;
279 scoped_refptr<Stream> stream_; 269 scoped_refptr<Stream> stream_;
280 GURL waiting_stream_url_; 270 GURL waiting_stream_url_;
281 scoped_refptr<net::IOBuffer> stream_pending_buffer_; 271 scoped_refptr<net::IOBuffer> stream_pending_buffer_;
282 int stream_pending_buffer_size_; 272 int stream_pending_buffer_size_;
283 273
284 FetchRequestMode request_mode_; 274 FetchRequestMode request_mode_;
285 FetchCredentialsMode credentials_mode_; 275 FetchCredentialsMode credentials_mode_;
286 FetchRedirectMode redirect_mode_; 276 FetchRedirectMode redirect_mode_;
287 const ResourceType resource_type_; 277 const ResourceType resource_type_;
288 RequestContextType request_context_type_; 278 RequestContextType request_context_type_;
(...skipping 20 matching lines...) Expand all
309 EmbeddedWorkerStatus initial_worker_status_ = EmbeddedWorkerStatus::STOPPED; 299 EmbeddedWorkerStatus initial_worker_status_ = EmbeddedWorkerStatus::STOPPED;
310 300
311 base::WeakPtrFactory<ServiceWorkerURLRequestJob> weak_factory_; 301 base::WeakPtrFactory<ServiceWorkerURLRequestJob> weak_factory_;
312 302
313 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerURLRequestJob); 303 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerURLRequestJob);
314 }; 304 };
315 305
316 } // namespace content 306 } // namespace content
317 307
318 #endif // CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_URL_REQUEST_JOB_H_ 308 #endif // CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_URL_REQUEST_JOB_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698