| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "media/remoting/fake_remoting_controller.h" | 5 #include "media/remoting/fake_remoting_controller.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "base/callback.h" | 9 #include "base/callback.h" |
| 10 #include "base/threading/thread_task_runner_handle.h" | 10 #include "base/threading/thread_task_runner_handle.h" |
| 11 #include "media/remoting/remoting_controller.h" | 11 #include "media/remoting/remoting_source_impl.h" |
| 12 #include "media/remoting/rpc/proto_utils.h" | 12 #include "media/remoting/rpc/proto_utils.h" |
| 13 #include "mojo/public/cpp/bindings/strong_binding.h" | 13 #include "mojo/public/cpp/bindings/strong_binding.h" |
| 14 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
| 15 | 15 |
| 16 namespace media { | 16 namespace media { |
| 17 | 17 |
| 18 FakeRemotingDataStreamSender::FakeRemotingDataStreamSender( | 18 FakeRemotingDataStreamSender::FakeRemotingDataStreamSender( |
| 19 mojom::RemotingDataStreamSenderRequest request, | 19 mojom::RemotingDataStreamSenderRequest request, |
| 20 mojo::ScopedDataPipeConsumerHandle consumer_handle) | 20 mojo::ScopedDataPipeConsumerHandle consumer_handle) |
| 21 : binding_(this, std::move(request)), | 21 : binding_(this, std::move(request)), |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 99 ++send_frame_count_; | 99 ++send_frame_count_; |
| 100 received_frame_list.push_back(std::move(next_frame_data_)); | 100 received_frame_list.push_back(std::move(next_frame_data_)); |
| 101 EXPECT_EQ(send_frame_count_, received_frame_list.size()); | 101 EXPECT_EQ(send_frame_count_, received_frame_list.size()); |
| 102 } | 102 } |
| 103 | 103 |
| 104 void FakeRemotingDataStreamSender::CancelInFlightData() { | 104 void FakeRemotingDataStreamSender::CancelInFlightData() { |
| 105 ++cancel_in_flight_count_; | 105 ++cancel_in_flight_count_; |
| 106 } | 106 } |
| 107 | 107 |
| 108 FakeRemoter::FakeRemoter(mojom::RemotingSourcePtr source, bool start_will_fail) | 108 FakeRemoter::FakeRemoter(mojom::RemotingSourcePtr source, bool start_will_fail) |
| 109 : source_(std::move(source)), start_will_fail_(start_will_fail) {} | 109 : source_(std::move(source)), |
| 110 start_will_fail_(start_will_fail), |
| 111 weak_factory_(this) {} |
| 110 | 112 |
| 111 FakeRemoter::~FakeRemoter() {} | 113 FakeRemoter::~FakeRemoter() {} |
| 112 | 114 |
| 113 void FakeRemoter::Start() { | 115 void FakeRemoter::Start() { |
| 114 if (start_will_fail_) { | 116 if (start_will_fail_) { |
| 115 base::ThreadTaskRunnerHandle::Get()->PostTask( | 117 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 116 FROM_HERE, | 118 FROM_HERE, |
| 117 base::Bind(&FakeRemoter::StartFailed, base::Unretained(this))); | 119 base::Bind(&FakeRemoter::StartFailed, weak_factory_.GetWeakPtr())); |
| 118 } else { | 120 } else { |
| 119 base::ThreadTaskRunnerHandle::Get()->PostTask( | 121 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 120 FROM_HERE, base::Bind(&FakeRemoter::Started, base::Unretained(this))); | 122 FROM_HERE, |
| 123 base::Bind(&FakeRemoter::Started, weak_factory_.GetWeakPtr())); |
| 121 } | 124 } |
| 122 } | 125 } |
| 123 | 126 |
| 124 void FakeRemoter::StartDataStreams( | 127 void FakeRemoter::StartDataStreams( |
| 125 mojo::ScopedDataPipeConsumerHandle audio_pipe, | 128 mojo::ScopedDataPipeConsumerHandle audio_pipe, |
| 126 mojo::ScopedDataPipeConsumerHandle video_pipe, | 129 mojo::ScopedDataPipeConsumerHandle video_pipe, |
| 127 mojom::RemotingDataStreamSenderRequest audio_sender_request, | 130 mojom::RemotingDataStreamSenderRequest audio_sender_request, |
| 128 mojom::RemotingDataStreamSenderRequest video_sender_request) { | 131 mojom::RemotingDataStreamSenderRequest video_sender_request) { |
| 129 if (audio_pipe.is_valid()) { | 132 if (audio_pipe.is_valid()) { |
| 130 VLOG(2) << "Has audio"; | 133 VLOG(2) << "Has audio"; |
| 131 audio_stream_sender_.reset(new FakeRemotingDataStreamSender( | 134 audio_stream_sender_.reset(new FakeRemotingDataStreamSender( |
| 132 std::move(audio_sender_request), std::move(audio_pipe))); | 135 std::move(audio_sender_request), std::move(audio_pipe))); |
| 133 } | 136 } |
| 134 | 137 |
| 135 if (video_pipe.is_valid()) { | 138 if (video_pipe.is_valid()) { |
| 136 VLOG(2) << "Has video"; | 139 VLOG(2) << "Has video"; |
| 137 video_stream_sender_.reset(new FakeRemotingDataStreamSender( | 140 video_stream_sender_.reset(new FakeRemotingDataStreamSender( |
| 138 std::move(video_sender_request), std::move(video_pipe))); | 141 std::move(video_sender_request), std::move(video_pipe))); |
| 139 } | 142 } |
| 140 } | 143 } |
| 141 | 144 |
| 142 void FakeRemoter::Stop(mojom::RemotingStopReason reason) { | 145 void FakeRemoter::Stop(mojom::RemotingStopReason reason) { |
| 143 base::ThreadTaskRunnerHandle::Get()->PostTask( | 146 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 144 FROM_HERE, | 147 FROM_HERE, |
| 145 base::Bind(&FakeRemoter::Stopped, base::Unretained(this), reason)); | 148 base::Bind(&FakeRemoter::Stopped, weak_factory_.GetWeakPtr(), reason)); |
| 146 } | 149 } |
| 147 | 150 |
| 148 void FakeRemoter::SendMessageToSink(const std::vector<uint8_t>& message) {} | 151 void FakeRemoter::SendMessageToSink(const std::vector<uint8_t>& message) {} |
| 149 | 152 |
| 150 void FakeRemoter::Started() { | 153 void FakeRemoter::Started() { |
| 151 source_->OnStarted(); | 154 source_->OnStarted(); |
| 152 } | 155 } |
| 153 | 156 |
| 154 void FakeRemoter::StartFailed() { | 157 void FakeRemoter::StartFailed() { |
| 155 source_->OnStartFailed(mojom::RemotingStartFailReason::ROUTE_TERMINATED); | 158 source_->OnStartFailed(mojom::RemotingStartFailReason::ROUTE_TERMINATED); |
| 156 } | 159 } |
| 157 | 160 |
| 158 void FakeRemoter::Stopped(mojom::RemotingStopReason reason) { | 161 void FakeRemoter::Stopped(mojom::RemotingStopReason reason) { |
| 159 source_->OnStopped(reason); | 162 source_->OnStopped(reason); |
| 160 } | 163 } |
| 161 | 164 |
| 162 FakeRemoterFactory::FakeRemoterFactory(bool start_will_fail) | 165 FakeRemoterFactory::FakeRemoterFactory(bool start_will_fail) |
| 163 : start_will_fail_(start_will_fail) {} | 166 : start_will_fail_(start_will_fail) {} |
| 164 | 167 |
| 165 FakeRemoterFactory::~FakeRemoterFactory() {} | 168 FakeRemoterFactory::~FakeRemoterFactory() {} |
| 166 | 169 |
| 167 void FakeRemoterFactory::Create(mojom::RemotingSourcePtr source, | 170 void FakeRemoterFactory::Create(mojom::RemotingSourcePtr source, |
| 168 mojom::RemoterRequest request) { | 171 mojom::RemoterRequest request) { |
| 169 mojo::MakeStrongBinding( | 172 mojo::MakeStrongBinding( |
| 170 base::MakeUnique<FakeRemoter>(std::move(source), start_will_fail_), | 173 base::MakeUnique<FakeRemoter>(std::move(source), start_will_fail_), |
| 171 std::move(request)); | 174 std::move(request)); |
| 172 } | 175 } |
| 173 | 176 |
| 174 std::unique_ptr<RemotingController> CreateRemotingController( | 177 scoped_refptr<RemotingSourceImpl> CreateRemotingSourceImpl( |
| 175 bool start_will_fail) { | 178 bool start_will_fail) { |
| 176 mojom::RemotingSourcePtr remoting_source; | 179 mojom::RemotingSourcePtr remoting_source; |
| 177 mojom::RemotingSourceRequest remoting_source_request = | 180 mojom::RemotingSourceRequest remoting_source_request = |
| 178 mojo::GetProxy(&remoting_source); | 181 mojo::GetProxy(&remoting_source); |
| 179 mojom::RemoterPtr remoter; | 182 mojom::RemoterPtr remoter; |
| 180 std::unique_ptr<mojom::RemoterFactory> remoter_factory = | 183 std::unique_ptr<mojom::RemoterFactory> remoter_factory = |
| 181 base::MakeUnique<FakeRemoterFactory>(start_will_fail); | 184 base::MakeUnique<FakeRemoterFactory>(start_will_fail); |
| 182 remoter_factory->Create(std::move(remoting_source), mojo::GetProxy(&remoter)); | 185 remoter_factory->Create(std::move(remoting_source), mojo::GetProxy(&remoter)); |
| 183 std::unique_ptr<RemotingController> remoting_controller = | 186 return new RemotingSourceImpl(std::move(remoting_source_request), |
| 184 base::MakeUnique<RemotingController>(std::move(remoting_source_request), | 187 std::move(remoter)); |
| 185 std::move(remoter)); | |
| 186 return remoting_controller; | |
| 187 } | 188 } |
| 188 | 189 |
| 189 } // namespace media | 190 } // namespace media |
| OLD | NEW |