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

Issue 78033003: Adding device enumeration to Android device manager (Closed)

Created:
7 years, 1 month ago by henrika (OOO until Aug 14)
Modified:
7 years ago
CC:
chromium-reviews, feature-media-reviews_chromium.org, bulach, Ami GONE FROM CHROMIUM, wjia(left Chromium)
Visibility:
Public.

Description

Adding device enumeration to the Android device manager. Main goal is to support the getSources API (see TEST) and to allow VoIP clients in Chrome to use Bluetooth headsets. BUG=324464 TEST=https://simpl.info/getusermedia/sources/ and manual unittests in media. Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=237942

Patch Set 1 : Initial support for BT detection #

Total comments: 8

Patch Set 2 : tommi@, nits #

Total comments: 12

Patch Set 3 : Added setDevices #

Patch Set 4 : cleanup #

Patch Set 5 : nits #

Total comments: 38

Patch Set 6 : bulach@ and tommi@ #

Patch Set 7 : try again #

Total comments: 21

Patch Set 8 : more fixes #

Total comments: 12

Patch Set 9 : nits #

Patch Set 10 : final changes? #

Patch Set 11 : nit #

Total comments: 14
Unified diffs Side-by-side diffs Delta from patch set Stats (+496 lines, -56 lines) Patch
M media/audio/android/audio_manager_android.h View 1 2 3 4 5 6 7 1 chunk +3 lines, -2 lines 0 comments Download
M media/audio/android/audio_manager_android.cc View 1 2 3 4 5 6 7 8 9 8 chunks +61 lines, -10 lines 2 comments Download
M media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java View 1 2 3 4 5 6 7 8 9 10 5 chunks +432 lines, -44 lines 12 comments Download

Messages

