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

Side by Side Diff: chrome/browser/extensions/extension_protocols.cc

Issue 256022: Loads local resources from current locale subtree if available, if not it fal... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 2 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/extensions/extension_protocols.h" 5 #include "chrome/browser/extensions/extension_protocols.h"
6 6
7 #include "base/string_util.h" 7 #include "base/string_util.h"
8 #include "chrome/browser/net/chrome_url_request_context.h" 8 #include "chrome/browser/net/chrome_url_request_context.h"
9 #include "chrome/common/extensions/extension.h" 9 #include "chrome/common/extensions/extension.h"
10 #include "chrome/common/extensions/extension_resource.h"
10 #include "chrome/common/url_constants.h" 11 #include "chrome/common/url_constants.h"
11 #include "googleurl/src/url_util.h" 12 #include "googleurl/src/url_util.h"
12 #include "net/base/net_util.h" 13 #include "net/base/net_util.h"
13 #include "net/url_request/url_request_file_job.h" 14 #include "net/url_request/url_request_file_job.h"
14 15
15 // Factory registered with URLRequest to create URLRequestJobs for extension:// 16 // Factory registered with URLRequest to create URLRequestJobs for extension://
16 // URLs. 17 // URLs.
17 static URLRequestJob* CreateExtensionURLRequestJob(URLRequest* request, 18 static URLRequestJob* CreateExtensionURLRequestJob(URLRequest* request,
18 const std::string& scheme) { 19 const std::string& scheme) {
19 ChromeURLRequestContext* context = 20 ChromeURLRequestContext* context =
20 static_cast<ChromeURLRequestContext*>(request->context()); 21 static_cast<ChromeURLRequestContext*>(request->context());
21 22
22 // chrome-extension://extension-id/resource/path.js 23 // chrome-extension://extension-id/resource/path.js
23 FilePath directory_path = context->GetPathForExtension(request->url().host()); 24 FilePath directory_path = context->GetPathForExtension(request->url().host());
24 if (directory_path.value().empty()) { 25 if (directory_path.value().empty()) {
25 LOG(WARNING) << "Failed to GetPathForExtension: " << request->url().host(); 26 LOG(WARNING) << "Failed to GetPathForExtension: " << request->url().host();
26 return NULL; 27 return NULL;
27 } 28 }
28 29
29 std::string resource = request->url().path(); 30 ExtensionResource resource =
30 FilePath path = Extension::GetResourcePath(directory_path, resource); 31 Extension::GetResource(directory_path, request->url().path());
31 32
32 return new URLRequestFileJob(request, path); 33 return new URLRequestFileJob(request, resource.GetFilePath());
33 } 34 }
34 35
35 // Factory registered with URLRequest to create URLRequestJobs for 36 // Factory registered with URLRequest to create URLRequestJobs for
36 // chrome-user-script:/ URLs. 37 // chrome-user-script:/ URLs.
37 static URLRequestJob* CreateUserScriptURLRequestJob(URLRequest* request, 38 static URLRequestJob* CreateUserScriptURLRequestJob(URLRequest* request,
38 const std::string& scheme) { 39 const std::string& scheme) {
39 ChromeURLRequestContext* context = 40 ChromeURLRequestContext* context =
40 static_cast<ChromeURLRequestContext*>(request->context()); 41 static_cast<ChromeURLRequestContext*>(request->context());
41 42
42 // chrome-user-script:/user-script-name.user.js 43 // chrome-user-script:/user-script-name.user.js
43 FilePath directory_path = context->user_script_dir_path(); 44 FilePath directory_path = context->user_script_dir_path();
44 std::string resource = request->url().path();
45 45
46 FilePath path = Extension::GetResourcePath(directory_path, resource); 46 ExtensionResource resource =
47 return new URLRequestFileJob(request, path); 47 Extension::GetResource(directory_path, request->url().path());
48
49 return new URLRequestFileJob(request, resource.GetFilePath());
48 } 50 }
49 51
50 void RegisterExtensionProtocols() { 52 void RegisterExtensionProtocols() {
51 // Being a standard scheme allows us to resolve relative paths. This is used 53 // Being a standard scheme allows us to resolve relative paths. This is used
52 // by extensions, but not by standalone user scripts. 54 // by extensions, but not by standalone user scripts.
53 url_util::AddStandardScheme(chrome::kExtensionScheme); 55 url_util::AddStandardScheme(chrome::kExtensionScheme);
54 56
55 URLRequest::RegisterProtocolFactory(chrome::kExtensionScheme, 57 URLRequest::RegisterProtocolFactory(chrome::kExtensionScheme,
56 &CreateExtensionURLRequestJob); 58 &CreateExtensionURLRequestJob);
57 URLRequest::RegisterProtocolFactory(chrome::kUserScriptScheme, 59 URLRequest::RegisterProtocolFactory(chrome::kUserScriptScheme,
58 &CreateUserScriptURLRequestJob); 60 &CreateUserScriptURLRequestJob);
59 } 61 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_l10n_util_unittest.cc ('k') | chrome/browser/extensions/extensions_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698