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

Side by Side Diff: content/browser/loader/resource_dispatcher_host_impl.cc

Issue 2503713004: Avoid string copies when determining approximate memory usage in RDHI (Closed)
Patch Set: rdsmith review and fix unit tests Created 4 years, 1 month 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 // See http://dev.chromium.org/developers/design-documents/multi-process-resourc e-loading 5 // See http://dev.chromium.org/developers/design-documents/multi-process-resourc e-loading
6 6
7 #include "content/browser/loader/resource_dispatcher_host_impl.h" 7 #include "content/browser/loader/resource_dispatcher_host_impl.h"
8 8
9 #include <stddef.h> 9 #include <stddef.h>
10 10
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 #include "ipc/ipc_message_start.h" 93 #include "ipc/ipc_message_start.h"
94 #include "net/base/auth.h" 94 #include "net/base/auth.h"
95 #include "net/base/load_flags.h" 95 #include "net/base/load_flags.h"
96 #include "net/base/mime_util.h" 96 #include "net/base/mime_util.h"
97 #include "net/base/net_errors.h" 97 #include "net/base/net_errors.h"
98 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" 98 #include "net/base/registry_controlled_domains/registry_controlled_domain.h"
99 #include "net/base/request_priority.h" 99 #include "net/base/request_priority.h"
100 #include "net/base/upload_data_stream.h" 100 #include "net/base/upload_data_stream.h"
101 #include "net/cert/cert_status_flags.h" 101 #include "net/cert/cert_status_flags.h"
102 #include "net/cookies/cookie_monster.h" 102 #include "net/cookies/cookie_monster.h"
103 #include "net/http/http_request_headers.h"
103 #include "net/http/http_response_headers.h" 104 #include "net/http/http_response_headers.h"
104 #include "net/http/http_response_info.h" 105 #include "net/http/http_response_info.h"
105 #include "net/ssl/client_cert_store.h" 106 #include "net/ssl/client_cert_store.h"
106 #include "net/ssl/ssl_cert_request_info.h" 107 #include "net/ssl/ssl_cert_request_info.h"
107 #include "net/url_request/url_request.h" 108 #include "net/url_request/url_request.h"
108 #include "net/url_request/url_request_context.h" 109 #include "net/url_request/url_request_context.h"
109 #include "net/url_request/url_request_job_factory.h" 110 #include "net/url_request/url_request_job_factory.h"
110 #include "storage/browser/blob/blob_data_handle.h" 111 #include "storage/browser/blob/blob_data_handle.h"
111 #include "storage/browser/blob/blob_storage_context.h" 112 #include "storage/browser/blob/blob_storage_context.h"
112 #include "storage/browser/blob/blob_url_request_job_factory.h" 113 #include "storage/browser/blob/blob_url_request_job_factory.h"
113 #include "storage/browser/blob/shareable_file_reference.h" 114 #include "storage/browser/blob/shareable_file_reference.h"
114 #include "storage/browser/fileapi/file_permission_policy.h" 115 #include "storage/browser/fileapi/file_permission_policy.h"
115 #include "storage/browser/fileapi/file_system_context.h" 116 #include "storage/browser/fileapi/file_system_context.h"
117 #include "url/third_party/mozilla/url_parse.h"
116 #include "url/url_constants.h" 118 #include "url/url_constants.h"
117 119
118 using base::Time; 120 using base::Time;
119 using base::TimeDelta; 121 using base::TimeDelta;
120 using base::TimeTicks; 122 using base::TimeTicks;
121 using storage::ShareableFileReference; 123 using storage::ShareableFileReference;
122 using SyncLoadResultCallback = 124 using SyncLoadResultCallback =
123 content::ResourceDispatcherHostImpl::SyncLoadResultCallback; 125 content::ResourceDispatcherHostImpl::SyncLoadResultCallback;
124 126
125 // ---------------------------------------------------------------------------- 127 // ----------------------------------------------------------------------------
(...skipping 2197 matching lines...) Expand 10 before | Expand all | Expand 10 after
2323 nullptr, nullptr); 2325 nullptr, nullptr);
2324 filter_ = nullptr; 2326 filter_ = nullptr;
2325 } 2327 }
2326 2328
2327 // static 2329 // static
2328 int ResourceDispatcherHostImpl::CalculateApproximateMemoryCost( 2330 int ResourceDispatcherHostImpl::CalculateApproximateMemoryCost(
2329 net::URLRequest* request) { 2331 net::URLRequest* request) {
2330 // The following fields should be a minor size contribution (experimentally 2332 // The following fields should be a minor size contribution (experimentally
2331 // on the order of 100). However since they are variable length, it could 2333 // on the order of 100). However since they are variable length, it could
2332 // in theory be a sizeable contribution. 2334 // in theory be a sizeable contribution.
2333 int strings_cost = request->extra_request_headers().ToString().size() + 2335 int strings_cost = 0;
2334 request->original_url().spec().size() + 2336 for (net::HttpRequestHeaders::Iterator it(request->extra_request_headers());
2335 request->referrer().size() + 2337 it.GetNext();) {
2336 request->method().size(); 2338 strings_cost += it.name().length() + it.value().length();
2339 }
2340 strings_cost +=
2341 request->original_url().parsed_for_possibly_invalid_spec().Length() +
2342 request->referrer().size() + request->method().size();
2337 2343
2338 // Note that this expression will typically be dominated by: 2344 // Note that this expression will typically be dominated by:
2339 // |kAvgBytesPerOutstandingRequest|. 2345 // |kAvgBytesPerOutstandingRequest|.
2340 return kAvgBytesPerOutstandingRequest + strings_cost; 2346 return kAvgBytesPerOutstandingRequest + strings_cost;
2341 } 2347 }
2342 2348
2343 void ResourceDispatcherHostImpl::BeginRequestInternal( 2349 void ResourceDispatcherHostImpl::BeginRequestInternal(
2344 std::unique_ptr<net::URLRequest> request, 2350 std::unique_ptr<net::URLRequest> request,
2345 std::unique_ptr<ResourceHandler> handler) { 2351 std::unique_ptr<ResourceHandler> handler) {
2346 DCHECK(!request->is_pending()); 2352 DCHECK(!request->is_pending());
(...skipping 444 matching lines...) Expand 10 before | Expand all | Expand 10 after
2791 &throttles); 2797 &throttles);
2792 if (!throttles.empty()) { 2798 if (!throttles.empty()) {
2793 handler.reset(new ThrottlingResourceHandler(std::move(handler), request, 2799 handler.reset(new ThrottlingResourceHandler(std::move(handler), request,
2794 std::move(throttles))); 2800 std::move(throttles)));
2795 } 2801 }
2796 } 2802 }
2797 return handler; 2803 return handler;
2798 } 2804 }
2799 2805
2800 } // namespace content 2806 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/loader/resource_dispatcher_host_impl.h ('k') | content/browser/loader/resource_dispatcher_host_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698