Total messages: 26 (0 generated)
henrika (OOO until Aug 14)
https://codereview.chromium.org/78033003/diff/30001/media/audio/audio_manager_unittest.cc File media/audio/audio_manager_unittest.cc (right): https://codereview.chromium.org/78033003/diff/30001/media/audio/audio_manager_unittest.cc#newcode79 media/audio/audio_manager_unittest.cc:79: VLOG(2) << "Device ID(" << it->unique_id Temporary debugging only. ...
7 years, 1 month ago (2013-11-22 12:46:19 UTC) #1
henrika (OOO until Aug 14)
https://codereview.chromium.org/78033003/diff/30001/testing/android/java/src/org/chromium/native_test/ChromeNativeTestActivity.java File testing/android/java/src/org/chromium/native_test/ChromeNativeTestActivity.java (right): https://codereview.chromium.org/78033003/diff/30001/testing/android/java/src/org/chromium/native_test/ChromeNativeTestActivity.java#newcode39 testing/android/java/src/org/chromium/native_test/ChromeNativeTestActivity.java:39: if (true) { This is just a hack to ...
7 years, 1 month ago (2013-11-22 12:54:47 UTC) #2
tommi (sloooow) - chröme
great! just some tiny drive-by nits. https://codereview.chromium.org/78033003/diff/30001/media/audio/android/audio_manager_android.cc File media/audio/android/audio_manager_android.cc (left): https://codereview.chromium.org/78033003/diff/30001/media/audio/android/audio_manager_android.cc#oldcode19 media/audio/android/audio_manager_android.cc:19: DCHECK(device_names->empty()); nit: maybe ...
7 years, 1 month ago (2013-11-22 14:59:09 UTC) #3
henrika (OOO until Aug 14)
https://codereview.chromium.org/78033003/diff/30001/media/audio/android/audio_manager_android.cc File media/audio/android/audio_manager_android.cc (left): https://codereview.chromium.org/78033003/diff/30001/media/audio/android/audio_manager_android.cc#oldcode19 media/audio/android/audio_manager_android.cc:19: DCHECK(device_names->empty()); Fixed based on you comment below ;-) https://codereview.chromium.org/78033003/diff/30001/media/audio/android/audio_manager_android.cc ...
7 years ago (2013-11-25 09:38:30 UTC) #4
Jói
Just some drive-by nits. https://codereview.chromium.org/78033003/diff/110001/media/audio/android/audio_manager_android.cc File media/audio/android/audio_manager_android.cc (right): https://codereview.chromium.org/78033003/diff/110001/media/audio/android/audio_manager_android.cc#newcode91 media/audio/android/audio_manager_android.cc:91: AddDefaultDevice(device_names); Not sure you want ...
7 years ago (2013-11-25 13:09:34 UTC) #5
henrika (OOO until Aug 14)
Thanks Jói, working on refactoring based on separate e-mail input from tommi@ (move to input-device ...
7 years ago (2013-11-25 13:28:14 UTC) #6
bulach
it mostly lgtm, a few comments and please wait for other reviewers as well... some ...
7 years ago (2013-11-29 10:58:39 UTC) #7
tommi (sloooow) - chröme
https://codereview.chromium.org/78033003/diff/340001/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java File media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java (right): https://codereview.chromium.org/78033003/diff/340001/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java#newcode74 media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java:74: }; On 2013/11/29 10:58:39, bulach wrote: > see more ...
7 years ago (2013-11-29 11:45:47 UTC) #8
henrika (OOO until Aug 14)
Thanks. https://codereview.chromium.org/78033003/diff/340001/media/audio/android/audio_manager_android.cc File media/audio/android/audio_manager_android.cc (right): https://codereview.chromium.org/78033003/diff/340001/media/audio/android/audio_manager_android.cc#newcode127 media/audio/android/audio_manager_android.cc:127: SetAudioMode(kAudioModeInCommunication); On 2013/11/29 10:58:39, bulach wrote: > nit: ...
7 years ago (2013-11-29 12:20:20 UTC) #9
henrika (OOO until Aug 14)
tommi@: PTAL
7 years ago (2013-11-29 12:20:59 UTC) #10
tommi (sloooow) - chröme
https://codereview.chromium.org/78033003/diff/340001/media/audio/android/audio_manager_android.h File media/audio/android/audio_manager_android.h (right): https://codereview.chromium.org/78033003/diff/340001/media/audio/android/audio_manager_android.h#newcode66 media/audio/android/audio_manager_android.h:66: void SetAudioDevice(std::string device_id); On 2013/11/29 12:20:20, henrika wrote: > ...
7 years ago (2013-11-29 13:11:16 UTC) #11
tommi (sloooow) - chröme
https://codereview.chromium.org/78033003/diff/340001/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java File media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java (right): https://codereview.chromium.org/78033003/diff/340001/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java#newcode101 media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java:101: // Use 44.1kHz as the default sampling rate. On ...
7 years ago (2013-11-29 13:18:01 UTC) #12
Jói
LGTM with just a few nits. https://codereview.chromium.org/78033003/diff/380001/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java File media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java (right): https://codereview.chromium.org/78033003/diff/380001/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java#newcode67 media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java:67: // Maps audio ...
7 years ago (2013-11-29 14:40:46 UTC) #13
henrika (OOO until Aug 14)
No longer using HashSet. https://codereview.chromium.org/78033003/diff/340001/media/audio/android/audio_manager_android.h File media/audio/android/audio_manager_android.h (right): https://codereview.chromium.org/78033003/diff/340001/media/audio/android/audio_manager_android.h#newcode66 media/audio/android/audio_manager_android.h:66: void SetAudioDevice(std::string device_id); Will fix. ...
7 years ago (2013-11-29 14:56:16 UTC) #14
tommi (sloooow) - chröme
https://codereview.chromium.org/78033003/diff/380001/media/audio/android/audio_manager_android.cc File media/audio/android/audio_manager_android.cc (right): https://codereview.chromium.org/78033003/diff/380001/media/audio/android/audio_manager_android.cc#newcode77 media/audio/android/audio_manager_android.cc:77: // Get all available devices and add these to ...
7 years ago (2013-11-29 15:04:33 UTC) #15
henrika (OOO until Aug 14)
Done. https://codereview.chromium.org/78033003/diff/380001/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java File media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java (right): https://codereview.chromium.org/78033003/diff/380001/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java#newcode67 media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java:67: // Maps audio device types to string values. ...
7 years ago (2013-11-29 15:31:49 UTC) #16
henrika (OOO until Aug 14)
Tommi?
7 years ago (2013-11-29 15:34:07 UTC) #17
henrika (OOO until Aug 14)
forgot, sorry. https://codereview.chromium.org/78033003/diff/380001/media/audio/android/audio_manager_android.cc File media/audio/android/audio_manager_android.cc (right): https://codereview.chromium.org/78033003/diff/380001/media/audio/android/audio_manager_android.cc#newcode77 media/audio/android/audio_manager_android.cc:77: // Get all available devices and add ...
7 years ago (2013-11-29 15:39:50 UTC) #18
bulach
still lgtm, small suggestions you may or may not want to do now.. https://codereview.chromium.org/78033003/diff/400001/media/audio/android/audio_manager_android.cc File ...
7 years ago (2013-11-29 15:41:07 UTC) #19
tommi (sloooow) - chröme
lgtm https://codereview.chromium.org/78033003/diff/400001/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java File media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java (right): https://codereview.chromium.org/78033003/diff/400001/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java#newcode61 media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java:61: private static final int DEVICE_MAX_ID = 4; nit: ...
7 years ago (2013-11-29 15:48:35 UTC) #20
henrika (OOO until Aug 14)
Thanks again. https://codereview.chromium.org/78033003/diff/400001/media/audio/android/audio_manager_android.cc File media/audio/android/audio_manager_android.cc (right): https://codereview.chromium.org/78033003/diff/400001/media/audio/android/audio_manager_android.cc#newcode231 media/audio/android/audio_manager_android.cc:231: base::android::AttachCurrentThread(), On 2013/11/29 15:41:07, bulach wrote: > ...
7 years ago (2013-11-29 16:01:00 UTC) #21
Jói
still LGTM
7 years ago (2013-11-29 16:01:04 UTC) #22
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/henrika@chromium.org/78033003/450001
7 years ago (2013-11-29 16:16:37 UTC) #23
commit-bot: I haz the power
Change committed as 237942
7 years ago (2013-11-29 20:00:10 UTC) #24
wjia(left Chromium)
Nice work! Sorry for the late review. https://codereview.chromium.org/78033003/diff/450001/media/audio/android/audio_manager_android.cc File media/audio/android/audio_manager_android.cc (right): https://codereview.chromium.org/78033003/diff/450001/media/audio/android/audio_manager_android.cc#newcode166 media/audio/android/audio_manager_android.cc:166: DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format()); ...
7 years ago (2013-12-01 22:18:01 UTC) #25
henrika (OOO until Aug 14)
7 years ago (2013-12-02 13:02:22 UTC) #26
Message was sent while issue was closed.
Thanks Wei.

See https://codereview.chromium.org/99063002 for changes.

https://codereview.chromium.org/78033003/diff/450001/media/audio/android/audi...
File media/audio/android/audio_manager_android.cc (right):

https://codereview.chromium.org/78033003/diff/450001/media/audio/android/audi...
media/audio/android/audio_manager_android.cc:166:
DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format());
Good question Wei. I don't know of any client that would use it actually. I will
add a DCHECK for now; best I can do. OK?

