| // Copyright 2019 The Fuchsia 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 "src/ui/a11y/tests/util/util.h" |
| |
| namespace accessibility_test { |
| |
| char *ReadFile(vfs::internal::Node *node, int length, char *buffer) { |
| EXPECT_LE(length, kMaxLogBufferSize); |
| async::Loop loop(&kAsyncLoopConfigNoAttachToThread); |
| loop.StartThread("ReadingDebugFile"); |
| |
| int fd = OpenAsFD(node, loop.dispatcher()); |
| EXPECT_LE(0, fd); |
| |
| memset(buffer, 0, kMaxLogBufferSize); |
| EXPECT_EQ(length, pread(fd, buffer, length, 0)); |
| return buffer; |
| } |
| |
| int OpenAsFD(vfs::internal::Node *node, async_dispatcher_t *dispatcher) { |
| zx::channel local, remote; |
| EXPECT_EQ(ZX_OK, zx::channel::create(0, &local, &remote)); |
| EXPECT_EQ(ZX_OK, node->Serve(fuchsia::io::OPEN_RIGHT_READABLE, std::move(remote), dispatcher)); |
| int fd = -1; |
| EXPECT_EQ(ZX_OK, fdio_fd_create(local.release(), &fd)); |
| return fd; |
| } |
| |
| } // namespace accessibility_test |