Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "chrome/browser/predictors/resource_prefetch_predictor_test_util.h" | 5 #include "chrome/browser/predictors/loading_test_util.h" |
| 6 | 6 |
| 7 #include <cmath> | 7 #include <cmath> |
| 8 #include <memory> | |
| 9 | |
| 10 #include "content/public/browser/resource_request_info.h" | |
| 11 #include "net/http/http_response_headers.h" | |
| 12 #include "net/url_request/url_request_test_util.h" | |
| 8 | 13 |
| 9 namespace { | 14 namespace { |
| 10 | 15 |
| 16 predictors::EmptyURLRequestDelegate empty_url_request_delegate; | |
|
Benoit L
2017/06/07 12:01:05
nit: g_empty_url_request_delegate.
| |
| 17 | |
| 11 bool AlmostEqual(const double x, const double y) { | 18 bool AlmostEqual(const double x, const double y) { |
| 12 return std::fabs(x - y) <= 1e-6; // Arbitrary but close enough. | 19 return std::fabs(x - y) <= 1e-6; // Arbitrary but close enough. |
| 13 } | 20 } |
| 14 | 21 |
| 15 } // namespace | 22 } // namespace |
| 16 | 23 |
| 17 namespace predictors { | 24 namespace predictors { |
| 18 | 25 |
| 19 using URLRequestSummary = ResourcePrefetchPredictor::URLRequestSummary; | 26 using URLRequestSummary = ResourcePrefetchPredictor::URLRequestSummary; |
| 20 using PageRequestSummary = ResourcePrefetchPredictor::PageRequestSummary; | 27 using PageRequestSummary = ResourcePrefetchPredictor::PageRequestSummary; |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 185 config->max_consecutive_misses = 2; | 192 config->max_consecutive_misses = 2; |
| 186 config->max_redirect_consecutive_misses = 2; | 193 config->max_redirect_consecutive_misses = 2; |
| 187 config->min_resource_confidence_to_trigger_prefetch = 0.5; | 194 config->min_resource_confidence_to_trigger_prefetch = 0.5; |
| 188 } | 195 } |
| 189 config->is_url_learning_enabled = true; | 196 config->is_url_learning_enabled = true; |
| 190 config->is_manifests_enabled = true; | 197 config->is_manifests_enabled = true; |
| 191 config->is_origin_learning_enabled = true; | 198 config->is_origin_learning_enabled = true; |
| 192 config->mode = LoadingPredictorConfig::LEARNING; | 199 config->mode = LoadingPredictorConfig::LEARNING; |
| 193 } | 200 } |
| 194 | 201 |
| 202 scoped_refptr<net::HttpResponseHeaders> MakeResponseHeaders( | |
| 203 const char* headers) { | |
| 204 return make_scoped_refptr(new net::HttpResponseHeaders( | |
| 205 net::HttpUtil::AssembleRawHeaders(headers, strlen(headers)))); | |
| 206 } | |
| 207 | |
| 208 MockURLRequestJob::MockURLRequestJob(net::URLRequest* request, | |
| 209 const net::HttpResponseInfo& response_info, | |
| 210 const std::string& mime_type) | |
| 211 : net::URLRequestJob(request, nullptr), | |
| 212 response_info_(response_info), | |
| 213 mime_type_(mime_type) {} | |
| 214 | |
| 215 bool MockURLRequestJob::GetMimeType(std::string* mime_type) const { | |
| 216 *mime_type = mime_type_; | |
| 217 return true; | |
| 218 } | |
| 219 | |
| 220 void MockURLRequestJob::Start() { | |
| 221 NotifyHeadersComplete(); | |
| 222 } | |
| 223 | |
| 224 void MockURLRequestJob::GetResponseInfo(net::HttpResponseInfo* info) { | |
| 225 *info = response_info_; | |
| 226 } | |
| 227 | |
| 228 MockURLRequestJobFactory::MockURLRequestJobFactory() {} | |
| 229 MockURLRequestJobFactory::~MockURLRequestJobFactory() {} | |
| 230 | |
| 231 void MockURLRequestJobFactory::Reset() { | |
| 232 response_info_ = net::HttpResponseInfo(); | |
| 233 mime_type_ = std::string(); | |
| 234 } | |
| 235 | |
| 236 net::URLRequestJob* MockURLRequestJobFactory::MaybeCreateJobWithProtocolHandler( | |
| 237 const std::string& scheme, | |
| 238 net::URLRequest* request, | |
| 239 net::NetworkDelegate* network_delegate) const { | |
| 240 return new MockURLRequestJob(request, response_info_, mime_type_); | |
| 241 } | |
| 242 | |
| 243 net::URLRequestJob* MockURLRequestJobFactory::MaybeInterceptRedirect( | |
| 244 net::URLRequest* request, | |
| 245 net::NetworkDelegate* network_delegate, | |
| 246 const GURL& location) const { | |
| 247 return nullptr; | |
| 248 } | |
| 249 | |
| 250 net::URLRequestJob* MockURLRequestJobFactory::MaybeInterceptResponse( | |
| 251 net::URLRequest* request, | |
| 252 net::NetworkDelegate* network_delegate) const { | |
| 253 return nullptr; | |
| 254 } | |
| 255 | |
| 256 bool MockURLRequestJobFactory::IsHandledProtocol( | |
| 257 const std::string& scheme) const { | |
| 258 return true; | |
| 259 } | |
| 260 | |
| 261 bool MockURLRequestJobFactory::IsSafeRedirectTarget( | |
| 262 const GURL& location) const { | |
| 263 return true; | |
| 264 } | |
| 265 | |
| 266 std::unique_ptr<net::URLRequest> CreateURLRequest( | |
| 267 const net::TestURLRequestContext& url_request_context, | |
| 268 const GURL& url, | |
| 269 net::RequestPriority priority, | |
| 270 content::ResourceType resource_type, | |
| 271 bool is_main_frame) { | |
| 272 std::unique_ptr<net::URLRequest> request = url_request_context.CreateRequest( | |
| 273 url, priority, &empty_url_request_delegate); | |
| 274 request->set_first_party_for_cookies(url); | |
| 275 content::ResourceRequestInfo::AllocateForTesting( | |
| 276 request.get(), resource_type, nullptr, -1, -1, -1, is_main_frame, false, | |
| 277 false, true, content::PREVIEWS_OFF); | |
| 278 request->Start(); | |
| 279 return request; | |
| 280 } | |
| 281 | |
| 195 std::ostream& operator<<(std::ostream& os, const PrefetchData& data) { | 282 std::ostream& operator<<(std::ostream& os, const PrefetchData& data) { |
| 196 os << "[" << data.primary_key() << "," << data.last_visit_time() << "]" | 283 os << "[" << data.primary_key() << "," << data.last_visit_time() << "]" |
| 197 << std::endl; | 284 << std::endl; |
| 198 for (const ResourceData& resource : data.resources()) | 285 for (const ResourceData& resource : data.resources()) |
| 199 os << "\t\t" << resource << std::endl; | 286 os << "\t\t" << resource << std::endl; |
| 200 return os; | 287 return os; |
| 201 } | 288 } |
| 202 | 289 |
| 203 std::ostream& operator<<(std::ostream& os, const ResourceData& resource) { | 290 std::ostream& operator<<(std::ostream& os, const ResourceData& resource) { |
| 204 return os << "[" << resource.resource_url() << "," << resource.resource_type() | 291 return os << "[" << resource.resource_url() << "," << resource.resource_type() |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 377 | 464 |
| 378 return equal; | 465 return equal; |
| 379 } | 466 } |
| 380 | 467 |
| 381 bool operator==(const PrecacheResource& lhs, const PrecacheResource& rhs) { | 468 bool operator==(const PrecacheResource& lhs, const PrecacheResource& rhs) { |
| 382 return lhs.url() == rhs.url() && | 469 return lhs.url() == rhs.url() && |
| 383 AlmostEqual(lhs.weight_ratio(), rhs.weight_ratio()); | 470 AlmostEqual(lhs.weight_ratio(), rhs.weight_ratio()); |
| 384 } | 471 } |
| 385 | 472 |
| 386 } // namespace precache | 473 } // namespace precache |
| OLD | NEW |