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

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

Issue 2563653002: Replace AudioManager::GetAudio*DeviceNames with AudioManager::GetAudio*DeviceDescriptions (Closed)
Patch Set: nit fixes Created 4 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
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 <stddef.h> 5 #include <stddef.h>
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/json/json_writer.h" 10 #include "base/json/json_writer.h"
(...skipping 25 matching lines...) Expand all
36 #include "extensions/common/permissions/permission_set.h" 36 #include "extensions/common/permissions/permission_set.h"
37 #include "extensions/common/permissions/permissions_data.h" 37 #include "extensions/common/permissions/permissions_data.h"
38 #include "media/audio/audio_device_description.h" 38 #include "media/audio/audio_device_description.h"
39 #include "media/audio/audio_manager.h" 39 #include "media/audio/audio_manager.h"
40 #include "net/test/embedded_test_server/embedded_test_server.h" 40 #include "net/test/embedded_test_server/embedded_test_server.h"
41 #include "testing/gtest/include/gtest/gtest.h" 41 #include "testing/gtest/include/gtest/gtest.h"
42 42
43 using base::JSONWriter; 43 using base::JSONWriter;
44 using content::RenderProcessHost; 44 using content::RenderProcessHost;
45 using content::WebContents; 45 using content::WebContents;
46 using media::AudioDeviceNames; 46 using media::AudioDeviceDescriptions;
47 using media::AudioManager; 47 using media::AudioManager;
48 48
49 namespace extensions { 49 namespace extensions {
50 50
51 using extension_function_test_utils::RunFunctionAndReturnError; 51 using extension_function_test_utils::RunFunctionAndReturnError;
52 using extension_function_test_utils::RunFunctionAndReturnSingleResult; 52 using extension_function_test_utils::RunFunctionAndReturnSingleResult;
53 53
54 class AudioWaitingExtensionTest : public ExtensionApiTest { 54 class AudioWaitingExtensionTest : public ExtensionApiTest {
55 protected: 55 protected:
56 void WaitUntilAudioIsPlaying(WebContents* tab) { 56 void WaitUntilAudioIsPlaying(WebContents* tab) {
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 function->set_source_url(source_url_); 122 function->set_source_url(source_url_);
123 123
124 std::unique_ptr<base::Value> result( 124 std::unique_ptr<base::Value> result(
125 RunFunctionAndReturnSingleResult(function.get(), "[]", browser())); 125 RunFunctionAndReturnSingleResult(function.get(), "[]", browser()));
126 result->GetAsList(sink_list); 126 result->GetAsList(sink_list);
127 return result; 127 return result;
128 } 128 }
129 129
130 // Synchronously (from the calling thread's point of view) runs the 130 // Synchronously (from the calling thread's point of view) runs the
131 // given enumeration function on the device thread. On return, 131 // given enumeration function on the device thread. On return,
132 // |device_names| has been filled with the device names resulting 132 // |device_descriptions| has been filled with the device descriptions
133 // from that call. 133 // resulting from that call.
134 void GetAudioDeviceNames( 134 void GetAudioDeviceDescriptions(
135 void (AudioManager::*EnumerationFunc)(AudioDeviceNames*), 135 void (AudioManager::*EnumerationFunc)(AudioDeviceDescriptions*),
136 AudioDeviceNames* device_names) { 136 AudioDeviceDescriptions* device_descriptions) {
137 AudioManager* audio_manager = AudioManager::Get(); 137 AudioManager* audio_manager = AudioManager::Get();
138 138
139 if (!audio_manager->GetTaskRunner()->BelongsToCurrentThread()) { 139 if (!audio_manager->GetTaskRunner()->BelongsToCurrentThread()) {
140 audio_manager->GetTaskRunner()->PostTask( 140 audio_manager->GetTaskRunner()->PostTask(
141 FROM_HERE, 141 FROM_HERE,
142 base::Bind(&WebrtcAudioPrivateTest::GetAudioDeviceNames, 142 base::Bind(&WebrtcAudioPrivateTest::GetAudioDeviceDescriptions,
143 base::Unretained(this), 143 base::Unretained(this), EnumerationFunc,
144 EnumerationFunc, device_names)); 144 device_descriptions));
145 enumeration_event_.Wait(); 145 enumeration_event_.Wait();
146 } else { 146 } else {
147 (audio_manager->*EnumerationFunc)(device_names); 147 (audio_manager->*EnumerationFunc)(device_descriptions);
148 enumeration_event_.Signal(); 148 enumeration_event_.Signal();
149 } 149 }
150 } 150 }
151 151
152 // Synchronously (from the calling thread's point of view) retrieve the 152 // Synchronously (from the calling thread's point of view) retrieve the
153 // device id in the |origin| on the IO thread. On return, 153 // device id in the |origin| on the IO thread. On return,
154 // |id_in_origin| contains the id |raw_device_id| is known by in 154 // |id_in_origin| contains the id |raw_device_id| is known by in
155 // the origin. 155 // the origin.
156 void GetIDInOrigin(content::ResourceContext* resource_context, 156 void GetIDInOrigin(content::ResourceContext* resource_context,
157 GURL origin, 157 GURL origin,
(...skipping 16 matching lines...) Expand all
174 174
175 // Event used to signal completion of enumeration. 175 // Event used to signal completion of enumeration.
176 base::WaitableEvent enumeration_event_; 176 base::WaitableEvent enumeration_event_;
177 177
178 GURL source_url_; 178 GURL source_url_;
179 }; 179 };
180 180
181 #if !defined(OS_MACOSX) 181 #if !defined(OS_MACOSX)
182 // http://crbug.com/334579 182 // http://crbug.com/334579
183 IN_PROC_BROWSER_TEST_F(WebrtcAudioPrivateTest, GetSinks) { 183 IN_PROC_BROWSER_TEST_F(WebrtcAudioPrivateTest, GetSinks) {
184 AudioDeviceNames devices; 184 AudioDeviceDescriptions devices;
185 GetAudioDeviceNames(&AudioManager::GetAudioOutputDeviceNames, &devices); 185 GetAudioDeviceDescriptions(&AudioManager::GetAudioOutputDeviceDescriptions,
186 &devices);
186 187
187 base::ListValue* sink_list = NULL; 188 base::ListValue* sink_list = NULL;
188 std::unique_ptr<base::Value> result = InvokeGetSinks(&sink_list); 189 std::unique_ptr<base::Value> result = InvokeGetSinks(&sink_list);
189 190
190 std::string result_string; 191 std::string result_string;
191 JSONWriter::Write(*result, &result_string); 192 JSONWriter::Write(*result, &result_string);
192 VLOG(2) << result_string; 193 VLOG(2) << result_string;
193 194
194 EXPECT_EQ(devices.size(), sink_list->GetSize()); 195 EXPECT_EQ(devices.size(), sink_list->GetSize());
195 196
196 // Iterate through both lists in lockstep and compare. The order 197 // Iterate through both lists in lockstep and compare. The order
197 // should be identical. 198 // should be identical.
198 size_t ix = 0; 199 size_t ix = 0;
199 AudioDeviceNames::const_iterator it = devices.begin(); 200 AudioDeviceDescriptions::const_iterator it = devices.begin();
200 for (; ix < sink_list->GetSize() && it != devices.end(); 201 for (; ix < sink_list->GetSize() && it != devices.end();
201 ++ix, ++it) { 202 ++ix, ++it) {
202 base::DictionaryValue* dict = NULL; 203 base::DictionaryValue* dict = NULL;
203 sink_list->GetDictionary(ix, &dict); 204 sink_list->GetDictionary(ix, &dict);
204 std::string sink_id; 205 std::string sink_id;
205 dict->GetString("sinkId", &sink_id); 206 dict->GetString("sinkId", &sink_id);
206 207
207 std::string expected_id; 208 std::string expected_id;
208 if (media::AudioDeviceDescription::IsDefaultDevice(it->unique_id)) { 209 if (media::AudioDeviceDescription::IsDefaultDevice(it->unique_id)) {
209 expected_id = media::AudioDeviceDescription::kDefaultDeviceId; 210 expected_id = media::AudioDeviceDescription::kDefaultDeviceId;
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 VLOG(2) << "After setting to " << target_device 326 VLOG(2) << "After setting to " << target_device
326 << ", current device is " << current_device; 327 << ", current device is " << current_device;
327 EXPECT_EQ(target_device, current_device); 328 EXPECT_EQ(target_device, current_device);
328 } 329 }
329 } 330 }
330 331
331 IN_PROC_BROWSER_TEST_F(WebrtcAudioPrivateTest, GetAssociatedSink) { 332 IN_PROC_BROWSER_TEST_F(WebrtcAudioPrivateTest, GetAssociatedSink) {
332 // Get the list of input devices. We can cheat in the unit test and 333 // Get the list of input devices. We can cheat in the unit test and
333 // run this on the main thread since nobody else will be running at 334 // run this on the main thread since nobody else will be running at
334 // the same time. 335 // the same time.
335 AudioDeviceNames devices; 336 AudioDeviceDescriptions devices;
336 GetAudioDeviceNames(&AudioManager::GetAudioInputDeviceNames, &devices); 337 GetAudioDeviceDescriptions(&AudioManager::GetAudioInputDeviceDescriptions,
338 &devices);
337 339
338 // Try to get an associated sink for each source. 340 // Try to get an associated sink for each source.
339 for (AudioDeviceNames::const_iterator device = devices.begin(); 341 for (const auto& device : devices) {
340 device != devices.end();
341 ++device) {
342 scoped_refptr<WebrtcAudioPrivateGetAssociatedSinkFunction> function = 342 scoped_refptr<WebrtcAudioPrivateGetAssociatedSinkFunction> function =
343 new WebrtcAudioPrivateGetAssociatedSinkFunction(); 343 new WebrtcAudioPrivateGetAssociatedSinkFunction();
344 function->set_source_url(source_url_); 344 function->set_source_url(source_url_);
345 345
346 std::string raw_device_id = device->unique_id; 346 std::string raw_device_id = device.unique_id;
347 VLOG(2) << "Trying to find associated sink for device " << raw_device_id; 347 VLOG(2) << "Trying to find associated sink for device " << raw_device_id;
348 std::string source_id_in_origin; 348 std::string source_id_in_origin;
349 GURL origin(GURL("http://www.google.com/").GetOrigin()); 349 GURL origin(GURL("http://www.google.com/").GetOrigin());
350 GetIDInOrigin(profile()->GetResourceContext(), 350 GetIDInOrigin(profile()->GetResourceContext(),
351 origin, 351 origin,
352 raw_device_id, 352 raw_device_id,
353 &source_id_in_origin); 353 &source_id_in_origin);
354 354
355 base::ListValue parameters; 355 base::ListValue parameters;
356 parameters.AppendString(origin.spec()); 356 parameters.AppendString(origin.spec());
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("failure")); 433 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("failure"));
434 base::string16 result = title_watcher.WaitAndGetTitle(); 434 base::string16 result = title_watcher.WaitAndGetTitle();
435 EXPECT_EQ(base::ASCIIToUTF16("success"), result); 435 EXPECT_EQ(base::ASCIIToUTF16("success"), result);
436 436
437 g_browser_process->webrtc_log_uploader()->OverrideUploadWithBufferForTesting( 437 g_browser_process->webrtc_log_uploader()->OverrideUploadWithBufferForTesting(
438 NULL); 438 NULL);
439 } 439 }
440 #endif // BUILDFLAG(ENABLE_HANGOUT_SERVICES_EXTENSION) 440 #endif // BUILDFLAG(ENABLE_HANGOUT_SERVICES_EXTENSION)
441 441
442 } // namespace extensions 442 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698