| Index: mojo/public/cpp/bindings/lib/control_message_proxy.cc
|
| diff --git a/mojo/public/cpp/bindings/lib/control_message_proxy.cc b/mojo/public/cpp/bindings/lib/control_message_proxy.cc
|
| index d628c9814d0f142ad946e41ba48a2f8b622bc17f..1561dfb9a7429631b23844559f81a32a111a73c8 100644
|
| --- a/mojo/public/cpp/bindings/lib/control_message_proxy.cc
|
| +++ b/mojo/public/cpp/bindings/lib/control_message_proxy.cc
|
| @@ -15,7 +15,6 @@
|
| #include "mojo/public/cpp/bindings/lib/message_builder.h"
|
| #include "mojo/public/cpp/bindings/lib/serialization.h"
|
| #include "mojo/public/cpp/bindings/lib/validation_util.h"
|
| -#include "mojo/public/cpp/bindings/message.h"
|
| #include "mojo/public/interfaces/bindings/interface_control_messages.mojom.h"
|
|
|
| namespace mojo {
|
| @@ -72,39 +71,48 @@ bool RunResponseForwardToCallback::Accept(Message* message) {
|
|
|
| void SendRunMessage(MessageReceiverWithResponder* receiver,
|
| interface_control::RunInputPtr input_ptr,
|
| - const RunCallback& callback,
|
| - SerializationContext* context) {
|
| + const RunCallback& callback) {
|
| + SerializationContext context;
|
| +
|
| auto params_ptr = interface_control::RunMessageParams::New();
|
| params_ptr->input = std::move(input_ptr);
|
| size_t size = PrepareToSerialize<interface_control::RunMessageParamsDataView>(
|
| - params_ptr, context);
|
| + params_ptr, &context);
|
| RequestMessageBuilder builder(interface_control::kRunMessageId, size);
|
|
|
| interface_control::internal::RunMessageParams_Data* params = nullptr;
|
| Serialize<interface_control::RunMessageParamsDataView>(
|
| - params_ptr, builder.buffer(), ¶ms, context);
|
| + params_ptr, builder.buffer(), ¶ms, &context);
|
| MessageReceiver* responder = new RunResponseForwardToCallback(callback);
|
| if (!receiver->AcceptWithResponder(builder.message(), responder))
|
| delete responder;
|
| }
|
|
|
| -void SendRunOrClosePipeMessage(
|
| - MessageReceiverWithResponder* receiver,
|
| - interface_control::RunOrClosePipeInputPtr input_ptr,
|
| - SerializationContext* context) {
|
| +Message ConstructRunOrClosePipeMessage(
|
| + interface_control::RunOrClosePipeInputPtr input_ptr) {
|
| + SerializationContext context;
|
| +
|
| auto params_ptr = interface_control::RunOrClosePipeMessageParams::New();
|
| params_ptr->input = std::move(input_ptr);
|
|
|
| size_t size = PrepareToSerialize<
|
| interface_control::RunOrClosePipeMessageParamsDataView>(params_ptr,
|
| - context);
|
| + &context);
|
| MessageBuilder builder(interface_control::kRunOrClosePipeMessageId, size);
|
|
|
| interface_control::internal::RunOrClosePipeMessageParams_Data* params =
|
| nullptr;
|
| Serialize<interface_control::RunOrClosePipeMessageParamsDataView>(
|
| - params_ptr, builder.buffer(), ¶ms, context);
|
| - bool ok = receiver->Accept(builder.message());
|
| + params_ptr, builder.buffer(), ¶ms, &context);
|
| + return std::move(*builder.message());
|
| +}
|
| +
|
| +void SendRunOrClosePipeMessage(
|
| + MessageReceiverWithResponder* receiver,
|
| + interface_control::RunOrClosePipeInputPtr input_ptr) {
|
| + Message message(ConstructRunOrClosePipeMessage(std::move(input_ptr)));
|
| +
|
| + bool ok = receiver->Accept(&message);
|
| ALLOW_UNUSED_LOCAL(ok);
|
| }
|
|
|
| @@ -135,7 +143,7 @@ void ControlMessageProxy::QueryVersion(
|
| auto input_ptr = interface_control::RunInput::New();
|
| input_ptr->set_query_version(interface_control::QueryVersion::New());
|
| SendRunMessage(receiver_, std::move(input_ptr),
|
| - base::Bind(&RunVersionCallback, callback), &context_);
|
| + base::Bind(&RunVersionCallback, callback));
|
| }
|
|
|
| void ControlMessageProxy::RequireVersion(uint32_t version) {
|
| @@ -143,7 +151,7 @@ void ControlMessageProxy::RequireVersion(uint32_t version) {
|
| require_version->version = version;
|
| auto input_ptr = interface_control::RunOrClosePipeInput::New();
|
| input_ptr->set_require_version(std::move(require_version));
|
| - SendRunOrClosePipeMessage(receiver_, std::move(input_ptr), &context_);
|
| + SendRunOrClosePipeMessage(receiver_, std::move(input_ptr));
|
| }
|
|
|
| void ControlMessageProxy::FlushForTesting() {
|
| @@ -158,19 +166,16 @@ void ControlMessageProxy::FlushForTesting() {
|
| receiver_, std::move(input_ptr),
|
| base::Bind(&RunClosure,
|
| base::Bind(&ControlMessageProxy::RunFlushForTestingClosure,
|
| - base::Unretained(this))),
|
| - &context_);
|
| + base::Unretained(this))));
|
| run_loop.Run();
|
| }
|
|
|
| void ControlMessageProxy::SendDisconnectReason(uint32_t custom_reason,
|
| const std::string& description) {
|
| - auto send_disconnect_reason = interface_control::SendDisconnectReason::New();
|
| - send_disconnect_reason->custom_reason = custom_reason;
|
| - send_disconnect_reason->description = description;
|
| - auto input_ptr = interface_control::RunOrClosePipeInput::New();
|
| - input_ptr->set_send_disconnect_reason(std::move(send_disconnect_reason));
|
| - SendRunOrClosePipeMessage(receiver_, std::move(input_ptr), &context_);
|
| + Message message =
|
| + ConstructDisconnectReasonMessage(custom_reason, description);
|
| + bool ok = receiver_->Accept(&message);
|
| + ALLOW_UNUSED_LOCAL(ok);
|
| }
|
|
|
| void ControlMessageProxy::RunFlushForTestingClosure() {
|
| @@ -184,5 +189,17 @@ void ControlMessageProxy::OnConnectionError() {
|
| RunFlushForTestingClosure();
|
| }
|
|
|
| +// static
|
| +Message ControlMessageProxy::ConstructDisconnectReasonMessage(
|
| + uint32_t custom_reason,
|
| + const std::string& description) {
|
| + auto send_disconnect_reason = interface_control::SendDisconnectReason::New();
|
| + send_disconnect_reason->custom_reason = custom_reason;
|
| + send_disconnect_reason->description = description;
|
| + auto input_ptr = interface_control::RunOrClosePipeInput::New();
|
| + input_ptr->set_send_disconnect_reason(std::move(send_disconnect_reason));
|
| + return ConstructRunOrClosePipeMessage(std::move(input_ptr));
|
| +}
|
| +
|
| } // namespace internal
|
| } // namespace mojo
|
|
|