Commit bb1a2cee authored by Bence Béky's avatar Bence Béky Committed by Commit Bot

Use CompletionOnceCallback in URLFetcherResponseWriter.

Bug: 807724
Change-Id: Ie6d9df68023730dc927984ef326223169f243c15
Reviewed-on: https://chromium-review.googlesource.com/1155087Reviewed-by: default avatarPeter Beverloo <peter@chromium.org>
Reviewed-by: default avatarRyan Hamilton <rch@chromium.org>
Reviewed-by: default avatarAndrey Kosyakov <caseq@chromium.org>
Reviewed-by: default avatarKazuhiro Inaba <kinaba@chromium.org>
Commit-Queue: Bence Béky <bnc@chromium.org>
Cr-Commit-Position: refs/heads/master@{#579699}
parent 006765f9
...@@ -61,6 +61,7 @@ ...@@ -61,6 +61,7 @@
#include "extensions/common/constants.h" #include "extensions/common/constants.h"
#include "extensions/common/permissions/permissions_data.h" #include "extensions/common/permissions/permissions_data.h"
#include "ipc/ipc_channel.h" #include "ipc/ipc_channel.h"
#include "net/base/completion_once_callback.h"
#include "net/base/escape.h" #include "net/base/escape.h"
#include "net/base/io_buffer.h" #include "net/base/io_buffer.h"
#include "net/base/net_errors.h" #include "net/base/net_errors.h"
...@@ -216,11 +217,11 @@ class ResponseWriter : public net::URLFetcherResponseWriter { ...@@ -216,11 +217,11 @@ class ResponseWriter : public net::URLFetcherResponseWriter {
~ResponseWriter() override; ~ResponseWriter() override;
// URLFetcherResponseWriter overrides: // URLFetcherResponseWriter overrides:
int Initialize(const net::CompletionCallback& callback) override; int Initialize(net::CompletionOnceCallback callback) override;
int Write(net::IOBuffer* buffer, int Write(net::IOBuffer* buffer,
int num_bytes, int num_bytes,
const net::CompletionCallback& callback) override; net::CompletionOnceCallback callback) override;
int Finish(int net_error, const net::CompletionCallback& callback) override; int Finish(int net_error, net::CompletionOnceCallback callback) override;
private: private:
base::WeakPtr<DevToolsUIBindings> bindings_; base::WeakPtr<DevToolsUIBindings> bindings_;
...@@ -239,13 +240,13 @@ ResponseWriter::ResponseWriter(base::WeakPtr<DevToolsUIBindings> bindings, ...@@ -239,13 +240,13 @@ ResponseWriter::ResponseWriter(base::WeakPtr<DevToolsUIBindings> bindings,
ResponseWriter::~ResponseWriter() { ResponseWriter::~ResponseWriter() {
} }
int ResponseWriter::Initialize(const net::CompletionCallback& callback) { int ResponseWriter::Initialize(net::CompletionOnceCallback callback) {
return net::OK; return net::OK;
} }
int ResponseWriter::Write(net::IOBuffer* buffer, int ResponseWriter::Write(net::IOBuffer* buffer,
int num_bytes, int num_bytes,
const net::CompletionCallback& callback) { net::CompletionOnceCallback callback) {
std::string chunk = std::string(buffer->data(), num_bytes); std::string chunk = std::string(buffer->data(), num_bytes);
bool encoded = false; bool encoded = false;
if (!base::IsStringUTF8(chunk)) { if (!base::IsStringUTF8(chunk)) {
...@@ -266,7 +267,7 @@ int ResponseWriter::Write(net::IOBuffer* buffer, ...@@ -266,7 +267,7 @@ int ResponseWriter::Write(net::IOBuffer* buffer,
} }
int ResponseWriter::Finish(int net_error, int ResponseWriter::Finish(int net_error,
const net::CompletionCallback& callback) { net::CompletionOnceCallback callback) {
return net::OK; return net::OK;
} }
......
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
#include "content/shell/browser/shell_browser_main_parts.h" #include "content/shell/browser/shell_browser_main_parts.h"
#include "content/shell/browser/shell_content_browser_client.h" #include "content/shell/browser/shell_content_browser_client.h"
#include "content/shell/browser/shell_devtools_manager_delegate.h" #include "content/shell/browser/shell_devtools_manager_delegate.h"
#include "net/base/completion_once_callback.h"
#include "net/base/io_buffer.h" #include "net/base/io_buffer.h"
#include "net/base/net_errors.h" #include "net/base/net_errors.h"
#include "net/http/http_response_headers.h" #include "net/http/http_response_headers.h"
...@@ -75,11 +76,11 @@ class ResponseWriter : public net::URLFetcherResponseWriter { ...@@ -75,11 +76,11 @@ class ResponseWriter : public net::URLFetcherResponseWriter {
~ResponseWriter() override; ~ResponseWriter() override;
// URLFetcherResponseWriter overrides: // URLFetcherResponseWriter overrides:
int Initialize(const net::CompletionCallback& callback) override; int Initialize(net::CompletionOnceCallback callback) override;
int Write(net::IOBuffer* buffer, int Write(net::IOBuffer* buffer,
int num_bytes, int num_bytes,
const net::CompletionCallback& callback) override; net::CompletionOnceCallback callback) override;
int Finish(int net_error, const net::CompletionCallback& callback) override; int Finish(int net_error, net::CompletionOnceCallback callback) override;
private: private:
base::WeakPtr<ShellDevToolsBindings> devtools_bindings_; base::WeakPtr<ShellDevToolsBindings> devtools_bindings_;
...@@ -95,13 +96,13 @@ ResponseWriter::ResponseWriter( ...@@ -95,13 +96,13 @@ ResponseWriter::ResponseWriter(
ResponseWriter::~ResponseWriter() {} ResponseWriter::~ResponseWriter() {}
int ResponseWriter::Initialize(const net::CompletionCallback& callback) { int ResponseWriter::Initialize(net::CompletionOnceCallback callback) {
return net::OK; return net::OK;
} }
int ResponseWriter::Write(net::IOBuffer* buffer, int ResponseWriter::Write(net::IOBuffer* buffer,
int num_bytes, int num_bytes,
const net::CompletionCallback& callback) { net::CompletionOnceCallback callback) {
std::string chunk = std::string(buffer->data(), num_bytes); std::string chunk = std::string(buffer->data(), num_bytes);
if (!base::IsStringUTF8(chunk)) if (!base::IsStringUTF8(chunk))
return num_bytes; return num_bytes;
...@@ -118,7 +119,7 @@ int ResponseWriter::Write(net::IOBuffer* buffer, ...@@ -118,7 +119,7 @@ int ResponseWriter::Write(net::IOBuffer* buffer,
} }
int ResponseWriter::Finish(int net_error, int ResponseWriter::Finish(int net_error,
const net::CompletionCallback& callback) { net::CompletionOnceCallback callback) {
return net::OK; return net::OK;
} }
......
...@@ -277,9 +277,9 @@ void ResponseWriter::DisownFile() { ...@@ -277,9 +277,9 @@ void ResponseWriter::DisownFile() {
file_writer_->DisownFile(); file_writer_->DisownFile();
} }
int ResponseWriter::Initialize(const net::CompletionCallback& callback) { int ResponseWriter::Initialize(net::CompletionOnceCallback callback) {
if (file_writer_) if (file_writer_)
return file_writer_->Initialize(callback); return file_writer_->Initialize(std::move(callback));
data_.clear(); data_.clear();
return net::OK; return net::OK;
...@@ -287,7 +287,7 @@ int ResponseWriter::Initialize(const net::CompletionCallback& callback) { ...@@ -287,7 +287,7 @@ int ResponseWriter::Initialize(const net::CompletionCallback& callback) {
int ResponseWriter::Write(net::IOBuffer* buffer, int ResponseWriter::Write(net::IOBuffer* buffer,
int num_bytes, int num_bytes,
const net::CompletionCallback& callback) { net::CompletionOnceCallback callback) {
if (!get_content_callback_.is_null()) { if (!get_content_callback_.is_null()) {
get_content_callback_.Run( get_content_callback_.Run(
HTTP_SUCCESS, std::make_unique<std::string>(buffer->data(), num_bytes)); HTTP_SUCCESS, std::make_unique<std::string>(buffer->data(), num_bytes));
...@@ -296,10 +296,11 @@ int ResponseWriter::Write(net::IOBuffer* buffer, ...@@ -296,10 +296,11 @@ int ResponseWriter::Write(net::IOBuffer* buffer,
if (file_writer_) { if (file_writer_) {
const int result = file_writer_->Write( const int result = file_writer_->Write(
buffer, num_bytes, buffer, num_bytes,
base::Bind(&ResponseWriter::DidWrite, weak_ptr_factory_.GetWeakPtr(), base::BindOnce(&ResponseWriter::DidWrite,
base::WrapRefCounted(buffer), callback)); weak_ptr_factory_.GetWeakPtr(),
base::WrapRefCounted(buffer), std::move(callback)));
if (result != net::ERR_IO_PENDING) if (result != net::ERR_IO_PENDING)
DidWrite(buffer, net::CompletionCallback(), result); DidWrite(buffer, net::CompletionOnceCallback(), result);
return result; return result;
} }
...@@ -308,15 +309,15 @@ int ResponseWriter::Write(net::IOBuffer* buffer, ...@@ -308,15 +309,15 @@ int ResponseWriter::Write(net::IOBuffer* buffer,
} }
int ResponseWriter::Finish(int net_error, int ResponseWriter::Finish(int net_error,
const net::CompletionCallback& callback) { net::CompletionOnceCallback callback) {
if (file_writer_) if (file_writer_)
return file_writer_->Finish(net_error, callback); return file_writer_->Finish(net_error, std::move(callback));
return net::OK; return net::OK;
} }
void ResponseWriter::DidWrite(scoped_refptr<net::IOBuffer> buffer, void ResponseWriter::DidWrite(scoped_refptr<net::IOBuffer> buffer,
const net::CompletionCallback& callback, net::CompletionOnceCallback callback,
int result) { int result) {
if (result > 0) { if (result > 0) {
// Even if file_writer_ is used, append the data to |data_|, so that it can // Even if file_writer_ is used, append the data to |data_|, so that it can
...@@ -330,7 +331,7 @@ void ResponseWriter::DidWrite(scoped_refptr<net::IOBuffer> buffer, ...@@ -330,7 +331,7 @@ void ResponseWriter::DidWrite(scoped_refptr<net::IOBuffer> buffer,
} }
if (!callback.is_null()) if (!callback.is_null())
callback.Run(result); std::move(callback).Run(result);
} }
//============================ UrlFetchRequestBase =========================== //============================ UrlFetchRequestBase ===========================
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#include "base/memory/weak_ptr.h" #include "base/memory/weak_ptr.h"
#include "base/threading/thread_checker.h" #include "base/threading/thread_checker.h"
#include "google_apis/drive/drive_api_error_codes.h" #include "google_apis/drive/drive_api_error_codes.h"
#include "net/base/completion_once_callback.h"
#include "net/url_request/url_fetcher.h" #include "net/url_request/url_fetcher.h"
#include "net/url_request/url_fetcher_delegate.h" #include "net/url_request/url_fetcher_delegate.h"
#include "net/url_request/url_fetcher_response_writer.h" #include "net/url_request/url_fetcher_response_writer.h"
...@@ -131,15 +132,15 @@ class ResponseWriter : public net::URLFetcherResponseWriter { ...@@ -131,15 +132,15 @@ class ResponseWriter : public net::URLFetcherResponseWriter {
void DisownFile(); void DisownFile();
// URLFetcherResponseWriter overrides: // URLFetcherResponseWriter overrides:
int Initialize(const net::CompletionCallback& callback) override; int Initialize(net::CompletionOnceCallback callback) override;
int Write(net::IOBuffer* buffer, int Write(net::IOBuffer* buffer,
int num_bytes, int num_bytes,
const net::CompletionCallback& callback) override; net::CompletionOnceCallback callback) override;
int Finish(int net_error, const net::CompletionCallback& callback) override; int Finish(int net_error, net::CompletionOnceCallback callback) override;
private: private:
void DidWrite(scoped_refptr<net::IOBuffer> buffer, void DidWrite(scoped_refptr<net::IOBuffer> buffer,
const net::CompletionCallback& callback, net::CompletionOnceCallback callback,
int result); int result);
const GetContentCallback get_content_callback_; const GetContentCallback get_content_callback_;
......
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
#include "net/url_request/url_fetcher_response_writer.h" #include "net/url_request/url_fetcher_response_writer.h"
#include <utility>
#include "base/callback_helpers.h" #include "base/callback_helpers.h"
#include "base/files/file_util.h" #include "base/files/file_util.h"
#include "base/location.h" #include "base/location.h"
...@@ -27,20 +29,20 @@ URLFetcherStringWriter::URLFetcherStringWriter() = default; ...@@ -27,20 +29,20 @@ URLFetcherStringWriter::URLFetcherStringWriter() = default;
URLFetcherStringWriter::~URLFetcherStringWriter() = default; URLFetcherStringWriter::~URLFetcherStringWriter() = default;
int URLFetcherStringWriter::Initialize(const CompletionCallback& callback) { int URLFetcherStringWriter::Initialize(CompletionOnceCallback callback) {
data_.clear(); data_.clear();
return OK; return OK;
} }
int URLFetcherStringWriter::Write(IOBuffer* buffer, int URLFetcherStringWriter::Write(IOBuffer* buffer,
int num_bytes, int num_bytes,
const CompletionCallback& callback) { CompletionOnceCallback callback) {
data_.append(buffer->data(), num_bytes); data_.append(buffer->data(), num_bytes);
return num_bytes; return num_bytes;
} }
int URLFetcherStringWriter::Finish(int net_error, int URLFetcherStringWriter::Finish(int net_error,
const CompletionCallback& callback) { CompletionOnceCallback callback) {
// Do nothing. // Do nothing.
return OK; return OK;
} }
...@@ -63,7 +65,7 @@ URLFetcherFileWriter::~URLFetcherFileWriter() { ...@@ -63,7 +65,7 @@ URLFetcherFileWriter::~URLFetcherFileWriter() {
CloseAndDeleteFile(); CloseAndDeleteFile();
} }
int URLFetcherFileWriter::Initialize(const CompletionCallback& callback) { int URLFetcherFileWriter::Initialize(CompletionOnceCallback callback) {
DCHECK(!callback_); DCHECK(!callback_);
file_stream_.reset(new FileStream(file_task_runner_)); file_stream_.reset(new FileStream(file_task_runner_));
...@@ -89,7 +91,7 @@ int URLFetcherFileWriter::Initialize(const CompletionCallback& callback) { ...@@ -89,7 +91,7 @@ int URLFetcherFileWriter::Initialize(const CompletionCallback& callback) {
} }
if (result == ERR_IO_PENDING) { if (result == ERR_IO_PENDING) {
callback_ = callback; callback_ = std::move(callback);
return result; return result;
} }
if (result < 0) if (result < 0)
...@@ -99,7 +101,7 @@ int URLFetcherFileWriter::Initialize(const CompletionCallback& callback) { ...@@ -99,7 +101,7 @@ int URLFetcherFileWriter::Initialize(const CompletionCallback& callback) {
int URLFetcherFileWriter::Write(IOBuffer* buffer, int URLFetcherFileWriter::Write(IOBuffer* buffer,
int num_bytes, int num_bytes,
const CompletionCallback& callback) { CompletionOnceCallback callback) {
DCHECK(file_stream_); DCHECK(file_stream_);
DCHECK(owns_file_); DCHECK(owns_file_);
DCHECK(!callback_); DCHECK(!callback_);
...@@ -108,7 +110,7 @@ int URLFetcherFileWriter::Write(IOBuffer* buffer, ...@@ -108,7 +110,7 @@ int URLFetcherFileWriter::Write(IOBuffer* buffer,
buffer, num_bytes, base::Bind(&URLFetcherFileWriter::OnIOCompleted, buffer, num_bytes, base::Bind(&URLFetcherFileWriter::OnIOCompleted,
weak_factory_.GetWeakPtr())); weak_factory_.GetWeakPtr()));
if (result == ERR_IO_PENDING) { if (result == ERR_IO_PENDING) {
callback_ = callback; callback_ = std::move(callback);
return result; return result;
} }
if (result < 0) if (result < 0)
...@@ -117,7 +119,7 @@ int URLFetcherFileWriter::Write(IOBuffer* buffer, ...@@ -117,7 +119,7 @@ int URLFetcherFileWriter::Write(IOBuffer* buffer,
} }
int URLFetcherFileWriter::Finish(int net_error, int URLFetcherFileWriter::Finish(int net_error,
const CompletionCallback& callback) { CompletionOnceCallback callback) {
DCHECK_NE(ERR_IO_PENDING, net_error); DCHECK_NE(ERR_IO_PENDING, net_error);
// If an error occurred, simply delete the file after any pending operation // If an error occurred, simply delete the file after any pending operation
...@@ -136,7 +138,7 @@ int URLFetcherFileWriter::Finish(int net_error, ...@@ -136,7 +138,7 @@ int URLFetcherFileWriter::Finish(int net_error,
int result = file_stream_->Close(base::Bind( int result = file_stream_->Close(base::Bind(
&URLFetcherFileWriter::CloseComplete, weak_factory_.GetWeakPtr())); &URLFetcherFileWriter::CloseComplete, weak_factory_.GetWeakPtr()));
if (result == ERR_IO_PENDING) { if (result == ERR_IO_PENDING) {
callback_ = callback; callback_ = std::move(callback);
return result; return result;
} }
file_stream_.reset(); file_stream_.reset();
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
#include "base/macros.h" #include "base/macros.h"
#include "base/memory/ref_counted.h" #include "base/memory/ref_counted.h"
#include "base/memory/weak_ptr.h" #include "base/memory/weak_ptr.h"
#include "net/base/completion_callback.h" #include "net/base/completion_once_callback.h"
#include "net/base/net_export.h" #include "net/base/net_export.h"
namespace base { namespace base {
...@@ -35,14 +35,14 @@ class NET_EXPORT URLFetcherResponseWriter { ...@@ -35,14 +35,14 @@ class NET_EXPORT URLFetcherResponseWriter {
// Initializes this instance. If ERR_IO_PENDING is returned, |callback| will // Initializes this instance. If ERR_IO_PENDING is returned, |callback| will
// be run later with the result. Calling this method again after a // be run later with the result. Calling this method again after a
// Initialize() success results in discarding already written data. // Initialize() success results in discarding already written data.
virtual int Initialize(const CompletionCallback& callback) = 0; virtual int Initialize(CompletionOnceCallback callback) = 0;
// Writes |num_bytes| bytes in |buffer|, and returns the number of bytes // Writes |num_bytes| bytes in |buffer|, and returns the number of bytes
// written or an error code. If ERR_IO_PENDING is returned, |callback| will be // written or an error code. If ERR_IO_PENDING is returned, |callback| will be
// run later with the result. // run later with the result.
virtual int Write(IOBuffer* buffer, virtual int Write(IOBuffer* buffer,
int num_bytes, int num_bytes,
const CompletionCallback& callback) = 0; CompletionOnceCallback callback) = 0;
// Finishes writing. If |net_error| is not OK, this method can be called // Finishes writing. If |net_error| is not OK, this method can be called
// in the middle of another operation (eg. Initialize() and Write()). On // in the middle of another operation (eg. Initialize() and Write()). On
...@@ -51,7 +51,7 @@ class NET_EXPORT URLFetcherResponseWriter { ...@@ -51,7 +51,7 @@ class NET_EXPORT URLFetcherResponseWriter {
// graceful shutdown and completion of the pending operation. After such a // graceful shutdown and completion of the pending operation. After such a
// failure, the URLFetcherResponseWriter may be reused. If ERR_IO_PENDING is // failure, the URLFetcherResponseWriter may be reused. If ERR_IO_PENDING is
// returned, |callback| will be run later with the result. // returned, |callback| will be run later with the result.
virtual int Finish(int net_error, const CompletionCallback& callback) = 0; virtual int Finish(int net_error, CompletionOnceCallback callback) = 0;
// Returns this instance's pointer as URLFetcherStringWriter when possible. // Returns this instance's pointer as URLFetcherStringWriter when possible.
virtual URLFetcherStringWriter* AsStringWriter(); virtual URLFetcherStringWriter* AsStringWriter();
...@@ -69,11 +69,11 @@ class NET_EXPORT URLFetcherStringWriter : public URLFetcherResponseWriter { ...@@ -69,11 +69,11 @@ class NET_EXPORT URLFetcherStringWriter : public URLFetcherResponseWriter {
const std::string& data() const { return data_; } const std::string& data() const { return data_; }
// URLFetcherResponseWriter overrides: // URLFetcherResponseWriter overrides:
int Initialize(const CompletionCallback& callback) override; int Initialize(CompletionOnceCallback callback) override;
int Write(IOBuffer* buffer, int Write(IOBuffer* buffer,
int num_bytes, int num_bytes,
const CompletionCallback& callback) override; CompletionOnceCallback callback) override;
int Finish(int net_error, const CompletionCallback& callback) override; int Finish(int net_error, CompletionOnceCallback callback) override;
URLFetcherStringWriter* AsStringWriter() override; URLFetcherStringWriter* AsStringWriter() override;
private: private:
...@@ -95,11 +95,11 @@ class NET_EXPORT URLFetcherFileWriter : public URLFetcherResponseWriter { ...@@ -95,11 +95,11 @@ class NET_EXPORT URLFetcherFileWriter : public URLFetcherResponseWriter {
const base::FilePath& file_path() const { return file_path_; } const base::FilePath& file_path() const { return file_path_; }
// URLFetcherResponseWriter overrides: // URLFetcherResponseWriter overrides:
int Initialize(const CompletionCallback& callback) override; int Initialize(CompletionOnceCallback callback) override;
int Write(IOBuffer* buffer, int Write(IOBuffer* buffer,
int num_bytes, int num_bytes,
const CompletionCallback& callback) override; CompletionOnceCallback callback) override;
int Finish(int net_error, const CompletionCallback& callback) override; int Finish(int net_error, CompletionOnceCallback callback) override;
URLFetcherFileWriter* AsFileWriter() override; URLFetcherFileWriter* AsFileWriter() override;
// Drops ownership of the file at |file_path_|. // Drops ownership of the file at |file_path_|.
...@@ -132,7 +132,7 @@ class NET_EXPORT URLFetcherFileWriter : public URLFetcherResponseWriter { ...@@ -132,7 +132,7 @@ class NET_EXPORT URLFetcherFileWriter : public URLFetcherResponseWriter {
std::unique_ptr<FileStream> file_stream_; std::unique_ptr<FileStream> file_stream_;
CompletionCallback callback_; CompletionOnceCallback callback_;
base::WeakPtrFactory<URLFetcherFileWriter> weak_factory_; base::WeakPtrFactory<URLFetcherFileWriter> weak_factory_;
......
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