| Index: mojo/edk/embedder/embedder.cc
|
| diff --git a/mojo/edk/embedder/embedder.cc b/mojo/edk/embedder/embedder.cc
|
| index dd79184cd873b8ac77b680d53dfcaf86501230a1..5ca21f3d119fc44d208268a538efa11f16174931 100644
|
| --- a/mojo/edk/embedder/embedder.cc
|
| +++ b/mojo/edk/embedder/embedder.cc
|
| @@ -13,6 +13,7 @@
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/task_runner.h"
|
| #include "mojo/edk/embedder/embedder_internal.h"
|
| +#include "mojo/edk/embedder/platform_channel_pair.h"
|
| #include "mojo/edk/embedder/process_delegate.h"
|
| #include "mojo/edk/embedder/simple_platform_support.h"
|
| #include "mojo/edk/system/configuration.h"
|
| @@ -20,6 +21,13 @@
|
| #include "mojo/edk/system/message_pipe_dispatcher.h"
|
| #include "mojo/edk/system/platform_handle_dispatcher.h"
|
|
|
| +#if defined(OS_WIN)
|
| +#include "mojo/edk/system/child_token_serializer_win.h"
|
| +#include "mojo/edk/system/parent_token_serializer_state_win.h"
|
| +#include "mojo/edk/system/parent_token_serializer_win.h"
|
| +#include "mojo/edk/system/simple_token_serializer_win.h"
|
| +#endif
|
| +
|
| namespace mojo {
|
| namespace edk {
|
|
|
| @@ -49,6 +57,9 @@ void ShutdownIPCSupportHelper(bool wait_for_no_more_channels) {
|
| namespace internal {
|
|
|
| // Declared in embedder_internal.h.
|
| +#if defined(OS_WIN)
|
| +TokenSerializer* g_token_serializer = nullptr;
|
| +#endif
|
| PlatformSupport* g_platform_support = nullptr;
|
| Core* g_core = nullptr;
|
|
|
| @@ -82,7 +93,40 @@ void SetMaxMessageSize(size_t bytes) {
|
| GetMutableConfiguration()->max_message_num_bytes = bytes;
|
| }
|
|
|
| +#if defined(OS_WIN)
|
| +void PreInitializeParentProcess() {
|
| + ParentTokenSerializerState::GetInstance();
|
| +}
|
| +
|
| +void PreInitializeChildProcess() {
|
| + ChildTokenSerializer::GetInstance();
|
| +}
|
| +
|
| +HANDLE ChildProcessLaunched(HANDLE child_process) {
|
| + PlatformChannelPair token_channel;
|
| + new ParentTokenSerializer(child_process, token_channel.PassServerHandle());
|
| + return token_channel.PassClientHandle().release().handle;
|
| +}
|
| +
|
| +void ChildProcessLaunched(HANDLE child_process, HANDLE server_pipe) {
|
| + new ParentTokenSerializer(
|
| + child_process, ScopedPlatformHandle(PlatformHandle(server_pipe)));
|
| +}
|
| +
|
| +void SetParentPipeHandle(HANDLE pipe) {
|
| + ScopedPlatformHandle handle;
|
| + handle.reset(PlatformHandle(pipe));
|
| + ChildTokenSerializer::GetInstance()->
|
| + SetParentTokenSerializerHandle(handle.Pass());
|
| +}
|
| +#endif
|
| +
|
| void Init() {
|
| +#if defined(OS_WIN)
|
| + if (!internal::g_token_serializer)
|
| + internal::g_token_serializer = new SimpleTokenSerializer;
|
| +#endif
|
| +
|
| DCHECK(!internal::g_platform_support);
|
| internal::g_platform_support = new SimplePlatformSupport();
|
|
|
|
|