Commit f8af806e authored by sammc's avatar sammc Committed by Commit bot

Use unions for interface control messages.

Interface control messages were added before union support was ready so
the structs used for messages manually imitate unions. Now that union
support is ready, this workaround is no longer necessary and the structs
used for interface control messages can contain unions of the possible
message types.

Review-Url: https://codereview.chromium.org/2277853003
Cr-Commit-Position: refs/heads/master@{#414775}
parent 02b1a521
...@@ -18,8 +18,8 @@ namespace internal { ...@@ -18,8 +18,8 @@ namespace internal {
// static // static
bool ControlMessageHandler::IsControlMessage(const Message* message) { bool ControlMessageHandler::IsControlMessage(const Message* message) {
return message->header()->name == kRunMessageId || return message->header()->name == interface_control::kRunMessageId ||
message->header()->name == kRunOrClosePipeMessageId; message->header()->name == interface_control::kRunOrClosePipeMessageId;
} }
ControlMessageHandler::ControlMessageHandler(uint32_t interface_version) ControlMessageHandler::ControlMessageHandler(uint32_t interface_version)
...@@ -30,7 +30,7 @@ ControlMessageHandler::~ControlMessageHandler() { ...@@ -30,7 +30,7 @@ ControlMessageHandler::~ControlMessageHandler() {
} }
bool ControlMessageHandler::Accept(Message* message) { bool ControlMessageHandler::Accept(Message* message) {
if (message->header()->name == kRunOrClosePipeMessageId) if (message->header()->name == interface_control::kRunOrClosePipeMessageId)
return RunOrClosePipe(message); return RunOrClosePipe(message);
NOTREACHED(); NOTREACHED();
...@@ -40,7 +40,7 @@ bool ControlMessageHandler::Accept(Message* message) { ...@@ -40,7 +40,7 @@ bool ControlMessageHandler::Accept(Message* message) {
bool ControlMessageHandler::AcceptWithResponder( bool ControlMessageHandler::AcceptWithResponder(
Message* message, Message* message,
MessageReceiverWithStatus* responder) { MessageReceiverWithStatus* responder) {
if (message->header()->name == kRunMessageId) if (message->header()->name == interface_control::kRunMessageId)
return Run(message, responder); return Run(message, responder);
NOTREACHED(); NOTREACHED();
...@@ -49,19 +49,33 @@ bool ControlMessageHandler::AcceptWithResponder( ...@@ -49,19 +49,33 @@ bool ControlMessageHandler::AcceptWithResponder(
bool ControlMessageHandler::Run(Message* message, bool ControlMessageHandler::Run(Message* message,
MessageReceiverWithStatus* responder) { MessageReceiverWithStatus* responder) {
RunResponseMessageParamsPtr response_params_ptr( interface_control::internal::RunMessageParams_Data* params =
RunResponseMessageParams::New()); reinterpret_cast<interface_control::internal::RunMessageParams_Data*>(
response_params_ptr->reserved0 = 16u; message->mutable_payload());
response_params_ptr->reserved1 = 0u; interface_control::RunMessageParamsPtr params_ptr;
response_params_ptr->query_version_result = QueryVersionResult::New(); Deserialize<interface_control::RunMessageParamsDataView>(params, &params_ptr,
response_params_ptr->query_version_result->version = interface_version_; &context_);
auto& input = *params_ptr->input;
size_t size = PrepareToSerialize<RunResponseMessageParamsDataView>( interface_control::RunOutputPtr output = interface_control::RunOutput::New();
response_params_ptr, &context_); if (input.is_query_version()) {
ResponseMessageBuilder builder(kRunMessageId, size, message->request_id()); output->set_query_version_result(
interface_control::QueryVersionResult::New());
RunResponseMessageParams_Data* response_params = nullptr; output->get_query_version_result()->version = interface_version_;
Serialize<RunResponseMessageParamsDataView>( } else {
output.reset();
}
auto response_params_ptr = interface_control::RunResponseMessageParams::New();
response_params_ptr->output = std::move(output);
size_t size =
PrepareToSerialize<interface_control::RunResponseMessageParamsDataView>(
response_params_ptr, &context_);
ResponseMessageBuilder builder(interface_control::kRunMessageId, size,
message->request_id());
interface_control::internal::RunResponseMessageParams_Data* response_params =
nullptr;
Serialize<interface_control::RunResponseMessageParamsDataView>(
response_params_ptr, builder.buffer(), &response_params, &context_); response_params_ptr, builder.buffer(), &response_params, &context_);
bool ok = responder->Accept(builder.message()); bool ok = responder->Accept(builder.message());
ALLOW_UNUSED_LOCAL(ok); ALLOW_UNUSED_LOCAL(ok);
...@@ -71,14 +85,18 @@ bool ControlMessageHandler::Run(Message* message, ...@@ -71,14 +85,18 @@ bool ControlMessageHandler::Run(Message* message,
} }
bool ControlMessageHandler::RunOrClosePipe(Message* message) { bool ControlMessageHandler::RunOrClosePipe(Message* message) {
RunOrClosePipeMessageParams_Data* params = interface_control::internal::RunOrClosePipeMessageParams_Data* params =
reinterpret_cast<RunOrClosePipeMessageParams_Data*>( reinterpret_cast<
interface_control::internal::RunOrClosePipeMessageParams_Data*>(
message->mutable_payload()); message->mutable_payload());
RunOrClosePipeMessageParamsPtr params_ptr; interface_control::RunOrClosePipeMessageParamsPtr params_ptr;
Deserialize<RunOrClosePipeMessageParamsDataView>(params, &params_ptr, Deserialize<interface_control::RunOrClosePipeMessageParamsDataView>(
&context_); params, &params_ptr, &context_);
auto& input = *params_ptr->input;
if (input.is_require_version())
return interface_version_ >= input.get_require_version()->version;
return interface_version_ >= params_ptr->require_version->version; return false;
} }
} // namespace internal } // namespace internal
......
...@@ -20,11 +20,12 @@ namespace internal { ...@@ -20,11 +20,12 @@ namespace internal {
namespace { namespace {
using RunCallback = base::Callback<void(QueryVersionResultPtr)>; using RunCallback =
base::Callback<void(interface_control::RunResponseMessageParamsPtr)>;
class RunResponseForwardToCallback : public MessageReceiver { class RunResponseForwardToCallback : public MessageReceiver {
public: public:
RunResponseForwardToCallback(const RunCallback& callback) explicit RunResponseForwardToCallback(const RunCallback& callback)
: callback_(callback) {} : callback_(callback) {}
bool Accept(Message* message) override; bool Accept(Message* message) override;
...@@ -34,60 +35,64 @@ class RunResponseForwardToCallback : public MessageReceiver { ...@@ -34,60 +35,64 @@ class RunResponseForwardToCallback : public MessageReceiver {
}; };
bool RunResponseForwardToCallback::Accept(Message* message) { bool RunResponseForwardToCallback::Accept(Message* message) {
RunResponseMessageParams_Data* params = interface_control::internal::RunResponseMessageParams_Data* params =
reinterpret_cast<RunResponseMessageParams_Data*>( reinterpret_cast<
interface_control::internal::RunResponseMessageParams_Data*>(
message->mutable_payload()); message->mutable_payload());
RunResponseMessageParamsPtr params_ptr; interface_control::RunResponseMessageParamsPtr params_ptr;
SerializationContext context; SerializationContext context;
Deserialize<RunResponseMessageParamsDataView>(params, &params_ptr, &context); Deserialize<interface_control::RunResponseMessageParamsDataView>(
params, &params_ptr, &context);
callback_.Run(std::move(params_ptr->query_version_result)); callback_.Run(std::move(params_ptr));
return true; return true;
} }
void SendRunMessage(MessageReceiverWithResponder* receiver, void SendRunMessage(MessageReceiverWithResponder* receiver,
QueryVersionPtr query_version, interface_control::RunInputPtr input_ptr,
const RunCallback& callback, const RunCallback& callback,
SerializationContext* context) { SerializationContext* context) {
RunMessageParamsPtr params_ptr(RunMessageParams::New()); auto params_ptr = interface_control::RunMessageParams::New();
params_ptr->reserved0 = 16u; params_ptr->input = std::move(input_ptr);
params_ptr->reserved1 = 0u; size_t size = PrepareToSerialize<interface_control::RunMessageParamsDataView>(
params_ptr->query_version = std::move(query_version); params_ptr, context);
RequestMessageBuilder builder(interface_control::kRunMessageId, size);
size_t size =
PrepareToSerialize<RunMessageParamsDataView>(params_ptr, context); interface_control::internal::RunMessageParams_Data* params = nullptr;
RequestMessageBuilder builder(kRunMessageId, size); Serialize<interface_control::RunMessageParamsDataView>(
params_ptr, builder.buffer(), &params, context);
RunMessageParams_Data* params = nullptr;
Serialize<RunMessageParamsDataView>(params_ptr, builder.buffer(), &params,
context);
MessageReceiver* responder = new RunResponseForwardToCallback(callback); MessageReceiver* responder = new RunResponseForwardToCallback(callback);
if (!receiver->AcceptWithResponder(builder.message(), responder)) if (!receiver->AcceptWithResponder(builder.message(), responder))
delete responder; delete responder;
} }
void SendRunOrClosePipeMessage(MessageReceiverWithResponder* receiver, void SendRunOrClosePipeMessage(
RequireVersionPtr require_version, MessageReceiverWithResponder* receiver,
SerializationContext* context) { interface_control::RunOrClosePipeInputPtr input_ptr,
RunOrClosePipeMessageParamsPtr params_ptr(RunOrClosePipeMessageParams::New()); SerializationContext* context) {
params_ptr->reserved0 = 16u; auto params_ptr = interface_control::RunOrClosePipeMessageParams::New();
params_ptr->reserved1 = 0u; params_ptr->input = std::move(input_ptr);
params_ptr->require_version = std::move(require_version);
size_t size = PrepareToSerialize<
size_t size = PrepareToSerialize<RunOrClosePipeMessageParamsDataView>( interface_control::RunOrClosePipeMessageParamsDataView>(params_ptr,
params_ptr, context); context);
MessageBuilder builder(kRunOrClosePipeMessageId, size); MessageBuilder builder(interface_control::kRunOrClosePipeMessageId, size);
RunOrClosePipeMessageParams_Data* params = nullptr; interface_control::internal::RunOrClosePipeMessageParams_Data* params =
Serialize<RunOrClosePipeMessageParamsDataView>(params_ptr, builder.buffer(), nullptr;
&params, context); Serialize<interface_control::RunOrClosePipeMessageParamsDataView>(
params_ptr, builder.buffer(), &params, context);
bool ok = receiver->Accept(builder.message()); bool ok = receiver->Accept(builder.message());
ALLOW_UNUSED_LOCAL(ok); ALLOW_UNUSED_LOCAL(ok);
} }
void RunVersionCallback(const base::Callback<void(uint32_t)>& callback, void RunVersionCallback(
QueryVersionResultPtr query_version_result) { const base::Callback<void(uint32_t)>& callback,
callback.Run(query_version_result->version); interface_control::RunResponseMessageParamsPtr run_response) {
uint32_t version = 0u;
if (run_response->output && run_response->output->is_query_version_result())
version = run_response->output->get_query_version_result()->version;
callback.Run(version);
} }
} // namespace } // namespace
...@@ -98,14 +103,18 @@ ControlMessageProxy::ControlMessageProxy(MessageReceiverWithResponder* receiver) ...@@ -98,14 +103,18 @@ ControlMessageProxy::ControlMessageProxy(MessageReceiverWithResponder* receiver)
void ControlMessageProxy::QueryVersion( void ControlMessageProxy::QueryVersion(
const base::Callback<void(uint32_t)>& callback) { const base::Callback<void(uint32_t)>& callback) {
SendRunMessage(receiver_, QueryVersion::New(), 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), &context_);
} }
void ControlMessageProxy::RequireVersion(uint32_t version) { void ControlMessageProxy::RequireVersion(uint32_t version) {
RequireVersionPtr require_version(RequireVersion::New()); auto require_version = interface_control::RequireVersion::New();
require_version->version = version; require_version->version = version;
SendRunOrClosePipeMessage(receiver_, std::move(require_version), &context_); auto input_ptr = interface_control::RunOrClosePipeInput::New();
input_ptr->set_require_version(std::move(require_version));
SendRunOrClosePipeMessage(receiver_, std::move(input_ptr), &context_);
} }
} // namespace internal } // namespace internal
......
...@@ -103,16 +103,18 @@ bool ValidateMessageIsResponse(const Message* message, ...@@ -103,16 +103,18 @@ bool ValidateMessageIsResponse(const Message* message,
bool ValidateControlRequest(const Message* message, bool ValidateControlRequest(const Message* message,
ValidationContext* validation_context) { ValidationContext* validation_context) {
switch (message->header()->name) { switch (message->header()->name) {
case kRunMessageId: case interface_control::kRunMessageId:
return ValidateMessageIsRequestExpectingResponse(message, return ValidateMessageIsRequestExpectingResponse(message,
validation_context) && validation_context) &&
ValidateMessagePayload<RunMessageParams_Data>(message, ValidateMessagePayload<
validation_context); interface_control::internal::RunMessageParams_Data>(
case kRunOrClosePipeMessageId: message, validation_context);
case interface_control::kRunOrClosePipeMessageId:
return ValidateMessageIsRequestWithoutResponse(message, return ValidateMessageIsRequestWithoutResponse(message,
validation_context) && validation_context) &&
ValidateMessagePayload<RunOrClosePipeMessageParams_Data>( ValidateMessagePayload<
message, validation_context); interface_control::internal::RunOrClosePipeMessageParams_Data>(
message, validation_context);
} }
return false; return false;
} }
...@@ -122,8 +124,9 @@ bool ValidateControlResponse(const Message* message, ...@@ -122,8 +124,9 @@ bool ValidateControlResponse(const Message* message,
if (!ValidateMessageIsResponse(message, validation_context)) if (!ValidateMessageIsResponse(message, validation_context))
return false; return false;
switch (message->header()->name) { switch (message->header()->name) {
case kRunMessageId: case interface_control::kRunMessageId:
return ValidateMessagePayload<RunResponseMessageParams_Data>( return ValidateMessagePayload<
interface_control::internal::RunResponseMessageParams_Data>(
message, validation_context); message, validation_context);
} }
return false; return false;
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
[JavaPackage="org.chromium.mojo.bindings"] [JavaPackage="org.chromium.mojo.bindings.interfacecontrol"]
module mojo; module mojo.interface_control;
// For each user-defined interface, some control functions are provided at the // For each user-defined interface, some control functions are provided at the
// same end of the message pipe as the user-defined interface, providing // same end of the message pipe as the user-defined interface, providing
...@@ -15,38 +15,20 @@ module mojo; ...@@ -15,38 +15,20 @@ module mojo;
// This control function runs the input command. If the command is not // This control function runs the input command. If the command is not
// supported, |output| is set to null; otherwise |output| stores the result, // supported, |output| is set to null; otherwise |output| stores the result,
// whose type depends on the input. // whose type depends on the input.
//
// TODO(yzshen): Once union support is ready, switch the following definition
// to:
// struct RunMessageParams {
// RunInput input;
// };
// union RunInput {
// QueryVersion query_version;
// };
//
// struct RunResponseMessageParams {
// RunOutput? output;
// };
// union RunOutput {
// QueryVersionResult query_version_result;
// };
const uint32 kRunMessageId = 0xFFFFFFFF; const uint32 kRunMessageId = 0xFFFFFFFF;
struct RunMessageParams { struct RunMessageParams {
// The reserved fields make the layout compatible with the RunInput union RunInput input;
// described above. };
uint32 reserved0; // Must be set to 16. union RunInput {
uint32 reserved1; // Must be set to 0;
QueryVersion query_version; QueryVersion query_version;
}; };
struct RunResponseMessageParams { struct RunResponseMessageParams {
// The reserved fields make the layout compatible with the RunOutput union RunOutput? output;
// described above. };
uint32 reserved0; // Must be set to 16. union RunOutput {
uint32 reserved1; // Must be set to 0.
QueryVersionResult query_version_result; QueryVersionResult query_version_result;
}; };
...@@ -62,23 +44,13 @@ struct QueryVersionResult { ...@@ -62,23 +44,13 @@ struct QueryVersionResult {
// //
// This control function runs the input command. If the operation fails or the // This control function runs the input command. If the operation fails or the
// command is not supported, the message pipe is closed. // command is not supported, the message pipe is closed.
//
// TODO(yzshen): Once union support is ready, switch the following definition
// to:
// struct RunOrClosePipeMessageParams {
// RunOrClosePipeInput input;
// };
// union RunOrClosePipeInput {
// RequireVersion require_version;
// };
const uint32 kRunOrClosePipeMessageId = 0xFFFFFFFE; const uint32 kRunOrClosePipeMessageId = 0xFFFFFFFE;
struct RunOrClosePipeMessageParams { struct RunOrClosePipeMessageParams {
// The reserved fields make the layout compatible with the RunOrClosePipeInput RunOrClosePipeInput input;
// union described above. };
uint32 reserved0; // Must be set to 16. union RunOrClosePipeInput {
uint32 reserved1; // Must be set to 0.
RequireVersion require_version; RequireVersion require_version;
}; };
......
...@@ -6,6 +6,14 @@ package org.chromium.mojo.bindings; ...@@ -6,6 +6,14 @@ package org.chromium.mojo.bindings;
import org.chromium.mojo.bindings.Callbacks.Callback1; import org.chromium.mojo.bindings.Callbacks.Callback1;
import org.chromium.mojo.bindings.Interface.AbstractProxy.HandlerImpl; import org.chromium.mojo.bindings.Interface.AbstractProxy.HandlerImpl;
import org.chromium.mojo.bindings.interfacecontrol.QueryVersion;
import org.chromium.mojo.bindings.interfacecontrol.RequireVersion;
import org.chromium.mojo.bindings.interfacecontrol.RunInput;
import org.chromium.mojo.bindings.interfacecontrol.RunMessageParams;
import org.chromium.mojo.bindings.interfacecontrol.RunOrClosePipeInput;
import org.chromium.mojo.bindings.interfacecontrol.RunOrClosePipeMessageParams;
import org.chromium.mojo.bindings.interfacecontrol.RunOutput;
import org.chromium.mojo.bindings.interfacecontrol.RunResponseMessageParams;
import org.chromium.mojo.system.Core; import org.chromium.mojo.system.Core;
import org.chromium.mojo.system.MessagePipeHandle; import org.chromium.mojo.system.MessagePipeHandle;
import org.chromium.mojo.system.MojoException; import org.chromium.mojo.system.MojoException;
...@@ -186,15 +194,18 @@ public interface Interface extends ConnectionErrorHandler, Closeable { ...@@ -186,15 +194,18 @@ public interface Interface extends ConnectionErrorHandler, Closeable {
@Override @Override
public void queryVersion(final Callback1<Integer> callback) { public void queryVersion(final Callback1<Integer> callback) {
RunMessageParams message = new RunMessageParams(); RunMessageParams message = new RunMessageParams();
message.reserved0 = 16; message.input = new RunInput();
message.reserved1 = 0; message.input.setQueryVersion(new QueryVersion());
message.queryVersion = new QueryVersion();
InterfaceControlMessagesHelper.sendRunMessage(getCore(), mMessageReceiver, message, InterfaceControlMessagesHelper.sendRunMessage(getCore(), mMessageReceiver, message,
new Callback1<RunResponseMessageParams>() { new Callback1<RunResponseMessageParams>() {
@Override @Override
public void call(RunResponseMessageParams response) { public void call(RunResponseMessageParams response) {
mVersion = response.queryVersionResult.version; if (response.output != null
&& response.output.which()
== RunOutput.Tag.QueryVersionResult) {
mVersion = response.output.getQueryVersionResult().version;
}
callback.call(mVersion); callback.call(mVersion);
} }
}); });
...@@ -210,10 +221,9 @@ public interface Interface extends ConnectionErrorHandler, Closeable { ...@@ -210,10 +221,9 @@ public interface Interface extends ConnectionErrorHandler, Closeable {
} }
mVersion = version; mVersion = version;
RunOrClosePipeMessageParams message = new RunOrClosePipeMessageParams(); RunOrClosePipeMessageParams message = new RunOrClosePipeMessageParams();
message.reserved0 = 16; message.input = new RunOrClosePipeInput();
message.reserved1 = 0; message.input.setRequireVersion(new RequireVersion());
message.requireVersion = new RequireVersion(); message.input.getRequireVersion().version = version;
message.requireVersion.version = version;
InterfaceControlMessagesHelper.sendRunOrClosePipeMessage( InterfaceControlMessagesHelper.sendRunOrClosePipeMessage(
getCore(), mMessageReceiver, message); getCore(), mMessageReceiver, message);
} }
......
...@@ -7,6 +7,14 @@ package org.chromium.mojo.bindings; ...@@ -7,6 +7,14 @@ package org.chromium.mojo.bindings;
import org.chromium.mojo.bindings.Callbacks.Callback1; import org.chromium.mojo.bindings.Callbacks.Callback1;
import org.chromium.mojo.bindings.Interface.Manager; import org.chromium.mojo.bindings.Interface.Manager;
import org.chromium.mojo.bindings.Interface.Proxy; import org.chromium.mojo.bindings.Interface.Proxy;
import org.chromium.mojo.bindings.interfacecontrol.InterfaceControlMessagesConstants;
import org.chromium.mojo.bindings.interfacecontrol.QueryVersionResult;
import org.chromium.mojo.bindings.interfacecontrol.RunInput;
import org.chromium.mojo.bindings.interfacecontrol.RunMessageParams;
import org.chromium.mojo.bindings.interfacecontrol.RunOrClosePipeInput;
import org.chromium.mojo.bindings.interfacecontrol.RunOrClosePipeMessageParams;
import org.chromium.mojo.bindings.interfacecontrol.RunOutput;
import org.chromium.mojo.bindings.interfacecontrol.RunResponseMessageParams;
import org.chromium.mojo.system.Core; import org.chromium.mojo.system.Core;
/** /**
...@@ -64,11 +72,16 @@ public class InterfaceControlMessagesHelper { ...@@ -64,11 +72,16 @@ public class InterfaceControlMessagesHelper {
*/ */
public static <I extends Interface, P extends Proxy> boolean handleRun( public static <I extends Interface, P extends Proxy> boolean handleRun(
Core core, Manager<I, P> manager, ServiceMessage message, MessageReceiver responder) { Core core, Manager<I, P> manager, ServiceMessage message, MessageReceiver responder) {
Message payload = message.getPayload();
RunMessageParams query = RunMessageParams.deserialize(payload);
RunResponseMessageParams response = new RunResponseMessageParams(); RunResponseMessageParams response = new RunResponseMessageParams();
response.reserved0 = 16; response.output = new RunOutput();
response.reserved1 = 0; if (query.input.which() == RunInput.Tag.QueryVersion) {
response.queryVersionResult = new QueryVersionResult(); response.output.setQueryVersionResult(new QueryVersionResult());
response.queryVersionResult.version = manager.getVersion(); response.output.getQueryVersionResult().version = manager.getVersion();
} else {
response.output = null;
}
return responder.accept(response.serializeWithHeader( return responder.accept(response.serializeWithHeader(
core, new MessageHeader(InterfaceControlMessagesConstants.RUN_MESSAGE_ID, core, new MessageHeader(InterfaceControlMessagesConstants.RUN_MESSAGE_ID,
...@@ -84,6 +97,9 @@ public class InterfaceControlMessagesHelper { ...@@ -84,6 +97,9 @@ public class InterfaceControlMessagesHelper {
Manager<I, P> manager, ServiceMessage message) { Manager<I, P> manager, ServiceMessage message) {
Message payload = message.getPayload(); Message payload = message.getPayload();
RunOrClosePipeMessageParams query = RunOrClosePipeMessageParams.deserialize(payload); RunOrClosePipeMessageParams query = RunOrClosePipeMessageParams.deserialize(payload);
return query.requireVersion.version <= manager.getVersion(); if (query.input.which() == RunOrClosePipeInput.Tag.RequireVersion) {
return query.input.getRequireVersion().version <= manager.getVersion();
}
return false;
} }
} }
...@@ -91,11 +91,11 @@ try { ...@@ -91,11 +91,11 @@ try {
} }
switch(header.getType()) { switch(header.getType()) {
{% if with_response %} {% if with_response %}
case org.chromium.mojo.bindings.InterfaceControlMessagesConstants.RUN_MESSAGE_ID: case org.chromium.mojo.bindings.interfacecontrol.InterfaceControlMessagesConstants.RUN_MESSAGE_ID:
return org.chromium.mojo.bindings.InterfaceControlMessagesHelper.handleRun( return org.chromium.mojo.bindings.InterfaceControlMessagesHelper.handleRun(
getCore(), {{interface|name}}_Internal.MANAGER, messageWithHeader, receiver); getCore(), {{interface|name}}_Internal.MANAGER, messageWithHeader, receiver);
{% else %} {% else %}
case org.chromium.mojo.bindings.InterfaceControlMessagesConstants.RUN_OR_CLOSE_PIPE_MESSAGE_ID: case org.chromium.mojo.bindings.interfacecontrol.InterfaceControlMessagesConstants.RUN_OR_CLOSE_PIPE_MESSAGE_ID:
return org.chromium.mojo.bindings.InterfaceControlMessagesHelper.handleRunOrClosePipe( return org.chromium.mojo.bindings.InterfaceControlMessagesHelper.handleRunOrClosePipe(
{{interface|name}}_Internal.MANAGER, messageWithHeader); {{interface|name}}_Internal.MANAGER, messageWithHeader);
{% endif %} {% endif %}
......
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