summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_protocols.cc
diff options
context:
space:
mode:
authorasargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-26 04:55:01 +0000
committerasargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-26 04:55:01 +0000
commit774cebd7441ea331546a5e85f8f3566060f133fa (patch)
tree8a1d5a604e5e957647d6c21786c6e686cf725790 /chrome/browser/extensions/extension_protocols.cc
parentd688ed58faa35bff5efcaa0f1c03ac8a66db0a6a (diff)
downloadchromium_src-774cebd7441ea331546a5e85f8f3566060f133fa.zip
chromium_src-774cebd7441ea331546a5e85f8f3566060f133fa.tar.gz
chromium_src-774cebd7441ea331546a5e85f8f3566060f133fa.tar.bz2
Add Content-Length header to component extension url responses
When investigating the bug referenced below, we found that playing audio via an <audio> tag from a file inside an extension worked if the extension was installed normally, but not if it was a component extension. It turns out that sending a Content-Length header makes this work properly. BUG=284815 Review URL: https://codereview.chromium.org/23600029 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@225335 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_protocols.cc')
-rw-r--r--chrome/browser/extensions/extension_protocols.cc7
1 files changed, 7 insertions, 0 deletions
diff --git a/chrome/browser/extensions/extension_protocols.cc b/chrome/browser/extensions/extension_protocols.cc
index 25ef06b..eb247ab 100644
--- a/chrome/browser/extensions/extension_protocols.cc
+++ b/chrome/browser/extensions/extension_protocols.cc
@@ -16,6 +16,7 @@
#include "base/message_loop/message_loop.h"
#include "base/path_service.h"
#include "base/sha1.h"
+#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h"
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
@@ -42,6 +43,7 @@
#include "grit/component_extension_resources_map.h"
#include "net/base/mime_util.h"
#include "net/base/net_errors.h"
+#include "net/http/http_request_headers.h"
#include "net/http/http_response_headers.h"
#include "net/http/http_response_info.h"
#include "net/url_request/url_request_error_job.h"
@@ -135,6 +137,11 @@ class URLRequestResourceBundleJob : public net::URLRequestSimpleJob {
const ResourceBundle& rb = ResourceBundle::GetSharedInstance();
*data = rb.GetRawDataResource(resource_id_).as_string();
+ // Add the Content-Length header now that we know the resource length.
+ response_info_.headers->AddHeader(base::StringPrintf(
+ "%s: %s", net::HttpRequestHeaders::kContentLength,
+ base::UintToString(data->size()).c_str()));
+
std::string* read_mime_type = new std::string;
bool* read_result = new bool;
bool posted = content::BrowserThread::PostBlockingPoolTaskAndReply(