• haraken@chromium.org's avatar
    Revert 182826 "Oilpan: Move MediaStreamSource, MediaStreamCompon..." · 97fc1238
    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
WebMediaStream.h 3.64 KB