Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(27)

Unified Diff: components/arc/arc_session.cc

Issue 2500263004: Remove ipc/unix_domain_socket_util.* (Closed)
Patch Set: rebase Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/arc/DEPS ('k') | components/exo/wayland/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/arc/arc_session.cc
diff --git a/components/arc/arc_session.cc b/components/arc/arc_session.cc
index 7d85e56f77407cac9803d4da9939a64d5a7fade9..6c85b992ed500dc21a955b50162eb827f53776e6 100644
--- a/components/arc/arc_session.cc
+++ b/components/arc/arc_session.cc
@@ -28,8 +28,9 @@
#include "components/arc/arc_bridge_host_impl.h"
#include "components/arc/arc_features.h"
#include "components/user_manager/user_manager.h"
-#include "ipc/unix_domain_socket_util.h"
#include "mojo/edk/embedder/embedder.h"
+#include "mojo/edk/embedder/named_platform_handle.h"
+#include "mojo/edk/embedder/named_platform_handle_utils.h"
#include "mojo/edk/embedder/platform_channel_pair.h"
#include "mojo/edk/embedder/platform_channel_utils_posix.h"
#include "mojo/edk/embedder/platform_handle_vector.h"
@@ -210,18 +211,19 @@ class ArcSessionImpl : public ArcSession,
private:
// Creates the UNIX socket on a worker pool and then processes its file
// descriptor.
- static base::ScopedFD CreateSocket();
- void OnSocketCreated(base::ScopedFD fd);
+ static mojo::edk::ScopedPlatformHandle CreateSocket();
+ void OnSocketCreated(mojo::edk::ScopedPlatformHandle fd);
// DBus callback for StartArcInstance().
- void OnInstanceStarted(base::ScopedFD socket_fd,
+ void OnInstanceStarted(mojo::edk::ScopedPlatformHandle socket_fd,
StartArcInstanceResult result);
// Synchronously accepts a connection on |socket_fd| and then processes the
// connected socket's file descriptor.
- static base::ScopedFD ConnectMojo(base::ScopedFD socket_fd,
- base::ScopedFD cancel_fd);
- void OnMojoConnected(base::ScopedFD fd);
+ static mojo::edk::ScopedPlatformHandle ConnectMojo(
+ mojo::edk::ScopedPlatformHandle socket_fd,
+ base::ScopedFD cancel_fd);
+ void OnMojoConnected(mojo::edk::ScopedPlatformHandle fd);
// Request to stop ARC instance via DBus.
void StopArcInstance();
@@ -291,13 +293,13 @@ void ArcSessionImpl::Start() {
}
// static
-base::ScopedFD ArcSessionImpl::CreateSocket() {
+mojo::edk::ScopedPlatformHandle ArcSessionImpl::CreateSocket() {
base::FilePath socket_path(kArcBridgeSocketPath);
- int raw_fd = -1;
- if (!IPC::CreateServerUnixDomainSocket(socket_path, &raw_fd))
- return base::ScopedFD();
- base::ScopedFD socket_fd(raw_fd);
+ mojo::edk::ScopedPlatformHandle socket_fd = mojo::edk::CreateServerHandle(
+ mojo::edk::NamedPlatformHandle(socket_path.value()));
+ if (!socket_fd.is_valid())
+ return socket_fd;
// Change permissions on the socket.
struct group arc_bridge_group;
@@ -306,29 +308,30 @@ base::ScopedFD ArcSessionImpl::CreateSocket() {
if (HANDLE_EINTR(getgrnam_r(kArcBridgeSocketGroup, &arc_bridge_group, buf,
sizeof(buf), &arc_bridge_group_res)) < 0) {
PLOG(ERROR) << "getgrnam_r";
- return base::ScopedFD();
+ return mojo::edk::ScopedPlatformHandle();
}
if (!arc_bridge_group_res) {
LOG(ERROR) << "Group '" << kArcBridgeSocketGroup << "' not found";
- return base::ScopedFD();
+ return mojo::edk::ScopedPlatformHandle();
}
if (HANDLE_EINTR(chown(kArcBridgeSocketPath, -1, arc_bridge_group.gr_gid)) <
0) {
PLOG(ERROR) << "chown";
- return base::ScopedFD();
+ return mojo::edk::ScopedPlatformHandle();
}
if (!base::SetPosixFilePermissions(socket_path, 0660)) {
PLOG(ERROR) << "Could not set permissions: " << socket_path.value();
- return base::ScopedFD();
+ return mojo::edk::ScopedPlatformHandle();
}
return socket_fd;
}
-void ArcSessionImpl::OnSocketCreated(base::ScopedFD socket_fd) {
+void ArcSessionImpl::OnSocketCreated(
+ mojo::edk::ScopedPlatformHandle socket_fd) {
DCHECK(thread_checker_.CalledOnValidThread());
DCHECK_EQ(state_, State::CREATING_SOCKET);
@@ -362,8 +365,9 @@ void ArcSessionImpl::OnSocketCreated(base::ScopedFD socket_fd) {
base::Passed(&socket_fd)));
}
-void ArcSessionImpl::OnInstanceStarted(base::ScopedFD socket_fd,
- StartArcInstanceResult result) {
+void ArcSessionImpl::OnInstanceStarted(
+ mojo::edk::ScopedPlatformHandle socket_fd,
+ StartArcInstanceResult result) {
DCHECK(thread_checker_.CalledOnValidThread());
if (state_ == State::STOPPED) {
// This is the case that error is notified via DBus before the
@@ -411,18 +415,20 @@ void ArcSessionImpl::OnInstanceStarted(base::ScopedFD socket_fd,
}
// static
-base::ScopedFD ArcSessionImpl::ConnectMojo(base::ScopedFD socket_fd,
- base::ScopedFD cancel_fd) {
- if (!WaitForSocketReadable(socket_fd.get(), cancel_fd.get())) {
+mojo::edk::ScopedPlatformHandle ArcSessionImpl::ConnectMojo(
+ mojo::edk::ScopedPlatformHandle socket_fd,
+ base::ScopedFD cancel_fd) {
+ if (!WaitForSocketReadable(socket_fd.get().handle, cancel_fd.get())) {
VLOG(1) << "Mojo connection was cancelled.";
- return base::ScopedFD();
+ return mojo::edk::ScopedPlatformHandle();
}
- int raw_fd = -1;
- if (!IPC::ServerOnConnect(socket_fd.get(), &raw_fd)) {
- return base::ScopedFD();
+ mojo::edk::ScopedPlatformHandle scoped_fd;
+ if (!mojo::edk::ServerAcceptConnection(socket_fd.get(), &scoped_fd,
+ /* check_peer_user = */ false) ||
+ !scoped_fd.is_valid()) {
+ return mojo::edk::ScopedPlatformHandle();
}
- base::ScopedFD scoped_fd(raw_fd);
// Hardcode pid 0 since it is unused in mojo.
const base::ProcessHandle kUnusedChildProcessHandle = 0;
@@ -437,17 +443,16 @@ base::ScopedFD ArcSessionImpl::ConnectMojo(base::ScopedFD socket_fd,
struct iovec iov = {const_cast<char*>(""), 1};
ssize_t result = mojo::edk::PlatformChannelSendmsgWithHandles(
- mojo::edk::PlatformHandle(scoped_fd.get()), &iov, 1, handles->data(),
- handles->size());
+ scoped_fd.get(), &iov, 1, handles->data(), handles->size());
if (result == -1) {
PLOG(ERROR) << "sendmsg";
- return base::ScopedFD();
+ return mojo::edk::ScopedPlatformHandle();
}
return scoped_fd;
}
-void ArcSessionImpl::OnMojoConnected(base::ScopedFD fd) {
+void ArcSessionImpl::OnMojoConnected(mojo::edk::ScopedPlatformHandle fd) {
DCHECK(thread_checker_.CalledOnValidThread());
if (state_ == State::STOPPED) {
@@ -471,8 +476,8 @@ void ArcSessionImpl::OnMojoConnected(base::ScopedFD fd) {
return;
}
- mojo::ScopedMessagePipeHandle server_pipe = mojo::edk::CreateMessagePipe(
- mojo::edk::ScopedPlatformHandle(mojo::edk::PlatformHandle(fd.release())));
+ mojo::ScopedMessagePipeHandle server_pipe =
+ mojo::edk::CreateMessagePipe(std::move(fd));
if (!server_pipe.is_valid()) {
LOG(ERROR) << "Invalid pipe";
StopArcInstance();
« no previous file with comments | « components/arc/DEPS ('k') | components/exo/wayland/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698