Chromium Code Reviews| Index: chrome/browser/extensions/extension_protocols.cc |
| diff --git a/chrome/browser/extensions/extension_protocols.cc b/chrome/browser/extensions/extension_protocols.cc |
| index ceada7ec823094faed159fb928386f10f14822e3..f25233a3615e527e6408983d3404516cd3838053 100644 |
| --- a/chrome/browser/extensions/extension_protocols.cc |
| +++ b/chrome/browser/extensions/extension_protocols.cc |
| @@ -31,6 +31,8 @@ |
| #include "net/base/net_errors.h" |
| #include "net/http/http_response_headers.h" |
| #include "net/http/http_response_info.h" |
| +#include "net/url_request/url_request.h" |
| +#include "net/url_request/url_request_context.h" |
|
erikwright (departed)
2012/08/21 02:05:01
why add this?
shalev
2012/08/22 20:34:10
Done.
|
| #include "net/url_request/url_request_error_job.h" |
| #include "net/url_request/url_request_file_job.h" |
| #include "net/url_request/url_request_simple_job.h" |
| @@ -68,10 +70,13 @@ void ReadMimeTypeFromFile(const FilePath& filename, |
| class URLRequestResourceBundleJob : public net::URLRequestSimpleJob { |
| public: |
| - URLRequestResourceBundleJob( |
| - net::URLRequest* request, const FilePath& filename, int resource_id, |
| - const std::string& content_security_policy, bool send_cors_header) |
| - : net::URLRequestSimpleJob(request), |
| + URLRequestResourceBundleJob(net::URLRequest* request, |
| + net::NetworkDelegate* network_delegate, |
| + const FilePath& filename, |
| + int resource_id, |
| + const std::string& content_security_policy, |
| + bool send_cors_header) |
| + : net::URLRequestSimpleJob(request, network_delegate), |
| filename_(filename), |
| resource_id_(resource_id), |
| weak_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { |
| @@ -145,9 +150,10 @@ class URLRequestResourceBundleJob : public net::URLRequestSimpleJob { |
| class GeneratedBackgroundPageJob : public net::URLRequestSimpleJob { |
| public: |
| GeneratedBackgroundPageJob(net::URLRequest* request, |
| + net::NetworkDelegate* network_delegate, |
| const scoped_refptr<const Extension> extension, |
| const std::string& content_security_policy) |
| - : net::URLRequestSimpleJob(request), |
| + : net::URLRequestSimpleJob(request, network_delegate), |
| extension_(extension) { |
| const bool send_cors_headers = false; |
| response_info_.headers = BuildHttpHeaders(content_security_policy, |
| @@ -191,11 +197,12 @@ void ReadResourceFilePath(const ExtensionResource& resource, |
| class URLRequestExtensionJob : public net::URLRequestFileJob { |
| public: |
| URLRequestExtensionJob(net::URLRequest* request, |
| + net::NetworkDelegate* network_delegate, |
| const std::string& extension_id, |
| const FilePath& directory_path, |
| const std::string& content_security_policy, |
| bool send_cors_header) |
| - : net::URLRequestFileJob(request, FilePath()), |
| + : net::URLRequestFileJob(request, network_delegate, FilePath()), |
| // TODO(tc): Move all of these files into resources.pak so we don't break |
| // when updating on Linux. |
| resource_(extension_id, directory_path, |
| @@ -303,7 +310,8 @@ class ExtensionProtocolHandler |
| virtual ~ExtensionProtocolHandler() {} |
| virtual net::URLRequestJob* MaybeCreateJob( |
| - net::URLRequest* request) const OVERRIDE; |
| + net::URLRequest* request, |
| + net::NetworkDelegate* network_delegate) const OVERRIDE; |
| private: |
| const bool is_incognito_; |
| @@ -313,11 +321,13 @@ class ExtensionProtocolHandler |
| // Creates URLRequestJobs for extension:// URLs. |
| net::URLRequestJob* |
| -ExtensionProtocolHandler::MaybeCreateJob(net::URLRequest* request) const { |
| +ExtensionProtocolHandler::MaybeCreateJob( |
| + net::URLRequest* request, net::NetworkDelegate* network_delegate) const { |
| // TODO(mpcomplete): better error code. |
| if (!AllowExtensionResourceLoad( |
| request, is_incognito_, extension_info_map_)) { |
| - return new net::URLRequestErrorJob(request, net::ERR_ADDRESS_UNREACHABLE); |
| + return new net::URLRequestErrorJob( |
| + request, network_delegate, net::ERR_ADDRESS_UNREACHABLE); |
| } |
| // chrome-extension://extension-id/resource/path.js |
| @@ -354,7 +364,7 @@ ExtensionProtocolHandler::MaybeCreateJob(net::URLRequest* request) const { |
| if (path.size() > 1 && |
| path.substr(1) == extension_filenames::kGeneratedBackgroundPageFilename) { |
| return new GeneratedBackgroundPageJob( |
| - request, extension, content_security_policy); |
| + request, network_delegate, extension, content_security_policy); |
| } |
| FilePath resources_path; |
| @@ -379,15 +389,23 @@ ExtensionProtocolHandler::MaybeCreateJob(net::URLRequest* request) const { |
| FilePath().AppendASCII(kComponentExtensionResources[i].name); |
| bm_resource_path = bm_resource_path.NormalizePathSeparators(); |
| if (relative_path == bm_resource_path) { |
| - return new URLRequestResourceBundleJob(request, relative_path, |
| - kComponentExtensionResources[i].value, content_security_policy, |
| + return new URLRequestResourceBundleJob( |
| + request, |
| + network_delegate, |
| + relative_path, |
| + kComponentExtensionResources[i].value, |
| + content_security_policy, |
| send_cors_header); |
| } |
| } |
| } |
| - return new URLRequestExtensionJob(request, extension_id, directory_path, |
| - content_security_policy, send_cors_header); |
| + return new URLRequestExtensionJob(request, |
| + network_delegate, |
| + extension_id, |
| + directory_path, |
| + content_security_policy, |
| + send_cors_header); |
| } |
| } // namespace |