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

Issue 8818012: Remove the AudioManager singleton. (Closed)

Created:
9 years ago by tommi (sloooow) - chröme
Modified:
9 years ago
CC:
chromium-reviews, jstritar+watch_chromium.org, hclam+watch_chromium.org, dpranke-watch+content_chromium.org, ddorwin+watch_chromium.org, fischman+watch_chromium.org, jam, acolwell+watch_chromium.org, annacc+watch_chromium.org, mihaip+watch_chromium.org, joi+watch-content_chromium.org, Aaron Boodman, darin-cc_chromium.org, Paweł Hajdan Jr., vrk (LEFT CHROMIUM), pam+watch_chromium.org, scherkus (not reviewing), ihf+watch_chromium.org
Visibility:
Public.

Description

Remove the AudioManager singleton. Unit tests now instantiate their own AudioManager and can choose to use the default one or provide their own mock implementation without having to worry about conflicting with the singleton. The teardown sequence of the AudioManager and its thread has been cleaned up significantly and I don't think it has been completely tested before as the audio thread was terminated before all objects that belonged to the thread had a chance to do cleanup. The AudioManager unit tests do not use the actual audio thread, so this part seems to have been left out. In Chrome, the AudioManager instance is now owned by BrowserProcessImpl and always constructed on the UI thread. This instance is then shared in the same way that several other 'manager' type objects are shared to 'content' code, via content::ResourceContext. Audio specific classes do though receive a direct pointer to the AudioManager and are required to do proper reference counting if they need to hold onto the instance. I chose to use the ResourceContext rather than direct use of g_browser_process to avoid requiring another singleton when writing relatively simple tests that touch the AudioManager. I added a couple of safeguards to guard against future regressions: - Not more than one instance of the AudioManager should be created. - The AudioManager should not be addrefed by its own thread. This can basically become a circular reference and prevent deterministic shutdown. Reviewers: Of course you're free to review everything, but here's the breakdown in terms of the bare minimum from the standpoint of "Owners approval". I'm asking Henrik to be the main reviewer of the entire patch (sorry!). Henrik: Everything minus the below, but it would be great if you could take a look at the whole thing, specifically media/audio. Pawel: I'd like you to take a generic look at this approach. The key areas as far as the singleton itself goes are in media/audio/audio_manager[_base].* and chrome/browser/browser_process*.* Satish: content/browser/speech/* media/audio/audio_manager_base.* (new reference counting code) Andrew: content/browser/renderer_host/media/* content/renderer/media/webrtc_audio_device_unittest.cc (Owner) Avi: content/browser/renderer_host/render_process_host_impl.cc content/browser/resource_context.* William: chrome/browser/profiles/profile_io_data.cc chrome/browser/browser_process*.* Robert: This is basically a heads up. I hope that I didn't break the OpenBSD implementation, but unfortunately I have no way of knowing for sure. Shijing: Please take a look at AudioManagerLinux. I replaced the set of active streams with a simple counter. BUG=105249 TEST=content_unittests, media_unittests, browser_tests. Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=114084

Patch Set 1 #

Total comments: 4

Patch Set 2 : Address comments from Avi #

Total comments: 35

Patch Set 3 : Address comments from Henrik and Will #

Patch Set 4 : Comment updates #

Patch Set 5 : Made ResourceContext::audio_manager() abide the same rules as other accessors #

Total comments: 44

Patch Set 6 : Addressing comments from Andrew #

Total comments: 6

Patch Set 7 : Added files due to the CreateAudioManager global function change #

Patch Set 8 : rebase - r114012 #

Patch Set 9 : ProfileIOData fetches AudioManager on the UI thread. Update BrowserProcessImpl accordingly #

Patch Set 10 : Set svn eol properties for a couple of files #

