1*6777b538SAndroid Build Coastguard Worker // Copyright 2016 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #include "components/nacl/common/nacl_service.h" 6*6777b538SAndroid Build Coastguard Worker 7*6777b538SAndroid Build Coastguard Worker #include <memory> 8*6777b538SAndroid Build Coastguard Worker #include <string> 9*6777b538SAndroid Build Coastguard Worker 10*6777b538SAndroid Build Coastguard Worker #include "base/command_line.h" 11*6777b538SAndroid Build Coastguard Worker #include "base/task/single_thread_task_runner.h" 12*6777b538SAndroid Build Coastguard Worker #include "build/build_config.h" 13*6777b538SAndroid Build Coastguard Worker #include "mojo/core/embedder/scoped_ipc_support.h" 14*6777b538SAndroid Build Coastguard Worker #include "mojo/public/cpp/platform/platform_channel.h" 15*6777b538SAndroid Build Coastguard Worker #include "mojo/public/cpp/platform/platform_channel_endpoint.h" 16*6777b538SAndroid Build Coastguard Worker #include "mojo/public/cpp/platform/platform_handle.h" 17*6777b538SAndroid Build Coastguard Worker #include "mojo/public/cpp/system/invitation.h" 18*6777b538SAndroid Build Coastguard Worker 19*6777b538SAndroid Build Coastguard Worker #if BUILDFLAG(IS_POSIX) 20*6777b538SAndroid Build Coastguard Worker #include "base/files/scoped_file.h" 21*6777b538SAndroid Build Coastguard Worker #include "base/posix/global_descriptors.h" 22*6777b538SAndroid Build Coastguard Worker #include "content/public/common/content_descriptors.h" 23*6777b538SAndroid Build Coastguard Worker #endif 24*6777b538SAndroid Build Coastguard Worker 25*6777b538SAndroid Build Coastguard Worker namespace { 26*6777b538SAndroid Build Coastguard Worker GetMojoInvitation()27*6777b538SAndroid Build Coastguard Workermojo::IncomingInvitation GetMojoInvitation() { 28*6777b538SAndroid Build Coastguard Worker mojo::PlatformChannelEndpoint endpoint; 29*6777b538SAndroid Build Coastguard Worker endpoint = mojo::PlatformChannelEndpoint(mojo::PlatformHandle(base::ScopedFD( 30*6777b538SAndroid Build Coastguard Worker base::GlobalDescriptors::GetInstance()->Get(kMojoIPCChannel)))); 31*6777b538SAndroid Build Coastguard Worker DCHECK(endpoint.is_valid()); 32*6777b538SAndroid Build Coastguard Worker return mojo::IncomingInvitation::Accept(std::move(endpoint)); 33*6777b538SAndroid Build Coastguard Worker } 34*6777b538SAndroid Build Coastguard Worker 35*6777b538SAndroid Build Coastguard Worker } // namespace 36*6777b538SAndroid Build Coastguard Worker NaClService(scoped_refptr<base::SingleThreadTaskRunner> ipc_task_runner)37*6777b538SAndroid Build Coastguard WorkerNaClService::NaClService( 38*6777b538SAndroid Build Coastguard Worker scoped_refptr<base::SingleThreadTaskRunner> ipc_task_runner) 39*6777b538SAndroid Build Coastguard Worker : ipc_support_(std::move(ipc_task_runner), 40*6777b538SAndroid Build Coastguard Worker mojo::core::ScopedIPCSupport::ShutdownPolicy::FAST) {} 41*6777b538SAndroid Build Coastguard Worker 42*6777b538SAndroid Build Coastguard Worker NaClService::~NaClService() = default; 43*6777b538SAndroid Build Coastguard Worker TakeChannelPipe()44*6777b538SAndroid Build Coastguard Workermojo::ScopedMessagePipeHandle NaClService::TakeChannelPipe() { 45*6777b538SAndroid Build Coastguard Worker return GetMojoInvitation().ExtractMessagePipe(0); 46*6777b538SAndroid Build Coastguard Worker } 47