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

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

Issue 19747: URLRequestContext and disk cache for media files (Closed)
Patch Set: signed and unsigned... Created 11 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
« no previous file with comments | « chrome/browser/net/chrome_url_request_context.h ('k') | chrome/browser/profile.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 d98f2d6352be68e4c806b8f5f3d15a9cb44b82ea..748c497cb932a1afcde71ac88575f94df4a90ef1 100644
--- a/chrome/browser/net/chrome_url_request_context.cc
+++ b/chrome/browser/net/chrome_url_request_context.cc
@@ -16,6 +16,7 @@
#include "chrome/common/notification_service.h"
#include "chrome/common/pref_names.h"
#include "net/http/http_cache.h"
+#include "net/http/http_network_layer.h"
#include "net/http/http_util.h"
#include "net/proxy/proxy_service.h"
#include "webkit/glue/webkit_glue.h"
@@ -76,6 +77,46 @@ ChromeURLRequestContext* ChromeURLRequestContext::CreateOriginal(
}
// static
+ChromeURLRequestContext* ChromeURLRequestContext::CreateOriginalForMedia(
+ Profile* profile, const FilePath& disk_cache_path) {
+ DCHECK(!profile->IsOffTheRecord());
+ URLRequestContext* original_context =
+ profile->GetOriginalProfile()->GetRequestContext();
+ ChromeURLRequestContext* context = new ChromeURLRequestContext(profile);
+ // Share the same proxy service of the common profile.
+ context->proxy_service_ = original_context->proxy_service();
+ // Also share the cookie store of the common profile.
+ context->cookie_store_ = original_context->cookie_store();
+
+ // Create a media cache with maximum size of kint32max (2GB).
+ // TODO(hclam): make the maximum size of media cache configurable.
+ net::HttpCache* original_cache =
+ original_context->http_transaction_factory()->GetCache();
+ net::HttpCache* cache;
+ if (original_cache) {
+ // Try to reuse HttpNetworkSession in the original context, assuming that
+ // HttpTransactionFactory (network_layer()) of HttpCache is implemented
+ // by HttpNetworkLayer so we can reuse HttpNetworkSession within it. This
+ // assumption will be invalid if the original HttpCache is constructed with
+ // HttpCache(HttpTransactionFactory*, disk_cache::Backend*) constructor.
+ net::HttpNetworkLayer* original_network_layer =
+ static_cast<net::HttpNetworkLayer*>(original_cache->network_layer());
+ cache = new net::HttpCache(original_network_layer->GetSession(),
+ disk_cache_path.ToWStringHack(), kint32max);
+ } else {
+ // If original HttpCache doesn't exist, simply construct one with a whole
+ // new set of network stack.
+ cache = new net::HttpCache(original_context->proxy_service(),
+ disk_cache_path.ToWStringHack(), kint32max);
+ }
+ // Set the cache type to media.
+ cache->set_type(net::HttpCache::MEDIA);
+
+ context->http_transaction_factory_ = cache;
+ return context;
+}
+
+// static
ChromeURLRequestContext* ChromeURLRequestContext::CreateOffTheRecord(
Profile* profile) {
DCHECK(profile->IsOffTheRecord());
@@ -94,6 +135,15 @@ ChromeURLRequestContext* ChromeURLRequestContext::CreateOffTheRecord(
return context;
}
+// static
+ChromeURLRequestContext* ChromeURLRequestContext::CreateOffTheRecordForMedia(
+ Profile* profile, const FilePath& disk_cache_path) {
+ // TODO(hclam): since we don't have an implementation of disk cache backend
+ // for media files in OTR mode, we use the original context first. Change this
+ // to the proper backend later.
+ return CreateOriginalForMedia(profile, disk_cache_path);
+}
+
ChromeURLRequestContext::ChromeURLRequestContext(Profile* profile)
: prefs_(profile->GetPrefs()),
is_off_the_record_(profile->IsOffTheRecord()) {
« no previous file with comments | « chrome/browser/net/chrome_url_request_context.h ('k') | chrome/browser/profile.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698