Index: chrome/browser/extensions/chrome_url_request_util.cc |
diff --git a/chrome/browser/extensions/chrome_url_request_util.cc b/chrome/browser/extensions/chrome_url_request_util.cc |
index c89350aa3d05dbd19cc41baa9980db278d61b5b7..b37860f2e39e84c1cb9e64da133ae1de979f5887 100644 |
--- a/chrome/browser/extensions/chrome_url_request_util.cc |
+++ b/chrome/browser/extensions/chrome_url_request_util.cc |
@@ -59,10 +59,11 @@ class URLRequestResourceBundleJob : public net::URLRequestSimpleJob { |
} |
// Overridden from URLRequestSimpleJob: |
- int GetData(std::string* mime_type, |
- std::string* charset, |
- std::string* data, |
- const net::CompletionCallback& callback) const override { |
+ int GetRefCountedData( |
+ std::string* mime_type, |
+ std::string* charset, |
+ scoped_refptr<base::RefCountedMemory>* data, |
+ const net::CompletionCallback& callback) const override { |
// TODO(vadimt): Remove ScopedTracker below once crbug.com/422489 is fixed. |
tracked_objects::ScopedTracker tracking_profile( |
FROM_HERE_WITH_EXPLICIT_FUNCTION( |
@@ -83,7 +84,8 @@ class URLRequestResourceBundleJob : public net::URLRequestSimpleJob { |
FROM_HERE_WITH_EXPLICIT_FUNCTION( |
"422489 URLRequestResourceBundleJob::GetData 1.5")); |
- *data = resource_as_string_piece.as_string(); |
+ *data = new base::RefCountedStaticMemory(resource_as_string_piece.data(), |
+ resource_as_string_piece.size()); |
// TODO(vadimt): Remove ScopedTracker below once crbug.com/422489 is fixed. |
tracked_objects::ScopedTracker tracking_profile2( |
@@ -91,10 +93,9 @@ class URLRequestResourceBundleJob : public net::URLRequestSimpleJob { |
"422489 URLRequestResourceBundleJob::GetData 2")); |
// 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())); |
+ response_info_.headers->AddHeader(base::StringPrintf( |
+ "%s: %s", net::HttpRequestHeaders::kContentLength, |
+ base::UintToString(resource_as_string_piece.size()).c_str())); |
// TODO(vadimt): Remove ScopedTracker below once crbug.com/422489 is fixed. |
tracked_objects::ScopedTracker tracking_profile3( |
@@ -103,17 +104,12 @@ class URLRequestResourceBundleJob : public net::URLRequestSimpleJob { |
std::string* read_mime_type = new std::string; |
bool posted = base::PostTaskAndReplyWithResult( |
- BrowserThread::GetBlockingPool(), |
- FROM_HERE, |
- base::Bind(&net::GetMimeTypeFromFile, |
- filename_, |
+ BrowserThread::GetBlockingPool(), FROM_HERE, |
+ base::Bind(&net::GetMimeTypeFromFile, filename_, |
base::Unretained(read_mime_type)), |
base::Bind(&URLRequestResourceBundleJob::OnMimeTypeRead, |
- weak_factory_.GetWeakPtr(), |
- mime_type, |
- charset, |
- data, |
- base::Owned(read_mime_type), |
+ weak_factory_.GetWeakPtr(), mime_type, charset, |
+ resource_as_string_piece, base::Owned(read_mime_type), |
callback)); |
DCHECK(posted); |
@@ -129,7 +125,7 @@ class URLRequestResourceBundleJob : public net::URLRequestSimpleJob { |
void OnMimeTypeRead(std::string* out_mime_type, |
std::string* charset, |
- std::string* data, |
+ base::StringPiece data, |
std::string* read_mime_type, |
const net::CompletionCallback& callback, |
bool read_result) { |
@@ -137,7 +133,7 @@ class URLRequestResourceBundleJob : public net::URLRequestSimpleJob { |
if (StartsWithASCII(*read_mime_type, "text/", false)) { |
// All of our HTML files should be UTF-8 and for other resource types |
// (like images), charset doesn't matter. |
- DCHECK(base::IsStringUTF8(*data)); |
+ DCHECK(base::IsStringUTF8(data)); |
*charset = "utf-8"; |
} |
int result = read_result ? net::OK : net::ERR_INVALID_URL; |