Unified diffs Side-by-side diffs Delta from patch set Stats (+1061 lines, -717 lines) Patch
M chrome/browser/browser_process.h View 1 2 3 4 5 6 7 2 chunks +3 lines, -0 lines 0 comments Download
M chrome/browser/browser_process_impl.h View 1 2 3 4 5 6 7 2 chunks +3 lines, -0 lines 0 comments Download
M chrome/browser/browser_process_impl.cc View 1 2 3 4 5 6 7 8 2 chunks +9 lines, -0 lines 0 comments Download
M chrome/browser/profiles/profile_io_data.h View 1 2 3 4 5 6 7 8 2 chunks +2 lines, -0 lines 0 comments Download
M chrome/browser/profiles/profile_io_data.cc View 1 2 3 4 5 6 7 8 4 chunks +5 lines, -1 line 0 comments Download
M chrome/browser/speech/chrome_speech_input_manager.h View 1 2 3 4 5 6 7 1 chunk +2 lines, -1 line 0 comments Download
M chrome/browser/speech/chrome_speech_input_manager.cc View 1 2 3 4 5 6 7 5 chunks +14 lines, -5 lines 0 comments Download
M chrome/browser/speech/speech_input_bubble_gtk.cc View 1 2 3 4 5 6 7 5 chunks +14 lines, -6 lines 0 comments Download
M chrome/browser/speech/speech_input_bubble_views.cc View 1 2 3 4 5 6 7 2 chunks +4 lines, -2 lines 0 comments Download
M chrome/browser/speech/speech_input_extension_manager.cc View 1 2 3 4 5 6 7 6 chunks +8 lines, -7 lines 0 comments Download
M chrome/test/base/testing_browser_process.h View 1 2 3 4 5 6 7 1 chunk +1 line, -0 lines 0 comments Download
M chrome/test/base/testing_browser_process.cc View 1 2 3 4 5 6 7 1 chunk +4 lines, -0 lines 0 comments Download
M content/browser/renderer_host/media/audio_input_device_manager.h View 1 2 3 4 5 6 7 3 chunks +4 lines, -1 line 0 comments Download
M content/browser/renderer_host/media/audio_input_device_manager.cc View 1 2 3 4 5 6 7 2 chunks +4 lines, -3 lines 0 comments Download
M content/browser/renderer_host/media/audio_input_device_manager_unittest.cc View 1 2 3 4 5 6 7 9 chunks +35 lines, -17 lines 0 comments Download
M content/browser/renderer_host/media/audio_input_renderer_host.cc View 1 2 3 4 5 6 7 1 chunk +1 line, -0 lines 0 comments Download
M content/browser/renderer_host/media/audio_renderer_host.cc View 1 2 3 4 5 6 7 3 chunks +10 lines, -5 lines 0 comments Download
M content/browser/renderer_host/media/audio_renderer_host_unittest.cc View 1 2 3 4 5 6 7 6 chunks +22 lines, -6 lines 0 comments Download
M content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc View 1 2 3 4 5 6 7 3 chunks +5 lines, -1 line 0 comments Download
M content/browser/renderer_host/media/media_stream_manager.h View 1 2 3 4 5 6 7 3 chunks +5 lines, -1 line 0 comments Download
M content/browser/renderer_host/media/media_stream_manager.cc View 1 2 3 4 5 6 7 3 chunks +6 lines, -3 lines 0 comments Download
M content/browser/renderer_host/media/video_capture_host_unittest.cc View 1 2 3 4 5 6 7 3 chunks +6 lines, -1 line 0 comments Download
M content/browser/renderer_host/render_process_host_impl.cc View 1 2 3 4 5 6 7 5 chunks +42 lines, -50 lines 0 comments Download
M content/browser/resource_context.h View 1 2 3 4 5 6 7 3 chunks +5 lines, -0 lines 0 comments Download
M content/browser/resource_context.cc View 1 2 3 4 5 6 7 3 chunks +15 lines, -1 line 0 comments Download
M content/browser/speech/speech_input_browsertest.cc View 1 2 3 4 5 6 7 3 chunks +23 lines, -28 lines 0 comments Download
M content/browser/speech/speech_input_dispatcher_host.h View 1 2 3 4 5 6 7 3 chunks +7 lines, -1 line 0 comments Download
M content/browser/speech/speech_input_dispatcher_host.cc View 1 2 3 4 5 6 7 4 chunks +8 lines, -3 lines 0 comments Download
M content/browser/speech/speech_input_manager.h View 1 2 3 4 5 6 7 4 chunks +12 lines, -3 lines 0 comments Download
M content/browser/speech/speech_input_manager.cc View 1 2 3 4 5 6 7 8 chunks +41 lines, -14 lines 0 comments Download
M content/browser/speech/speech_recognizer.h View 1 2 3 4 5 6 7 3 chunks +4 lines, -0 lines 0 comments Download
M content/browser/speech/speech_recognizer.cc View 1 2 3 4 5 6 7 4 chunks +5 lines, -2 lines 0 comments Download
M content/browser/speech/speech_recognizer_unittest.cc View 1 2 3 4 5 6 7 3 chunks +6 lines, -4 lines 0 comments Download
M content/renderer/media/webrtc_audio_device_unittest.cc View 1 2 3 4 5 6 7 6 chunks +6 lines, -39 lines 0 comments Download
content/test/webrtc_audio_device_test.h View 1 2 3 4 5 6 7 6 chunks +5 lines, -17 lines 0 comments Download
M content/test/webrtc_audio_device_test.cc View 1 2 3 4 5 6 7 5 chunks +59 lines, -24 lines 0 comments Download
M media/audio/android/audio_manager_android.cc View 1 2 3 4 5 6 7 1 chunk +1 line, -2 lines 0 comments Download
M media/audio/audio_input_controller.h View 1 2 3 4 5 6 7 5 chunks +10 lines, -3 lines 0 comments Download
media/audio/audio_input_controller.cc View 1 2 3 4 5 6 7 6 chunks +14 lines, -11 lines 0 comments Download
M media/audio/audio_input_controller_unittest.cc View 1 2 3 4 5 6 7 5 chunks +10 lines, -5 lines 0 comments Download
M media/audio/audio_input_device_unittest.cc View 1 2 3 4 5 6 7 5 chunks +14 lines, -34 lines 0 comments Download
M media/audio/audio_input_unittest.cc View 1 2 3 4 5 6 7 6 chunks +24 lines, -20 lines 0 comments Download
M media/audio/audio_manager.h View 1 2 3 4 5 6 7 3 chunks +25 lines, -23 lines 0 comments Download
M media/audio/audio_manager.cc View 1 2 3 4 5 6 7 1 chunk +22 lines, -23 lines 0 comments Download
M media/audio/audio_manager_base.h View 1 2 3 4 5 6 7 4 chunks +18 lines, -10 lines 0 comments Download
M media/audio/audio_manager_base.cc View 1 2 3 4 5 6 7 3 chunks +60 lines, -19 lines 0 comments Download
M media/audio/audio_output_controller.h View 1 2 3 4 5 6 7 8 chunks +25 lines, -4 lines 0 comments Download
M media/audio/audio_output_controller.cc View 1 2 3 4 5 6 7 9 chunks +33 lines, -34 lines 0 comments Download
M media/audio/audio_output_controller_unittest.cc View 1 2 3 4 5 6 7 16 chunks +55 lines, -22 lines 0 comments Download
M media/audio/audio_output_dispatcher.h View 1 2 3 4 5 6 7 4 chunks +26 lines, -15 lines 0 comments Download
M media/audio/audio_output_dispatcher.cc View 1 2 3 4 5 6 7 5 chunks +38 lines, -8 lines 0 comments Download
media/audio/audio_output_proxy.h View 1 2 3 4 5 6 7 4 chunks +4 lines, -7 lines 0 comments Download
MM media/audio/audio_output_proxy.cc View 1 2 3 4 5 6 7 8 9 2 chunks +9 lines, -4 lines 0 comments Download
M media/audio/audio_output_proxy_unittest.cc View 1 2 3 4 5 6 7 12 chunks +19 lines, -13 lines 0 comments Download
M media/audio/linux/alsa_input.h View 1 2 3 4 5 6 7 3 chunks +9 lines, -1 line 0 comments Download
M media/audio/linux/alsa_input.cc View 1 2 3 4 5 6 7 3 chunks +6 lines, -6 lines 0 comments Download
M media/audio/linux/alsa_output_unittest.cc View 1 2 3 4 5 6 7 13 chunks +18 lines, -13 lines 0 comments Download
M media/audio/linux/audio_manager_linux.h View 1 2 3 4 5 6 7 2 chunks +2 lines, -3 lines 0 comments Download
M media/audio/linux/audio_manager_linux.cc View 1 2 3 4 5 6 7 5 chunks +14 lines, -23 lines 0 comments Download
M media/audio/mac/audio_low_latency_input_mac_unittest.cc View 1 2 3 4 5 6 7 8 chunks +48 lines, -45 lines 0 comments Download
M media/audio/mac/audio_manager_mac.cc View 1 2 3 4 5 6 7 1 chunk +1 line, -2 lines 0 comments Download
M media/audio/mac/audio_output_mac_unittest.cc View 1 2 3 4 5 6 7 6 chunks +7 lines, -11 lines 0 comments Download
M media/audio/openbsd/audio_manager_openbsd.cc View 1 2 3 4 5 6 7 1 chunk +1 line, -1 line 0 comments Download
M media/audio/simple_sources_unittest.cc View 1 2 3 4 5 6 7 2 chunks +2 lines, -3 lines 0 comments Download
MM media/audio/test_audio_input_controller_factory.h View 1 2 3 4 5 6 7 8 9 2 chunks +2 lines, -0 lines 0 comments Download
M media/audio/test_audio_input_controller_factory.cc View 1 2 3 4 5 6 7 2 chunks +5 lines, -2 lines 0 comments Download
M media/audio/win/audio_low_latency_input_win_unittest.cc View 1 2 3 4 5 6 7 10 chunks +31 lines, -24 lines 0 comments Download
media/audio/win/audio_low_latency_output_win_unittest.cc View 1 2 3 4 5 6 7 16 chunks +49 lines, -32 lines 0 comments Download
M media/audio/win/audio_manager_win.cc View 1 2 3 4 5 6 7 1 chunk +1 line, -1 line 0 comments Download
M media/audio/win/audio_output_win_unittest.cc View 1 2 3 4 5 6 7 16 chunks +16 lines, -31 lines 0 comments Download
M media/filters/reference_audio_renderer.h View 1 2 3 4 5 6 7 2 chunks +6 lines, -3 lines 0 comments Download
M media/filters/reference_audio_renderer.cc View 1 2 3 4 5 6 7 3 chunks +5 lines, -3 lines 0 comments Download
M media/tools/player_wtl/movie.h View 1 2 3 4 5 6 7 3 chunks +3 lines, -1 line 0 comments Download
media/tools/player_wtl/movie.cc View 1 2 3 4 5 6 7 3 chunks +5 lines, -2 lines 0 comments Download
M media/tools/player_x11/player_x11.cc View 1 2 3 4 5 6 7 8 chunks +18 lines, -7 lines 0 comments Download

