Index: mojo/services/network/network_context.cc |
diff --git a/mojo/services/network/network_context.cc b/mojo/services/network/network_context.cc |
index 32248eafa475062706c7f4119f4202e647465fae..0709e06e2edb799e7255383cd1ca18c7644c4208 100644 |
--- a/mojo/services/network/network_context.cc |
+++ b/mojo/services/network/network_context.cc |
@@ -12,10 +12,13 @@ |
#include "base/command_line.h" |
#include "base/path_service.h" |
#include "mojo/common/user_agent.h" |
+#include "mojo/services/network/mojo_persistent_cookie_store.h" |
#include "mojo/services/network/url_loader_impl.h" |
+#include "net/cookies/cookie_monster.h" |
#include "net/log/net_log_util.h" |
#include "net/log/write_to_file_net_log_observer.h" |
#include "net/proxy/proxy_service.h" |
+#include "net/ssl/channel_id_service.h" |
#include "net/url_request/url_request_context.h" |
#include "net/url_request/url_request_context_builder.h" |
@@ -24,7 +27,7 @@ namespace mojo { |
namespace { |
// Logs network information to the specified file. |
const char kLogNetLog[] = "log-net-log"; |
-} |
+} // namespace |
class NetworkContext::MojoNetLog : public net::NetLog { |
public: |
@@ -72,8 +75,12 @@ NetworkContext::NetworkContext( |
url_request_context_->set_net_log(net_log_.get()); |
} |
-NetworkContext::NetworkContext(const base::FilePath& base_path) |
- : NetworkContext(MakeURLRequestContext(base_path)) { |
+NetworkContext::NetworkContext( |
+ const base::FilePath& base_path, |
+ const scoped_refptr<base::SequencedTaskRunner>& background_task_runner, |
+ NetworkServiceDelegate* delegate) |
+ : NetworkContext(MakeURLRequestContext(base_path, background_task_runner, |
+ delegate)) { |
} |
NetworkContext::~NetworkContext() { |
@@ -107,7 +114,9 @@ size_t NetworkContext::GetURLLoaderCountForTesting() { |
// static |
scoped_ptr<net::URLRequestContext> NetworkContext::MakeURLRequestContext( |
- const base::FilePath& base_path) { |
+ const base::FilePath& base_path, |
+ const scoped_refptr<base::SequencedTaskRunner>& background_task_runner, |
+ NetworkServiceDelegate* delegate) { |
net::URLRequestContextBuilder builder; |
builder.set_accept_language("en-us,en"); |
builder.set_user_agent(mojo::common::GetUserAgent()); |
@@ -130,6 +139,23 @@ scoped_ptr<net::URLRequestContext> NetworkContext::MakeURLRequestContext( |
builder.EnableHttpCache(cache_params); |
builder.set_file_enabled(true); |
+ if (background_task_runner) { |
+ // TODO(erg): This only gets run on non-android system. Currently, any |
+ // attempts from the network_service trying to access the filesystem break |
+ // the apptests on android. (And only the apptests on android. Mandoline |
+ // shell works fine on android, as does apptests on desktop.) |
+ MojoPersistentCookieStore* cookie_store = |
+ new MojoPersistentCookieStore( |
+ delegate, |
+ base::FilePath(FILE_PATH_LITERAL("Cookies")), |
+ base::MessageLoop::current()->task_runner(), |
+ background_task_runner, |
+ false, // TODO(erg): Make RESTORED_SESSION_COOKIES configurable. |
+ nullptr); |
+ builder.SetCookieAndChannelIdStores( |
+ new net::CookieMonster(cookie_store, nullptr), nullptr); |
+ } |
+ |
return make_scoped_ptr(builder.Build()); |
} |