| Index: third_party/WebKit/Source/platform/mediastream/MediaStreamComponent.h
|
| diff --git a/third_party/WebKit/Source/platform/mediastream/MediaStreamComponent.h b/third_party/WebKit/Source/platform/mediastream/MediaStreamComponent.h
|
| index 08809488c4ae3a8cada2806b765ac76b62db50d5..e8b7832a65d7019e9f29972d919db58b0e81e008 100644
|
| --- a/third_party/WebKit/Source/platform/mediastream/MediaStreamComponent.h
|
| +++ b/third_party/WebKit/Source/platform/mediastream/MediaStreamComponent.h
|
| @@ -33,6 +33,7 @@
|
| #define MediaStreamComponent_h
|
|
|
| #include "platform/audio/AudioSourceProvider.h"
|
| +#include "platform/heap/Handle.h"
|
| #include "wtf/PassOwnPtr.h"
|
| #include "wtf/PassRefPtr.h"
|
| #include "wtf/RefCounted.h"
|
| @@ -44,15 +45,15 @@ namespace blink {
|
| class MediaStreamSource;
|
| class WebAudioSourceProvider;
|
|
|
| -class PLATFORM_EXPORT MediaStreamComponent final : public RefCounted<MediaStreamComponent> {
|
| +class PLATFORM_EXPORT MediaStreamComponent final : public GarbageCollectedFinalized<MediaStreamComponent> {
|
| public:
|
| class ExtraData {
|
| public:
|
| virtual ~ExtraData() { }
|
| };
|
|
|
| - static PassRefPtr<MediaStreamComponent> create(PassRefPtr<MediaStreamSource>);
|
| - static PassRefPtr<MediaStreamComponent> create(const String& id, PassRefPtr<MediaStreamSource>);
|
| + static MediaStreamComponent* create(MediaStreamSource*);
|
| + static MediaStreamComponent* create(const String& id, MediaStreamSource*);
|
|
|
| MediaStreamSource* source() const { return m_source.get(); }
|
|
|
| @@ -70,8 +71,13 @@ public:
|
| ExtraData* extraData() const { return m_extraData.get(); }
|
| void setExtraData(PassOwnPtr<ExtraData> extraData) { m_extraData = extraData; }
|
|
|
| + // |m_extraData| may hold pointers GC objects, and it may touch them in destruction.
|
| + // So this class is eagerly finalized to finalize |m_extraData| promptly.
|
| + EAGERLY_FINALIZE();
|
| + DECLARE_TRACE();
|
| +
|
| private:
|
| - MediaStreamComponent(const String& id, PassRefPtr<MediaStreamSource>);
|
| + MediaStreamComponent(const String& id, MediaStreamSource*);
|
|
|
| #if ENABLE(WEB_AUDIO)
|
| // AudioSourceProviderImpl wraps a WebAudioSourceProvider::provideInput()
|
| @@ -100,14 +106,14 @@ private:
|
| AudioSourceProviderImpl m_sourceProvider;
|
| #endif // ENABLE(WEB_AUDIO)
|
|
|
| - RefPtr<MediaStreamSource> m_source;
|
| + Member<MediaStreamSource> m_source;
|
| String m_id;
|
| bool m_enabled;
|
| bool m_muted;
|
| OwnPtr<ExtraData> m_extraData;
|
| };
|
|
|
| -typedef Vector<RefPtr<MediaStreamComponent>> MediaStreamComponentVector;
|
| +typedef HeapVector<Member<MediaStreamComponent>> MediaStreamComponentVector;
|
|
|
| } // namespace blink
|
|
|
|
|