Commit 3f6414be authored by Victor Costan's avatar Victor Costan Committed by Commit Bot

AppCache: Clarify ownership in response data structures.

AppCacheResponseInfo and HttpResponseInfoIOBuffer take ownership of the
net::HttpResponseInfo passed to them. Both classes are meant to be
final, and don't need virtual destructors.

The rest of the CL propagates the changes described above.

Change-Id: I8330ce2d6d3f052da165cdbf7896b674935cfa54
Reviewed-on: https://chromium-review.googlesource.com/1188582Reviewed-by: default avatarJoshua Bell <jsbell@chromium.org>
Reviewed-by: default avatarMarijn Kruisselbrink <mek@chromium.org>
Commit-Queue: Victor Costan <pwnall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#586025}
parent 90512ec7
...@@ -464,25 +464,22 @@ void AppCacheInternalsUI::OnFileDetailsReady( ...@@ -464,25 +464,22 @@ void AppCacheInternalsUI::OnFileDetailsReady(
scoped_refptr<net::IOBuffer> response_data, scoped_refptr<net::IOBuffer> response_data,
int data_length) { int data_length) {
std::string headers; std::string headers;
if (response_info->http_response_info()) { headers.append("<hr><pre>");
headers.append("<hr><pre>"); headers.append(net::EscapeForHTML(
headers.append(net::EscapeForHTML( response_info->http_response_info().headers->GetStatusLine()));
response_info->http_response_info()->headers->GetStatusLine())); headers.push_back('\n');
size_t iter = 0;
std::string name, value;
while (response_info->http_response_info().headers->EnumerateHeaderLines(
&iter, &name, &value)) {
headers.append(net::EscapeForHTML(name));
headers.append(": ");
headers.append(net::EscapeForHTML(value));
headers.push_back('\n'); headers.push_back('\n');
size_t iter = 0;
std::string name, value;
while (response_info->http_response_info()->headers->EnumerateHeaderLines(
&iter, &name, &value)) {
headers.append(net::EscapeForHTML(name));
headers.append(": ");
headers.append(net::EscapeForHTML(value));
headers.push_back('\n');
}
headers.append("</pre>");
} else {
headers.append("Failed to read response headers. <br>");
} }
headers.append("</pre>");
std::string hex_dump = base::StringPrintf( std::string hex_dump = base::StringPrintf(
"<hr><pre> Showing %d of %d bytes\n\n", static_cast<int>(data_length), "<hr><pre> Showing %d of %d bytes\n\n", static_cast<int>(data_length),
static_cast<int>(response_info->response_data_size())); static_cast<int>(response_info->response_data_size()));
......
...@@ -84,8 +84,8 @@ void AppCacheJob::SetupRangeResponse() { ...@@ -84,8 +84,8 @@ void AppCacheJob::SetupRangeResponse() {
// Make a copy of the full response headers and fix them up // Make a copy of the full response headers and fix them up
// for the range we'll be returning. // for the range we'll be returning.
range_response_info_.reset( range_response_info_ =
new net::HttpResponseInfo(*info_->http_response_info())); std::make_unique<net::HttpResponseInfo>(info_->http_response_info());
net::HttpResponseHeaders* headers = range_response_info_->headers.get(); net::HttpResponseHeaders* headers = range_response_info_->headers.get();
headers->UpdateWithNewRange(range_requested_, resource_size, headers->UpdateWithNewRange(range_requested_, resource_size,
true /* replace status line */); true /* replace status line */);
......
...@@ -52,17 +52,18 @@ class WrappedPickleIOBuffer : public net::WrappedIOBuffer { ...@@ -52,17 +52,18 @@ class WrappedPickleIOBuffer : public net::WrappedIOBuffer {
// AppCacheResponseInfo ---------------------------------------------- // AppCacheResponseInfo ----------------------------------------------
AppCacheResponseInfo::AppCacheResponseInfo(AppCacheStorage* storage, AppCacheResponseInfo::AppCacheResponseInfo(
const GURL& manifest_url, AppCacheStorage* storage,
int64_t response_id, const GURL& manifest_url,
net::HttpResponseInfo* http_info, int64_t response_id,
int64_t response_data_size) std::unique_ptr<net::HttpResponseInfo> http_info,
int64_t response_data_size)
: manifest_url_(manifest_url), : manifest_url_(manifest_url),
response_id_(response_id), response_id_(response_id),
http_response_info_(http_info), http_response_info_(std::move(http_info)),
response_data_size_(response_data_size), response_data_size_(response_data_size),
storage_(storage) { storage_(storage) {
DCHECK(http_info); DCHECK(http_response_info_);
DCHECK(response_id != kAppCacheNoResponseId); DCHECK(response_id != kAppCacheNoResponseId);
storage_->working_set()->AddResponseInfo(this); storage_->working_set()->AddResponseInfo(this);
} }
...@@ -76,10 +77,11 @@ AppCacheResponseInfo::~AppCacheResponseInfo() { ...@@ -76,10 +77,11 @@ AppCacheResponseInfo::~AppCacheResponseInfo() {
HttpResponseInfoIOBuffer::HttpResponseInfoIOBuffer() HttpResponseInfoIOBuffer::HttpResponseInfoIOBuffer()
: response_data_size(kUnkownResponseDataSize) {} : response_data_size(kUnkownResponseDataSize) {}
HttpResponseInfoIOBuffer::HttpResponseInfoIOBuffer(net::HttpResponseInfo* info) HttpResponseInfoIOBuffer::HttpResponseInfoIOBuffer(
: http_info(info), response_data_size(kUnkownResponseDataSize) {} std::unique_ptr<net::HttpResponseInfo> info)
: http_info(std::move(info)), response_data_size(kUnkownResponseDataSize) {}
HttpResponseInfoIOBuffer::~HttpResponseInfoIOBuffer() {} HttpResponseInfoIOBuffer::~HttpResponseInfoIOBuffer() = default;
// AppCacheDiskCacheInterface ---------------------------------------- // AppCacheDiskCacheInterface ----------------------------------------
......
...@@ -35,23 +35,22 @@ using OnceCompletionCallback = base::OnceCallback<void(int)>; ...@@ -35,23 +35,22 @@ using OnceCompletionCallback = base::OnceCallback<void(int)>;
class CONTENT_EXPORT AppCacheResponseInfo class CONTENT_EXPORT AppCacheResponseInfo
: public base::RefCounted<AppCacheResponseInfo> { : public base::RefCounted<AppCacheResponseInfo> {
public: public:
// AppCacheResponseInfo takes ownership of the http_info.
AppCacheResponseInfo(AppCacheStorage* storage, AppCacheResponseInfo(AppCacheStorage* storage,
const GURL& manifest_url, const GURL& manifest_url,
int64_t response_id, int64_t response_id,
net::HttpResponseInfo* http_info, std::unique_ptr<net::HttpResponseInfo> http_info,
int64_t response_data_size); int64_t response_data_size);
const GURL& manifest_url() const { return manifest_url_; } const GURL& manifest_url() const { return manifest_url_; }
int64_t response_id() const { return response_id_; } int64_t response_id() const { return response_id_; }
const net::HttpResponseInfo* http_response_info() const { const net::HttpResponseInfo& http_response_info() const {
return http_response_info_.get(); return *http_response_info_;
} }
int64_t response_data_size() const { return response_data_size_; } int64_t response_data_size() const { return response_data_size_; }
private: private:
friend class base::RefCounted<AppCacheResponseInfo>; friend class base::RefCounted<AppCacheResponseInfo>;
virtual ~AppCacheResponseInfo(); ~AppCacheResponseInfo();
const GURL manifest_url_; const GURL manifest_url_;
const int64_t response_id_; const int64_t response_id_;
...@@ -68,11 +67,12 @@ struct CONTENT_EXPORT HttpResponseInfoIOBuffer ...@@ -68,11 +67,12 @@ struct CONTENT_EXPORT HttpResponseInfoIOBuffer
int response_data_size; int response_data_size;
HttpResponseInfoIOBuffer(); HttpResponseInfoIOBuffer();
explicit HttpResponseInfoIOBuffer(net::HttpResponseInfo* info); explicit HttpResponseInfoIOBuffer(
std::unique_ptr<net::HttpResponseInfo> info);
protected: private:
friend class base::RefCountedThreadSafe<HttpResponseInfoIOBuffer>; friend class base::RefCountedThreadSafe<HttpResponseInfoIOBuffer>;
virtual ~HttpResponseInfoIOBuffer(); ~HttpResponseInfoIOBuffer();
}; };
// Low level storage API used by the response reader and writer. // Low level storage API used by the response reader and writer.
...@@ -93,7 +93,7 @@ class CONTENT_EXPORT AppCacheDiskCacheInterface { ...@@ -93,7 +93,7 @@ class CONTENT_EXPORT AppCacheDiskCacheInterface {
virtual int64_t GetSize(int index) = 0; virtual int64_t GetSize(int index) = 0;
virtual void Close() = 0; virtual void Close() = 0;
protected: protected:
virtual ~Entry() {} virtual ~Entry() = default;
}; };
// The uma_name pointer must remain valid for the life of the object. // The uma_name pointer must remain valid for the life of the object.
......
...@@ -177,19 +177,21 @@ class AppCacheResponseTest : public testing::Test { ...@@ -177,19 +177,21 @@ class AppCacheResponseTest : public testing::Test {
int basic_response_size() { return 5; } // should match kHttpBody above int basic_response_size() { return 5; } // should match kHttpBody above
void WriteResponse(net::HttpResponseInfo* head, void WriteResponse(std::unique_ptr<net::HttpResponseInfo> head,
IOBuffer* body, int body_len) { IOBuffer* body,
int body_len) {
DCHECK(body); DCHECK(body);
scoped_refptr<IOBuffer> body_ref(body); scoped_refptr<IOBuffer> body_ref(body);
PushNextTask(base::BindOnce(&AppCacheResponseTest::WriteResponseBody, PushNextTask(base::BindOnce(&AppCacheResponseTest::WriteResponseBody,
base::Unretained(this), body_ref, body_len)); base::Unretained(this), body_ref, body_len));
WriteResponseHead(head); WriteResponseHead(std::move(head));
} }
void WriteResponseHead(net::HttpResponseInfo* head) { void WriteResponseHead(std::unique_ptr<net::HttpResponseInfo> head) {
EXPECT_FALSE(writer_->IsWritePending()); EXPECT_FALSE(writer_->IsWritePending());
expected_write_result_ = GetHttpResponseInfoSize(head); expected_write_result_ = GetHttpResponseInfoSize(*head);
write_info_buffer_ = new HttpResponseInfoIOBuffer(head); write_info_buffer_ =
base::MakeRefCounted<HttpResponseInfoIOBuffer>(std::move(head));
writer_->WriteInfo( writer_->WriteInfo(
write_info_buffer_.get(), write_info_buffer_.get(),
base::BindOnce(&AppCacheResponseTest::OnWriteInfoComplete, base::BindOnce(&AppCacheResponseTest::OnWriteInfoComplete,
...@@ -198,7 +200,7 @@ class AppCacheResponseTest : public testing::Test { ...@@ -198,7 +200,7 @@ class AppCacheResponseTest : public testing::Test {
void WriteResponseBody(scoped_refptr<IOBuffer> io_buffer, int buf_len) { void WriteResponseBody(scoped_refptr<IOBuffer> io_buffer, int buf_len) {
EXPECT_FALSE(writer_->IsWritePending()); EXPECT_FALSE(writer_->IsWritePending());
write_buffer_ = io_buffer; write_buffer_ = std::move(io_buffer);
expected_write_result_ = buf_len; expected_write_result_ = buf_len;
writer_->WriteData(write_buffer_.get(), buf_len, writer_->WriteData(write_buffer_.get(), buf_len,
base::BindOnce(&AppCacheResponseTest::OnWriteComplete, base::BindOnce(&AppCacheResponseTest::OnWriteComplete,
...@@ -268,36 +270,36 @@ class AppCacheResponseTest : public testing::Test { ...@@ -268,36 +270,36 @@ class AppCacheResponseTest : public testing::Test {
// Helpers to work with HttpResponseInfo objects // Helpers to work with HttpResponseInfo objects
net::HttpResponseInfo* MakeHttpResponseInfo(const std::string& raw_headers) { std::unique_ptr<net::HttpResponseInfo> MakeHttpResponseInfo(
net::HttpResponseInfo* info = new net::HttpResponseInfo; const std::string& raw_headers) {
std::unique_ptr<net::HttpResponseInfo> info =
std::make_unique<net::HttpResponseInfo>();
info->request_time = base::Time::Now(); info->request_time = base::Time::Now();
info->response_time = base::Time::Now(); info->response_time = base::Time::Now();
info->was_cached = false; info->was_cached = false;
info->headers = new net::HttpResponseHeaders(raw_headers); info->headers = base::MakeRefCounted<net::HttpResponseHeaders>(raw_headers);
return info; return info;
} }
int GetHttpResponseInfoSize(const net::HttpResponseInfo* info) { int GetHttpResponseInfoSize(const net::HttpResponseInfo& info) {
base::Pickle pickle; base::Pickle pickle = PickleHttpResonseInfo(info);
return PickleHttpResonseInfo(&pickle, info); return pickle.size();
} }
bool CompareHttpResponseInfos(const net::HttpResponseInfo* info1, bool CompareHttpResponseInfos(const net::HttpResponseInfo& info1,
const net::HttpResponseInfo* info2) { const net::HttpResponseInfo& info2) {
base::Pickle pickle1; base::Pickle pickle1 = PickleHttpResonseInfo(info1);
base::Pickle pickle2; base::Pickle pickle2 = PickleHttpResonseInfo(info2);
PickleHttpResonseInfo(&pickle1, info1);
PickleHttpResonseInfo(&pickle2, info2);
return (pickle1.size() == pickle2.size()) && return (pickle1.size() == pickle2.size()) &&
(0 == memcmp(pickle1.data(), pickle2.data(), pickle1.size())); (0 == memcmp(pickle1.data(), pickle2.data(), pickle1.size()));
} }
int PickleHttpResonseInfo(base::Pickle* pickle, base::Pickle PickleHttpResonseInfo(const net::HttpResponseInfo& info) {
const net::HttpResponseInfo* info) {
const bool kSkipTransientHeaders = true; const bool kSkipTransientHeaders = true;
const bool kTruncated = false; const bool kTruncated = false;
info->Persist(pickle, kSkipTransientHeaders, kTruncated); base::Pickle pickle;
return pickle->size(); info.Persist(&pickle, kSkipTransientHeaders, kTruncated);
return pickle;
} }
// Helpers to fill and verify blocks of memory with a value // Helpers to fill and verify blocks of memory with a value
...@@ -398,7 +400,7 @@ class AppCacheResponseTest : public testing::Test { ...@@ -398,7 +400,7 @@ class AppCacheResponseTest : public testing::Test {
EXPECT_EQ(written_response_id_, storage_delegate_->loaded_info_id_); EXPECT_EQ(written_response_id_, storage_delegate_->loaded_info_id_);
EXPECT_TRUE(storage_delegate_->loaded_info_.get()); EXPECT_TRUE(storage_delegate_->loaded_info_.get());
EXPECT_TRUE(CompareHttpResponseInfos( EXPECT_TRUE(CompareHttpResponseInfos(
write_info_buffer_->http_info.get(), *write_info_buffer_->http_info,
storage_delegate_->loaded_info_->http_response_info())); storage_delegate_->loaded_info_->http_response_info()));
EXPECT_EQ(basic_response_size(), EXPECT_EQ(basic_response_size(),
storage_delegate_->loaded_info_->response_data_size()); storage_delegate_->loaded_info_->response_data_size());
...@@ -469,20 +471,18 @@ class AppCacheResponseTest : public testing::Test { ...@@ -469,20 +471,18 @@ class AppCacheResponseTest : public testing::Test {
void Metadata_VerifyMetadata(const char* metadata) { void Metadata_VerifyMetadata(const char* metadata) {
EXPECT_EQ(written_response_id_, storage_delegate_->loaded_info_id_); EXPECT_EQ(written_response_id_, storage_delegate_->loaded_info_id_);
EXPECT_TRUE(storage_delegate_->loaded_info_.get()); EXPECT_TRUE(storage_delegate_->loaded_info_.get());
const net::HttpResponseInfo* read_head = const net::HttpResponseInfo& read_head =
storage_delegate_->loaded_info_->http_response_info(); storage_delegate_->loaded_info_->http_response_info();
EXPECT_TRUE(read_head);
const int metadata_size = strlen(metadata); const int metadata_size = strlen(metadata);
if (metadata_size) { if (metadata_size) {
EXPECT_TRUE(read_head->metadata.get()); EXPECT_TRUE(read_head.metadata.get());
EXPECT_EQ(metadata_size, read_head->metadata->size()); EXPECT_EQ(metadata_size, read_head.metadata->size());
EXPECT_EQ(0, EXPECT_EQ(0, memcmp(metadata, read_head.metadata->data(), metadata_size));
memcmp(metadata, read_head->metadata->data(), metadata_size));
} else { } else {
EXPECT_FALSE(read_head->metadata.get()); EXPECT_FALSE(read_head.metadata.get());
} }
EXPECT_TRUE(CompareHttpResponseInfos( EXPECT_TRUE(CompareHttpResponseInfos(
write_info_buffer_->http_info.get(), *write_info_buffer_->http_info,
storage_delegate_->loaded_info_->http_response_info())); storage_delegate_->loaded_info_->http_response_info()));
EXPECT_EQ(basic_response_size(), EXPECT_EQ(basic_response_size(),
storage_delegate_->loaded_info_->response_data_size()); storage_delegate_->loaded_info_->response_data_size());
...@@ -494,9 +494,10 @@ class AppCacheResponseTest : public testing::Test { ...@@ -494,9 +494,10 @@ class AppCacheResponseTest : public testing::Test {
void AmountWritten() { void AmountWritten() {
static const char kHttpHeaders[] = "HTTP/1.0 200 OK\0\0"; static const char kHttpHeaders[] = "HTTP/1.0 200 OK\0\0";
std::string raw_headers(kHttpHeaders, arraysize(kHttpHeaders)); std::string raw_headers(kHttpHeaders, arraysize(kHttpHeaders));
net::HttpResponseInfo* head = MakeHttpResponseInfo(raw_headers); std::unique_ptr<net::HttpResponseInfo> head =
MakeHttpResponseInfo(raw_headers);
int expected_amount_written = int expected_amount_written =
GetHttpResponseInfoSize(head) + kNumBlocks * kBlockSize; GetHttpResponseInfoSize(*head) + kNumBlocks * kBlockSize;
// Push tasks in reverse order. // Push tasks in reverse order.
PushNextTask(base::BindOnce(&AppCacheResponseTest::Verify_AmountWritten, PushNextTask(base::BindOnce(&AppCacheResponseTest::Verify_AmountWritten,
...@@ -507,7 +508,7 @@ class AppCacheResponseTest : public testing::Test { ...@@ -507,7 +508,7 @@ class AppCacheResponseTest : public testing::Test {
base::Unretained(this), kNumBlocks - i)); base::Unretained(this), kNumBlocks - i));
} }
PushNextTask(base::BindOnce(&AppCacheResponseTest::WriteResponseHead, PushNextTask(base::BindOnce(&AppCacheResponseTest::WriteResponseHead,
base::Unretained(this), head)); base::Unretained(this), std::move(head)));
writer_.reset(service_->storage()->CreateResponseWriter(GURL())); writer_.reset(service_->storage()->CreateResponseWriter(GURL()));
written_response_id_ = writer_->response_id(); written_response_id_ = writer_->response_id();
......
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
#include "content/browser/appcache/appcache_storage.h" #include "content/browser/appcache/appcache_storage.h"
#include <utility>
#include "base/bind.h" #include "base/bind.h"
#include "base/bind_helpers.h" #include "base/bind_helpers.h"
#include "base/memory/ptr_util.h" #include "base/memory/ptr_util.h"
...@@ -71,9 +73,8 @@ void AppCacheStorage::ResponseInfoLoadTask::OnReadComplete(int result) { ...@@ -71,9 +73,8 @@ void AppCacheStorage::ResponseInfoLoadTask::OnReadComplete(int result) {
scoped_refptr<AppCacheResponseInfo> info; scoped_refptr<AppCacheResponseInfo> info;
if (result >= 0) { if (result >= 0) {
info = new AppCacheResponseInfo(storage_, manifest_url_, info = new AppCacheResponseInfo(storage_, manifest_url_, response_id_,
response_id_, std::move(info_buffer_->http_info),
info_buffer_->http_info.release(),
info_buffer_->response_data_size); info_buffer_->response_data_size);
} }
FOR_EACH_DELEGATE(delegates_, OnResponseInfoLoaded(info.get(), response_id_)); FOR_EACH_DELEGATE(delegates_, OnResponseInfoLoaded(info.get(), response_id_));
......
...@@ -67,8 +67,8 @@ TEST_F(AppCacheStorageTest, AddRemoveResponseInfo) { ...@@ -67,8 +67,8 @@ TEST_F(AppCacheStorageTest, AddRemoveResponseInfo) {
const GURL kManifestUrl("http://origin/"); const GURL kManifestUrl("http://origin/");
scoped_refptr<AppCacheResponseInfo> info = scoped_refptr<AppCacheResponseInfo> info =
base::MakeRefCounted<AppCacheResponseInfo>( base::MakeRefCounted<AppCacheResponseInfo>(
service.storage(), kManifestUrl, 111, new net::HttpResponseInfo, service.storage(), kManifestUrl, 111,
kUnkownResponseDataSize); std::make_unique<net::HttpResponseInfo>(), kUnkownResponseDataSize);
EXPECT_EQ(info.get(), EXPECT_EQ(info.get(),
service.storage()->working_set()->GetResponseInfo(111)); service.storage()->working_set()->GetResponseInfo(111));
......
...@@ -688,8 +688,9 @@ void AppCacheUpdateJob::HandleManifestRefetchCompleted(URLFetcher* fetcher, ...@@ -688,8 +688,9 @@ void AppCacheUpdateJob::HandleManifestRefetchCompleted(URLFetcher* fetcher,
StoreGroupAndCache(); StoreGroupAndCache();
} else { } else {
manifest_response_writer_.reset(CreateResponseWriter()); manifest_response_writer_.reset(CreateResponseWriter());
scoped_refptr<HttpResponseInfoIOBuffer> io_buffer( scoped_refptr<HttpResponseInfoIOBuffer> io_buffer =
new HttpResponseInfoIOBuffer(manifest_response_info_.release())); base::MakeRefCounted<HttpResponseInfoIOBuffer>(
std::move(manifest_response_info_));
manifest_response_writer_->WriteInfo( manifest_response_writer_->WriteInfo(
io_buffer.get(), io_buffer.get(),
base::BindOnce(&AppCacheUpdateJob::OnManifestInfoWriteComplete, base::BindOnce(&AppCacheUpdateJob::OnManifestInfoWriteComplete,
...@@ -990,8 +991,8 @@ void AppCacheUpdateJob::FetchUrls() { ...@@ -990,8 +991,8 @@ void AppCacheUpdateJob::FetchUrls() {
DCHECK(existing_entry->response_id() == DCHECK(existing_entry->response_id() ==
url_to_fetch.existing_response_info->response_id()); url_to_fetch.existing_response_info->response_id());
fetcher->set_existing_response_headers( fetcher->set_existing_response_headers(
url_to_fetch.existing_response_info->http_response_info()->headers url_to_fetch.existing_response_info->http_response_info()
.get()); .headers.get());
fetcher->set_existing_entry(*existing_entry); fetcher->set_existing_entry(*existing_entry);
} }
fetcher->Start(); fetcher->Start();
...@@ -1168,7 +1169,7 @@ void AppCacheUpdateJob::OnResponseInfoLoaded( ...@@ -1168,7 +1169,7 @@ void AppCacheUpdateJob::OnResponseInfoLoaded(
AppCacheResponseInfo* response_info, AppCacheResponseInfo* response_info,
int64_t response_id) { int64_t response_id) {
const net::HttpResponseInfo* http_info = const net::HttpResponseInfo* http_info =
response_info ? response_info->http_response_info() : nullptr; response_info ? &response_info->http_response_info() : nullptr;
// Needed response info for a manifest fetch request. // Needed response info for a manifest fetch request.
if (internal_state_ == FETCH_MANIFEST) { if (internal_state_ == FETCH_MANIFEST) {
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include <stddef.h> #include <stddef.h>
#include <stdint.h> #include <stdint.h>
#include <memory>
#include <utility> #include <utility>
#include "base/bind.h" #include "base/bind.h"
...@@ -1388,14 +1389,17 @@ class AppCacheUpdateJobTest : public testing::TestWithParam<RequestHandlerType>, ...@@ -1388,14 +1389,17 @@ class AppCacheUpdateJobTest : public testing::TestWithParam<RequestHandlerType>,
"HTTP/1.1 200 OK\0" "HTTP/1.1 200 OK\0"
"Cache-Control: max-age=8675309\0" "Cache-Control: max-age=8675309\0"
"\0"; "\0";
net::HttpResponseHeaders* headers = scoped_refptr<net::HttpResponseHeaders> headers =
new net::HttpResponseHeaders(std::string(data, arraysize(data))); base::MakeRefCounted<net::HttpResponseHeaders>(
net::HttpResponseInfo* response_info = new net::HttpResponseInfo(); std::string(data, base::size(data)));
std::unique_ptr<net::HttpResponseInfo> response_info =
std::make_unique<net::HttpResponseInfo>();
response_info->request_time = base::Time::Now(); response_info->request_time = base::Time::Now();
response_info->response_time = base::Time::Now(); response_info->response_time = base::Time::Now();
response_info->headers = headers; // adds ref to headers response_info->headers = std::move(headers);
scoped_refptr<HttpResponseInfoIOBuffer> io_buffer( scoped_refptr<HttpResponseInfoIOBuffer> io_buffer =
new HttpResponseInfoIOBuffer(response_info)); // adds ref to info base::MakeRefCounted<HttpResponseInfoIOBuffer>(
std::move(response_info));
response_writer_->WriteInfo( response_writer_->WriteInfo(
io_buffer.get(), io_buffer.get(),
base::BindOnce( base::BindOnce(
...@@ -1451,14 +1455,17 @@ class AppCacheUpdateJobTest : public testing::TestWithParam<RequestHandlerType>, ...@@ -1451,14 +1455,17 @@ class AppCacheUpdateJobTest : public testing::TestWithParam<RequestHandlerType>,
"HTTP/1.1 200 OK\0" "HTTP/1.1 200 OK\0"
"Expires: Thu, 01 Dec 1994 16:00:00 GMT\0" "Expires: Thu, 01 Dec 1994 16:00:00 GMT\0"
"\0"; "\0";
net::HttpResponseHeaders* headers = scoped_refptr<net::HttpResponseHeaders> headers =
new net::HttpResponseHeaders(std::string(data, arraysize(data))); base::MakeRefCounted<net::HttpResponseHeaders>(
net::HttpResponseInfo* response_info = new net::HttpResponseInfo(); std::string(data, base::size(data)));
std::unique_ptr<net::HttpResponseInfo> response_info =
std::make_unique<net::HttpResponseInfo>();
response_info->request_time = base::Time::Now(); response_info->request_time = base::Time::Now();
response_info->response_time = base::Time::Now(); response_info->response_time = base::Time::Now();
response_info->headers = headers; // adds ref to headers response_info->headers = std::move(headers);
scoped_refptr<HttpResponseInfoIOBuffer> io_buffer( scoped_refptr<HttpResponseInfoIOBuffer> io_buffer =
new HttpResponseInfoIOBuffer(response_info)); // adds ref to info base::MakeRefCounted<HttpResponseInfoIOBuffer>(
std::move(response_info));
response_writer_->WriteInfo( response_writer_->WriteInfo(
io_buffer.get(), io_buffer.get(),
base::BindOnce( base::BindOnce(
...@@ -1514,14 +1521,17 @@ class AppCacheUpdateJobTest : public testing::TestWithParam<RequestHandlerType>, ...@@ -1514,14 +1521,17 @@ class AppCacheUpdateJobTest : public testing::TestWithParam<RequestHandlerType>,
"Cache-Control: max-age=8675309\0" "Cache-Control: max-age=8675309\0"
"Vary: blah\0" "Vary: blah\0"
"\0"; "\0";
net::HttpResponseHeaders* headers = scoped_refptr<net::HttpResponseHeaders> headers =
new net::HttpResponseHeaders(std::string(data, arraysize(data))); base::MakeRefCounted<net::HttpResponseHeaders>(
net::HttpResponseInfo* response_info = new net::HttpResponseInfo(); std::string(data, base::size(data)));
std::unique_ptr<net::HttpResponseInfo> response_info =
std::make_unique<net::HttpResponseInfo>();
response_info->request_time = base::Time::Now(); response_info->request_time = base::Time::Now();
response_info->response_time = base::Time::Now(); response_info->response_time = base::Time::Now();
response_info->headers = headers; // adds ref to headers response_info->headers = std::move(headers);
scoped_refptr<HttpResponseInfoIOBuffer> io_buffer( scoped_refptr<HttpResponseInfoIOBuffer> io_buffer =
new HttpResponseInfoIOBuffer(response_info)); // adds ref to info base::MakeRefCounted<HttpResponseInfoIOBuffer>(
std::move(response_info));
response_writer_->WriteInfo( response_writer_->WriteInfo(
io_buffer.get(), io_buffer.get(),
base::BindOnce( base::BindOnce(
...@@ -1581,14 +1591,17 @@ class AppCacheUpdateJobTest : public testing::TestWithParam<RequestHandlerType>, ...@@ -1581,14 +1591,17 @@ class AppCacheUpdateJobTest : public testing::TestWithParam<RequestHandlerType>,
"Cache-Control: max-age=8675309\0" "Cache-Control: max-age=8675309\0"
"Vary: origin, accept-encoding\0" "Vary: origin, accept-encoding\0"
"\0"; "\0";
net::HttpResponseHeaders* headers = scoped_refptr<net::HttpResponseHeaders> headers =
new net::HttpResponseHeaders(std::string(data, arraysize(data))); base::MakeRefCounted<net::HttpResponseHeaders>(
net::HttpResponseInfo* response_info = new net::HttpResponseInfo(); std::string(data, base::size(data)));
std::unique_ptr<net::HttpResponseInfo> response_info =
std::make_unique<net::HttpResponseInfo>();
response_info->request_time = base::Time::Now(); response_info->request_time = base::Time::Now();
response_info->response_time = base::Time::Now(); response_info->response_time = base::Time::Now();
response_info->headers = headers; // adds ref to headers response_info->headers = std::move(headers);
scoped_refptr<HttpResponseInfoIOBuffer> io_buffer( scoped_refptr<HttpResponseInfoIOBuffer> io_buffer =
new HttpResponseInfoIOBuffer(response_info)); // adds ref to info base::MakeRefCounted<HttpResponseInfoIOBuffer>(
std::move(response_info));
response_writer_->WriteInfo( response_writer_->WriteInfo(
io_buffer.get(), io_buffer.get(),
base::BindOnce( base::BindOnce(
...@@ -3204,12 +3217,15 @@ class AppCacheUpdateJobTest : public testing::TestWithParam<RequestHandlerType>, ...@@ -3204,12 +3217,15 @@ class AppCacheUpdateJobTest : public testing::TestWithParam<RequestHandlerType>,
"HTTP/1.1 200 OK\0" "HTTP/1.1 200 OK\0"
"Last-Modified: Sat, 29 Oct 1994 19:43:31 GMT\0" "Last-Modified: Sat, 29 Oct 1994 19:43:31 GMT\0"
"\0"; "\0";
net::HttpResponseHeaders* headers = scoped_refptr<net::HttpResponseHeaders> headers =
new net::HttpResponseHeaders(std::string(data, arraysize(data))); base::MakeRefCounted<net::HttpResponseHeaders>(
net::HttpResponseInfo* response_info = new net::HttpResponseInfo(); std::string(data, base::size(data)));
response_info->headers = headers; // adds ref to headers std::unique_ptr<net::HttpResponseInfo> response_info =
scoped_refptr<HttpResponseInfoIOBuffer> io_buffer( std::make_unique<net::HttpResponseInfo>();
new HttpResponseInfoIOBuffer(response_info)); // adds ref to info response_info->headers = std::move(headers);
scoped_refptr<HttpResponseInfoIOBuffer> io_buffer =
base::MakeRefCounted<HttpResponseInfoIOBuffer>(
std::move(response_info));
response_writer_->WriteInfo( response_writer_->WriteInfo(
io_buffer.get(), io_buffer.get(),
base::BindOnce( base::BindOnce(
...@@ -3274,12 +3290,15 @@ class AppCacheUpdateJobTest : public testing::TestWithParam<RequestHandlerType>, ...@@ -3274,12 +3290,15 @@ class AppCacheUpdateJobTest : public testing::TestWithParam<RequestHandlerType>,
"HTTP/1.1 200 OK\0" "HTTP/1.1 200 OK\0"
"ETag: \"LadeDade\"\0" "ETag: \"LadeDade\"\0"
"\0"; "\0";
net::HttpResponseHeaders* headers = scoped_refptr<net::HttpResponseHeaders> headers =
new net::HttpResponseHeaders(std::string(data, arraysize(data))); base::MakeRefCounted<net::HttpResponseHeaders>(
net::HttpResponseInfo* response_info = new net::HttpResponseInfo(); std::string(data, base::size(data)));
response_info->headers = headers; // adds ref to headers std::unique_ptr<net::HttpResponseInfo> response_info =
scoped_refptr<HttpResponseInfoIOBuffer> io_buffer( std::make_unique<net::HttpResponseInfo>();
new HttpResponseInfoIOBuffer(response_info)); // adds ref to info response_info->headers = std::move(headers);
scoped_refptr<HttpResponseInfoIOBuffer> io_buffer =
base::MakeRefCounted<HttpResponseInfoIOBuffer>(
std::move(response_info));
response_writer_->WriteInfo( response_writer_->WriteInfo(
io_buffer.get(), io_buffer.get(),
base::BindOnce( base::BindOnce(
...@@ -3532,11 +3551,12 @@ class AppCacheUpdateJobTest : public testing::TestWithParam<RequestHandlerType>, ...@@ -3532,11 +3551,12 @@ class AppCacheUpdateJobTest : public testing::TestWithParam<RequestHandlerType>,
const GURL& manifest_url, const GURL& manifest_url,
int64_t response_id, int64_t response_id,
const std::string& raw_headers) { const std::string& raw_headers) {
net::HttpResponseInfo* http_info = new net::HttpResponseInfo(); std::unique_ptr<net::HttpResponseInfo> http_info =
std::make_unique<net::HttpResponseInfo>();
http_info->headers = new net::HttpResponseHeaders(raw_headers); http_info->headers = new net::HttpResponseHeaders(raw_headers);
scoped_refptr<AppCacheResponseInfo> info( scoped_refptr<AppCacheResponseInfo> info(
new AppCacheResponseInfo(service_->storage(), manifest_url, new AppCacheResponseInfo(service_->storage(), manifest_url, response_id,
response_id, http_info, 0)); std::move(http_info), 0));
response_infos_.push_back(info); response_infos_.push_back(info);
return info.get(); return info.get();
} }
......
...@@ -107,9 +107,10 @@ void AppCacheUpdateJob::URLFetcher::OnResponseStarted(int net_error) { ...@@ -107,9 +107,10 @@ void AppCacheUpdateJob::URLFetcher::OnResponseStarted(int net_error) {
// completion before reading any response data. // completion before reading any response data.
if (fetch_type_ == URL_FETCH || fetch_type_ == MASTER_ENTRY_FETCH) { if (fetch_type_ == URL_FETCH || fetch_type_ == MASTER_ENTRY_FETCH) {
response_writer_.reset(job_->CreateResponseWriter()); response_writer_.reset(job_->CreateResponseWriter());
scoped_refptr<HttpResponseInfoIOBuffer> io_buffer( scoped_refptr<HttpResponseInfoIOBuffer> io_buffer =
new HttpResponseInfoIOBuffer( base::MakeRefCounted<HttpResponseInfoIOBuffer>(
new net::HttpResponseInfo(request_->GetResponseInfo()))); std::make_unique<net::HttpResponseInfo>(
request_->GetResponseInfo()));
response_writer_->WriteInfo( response_writer_->WriteInfo(
io_buffer.get(), io_buffer.get(),
base::BindOnce(&URLFetcher::OnWriteComplete, base::Unretained(this))); base::BindOnce(&URLFetcher::OnWriteComplete, base::Unretained(this)));
......
...@@ -258,31 +258,30 @@ void AppCacheURLLoaderJob::SendResponseInfo() { ...@@ -258,31 +258,30 @@ void AppCacheURLLoaderJob::SendResponseInfo() {
if (!data_pipe_.consumer_handle.is_valid()) if (!data_pipe_.consumer_handle.is_valid())
return; return;
const net::HttpResponseInfo* http_info = is_range_request() const net::HttpResponseInfo& http_info =
? range_response_info_.get() is_range_request() ? *range_response_info_ : info_->http_response_info();
: info_->http_response_info();
network::ResourceResponseHead response_head; network::ResourceResponseHead response_head;
response_head.headers = http_info->headers; response_head.headers = http_info.headers;
response_head.appcache_id = cache_id_; response_head.appcache_id = cache_id_;
response_head.appcache_manifest_url = manifest_url_; response_head.appcache_manifest_url = manifest_url_;
http_info->headers->GetMimeType(&response_head.mime_type); http_info.headers->GetMimeType(&response_head.mime_type);
http_info->headers->GetCharset(&response_head.charset); http_info.headers->GetCharset(&response_head.charset);
// TODO(ananta) // TODO(ananta)
// Verify if the times sent here are correct. // Verify if the times sent here are correct.
response_head.request_time = http_info->request_time; response_head.request_time = http_info.request_time;
response_head.response_time = http_info->response_time; response_head.response_time = http_info.response_time;
response_head.content_length = response_head.content_length =
is_range_request() ? range_response_info_->headers->GetContentLength() is_range_request() ? range_response_info_->headers->GetContentLength()
: info_->response_data_size(); : info_->response_data_size();
response_head.connection_info = http_info->connection_info; response_head.connection_info = http_info.connection_info;
response_head.socket_address = http_info->socket_address; response_head.socket_address = http_info.socket_address;
response_head.was_fetched_via_spdy = http_info->was_fetched_via_spdy; response_head.was_fetched_via_spdy = http_info.was_fetched_via_spdy;
response_head.was_alpn_negotiated = http_info->was_alpn_negotiated; response_head.was_alpn_negotiated = http_info.was_alpn_negotiated;
response_head.alpn_negotiated_protocol = http_info->alpn_negotiated_protocol; response_head.alpn_negotiated_protocol = http_info.alpn_negotiated_protocol;
if (http_info->ssl_info.cert) if (http_info.ssl_info.cert)
response_head.ssl_info = http_info->ssl_info; response_head.ssl_info = http_info.ssl_info;
response_head.load_timing = load_timing_info_; response_head.load_timing = load_timing_info_;
client_->OnReceiveResponse(response_head); client_->OnReceiveResponse(response_head);
...@@ -330,7 +329,7 @@ void AppCacheURLLoaderJob::NotifyCompleted(int error_code) { ...@@ -330,7 +329,7 @@ void AppCacheURLLoaderJob::NotifyCompleted(int error_code) {
if (!error_code) { if (!error_code) {
const net::HttpResponseInfo* http_info = const net::HttpResponseInfo* http_info =
is_range_request() ? range_response_info_.get() is_range_request() ? range_response_info_.get()
: (info_ ? info_->http_response_info() : nullptr); : (info_ ? &info_->http_response_info() : nullptr);
status.exists_in_cache = http_info->was_cached; status.exists_in_cache = http_info->was_cached;
status.completion_time = base::TimeTicks::Now(); status.completion_time = base::TimeTicks::Now();
status.encoded_body_length = status.encoded_body_length =
......
...@@ -216,7 +216,7 @@ const net::HttpResponseInfo* AppCacheURLRequestJob::http_info() const { ...@@ -216,7 +216,7 @@ const net::HttpResponseInfo* AppCacheURLRequestJob::http_info() const {
return nullptr; return nullptr;
if (range_response_info_) if (range_response_info_)
return range_response_info_.get(); return range_response_info_.get();
return info_->http_response_info(); return &info_->http_response_info();
} }
void AppCacheURLRequestJob::OnReadComplete(int result) { void AppCacheURLRequestJob::OnReadComplete(int result) {
......
...@@ -337,25 +337,28 @@ class AppCacheURLRequestJobTest : public testing::Test { ...@@ -337,25 +337,28 @@ class AppCacheURLRequestJobTest : public testing::Test {
// Wrappers to call AppCacheResponseReader/Writer Read and Write methods // Wrappers to call AppCacheResponseReader/Writer Read and Write methods
void WriteBasicResponse() { void WriteBasicResponse() {
scoped_refptr<IOBuffer> body(new WrappedIOBuffer(kHttpBasicBody)); scoped_refptr<IOBuffer> body =
base::MakeRefCounted<WrappedIOBuffer>(kHttpBasicBody);
std::string raw_headers(kHttpBasicHeaders, arraysize(kHttpBasicHeaders)); std::string raw_headers(kHttpBasicHeaders, arraysize(kHttpBasicHeaders));
WriteResponse( WriteResponse(
MakeHttpResponseInfo(raw_headers), body.get(), strlen(kHttpBasicBody)); MakeHttpResponseInfo(raw_headers), body.get(), strlen(kHttpBasicBody));
} }
void WriteResponse(net::HttpResponseInfo* head, void WriteResponse(std::unique_ptr<net::HttpResponseInfo> head,
IOBuffer* body, int body_len) { IOBuffer* body,
int body_len) {
DCHECK(body); DCHECK(body);
scoped_refptr<IOBuffer> body_ref(body); scoped_refptr<IOBuffer> body_ref(body);
PushNextTask(base::BindOnce(&AppCacheURLRequestJobTest::WriteResponseBody, PushNextTask(base::BindOnce(&AppCacheURLRequestJobTest::WriteResponseBody,
base::Unretained(this), body_ref, body_len)); base::Unretained(this), body_ref, body_len));
WriteResponseHead(head); WriteResponseHead(std::move(head));
} }
void WriteResponseHead(net::HttpResponseInfo* head) { void WriteResponseHead(std::unique_ptr<net::HttpResponseInfo> head) {
EXPECT_FALSE(writer_->IsWritePending()); EXPECT_FALSE(writer_->IsWritePending());
expected_write_result_ = GetHttpResponseInfoSize(head); expected_write_result_ = GetHttpResponseInfoSize(*head);
write_info_buffer_ = new HttpResponseInfoIOBuffer(head); write_info_buffer_ =
base::MakeRefCounted<HttpResponseInfoIOBuffer>(std::move(head));
writer_->WriteInfo( writer_->WriteInfo(
write_info_buffer_.get(), write_info_buffer_.get(),
base::BindOnce(&AppCacheURLRequestJobTest::OnWriteInfoComplete, base::BindOnce(&AppCacheURLRequestJobTest::OnWriteInfoComplete,
...@@ -409,36 +412,36 @@ class AppCacheURLRequestJobTest : public testing::Test { ...@@ -409,36 +412,36 @@ class AppCacheURLRequestJobTest : public testing::Test {
// Helpers to work with HttpResponseInfo objects // Helpers to work with HttpResponseInfo objects
net::HttpResponseInfo* MakeHttpResponseInfo(const std::string& raw_headers) { std::unique_ptr<net::HttpResponseInfo> MakeHttpResponseInfo(
net::HttpResponseInfo* info = new net::HttpResponseInfo; const std::string& raw_headers) {
std::unique_ptr<net::HttpResponseInfo> info =
std::make_unique<net::HttpResponseInfo>();
info->request_time = base::Time::Now(); info->request_time = base::Time::Now();
info->response_time = base::Time::Now(); info->response_time = base::Time::Now();
info->was_cached = false; info->was_cached = false;
info->headers = new net::HttpResponseHeaders(raw_headers); info->headers = base::MakeRefCounted<net::HttpResponseHeaders>(raw_headers);
return info; return info;
} }
int GetHttpResponseInfoSize(const net::HttpResponseInfo* info) { int GetHttpResponseInfoSize(const net::HttpResponseInfo& info) {
base::Pickle pickle; base::Pickle pickle = PickleHttpResonseInfo(info);
return PickleHttpResonseInfo(&pickle, info); return pickle.size();
} }
bool CompareHttpResponseInfos(const net::HttpResponseInfo* info1, bool CompareHttpResponseInfos(const net::HttpResponseInfo& info1,
const net::HttpResponseInfo* info2) { const net::HttpResponseInfo& info2) {
base::Pickle pickle1; base::Pickle pickle1 = PickleHttpResonseInfo(info1);
base::Pickle pickle2; base::Pickle pickle2 = PickleHttpResonseInfo(info2);
PickleHttpResonseInfo(&pickle1, info1);
PickleHttpResonseInfo(&pickle2, info2);
return (pickle1.size() == pickle2.size()) && return (pickle1.size() == pickle2.size()) &&
(0 == memcmp(pickle1.data(), pickle2.data(), pickle1.size())); (0 == memcmp(pickle1.data(), pickle2.data(), pickle1.size()));
} }
int PickleHttpResonseInfo(base::Pickle* pickle, base::Pickle PickleHttpResonseInfo(const net::HttpResponseInfo& info) {
const net::HttpResponseInfo* info) {
const bool kSkipTransientHeaders = true; const bool kSkipTransientHeaders = true;
const bool kTruncated = false; const bool kTruncated = false;
info->Persist(pickle, kSkipTransientHeaders, kTruncated); base::Pickle pickle;
return pickle->size(); info.Persist(&pickle, kSkipTransientHeaders, kTruncated);
return pickle;
} }
// Helpers to fill and verify blocks of memory with a value // Helpers to fill and verify blocks of memory with a value
...@@ -665,8 +668,7 @@ class AppCacheURLRequestJobTest : public testing::Test { ...@@ -665,8 +668,7 @@ class AppCacheURLRequestJobTest : public testing::Test {
void VerifyDeliverSmallAppCachedResponse() { void VerifyDeliverSmallAppCachedResponse() {
EXPECT_EQ(net::OK, url_request_delegate_->request_status()); EXPECT_EQ(net::OK, url_request_delegate_->request_status());
EXPECT_TRUE(CompareHttpResponseInfos( EXPECT_TRUE(CompareHttpResponseInfos(
write_info_buffer_->http_info.get(), *write_info_buffer_->http_info, url_request_delegate_->received_info_));
&url_request_delegate_->received_info_));
EXPECT_EQ(5, url_request_delegate_->amount_received_); EXPECT_EQ(5, url_request_delegate_->amount_received_);
EXPECT_EQ(0, memcmp(kHttpBasicBody, EXPECT_EQ(0, memcmp(kHttpBasicBody,
url_request_delegate_->received_data_->data(), url_request_delegate_->received_data_->data(),
...@@ -712,8 +714,7 @@ class AppCacheURLRequestJobTest : public testing::Test { ...@@ -712,8 +714,7 @@ class AppCacheURLRequestJobTest : public testing::Test {
void VerifyDeliverLargeAppCachedResponse() { void VerifyDeliverLargeAppCachedResponse() {
EXPECT_EQ(net::OK, url_request_delegate_->request_status()); EXPECT_EQ(net::OK, url_request_delegate_->request_status());
EXPECT_TRUE(CompareHttpResponseInfos( EXPECT_TRUE(CompareHttpResponseInfos(
write_info_buffer_->http_info.get(), *write_info_buffer_->http_info, url_request_delegate_->received_info_));
&url_request_delegate_->received_info_));
EXPECT_EQ(3072, url_request_delegate_->amount_received_); EXPECT_EQ(3072, url_request_delegate_->amount_received_);
char* p = url_request_delegate_->received_data_->data(); char* p = url_request_delegate_->received_data_->data();
for (int i = 0; i < 3; ++i, p += kBlockSize) for (int i = 0; i < 3; ++i, p += kBlockSize)
......
...@@ -861,13 +861,14 @@ void WriteResponse(ServiceWorkerStorage* storage, ...@@ -861,13 +861,14 @@ void WriteResponse(ServiceWorkerStorage* storage,
std::unique_ptr<ServiceWorkerResponseWriter> writer = std::unique_ptr<ServiceWorkerResponseWriter> writer =
storage->CreateResponseWriter(id); storage->CreateResponseWriter(id);
std::unique_ptr<net::HttpResponseInfo> info(new net::HttpResponseInfo); std::unique_ptr<net::HttpResponseInfo> info =
std::make_unique<net::HttpResponseInfo>();
info->request_time = base::Time::Now(); info->request_time = base::Time::Now();
info->response_time = base::Time::Now(); info->response_time = base::Time::Now();
info->was_cached = false; info->was_cached = false;
info->headers = new net::HttpResponseHeaders(headers); info->headers = new net::HttpResponseHeaders(headers);
scoped_refptr<HttpResponseInfoIOBuffer> info_buffer = scoped_refptr<HttpResponseInfoIOBuffer> info_buffer =
new HttpResponseInfoIOBuffer(info.release()); base::MakeRefCounted<HttpResponseInfoIOBuffer>(std::move(info));
int rv = -1234; int rv = -1234;
writer->WriteInfo(info_buffer.get(), base::BindOnce(&OnIOComplete, &rv)); writer->WriteInfo(info_buffer.get(), base::BindOnce(&OnIOComplete, &rv));
......
...@@ -248,7 +248,7 @@ void ServiceWorkerNewScriptLoader::OnReceiveResponse( ...@@ -248,7 +248,7 @@ void ServiceWorkerNewScriptLoader::OnReceiveResponse(
} }
WriteHeaders( WriteHeaders(
base::MakeRefCounted<HttpResponseInfoIOBuffer>(response_info.release())); base::MakeRefCounted<HttpResponseInfoIOBuffer>(std::move(response_info)));
// Don't pass SSLInfo to the client when the original request doesn't ask // Don't pass SSLInfo to the client when the original request doesn't ask
// to send it. // to send it.
......
...@@ -118,13 +118,14 @@ class ServiceWorkerReadFromCacheJobTest : public testing::Test { ...@@ -118,13 +118,14 @@ class ServiceWorkerReadFromCacheJobTest : public testing::Test {
std::unique_ptr<ServiceWorkerResponseWriter> writer = std::unique_ptr<ServiceWorkerResponseWriter> writer =
context()->storage()->CreateResponseWriter(resource_id); context()->storage()->CreateResponseWriter(resource_id);
std::unique_ptr<net::HttpResponseInfo> info(new net::HttpResponseInfo); std::unique_ptr<net::HttpResponseInfo> info =
std::make_unique<net::HttpResponseInfo>();
info->request_time = base::Time::Now(); info->request_time = base::Time::Now();
info->response_time = base::Time::Now(); info->response_time = base::Time::Now();
info->was_cached = false; info->was_cached = false;
info->headers = new net::HttpResponseHeaders(headers); info->headers = new net::HttpResponseHeaders(headers);
scoped_refptr<HttpResponseInfoIOBuffer> info_buffer = scoped_refptr<HttpResponseInfoIOBuffer> info_buffer =
new HttpResponseInfoIOBuffer(info.release()); base::MakeRefCounted<HttpResponseInfoIOBuffer>(std::move(info));
{ {
net::TestCompletionCallback cb; net::TestCompletionCallback cb;
writer->WriteInfo(info_buffer.get(), cb.callback()); writer->WriteInfo(info_buffer.get(), cb.callback());
......
...@@ -172,13 +172,14 @@ int WriteResponse(ServiceWorkerStorage* storage, ...@@ -172,13 +172,14 @@ int WriteResponse(ServiceWorkerStorage* storage,
std::unique_ptr<ServiceWorkerResponseWriter> writer = std::unique_ptr<ServiceWorkerResponseWriter> writer =
storage->CreateResponseWriter(id); storage->CreateResponseWriter(id);
std::unique_ptr<net::HttpResponseInfo> info(new net::HttpResponseInfo); std::unique_ptr<net::HttpResponseInfo> info =
std::make_unique<net::HttpResponseInfo>();
info->request_time = base::Time::Now(); info->request_time = base::Time::Now();
info->response_time = base::Time::Now(); info->response_time = base::Time::Now();
info->was_cached = false; info->was_cached = false;
info->headers = new net::HttpResponseHeaders(headers); info->headers = new net::HttpResponseHeaders(headers);
scoped_refptr<HttpResponseInfoIOBuffer> info_buffer = scoped_refptr<HttpResponseInfoIOBuffer> info_buffer =
new HttpResponseInfoIOBuffer(info.release()); base::MakeRefCounted<HttpResponseInfoIOBuffer>(std::move(info));
int rv = 0; int rv = 0;
{ {
TestCompletionCallback cb; TestCompletionCallback cb;
......
...@@ -105,7 +105,7 @@ void WriteBodyToDiskCache(std::unique_ptr<ServiceWorkerResponseWriter> writer, ...@@ -105,7 +105,7 @@ void WriteBodyToDiskCache(std::unique_ptr<ServiceWorkerResponseWriter> writer,
const std::string& body, const std::string& body,
base::OnceClosure callback) { base::OnceClosure callback) {
scoped_refptr<HttpResponseInfoIOBuffer> info_buffer = scoped_refptr<HttpResponseInfoIOBuffer> info_buffer =
base::MakeRefCounted<HttpResponseInfoIOBuffer>(info.release()); base::MakeRefCounted<HttpResponseInfoIOBuffer>(std::move(info));
info_buffer->response_data_size = body.size(); info_buffer->response_data_size = body.size();
ServiceWorkerResponseWriter* writer_rawptr = writer.get(); ServiceWorkerResponseWriter* writer_rawptr = writer.get();
writer_rawptr->WriteInfo( writer_rawptr->WriteInfo(
......
...@@ -353,10 +353,12 @@ void ServiceWorkerWriteToCacheJob::OnResponseStarted(net::URLRequest* request, ...@@ -353,10 +353,12 @@ void ServiceWorkerWriteToCacheJob::OnResponseStarted(net::URLRequest* request,
version_->embedded_worker()->OnNetworkAccessedForScriptLoad(); version_->embedded_worker()->OnNetworkAccessedForScriptLoad();
} }
http_info_.reset(new net::HttpResponseInfo(net_request_->response_info())); http_info_ =
std::make_unique<net::HttpResponseInfo>(net_request_->response_info());
scoped_refptr<HttpResponseInfoIOBuffer> info_buffer = scoped_refptr<HttpResponseInfoIOBuffer> info_buffer =
new HttpResponseInfoIOBuffer( base::MakeRefCounted<HttpResponseInfoIOBuffer>(
new net::HttpResponseInfo(net_request_->response_info())); std::make_unique<net::HttpResponseInfo>(
net_request_->response_info()));
net::Error error = cache_writer_->MaybeWriteHeaders( net::Error error = cache_writer_->MaybeWriteHeaders(
info_buffer.get(), info_buffer.get(),
base::BindOnce(&ServiceWorkerWriteToCacheJob::OnWriteHeadersComplete, base::BindOnce(&ServiceWorkerWriteToCacheJob::OnWriteHeadersComplete,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment