Bug 1035394 - Fix dangerous public destructors in content/media/webaudio - r=padenot

This commit is contained in:
Benoit Jacob 2014-07-08 17:23:17 -04:00
Родитель a63ae90288
Коммит a26fa3305e
29 изменённых файлов: 97 добавлений и 7 удалений

Просмотреть файл

@ -61,6 +61,9 @@ public:
virtual size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE; virtual size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE;
virtual size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE; virtual size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE;
protected:
~AnalyserNode() {}
private: private:
friend class AnalyserNodeEngine; friend class AnalyserNodeEngine;
void AppendChunk(const AudioChunk& aChunk); void AppendChunk(const AudioChunk& aChunk);

Просмотреть файл

@ -20,7 +20,6 @@ class AudioBufferSourceNode : public AudioNode,
{ {
public: public:
explicit AudioBufferSourceNode(AudioContext* aContext); explicit AudioBufferSourceNode(AudioContext* aContext);
virtual ~AudioBufferSourceNode();
virtual void DestroyMediaStream() MOZ_OVERRIDE virtual void DestroyMediaStream() MOZ_OVERRIDE
{ {
@ -101,6 +100,9 @@ public:
virtual size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE; virtual size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE;
virtual size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE; virtual size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE;
protected:
virtual ~AudioBufferSourceNode();
private: private:
friend class AudioBufferSourceNodeEngine; friend class AudioBufferSourceNodeEngine;
// START is sent during Start(). // START is sent during Start().

Просмотреть файл

@ -318,6 +318,10 @@ AudioDestinationNode::AudioDestinationNode(AudioContext* aContext,
} }
} }
AudioDestinationNode::~AudioDestinationNode()
{
}
size_t size_t
AudioDestinationNode::SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const AudioDestinationNode::SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const
{ {

Просмотреть файл

@ -83,6 +83,9 @@ public:
void InputMuted(bool aInputMuted); void InputMuted(bool aInputMuted);
protected:
virtual ~AudioDestinationNode();
private: private:
bool CheckAudioChannelPermissions(AudioChannel aValue); bool CheckAudioChannelPermissions(AudioChannel aValue);
void CreateAudioChannelAgent(); void CreateAudioChannelAgent();

Просмотреть файл

@ -31,6 +31,10 @@ AudioProcessingEvent::AudioProcessingEvent(ScriptProcessorNode* aOwner,
SetIsDOMBinding(); SetIsDOMBinding();
} }
AudioProcessingEvent::~AudioProcessingEvent()
{
}
JSObject* JSObject*
AudioProcessingEvent::WrapObject(JSContext* aCx) AudioProcessingEvent::WrapObject(JSContext* aCx)
{ {

Просмотреть файл

@ -63,6 +63,9 @@ public:
return !!mOutputBuffer; return !!mOutputBuffer;
} }
protected:
virtual ~AudioProcessingEvent();
private: private:
already_AddRefed<AudioBuffer> already_AddRefed<AudioBuffer>
LazilyCreateBuffer(uint32_t aNumberOfChannels, ErrorResult& rv); LazilyCreateBuffer(uint32_t aNumberOfChannels, ErrorResult& rv);

Просмотреть файл

@ -258,6 +258,9 @@ BiquadFilterNode::BiquadFilterNode(AudioContext* aContext)
engine->SetSourceStream(static_cast<AudioNodeStream*> (mStream.get())); engine->SetSourceStream(static_cast<AudioNodeStream*> (mStream.get()));
} }
BiquadFilterNode::~BiquadFilterNode()
{
}
size_t size_t
BiquadFilterNode::SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const BiquadFilterNode::SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const

Просмотреть файл

@ -64,6 +64,9 @@ public:
virtual size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE; virtual size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE;
virtual size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE; virtual size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE;
protected:
virtual ~BiquadFilterNode();
private: private:
static void SendFrequencyToStream(AudioNode* aNode); static void SendFrequencyToStream(AudioNode* aNode);
static void SendDetuneToStream(AudioNode* aNode); static void SendDetuneToStream(AudioNode* aNode);

Просмотреть файл

@ -77,6 +77,10 @@ ChannelMergerNode::ChannelMergerNode(AudioContext* aContext,
MediaStreamGraph::INTERNAL_STREAM); MediaStreamGraph::INTERNAL_STREAM);
} }
ChannelMergerNode::~ChannelMergerNode()
{
}
JSObject* JSObject*
ChannelMergerNode::WrapObject(JSContext* aCx) ChannelMergerNode::WrapObject(JSContext* aCx)
{ {

Просмотреть файл

@ -36,6 +36,9 @@ public:
return aMallocSizeOf(this) + SizeOfExcludingThis(aMallocSizeOf); return aMallocSizeOf(this) + SizeOfExcludingThis(aMallocSizeOf);
} }
protected:
virtual ~ChannelMergerNode();
private: private:
const uint16_t mInputCount; const uint16_t mInputCount;
}; };

Просмотреть файл

@ -64,6 +64,10 @@ ChannelSplitterNode::ChannelSplitterNode(AudioContext* aContext,
MediaStreamGraph::INTERNAL_STREAM); MediaStreamGraph::INTERNAL_STREAM);
} }
ChannelSplitterNode::~ChannelSplitterNode()
{
}
JSObject* JSObject*
ChannelSplitterNode::WrapObject(JSContext* aCx) ChannelSplitterNode::WrapObject(JSContext* aCx)
{ {

Просмотреть файл

@ -36,6 +36,9 @@ public:
return aMallocSizeOf(this) + SizeOfExcludingThis(aMallocSizeOf); return aMallocSizeOf(this) + SizeOfExcludingThis(aMallocSizeOf);
} }
protected:
virtual ~ChannelSplitterNode();
private: private:
const uint16_t mOutputCount; const uint16_t mOutputCount;
}; };

Просмотреть файл

@ -194,6 +194,10 @@ ConvolverNode::ConvolverNode(AudioContext* aContext)
mStream = aContext->Graph()->CreateAudioNodeStream(engine, MediaStreamGraph::INTERNAL_STREAM); mStream = aContext->Graph()->CreateAudioNodeStream(engine, MediaStreamGraph::INTERNAL_STREAM);
} }
ConvolverNode::~ConvolverNode()
{
}
size_t size_t
ConvolverNode::SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const ConvolverNode::SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const
{ {

Просмотреть файл

@ -62,6 +62,9 @@ public:
virtual size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE; virtual size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE;
virtual size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE; virtual size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE;
protected:
virtual ~ConvolverNode();
private: private:
nsRefPtr<AudioBuffer> mBuffer; nsRefPtr<AudioBuffer> mBuffer;
bool mNormalize; bool mNormalize;

Просмотреть файл

@ -201,6 +201,10 @@ DelayNode::DelayNode(AudioContext* aContext, double aMaxDelay)
engine->SetSourceStream(static_cast<AudioNodeStream*> (mStream.get())); engine->SetSourceStream(static_cast<AudioNodeStream*> (mStream.get()));
} }
DelayNode::~DelayNode()
{
}
size_t size_t
DelayNode::SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const DelayNode::SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const
{ {

Просмотреть файл

@ -43,6 +43,9 @@ public:
virtual size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE; virtual size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE;
virtual size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE; virtual size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE;
protected:
virtual ~DelayNode();
private: private:
static void SendDelayToStream(AudioNode* aNode); static void SendDelayToStream(AudioNode* aNode);
friend class DelayNodeEngine; friend class DelayNodeEngine;

Просмотреть файл

@ -222,6 +222,10 @@ DynamicsCompressorNode::DynamicsCompressorNode(AudioContext* aContext)
engine->SetSourceStream(static_cast<AudioNodeStream*> (mStream.get())); engine->SetSourceStream(static_cast<AudioNodeStream*> (mStream.get()));
} }
DynamicsCompressorNode::~DynamicsCompressorNode()
{
}
size_t size_t
DynamicsCompressorNode::SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const DynamicsCompressorNode::SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const
{ {

Просмотреть файл

@ -64,6 +64,9 @@ public:
virtual size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE; virtual size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE;
virtual size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE; virtual size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE;
protected:
virtual ~DynamicsCompressorNode();
private: private:
static void SendThresholdToStream(AudioNode* aNode); static void SendThresholdToStream(AudioNode* aNode);
static void SendKneeToStream(AudioNode* aNode); static void SendKneeToStream(AudioNode* aNode);

Просмотреть файл

@ -133,6 +133,10 @@ GainNode::GainNode(AudioContext* aContext)
engine->SetSourceStream(static_cast<AudioNodeStream*> (mStream.get())); engine->SetSourceStream(static_cast<AudioNodeStream*> (mStream.get()));
} }
GainNode::~GainNode()
{
}
size_t size_t
GainNode::SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const GainNode::SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const
{ {

Просмотреть файл

@ -38,6 +38,9 @@ public:
virtual size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE; virtual size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE;
virtual size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE; virtual size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE;
protected:
virtual ~GainNode();
private: private:
static void SendGainToStream(AudioNode* aNode); static void SendGainToStream(AudioNode* aNode);

Просмотреть файл

@ -86,6 +86,10 @@ MediaStreamAudioDestinationNode::MediaStreamAudioDestinationNode(AudioContext* a
} }
} }
MediaStreamAudioDestinationNode::~MediaStreamAudioDestinationNode()
{
}
size_t size_t
MediaStreamAudioDestinationNode::SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const MediaStreamAudioDestinationNode::SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const
{ {

Просмотреть файл

@ -42,6 +42,9 @@ public:
virtual size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE; virtual size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE;
virtual size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE; virtual size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE;
protected:
virtual ~MediaStreamAudioDestinationNode();
private: private:
nsRefPtr<DOMMediaStream> mDOMStream; nsRefPtr<DOMMediaStream> mDOMStream;
nsRefPtr<MediaInputPort> mPort; nsRefPtr<MediaInputPort> mPort;

Просмотреть файл

@ -44,7 +44,6 @@ class MediaStreamAudioSourceNode : public AudioNode,
{ {
public: public:
MediaStreamAudioSourceNode(AudioContext* aContext, DOMMediaStream* aMediaStream); MediaStreamAudioSourceNode(AudioContext* aContext, DOMMediaStream* aMediaStream);
virtual ~MediaStreamAudioSourceNode();
NS_DECL_ISUPPORTS_INHERITED NS_DECL_ISUPPORTS_INHERITED
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(MediaStreamAudioSourceNode, AudioNode) NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(MediaStreamAudioSourceNode, AudioNode)
@ -65,6 +64,9 @@ public:
virtual void PrincipalChanged(DOMMediaStream* aMediaStream) MOZ_OVERRIDE; virtual void PrincipalChanged(DOMMediaStream* aMediaStream) MOZ_OVERRIDE;
protected:
virtual ~MediaStreamAudioSourceNode();
private: private:
nsRefPtr<MediaInputPort> mInputPort; nsRefPtr<MediaInputPort> mInputPort;
nsRefPtr<DOMMediaStream> mInputStream; nsRefPtr<DOMMediaStream> mInputStream;

Просмотреть файл

@ -28,6 +28,10 @@ OfflineAudioCompletionEvent::OfflineAudioCompletionEvent(AudioContext* aOwner,
SetIsDOMBinding(); SetIsDOMBinding();
} }
OfflineAudioCompletionEvent::~OfflineAudioCompletionEvent()
{
}
JSObject* JSObject*
OfflineAudioCompletionEvent::WrapObject(JSContext* aCx) OfflineAudioCompletionEvent::WrapObject(JSContext* aCx)
{ {

Просмотреть файл

@ -39,6 +39,9 @@ public:
return mRenderedBuffer; return mRenderedBuffer;
} }
protected:
virtual ~OfflineAudioCompletionEvent();
private: private:
nsRefPtr<AudioBuffer> mRenderedBuffer; nsRefPtr<AudioBuffer> mRenderedBuffer;
}; };

Просмотреть файл

@ -23,7 +23,6 @@ class OscillatorNode : public AudioNode,
{ {
public: public:
explicit OscillatorNode(AudioContext* aContext); explicit OscillatorNode(AudioContext* aContext);
virtual ~OscillatorNode();
NS_DECL_ISUPPORTS_INHERITED NS_DECL_ISUPPORTS_INHERITED
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(OscillatorNode, AudioNode) NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(OscillatorNode, AudioNode)
@ -89,6 +88,9 @@ public:
virtual size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE; virtual size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE;
virtual size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE; virtual size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE;
protected:
virtual ~OscillatorNode();
private: private:
static void SendFrequencyToStream(AudioNode* aNode); static void SendFrequencyToStream(AudioNode* aNode);
static void SendDetuneToStream(AudioNode* aNode); static void SendDetuneToStream(AudioNode* aNode);

Просмотреть файл

@ -27,8 +27,6 @@ class PannerNode : public AudioNode,
public: public:
MOZ_DECLARE_REFCOUNTED_TYPENAME(PannerNode) MOZ_DECLARE_REFCOUNTED_TYPENAME(PannerNode)
explicit PannerNode(AudioContext* aContext); explicit PannerNode(AudioContext* aContext);
virtual ~PannerNode();
virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE; virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
@ -205,6 +203,9 @@ public:
virtual size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE; virtual size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE;
virtual size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE; virtual size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE;
protected:
virtual ~PannerNode();
private: private:
friend class AudioListener; friend class AudioListener;
friend class PannerNodeEngine; friend class PannerNodeEngine;

Просмотреть файл

@ -23,7 +23,6 @@ public:
uint32_t aBufferSize, uint32_t aBufferSize,
uint32_t aNumberOfInputChannels, uint32_t aNumberOfInputChannels,
uint32_t aNumberOfOutputChannels); uint32_t aNumberOfOutputChannels);
virtual ~ScriptProcessorNode();
NS_DECL_ISUPPORTS_INHERITED NS_DECL_ISUPPORTS_INHERITED
@ -97,6 +96,9 @@ public:
virtual size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE; virtual size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE;
virtual size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE; virtual size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE;
protected:
virtual ~ScriptProcessorNode();
private: private:
nsAutoPtr<SharedBuffers> mSharedBuffers; nsAutoPtr<SharedBuffers> mSharedBuffers;
const uint32_t mBufferSize; const uint32_t mBufferSize;

Просмотреть файл

@ -20,7 +20,6 @@ class WaveShaperNode : public AudioNode
{ {
public: public:
explicit WaveShaperNode(AudioContext *aContext); explicit WaveShaperNode(AudioContext *aContext);
virtual ~WaveShaperNode();
NS_DECL_ISUPPORTS_INHERITED NS_DECL_ISUPPORTS_INHERITED
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED(WaveShaperNode, AudioNode) NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED(WaveShaperNode, AudioNode)
@ -59,6 +58,9 @@ public:
return aMallocSizeOf(this) + SizeOfExcludingThis(aMallocSizeOf); return aMallocSizeOf(this) + SizeOfExcludingThis(aMallocSizeOf);
} }
protected:
virtual ~WaveShaperNode();
private: private:
void ClearCurve(); void ClearCurve();