// Copyright 2018 The Chromium 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 "services/network/test_chunked_data_pipe_getter.h" #include "base/check.h" #include "testing/gtest/include/gtest/gtest.h" namespace network { TestChunkedDataPipeGetter::TestChunkedDataPipeGetter() = default; TestChunkedDataPipeGetter::~TestChunkedDataPipeGetter() = default; mojo::PendingRemote TestChunkedDataPipeGetter::GetDataPipeGetterRemote() { EXPECT_FALSE(receiver_.is_bound()); return receiver_.BindNewPipeAndPassRemote(); } void TestChunkedDataPipeGetter::ClosePipe() { receiver_.reset(); } mojom::ChunkedDataPipeGetter::GetSizeCallback TestChunkedDataPipeGetter::WaitForGetSize() { DCHECK(!get_size_run_loop_); if (!get_size_callback_) { get_size_run_loop_ = std::make_unique(); get_size_run_loop_->Run(); get_size_run_loop_.reset(); } EXPECT_TRUE(get_size_callback_); return std::move(get_size_callback_); } mojo::ScopedDataPipeProducerHandle TestChunkedDataPipeGetter::WaitForStartReading() { DCHECK(!start_reading_run_loop_); if (!write_pipe_.is_valid()) { start_reading_run_loop_ = std::make_unique(); start_reading_run_loop_->Run(); start_reading_run_loop_.reset(); } EXPECT_TRUE(write_pipe_.is_valid()); return std::move(write_pipe_); } void TestChunkedDataPipeGetter::GetSize(GetSizeCallback get_size_callback) { EXPECT_FALSE(received_size_callback_); EXPECT_FALSE(get_size_callback_); received_size_callback_ = true; get_size_callback_ = std::move(get_size_callback); if (get_size_run_loop_) get_size_run_loop_->Quit(); } void TestChunkedDataPipeGetter::StartReading( mojo::ScopedDataPipeProducerHandle pipe) { EXPECT_FALSE(write_pipe_.is_valid()); EXPECT_TRUE(received_size_callback_); write_pipe_ = std::move(pipe); if (start_reading_run_loop_) start_reading_run_loop_->Quit(); } } // namespace network