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

Side by Side Diff: chrome/browser/extensions/api/webrtc_audio_private/webrtc_audio_private_browsertest.cc

Issue 54863002: Implement a salt for MediaSource IDs that can be cleared by a user. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed jois nit. Created 7 years 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "base/json/json_writer.h" 5 #include "base/json/json_writer.h"
6 #include "base/message_loop/message_loop.h" 6 #include "base/message_loop/message_loop.h"
7 #include "base/strings/string_util.h" 7 #include "base/strings/string_util.h"
8 #include "base/strings/stringprintf.h" 8 #include "base/strings/stringprintf.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "base/synchronization/waitable_event.h" 10 #include "base/synchronization/waitable_event.h"
11 #include "base/threading/platform_thread.h" 11 #include "base/threading/platform_thread.h"
12 #include "base/time/time.h" 12 #include "base/time/time.h"
13 #include "chrome/browser/browser_process.h" 13 #include "chrome/browser/browser_process.h"
14 #include "chrome/browser/extensions/api/webrtc_audio_private/webrtc_audio_privat e_api.h" 14 #include "chrome/browser/extensions/api/webrtc_audio_private/webrtc_audio_privat e_api.h"
15 #include "chrome/browser/extensions/component_loader.h" 15 #include "chrome/browser/extensions/component_loader.h"
16 #include "chrome/browser/extensions/extension_apitest.h" 16 #include "chrome/browser/extensions/extension_apitest.h"
17 #include "chrome/browser/extensions/extension_function_test_utils.h" 17 #include "chrome/browser/extensions/extension_function_test_utils.h"
18 #include "chrome/browser/extensions/extension_tab_util.h" 18 #include "chrome/browser/extensions/extension_tab_util.h"
19 #include "chrome/browser/media/webrtc_log_uploader.h" 19 #include "chrome/browser/media/webrtc_log_uploader.h"
20 #include "chrome/browser/ui/browser.h" 20 #include "chrome/browser/ui/browser.h"
21 #include "chrome/browser/ui/tabs/tab_strip_model.h" 21 #include "chrome/browser/ui/tabs/tab_strip_model.h"
22 #include "chrome/test/base/in_process_browser_test.h" 22 #include "chrome/test/base/in_process_browser_test.h"
23 #include "chrome/test/base/ui_test_utils.h" 23 #include "chrome/test/base/ui_test_utils.h"
24 #include "content/public/browser/browser_thread.h"
24 #include "content/public/browser/media_device_id.h" 25 #include "content/public/browser/media_device_id.h"
25 #include "content/public/browser/web_contents.h" 26 #include "content/public/browser/web_contents.h"
26 #include "content/public/test/browser_test_utils.h" 27 #include "content/public/test/browser_test_utils.h"
27 #include "extensions/common/permissions/permission_set.h" 28 #include "extensions/common/permissions/permission_set.h"
28 #include "extensions/common/permissions/permissions_data.h" 29 #include "extensions/common/permissions/permissions_data.h"
29 #include "media/audio/audio_manager.h" 30 #include "media/audio/audio_manager.h"
30 #include "net/test/embedded_test_server/embedded_test_server.h" 31 #include "net/test/embedded_test_server/embedded_test_server.h"
31 #include "testing/gtest/include/gtest/gtest.h" 32 #include "testing/gtest/include/gtest/gtest.h"
32 33
33 using base::JSONWriter; 34 using base::JSONWriter;
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 FROM_HERE, 108 FROM_HERE,
108 base::Bind(&WebrtcAudioPrivateTest::GetAudioDeviceNames, this, 109 base::Bind(&WebrtcAudioPrivateTest::GetAudioDeviceNames, this,
109 EnumerationFunc, device_names)); 110 EnumerationFunc, device_names));
110 enumeration_event_.Wait(); 111 enumeration_event_.Wait();
111 } else { 112 } else {
112 (audio_manager->*EnumerationFunc)(device_names); 113 (audio_manager->*EnumerationFunc)(device_names);
113 enumeration_event_.Signal(); 114 enumeration_event_.Signal();
114 } 115 }
115 } 116 }
116 117
118 // Synchronously (from the calling thread's point of view) retrieve the
119 // source id in the |origin| on the IO thread. On return,
120 // |source_id_in_origin| contains the id |raw_device_id| is known by in
121 // the origin.
122 void GetSourceIDInOrigin(content::ResourceContext* resource_context,
123 GURL origin,
124 const std::string& raw_device_id,
125 std::string* source_id_in_origin) {
126 if (!content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)) {
127 content::BrowserThread::PostTask(
128 content::BrowserThread::IO, FROM_HERE,
129 base::Bind(&WebrtcAudioPrivateTest::GetSourceIDInOrigin,
130 this, resource_context, origin, raw_device_id,
131 source_id_in_origin));
132 enumeration_event_.Wait();
133 } else {
134 *source_id_in_origin = content::GetHMACForMediaDeviceID(
135 resource_context,
136 origin,
137 raw_device_id);
138 enumeration_event_.Signal();
139 }
140 }
141
117 // Event used to signal completion of enumeration. 142 // Event used to signal completion of enumeration.
118 base::WaitableEvent enumeration_event_; 143 base::WaitableEvent enumeration_event_;
119 }; 144 };
120 145
121 IN_PROC_BROWSER_TEST_F(WebrtcAudioPrivateTest, GetSinks) { 146 IN_PROC_BROWSER_TEST_F(WebrtcAudioPrivateTest, GetSinks) {
122 AudioDeviceNames devices; 147 AudioDeviceNames devices;
123 GetAudioDeviceNames(&AudioManager::GetAudioOutputDeviceNames, &devices); 148 GetAudioDeviceNames(&AudioManager::GetAudioOutputDeviceNames, &devices);
124 149
125 scoped_refptr<WebrtcAudioPrivateGetSinksFunction> function = 150 scoped_refptr<WebrtcAudioPrivateGetSinksFunction> function =
126 new WebrtcAudioPrivateGetSinksFunction(); 151 new WebrtcAudioPrivateGetSinksFunction();
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 // Get the list of input devices. We can cheat in the unit test and 281 // Get the list of input devices. We can cheat in the unit test and
257 // run this on the main thread since nobody else will be running at 282 // run this on the main thread since nobody else will be running at
258 // the same time. 283 // the same time.
259 AudioDeviceNames devices; 284 AudioDeviceNames devices;
260 GetAudioDeviceNames(&AudioManager::GetAudioInputDeviceNames, &devices); 285 GetAudioDeviceNames(&AudioManager::GetAudioInputDeviceNames, &devices);
261 286
262 // Try to get an associated sink for each source. 287 // Try to get an associated sink for each source.
263 for (AudioDeviceNames::const_iterator device = devices.begin(); 288 for (AudioDeviceNames::const_iterator device = devices.begin();
264 device != devices.end(); 289 device != devices.end();
265 ++device) { 290 ++device) {
266 std::string raw_source_id = device->unique_id; 291 scoped_refptr<WebrtcAudioPrivateGetAssociatedSinkFunction> function =
267 VLOG(2) << "Trying to find associated sink for device " << raw_source_id; 292 new WebrtcAudioPrivateGetAssociatedSinkFunction();
293
294 std::string raw_device_id = device->unique_id;
295 VLOG(2) << "Trying to find associated sink for device " << raw_device_id;
296 std::string source_id_in_origin;
268 GURL origin(GURL("http://www.google.com/").GetOrigin()); 297 GURL origin(GURL("http://www.google.com/").GetOrigin());
269 std::string source_id_in_origin = 298 GetSourceIDInOrigin(profile()->GetResourceContext(),
270 content::GetHMACForMediaDeviceID(origin, raw_source_id); 299 origin,
300 raw_device_id,
301 &source_id_in_origin);
271 302
272 ListValue parameters; 303 ListValue parameters;
273 parameters.AppendString(origin.spec()); 304 parameters.AppendString(origin.spec());
274 parameters.AppendString(source_id_in_origin); 305 parameters.AppendString(source_id_in_origin);
275 std::string parameter_string; 306 std::string parameter_string;
276 JSONWriter::Write(&parameters, &parameter_string); 307 JSONWriter::Write(&parameters, &parameter_string);
277 308
278 scoped_refptr<WebrtcAudioPrivateGetAssociatedSinkFunction> function =
279 new WebrtcAudioPrivateGetAssociatedSinkFunction();
280 scoped_ptr<base::Value> result( 309 scoped_ptr<base::Value> result(
281 RunFunctionAndReturnSingleResult(function.get(), 310 RunFunctionAndReturnSingleResult(function.get(),
282 parameter_string, 311 parameter_string,
283 browser())); 312 browser()));
284 std::string result_string; 313 std::string result_string;
285 JSONWriter::Write(result.get(), &result_string); 314 JSONWriter::Write(result.get(), &result_string);
286 VLOG(2) << "Results: " << result_string; 315 VLOG(2) << "Results: " << result_string;
287 } 316 }
288 } 317 }
289 318
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 371
343 ASSERT_TRUE(content::ExecuteScript(tab, "browsertestRunAllTests();")); 372 ASSERT_TRUE(content::ExecuteScript(tab, "browsertestRunAllTests();"));
344 373
345 content::TitleWatcher title_watcher(tab, ASCIIToUTF16("success")); 374 content::TitleWatcher title_watcher(tab, ASCIIToUTF16("success"));
346 title_watcher.AlsoWaitForTitle(ASCIIToUTF16("failure")); 375 title_watcher.AlsoWaitForTitle(ASCIIToUTF16("failure"));
347 string16 result = title_watcher.WaitAndGetTitle(); 376 string16 result = title_watcher.WaitAndGetTitle();
348 EXPECT_EQ(ASCIIToUTF16("success"), result); 377 EXPECT_EQ(ASCIIToUTF16("success"), result);
349 } 378 }
350 379
351 } // namespace extensions 380 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698