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

Side by Side Diff: content/browser/webui/url_data_manager_backend.cc

Issue 2149323003: Change the way that gzipped resources are loaded from resources.pak (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rename Created 4 years, 4 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #include "content/browser/webui/url_data_manager_backend.h" 5 #include "content/browser/webui/url_data_manager_backend.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 20 matching lines...) Expand all
31 #include "content/browser/webui/shared_resources_data_source.h" 31 #include "content/browser/webui/shared_resources_data_source.h"
32 #include "content/browser/webui/url_data_source_impl.h" 32 #include "content/browser/webui/url_data_source_impl.h"
33 #include "content/public/browser/browser_context.h" 33 #include "content/public/browser/browser_context.h"
34 #include "content/public/browser/browser_thread.h" 34 #include "content/public/browser/browser_thread.h"
35 #include "content/public/browser/content_browser_client.h" 35 #include "content/public/browser/content_browser_client.h"
36 #include "content/public/browser/render_process_host.h" 36 #include "content/public/browser/render_process_host.h"
37 #include "content/public/browser/resource_request_info.h" 37 #include "content/public/browser/resource_request_info.h"
38 #include "content/public/common/url_constants.h" 38 #include "content/public/common/url_constants.h"
39 #include "net/base/io_buffer.h" 39 #include "net/base/io_buffer.h"
40 #include "net/base/net_errors.h" 40 #include "net/base/net_errors.h"
41 #include "net/filter/filter.h"
41 #include "net/http/http_response_headers.h" 42 #include "net/http/http_response_headers.h"
42 #include "net/http/http_status_code.h" 43 #include "net/http/http_status_code.h"
43 #include "net/log/net_log_util.h" 44 #include "net/log/net_log_util.h"
44 #include "net/url_request/url_request.h" 45 #include "net/url_request/url_request.h"
45 #include "net/url_request/url_request_context.h" 46 #include "net/url_request/url_request_context.h"
46 #include "net/url_request/url_request_error_job.h" 47 #include "net/url_request/url_request_error_job.h"
47 #include "net/url_request/url_request_job.h" 48 #include "net/url_request/url_request_job.h"
48 #include "net/url_request/url_request_job_factory.h" 49 #include "net/url_request/url_request_job_factory.h"
49 #include "url/url_util.h" 50 #include "url/url_util.h"
50 51
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 URLDataManagerBackend* backend, 119 URLDataManagerBackend* backend,
119 bool is_incognito); 120 bool is_incognito);
120 121
121 // net::URLRequestJob implementation. 122 // net::URLRequestJob implementation.
122 void Start() override; 123 void Start() override;
123 void Kill() override; 124 void Kill() override;
124 int ReadRawData(net::IOBuffer* buf, int buf_size) override; 125 int ReadRawData(net::IOBuffer* buf, int buf_size) override;
125 bool GetMimeType(std::string* mime_type) const override; 126 bool GetMimeType(std::string* mime_type) const override;
126 int GetResponseCode() const override; 127 int GetResponseCode() const override;
127 void GetResponseInfo(net::HttpResponseInfo* info) override; 128 void GetResponseInfo(net::HttpResponseInfo* info) override;
129 std::unique_ptr<net::Filter> SetupFilter() const override;
128 130
129 // Used to notify that the requested data's |mime_type| is ready. 131 // Used to notify that the requested data's |mime_type| is ready.
130 void MimeTypeAvailable(const std::string& mime_type); 132 void MimeTypeAvailable(const std::string& mime_type);
131 133
132 // Called by ChromeURLDataManager to notify us that the data blob is ready 134 // Called by ChromeURLDataManager to notify us that the data blob is ready
133 // for us. 135 // for us.
134 void DataAvailable(base::RefCountedMemory* bytes); 136 void DataAvailable(base::RefCountedMemory* bytes);
135 137
136 // Returns a weak pointer to the job. 138 // Returns a weak pointer to the job.
137 base::WeakPtr<URLRequestChromeJob> AsWeakPtr(); 139 base::WeakPtr<URLRequestChromeJob> AsWeakPtr();
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 } 180 }
179 181
180 void set_send_content_type_header(bool send_content_type_header) { 182 void set_send_content_type_header(bool send_content_type_header) {
181 send_content_type_header_ = send_content_type_header; 183 send_content_type_header_ = send_content_type_header;
182 } 184 }
183 185
184 void set_access_control_allow_origin(const std::string& value) { 186 void set_access_control_allow_origin(const std::string& value) {
185 access_control_allow_origin_ = value; 187 access_control_allow_origin_ = value;
186 } 188 }
187 189
190 void set_is_gzipped(bool is_gzipped) {
191 is_gzipped_ = is_gzipped;
192 }
193
188 // Returns true when job was generated from an incognito profile. 194 // Returns true when job was generated from an incognito profile.
189 bool is_incognito() const { 195 bool is_incognito() const {
190 return is_incognito_; 196 return is_incognito_;
191 } 197 }
192 198
193 private: 199 private:
194 ~URLRequestChromeJob() override; 200 ~URLRequestChromeJob() override;
195 201
196 // Helper for Start(), to let us start asynchronously. 202 // Helper for Start(), to let us start asynchronously.
197 // (This pattern is shared by most net::URLRequestJob implementations.) 203 // (This pattern is shared by most net::URLRequestJob implementations.)
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 // If true, sets the "Content-Type: <mime-type>" header. 246 // If true, sets the "Content-Type: <mime-type>" header.
241 bool send_content_type_header_; 247 bool send_content_type_header_;
242 248
243 // If not empty, "Access-Control-Allow-Origin:" is set to the value of this 249 // If not empty, "Access-Control-Allow-Origin:" is set to the value of this
244 // string. 250 // string.
245 std::string access_control_allow_origin_; 251 std::string access_control_allow_origin_;
246 252
247 // True when job is generated from an incognito profile. 253 // True when job is generated from an incognito profile.
248 const bool is_incognito_; 254 const bool is_incognito_;
249 255
256 // True when gzip encoding should be used. NOTE: this requires the original
257 // resources in resources.pak use compress="gzip".
258 bool is_gzipped_;
259
250 // The backend is owned by net::URLRequestContext and always outlives us. 260 // The backend is owned by net::URLRequestContext and always outlives us.
251 URLDataManagerBackend* backend_; 261 URLDataManagerBackend* backend_;
252 262
253 base::WeakPtrFactory<URLRequestChromeJob> weak_factory_; 263 base::WeakPtrFactory<URLRequestChromeJob> weak_factory_;
254 264
255 DISALLOW_COPY_AND_ASSIGN(URLRequestChromeJob); 265 DISALLOW_COPY_AND_ASSIGN(URLRequestChromeJob);
256 }; 266 };
257 267
258 URLRequestChromeJob::URLRequestChromeJob(net::URLRequest* request, 268 URLRequestChromeJob::URLRequestChromeJob(net::URLRequest* request,
259 net::NetworkDelegate* network_delegate, 269 net::NetworkDelegate* network_delegate,
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 base::StringPrintf("%s:%s", net::HttpRequestHeaders::kContentType, 358 base::StringPrintf("%s:%s", net::HttpRequestHeaders::kContentType,
349 mime_type_.c_str()); 359 mime_type_.c_str());
350 info->headers->AddHeader(content_type); 360 info->headers->AddHeader(content_type);
351 } 361 }
352 362
353 if (!access_control_allow_origin_.empty()) { 363 if (!access_control_allow_origin_.empty()) {
354 info->headers->AddHeader("Access-Control-Allow-Origin: " + 364 info->headers->AddHeader("Access-Control-Allow-Origin: " +
355 access_control_allow_origin_); 365 access_control_allow_origin_);
356 info->headers->AddHeader("Vary: Origin"); 366 info->headers->AddHeader("Vary: Origin");
357 } 367 }
368
369 if (is_gzipped_)
370 info->headers->AddHeader("Content-Encoding: gzip");
371 }
372
373 std::unique_ptr<net::Filter> URLRequestChromeJob::SetupFilter() const {
374 return is_gzipped_ ? net::Filter::GZipFactory() : nullptr;
358 } 375 }
359 376
360 void URLRequestChromeJob::MimeTypeAvailable(const std::string& mime_type) { 377 void URLRequestChromeJob::MimeTypeAvailable(const std::string& mime_type) {
361 set_mime_type(mime_type); 378 set_mime_type(mime_type);
362 NotifyHeadersComplete(); 379 NotifyHeadersComplete();
363 } 380 }
364 381
365 void URLRequestChromeJob::DataAvailable(base::RefCountedMemory* bytes) { 382 void URLRequestChromeJob::DataAvailable(base::RefCountedMemory* bytes) {
366 TRACE_EVENT_ASYNC_END0("browser", "DataManager:Request", this); 383 TRACE_EVENT_ASYNC_END0("browser", "DataManager:Request", this);
367 if (bytes) { 384 if (bytes) {
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
628 job->set_content_security_policy_child_source( 645 job->set_content_security_policy_child_source(
629 source->source()->GetContentSecurityPolicyChildSrc()); 646 source->source()->GetContentSecurityPolicyChildSrc());
630 job->set_content_security_policy_style_source( 647 job->set_content_security_policy_style_source(
631 source->source()->GetContentSecurityPolicyStyleSrc()); 648 source->source()->GetContentSecurityPolicyStyleSrc());
632 job->set_content_security_policy_image_source( 649 job->set_content_security_policy_image_source(
633 source->source()->GetContentSecurityPolicyImgSrc()); 650 source->source()->GetContentSecurityPolicyImgSrc());
634 job->set_deny_xframe_options( 651 job->set_deny_xframe_options(
635 source->source()->ShouldDenyXFrameOptions()); 652 source->source()->ShouldDenyXFrameOptions());
636 job->set_send_content_type_header( 653 job->set_send_content_type_header(
637 source->source()->ShouldServeMimeTypeAsContentTypeHeader()); 654 source->source()->ShouldServeMimeTypeAsContentTypeHeader());
655 job->set_is_gzipped(source->source()->IsGzipped(path));
638 656
639 std::string origin = GetOriginHeaderValue(request); 657 std::string origin = GetOriginHeaderValue(request);
640 if (!origin.empty()) { 658 if (!origin.empty()) {
641 std::string header = 659 std::string header =
642 source->source()->GetAccessControlAllowOriginForOrigin(origin); 660 source->source()->GetAccessControlAllowOriginForOrigin(origin);
643 DCHECK(header.empty() || header == origin || header == "*" || 661 DCHECK(header.empty() || header == origin || header == "*" ||
644 header == "null"); 662 header == "null");
645 job->set_access_control_allow_origin(header); 663 job->set_access_control_allow_origin(header);
646 } 664 }
647 665
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
794 812
795 } // namespace 813 } // namespace
796 814
797 net::URLRequestJobFactory::ProtocolHandler* 815 net::URLRequestJobFactory::ProtocolHandler*
798 CreateDevToolsProtocolHandler(content::ResourceContext* resource_context, 816 CreateDevToolsProtocolHandler(content::ResourceContext* resource_context,
799 bool is_incognito) { 817 bool is_incognito) {
800 return new DevToolsJobFactory(resource_context, is_incognito); 818 return new DevToolsJobFactory(resource_context, is_incognito);
801 } 819 }
802 820
803 } // namespace content 821 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/webrtc/webrtc_internals_ui.cc ('k') | content/browser/webui/web_ui_data_source_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698