Chromium Code Reviews
Help | Chromium Project | Gerrit Changes | Sign in
(40)

Issue 1834323002: MediaStream audio: Refactor 3 separate "glue" implementations into one. (Closed)

Created:
4 years ago by miu
Modified:
3 years, 11 months ago
CC:
chromium-reviews, mlamouri+watch-content_chromium.org, imcheng+watch_chromium.org, posciak+watch_chromium.org, avayvod+watch_chromium.org, jam, mcasas+watch_chromium.org, feature-media-reviews_chromium.org, darin-cc_chromium.org, jasonroberts+watch_google.com, mkwst+moarreviews-renderer_chromium.org, xjz+watch_chromium.org, isheriff+watch_chromium.org, miu+watch_chromium.org
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

MediaStream audio: Refactor 3 separate "glue" implementations into one. This is a refactoring of the MediaStreamAudioSource/Track object graph such that life-cycle and audio flow control are unified into a single architecture. Previously, each of three implementations solved this same problem in three different ways; and this has made it difficult to maintain the code in src/content/renderer/media across all product features, WebRTC or otherwise. Diagram of post-refactoring class relationships: https://docs.google.com/drawings/d/1yTsXvRMIyMlXjIEeQOVqXPxMPWgekB5ePWUVSI5-zwo/edit?usp=sharing The new architeture is as follows: 1. MediaStreamAudioSource becomes a base class implementation for creating MediaStreamAudioTracks and delivering audio to them from the source (i.e., an AudioInputDevice, a PeerConnection remote source, or a WebAudio source). All of its methods are now assumed to be run on the main thread, while audio flow may optionally occur on a separate thread. 2. MediaStreamAudioTrack becomes a base class implementation for connecting/disconnecting MediaStreamAudioSinks, and delivering audio to them from the source. 3. Both MediaStreamAudioSource and MediaStreamAudioTrack are owned by their blink counterparts (WebMediaStreamSource and WebMediaStreamTrack), and their destruction may safely occur any time the blink implementation requires it. Following the new architeture, the refactoring is: 1. WebRtcAudioCapturer becomes a sub-class of MediaStreamAudioSource and is renamed to ProcessedLocalAudioSource. This new class owns and manages the WebRTC-specific audio processing on the source data. Also: a) Significant implementation from PeerConnectionDependencyFactory was consolidated/moved to this class. b) The "EnablePeerConnectionMode" functionality, which re-started the audio input with a different buffer size, has been removed to simplify the implementation. Now, buffer size is determined BEFORE the first time the audio input device is started. c) Currently, all local audio sources (i.e., via AudioInputDevice) are routed through this pipeline, but a soon-upcoming change will split the WebRTC-specific cases from the ones that should not go through audio processing. 2. MediaStreamRemoteAudioTrack becomes a sub-class of MediaStreamAudioSource and is renamed to PeerConnectionRemoteAudioSource. This new class owns and manages the flow of audio data from a PeerConnection into the MediaStream framework. 3. WebAudioCapturer becomes a sub-class of MediaStreamAudioSource and is renamed to WebAudioMediaStreamSource. As a blink::WebAudioDestinationConsumer, it manages the flow of audio from a WebAudio destination node into the MediaStream framework. BUG=577881, 577874 Committed: https://crrev.com/e640bad76cad1155335d4068ecd46d250327bb9e Cr-Commit-Position: refs/heads/master@{#392845}

Patch Set 1 #

Total comments: 16

Patch Set 2 : Comments about PS1 addressed. Fixed is_stopped_/StopSource() foo. REBASE #

Total comments: 8

Patch Set 3 : Addressed comments from PS2: AudioInputDevice --> AudioCapturerSource, and refptr foo in WebRtcMedi… #

Total comments: 66

Patch Set 4 : WebRtcLocalAudioTrackAdapter-->WebRtcAudioSink, MediaStreamAudioDeliverer; and PS3 comments address… #

Total comments: 20

Patch Set 5 : Unconditionally create MSAudioTrack; Remove hack in RtcPCHandler; One space after periods. #

Total comments: 18

Patch Set 6 : more work on creating ended tracks; 10ms default audio buffer size; comments tweaked #

Total comments: 14

Patch Set 7 : Addressed tommi's comments on PS6. #

