| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/net/chrome_url_request_context.h" | 5 #include "chrome/browser/net/chrome_url_request_context.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" |
| 9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
| 10 #include "base/message_loop_proxy.h" | 10 #include "base/message_loop_proxy.h" |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 87 main_request_context_getter_->GetIOContext(), app_id_); | 87 main_request_context_getter_->GetIOContext(), app_id_); |
| 88 } | 88 } |
| 89 | 89 |
| 90 private: | 90 private: |
| 91 const ProfileIOData* const profile_io_data_; | 91 const ProfileIOData* const profile_io_data_; |
| 92 const std::string app_id_; | 92 const std::string app_id_; |
| 93 scoped_refptr<ChromeURLRequestContextGetter> | 93 scoped_refptr<ChromeURLRequestContextGetter> |
| 94 main_request_context_getter_; | 94 main_request_context_getter_; |
| 95 }; | 95 }; |
| 96 | 96 |
| 97 // Factory that creates the media ChromeURLRequestContext for a given isolated |
| 98 // app. The media context is based on the corresponding isolated app's context. |
| 99 // Takes the |main_context| for the profile so that it can find or create the |
| 100 // isolated app's context if necessary. |
| 101 class FactoryForIsolatedMedia : public ChromeURLRequestContextFactory { |
| 102 public: |
| 103 FactoryForIsolatedMedia(const ProfileIOData* profile_io_data, |
| 104 const std::string& app_id, |
| 105 ChromeURLRequestContextGetter* main_context) |
| 106 : profile_io_data_(profile_io_data), |
| 107 app_id_(app_id), |
| 108 main_request_context_getter_(main_context) {} |
| 109 |
| 110 virtual ChromeURLRequestContext* Create() OVERRIDE { |
| 111 // We will copy most of the state from the corresopnding app's |
| 112 // request context, which we obtain using the main context. |
| 113 return profile_io_data_->GetIsolatedMediaRequestContext( |
| 114 main_request_context_getter_->GetIOContext(), app_id_); |
| 115 } |
| 116 |
| 117 private: |
| 118 const ProfileIOData* const profile_io_data_; |
| 119 const std::string app_id_; |
| 120 scoped_refptr<ChromeURLRequestContextGetter> |
| 121 main_request_context_getter_; |
| 122 }; |
| 123 |
| 97 // Factory that creates the ChromeURLRequestContext for media. | 124 // Factory that creates the ChromeURLRequestContext for media. |
| 98 class FactoryForMedia : public ChromeURLRequestContextFactory { | 125 class FactoryForMedia : public ChromeURLRequestContextFactory { |
| 99 public: | 126 public: |
| 100 explicit FactoryForMedia(const ProfileIOData* profile_io_data) | 127 explicit FactoryForMedia(const ProfileIOData* profile_io_data) |
| 101 : profile_io_data_(profile_io_data) { | 128 : profile_io_data_(profile_io_data) { |
| 102 } | 129 } |
| 103 | 130 |
| 104 virtual ChromeURLRequestContext* Create() OVERRIDE { | 131 virtual ChromeURLRequestContext* Create() OVERRIDE { |
| 105 return profile_io_data_->GetMediaRequestContext(); | 132 return profile_io_data_->GetMediaRequestContext(); |
| 106 } | 133 } |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 191 DCHECK(!profile->IsOffTheRecord()); | 218 DCHECK(!profile->IsOffTheRecord()); |
| 192 ChromeURLRequestContextGetter* main_context = | 219 ChromeURLRequestContextGetter* main_context = |
| 193 static_cast<ChromeURLRequestContextGetter*>(profile->GetRequestContext()); | 220 static_cast<ChromeURLRequestContextGetter*>(profile->GetRequestContext()); |
| 194 return new ChromeURLRequestContextGetter( | 221 return new ChromeURLRequestContextGetter( |
| 195 profile, | 222 profile, |
| 196 new FactoryForIsolatedApp(profile_io_data, app_id, main_context)); | 223 new FactoryForIsolatedApp(profile_io_data, app_id, main_context)); |
| 197 } | 224 } |
| 198 | 225 |
| 199 // static | 226 // static |
| 200 ChromeURLRequestContextGetter* | 227 ChromeURLRequestContextGetter* |
| 228 ChromeURLRequestContextGetter::CreateOriginalForIsolatedMedia( |
| 229 Profile* profile, |
| 230 const ProfileIOData* profile_io_data, |
| 231 const std::string& app_id) { |
| 232 DCHECK(!profile->IsOffTheRecord()); |
| 233 ChromeURLRequestContextGetter* main_context = |
| 234 static_cast<ChromeURLRequestContextGetter*>(profile->GetRequestContext()); |
| 235 return new ChromeURLRequestContextGetter( |
| 236 profile, |
| 237 new FactoryForIsolatedMedia(profile_io_data, app_id, main_context)); |
| 238 } |
| 239 |
| 240 // static |
| 241 ChromeURLRequestContextGetter* |
| 201 ChromeURLRequestContextGetter::CreateOffTheRecord( | 242 ChromeURLRequestContextGetter::CreateOffTheRecord( |
| 202 Profile* profile, const ProfileIOData* profile_io_data) { | 243 Profile* profile, const ProfileIOData* profile_io_data) { |
| 203 DCHECK(profile->IsOffTheRecord()); | 244 DCHECK(profile->IsOffTheRecord()); |
| 204 return new ChromeURLRequestContextGetter( | 245 return new ChromeURLRequestContextGetter( |
| 205 profile, new FactoryForMain(profile_io_data)); | 246 profile, new FactoryForMain(profile_io_data)); |
| 206 } | 247 } |
| 207 | 248 |
| 208 // static | 249 // static |
| 209 ChromeURLRequestContextGetter* | 250 ChromeURLRequestContextGetter* |
| 210 ChromeURLRequestContextGetter::CreateOffTheRecordForExtensions( | 251 ChromeURLRequestContextGetter::CreateOffTheRecordForExtensions( |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 339 net::HttpUtil::GenerateAcceptLanguageHeader(accept_language)); | 380 net::HttpUtil::GenerateAcceptLanguageHeader(accept_language)); |
| 340 } | 381 } |
| 341 | 382 |
| 342 void ChromeURLRequestContext::OnDefaultCharsetChange( | 383 void ChromeURLRequestContext::OnDefaultCharsetChange( |
| 343 const std::string& default_charset) { | 384 const std::string& default_charset) { |
| 344 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 385 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 345 set_referrer_charset(default_charset); | 386 set_referrer_charset(default_charset); |
| 346 set_accept_charset( | 387 set_accept_charset( |
| 347 net::HttpUtil::GenerateAcceptCharsetHeader(default_charset)); | 388 net::HttpUtil::GenerateAcceptCharsetHeader(default_charset)); |
| 348 } | 389 } |
| OLD | NEW |