https://codereview.chromium.org/78033003/diff/450001/media/base/android/java/...
File media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java
(right):

https://codereview.chromium.org/78033003/diff/450001/media/base/android/java/...
media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java:23:
import java.util.ArrayList;
Done.

PS, any tool (jlint?) I can use to detect things like these. I did use
clank/bin/lint.py but it did not detect any issues.

https://codereview.chromium.org/78033003/diff/450001/media/base/android/java/...
media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java:255: if
(mAudioDevices[id]) {
onReceive is called on : @thread: Thread[main,5,main]
and
getAudioInputDeviceNames: @thread: Thread[Thread-357,5,main]
hence, different threads as you state.

Let me try to come up with a locking mechanism (first time using Java...)

https://codereview.chromium.org/78033003/diff/450001/media/base/android/java/...
media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java:256:
array[i] = new AudioDeviceName(id, DEVICE_NAMES[id]);
We have had a long internal (off-line) discussion about that and my initial
approach was as you suggest (and what I started out documenting in my design
doc). However, the first API that needs this is getSources and it does only enum
the input side. We (proposal from tommi@, se design doc) then proposed to simply
use the output names when enumerating the input devices and assume that it is
well known that the selected mic is associated with the output device. As an
example, a wired headset with mic is the same device no matter from which
direction we see it. Note that the final names are not yet written in stone (not
localized) either.

https://codereview.chromium.org/78033003/diff/450001/media/base/android/java/...
media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java:367:
filter.addAction(Intent.ACTION_HEADSET_PLUG);
On 2013/12/01 22:18:02, wjia wrote:
> You can use another ctor:
> IntentFilter filter = new IntentFilter(Intent.ACTION_HEADSET_PLUG);

Done.

https://codereview.chromium.org/78033003/diff/450001/media/base/android/java/...
media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java:381: if
(!action.equals(Intent.ACTION_HEADSET_PLUG))
On 2013/12/01 22:18:02, wjia wrote:
> nit: JAVA code style requires {} or the body should be on the same line of
"if".

Done.

https://codereview.chromium.org/78033003/diff/450001/media/base/android/java/...
media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java:527: *
notifies a registered state change listener (if any) that there has
On 2013/12/01 22:18:02, wjia wrote:
> nit: notify.

Done.

Powered by Google App Engine
This is Rietveld 408576698