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
3 // found in the LICENSE file.
5 #include "components/cronet/url_request_context_config.h"
7 #include "net/url_request/url_request_context_builder.h"
11 #define DEFINE_CONTEXT_CONFIG(x) const char REQUEST_CONTEXT_CONFIG_##x[] = #x;
12 #include "components/cronet/url_request_context_config_list.h"
13 #undef DEFINE_CONTEXT_CONFIG
15 URLRequestContextConfig::QuicHint::QuicHint() {
18 URLRequestContextConfig::QuicHint::~QuicHint() {
22 void URLRequestContextConfig::QuicHint::RegisterJSONConverter(
23 base::JSONValueConverter
<URLRequestContextConfig::QuicHint
>* converter
) {
24 converter
->RegisterStringField(REQUEST_CONTEXT_CONFIG_QUIC_HINT_HOST
,
25 &URLRequestContextConfig::QuicHint::host
);
26 converter
->RegisterIntField(
27 REQUEST_CONTEXT_CONFIG_QUIC_HINT_PORT
,
28 &URLRequestContextConfig::QuicHint::port
);
29 converter
->RegisterIntField(
30 REQUEST_CONTEXT_CONFIG_QUIC_HINT_ALT_PORT
,
31 &URLRequestContextConfig::QuicHint::alternate_port
);
34 URLRequestContextConfig::URLRequestContextConfig() {
37 URLRequestContextConfig::~URLRequestContextConfig() {
40 void URLRequestContextConfig::ConfigureURLRequestContextBuilder(
41 net::URLRequestContextBuilder
* context_builder
) {
42 std::string config_cache
;
43 if (http_cache
!= REQUEST_CONTEXT_CONFIG_HTTP_CACHE_DISABLED
) {
44 net::URLRequestContextBuilder::HttpCacheParams cache_params
;
45 if (http_cache
== REQUEST_CONTEXT_CONFIG_HTTP_CACHE_DISK
&&
46 !storage_path
.empty()) {
47 cache_params
.type
= net::URLRequestContextBuilder::HttpCacheParams::DISK
;
48 cache_params
.path
= base::FilePath(storage_path
);
51 net::URLRequestContextBuilder::HttpCacheParams::IN_MEMORY
;
53 cache_params
.max_size
= http_cache_max_size
;
54 context_builder
->EnableHttpCache(cache_params
);
56 context_builder
->DisableHttpCache();
59 context_builder
->SetSpdyAndQuicEnabled(enable_spdy
, enable_quic
);
60 // TODO(mef): Use |config| to set cookies.
64 void URLRequestContextConfig::RegisterJSONConverter(
65 base::JSONValueConverter
<URLRequestContextConfig
>* converter
) {
66 converter
->RegisterBoolField(REQUEST_CONTEXT_CONFIG_ENABLE_QUIC
,
67 &URLRequestContextConfig::enable_quic
);
68 converter
->RegisterBoolField(REQUEST_CONTEXT_CONFIG_ENABLE_SPDY
,
69 &URLRequestContextConfig::enable_spdy
);
70 converter
->RegisterStringField(REQUEST_CONTEXT_CONFIG_HTTP_CACHE
,
71 &URLRequestContextConfig::http_cache
);
72 converter
->RegisterIntField(REQUEST_CONTEXT_CONFIG_HTTP_CACHE_MAX_SIZE
,
73 &URLRequestContextConfig::http_cache_max_size
);
74 converter
->RegisterStringField(REQUEST_CONTEXT_CONFIG_STORAGE_PATH
,
75 &URLRequestContextConfig::storage_path
);
76 converter
->RegisterRepeatedMessage(REQUEST_CONTEXT_CONFIG_QUIC_HINTS
,
77 &URLRequestContextConfig::quic_hints
);