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

Side by Side Diff: content/renderer/media/webrtc/webrtc_media_stream_adapter_map_unittest.cc

Issue 2946063003: WebRtcMediaStreamAdapterMap added. (Closed)
Patch Set: Reupload from new machine so that dependent patch sets can be made Created 3 years, 6 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2017 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 "content/renderer/media/webrtc/webrtc_media_stream_adapter_map.h"
6
7 #include <memory>
8
9 #include "base/memory/ref_counted.h"
10 #include "base/message_loop/message_loop.h"
11 #include "base/run_loop.h"
12 #include "base/single_thread_task_runner.h"
13 #include "base/strings/string_number_conversions.h"
14 #include "content/child/child_process.h"
15 #include "content/renderer/media/media_stream.h"
16 #include "content/renderer/media/media_stream_video_source.h"
17 #include "content/renderer/media/media_stream_video_track.h"
18 #include "content/renderer/media/mock_audio_device_factory.h"
19 #include "content/renderer/media/mock_media_stream_video_source.h"
20 #include "content/renderer/media/webrtc/mock_peer_connection_dependency_factory. h"
21 #include "content/renderer/media/webrtc/webrtc_media_stream_track_adapter_map.h"
22 #include "testing/gtest/include/gtest/gtest.h"
23 #include "third_party/WebKit/public/platform/WebMediaStream.h"
24 #include "third_party/WebKit/public/platform/WebMediaStreamSource.h"
25 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h"
26 #include "third_party/WebKit/public/platform/WebString.h"
27 #include "third_party/WebKit/public/platform/WebVector.h"
28 #include "third_party/WebKit/public/web/WebHeap.h"
29
30 using ::testing::_;
31
32 namespace content {
33
34 class WebRtcMediaStreamAdapterMapTest : public ::testing::Test {
35 public:
36 void SetUp() override {
37 dependency_factory_.reset(new MockPeerConnectionDependencyFactory());
38 main_thread_ = base::ThreadTaskRunnerHandle::Get();
39 map_ = new WebRtcMediaStreamAdapterMap(
40 dependency_factory_.get(),
41 new WebRtcMediaStreamTrackAdapterMap(dependency_factory_.get()));
42 }
43
44 void TearDown() override { blink::WebHeap::CollectAllGarbageForTesting(); }
45
46 blink::WebMediaStream CreateLocalStream(const std::string& id) {
47 blink::WebVector<blink::WebMediaStreamTrack> web_video_tracks(
48 static_cast<size_t>(1));
49 blink::WebMediaStreamSource video_source;
50 video_source.Initialize("video_source",
51 blink::WebMediaStreamSource::kTypeVideo,
52 "video_source", false /* remote */);
53 MediaStreamVideoSource* native_source =
54 new MockMediaStreamVideoSource(false);
55 video_source.SetExtraData(native_source);
56 web_video_tracks[0] = MediaStreamVideoTrack::CreateVideoTrack(
57 native_source, MediaStreamVideoSource::ConstraintsCallback(), true);
58
59 blink::WebMediaStream web_stream;
60 web_stream.Initialize(blink::WebString::FromUTF8(id),
61 blink::WebVector<blink::WebMediaStreamTrack>(),
62 web_video_tracks);
63 web_stream.SetExtraData(new MediaStream());
64 return web_stream;
65 }
66
67 protected:
68 // Message loop and child processes is needed for task queues and threading to
69 // work, as is necessary to create tracks and adapters.
70 base::MessageLoop message_loop_;
71 ChildProcess child_process_;
72
73 std::unique_ptr<MockPeerConnectionDependencyFactory> dependency_factory_;
74 scoped_refptr<base::SingleThreadTaskRunner> main_thread_;
75 scoped_refptr<WebRtcMediaStreamAdapterMap> map_;
76 };
77
78 TEST_F(WebRtcMediaStreamAdapterMapTest, AddAndRemoveLocalStreamAdapter) {
79 blink::WebMediaStream local_stream = CreateLocalStream("local_stream");
80 std::unique_ptr<WebRtcMediaStreamAdapterMap::AdapterRef> adapter_ref =
81 map_->GetOrCreateLocalStreamAdapter(local_stream);
82 EXPECT_TRUE(adapter_ref);
83 EXPECT_TRUE(adapter_ref->adapter().IsEqual(local_stream));
84 EXPECT_EQ(1u, map_->GetLocalStreamCount());
85
86 std::unique_ptr<WebRtcMediaStreamAdapterMap::AdapterRef> adapter_ref2 =
87 map_->GetLocalStreamAdapter("local_stream");
88 EXPECT_TRUE(adapter_ref2);
89 EXPECT_EQ(&adapter_ref2->adapter(), &adapter_ref->adapter());
90 EXPECT_EQ(1u, map_->GetLocalStreamCount());
91
92 adapter_ref.reset();
93 EXPECT_EQ(1u, map_->GetLocalStreamCount());
94 adapter_ref2.reset();
95 EXPECT_EQ(0u, map_->GetLocalStreamCount());
96 }
97
98 TEST_F(WebRtcMediaStreamAdapterMapTest, GetLocalStreamAdapterInvalidID) {
99 EXPECT_FALSE(map_->GetLocalStreamAdapter("invalid"));
100 }
101
102 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698