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

Side by Side Diff: content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc

Issue 483523006: Check all settings when checking mic and camera access (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase. Created 6 years, 3 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <string> 5 #include <string>
6 #include <queue> 6 #include <queue>
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/callback_helpers.h" 9 #include "base/callback_helpers.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 const int kPageRequestId = 7; 45 const int kPageRequestId = 7;
46 46
47 namespace content { 47 namespace content {
48 48
49 class MockMediaStreamDispatcherHost : public MediaStreamDispatcherHost, 49 class MockMediaStreamDispatcherHost : public MediaStreamDispatcherHost,
50 public TestContentBrowserClient { 50 public TestContentBrowserClient {
51 public: 51 public:
52 MockMediaStreamDispatcherHost( 52 MockMediaStreamDispatcherHost(
53 const ResourceContext::SaltCallback salt_callback, 53 const ResourceContext::SaltCallback salt_callback,
54 const scoped_refptr<base::MessageLoopProxy>& message_loop, 54 const scoped_refptr<base::MessageLoopProxy>& message_loop,
55 MediaStreamManager* manager, 55 MediaStreamManager* manager)
56 ResourceContext* resource_context) 56 : MediaStreamDispatcherHost(kProcessId, salt_callback, manager),
57 : MediaStreamDispatcherHost(kProcessId, salt_callback, manager,
58 resource_context),
59 message_loop_(message_loop), 57 message_loop_(message_loop),
60 current_ipc_(NULL) {} 58 current_ipc_(NULL) {}
61 59
62 // A list of mock methods. 60 // A list of mock methods.
63 MOCK_METHOD4(OnStreamGenerated, 61 MOCK_METHOD4(OnStreamGenerated,
64 void(int routing_id, int request_id, int audio_array_size, 62 void(int routing_id, int request_id, int audio_array_size,
65 int video_array_size)); 63 int video_array_size));
66 MOCK_METHOD3(OnStreamGenerationFailed, void(int routing_id, 64 MOCK_METHOD3(OnStreamGenerationFailed, void(int routing_id,
67 int request_id, 65 int request_id,
68 MediaStreamRequestResult result)); 66 MediaStreamRequestResult result));
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 }; 205 };
208 206
209 class MockMediaStreamUIProxy : public FakeMediaStreamUIProxy { 207 class MockMediaStreamUIProxy : public FakeMediaStreamUIProxy {
210 public: 208 public:
211 MOCK_METHOD2( 209 MOCK_METHOD2(
212 OnStarted, 210 OnStarted,
213 void(const base::Closure& stop, 211 void(const base::Closure& stop,
214 const MediaStreamUIProxy::WindowIdCallback& window_id_callback)); 212 const MediaStreamUIProxy::WindowIdCallback& window_id_callback));
215 }; 213 };
216 214
215 class MediaStreamManagerForTest : public MediaStreamManager {
216 public:
217 MediaStreamManagerForTest(media::AudioManager* audio_manager)
218 : MediaStreamManager(audio_manager),
219 mic_access_(true),
220 camera_access_(true) {}
221
222 virtual ~MediaStreamManagerForTest() {}
223
224 void set_mic_access(bool allow_access) {
225 mic_access_ = allow_access;
226 }
227
228 void set_camera_access(bool allow_access) {
229 camera_access_ = allow_access;
230 }
231
232 private:
233 virtual bool CheckMediaAccessOnUI(int render_process_id,
234 const GURL& security_origin,
235 MediaStreamType type) OVERRIDE {
236 if (type == MEDIA_DEVICE_AUDIO_CAPTURE)
237 return mic_access_;
238 else if (type == MEDIA_DEVICE_VIDEO_CAPTURE)
239 return camera_access_;
240 return false;
241 }
242
243 bool mic_access_;
244 bool camera_access_;
245 };
246
217 class MediaStreamDispatcherHostTest : public testing::Test { 247 class MediaStreamDispatcherHostTest : public testing::Test {
218 public: 248 public:
219 MediaStreamDispatcherHostTest() 249 MediaStreamDispatcherHostTest()
220 : old_browser_client_(NULL), 250 : old_browser_client_(NULL),
221 thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP), 251 thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP),
222 origin_("https://test.com") { 252 origin_("https://test.com") {
223 audio_manager_.reset( 253 audio_manager_.reset(
224 new media::MockAudioManager(base::MessageLoopProxy::current())); 254 new media::MockAudioManager(base::MessageLoopProxy::current()));
225 // Make sure we use fake devices to avoid long delays. 255 // Make sure we use fake devices to avoid long delays.
226 base::CommandLine::ForCurrentProcess()->AppendSwitch( 256 base::CommandLine::ForCurrentProcess()->AppendSwitch(
227 switches::kUseFakeDeviceForMediaStream); 257 switches::kUseFakeDeviceForMediaStream);
228 // Create our own MediaStreamManager. 258 // Create our own MediaStreamManager.
229 media_stream_manager_.reset(new MediaStreamManager(audio_manager_.get())); 259 media_stream_manager_.reset(
260 new MediaStreamManagerForTest(audio_manager_.get()));
230 video_capture_device_factory_ = 261 video_capture_device_factory_ =
231 static_cast<media::FakeVideoCaptureDeviceFactory*>( 262 static_cast<media::FakeVideoCaptureDeviceFactory*>(
232 media_stream_manager_->video_capture_manager() 263 media_stream_manager_->video_capture_manager()
233 ->video_capture_device_factory()); 264 ->video_capture_device_factory());
234 DCHECK(video_capture_device_factory_); 265 DCHECK(video_capture_device_factory_);
235 266
236 MockResourceContext* mock_resource_context = 267 MockResourceContext* mock_resource_context =
237 static_cast<MockResourceContext*>( 268 static_cast<MockResourceContext*>(
238 browser_context_.GetResourceContext()); 269 browser_context_.GetResourceContext());
239 mock_resource_context->set_mic_access(true);
240 mock_resource_context->set_camera_access(true);
241 270
242 host_ = new MockMediaStreamDispatcherHost( 271 host_ = new MockMediaStreamDispatcherHost(
243 mock_resource_context->GetMediaDeviceIDSalt(), 272 mock_resource_context->GetMediaDeviceIDSalt(),
244 base::MessageLoopProxy::current(), 273 base::MessageLoopProxy::current(),
245 media_stream_manager_.get(), 274 media_stream_manager_.get());
246 mock_resource_context);
247 275
248 // Use the fake content client and browser. 276 // Use the fake content client and browser.
249 content_client_.reset(new TestContentClient()); 277 content_client_.reset(new TestContentClient());
250 SetContentClient(content_client_.get()); 278 SetContentClient(content_client_.get());
251 old_browser_client_ = SetBrowserClientForTesting(host_.get()); 279 old_browser_client_ = SetBrowserClientForTesting(host_.get());
252 } 280 }
253 281
254 virtual ~MediaStreamDispatcherHostTest() { 282 virtual ~MediaStreamDispatcherHostTest() {
255 } 283 }
256 284
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
410 } 438 }
411 439
412 void AddSourceIdConstraint(const std::string& source_id, 440 void AddSourceIdConstraint(const std::string& source_id,
413 StreamOptions::Constraints* constraints) { 441 StreamOptions::Constraints* constraints) {
414 constraints->push_back(StreamOptions::Constraint(kMediaStreamSourceInfoId, 442 constraints->push_back(StreamOptions::Constraint(kMediaStreamSourceInfoId,
415 source_id)); 443 source_id));
416 } 444 }
417 445
418 scoped_refptr<MockMediaStreamDispatcherHost> host_; 446 scoped_refptr<MockMediaStreamDispatcherHost> host_;
419 scoped_ptr<media::AudioManager> audio_manager_; 447 scoped_ptr<media::AudioManager> audio_manager_;
420 scoped_ptr<MediaStreamManager> media_stream_manager_; 448 scoped_ptr<MediaStreamManagerForTest> media_stream_manager_;
421 ContentBrowserClient* old_browser_client_; 449 ContentBrowserClient* old_browser_client_;
422 scoped_ptr<ContentClient> content_client_; 450 scoped_ptr<ContentClient> content_client_;
423 content::TestBrowserThreadBundle thread_bundle_; 451 content::TestBrowserThreadBundle thread_bundle_;
424 content::TestBrowserContext browser_context_; 452 content::TestBrowserContext browser_context_;
425 media::AudioDeviceNames physical_audio_devices_; 453 media::AudioDeviceNames physical_audio_devices_;
426 media::VideoCaptureDevice::Names physical_video_devices_; 454 media::VideoCaptureDevice::Names physical_video_devices_;
427 GURL origin_; 455 GURL origin_;
428 media::FakeVideoCaptureDeviceFactory* video_capture_device_factory_; 456 media::FakeVideoCaptureDeviceFactory* video_capture_device_factory_;
429 }; 457 };
430 458
(...skipping 456 matching lines...) Expand 10 before | Expand all | Expand 10 after
887 EXPECT_TRUE(DoesContainLabels(host_->enumerated_devices_)); 915 EXPECT_TRUE(DoesContainLabels(host_->enumerated_devices_));
888 } 916 }
889 917
890 TEST_F(MediaStreamDispatcherHostTest, EnumerateVideoDevices) { 918 TEST_F(MediaStreamDispatcherHostTest, EnumerateVideoDevices) {
891 EnumerateDevicesAndWaitForResult(kRenderId, kPageRequestId, 919 EnumerateDevicesAndWaitForResult(kRenderId, kPageRequestId,
892 MEDIA_DEVICE_VIDEO_CAPTURE); 920 MEDIA_DEVICE_VIDEO_CAPTURE);
893 EXPECT_TRUE(DoesContainLabels(host_->enumerated_devices_)); 921 EXPECT_TRUE(DoesContainLabels(host_->enumerated_devices_));
894 } 922 }
895 923
896 TEST_F(MediaStreamDispatcherHostTest, EnumerateAudioDevicesNoAccess) { 924 TEST_F(MediaStreamDispatcherHostTest, EnumerateAudioDevicesNoAccess) {
897 MockResourceContext* mock_resource_context = 925 media_stream_manager_->set_mic_access(false);
898 static_cast<MockResourceContext*>(browser_context_.GetResourceContext());
899 mock_resource_context->set_mic_access(false);
900 EnumerateDevicesAndWaitForResult(kRenderId, kPageRequestId, 926 EnumerateDevicesAndWaitForResult(kRenderId, kPageRequestId,
901 MEDIA_DEVICE_AUDIO_CAPTURE); 927 MEDIA_DEVICE_AUDIO_CAPTURE);
902 EXPECT_TRUE(DoesNotContainLabels(host_->enumerated_devices_)); 928 EXPECT_TRUE(DoesNotContainLabels(host_->enumerated_devices_));
903 } 929 }
904 930
905 TEST_F(MediaStreamDispatcherHostTest, EnumerateVideoDevicesNoAccess) { 931 TEST_F(MediaStreamDispatcherHostTest, EnumerateVideoDevicesNoAccess) {
906 MockResourceContext* mock_resource_context = 932 media_stream_manager_->set_camera_access(false);
907 static_cast<MockResourceContext*>(browser_context_.GetResourceContext());
908 mock_resource_context->set_camera_access(false);
909 EnumerateDevicesAndWaitForResult(kRenderId, kPageRequestId, 933 EnumerateDevicesAndWaitForResult(kRenderId, kPageRequestId,
910 MEDIA_DEVICE_VIDEO_CAPTURE); 934 MEDIA_DEVICE_VIDEO_CAPTURE);
911 EXPECT_TRUE(DoesNotContainLabels(host_->enumerated_devices_)); 935 EXPECT_TRUE(DoesNotContainLabels(host_->enumerated_devices_));
912 } 936 }
913 937
914 }; // namespace content 938 }; // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698