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

Unified Diff: chrome/browser/extensions/extension_protocols.cc

Issue 9909019: Add schema chrome-extension-resource:// for extension resources (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Update Created 8 years, 8 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
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);
+}

Powered by Google App Engine
This is Rietveld 408576698