1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_CRONET_URL_REQUEST_CONTEXT_CONFIG_H_
#define COMPONENTS_CRONET_URL_REQUEST_CONTEXT_CONFIG_H_
#include <string>
#include "base/macros.h"
#include "base/memory/scoped_vector.h"
#include "base/time/time.h"
#include "net/base/hash_value.h"
namespace net {
class CertVerifier;
class NetLog;
class URLRequestContextBuilder;
} // namespace net
namespace cronet {
// Common configuration parameters used by Cronet to configure
// URLRequestContext.
struct URLRequestContextConfig {
// Type of HTTP cache.
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.net
enum HttpCacheType {
// No HTTP cache.
DISABLED,
// HTTP cache persisted to disk.
DISK,
// HTTP cache kept in memory.
MEMORY,
};
// App-provided hint that server supports QUIC.
struct QuicHint {
QuicHint(const std::string& host, int port, int alternate_port);
~QuicHint();
// Host name of the server that supports QUIC.
const std::string host;
// Port of the server that supports QUIC.
const int port;
// Alternate protocol port.
const int alternate_port;
private:
DISALLOW_COPY_AND_ASSIGN(QuicHint);
};
// Public-Key-Pinning configuration structure.
struct Pkp {
Pkp(const std::string& host,
bool include_subdomains,
const base::Time& expiration_date);
~Pkp();
// Host name.
const std::string host;
// Pin hashes (currently SHA256 only).
net::HashValueVector pin_hashes;
// Indicates whether the pinning should apply to the pinned host subdomains.
const bool include_subdomains;
// Expiration date for the pins.
const base::Time expiration_date;
private:
DISALLOW_COPY_AND_ASSIGN(Pkp);
};
URLRequestContextConfig(
// Enable QUIC.
bool enable_quic,
// QUIC User Agent ID.
const std::string& quic_user_agent_id,
// Enable SPDY.
bool enable_spdy,
// Enable SDCH.
bool enable_sdch,
// Type of http cache.
HttpCacheType http_cache,
// Max size of http cache in bytes.
int http_cache_max_size,
// Disable caching for HTTP responses. Other information may be stored in
// the cache.
bool load_disable_cache,
// Storage path for http cache and cookie storage.
const std::string& storage_path,
// User-Agent request header field.
const std::string& user_agent,
// JSON encoded experimental options.
const std::string& experimental_options,
// Data reduction proxy key.
const std::string& data_reduction_proxy_key,
// Data reduction proxy.
const std::string& data_reduction_primary_proxy,
// Fallback data reduction proxy.
const std::string& data_reduction_fallback_proxy,
// Data reduction proxy secure proxy check URL.
const std::string& data_reduction_secure_proxy_check_url,
// MockCertVerifier to use for testing purposes.
scoped_ptr<net::CertVerifier> mock_cert_verifier);
~URLRequestContextConfig();
// Configure |context_builder| based on |this|.
void ConfigureURLRequestContextBuilder(
net::URLRequestContextBuilder* context_builder,
net::NetLog* net_log);
// Enable QUIC.
const bool enable_quic;
// QUIC User Agent ID.
const std::string quic_user_agent_id;
// Enable SPDY.
const bool enable_spdy;
// Enable SDCH.
const bool enable_sdch;
// Type of http cache.
const HttpCacheType http_cache;
// Max size of http cache in bytes.
const int http_cache_max_size;
// Disable caching for HTTP responses. Other information may be stored in
// the cache.
const bool load_disable_cache;
// Storage path for http cache and cookie storage.
const std::string storage_path;
// User-Agent request header field.
const std::string user_agent;
// Experimental options encoded as a string in a JSON format containing
// experiments and their corresponding configuration options. The format
// is a JSON object with the name of the experiment as the key, and the
// configuration options as the value. An example:
// {"experiment1": {"option1": "option_value1", "option2": "option_value2",
// ...}, "experiment2: {"option3", "option_value3", ...}, ...}
const std::string experimental_options;
// Enable Data Reduction Proxy with authentication key.
const std::string data_reduction_proxy_key;
const std::string data_reduction_primary_proxy;
const std::string data_reduction_fallback_proxy;
const std::string data_reduction_secure_proxy_check_url;
// Certificate verifier for testing.
scoped_ptr<net::CertVerifier> mock_cert_verifier;
// App-provided list of servers that support QUIC.
ScopedVector<QuicHint> quic_hints;
// The list of public key pins.
ScopedVector<Pkp> pkp_list;
private:
DISALLOW_COPY_AND_ASSIGN(URLRequestContextConfig);
};
} // namespace cronet
#endif // COMPONENTS_CRONET_URL_REQUEST_CONTEXT_CONFIG_H_
|