#include "mojo/public/cpp/system/isolated_connection.h"
#include "mojo/core/embedder/embedder.h"
#include "mojo/public/cpp/platform/platform_channel.h"
#include "mojo/public/cpp/system/invitation.h"
namespace mojo {
IsolatedConnection::IsolatedConnection()
: token_(base::UnguessableToken::Create()) {}
IsolatedConnection::~IsolatedConnection() {
if (!mojo::core::IsMojoIpczEnabled()) {
PlatformChannel channel;
OutgoingInvitation::SendIsolated(channel.TakeLocalEndpoint(),
token_.ToString());
}
}
ScopedMessagePipeHandle IsolatedConnection::Connect(
PlatformChannelEndpoint endpoint) {
return Connect(std::move(endpoint), base::Process{});
}
ScopedMessagePipeHandle IsolatedConnection::Connect(
PlatformChannelEndpoint endpoint,
base::Process process) {
return OutgoingInvitation::SendIsolated(std::move(endpoint),
token_.ToString(), process.Handle());
}
ScopedMessagePipeHandle IsolatedConnection::Connect(
PlatformChannelServerEndpoint endpoint) {
return OutgoingInvitation::SendIsolated(std::move(endpoint),
token_.ToString());
}
}