Home | History | Annotate | Download | only in cronet
      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.
      4 
      5 #include "components/cronet/url_request_context_config.h"
      6 
      7 #include "net/url_request/url_request_context_builder.h"
      8 
      9 namespace cronet {
     10 
     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
     14 
     15 URLRequestContextConfig::QuicHint::QuicHint() {
     16 }
     17 
     18 URLRequestContextConfig::QuicHint::~QuicHint() {
     19 }
     20 
     21 // static
     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);
     32 }
     33 
     34 URLRequestContextConfig::URLRequestContextConfig() {
     35 }
     36 
     37 URLRequestContextConfig::~URLRequestContextConfig() {
     38 }
     39 
     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);
     49     } else {
     50       cache_params.type =
     51           net::URLRequestContextBuilder::HttpCacheParams::IN_MEMORY;
     52     }
     53     cache_params.max_size = http_cache_max_size;
     54     context_builder->EnableHttpCache(cache_params);
     55   } else {
     56     context_builder->DisableHttpCache();
     57   }
     58 
     59   context_builder->SetSpdyAndQuicEnabled(enable_spdy, enable_quic);
     60   // TODO(mef): Use |config| to set cookies.
     61 }
     62 
     63 // static
     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);
     78 }
     79 
     80 }  // namespace cronet
     81