summaryrefslogtreecommitdiff
path: root/Source/WebCore/Modules/webaudio/OfflineAudioContext.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/Modules/webaudio/OfflineAudioContext.cpp')
-rw-r--r--Source/WebCore/Modules/webaudio/OfflineAudioContext.cpp34
1 files changed, 10 insertions, 24 deletions
diff --git a/Source/WebCore/Modules/webaudio/OfflineAudioContext.cpp b/Source/WebCore/Modules/webaudio/OfflineAudioContext.cpp
index 3bece3019..ba5e49fae 100644
--- a/Source/WebCore/Modules/webaudio/OfflineAudioContext.cpp
+++ b/Source/WebCore/Modules/webaudio/OfflineAudioContext.cpp
@@ -29,38 +29,24 @@
#include "OfflineAudioContext.h"
#include "Document.h"
-#include "ExceptionCode.h"
-#include "ScriptExecutionContext.h"
namespace WebCore {
-PassRefPtr<OfflineAudioContext> OfflineAudioContext::create(ScriptExecutionContext& context, unsigned numberOfChannels, size_t numberOfFrames, float sampleRate, ExceptionCode& ec)
-{
- // FIXME: add support for workers.
- if (!context.isDocument()) {
- ec = NOT_SUPPORTED_ERR;
- return nullptr;
- }
-
- Document& document = toDocument(context);
-
- if (numberOfChannels > 10 || !isSampleRateRangeGood(sampleRate)) {
- ec = SYNTAX_ERR;
- return nullptr;
- }
-
- RefPtr<OfflineAudioContext> audioContext(adoptRef(new OfflineAudioContext(document, numberOfChannels, numberOfFrames, sampleRate)));
- audioContext->suspendIfNeeded();
- return audioContext.release();
-}
-
-OfflineAudioContext::OfflineAudioContext(Document& document, unsigned numberOfChannels, size_t numberOfFrames, float sampleRate)
+inline OfflineAudioContext::OfflineAudioContext(Document& document, unsigned numberOfChannels, size_t numberOfFrames, float sampleRate)
: AudioContext(document, numberOfChannels, numberOfFrames, sampleRate)
{
}
-OfflineAudioContext::~OfflineAudioContext()
+ExceptionOr<Ref<OfflineAudioContext>> OfflineAudioContext::create(ScriptExecutionContext& context, unsigned numberOfChannels, size_t numberOfFrames, float sampleRate)
{
+ // FIXME: Add support for workers.
+ if (!is<Document>(context))
+ return Exception { NOT_SUPPORTED_ERR };
+ if (!numberOfChannels || numberOfChannels > 10 || !numberOfFrames || !isSampleRateRangeGood(sampleRate))
+ return Exception { SYNTAX_ERR };
+ auto audioContext = adoptRef(*new OfflineAudioContext(downcast<Document>(context), numberOfChannels, numberOfFrames, sampleRate));
+ audioContext->suspendIfNeeded();
+ return WTFMove(audioContext);
}
} // namespace WebCore