| Index: remoting/host/win/wts_session_process_launcher.cc
|
| diff --git a/remoting/host/win/wts_session_process_launcher.cc b/remoting/host/win/wts_session_process_launcher.cc
|
| index 1a32789aeb910ec9a460c7fd99e14652fdd3d11f..4e795059734c29d470e2f4fd5b15c4853e760d71 100644
|
| --- a/remoting/host/win/wts_session_process_launcher.cc
|
| +++ b/remoting/host/win/wts_session_process_launcher.cc
|
| @@ -23,6 +23,7 @@
|
| #include "base/process_util.h"
|
| #include "base/rand_util.h"
|
| #include "base/stringprintf.h"
|
| +#include "base/utf_string_conversions.h"
|
| #include "base/win/scoped_handle.h"
|
| #include "ipc/ipc_channel_proxy.h"
|
| #include "ipc/ipc_message.h"
|
| @@ -47,7 +48,7 @@ const FilePath::CharType kMe2meHostBinaryName[] =
|
| FILE_PATH_LITERAL("remoting_me2me_host.exe");
|
|
|
| // Match the pipe name prefix used by Chrome IPC channels.
|
| -const wchar_t kChromePipeNamePrefix[] = L"\\\\.\\pipe\\chrome.";
|
| +const char kChromePipeNamePrefix[] = "\\\\.\\pipe\\chrome.";
|
|
|
| // The IPC channel name is passed to the host in the command line.
|
| const char kChromotingIpcSwitchName[] = "chromoting-ipc";
|
| @@ -150,8 +151,8 @@ bool CreateSessionToken(uint32 session_id,
|
|
|
| // Generates random channel ID.
|
| // N.B. Stolen from src/content/common/child_process_host_impl.cc
|
| -std::wstring GenerateRandomChannelId(void* instance) {
|
| - return base::StringPrintf(L"%d.%p.%d",
|
| +std::string GenerateRandomChannelId(void* instance) {
|
| + return base::StringPrintf("%d.%p.%d",
|
| base::GetCurrentProcId(), instance,
|
| base::RandInt(0, std::numeric_limits<int>::max()));
|
| }
|
| @@ -159,7 +160,7 @@ std::wstring GenerateRandomChannelId(void* instance) {
|
| // Creates the server end of the Chromoting IPC channel.
|
| // N.B. This code is based on IPC::Channel's implementation.
|
| bool CreatePipeForIpcChannel(void* instance,
|
| - std::wstring* channel_name_out,
|
| + std::string* channel_name_out,
|
| ScopedHandle* pipe_out) {
|
| // Create security descriptor for the channel.
|
| SECURITY_ATTRIBUTES security_attributes;
|
| @@ -179,15 +180,15 @@ bool CreatePipeForIpcChannel(void* instance,
|
| }
|
|
|
| // Generate a random channel name.
|
| - std::wstring channel_name(GenerateRandomChannelId(instance));
|
| + std::string channel_name(GenerateRandomChannelId(instance));
|
|
|
| // Convert it to the pipe name.
|
| - std::wstring pipe_name(kChromePipeNamePrefix);
|
| + std::string pipe_name(kChromePipeNamePrefix);
|
| pipe_name.append(channel_name);
|
|
|
| // Create the server end of the pipe. This code should match the code in
|
| // IPC::Channel with exception of passing a non-default security descriptor.
|
| - HANDLE pipe = CreateNamedPipeW(pipe_name.c_str(),
|
| + HANDLE pipe = CreateNamedPipeW(UTF8ToUTF16(pipe_name).c_str(),
|
| PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED |
|
| FILE_FLAG_FIRST_PIPE_INSTANCE,
|
| PIPE_TYPE_BYTE | PIPE_READMODE_BYTE,
|
| @@ -259,7 +260,7 @@ void WtsSessionProcessLauncher::LaunchProcess() {
|
| }
|
| FilePath host_binary = dir_path.Append(kMe2meHostBinaryName);
|
|
|
| - std::wstring channel_name;
|
| + std::string channel_name;
|
| ScopedHandle pipe;
|
| if (CreatePipeForIpcChannel(this, &channel_name, &pipe)) {
|
| // Wrap the pipe into an IPC channel.
|
| @@ -272,7 +273,7 @@ void WtsSessionProcessLauncher::LaunchProcess() {
|
| // Create the host process command line passing the name of the IPC channel
|
| // to use and copying known switches from the service's command line.
|
| CommandLine command_line(host_binary);
|
| - command_line.AppendSwitchNative(kChromotingIpcSwitchName, channel_name);
|
| + command_line.AppendSwitchASCII(kChromotingIpcSwitchName, channel_name);
|
| command_line.CopySwitchesFrom(*CommandLine::ForCurrentProcess(),
|
| kCopiedSwitchNames,
|
| _countof(kCopiedSwitchNames));
|
|
|