Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(852)

Unified Diff: media/remoting/remote_demuxer_stream_adapter_unittest.cc

Issue 2631993002: Media Remoting: UMAs to track session events and measurements. (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/remoting/remote_demuxer_stream_adapter_unittest.cc
diff --git a/media/remoting/remote_demuxer_stream_adapter_unittest.cc b/media/remoting/remote_demuxer_stream_adapter_unittest.cc
index 3c9e06a4bef3bb9f703dc5b0a324a6600fb0c0b5..26ac2dedd0ad5f3f7e40b3edf1f6eaf216956809 100644
--- a/media/remoting/remote_demuxer_stream_adapter_unittest.cc
+++ b/media/remoting/remote_demuxer_stream_adapter_unittest.cc
@@ -5,6 +5,7 @@
#include "media/remoting/remote_demuxer_stream_adapter.h"
#include <memory>
+#include <vector>
#include "base/callback_helpers.h"
#include "base/run_loop.h"
@@ -40,17 +41,32 @@ class MockRemoteDemuxerStreamAdapter {
std::move(main_task_runner), std::move(media_task_runner), name,
demuxer_stream, rpc_broker_->GetWeakPtr(),
rpc_broker_->GetUniqueHandle(), std::move(stream_sender_info),
- std::move(producer_handle)));
+ std::move(producer_handle),
+ base::Bind(&MockRemoteDemuxerStreamAdapter::OnError,
+ weak_factory_.GetWeakPtr())));
// Faking initialization with random callback handle to start mojo watcher.
demuxer_stream_adapter_->Initialize(3);
}
+ ~MockRemoteDemuxerStreamAdapter() {
+ // Make sure unit tests that did not expect errors did not cause any errors.
+ EXPECT_TRUE(errors_.empty());
+ }
+
int rpc_handle() const { return demuxer_stream_adapter_->rpc_handle(); }
+
base::WeakPtr<MockRemoteDemuxerStreamAdapter> GetWeakPtr() {
return weak_factory_.GetWeakPtr();
}
+ void DoDuplicateInitialize() { demuxer_stream_adapter_->Initialize(999); }
+
+ void TakeErrors(std::vector<StopTrigger>* errors) {
+ errors->swap(errors_);
+ errors_.clear();
+ }
+
// Fake to signal that it's in reading state.
void FakeReadUntil(int read_until_count, int callback_handle) {
std::unique_ptr<pb::RpcMessage> rpc(new pb::RpcMessage());
@@ -77,9 +93,14 @@ class MockRemoteDemuxerStreamAdapter {
CHECK(last_received_rpc_->ParseFromArray(message->data(), message->size()));
}
+ void OnError(StopTrigger stop_trigger) { errors_.push_back(stop_trigger); }
+
std::unique_ptr<RpcBroker> rpc_broker_;
std::unique_ptr<RemoteDemuxerStreamAdapter> demuxer_stream_adapter_;
std::unique_ptr<remoting::pb::RpcMessage> last_received_rpc_;
+
+ std::vector<StopTrigger> errors_;
+
base::WeakPtrFactory<MockRemoteDemuxerStreamAdapter> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(MockRemoteDemuxerStreamAdapter);
@@ -122,10 +143,11 @@ class RemoteDemuxerStreamAdapterTest : public ::testing::Test {
protected:
void SetUp() override { SetUpDataPipe(); }
+ // TODO(miu): Add separate media thread, to test threading also.
+ base::MessageLoop message_loop_;
std::unique_ptr<DummyDemuxerStream> demuxer_stream_;
std::unique_ptr<FakeRemotingDataStreamSender> data_stream_sender_;
std::unique_ptr<MockRemoteDemuxerStreamAdapter> demuxer_stream_adapter_;
- base::MessageLoop message_loop_;
private:
DISALLOW_COPY_AND_ASSIGN(RemoteDemuxerStreamAdapterTest);
@@ -247,5 +269,30 @@ TEST_F(RemoteDemuxerStreamAdapterTest, SendFrameAndSignalFlushMix) {
data_stream_sender_->ResetHistory();
}
+TEST_F(RemoteDemuxerStreamAdapterTest, DuplicateInitializeCausesFatalError) {
+ std::vector<StopTrigger> errors;
+ demuxer_stream_adapter_->TakeErrors(&errors);
+ ASSERT_TRUE(errors.empty());
+
+ demuxer_stream_adapter_->DoDuplicateInitialize();
+ demuxer_stream_adapter_->TakeErrors(&errors);
+ ASSERT_EQ(1u, errors.size());
+ EXPECT_EQ(PEERS_OUT_OF_SYNC, errors[0]);
+}
+
+TEST_F(RemoteDemuxerStreamAdapterTest, ClosingPipeCausesFatalError) {
+ std::vector<StopTrigger> errors;
+ demuxer_stream_adapter_->TakeErrors(&errors);
+ ASSERT_TRUE(errors.empty());
+
+ // Closes one end of mojo message and data pipes.
+ data_stream_sender_.reset();
+ RunPendingTasks(); // Allow notification from mojo to propagate.
+
+ demuxer_stream_adapter_->TakeErrors(&errors);
+ ASSERT_EQ(1u, errors.size());
+ EXPECT_EQ(MOJO_PIPE_ERROR, errors[0]);
+}
+
} // namesapce remoting
} // namespace media

Powered by Google App Engine
This is Rietveld 408576698