-
haraken@chromium.org authored
This CL caused https://code.google.com/p/chromium/issues/detail?id=420048 > Oilpan: Move MediaStreamSource, MediaStreamComponent and MediaStreamDescriptor > to oilpan's heap > > - MediaStreamSource, MediaStreamComponent and MediaStreamDescriptor must be moved > to oilpan's heap in one go because their lifetime are tightly coupled. > > - Removed m_descriptor->setClient(0) from MediaStream's destructor. This is OK > because MediaStreamDescriptor has a strong Member back to the Client > (i.e., MediaStream). > > - Removed m_component->source()->removeObserver(this) from MediaStreamTrack's > destructor. This is OK because this CL made the observers weak > (i.e., MediaStreamSource::m_observers is a hash set of weak members to > MediaStreamTrack objects). > > - Removed WebMediaStreamTrack::ExtraData::m_owner because it's unused. > > - Introduced MediaStreamComponentDisposer to delay the destruction of > MediaStreamComponent::m_extraData. The ExtraData is exposed to the web > and some Chromium objects inherit from the ExtraData. If we clear the > m_extraData in the MediaStreamComponent's destructor, those Chromium-side > objects are also destructed in the MediaStreamComponent's destructor. > This is problematic because the destructors of the Chromium-side classes > can touch other on-heap objects in the Blink side. To avoid the issue, > we need to delay the destruction of the ExtraData to thread-specific > weak processing. The disposer pattern actually makes the deletion of > the extra data happen earlier and not later. The disposer makes sure > that the extra data is destructed in weak processing which is run before > sweeping and therefore all the objects are still alive and can be touched. > > > - The same problem arises for MediaStreamDescriptor and MediaStreamSource. > This CL adds MediaStreamDescriptorDisposer and MediaStreamSourceDisposer. > > - This CL depends on https://codereview.chromium.org/543603003/ and https://codereview.chromium.org/549153002. > > BUG=340522 > > Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=181702 > > Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=182399 > > Review URL: https://codereview.chromium.org/552653005 TBR=haraken@chromium.org Review URL: https://codereview.chromium.org/650413003 git-svn-id: svn://svn.chromium.org/blink/trunk@183663 bbb929c8-8fbe-4397-9dbb-9b2b20218538
97fc1238