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

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

Issue 1987643002: Make default media device ID salts random by default (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: change return type from const string to string as it makes no difference Created 4 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
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 <stddef.h> 5 #include <stddef.h>
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 #elif defined(OS_WIN) 53 #elif defined(OS_WIN)
54 typedef media::AudioManagerWin AudioManagerPlatform; 54 typedef media::AudioManagerWin AudioManagerPlatform;
55 #elif defined(OS_ANDROID) 55 #elif defined(OS_ANDROID)
56 typedef media::AudioManagerAndroid AudioManagerPlatform; 56 typedef media::AudioManagerAndroid AudioManagerPlatform;
57 #else 57 #else
58 typedef media::FakeAudioManager AudioManagerPlatform; 58 typedef media::FakeAudioManager AudioManagerPlatform;
59 #endif 59 #endif
60 60
61 namespace { 61 namespace {
62 62
63 std::string ReturnMockSalt() { 63 const char kMockSalt[] = "";
64 return std::string();
65 }
66
67 ResourceContext::SaltCallback GetMockSaltCallback() {
68 return base::Bind(&ReturnMockSalt);
69 }
70 64
71 // This class mocks the audio manager and overrides some methods to ensure that 65 // This class mocks the audio manager and overrides some methods to ensure that
72 // we can run our tests on the buildbots. 66 // we can run our tests on the buildbots.
73 class MockAudioManager : public AudioManagerPlatform { 67 class MockAudioManager : public AudioManagerPlatform {
74 public: 68 public:
75 MockAudioManager() 69 MockAudioManager()
76 : AudioManagerPlatform(base::ThreadTaskRunnerHandle::Get(), 70 : AudioManagerPlatform(base::ThreadTaskRunnerHandle::Get(),
77 base::ThreadTaskRunnerHandle::Get(), 71 base::ThreadTaskRunnerHandle::Get(),
78 &fake_audio_log_factory_), 72 &fake_audio_log_factory_),
79 num_output_devices_(2), 73 num_output_devices_(2),
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 // quit the test. 303 // quit the test.
310 EXPECT_CALL(*this, Response(1)); 304 EXPECT_CALL(*this, Response(1));
311 run_loop_.Run(); 305 run_loop_.Run();
312 } 306 }
313 307
314 TEST_F(MediaStreamManagerTest, DeviceID) { 308 TEST_F(MediaStreamManagerTest, DeviceID) {
315 url::Origin security_origin(GURL("http://localhost")); 309 url::Origin security_origin(GURL("http://localhost"));
316 const std::string unique_default_id( 310 const std::string unique_default_id(
317 media::AudioDeviceDescription::kDefaultDeviceId); 311 media::AudioDeviceDescription::kDefaultDeviceId);
318 const std::string hashed_default_id = 312 const std::string hashed_default_id =
319 MediaStreamManager::GetHMACForMediaDeviceID( 313 MediaStreamManager::GetHMACForMediaDeviceID(kMockSalt, security_origin,
320 GetMockSaltCallback(), security_origin, unique_default_id); 314 unique_default_id);
321 EXPECT_TRUE(MediaStreamManager::DoesMediaDeviceIDMatchHMAC( 315 EXPECT_TRUE(MediaStreamManager::DoesMediaDeviceIDMatchHMAC(
322 GetMockSaltCallback(), security_origin, hashed_default_id, 316 kMockSalt, security_origin, hashed_default_id, unique_default_id));
323 unique_default_id));
324 EXPECT_EQ(unique_default_id, hashed_default_id); 317 EXPECT_EQ(unique_default_id, hashed_default_id);
325 318
326 const std::string unique_communications_id( 319 const std::string unique_communications_id(
327 media::AudioDeviceDescription::kCommunicationsDeviceId); 320 media::AudioDeviceDescription::kCommunicationsDeviceId);
328 const std::string hashed_communications_id = 321 const std::string hashed_communications_id =
329 MediaStreamManager::GetHMACForMediaDeviceID( 322 MediaStreamManager::GetHMACForMediaDeviceID(kMockSalt, security_origin,
330 GetMockSaltCallback(), security_origin, unique_communications_id); 323 unique_communications_id);
331 EXPECT_TRUE(MediaStreamManager::DoesMediaDeviceIDMatchHMAC( 324 EXPECT_TRUE(MediaStreamManager::DoesMediaDeviceIDMatchHMAC(
332 GetMockSaltCallback(), security_origin, hashed_communications_id, 325 kMockSalt, security_origin, hashed_communications_id,
333 unique_communications_id)); 326 unique_communications_id));
334 EXPECT_EQ(unique_communications_id, hashed_communications_id); 327 EXPECT_EQ(unique_communications_id, hashed_communications_id);
335 328
336 const std::string unique_other_id("other-unique-id"); 329 const std::string unique_other_id("other-unique-id");
337 const std::string hashed_other_id = 330 const std::string hashed_other_id =
338 MediaStreamManager::GetHMACForMediaDeviceID( 331 MediaStreamManager::GetHMACForMediaDeviceID(kMockSalt, security_origin,
339 GetMockSaltCallback(), security_origin, unique_other_id); 332 unique_other_id);
340 EXPECT_TRUE(MediaStreamManager::DoesMediaDeviceIDMatchHMAC( 333 EXPECT_TRUE(MediaStreamManager::DoesMediaDeviceIDMatchHMAC(
341 GetMockSaltCallback(), security_origin, hashed_other_id, 334 kMockSalt, security_origin, hashed_other_id, unique_other_id));
342 unique_other_id));
343 EXPECT_NE(unique_other_id, hashed_other_id); 335 EXPECT_NE(unique_other_id, hashed_other_id);
344 EXPECT_EQ(hashed_other_id.size(), 64U); 336 EXPECT_EQ(hashed_other_id.size(), 64U);
345 for (const char& c : hashed_other_id) 337 for (const char& c : hashed_other_id)
346 EXPECT_TRUE(base::IsAsciiDigit(c) || (c >= 'a' && c <= 'f')); 338 EXPECT_TRUE(base::IsAsciiDigit(c) || (c >= 'a' && c <= 'f'));
347 } 339 }
348 340
349 TEST_F(MediaStreamManagerTest, EnumerationOutputDevices) { 341 TEST_F(MediaStreamManagerTest, EnumerationOutputDevices) {
350 for (size_t num_devices = 0; num_devices < 3; num_devices++) { 342 for (size_t num_devices = 0; num_devices < 3; num_devices++) {
351 audio_manager_->SetNumAudioOutputDevices(num_devices); 343 audio_manager_->SetNumAudioOutputDevices(num_devices);
352 base::RunLoop run_loop; 344 base::RunLoop run_loop;
353 MockMediaStreamRequester requester(media_stream_manager_.get(), &run_loop, 345 MockMediaStreamRequester requester(media_stream_manager_.get(), &run_loop,
354 num_devices == 0 ? 0 : num_devices + 1, 346 num_devices == 0 ? 0 : num_devices + 1,
355 nullptr); 347 nullptr);
356 const int render_process_id = 1; 348 const int render_process_id = 1;
357 const int render_frame_id = 1; 349 const int render_frame_id = 1;
358 const int page_request_id = 1; 350 const int page_request_id = 1;
359 const url::Origin security_origin(GURL("http://localhost")); 351 const url::Origin security_origin(GURL("http://localhost"));
360 EXPECT_CALL(requester, 352 EXPECT_CALL(requester,
361 MockDevicesEnumerated(render_frame_id, page_request_id, _, _)); 353 MockDevicesEnumerated(render_frame_id, page_request_id, _, _));
362 std::string label = media_stream_manager_->EnumerateDevices( 354 std::string label = media_stream_manager_->EnumerateDevices(
363 &requester, render_process_id, render_frame_id, GetMockSaltCallback(), 355 &requester, render_process_id, render_frame_id, kMockSalt,
364 page_request_id, MEDIA_DEVICE_AUDIO_OUTPUT, security_origin); 356 page_request_id, MEDIA_DEVICE_AUDIO_OUTPUT, security_origin);
365 run_loop.Run(); 357 run_loop.Run();
366 // CancelRequest is necessary for enumeration requests. 358 // CancelRequest is necessary for enumeration requests.
367 media_stream_manager_->CancelRequest(label); 359 media_stream_manager_->CancelRequest(label);
368 } 360 }
369 } 361 }
370 362
371 TEST_F(MediaStreamManagerTest, NotifyDeviceChanges) { 363 TEST_F(MediaStreamManagerTest, NotifyDeviceChanges) {
372 const int render_process_id = 1; 364 const int render_process_id = 1;
373 const int render_frame_id = 1; 365 const int render_frame_id = 1;
374 const int page_request_id = 1; 366 const int page_request_id = 1;
375 const url::Origin security_origin(GURL("http://localhost")); 367 const url::Origin security_origin(GURL("http://localhost"));
376 368
377 // Check that device change notifications are received 369 // Check that device change notifications are received
378 { 370 {
379 // First run an enumeration to warm up the cache 371 // First run an enumeration to warm up the cache
380 base::RunLoop run_loop_enumeration; 372 base::RunLoop run_loop_enumeration;
381 base::RunLoop run_loop_device_change; 373 base::RunLoop run_loop_device_change;
382 MockMediaStreamRequester requester(media_stream_manager_.get(), 374 MockMediaStreamRequester requester(media_stream_manager_.get(),
383 &run_loop_enumeration, 3, 375 &run_loop_enumeration, 3,
384 &run_loop_device_change); 376 &run_loop_device_change);
385 audio_manager_->SetNumAudioInputDevices(2); 377 audio_manager_->SetNumAudioInputDevices(2);
386 requester.SubscribeToDeviceChangeNotifications(); 378 requester.SubscribeToDeviceChangeNotifications();
387 379
388 EXPECT_CALL(requester, 380 EXPECT_CALL(requester,
389 MockDevicesEnumerated(render_frame_id, page_request_id, _, _)); 381 MockDevicesEnumerated(render_frame_id, page_request_id, _, _));
390 EXPECT_CALL(requester, MockDevicesChanged(_)).Times(0); 382 EXPECT_CALL(requester, MockDevicesChanged(_)).Times(0);
391 std::string label = media_stream_manager_->EnumerateDevices( 383 std::string label = media_stream_manager_->EnumerateDevices(
392 &requester, render_process_id, render_frame_id, GetMockSaltCallback(), 384 &requester, render_process_id, render_frame_id, kMockSalt,
393 page_request_id, MEDIA_DEVICE_AUDIO_CAPTURE, security_origin); 385 page_request_id, MEDIA_DEVICE_AUDIO_CAPTURE, security_origin);
394 run_loop_enumeration.Run(); 386 run_loop_enumeration.Run();
395 media_stream_manager_->CancelRequest(label); 387 media_stream_manager_->CancelRequest(label);
396 388
397 // Simulate device change 389 // Simulate device change
398 EXPECT_CALL(requester, MockDevicesChanged(_)); 390 EXPECT_CALL(requester, MockDevicesChanged(_));
399 audio_manager_->SetNumAudioInputDevices(3); 391 audio_manager_->SetNumAudioInputDevices(3);
400 media_stream_manager_->OnDevicesChanged( 392 media_stream_manager_->OnDevicesChanged(
401 base::SystemMonitor::DEVTYPE_AUDIO_CAPTURE); 393 base::SystemMonitor::DEVTYPE_AUDIO_CAPTURE);
402 run_loop_device_change.Run(); 394 run_loop_device_change.Run();
(...skipping 10 matching lines...) Expand all
413 // Bogus OnDeviceChange, as devices have not changed. Should not trigger 405 // Bogus OnDeviceChange, as devices have not changed. Should not trigger
414 // notification. 406 // notification.
415 EXPECT_CALL(requester, MockDevicesChanged(_)).Times(0); 407 EXPECT_CALL(requester, MockDevicesChanged(_)).Times(0);
416 media_stream_manager_->OnDevicesChanged( 408 media_stream_manager_->OnDevicesChanged(
417 base::SystemMonitor::DEVTYPE_AUDIO_CAPTURE); 409 base::SystemMonitor::DEVTYPE_AUDIO_CAPTURE);
418 410
419 // Do enumeration to be able to quit the RunLoop. 411 // Do enumeration to be able to quit the RunLoop.
420 EXPECT_CALL(requester, 412 EXPECT_CALL(requester,
421 MockDevicesEnumerated(render_frame_id, page_request_id, _, _)); 413 MockDevicesEnumerated(render_frame_id, page_request_id, _, _));
422 std::string label = media_stream_manager_->EnumerateDevices( 414 std::string label = media_stream_manager_->EnumerateDevices(
423 &requester, render_process_id, render_frame_id, GetMockSaltCallback(), 415 &requester, render_process_id, render_frame_id, kMockSalt,
424 page_request_id, MEDIA_DEVICE_AUDIO_CAPTURE, security_origin); 416 page_request_id, MEDIA_DEVICE_AUDIO_CAPTURE, security_origin);
425 run_loop.Run(); 417 run_loop.Run();
426 media_stream_manager_->CancelRequest(label); 418 media_stream_manager_->CancelRequest(label);
427 } 419 }
428 } 420 }
429 421
430 } // namespace content 422 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/media/media_stream_manager.cc ('k') | content/browser/resource_context_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698