test_chunked_data_pipe_getter.cc 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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. #include "services/network/test_chunked_data_pipe_getter.h"
  5. #include "base/check.h"
  6. #include "testing/gtest/include/gtest/gtest.h"
  7. namespace network {
  8. TestChunkedDataPipeGetter::TestChunkedDataPipeGetter() = default;
  9. TestChunkedDataPipeGetter::~TestChunkedDataPipeGetter() = default;
  10. mojo::PendingRemote<mojom::ChunkedDataPipeGetter>
  11. TestChunkedDataPipeGetter::GetDataPipeGetterRemote() {
  12. EXPECT_FALSE(receiver_.is_bound());
  13. return receiver_.BindNewPipeAndPassRemote();
  14. }
  15. void TestChunkedDataPipeGetter::ClosePipe() {
  16. receiver_.reset();
  17. }
  18. mojom::ChunkedDataPipeGetter::GetSizeCallback
  19. TestChunkedDataPipeGetter::WaitForGetSize() {
  20. DCHECK(!get_size_run_loop_);
  21. if (!get_size_callback_) {
  22. get_size_run_loop_ = std::make_unique<base::RunLoop>();
  23. get_size_run_loop_->Run();
  24. get_size_run_loop_.reset();
  25. }
  26. EXPECT_TRUE(get_size_callback_);
  27. return std::move(get_size_callback_);
  28. }
  29. mojo::ScopedDataPipeProducerHandle
  30. TestChunkedDataPipeGetter::WaitForStartReading() {
  31. DCHECK(!start_reading_run_loop_);
  32. if (!write_pipe_.is_valid()) {
  33. start_reading_run_loop_ = std::make_unique<base::RunLoop>();
  34. start_reading_run_loop_->Run();
  35. start_reading_run_loop_.reset();
  36. }
  37. EXPECT_TRUE(write_pipe_.is_valid());
  38. return std::move(write_pipe_);
  39. }
  40. void TestChunkedDataPipeGetter::GetSize(GetSizeCallback get_size_callback) {
  41. EXPECT_FALSE(received_size_callback_);
  42. EXPECT_FALSE(get_size_callback_);
  43. received_size_callback_ = true;
  44. get_size_callback_ = std::move(get_size_callback);
  45. if (get_size_run_loop_)
  46. get_size_run_loop_->Quit();
  47. }
  48. void TestChunkedDataPipeGetter::StartReading(
  49. mojo::ScopedDataPipeProducerHandle pipe) {
  50. EXPECT_FALSE(write_pipe_.is_valid());
  51. EXPECT_TRUE(received_size_callback_);
  52. write_pipe_ = std::move(pipe);
  53. if (start_reading_run_loop_)
  54. start_reading_run_loop_->Quit();
  55. }
  56. } // namespace network