Convert DataPipeGetterPtr and DataPipeGetterRequest to new Mojo types

https://chromium-review.googlesource.com/c/chromium/src/+/1787760
https://chromium-review.googlesource.com/c/chromium/src/+/1787659
This commit is contained in:
deepak1556
2019-09-09 17:31:18 -07:00
parent ab2f5ac40b
commit 8611783898
4 changed files with 18 additions and 12 deletions

View File

@@ -33,7 +33,7 @@ KeyWeakMap<std::string> g_weak_map;
class DataPipeReader {
public:
DataPipeReader(util::Promise<v8::Local<v8::Value>> promise,
network::mojom::DataPipeGetterPtr data_pipe_getter)
mojo::Remote<network::mojom::DataPipeGetter> data_pipe_getter)
: promise_(std::move(promise)),
data_pipe_getter_(std::move(data_pipe_getter)),
handle_watcher_(FROM_HERE,
@@ -109,7 +109,7 @@ class DataPipeReader {
// Destroy data pipe.
handle_watcher_.Cancel();
data_pipe_.reset();
data_pipe_getter_ = nullptr;
data_pipe_getter_.reset();
}
static void FreeBuffer(char* data, void* self) {
@@ -118,7 +118,7 @@ class DataPipeReader {
util::Promise<v8::Local<v8::Value>> promise_;
network::mojom::DataPipeGetterPtr data_pipe_getter_;
mojo::Remote<network::mojom::DataPipeGetter> data_pipe_getter_;
mojo::ScopedDataPipeConsumerHandle data_pipe_;
mojo::SimpleWatcher handle_watcher_;
@@ -141,8 +141,9 @@ class DataPipeReader {
gin::WrapperInfo DataPipeHolder::kWrapperInfo = {gin::kEmbedderNativeGin};
DataPipeHolder::DataPipeHolder(const network::DataElement& element)
: id_(base::NumberToString(++g_next_id)),
data_pipe_(element.CloneDataPipeGetter()) {}
: id_(base::NumberToString(++g_next_id)) {
data_pipe_.Bind(element.CloneDataPipeGetter());
}
DataPipeHolder::~DataPipeHolder() = default;

View File

@@ -9,6 +9,7 @@
#include "gin/handle.h"
#include "gin/wrappable.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "services/network/public/cpp/data_element.h"
#include "services/network/public/mojom/data_pipe_getter.mojom.h"
@@ -41,7 +42,7 @@ class DataPipeHolder : public gin::Wrappable<DataPipeHolder> {
~DataPipeHolder() override;
std::string id_;
network::mojom::DataPipeGetterPtr data_pipe_;
mojo::Remote<network::mojom::DataPipeGetter> data_pipe_;
DISALLOW_COPY_AND_ASSIGN(DataPipeHolder);
};

View File

@@ -31,6 +31,7 @@
#include "content/public/browser/network_service_instance.h"
#include "content/public/browser/storage_partition.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/self_owned_receiver.h"
#include "native_mate/dictionary.h"
#include "native_mate/object_template_builder.h"
#include "net/base/completion_repeating_callback.h"

View File

@@ -6,6 +6,7 @@
#include <utility>
#include "mojo/public/cpp/bindings/receiver_set.h"
#include "mojo/public/cpp/system/string_data_source.h"
#include "native_mate/dictionary.h"
#include "native_mate/object_template_builder.h"
@@ -112,9 +113,10 @@ class MultipartDataPipeGetter : public UploadDataPipeGetter,
~MultipartDataPipeGetter() override = default;
void AttachToRequestBody(network::ResourceRequestBody* body) override {
network::mojom::DataPipeGetterPtr data_pipe_getter;
binding_set_.AddBinding(this, mojo::MakeRequest(&data_pipe_getter));
body->AppendDataPipe(std::move(data_pipe_getter));
mojo::PendingRemote<network::mojom::DataPipeGetter> data_pipe_getter_remote;
receivers_.Add(this,
data_pipe_getter_remote.InitWithNewPipeAndPassReceiver());
body->AppendDataPipe(std::move(data_pipe_getter_remote));
}
private:
@@ -125,11 +127,12 @@ class MultipartDataPipeGetter : public UploadDataPipeGetter,
SetPipe(std::move(pipe));
}
void Clone(network::mojom::DataPipeGetterRequest request) override {
binding_set_.AddBinding(this, std::move(request));
void Clone(
mojo::PendingReceiver<network::mojom::DataPipeGetter> receiver) override {
receivers_.Add(this, std::move(receiver));
}
mojo::BindingSet<network::mojom::DataPipeGetter> binding_set_;
mojo::ReceiverSet<network::mojom::DataPipeGetter> receivers_;
};
// Streaming chunked data to NetworkService.