106f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
306f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)// found in the LICENSE file.
406f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)
506f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)#include "mojo/services/network/network_context.h"
606f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)
706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)#include "base/base_paths.h"
806f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)#include "base/path_service.h"
906f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)#include "net/proxy/proxy_service.h"
1006f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)#include "net/url_request/url_request_context.h"
1106f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)#include "net/url_request/url_request_context_builder.h"
1206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)
1306f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)namespace mojo {
1406f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)
1506f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)NetworkContext::NetworkContext(const base::FilePath& base_path) {
1606f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)  net::URLRequestContextBuilder builder;
1706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)  builder.set_accept_language("en-us,en");
1806f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)  // TODO(darin): This is surely the wrong UA string.
1906f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)  builder.set_user_agent("Mojo/0.1");
2006f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)  builder.set_proxy_service(net::ProxyService::CreateDirect());
2106f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)  builder.set_transport_security_persister_path(base_path);
2206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)
2306f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)  net::URLRequestContextBuilder::HttpCacheParams cache_params;
2406f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)  cache_params.path = base_path.Append(FILE_PATH_LITERAL("Cache"));
2506f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)  cache_params.type = net::URLRequestContextBuilder::HttpCacheParams::DISK;
2606f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)  builder.EnableHttpCache(cache_params);
2706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)
2806f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)  builder.set_file_enabled(true);
2906f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)
3006f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)  url_request_context_.reset(builder.Build());
3106f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)}
3206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)
3306f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)NetworkContext::~NetworkContext() {
3406f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)  // TODO(darin): Be careful about destruction order of member variables?
3506f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)}
3606f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)
3706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)}  // namespace mojo
3806f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)