Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6583)

Unified Diff: chrome/browser/net/chrome_url_request_context.cc

Issue 6201005: Initial support for partitioning cookies for isolated apps. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add ChromeURLRequestContext::Copy. Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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.

Powered by Google App Engine
This is Rietveld 408576698