Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / modules / webaudio / OfflineAudioContext.cpp
index cb3de99..0378172 100644 (file)
 #include "core/dom/Document.h"
 #include "core/dom/ExceptionCode.h"
 #include "core/dom/ExecutionContext.h"
+#include "platform/audio/AudioUtilities.h"
 
 namespace blink {
 
-PassRefPtrWillBeRawPtr<OfflineAudioContext> OfflineAudioContext::create(ExecutionContext* context, unsigned numberOfChannels, size_t numberOfFrames, float sampleRate, ExceptionState& exceptionState)
+OfflineAudioContext* OfflineAudioContext::create(ExecutionContext* context, unsigned numberOfChannels, size_t numberOfFrames, float sampleRate, ExceptionState& exceptionState)
 {
     // FIXME: add support for workers.
     if (!context || !context->isDocument()) {
         exceptionState.throwDOMException(
             NotSupportedError,
             "Workers are not supported.");
-        return nullptr;
+        return 0;
     }
 
     Document* document = toDocument(context);
 
     if (!numberOfFrames) {
         exceptionState.throwDOMException(SyntaxError, "number of frames cannot be zero.");
-        return nullptr;
+        return 0;
     }
 
     if (numberOfChannels > AudioContext::maxNumberOfChannels()) {
@@ -63,15 +64,20 @@ PassRefPtrWillBeRawPtr<OfflineAudioContext> OfflineAudioContext::create(Executio
                 ExceptionMessages::InclusiveBound,
                 AudioContext::maxNumberOfChannels(),
                 ExceptionMessages::InclusiveBound));
-        return nullptr;
+        return 0;
     }
 
-    if (!isSampleRateRangeGood(sampleRate)) {
-        exceptionState.throwDOMException(SyntaxError, "sample rate (" + String::number(sampleRate) + ") must be in the range 44100-96000 Hz.");
+    if (!AudioUtilities::isValidAudioBufferSampleRate(sampleRate)) {
+        exceptionState.throwDOMException(
+            IndexSizeError,
+            ExceptionMessages::indexOutsideRange(
+                "sampleRate", sampleRate,
+                AudioUtilities::minAudioBufferSampleRate(), ExceptionMessages::InclusiveBound,
+                AudioUtilities::maxAudioBufferSampleRate(), ExceptionMessages::InclusiveBound));
         return nullptr;
     }
 
-    RefPtrWillBeRawPtr<OfflineAudioContext> audioContext(adoptRefWillBeThreadSafeRefCountedGarbageCollected(new OfflineAudioContext(document, numberOfChannels, numberOfFrames, sampleRate)));
+    OfflineAudioContext* audioContext = new OfflineAudioContext(document, numberOfChannels, numberOfFrames, sampleRate);
 
     if (!audioContext->destination()) {
         exceptionState.throwDOMException(
@@ -83,13 +89,12 @@ PassRefPtrWillBeRawPtr<OfflineAudioContext> OfflineAudioContext::create(Executio
     }
 
     audioContext->suspendIfNeeded();
-    return audioContext.release();
+    return audioContext;
 }
 
 OfflineAudioContext::OfflineAudioContext(Document* document, unsigned numberOfChannels, size_t numberOfFrames, float sampleRate)
     : AudioContext(document, numberOfChannels, numberOfFrames, sampleRate)
 {
-    ScriptWrappable::init(this);
 }
 
 OfflineAudioContext::~OfflineAudioContext()