Index: mojo/services/network/url_loader_impl.cc |
diff --git a/mojo/services/network/url_loader_impl.cc b/mojo/services/network/url_loader_impl.cc |
index 955a49c2e958484272fd7896de24912b26b723d1..89e64b8922ca1a99b7ba693fa21d2a9eadb9eb04 100644 |
--- a/mojo/services/network/url_loader_impl.cc |
+++ b/mojo/services/network/url_loader_impl.cc |
@@ -94,6 +94,16 @@ class UploadDataPipeElementReader : public net::UploadElementReader { |
DISALLOW_COPY_AND_ASSIGN(UploadDataPipeElementReader); |
}; |
+bool IsValidCacheMode(int cache_mode) { |
+ switch (cache_mode) { |
+ case URLRequest::CACHE_MODE_DEFAULT: |
+ case URLRequest::CACHE_MODE_BYPASS_CACHE: |
+ case URLRequest::CACHE_MODE_ONLY_FROM_CACHE: |
+ return true; |
+ } |
+ return false; |
+} |
+ |
} // namespace |
// Each body fetcher takes ownership of a net::URLRequest and stream its data |
@@ -495,6 +505,12 @@ void URLLoaderImpl::StartInternal(URLRequestPtr request) { |
DCHECK(!url_request_); |
DCHECK(!redirect_info_); |
+ if (!IsValidCacheMode(request->cache_mode)) { |
+ // Unknown cache mode. The request must fail. |
+ delete this; |
+ return; |
+ } |
+ |
if (interceptor_index_ >= 0 && |
interceptor_index_ < static_cast<int>(interceptors_.size())) { |
interceptors_[interceptor_index_]->InterceptRequest( |
@@ -537,10 +553,15 @@ void URLLoaderImpl::StartInternal(URLRequestPtr request) { |
new net::ElementsUploadDataStream(element_readers.Pass(), 0))); |
} |
int load_flags = 0; |
- if (request->bypass_cache) |
- load_flags |= net::LOAD_BYPASS_CACHE; |
- if (request->only_from_cache) |
- load_flags |= net::LOAD_ONLY_FROM_CACHE; |
+ switch (request->cache_mode) { |
+ case URLRequest::CACHE_MODE_DEFAULT: |
+ break; |
+ case URLRequest::CACHE_MODE_BYPASS_CACHE: |
+ load_flags |= net::LOAD_BYPASS_CACHE; |
+ case URLRequest::CACHE_MODE_ONLY_FROM_CACHE: |
+ load_flags |= net::LOAD_ONLY_FROM_CACHE; |
+ break; |
+ } |
if (load_flags) |
url_request_->SetLoadFlags(load_flags); |