зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1541311 add support for AudioWorkletNode.numberOfInputs/Outputs r=padenot
There is no specified limit on the number of inputs or outputs, except that the webidl parameter is unsigned long, but Gecko has an implementation-defined limit. Differential Revision: https://phabricator.services.mozilla.com/D25898 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
b03aa4ed38
Коммит
fe0b4da7b5
|
@ -16,10 +16,13 @@ namespace dom {
|
||||||
NS_IMPL_ISUPPORTS_CYCLE_COLLECTION_INHERITED_0(AudioWorkletNode, AudioNode)
|
NS_IMPL_ISUPPORTS_CYCLE_COLLECTION_INHERITED_0(AudioWorkletNode, AudioNode)
|
||||||
|
|
||||||
AudioWorkletNode::AudioWorkletNode(AudioContext* aAudioContext,
|
AudioWorkletNode::AudioWorkletNode(AudioContext* aAudioContext,
|
||||||
const nsAString& aName)
|
const nsAString& aName,
|
||||||
|
const AudioWorkletNodeOptions& aOptions)
|
||||||
: AudioNode(aAudioContext, 2, ChannelCountMode::Max,
|
: AudioNode(aAudioContext, 2, ChannelCountMode::Max,
|
||||||
ChannelInterpretation::Speakers),
|
ChannelInterpretation::Speakers),
|
||||||
mNodeName(aName) {}
|
mNodeName(aName),
|
||||||
|
mInputCount(aOptions.mNumberOfInputs),
|
||||||
|
mOutputCount(aOptions.mNumberOfOutputs) {}
|
||||||
|
|
||||||
/* static */
|
/* static */
|
||||||
already_AddRefed<AudioWorkletNode> AudioWorkletNode::Constructor(
|
already_AddRefed<AudioWorkletNode> AudioWorkletNode::Constructor(
|
||||||
|
@ -57,8 +60,20 @@ already_AddRefed<AudioWorkletNode> AudioWorkletNode::Constructor(
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MSG does not support more than UINT16_MAX inputs or outputs.
|
||||||
|
if (aOptions.mNumberOfInputs > UINT16_MAX) {
|
||||||
|
aRv.ThrowRangeError<MSG_VALUE_OUT_OF_RANGE>(
|
||||||
|
NS_LITERAL_STRING("numberOfInputs"));
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
if (aOptions.mNumberOfOutputs > UINT16_MAX) {
|
||||||
|
aRv.ThrowRangeError<MSG_VALUE_OUT_OF_RANGE>(
|
||||||
|
NS_LITERAL_STRING("numberOfOutputs"));
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
RefPtr<AudioWorkletNode> audioWorkletNode =
|
RefPtr<AudioWorkletNode> audioWorkletNode =
|
||||||
new AudioWorkletNode(&aAudioContext, aName);
|
new AudioWorkletNode(&aAudioContext, aName, aOptions);
|
||||||
|
|
||||||
audioWorkletNode->Initialize(aOptions, aRv);
|
audioWorkletNode->Initialize(aOptions, aRv);
|
||||||
if (NS_WARN_IF(aRv.Failed())) {
|
if (NS_WARN_IF(aRv.Failed())) {
|
||||||
|
|
|
@ -34,16 +34,22 @@ class AudioWorkletNode : public AudioNode {
|
||||||
JSObject* WrapObject(JSContext* aCx,
|
JSObject* WrapObject(JSContext* aCx,
|
||||||
JS::Handle<JSObject*> aGivenProto) override;
|
JS::Handle<JSObject*> aGivenProto) override;
|
||||||
|
|
||||||
|
// AudioNode methods
|
||||||
|
uint16_t NumberOfInputs() const override { return mInputCount; }
|
||||||
|
uint16_t NumberOfOutputs() const override { return mOutputCount; }
|
||||||
const char* NodeType() const override { return "AudioWorkletNode"; }
|
const char* NodeType() const override { return "AudioWorkletNode"; }
|
||||||
|
|
||||||
size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const override;
|
size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const override;
|
||||||
size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const override;
|
size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
AudioWorkletNode(AudioContext* aAudioContext, const nsAString& aName);
|
AudioWorkletNode(AudioContext* aAudioContext, const nsAString& aName,
|
||||||
|
const AudioWorkletNodeOptions& aOptions);
|
||||||
~AudioWorkletNode() = default;
|
~AudioWorkletNode() = default;
|
||||||
|
|
||||||
nsString mNodeName;
|
nsString mNodeName;
|
||||||
|
uint16_t mInputCount;
|
||||||
|
uint16_t mOutputCount;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace dom
|
} // namespace dom
|
||||||
|
|
|
@ -1,15 +1,3 @@
|
||||||
[audioworkletnode-constructor-options.https.html]
|
[audioworkletnode-constructor-options.https.html]
|
||||||
expected:
|
expected:
|
||||||
if release_or_beta: ERROR
|
if release_or_beta: ERROR
|
||||||
[X testNode.numberOfOutputs is not equal to 18. Got 1.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[# AUDIT TASK RUNNER FINISHED: 1 out of 6 tasks were failed.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[< [audio-node-options\] 2 out of 6 assertions were failed.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[X testNode.numberOfInputs is not equal to 7. Got 1.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче