| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/chrome_url_request_util.h" | 5 #include "chrome/browser/extensions/chrome_url_request_util.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/files/file_path.h" | 9 #include "base/files/file_path.h" |
| 10 #include "base/memory/weak_ptr.h" | 10 #include "base/memory/weak_ptr.h" |
| 11 #include "base/path_service.h" | 11 #include "base/path_service.h" |
| 12 #include "base/strings/string_number_conversions.h" | 12 #include "base/strings/string_number_conversions.h" |
| 13 #include "base/strings/string_util.h" | 13 #include "base/strings/string_util.h" |
| 14 #include "base/strings/stringprintf.h" | 14 #include "base/strings/stringprintf.h" |
| 15 #include "base/task_runner_util.h" | 15 #include "base/task_scheduler/post_task.h" |
| 16 #include "chrome/common/chrome_paths.h" | 16 #include "chrome/common/chrome_paths.h" |
| 17 #include "chrome/common/extensions/chrome_manifest_url_handlers.h" | 17 #include "chrome/common/extensions/chrome_manifest_url_handlers.h" |
| 18 #include "content/public/browser/browser_thread.h" | |
| 19 #include "content/public/browser/resource_request_info.h" | 18 #include "content/public/browser/resource_request_info.h" |
| 20 #include "extensions/browser/component_extension_resource_manager.h" | 19 #include "extensions/browser/component_extension_resource_manager.h" |
| 21 #include "extensions/browser/extension_protocols.h" | 20 #include "extensions/browser/extension_protocols.h" |
| 22 #include "extensions/browser/extensions_browser_client.h" | 21 #include "extensions/browser/extensions_browser_client.h" |
| 23 #include "extensions/browser/info_map.h" | 22 #include "extensions/browser/info_map.h" |
| 24 #include "extensions/browser/url_request_util.h" | 23 #include "extensions/browser/url_request_util.h" |
| 25 #include "extensions/common/file_util.h" | 24 #include "extensions/common/file_util.h" |
| 26 #include "net/base/mime_util.h" | 25 #include "net/base/mime_util.h" |
| 27 #include "net/base/net_errors.h" | 26 #include "net/base/net_errors.h" |
| 28 #include "net/http/http_request_headers.h" | 27 #include "net/http/http_request_headers.h" |
| 29 #include "net/http/http_response_headers.h" | 28 #include "net/http/http_response_headers.h" |
| 30 #include "net/http/http_response_info.h" | 29 #include "net/http/http_response_info.h" |
| 31 #include "net/url_request/url_request.h" | 30 #include "net/url_request/url_request.h" |
| 32 #include "net/url_request/url_request_simple_job.h" | 31 #include "net/url_request/url_request_simple_job.h" |
| 33 #include "ui/base/resource/resource_bundle.h" | 32 #include "ui/base/resource/resource_bundle.h" |
| 34 | 33 |
| 35 using content::BrowserThread; | |
| 36 using extensions::ExtensionsBrowserClient; | 34 using extensions::ExtensionsBrowserClient; |
| 37 | 35 |
| 38 namespace { | 36 namespace { |
| 39 | 37 |
| 40 // A request for an extension resource in a Chrome .pak file. These are used | 38 // A request for an extension resource in a Chrome .pak file. These are used |
| 41 // by component extensions. | 39 // by component extensions. |
| 42 class URLRequestResourceBundleJob : public net::URLRequestSimpleJob { | 40 class URLRequestResourceBundleJob : public net::URLRequestSimpleJob { |
| 43 public: | 41 public: |
| 44 URLRequestResourceBundleJob(net::URLRequest* request, | 42 URLRequestResourceBundleJob(net::URLRequest* request, |
| 45 net::NetworkDelegate* network_delegate, | 43 net::NetworkDelegate* network_delegate, |
| (...skipping 18 matching lines...) Expand all Loading... |
| 64 const net::CompletionCallback& callback) const override { | 62 const net::CompletionCallback& callback) const override { |
| 65 const ResourceBundle& rb = ResourceBundle::GetSharedInstance(); | 63 const ResourceBundle& rb = ResourceBundle::GetSharedInstance(); |
| 66 *data = rb.LoadDataResourceBytes(resource_id_); | 64 *data = rb.LoadDataResourceBytes(resource_id_); |
| 67 | 65 |
| 68 // Add the Content-Length header now that we know the resource length. | 66 // Add the Content-Length header now that we know the resource length. |
| 69 response_info_.headers->AddHeader( | 67 response_info_.headers->AddHeader( |
| 70 base::StringPrintf("%s: %s", net::HttpRequestHeaders::kContentLength, | 68 base::StringPrintf("%s: %s", net::HttpRequestHeaders::kContentLength, |
| 71 base::SizeTToString((*data)->size()).c_str())); | 69 base::SizeTToString((*data)->size()).c_str())); |
| 72 | 70 |
| 73 std::string* read_mime_type = new std::string; | 71 std::string* read_mime_type = new std::string; |
| 74 bool posted = base::PostTaskAndReplyWithResult( | 72 base::PostTaskWithTraitsAndReplyWithResult( |
| 75 BrowserThread::GetBlockingPool(), FROM_HERE, | 73 FROM_HERE, base::TaskTraits().MayBlock(), |
| 76 base::Bind(&net::GetMimeTypeFromFile, filename_, | 74 base::Bind(&net::GetMimeTypeFromFile, filename_, |
| 77 base::Unretained(read_mime_type)), | 75 base::Unretained(read_mime_type)), |
| 78 base::Bind(&URLRequestResourceBundleJob::OnMimeTypeRead, | 76 base::Bind(&URLRequestResourceBundleJob::OnMimeTypeRead, |
| 79 weak_factory_.GetWeakPtr(), mime_type, charset, *data, | 77 weak_factory_.GetWeakPtr(), mime_type, charset, *data, |
| 80 base::Owned(read_mime_type), callback)); | 78 base::Owned(read_mime_type), callback)); |
| 81 DCHECK(posted); | |
| 82 | 79 |
| 83 return net::ERR_IO_PENDING; | 80 return net::ERR_IO_PENDING; |
| 84 } | 81 } |
| 85 | 82 |
| 86 void GetResponseInfo(net::HttpResponseInfo* info) override { | 83 void GetResponseInfo(net::HttpResponseInfo* info) override { |
| 87 *info = response_info_; | 84 *info = response_info_; |
| 88 } | 85 } |
| 89 | 86 |
| 90 private: | 87 private: |
| 91 ~URLRequestResourceBundleJob() override {} | 88 ~URLRequestResourceBundleJob() override {} |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 179 resource_id, | 176 resource_id, |
| 180 content_security_policy, | 177 content_security_policy, |
| 181 send_cors_header); | 178 send_cors_header); |
| 182 } | 179 } |
| 183 } | 180 } |
| 184 return NULL; | 181 return NULL; |
| 185 } | 182 } |
| 186 | 183 |
| 187 } // namespace chrome_url_request_util | 184 } // namespace chrome_url_request_util |
| 188 } // namespace extensions | 185 } // namespace extensions |
| OLD | NEW |