| Index: chrome/browser/extensions/extension_protocols.cc
|
| diff --git a/chrome/browser/extensions/extension_protocols.cc b/chrome/browser/extensions/extension_protocols.cc
|
| index 8dc1af89f63df58c09fa181423917950a6e13e31..70af6bf2aa83e2e61ee22d815f01e9378b7a02e8 100644
|
| --- a/chrome/browser/extensions/extension_protocols.cc
|
| +++ b/chrome/browser/extensions/extension_protocols.cc
|
| @@ -31,7 +31,6 @@
|
| #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_context.h"
|
| #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"
|
| @@ -69,10 +68,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)) {
|
| @@ -146,9 +148,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,
|
| @@ -192,13 +195,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(),
|
| - request->context()->network_delegate()),
|
| + : 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,
|
| @@ -306,7 +308,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_;
|
| @@ -316,11 +319,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
|
| @@ -357,7 +362,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;
|
| @@ -382,15 +387,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
|
|
|