Index: mojo/edk/embedder/platform_channel_pair_win.cc |
diff --git a/mojo/edk/embedder/platform_channel_pair_win.cc b/mojo/edk/embedder/platform_channel_pair_win.cc |
deleted file mode 100644 |
index 25306a61468d85a1b7bc23999f0bcfd7f4ee7ad8..0000000000000000000000000000000000000000 |
--- a/mojo/edk/embedder/platform_channel_pair_win.cc |
+++ /dev/null |
@@ -1,111 +0,0 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "mojo/edk/embedder/platform_channel_pair.h" |
- |
-#include <windows.h> |
- |
-#include <string> |
- |
-#include "base/command_line.h" |
-#include "base/logging.h" |
-#include "base/rand_util.h" |
-#include "base/strings/string_number_conversions.h" |
-#include "base/strings/stringprintf.h" |
-#include "base/win/windows_version.h" |
-#include "mojo/edk/embedder/platform_handle.h" |
- |
-namespace mojo { |
-namespace embedder { |
- |
-namespace { |
- |
-std::wstring GeneratePipeName() { |
- return base::StringPrintf(L"\\\\.\\pipe\\mojo.%u.%u.%I64u", |
- GetCurrentProcessId(), GetCurrentThreadId(), |
- base::RandUint64()); |
-} |
- |
-} // namespace |
- |
-PlatformChannelPair::PlatformChannelPair() { |
- std::wstring pipe_name = GeneratePipeName(); |
- |
- const DWORD kOpenMode = |
- PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED | FILE_FLAG_FIRST_PIPE_INSTANCE; |
- const DWORD kPipeMode = PIPE_TYPE_BYTE | PIPE_READMODE_BYTE; |
- server_handle_.reset(PlatformHandle( |
- CreateNamedPipeW(pipe_name.c_str(), kOpenMode, kPipeMode, |
- 1, // Max instances. |
- 4096, // Out buffer size. |
- 4096, // In buffer size. |
- 5000, // Timeout in milliseconds. |
- nullptr))); // Default security descriptor. |
- PCHECK(server_handle_.is_valid()); |
- |
- const DWORD kDesiredAccess = GENERIC_READ | GENERIC_WRITE; |
- // The SECURITY_ANONYMOUS flag means that the server side cannot impersonate |
- // the client. |
- const DWORD kFlags = |
- SECURITY_SQOS_PRESENT | SECURITY_ANONYMOUS | FILE_FLAG_OVERLAPPED; |
- // Allow the handle to be inherited by child processes. |
- SECURITY_ATTRIBUTES security_attributes = { |
- sizeof(SECURITY_ATTRIBUTES), nullptr, TRUE}; |
- client_handle_.reset( |
- PlatformHandle(CreateFileW(pipe_name.c_str(), kDesiredAccess, |
- 0, // No sharing. |
- &security_attributes, OPEN_EXISTING, kFlags, |
- nullptr))); // No template file. |
- PCHECK(client_handle_.is_valid()); |
- |
- // Since a client has connected, ConnectNamedPipe() should return zero and |
- // GetLastError() should return ERROR_PIPE_CONNECTED. |
- CHECK(!ConnectNamedPipe(server_handle_.get().handle, nullptr)); |
- PCHECK(GetLastError() == ERROR_PIPE_CONNECTED); |
-} |
- |
-// static |
-ScopedPlatformHandle PlatformChannelPair::PassClientHandleFromParentProcess( |
- const base::CommandLine& command_line) { |
- std::string client_handle_string = |
- command_line.GetSwitchValueASCII(kMojoPlatformChannelHandleSwitch); |
- |
- int client_handle_value = 0; |
- if (client_handle_string.empty() || |
- !base::StringToInt(client_handle_string, &client_handle_value)) { |
- LOG(ERROR) << "Missing or invalid --" << kMojoPlatformChannelHandleSwitch; |
- return ScopedPlatformHandle(); |
- } |
- |
- return ScopedPlatformHandle( |
- PlatformHandle(LongToHandle(client_handle_value))); |
-} |
- |
-void PlatformChannelPair::PrepareToPassClientHandleToChildProcess( |
- base::CommandLine* command_line, |
- base::HandlesToInheritVector* handle_passing_info) const { |
- DCHECK(command_line); |
- DCHECK(handle_passing_info); |
- DCHECK(client_handle_.is_valid()); |
- |
- CHECK_GE(base::win::GetVersion(), base::win::VERSION_VISTA); |
- |
- handle_passing_info->push_back(client_handle_.get().handle); |
- |
- // Log a warning if the command line already has the switch, but "clobber" it |
- // anyway, since it's reasonably likely that all the switches were just copied |
- // from the parent. |
- LOG_IF(WARNING, command_line->HasSwitch(kMojoPlatformChannelHandleSwitch)) |
- << "Child command line already has switch --" |
- << kMojoPlatformChannelHandleSwitch << "=" |
- << command_line->GetSwitchValueASCII(kMojoPlatformChannelHandleSwitch); |
- // (Any existing switch won't actually be removed from the command line, but |
- // the last one appended takes precedence.) |
- command_line->AppendSwitchASCII( |
- kMojoPlatformChannelHandleSwitch, |
- base::IntToString(HandleToLong(client_handle_.get().handle))); |
-} |
- |
-} // namespace embedder |
-} // namespace mojo |