Index: chrome/browser/extensions/extension_protocols.cc |
diff --git a/chrome/browser/extensions/extension_protocols.cc b/chrome/browser/extensions/extension_protocols.cc |
index 4b551533b00188845870845d9d44b1bd55a41d48..5e3b5b355fad351948f6d4082291057c078479c5 100644 |
--- a/chrome/browser/extensions/extension_protocols.cc |
+++ b/chrome/browser/extensions/extension_protocols.cc |
@@ -322,6 +322,41 @@ ExtensionProtocolHandler::MaybeCreateJob(net::URLRequest* request) const { |
content_security_policy, send_cors_header); |
} |
+class ExtensionResourceProtocolHandler |
+ : public net::URLRequestJobFactory::ProtocolHandler { |
+ public: |
+ ExtensionResourceProtocolHandler(bool is_incognito, |
+ ExtensionInfoMap* extension_info_map) |
Tom Sepez
2012/04/11 20:31:16
nit: Indentation.
Peng
2012/04/11 21:40:13
Done.
|
+ : is_incognito_(is_incognito), |
+ extension_info_map_(extension_info_map) {} |
+ |
+ virtual ~ExtensionResourceProtocolHandler() {} |
+ |
+ virtual net::URLRequestJob* MaybeCreateJob( |
+ net::URLRequest* request) const OVERRIDE; |
+ |
+ private: |
+ const bool is_incognito_; |
+ ExtensionInfoMap* const extension_info_map_; |
+ DISALLOW_COPY_AND_ASSIGN(ExtensionResourceProtocolHandler); |
+}; |
+ |
+// Creates URLRequestJobs for extension:// URLs. |
Tom Sepez
2012/04/11 20:31:16
chrome-extension-resource:// urls. Suspect the c
Peng
2012/04/11 21:40:13
Done.
|
+net::URLRequestJob* |
+ExtensionResourceProtocolHandler::MaybeCreateJob( |
+ net::URLRequest* request) const { |
+ LOG(ERROR)<< "host()=" << request->url().host() |
Tom Sepez
2012/04/11 20:31:16
Debugging?
Peng
2012/04/11 21:40:13
Done.
|
+ << "\npath()=" << request->url().path(); |
+ if (!request->url().has_host() || !request->url().has_path()) |
+ return NULL; |
+ |
+ FilePath path; |
+ PathService::Get(chrome::DIR_RESOURCES_EXT, &path); |
+ path = path.Append(request->url().host()).Append(request->url().path()); |
+ |
+ return new net::URLRequestFileJob(request, path); |
+} |
+ |
} // namespace |
net::URLRequestJobFactory::ProtocolHandler* CreateExtensionProtocolHandler( |
@@ -329,3 +364,10 @@ net::URLRequestJobFactory::ProtocolHandler* CreateExtensionProtocolHandler( |
ExtensionInfoMap* extension_info_map) { |
return new ExtensionProtocolHandler(is_incognito, extension_info_map); |
} |
+ |
+net::URLRequestJobFactory::ProtocolHandler* |
+CreateExtensionResourceProtocolHandler( |
+ bool is_incognito, |
+ ExtensionInfoMap* extension_info_map) { |
+ return new ExtensionResourceProtocolHandler(is_incognito, extension_info_map); |
+} |