| Index: mojo/edk/system/broker_messages.h
 | 
| diff --git a/mojo/edk/system/broker_messages.h b/mojo/edk/system/broker_messages.h
 | 
| index 351cbe6d5539ec5e8a4b5d366fac7051820e4ba0..7d8946d7cb4ea6ee67165130c0ff4337433103dd 100644
 | 
| --- a/mojo/edk/system/broker_messages.h
 | 
| +++ b/mojo/edk/system/broker_messages.h
 | 
| @@ -8,6 +8,7 @@
 | 
|  #include <stdint.h>
 | 
|  
 | 
|  #include "base/compiler_specific.h"
 | 
| +#include "base/process/process_handle.h"
 | 
|  
 | 
|  namespace mojo {
 | 
|  namespace edk {
 | 
| @@ -15,7 +16,11 @@ namespace edk {
 | 
|  // This header defines the message format between ChildBroker and
 | 
|  // ChildBrokerHost.
 | 
|  
 | 
| -enum MessageId {
 | 
| +#if defined(OS_WIN)
 | 
| +// Windows only messages needed because sandboxed child processes need the
 | 
| +// parent's help. They are sent synchronously from child to parent and each have
 | 
| +// a response. They are sent over a raw pipe.
 | 
| +enum WindowsSandboxMessages {
 | 
|    // The reply is two HANDLEs.
 | 
|    CREATE_PLATFORM_CHANNEL_PAIR = 0,
 | 
|    // The reply is tokens of the same count of passed in handles.
 | 
| @@ -28,17 +33,48 @@ enum MessageId {
 | 
|  
 | 
|  struct BrokerMessage {
 | 
|    uint32_t size;
 | 
| -  MessageId id;
 | 
| +  WindowsSandboxMessages id;
 | 
|    // Data, if any, follows.
 | 
|    union {
 | 
| -#if defined(OS_WIN)
 | 
|      HANDLE handles[1];  // If HANDLE_TO_TOKEN.
 | 
|      uint64_t tokens[1];  // If TOKEN_TO_HANDLE.
 | 
| -#endif
 | 
|    };
 | 
|  };
 | 
|  
 | 
| -const int kBrokerMessageHeaderSize = sizeof(uint32_t) + sizeof(MessageId);
 | 
| +const int kBrokerMessageHeaderSize =
 | 
| +  sizeof(uint32_t) + sizeof(WindowsSandboxMessages);
 | 
| +
 | 
| +#endif
 | 
| +
 | 
| +// Multiplexing related messages. They are all asynchronous messages.
 | 
| +// They are sent over RawChannel.
 | 
| +enum MultiplexMessages {
 | 
| +  // Messages from child to parent.
 | 
| +  CONNECT_MESSAGE_PIPE = 0,
 | 
| +  CANCEL_CONNECT_MESSAGE_PIPE,
 | 
| +
 | 
| +  // Messages from parent to child.
 | 
| +  CONNECT_TO_PROCESS,
 | 
| +  PEER_PIPE_CONNECTED,
 | 
| +};
 | 
| +
 | 
| +struct ConnectMessagePipeMessage {
 | 
| +  // CONNECT_MESSAGE_PIPE or CANCEL_CONNECT_MESSAGE_PIPE
 | 
| +  MultiplexMessages type;
 | 
| +  uint64_t pipe_id;
 | 
| +};
 | 
| +
 | 
| +struct ConnectToProcessMessage {
 | 
| +  MultiplexMessages type;  // CONNECT_TO_PROCESS
 | 
| +  base::ProcessId process_id;
 | 
| +  // Also has an attached platform handle.
 | 
| +};
 | 
| +
 | 
| +struct PeerPipeConnectedMessage {
 | 
| +  MultiplexMessages type;  // PEER_PIPE_CONNECTED
 | 
| +  uint64_t pipe_id;
 | 
| +  base::ProcessId process_id;
 | 
| +};
 | 
|  
 | 
|  }  // namespace edk
 | 
|  }  // namespace mojo
 | 
| 
 |