1f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// found in the LICENSE file. 4f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 5f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "components/cronet/url_request_context_config.h" 6f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 7f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "net/url_request/url_request_context_builder.h" 8f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 9f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)namespace cronet { 10f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 11f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#define DEFINE_CONTEXT_CONFIG(x) const char REQUEST_CONTEXT_CONFIG_##x[] = #x; 12f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "components/cronet/url_request_context_config_list.h" 13f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#undef DEFINE_CONTEXT_CONFIG 14f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciURLRequestContextConfig::QuicHint::QuicHint() { 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciURLRequestContextConfig::QuicHint::~QuicHint() { 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// static 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid URLRequestContextConfig::QuicHint::RegisterJSONConverter( 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::JSONValueConverter<URLRequestContextConfig::QuicHint>* converter) { 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci converter->RegisterStringField(REQUEST_CONTEXT_CONFIG_QUIC_HINT_HOST, 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci &URLRequestContextConfig::QuicHint::host); 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci converter->RegisterIntField( 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci REQUEST_CONTEXT_CONFIG_QUIC_HINT_PORT, 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci &URLRequestContextConfig::QuicHint::port); 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci converter->RegisterIntField( 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci REQUEST_CONTEXT_CONFIG_QUIC_HINT_ALT_PORT, 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci &URLRequestContextConfig::QuicHint::alternate_port); 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 34f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)URLRequestContextConfig::URLRequestContextConfig() { 35f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 36f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 37f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)URLRequestContextConfig::~URLRequestContextConfig() { 38f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 39f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 40f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void URLRequestContextConfig::ConfigureURLRequestContextBuilder( 41f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) net::URLRequestContextBuilder* context_builder) { 42f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string config_cache; 43f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) if (http_cache != REQUEST_CONTEXT_CONFIG_HTTP_CACHE_DISABLED) { 44f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) net::URLRequestContextBuilder::HttpCacheParams cache_params; 45f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) if (http_cache == REQUEST_CONTEXT_CONFIG_HTTP_CACHE_DISK && 46f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) !storage_path.empty()) { 47f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) cache_params.type = net::URLRequestContextBuilder::HttpCacheParams::DISK; 48f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) cache_params.path = base::FilePath(storage_path); 49f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) } else { 50f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) cache_params.type = 51f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) net::URLRequestContextBuilder::HttpCacheParams::IN_MEMORY; 52f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) } 53f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) cache_params.max_size = http_cache_max_size; 54f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) context_builder->EnableHttpCache(cache_params); 55f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) } else { 56f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) context_builder->DisableHttpCache(); 57f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) } 58f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 59f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) context_builder->SetSpdyAndQuicEnabled(enable_spdy, enable_quic); 60f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // TODO(mef): Use |config| to set cookies. 61f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 62f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 63f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// static 64f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void URLRequestContextConfig::RegisterJSONConverter( 65f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) base::JSONValueConverter<URLRequestContextConfig>* converter) { 66f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) converter->RegisterBoolField(REQUEST_CONTEXT_CONFIG_ENABLE_QUIC, 67f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) &URLRequestContextConfig::enable_quic); 68f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) converter->RegisterBoolField(REQUEST_CONTEXT_CONFIG_ENABLE_SPDY, 69f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) &URLRequestContextConfig::enable_spdy); 70f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) converter->RegisterStringField(REQUEST_CONTEXT_CONFIG_HTTP_CACHE, 71f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) &URLRequestContextConfig::http_cache); 72f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) converter->RegisterIntField(REQUEST_CONTEXT_CONFIG_HTTP_CACHE_MAX_SIZE, 73f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) &URLRequestContextConfig::http_cache_max_size); 74f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) converter->RegisterStringField(REQUEST_CONTEXT_CONFIG_STORAGE_PATH, 75f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) &URLRequestContextConfig::storage_path); 761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci converter->RegisterRepeatedMessage(REQUEST_CONTEXT_CONFIG_QUIC_HINTS, 771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci &URLRequestContextConfig::quic_hints); 78f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 79f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 80f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} // namespace cronet 81