Total comments: 3

Patch Set 8 : Reworked unit tests around structural changes, and added exhaustive media_stream_audio_unittest.cc. #

Total comments: 16

Patch Set 9 : Addressed o1ka's comments on PS8 and fixed trybot failures. #

Patch Set 10 : REBASE + Workaround to ensure MediaStreamAudioProcessor is destroyed on the main thread. #

Unified diffs Side-by-side diffs Delta from patch set Stats (+2825 lines, -4879 lines) Patch
M content/content_renderer.gypi View 1 2 3 4 5 6 7 8 9 7 chunks +15 lines, -19 lines 0 comments Download
M content/content_tests.gypi View 1 2 3 4 5 6 7 8 9 2 chunks +4 lines, -3 lines 0 comments Download
M content/public/renderer/media_stream_utils.cc View 1 2 3 4 5 6 7 8 9 2 chunks +9 lines, -25 lines 0 comments Download
M content/renderer/media/audio_track_recorder_unittest.cc View 1 2 3 4 5 6 7 8 9 2 chunks +8 lines, -10 lines 0 comments Download
A + content/renderer/media/external_media_stream_audio_source.h View 1 2 3 4 5 6 7 1 chunk +42 lines, -41 lines 0 comments Download
A content/renderer/media/external_media_stream_audio_source.cc View 1 2 3 4 5 6 1 chunk +81 lines, -0 lines 0 comments Download
A content/renderer/media/media_stream_audio_deliverer.h View 1 2 3 4 5 6 7 1 chunk +156 lines, -0 lines 0 comments Download
M content/renderer/media/media_stream_audio_processor.cc View 1 2 3 4 5 6 7 8 9 1 chunk +3 lines, -0 lines 0 comments Download
M content/renderer/media/media_stream_audio_processor_options.cc View 1 2 3 4 5 6 7 1 chunk +3 lines, -3 lines 0 comments Download
M content/renderer/media/media_stream_audio_processor_unittest.cc View 1 2 3 4 5 6 7 1 chunk +1 line, -0 lines 0 comments Download
D content/renderer/media/media_stream_audio_sink_owner.h View 1 chunk +0 lines, -47 lines 0 comments Download
D content/renderer/media/media_stream_audio_sink_owner.cc View 1 2 3 4 5 6 7 1 chunk +0 lines, -49 lines 0 comments Download
M content/renderer/media/media_stream_audio_source.h View 1 2 3 4 1 chunk +106 lines, -55 lines 0 comments Download
M content/renderer/media/media_stream_audio_source.cc View 1 2 3 4 5 6 7 2 chunks +104 lines, -51 lines 0 comments Download
M content/renderer/media/media_stream_audio_track.h View 1 2 3 4 5 6 7 2 chunks +69 lines, -30 lines 0 comments Download
M content/renderer/media/media_stream_audio_track.cc View 1 2 3 4 5 6 7 2 chunks +90 lines, -16 lines 0 comments Download
D content/renderer/media/media_stream_audio_track_sink.h View 1 2 3 4 5 6 7 1 chunk +0 lines, -61 lines 0 comments Download
A content/renderer/media/media_stream_audio_unittest.cc View 1 2 3 4 5 6 7 8 9 1 chunk +450 lines, -0 lines 0 comments Download
M content/renderer/media/media_stream_center.h View 1 2 3 4 2 chunks +2 lines, -4 lines 0 comments Download
M content/renderer/media/media_stream_center.cc View 1 2 3 4 5 chunks +35 lines, -27 lines 0 comments Download
M content/renderer/media/media_stream_renderer_factory_impl.cc View 1 2 3 2 chunks +2 lines, -5 lines 0 comments Download
M content/renderer/media/media_stream_source.h View 1 2 chunks +24 lines, -20 lines 0 comments Download
M content/renderer/media/media_stream_source.cc View 1 1 chunk +30 lines, -3 lines 0 comments Download
A content/renderer/media/mock_audio_device_factory.h View 1 2 3 4 5 6 7 8 1 chunk +82 lines, -0 lines 0 comments Download
A + content/renderer/media/mock_audio_device_factory.cc View 1 2 3 4 5 6 7 8 1 chunk +16 lines, -22 lines 0 comments Download
M content/renderer/media/mock_media_stream_dispatcher.cc View 1 2 3 4 5 6 7 2 chunks +4 lines, -0 lines 0 comments Download
M content/renderer/media/mock_media_stream_registry.cc View 1 2 3 4 5 6 7 8 9 3 chunks +33 lines, -13 lines 0 comments Download
M content/renderer/media/remote_media_stream_impl.cc View 1 2 3 4 5 6 7 8 9 2 chunks +5 lines, -6 lines 0 comments Download
M content/renderer/media/rtc_peer_connection_handler.cc View 1 2 3 4 5 6 7 3 chunks +12 lines, -9 lines 0 comments Download
M content/renderer/media/rtc_peer_connection_handler_unittest.cc View 1 2 3 4 5 6 7 8 9 9 chunks +54 lines, -14 lines 0 comments Download
M content/renderer/media/speech_recognition_audio_sink_unittest.cc View 1 2 3 4 5 6 7 8 9 7 chunks +49 lines, -33 lines 0 comments Download
D content/renderer/media/tagged_list.h View 1 chunk +0 lines, -95 lines 0 comments Download
M content/renderer/media/user_media_client_impl.h View 1 2 3 4 5 6 7 8 9 3 chunks +8 lines, -4 lines 0 comments Download
M content/renderer/media/user_media_client_impl.cc View 1 2 3 4 5 6 7 8 9 5 chunks +25 lines, -17 lines 0 comments Download
M content/renderer/media/user_media_client_impl_unittest.cc View 1 2 3 4 5 6 7 8 9 5 chunks +29 lines, -6 lines 0 comments Download
D content/renderer/media/webaudio_capturer_source.h View 1 2 3 4 5 6 7 1 chunk +0 lines, -101 lines 0 comments Download
D content/renderer/media/webaudio_capturer_source.cc View 1 chunk +0 lines, -136 lines 0 comments Download
A + content/renderer/media/webaudio_media_stream_source.h View 1 2 3 4 5 6 7 3 chunks +32 lines, -51 lines 0 comments Download
A + content/renderer/media/webaudio_media_stream_source.cc View 1 2 3 4 5 6 3 chunks +52 lines, -77 lines 0 comments Download
D content/renderer/media/webrtc/media_stream_remote_audio_track.h View 1 2 3 1 chunk +0 lines, -89 lines 0 comments Download
D content/renderer/media/webrtc/media_stream_remote_audio_track.cc View 1 2 3 1 chunk +0 lines, -237 lines 0 comments Download
M content/renderer/media/webrtc/mock_peer_connection_dependency_factory.h View 1 2 3 4 5 6 7 2 chunks +5 lines, -12 lines 0 comments Download
M content/renderer/media/webrtc/mock_peer_connection_dependency_factory.cc View 1 2 3 4 5 6 7 4 chunks +6 lines, -21 lines 0 comments Download
M content/renderer/media/webrtc/peer_connection_dependency_factory.h View 1 2 3 4 5 6 7 5 chunks +7 lines, -40 lines 0 comments Download
M content/renderer/media/webrtc/peer_connection_dependency_factory.cc View 1 2 3 4 5 6 7 8 5 chunks +0 lines, -189 lines 0 comments Download
A + content/renderer/media/webrtc/peer_connection_remote_audio_source.h View 1 2 3 4 5 6 7 1 chunk +70 lines, -57 lines 0 comments Download
A content/renderer/media/webrtc/peer_connection_remote_audio_source.cc View 1 2 3 4 5 6 7 1 chunk +153 lines, -0 lines 0 comments Download
A + content/renderer/media/webrtc/processed_local_audio_source.h View 1 2 3 4 5 6 3 chunks +86 lines, -145 lines 0 comments Download
A + content/renderer/media/webrtc/processed_local_audio_source.cc View 1 2 3 4 5 6 chunks +218 lines, -395 lines 0 comments Download
A + content/renderer/media/webrtc/processed_local_audio_source_unittest.cc View 1 2 3 4 5 6 7 8 9 3 chunks +163 lines, -88 lines 0 comments Download
A + content/renderer/media/webrtc/webrtc_audio_sink.h View 1 2 3 4 5 6 7 8 9 1 chunk +149 lines, -73 lines 0 comments Download
A + content/renderer/media/webrtc/webrtc_audio_sink.cc View 1 2 3 4 5 6 7 8 9 2 chunks +126 lines, -93 lines 0 comments Download
D content/renderer/media/webrtc/webrtc_audio_sink_adapter.h View 1 2 3 4 5 6 7 1 chunk +0 lines, -51 lines 0 comments Download
M content/renderer/media/webrtc/webrtc_audio_sink_adapter.cc View 1 2 3 1 chunk +0 lines, -51 lines 0 comments Download
M content/renderer/media/webrtc/webrtc_local_audio_track_adapter.h View 1 2 3 1 chunk +0 lines, -107 lines 0 comments Download
D content/renderer/media/webrtc/webrtc_local_audio_track_adapter.cc View 1 2 3 1 chunk +0 lines, -161 lines 0 comments Download
D content/renderer/media/webrtc/webrtc_local_audio_track_adapter_unittest.cc View 1 2 3 4 5 6 7 1 chunk +0 lines, -102 lines 0 comments Download
M content/renderer/media/webrtc/webrtc_media_stream_adapter.h View 1 2 3 4 5 chunks +10 lines, -6 lines 0 comments Download
M content/renderer/media/webrtc/webrtc_media_stream_adapter.cc View 1 2 3 4 5 6 7 3 chunks +70 lines, -31 lines 0 comments Download
M content/renderer/media/webrtc/webrtc_media_stream_adapter_unittest.cc View 1 2 3 4 5 6 7 8 9 4 chunks +28 lines, -12 lines 0 comments Download
D content/renderer/media/webrtc_audio_capturer.h View 1 2 3 1 chunk +0 lines, -207 lines 0 comments Download
D content/renderer/media/webrtc_audio_capturer.cc View 1 2 3 1 chunk +0 lines, -566 lines 0 comments Download
D content/renderer/media/webrtc_audio_capturer_unittest.cc View 1 2 3 4 5 6 7 1 chunk +0 lines, -152 lines 0 comments Download
M content/renderer/media/webrtc_audio_device_impl.h View 1 2 3 4 4 chunks +8 lines, -7 lines 0 comments Download
M content/renderer/media/webrtc_audio_device_impl.cc View 1 2 3 4 5 6 7 4 chunks +7 lines, -7 lines 0 comments Download
M content/renderer/media/webrtc_audio_renderer.h View 1 2 3 1 chunk +1 line, -0 lines 0 comments Download
M content/renderer/media/webrtc_audio_renderer.cc View 1 2 3 4 5 6 7 3 chunks +9 lines, -7 lines 0 comments Download
M content/renderer/media/webrtc_audio_renderer_unittest.cc View 1 2 3 4 5 6 7 2 chunks +4 lines, -1 line 0 comments Download
M content/renderer/media/webrtc_local_audio_source_provider.h View 1 2 3 1 chunk +7 lines, -3 lines 0 comments Download
M content/renderer/media/webrtc_local_audio_source_provider_unittest.cc View 1 2 3 4 5 6 7 8 9 5 chunks +8 lines, -13 lines 0 comments Download
D content/renderer/media/webrtc_local_audio_track.h View 1 2 3 4 5 6 7 1 chunk +0 lines, -106 lines 0 comments Download
D content/renderer/media/webrtc_local_audio_track.cc View 1 chunk +0 lines, -169 lines 0 comments Download
D content/renderer/media/webrtc_local_audio_track_unittest.cc View 1 2 3 4 5 6 7 8 9 1 chunk +0 lines, -579 lines 0 comments Download
M content/renderer/pepper/pepper_media_stream_video_track_host.h View 1 2 3 4 5 6 7 8 5 chunks +9 lines, -18 lines 0 comments Download
M content/renderer/pepper/pepper_media_stream_video_track_host.cc View 1 2 3 4 5 6 7 8 9 6 chunks +46 lines, -31 lines 0 comments Download

