1 // Copyright 2018 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "services/network/test_chunked_data_pipe_getter.h" 6 7 #include "base/logging.h" 8 #include "testing/gtest/include/gtest/gtest.h" 9 10 namespace network { 11 12 TestChunkedDataPipeGetter::TestChunkedDataPipeGetter() = default; 13 14 TestChunkedDataPipeGetter::~TestChunkedDataPipeGetter() = default; 15 16 mojo::PendingRemote<mojom::ChunkedDataPipeGetter> GetDataPipeGetterRemote()17TestChunkedDataPipeGetter::GetDataPipeGetterRemote() { 18 EXPECT_FALSE(receiver_.is_bound()); 19 return receiver_.BindNewPipeAndPassRemote(); 20 } 21 ClosePipe()22void TestChunkedDataPipeGetter::ClosePipe() { 23 receiver_.reset(); 24 } 25 26 mojom::ChunkedDataPipeGetter::GetSizeCallback WaitForGetSize()27TestChunkedDataPipeGetter::WaitForGetSize() { 28 DCHECK(!get_size_run_loop_); 29 30 if (!get_size_callback_) { 31 get_size_run_loop_ = std::make_unique<base::RunLoop>(); 32 get_size_run_loop_->Run(); 33 get_size_run_loop_.reset(); 34 } 35 36 EXPECT_TRUE(get_size_callback_); 37 38 return std::move(get_size_callback_); 39 } 40 41 mojo::ScopedDataPipeProducerHandle WaitForStartReading()42TestChunkedDataPipeGetter::WaitForStartReading() { 43 DCHECK(!start_reading_run_loop_); 44 45 if (!write_pipe_.is_valid()) { 46 start_reading_run_loop_ = std::make_unique<base::RunLoop>(); 47 start_reading_run_loop_->Run(); 48 start_reading_run_loop_.reset(); 49 } 50 51 EXPECT_TRUE(write_pipe_.is_valid()); 52 53 return std::move(write_pipe_); 54 } 55 GetSize(GetSizeCallback get_size_callback)56void TestChunkedDataPipeGetter::GetSize(GetSizeCallback get_size_callback) { 57 EXPECT_FALSE(received_size_callback_); 58 EXPECT_FALSE(get_size_callback_); 59 60 received_size_callback_ = true; 61 get_size_callback_ = std::move(get_size_callback); 62 63 if (get_size_run_loop_) 64 get_size_run_loop_->Quit(); 65 } 66 StartReading(mojo::ScopedDataPipeProducerHandle pipe)67void TestChunkedDataPipeGetter::StartReading( 68 mojo::ScopedDataPipeProducerHandle pipe) { 69 EXPECT_FALSE(write_pipe_.is_valid()); 70 EXPECT_TRUE(received_size_callback_); 71 72 write_pipe_ = std::move(pipe); 73 74 if (start_reading_run_loop_) 75 start_reading_run_loop_->Quit(); 76 } 77 78 } // namespace network 79