Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / components / cronet / url_request_context_config.h
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 #ifndef COMPONENTS_CRONET_URL_REQUEST_CONTEXT_CONFIG_H_
6 #define COMPONENTS_CRONET_URL_REQUEST_CONTEXT_CONFIG_H_
7
8 #include <string>
9
10 #include "base/json/json_value_converter.h"
11 #include "base/macros.h"
12 #include "base/memory/scoped_vector.h"
13
14 namespace net {
15 class URLRequestContextBuilder;
16 }  // namespace net
17
18 namespace cronet {
19
20 // Common configuration parameters used by Cronet to configure
21 // URLRequestContext. Can be parsed from JSON string passed through JNI.
22 struct URLRequestContextConfig {
23   // App-provided hint that server supports QUIC.
24   struct QuicHint {
25     QuicHint();
26     ~QuicHint();
27
28     // Register |converter| for use in converter.Convert().
29     static void RegisterJSONConverter(
30         base::JSONValueConverter<QuicHint>* converter);
31
32     // Host name of the server that supports QUIC.
33     std::string host;
34     // Port of the server that supports QUIC.
35     int port;
36     // Alternate protocol port.
37     int alternate_port;
38
39    private:
40     DISALLOW_COPY_AND_ASSIGN(QuicHint);
41   };
42
43   URLRequestContextConfig();
44   ~URLRequestContextConfig();
45
46   // Load config values from JSON format.
47   bool LoadFromJSON(const std::string& config_string);
48
49   // Configure |context_builder| based on |this|.
50   void ConfigureURLRequestContextBuilder(
51       net::URLRequestContextBuilder* context_builder);
52
53   // Register |converter| for use in converter.Convert().
54   static void RegisterJSONConverter(
55       base::JSONValueConverter<URLRequestContextConfig>* converter);
56
57   // Enable QUIC.
58   bool enable_quic;
59   // Enable SPDY.
60   bool enable_spdy;
61   // Type of http cache: "HTTP_CACHE_DISABLED", "HTTP_CACHE_DISK" or
62   // "HTTP_CACHE_IN_MEMORY".
63   std::string http_cache;
64   // Max size of http cache in bytes.
65   int http_cache_max_size;
66   // Storage path for http cache and cookie storage.
67   std::string storage_path;
68   // User-Agent request header field.
69   std::string user_agent;
70   // App-provided list of servers that support QUIC.
71   ScopedVector<QuicHint> quic_hints;
72
73  private:
74   DISALLOW_COPY_AND_ASSIGN(URLRequestContextConfig);
75 };
76
77 }  // namespace cronet
78
79 #endif  // COMPONENTS_CRONET_URL_REQUEST_CONTEXT_CONFIG_H_