Chromium Code Reviews| Index: chrome/browser/net/chrome_url_request_context.cc |
| diff --git a/chrome/browser/net/chrome_url_request_context.cc b/chrome/browser/net/chrome_url_request_context.cc |
| index 2b2a40ea8c1b701d8eb324e810cda5654bd352fe..f7b6849b2f5901b84651ece08d61cd692ed34b8a 100644 |
| --- a/chrome/browser/net/chrome_url_request_context.cc |
| +++ b/chrome/browser/net/chrome_url_request_context.cc |
| @@ -77,6 +77,29 @@ class FactoryForExtensions : public ChromeURLRequestContextFactory { |
| const scoped_refptr<const ProfileIOData> profile_io_data_; |
| }; |
| +// Factory that creates the ChromeURLRequestContext for a given isolated app. |
| +class FactoryForIsolatedApp : public ChromeURLRequestContextFactory { |
| + public: |
| + FactoryForIsolatedApp(const ProfileIOData* profile_io_data, |
| + const Extension* installed_app, |
| + ChromeURLRequestContextGetter* main_context) |
| + : profile_io_data_(profile_io_data), |
| + installed_app_(installed_app), |
| + main_request_context_getter_(main_context) {} |
| + |
| + virtual scoped_refptr<ChromeURLRequestContext> Create() { |
| + // We will copy most of the state from the main request context. |
| + return profile_io_data_->GetIsolatedAppRequestContext( |
| + main_request_context_getter_->GetIOContext(), installed_app_); |
| + } |
| + |
| + private: |
| + const scoped_refptr<const ProfileIOData> profile_io_data_; |
| + const scoped_refptr<const Extension> installed_app_; |
| + scoped_refptr<ChromeURLRequestContextGetter> |
| + main_request_context_getter_; |
| +}; |
| + |
| // Factory that creates the ChromeURLRequestContext for media. |
| class FactoryForMedia : public ChromeURLRequestContextFactory { |
| public: |
| @@ -215,6 +238,20 @@ ChromeURLRequestContextGetter::CreateOriginalForExtensions( |
| // static |
| ChromeURLRequestContextGetter* |
| +ChromeURLRequestContextGetter::CreateOriginalForIsolatedApp( |
| + Profile* profile, |
| + const ProfileIOData* profile_io_data, |
| + const Extension* installed_app) { |
| + DCHECK(!profile->IsOffTheRecord()); |
| + ChromeURLRequestContextGetter* main_context = |
| + static_cast<ChromeURLRequestContextGetter*>(profile->GetRequestContext()); |
| + return new ChromeURLRequestContextGetter( |
| + profile, |
| + new FactoryForIsolatedApp(profile_io_data, installed_app, main_context)); |
| +} |
| + |
| +// static |
| +ChromeURLRequestContextGetter* |
| ChromeURLRequestContextGetter::CreateOffTheRecord( |
| Profile* profile, const ProfileIOData* profile_io_data) { |
| DCHECK(profile->IsOffTheRecord()); |
| @@ -231,6 +268,20 @@ ChromeURLRequestContextGetter::CreateOffTheRecordForExtensions( |
| profile, new FactoryForExtensions(profile_io_data)); |
| } |
| +// static |
| +ChromeURLRequestContextGetter* |
| +ChromeURLRequestContextGetter::CreateOffTheRecordForIsolatedApp( |
| + Profile* profile, |
| + const ProfileIOData* profile_io_data, |
| + const Extension* installed_app) { |
| + DCHECK(profile->IsOffTheRecord()); |
| + ChromeURLRequestContextGetter* main_context = |
| + static_cast<ChromeURLRequestContextGetter*>(profile->GetRequestContext()); |
| + return new ChromeURLRequestContextGetter( |
| + profile, |
| + new FactoryForIsolatedApp(profile_io_data, installed_app, main_context)); |
| +} |
| + |
| void ChromeURLRequestContextGetter::CleanupOnUIThread() { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| // Unregister for pref notifications. |
| @@ -324,6 +375,42 @@ ChromeURLRequestContext::ChromeURLRequestContext() |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| } |
| +void ChromeURLRequestContext::Copy(ChromeURLRequestContext* out) { |
| + // Copy profile-related parameters. |
|
willchan no longer on Chromium
2011/03/03 18:16:59
Where are you getting the ordering for these membe
Charlie Reis
2011/03/04 22:34:53
I got the ordering from ProfileIOData::ApplyProfil
|
| + out->set_is_off_the_record(is_off_the_record()); |
| + out->set_accept_language(accept_language()); |
| + out->set_accept_charset(accept_charset()); |
| + out->set_referrer_charset(referrer_charset()); |
| + out->set_user_script_dir_path(user_script_dir_path()); |
| + out->set_host_content_settings_map(host_content_settings_map()); |
| + out->set_host_zoom_map(host_zoom_map_); |
| + out->set_transport_security_state(transport_security_state()); |
| + out->set_ssl_config_service(ssl_config_service()); |
| + out->set_database_tracker(database_tracker()); |
| + out->set_appcache_service(appcache_service()); |
| + out->set_blob_storage_context(blob_storage_context()); |
| + out->set_file_system_context(file_system_context()); |
| + out->set_extension_info_map(extension_info_map_); |
| + out->set_prerender_manager(prerender_manager()); |
| + out->set_protocol_handler_registry(protocol_handler_registry_); |
| + |
| + out->set_chrome_cookie_policy(chrome_cookie_policy_); |
| + out->set_net_log(net_log()); |
| + out->set_network_delegate(network_delegate()); |
| + out->set_host_resolver(host_resolver()); |
| + out->set_cert_verifier(cert_verifier()); |
| + out->set_dnsrr_resolver(dnsrr_resolver()); |
| + out->set_http_auth_handler_factory(http_auth_handler_factory()); |
| + out->set_dns_cert_checker(dns_cert_checker()); |
| + out->set_proxy_service(proxy_service()); |
| + |
| + out->set_cookie_store(cookie_store()); |
| + out->set_cookie_delegate(cookie_delegate()); |
| + |
| + out->set_http_transaction_factory(http_transaction_factory()); |
| + out->set_ftp_transaction_factory(ftp_transaction_factory()); |
| +} |
| + |
| void ChromeURLRequestContext::set_chrome_cookie_policy( |
| ChromeCookiePolicy* cookie_policy) { |
| chrome_cookie_policy_ = cookie_policy; // Take a strong reference. |