Messages

Total messages: 35 (0 generated)
tommi (sloooow) - chröme
9 years ago (2011-12-06 14:20:38 UTC) #1
Robert Nagy
On 2011/12/06 14:20:38, tommi wrote: Don't worry about the OpenBSD build, I will fix it ...
9 years ago (2011-12-06 14:25:45 UTC) #2
Avi (use Gerrit)
I'm happy with the content/browser/renderer_host/render_process_host_impl.cc changes with the style issues noted below. I don't know ...
9 years ago (2011-12-06 15:22:59 UTC) #3
tommi (sloooow) - chröme
Thanks Avi - sorry, the 'content/browser/resource_context.*' bit was indeed meant for willchan. http://codereview.chromium.org/8818012/diff/1/content/browser/renderer_host/render_process_host_impl.cc File content/browser/renderer_host/render_process_host_impl.cc ...
9 years ago (2011-12-06 15:48:20 UTC) #4
Avi (use Gerrit)
NP. Once you have everyone's OK, I'm ready to rubberstamp as needed for content.
9 years ago (2011-12-06 16:09:08 UTC) #5
henrika (OOO until Aug 14)
Impressive stuff Tommi. It will take some time to digest this CL but I have ...
9 years ago (2011-12-06 16:53:28 UTC) #6
willchan no longer on Chromium
http://codereview.chromium.org/8818012/diff/7002/content/browser/resource_context.cc File content/browser/resource_context.cc (right): http://codereview.chromium.org/8818012/diff/7002/content/browser/resource_context.cc#newcode184 content/browser/resource_context.cc:184: // The AudioManager isn't necessarily initialized with other Can ...
9 years ago (2011-12-06 17:02:12 UTC) #7
tommi (sloooow) - chröme
http://codereview.chromium.org/8818012/diff/1/media/audio/audio_manager.cc File media/audio/audio_manager.cc (right): http://codereview.chromium.org/8818012/diff/1/media/audio/audio_manager.cc#newcode11 media/audio/audio_manager.cc:11: // Used only to make sure we never create ...
9 years ago (2011-12-06 20:28:48 UTC) #8
Paweł Hajdan Jr.
I took a brief look, seems fine. I don't know most of the code in ...
9 years ago (2011-12-07 09:18:10 UTC) #9
henrika (OOO until Aug 14)
Focused on the manager as such and how it is used in the media/audio unit ...
9 years ago (2011-12-07 10:08:34 UTC) #10
henrika (OOO until Aug 14)
Checked WebRTC unit test and files in browser/render_host as well. http://codereview.chromium.org/8818012/diff/7002/content/browser/renderer_host/media/audio_input_renderer_host.cc File content/browser/renderer_host/media/audio_input_renderer_host.cc (right): http://codereview.chromium.org/8818012/diff/7002/content/browser/renderer_host/media/audio_input_renderer_host.cc#newcode249 ...
9 years ago (2011-12-07 10:26:43 UTC) #11
henrika (OOO until Aug 14)
should be: content/browser/render_host/media
9 years ago (2011-12-07 10:27:55 UTC) #12
tommi (sloooow) - chröme
All comments addressed and uploaded. Henrik - in addition to your comments, you sent a ...
9 years ago (2011-12-07 12:26:43 UTC) #13
henrika (OOO until Aug 14)
http://codereview.chromium.org/8818012/diff/7002/content/browser/renderer_host/media/audio_input_renderer_host.cc File content/browser/renderer_host/media/audio_input_renderer_host.cc (right): http://codereview.chromium.org/8818012/diff/7002/content/browser/renderer_host/media/audio_input_renderer_host.cc#newcode249 content/browser/renderer_host/media/audio_input_renderer_host.cc:249: resource_context_->audio_manager(), Sorry, I had this question in my head ...
9 years ago (2011-12-07 12:48:00 UTC) #14
no longer working on chromium
Very impressive! Great work, Tommi. LGTM to the AudioManagerLinux. BR, /SX
9 years ago (2011-12-07 12:52:18 UTC) #15
tommi (sloooow) - chröme
Latest changes uploaded. http://codereview.chromium.org/8818012/diff/7002/content/test/webrtc_audio_device_test.cc File content/test/webrtc_audio_device_test.cc (right): http://codereview.chromium.org/8818012/diff/7002/content/test/webrtc_audio_device_test.cc#newcode131 content/test/webrtc_audio_device_test.cc:131: // Kick of the cleanup process ...
9 years ago (2011-12-07 14:46:23 UTC) #16
willchan no longer on Chromium
http://codereview.chromium.org/8818012/diff/7002/content/browser/resource_context.cc File content/browser/resource_context.cc (right): http://codereview.chromium.org/8818012/diff/7002/content/browser/resource_context.cc#newcode184 content/browser/resource_context.cc:184: // The AudioManager isn't necessarily initialized with other On ...
9 years ago (2011-12-07 15:29:14 UTC) #17
tommi (sloooow) - chröme
On 2011/12/07 15:29:14, willchan wrote: > http://codereview.chromium.org/8818012/diff/7002/content/browser/resource_context.cc > File content/browser/resource_context.cc (right): > > http://codereview.chromium.org/8818012/diff/7002/content/browser/resource_context.cc#newcode184 > ...
9 years ago (2011-12-07 15:38:09 UTC) #18
tommi (sloooow) - chröme
OK, I made the audio_manager() accessor more strict and it was actually "only" the speech ...
9 years ago (2011-12-08 16:52:38 UTC) #19
henrika (OOO until Aug 14)
LGTM.
9 years ago (2011-12-09 08:57:02 UTC) #20
Satish
LGTM. Thanks for doing this Tommi. One reply below, feel free to address it as ...
9 years ago (2011-12-09 11:46:18 UTC) #21
tommi (sloooow) - chröme
http://codereview.chromium.org/8818012/diff/19001/chrome/browser/speech/speech_input_bubble_gtk.cc File chrome/browser/speech/speech_input_bubble_gtk.cc (right): http://codereview.chromium.org/8818012/diff/19001/chrome/browser/speech/speech_input_bubble_gtk.cc#newcode141 chrome/browser/speech/speech_input_bubble_gtk.cc:141: // TODO(tommi): The audio_manager property can only be accessed ...
9 years ago (2011-12-09 13:24:07 UTC) #22
scherkus (not reviewing)
awesome! http://codereview.chromium.org/8818012/diff/19001/chrome/browser/browser_process_impl.cc File chrome/browser/browser_process_impl.cc (right): http://codereview.chromium.org/8818012/diff/19001/chrome/browser/browser_process_impl.cc#newcode721 chrome/browser/browser_process_impl.cc:721: if (!audio_manager_.get()) rm .get() http://codereview.chromium.org/8818012/diff/19001/content/browser/renderer_host/render_process_host_impl.cc File content/browser/renderer_host/render_process_host_impl.cc (right): ...
9 years ago (2011-12-09 22:47:30 UTC) #23
scherkus (not reviewing)
also global nit on using .get() for scoped_refptr<> we have operator T*() defined -- might ...
9 years ago (2011-12-09 22:48:40 UTC) #24
tommi (sloooow) - chröme
Thanks Andrew. Changes uploaded. http://codereview.chromium.org/8818012/diff/19001/chrome/browser/browser_process_impl.cc File chrome/browser/browser_process_impl.cc (right): http://codereview.chromium.org/8818012/diff/19001/chrome/browser/browser_process_impl.cc#newcode721 chrome/browser/browser_process_impl.cc:721: if (!audio_manager_.get()) On 2011/12/09 22:47:30, ...
9 years ago (2011-12-10 00:11:13 UTC) #25
scherkus (not reviewing)
LGTM w/ a nit about a blank line that I think snuck in by mistake ...
9 years ago (2011-12-10 00:16:51 UTC) #26
scherkus (not reviewing)
final note: in case major stuff has shifted around it'd probably be a good idea ...
9 years ago (2011-12-10 00:17:51 UTC) #27
willchan no longer on Chromium
ResourceContext is fine by me http://codereview.chromium.org/8818012/diff/29001/chrome/browser/browser_process_impl.h File chrome/browser/browser_process_impl.h (right): http://codereview.chromium.org/8818012/diff/29001/chrome/browser/browser_process_impl.h#newcode290 chrome/browser/browser_process_impl.h:290: scoped_refptr<AudioManager> audio_manager_; Why is ...
9 years ago (2011-12-10 00:27:33 UTC) #28
tommi (sloooow) - chröme
http://codereview.chromium.org/8818012/diff/19001/media/audio/audio_manager.h File media/audio/audio_manager.h (right): http://codereview.chromium.org/8818012/diff/19001/media/audio/audio_manager.h#newcode24 media/audio/audio_manager.h:24: : public base::RefCountedThreadSafe<AudioManager> { On 2011/12/10 00:16:52, scherkus wrote: ...
9 years ago (2011-12-10 09:59:57 UTC) #29
tommi (sloooow) - chröme
Heads up - I need to rebase today as there have been several changes in ...
9 years ago (2011-12-12 11:03:13 UTC) #30
tommi (sloooow) - chröme
On 2011/12/10 00:27:33, willchan wrote: > ResourceContext is fine by me > > http://codereview.chromium.org/8818012/diff/29001/chrome/browser/browser_process_impl.h > ...
9 years ago (2011-12-12 16:07:48 UTC) #31
willchan no longer on Chromium
LGTM! http://codereview.chromium.org/8818012/diff/19001/media/audio/audio_manager.h File media/audio/audio_manager.h (right): http://codereview.chromium.org/8818012/diff/19001/media/audio/audio_manager.h#newcode24 media/audio/audio_manager.h:24: : public base::RefCountedThreadSafe<AudioManager> { On 2011/12/10 09:59:57, tommi ...
9 years ago (2011-12-12 16:44:04 UTC) #32
Avi (use Gerrit)
owner rubberstamp lgtm
9 years ago (2011-12-12 17:28:34 UTC) #33
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/tommi@chromium.org/8818012/38094
9 years ago (2011-12-12 18:24:56 UTC) #34
commit-bot: I haz the power
9 years ago (2011-12-12 18:25:10 UTC) #35
Can't process patch for file media/audio/audio_output_proxy.h.
File's status is None, patchset upload is incomplete.

Powered by Google App Engine
This is Rietveld 408576698