Messages

Total messages: 54 (15 generated)
miu
o1ka: PTAL. The LOC changed looks daunting, but most of this is file renames and ...
4 years ago (2016-03-28 23:26:23 UTC) #3
o1ka
Great stuff, I like the idea of change a lot: would be wonderful to have ...
4 years ago (2016-03-30 15:00:58 UTC) #4
miu
On 2016/03/30 15:00:58, o1ka wrote: > Looked at MediaStreamSource hierarchy so far. I think there ...
4 years ago (2016-03-31 04:57:59 UTC) #6
o1ka
Still getting through the graph to get the full picture of the change, enjoying it ...
4 years ago (2016-03-31 16:35:35 UTC) #7
miu
On 2016/03/31 16:35:35, o1ka wrote: > Still getting through the graph to get the full ...
4 years ago (2016-03-31 22:35:31 UTC) #8
o1ka
I do not feel I got it all yet. Some questions for today :) https://codereview.chromium.org/1834323002/diff/40001/content/renderer/media/webaudio_media_stream_source.cc ...
4 years ago (2016-04-01 15:11:41 UTC) #9
o1ka
I feel bad about reviewing it that long, but the reality is it's a huge ...
4 years ago (2016-04-06 18:39:11 UTC) #11
o1ka
Adding Per - he knows stream/thread stuff!
3 years, 12 months ago (2016-04-08 12:21:26 UTC) #13
perkj_chrome
An impressive cleanup! And a massive cl. I took a first pass. I don't know ...
3 years, 12 months ago (2016-04-08 14:05:42 UTC) #14
miu
Status update: Olga's comments from April 1 led to an insight that allowed me to ...
3 years, 12 months ago (2016-04-08 18:36:47 UTC) #15
miu
Oops! By sending my last message, I published my comments prematurely. However, they do give ...
3 years, 12 months ago (2016-04-08 18:39:31 UTC) #16
miu
o1ka/perkj_chrome: PTAL. To summarize what's changed between PS3 and PS4: 0. Rebased (mostly picked up ...
3 years, 11 months ago (2016-04-19 00:40:23 UTC) #17
perkj_chrome
Looks very good to me. Tommi- can you please try to take a look as ...
3 years, 11 months ago (2016-04-20 13:34:54 UTC) #18
miu
perkj: Addressed your comments. PTAL at Patch Set 5. https://codereview.chromium.org/1834323002/diff/60001/content/renderer/media/media_stream_audio_source.h File content/renderer/media/media_stream_audio_source.h (right): https://codereview.chromium.org/1834323002/diff/60001/content/renderer/media/media_stream_audio_source.h#newcode49 content/renderer/media/media_stream_audio_source.h:49: ...
3 years, 11 months ago (2016-04-20 22:04:53 UTC) #20
o1ka
I can't believe it's becoming THAT clear comparing to what it used to be :) ...
3 years, 11 months ago (2016-04-21 18:51:23 UTC) #21
miu
o1ka: Thanks again for reviewing. Addressed all your comments. PTAL at Patch Set 6. https://codereview.chromium.org/1834323002/diff/100001/content/renderer/media/media_stream_audio_deliverer.h ...
3 years, 11 months ago (2016-04-21 20:42:30 UTC) #22
o1ka
I think this CL is in a very good shape. tommi@ - we need your ...
3 years, 11 months ago (2016-04-22 11:29:26 UTC) #24
perkj_chrome
lgtm Lets get it in and see if it works :->
3 years, 11 months ago (2016-04-25 15:18:17 UTC) #25
o1ka
On 2016/04/25 15:18:17, perkj_chrome wrote: > lgtm > Lets get it in and see if ...
3 years, 11 months ago (2016-04-25 15:21:30 UTC) #26
miu
On 2016/04/25 15:21:30, o1ka wrote: > On 2016/04/25 15:18:17, perkj_chrome wrote: > > lgtm > ...
3 years, 11 months ago (2016-04-25 20:55:53 UTC) #27
tommi (sloooow) - chröme
currently at processed_audio_source. Not many comments, overall looks great :) https://codereview.chromium.org/1834323002/diff/120001/content/renderer/media/media_stream_audio_track.cc File content/renderer/media/media_stream_audio_track.cc (right): https://codereview.chromium.org/1834323002/diff/120001/content/renderer/media/media_stream_audio_track.cc#newcode72 ...
3 years, 11 months ago (2016-04-25 21:07:16 UTC) #28
miu
Thanks, tommi. Addressed your comments on PS6 (please see diff between PS6 and PS7 for ...
3 years, 11 months ago (2016-04-28 20:18:50 UTC) #29
o1ka
https://codereview.chromium.org/1834323002/diff/120001/content/renderer/media/media_stream_audio_track.cc File content/renderer/media/media_stream_audio_track.cc (right): https://codereview.chromium.org/1834323002/diff/120001/content/renderer/media/media_stream_audio_track.cc#newcode122 content/renderer/media/media_stream_audio_track.cc:122: base::AutoLock auto_lock(enabled_lock_); On 2016/04/28 20:18:49, miu wrote: > On ...
3 years, 11 months ago (2016-04-29 09:53:46 UTC) #30
miu
https://codereview.chromium.org/1834323002/diff/120001/content/renderer/media/media_stream_audio_track.cc File content/renderer/media/media_stream_audio_track.cc (right): https://codereview.chromium.org/1834323002/diff/120001/content/renderer/media/media_stream_audio_track.cc#newcode122 content/renderer/media/media_stream_audio_track.cc:122: base::AutoLock auto_lock(enabled_lock_); On 2016/04/29 09:53:46, o1ka wrote: > On ...
3 years, 11 months ago (2016-05-04 02:47:53 UTC) #31
miu
Thanks for your patience. Tests are now ready! :) Recommendation: Just review diff between PS7 ...
3 years, 11 months ago (2016-05-04 02:49:15 UTC) #32
o1ka
Looks really nice, a couple of comments (some bots do not look happy thought). Side ...
3 years, 11 months ago (2016-05-04 08:49:24 UTC) #33
miu
Thanks again! Addressed comments on PS8 and fixed trybot failures (pepper code was doing a ...
3 years, 11 months ago (2016-05-04 22:10:10 UTC) #34
o1ka
At this point I've done everything I could to review it - let's see what ...
3 years, 11 months ago (2016-05-06 16:53:57 UTC) #35
miu
nick: PTAL at content/public/renderer/media_stream_utils.cc. tommi: Just waiting on your LGTM. I hate to rush things, ...
3 years, 11 months ago (2016-05-09 20:27:14 UTC) #37
ncarter (slow)
On 2016/05/09 20:27:14, miu wrote: > nick: PTAL at content/public/renderer/media_stream_utils.cc. > > tommi: Just waiting ...
3 years, 11 months ago (2016-05-09 20:29:36 UTC) #38
tommi (sloooow) - chröme
lgtm
3 years, 11 months ago (2016-05-10 08:07:43 UTC) #39
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1834323002/180001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1834323002/180001
3 years, 11 months ago (2016-05-10 08:09:08 UTC) #42
commit-bot: I haz the power
Try jobs failed on following builders: ios-device-gn on tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/ios-device-gn/builds/2929) ios-simulator on tryserver.chromium.mac (JOB_FAILED, ...
3 years, 11 months ago (2016-05-10 08:11:55 UTC) #44
miu
Thanks everyone for this VERY COMPLEX review! :) FYI--After tommi's lgtm, I rebased and during ...
3 years, 11 months ago (2016-05-11 02:48:58 UTC) #45
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1834323002/200001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1834323002/200001
3 years, 11 months ago (2016-05-11 02:49:32 UTC) #48
commit-bot: I haz the power
Committed patchset #10 (id:200001)
3 years, 11 months ago (2016-05-11 04:04:29 UTC) #50
commit-bot: I haz the power
Patchset 10 (id:??) landed as https://crrev.com/e640bad76cad1155335d4068ecd46d250327bb9e Cr-Commit-Position: refs/heads/master@{#392845}
3 years, 11 months ago (2016-05-11 04:06:12 UTC) #52
tommycli
A revert of this CL (patchset #10 id:200001) has been created in https://codereview.chromium.org/1966043006/ by tommycli@chromium.org. ...
3 years, 11 months ago (2016-05-11 17:00:04 UTC) #53
miu
3 years, 11 months ago (2016-05-12 22:14:39 UTC) #54
Message was sent while issue was closed.
FYI--This change was re-landed (with a fix for the locking behavior):
https://codereview.chromium.org/1977553002/

Confirmed that the TSAN bots that had failed on the original attempt are green
with the re-landed code. (And I had confirmed this on a local TSAN build/run
before commit.)

Powered by Google App Engine
This is Rietveld 408576698