<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[199751] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/199751">199751</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2016-04-19 18:30:11 -0700 (Tue, 19 Apr 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>AudioBufferSourceNode.buffer should be nullable
https://bugs.webkit.org/show_bug.cgi?id=156769

Reviewed by Darin Adler.

Source/WebCore:

AudioBufferSourceNode.buffer should be nullable as per the
specification:
https://webaudio.github.io/web-audio-api/#AudioBufferSourceNode

Our implementation was initially returning null when getting
AudioBufferSourceNode.buffer, which is correct. However, it would
throw a TypeError when trying to set the attribute to null. Our
implementation setter actually supported setting the buffer to
null but the custom bindings for the setter would not.

This patch does the following:
- Get rid of the custom bindings for the AudioBufferSourceNode.buffer
  setter. We can have the bindings generator generate the same code
  by using [StrictTypeChecking]. The custom bindinds were also throwing
  a TypeError if the input AudioBuffer had too many channels but this
  does not seem to be possible.
- Mark AudioBufferSourceNode.buffer as nullable in the IDL so that
  we no longer throw when the JS tries to assign null, but instead
  calls AudioBufferSourceNode::setBuffer(nullptr)

No new test, updated webaudio/audiobuffersource-channels.html

* CMakeLists.txt:
* Modules/webaudio/AudioBufferSourceNode.cpp:
(WebCore::AudioBufferSourceNode::setBuffer):
* Modules/webaudio/AudioBufferSourceNode.h:
* Modules/webaudio/AudioBufferSourceNode.idl:
* Modules/webaudio/AudioContext.h:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSAudioBufferSourceNodeCustom.cpp: Removed.

LayoutTests:

Update existing layout test to check that:
- AudioBufferSourceNode.buffer is initially null
- AudioBufferSourceNode.buffer can be set to null
- We cannot create an AudioBuffer that has too many channels

* webaudio/audiobuffersource-channels-expected.txt:
* webaudio/audiobuffersource-channels.html:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestswebaudioaudiobuffersourcechannelsexpectedtxt">trunk/LayoutTests/webaudio/audiobuffersource-channels-expected.txt</a></li>
<li><a href="#trunkLayoutTestswebaudioaudiobuffersourcechannelshtml">trunk/LayoutTests/webaudio/audiobuffersource-channels.html</a></li>
<li><a href="#trunkSourceWebCoreCMakeListstxt">trunk/Source/WebCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioAudioBufferSourceNodecpp">trunk/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.cpp</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioAudioBufferSourceNodeh">trunk/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.h</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioAudioBufferSourceNodeidl">trunk/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.idl</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioAudioContexth">trunk/Source/WebCore/Modules/webaudio/AudioContext.h</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebCorebindingsjsJSAudioBufferSourceNodeCustomcpp">trunk/Source/WebCore/bindings/js/JSAudioBufferSourceNodeCustom.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (199750 => 199751)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-04-20 01:19:59 UTC (rev 199750)
+++ trunk/LayoutTests/ChangeLog        2016-04-20 01:30:11 UTC (rev 199751)
</span><span class="lines">@@ -1,3 +1,18 @@
</span><ins>+2016-04-19  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        AudioBufferSourceNode.buffer should be nullable
+        https://bugs.webkit.org/show_bug.cgi?id=156769
+
+        Reviewed by Darin Adler.
+
+        Update existing layout test to check that:
+        - AudioBufferSourceNode.buffer is initially null
+        - AudioBufferSourceNode.buffer can be set to null
+        - We cannot create an AudioBuffer that has too many channels
+
+        * webaudio/audiobuffersource-channels-expected.txt:
+        * webaudio/audiobuffersource-channels.html:
+
</ins><span class="cx"> 2016-04-19  Brady Eidson  &lt;beidson@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Modern IDB: Lots of IDB bindings cleanup (including making IDBVersionChangeEvent constructible).
</span></span></pre></div>
<a id="trunkLayoutTestswebaudioaudiobuffersourcechannelsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/webaudio/audiobuffersource-channels-expected.txt (199750 => 199751)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/webaudio/audiobuffersource-channels-expected.txt        2016-04-20 01:19:59 UTC (rev 199750)
+++ trunk/LayoutTests/webaudio/audiobuffersource-channels-expected.txt        2016-04-20 01:30:11 UTC (rev 199751)
</span><span class="lines">@@ -2,7 +2,8 @@
</span><span class="cx"> 
</span><span class="cx"> On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
</span><span class="cx"> 
</span><del>-PASS source.buffer = 57 threw exception TypeError: Value is not of type AudioBuffer.
</del><ins>+PASS source.buffer is null
+PASS source.buffer = 57 threw exception TypeError: The AudioBufferSourceNode.buffer attribute must be an instance of AudioBuffer.
</ins><span class="cx"> PASS Mono buffer can be set.
</span><span class="cx"> PASS Stereo buffer can be set.
</span><span class="cx"> PASS 3 channels buffer can be set.
</span><span class="lines">@@ -12,6 +13,10 @@
</span><span class="cx"> PASS 7 channels buffer can be set.
</span><span class="cx"> PASS 8 channels buffer can be set.
</span><span class="cx"> PASS 9 channels buffer can be set.
</span><ins>+PASS context.createBuffer(64, 1024, context.sampleRate) threw exception Error: NotSupportedError: DOM Exception 9.
+PASS source.buffer is not null
+PASS source.buffer = null did not throw exception.
+PASS source.buffer is null
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestswebaudioaudiobuffersourcechannelshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/webaudio/audiobuffersource-channels.html (199750 => 199751)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/webaudio/audiobuffersource-channels.html        2016-04-20 01:19:59 UTC (rev 199750)
+++ trunk/LayoutTests/webaudio/audiobuffersource-channels.html        2016-04-20 01:30:11 UTC (rev 199751)
</span><span class="lines">@@ -27,6 +27,8 @@
</span><span class="cx">     context = new webkitAudioContext();
</span><span class="cx">     source = context.createBufferSource();
</span><span class="cx"> 
</span><ins>+    shouldBeNull(&quot;source.buffer&quot;);
+
</ins><span class="cx">     // Make sure we can't set to something which isn't an AudioBuffer.
</span><span class="cx">     shouldThrow(&quot;source.buffer = 57&quot;);
</span><span class="cx"> 
</span><span class="lines">@@ -60,6 +62,12 @@
</span><span class="cx">             testFailed(message);
</span><span class="cx">         }
</span><span class="cx">     }
</span><ins>+
+    shouldThrow(&quot;context.createBuffer(64, 1024, context.sampleRate)&quot;);
+
+    shouldNotBe(&quot;source.buffer&quot;, &quot;null&quot;);
+    shouldNotThrow(&quot;source.buffer = null&quot;);
+    shouldBeNull(&quot;source.buffer&quot;);
</ins><span class="cx">         
</span><span class="cx">     finishJSTest();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/CMakeLists.txt (199750 => 199751)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/CMakeLists.txt        2016-04-20 01:19:59 UTC (rev 199750)
+++ trunk/Source/WebCore/CMakeLists.txt        2016-04-20 01:30:11 UTC (rev 199751)
</span><span class="lines">@@ -1084,7 +1084,6 @@
</span><span class="cx">     bindings/js/IDBBindingUtilities.cpp
</span><span class="cx">     bindings/js/JSAnimationTimelineCustom.cpp
</span><span class="cx">     bindings/js/JSAttrCustom.cpp
</span><del>-    bindings/js/JSAudioBufferSourceNodeCustom.cpp
</del><span class="cx">     bindings/js/JSAudioContextCustom.cpp
</span><span class="cx">     bindings/js/JSAudioTrackCustom.cpp
</span><span class="cx">     bindings/js/JSAudioTrackListCustom.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (199750 => 199751)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-04-20 01:19:59 UTC (rev 199750)
+++ trunk/Source/WebCore/ChangeLog        2016-04-20 01:30:11 UTC (rev 199751)
</span><span class="lines">@@ -1,3 +1,41 @@
</span><ins>+2016-04-19  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        AudioBufferSourceNode.buffer should be nullable
+        https://bugs.webkit.org/show_bug.cgi?id=156769
+
+        Reviewed by Darin Adler.
+
+        AudioBufferSourceNode.buffer should be nullable as per the
+        specification:
+        https://webaudio.github.io/web-audio-api/#AudioBufferSourceNode
+
+        Our implementation was initially returning null when getting
+        AudioBufferSourceNode.buffer, which is correct. However, it would
+        throw a TypeError when trying to set the attribute to null. Our
+        implementation setter actually supported setting the buffer to
+        null but the custom bindings for the setter would not.
+
+        This patch does the following:
+        - Get rid of the custom bindings for the AudioBufferSourceNode.buffer
+          setter. We can have the bindings generator generate the same code
+          by using [StrictTypeChecking]. The custom bindinds were also throwing
+          a TypeError if the input AudioBuffer had too many channels but this
+          does not seem to be possible.
+        - Mark AudioBufferSourceNode.buffer as nullable in the IDL so that
+          we no longer throw when the JS tries to assign null, but instead
+          calls AudioBufferSourceNode::setBuffer(nullptr)
+
+        No new test, updated webaudio/audiobuffersource-channels.html
+
+        * CMakeLists.txt:
+        * Modules/webaudio/AudioBufferSourceNode.cpp:
+        (WebCore::AudioBufferSourceNode::setBuffer):
+        * Modules/webaudio/AudioBufferSourceNode.h:
+        * Modules/webaudio/AudioBufferSourceNode.idl:
+        * Modules/webaudio/AudioContext.h:
+        * WebCore.xcodeproj/project.pbxproj:
+        * bindings/js/JSAudioBufferSourceNodeCustom.cpp: Removed.
+
</ins><span class="cx"> 2016-04-19  Brady Eidson  &lt;beidson@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Modern IDB: Lots of IDB bindings cleanup (including making IDBVersionChangeEvent constructible).
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioAudioBufferSourceNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.cpp (199750 => 199751)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.cpp        2016-04-20 01:19:59 UTC (rev 199750)
+++ trunk/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.cpp        2016-04-20 01:30:11 UTC (rev 199751)
</span><span class="lines">@@ -408,7 +408,7 @@
</span><span class="cx">     m_lastGain = gain()-&gt;value();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool AudioBufferSourceNode::setBuffer(AudioBuffer* buffer)
</del><ins>+void AudioBufferSourceNode::setBuffer(RefPtr&lt;AudioBuffer&gt;&amp;&amp; buffer)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(isMainThread());
</span><span class="cx">     
</span><span class="lines">@@ -421,10 +421,8 @@
</span><span class="cx">     if (buffer) {
</span><span class="cx">         // Do any necesssary re-configuration to the buffer's number of channels.
</span><span class="cx">         unsigned numberOfChannels = buffer-&gt;numberOfChannels();
</span><ins>+        ASSERT(numberOfChannels &lt;= AudioContext::maxNumberOfChannels());
</ins><span class="cx"> 
</span><del>-        if (numberOfChannels &gt; AudioContext::maxNumberOfChannels())
-            return false;
-
</del><span class="cx">         output(0)-&gt;setNumberOfChannels(numberOfChannels);
</span><span class="cx"> 
</span><span class="cx">         m_sourceChannels = std::make_unique&lt;const float*[]&gt;(numberOfChannels);
</span><span class="lines">@@ -435,9 +433,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     m_virtualReadIndex = 0;
</span><del>-    m_buffer = buffer;
-    
-    return true;
</del><ins>+    m_buffer = WTFMove(buffer);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> unsigned AudioBufferSourceNode::numberOfChannels()
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioAudioBufferSourceNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.h (199750 => 199751)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.h        2016-04-20 01:19:59 UTC (rev 199750)
+++ trunk/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.h        2016-04-20 01:30:11 UTC (rev 199751)
</span><span class="lines">@@ -55,7 +55,7 @@
</span><span class="cx"> 
</span><span class="cx">     // setBuffer() is called on the main thread.  This is the buffer we use for playback.
</span><span class="cx">     // returns true on success.
</span><del>-    bool setBuffer(AudioBuffer*);
</del><ins>+    void setBuffer(RefPtr&lt;AudioBuffer&gt;&amp;&amp;);
</ins><span class="cx">     AudioBuffer* buffer() { return m_buffer.get(); }
</span><span class="cx"> 
</span><span class="cx">     // numberOfChannels() returns the number of output channels.  This value equals the number of channels from the buffer.
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioAudioBufferSourceNodeidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.idl (199750 => 199751)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.idl        2016-04-20 01:19:59 UTC (rev 199750)
+++ trunk/Source/WebCore/Modules/webaudio/AudioBufferSourceNode.idl        2016-04-20 01:30:11 UTC (rev 199751)
</span><span class="lines">@@ -27,7 +27,7 @@
</span><span class="cx">     Conditional=WEB_AUDIO,
</span><span class="cx">     JSGenerateToJSObject,
</span><span class="cx"> ] interface AudioBufferSourceNode : AudioNode {
</span><del>-    [CustomSetter, SetterRaisesException] attribute AudioBuffer buffer;
</del><ins>+    [StrictTypeChecking] attribute AudioBuffer? buffer;
</ins><span class="cx"> 
</span><span class="cx">     const unsigned short UNSCHEDULED_STATE = 0;
</span><span class="cx">     const unsigned short SCHEDULED_STATE = 1;
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioAudioContexth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/AudioContext.h (199750 => 199751)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/AudioContext.h        2016-04-20 01:19:59 UTC (rev 199750)
+++ trunk/Source/WebCore/Modules/webaudio/AudioContext.h        2016-04-20 01:30:11 UTC (rev 199751)
</span><span class="lines">@@ -204,8 +204,8 @@
</span><span class="cx">     // Returns true if this thread owns the context's lock.
</span><span class="cx">     bool isGraphOwner() const;
</span><span class="cx"> 
</span><del>-    // Returns the maximum numuber of channels we can support.
-    static unsigned maxNumberOfChannels() { return MaxNumberOfChannels;}
</del><ins>+    // Returns the maximum number of channels we can support.
+    static unsigned maxNumberOfChannels() { return MaxNumberOfChannels; }
</ins><span class="cx"> 
</span><span class="cx">     class AutoLocker {
</span><span class="cx">     public:
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (199750 => 199751)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-04-20 01:19:59 UTC (rev 199750)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-04-20 01:30:11 UTC (rev 199751)
</span><span class="lines">@@ -7093,7 +7093,6 @@
</span><span class="cx">                 FDEA6243152102E200479DF0 /* JSOscillatorNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FDEA6241152102E200479DF0 /* JSOscillatorNode.h */; };
</span><span class="cx">                 FDEA6246152102FC00479DF0 /* JSPeriodicWave.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDEA6244152102FC00479DF0 /* JSPeriodicWave.cpp */; };
</span><span class="cx">                 FDEA6247152102FC00479DF0 /* JSPeriodicWave.h in Headers */ = {isa = PBXBuildFile; fileRef = FDEA6245152102FC00479DF0 /* JSPeriodicWave.h */; };
</span><del>-                FDEAAAF312B02EE400DCF33B /* JSAudioBufferSourceNodeCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDEAAAEF12B02EE400DCF33B /* JSAudioBufferSourceNodeCustom.cpp */; };
</del><span class="cx">                 FDEAAAF412B02EE400DCF33B /* JSAudioContextCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDEAAAF012B02EE400DCF33B /* JSAudioContextCustom.cpp */; };
</span><span class="cx">                 FDF09DC81399B62200688E5B /* JSBiquadFilterNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDF09DC61399B62200688E5B /* JSBiquadFilterNode.cpp */; };
</span><span class="cx">                 FDF09DC91399B62200688E5B /* JSBiquadFilterNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FDF09DC71399B62200688E5B /* JSBiquadFilterNode.h */; };
</span><span class="lines">@@ -15208,7 +15207,6 @@
</span><span class="cx">                 FDEA6241152102E200479DF0 /* JSOscillatorNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSOscillatorNode.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 FDEA6244152102FC00479DF0 /* JSPeriodicWave.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSPeriodicWave.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 FDEA6245152102FC00479DF0 /* JSPeriodicWave.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSPeriodicWave.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                FDEAAAEF12B02EE400DCF33B /* JSAudioBufferSourceNodeCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAudioBufferSourceNodeCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 FDEAAAF012B02EE400DCF33B /* JSAudioContextCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAudioContextCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 FDF09DC61399B62200688E5B /* JSBiquadFilterNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSBiquadFilterNode.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 FDF09DC71399B62200688E5B /* JSBiquadFilterNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSBiquadFilterNode.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -22408,7 +22406,6 @@
</span><span class="cx">                         children = (
</span><span class="cx">                                 1221E0721C03E4C2006A1A00 /* JSAnimationTimelineCustom.cpp */,
</span><span class="cx">                                 BC2ED6BB0C6BD2F000920BFF /* JSAttrCustom.cpp */,
</span><del>-                                FDEAAAEF12B02EE400DCF33B /* JSAudioBufferSourceNodeCustom.cpp */,
</del><span class="cx">                                 FDEAAAF012B02EE400DCF33B /* JSAudioContextCustom.cpp */,
</span><span class="cx">                                 BE6DF70E171CA2DA00DD52B8 /* JSAudioTrackCustom.cpp */,
</span><span class="cx">                                 BE6DF710171CA2DA00DD52B8 /* JSAudioTrackListCustom.cpp */,
</span><span class="lines">@@ -30133,7 +30130,6 @@
</span><span class="cx">                                 FDF7E9C313AC21DB00A51EAC /* JSAudioBufferCallback.cpp in Sources */,
</span><span class="cx">                                 FDA15E9F12B03EE1003A583A /* JSAudioBufferSourceNode.cpp in Sources */,
</span><span class="cx">                                 69A6CBAC1C6BE42C00B836E9 /* AccessibilitySVGElement.cpp in Sources */,
</span><del>-                                FDEAAAF312B02EE400DCF33B /* JSAudioBufferSourceNodeCustom.cpp in Sources */,
</del><span class="cx">                                 FDA15EA512B03EE1003A583A /* JSAudioContext.cpp in Sources */,
</span><span class="cx">                                 FDEAAAF412B02EE400DCF33B /* JSAudioContextCustom.cpp in Sources */,
</span><span class="cx">                                 FDA15EA712B03EE1003A583A /* JSAudioDestinationNode.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSAudioBufferSourceNodeCustomcpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/bindings/js/JSAudioBufferSourceNodeCustom.cpp (199750 => 199751)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSAudioBufferSourceNodeCustom.cpp        2016-04-20 01:19:59 UTC (rev 199750)
+++ trunk/Source/WebCore/bindings/js/JSAudioBufferSourceNodeCustom.cpp        2016-04-20 01:30:11 UTC (rev 199751)
</span><span class="lines">@@ -1,56 +0,0 @@
</span><del>-/*
- * Copyright (C) 2010, Google Inc. All rights reserved.
- * Copyright (C) 2012 Samsung Electronics
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1.  Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include &quot;config.h&quot;
-
-#if ENABLE(WEB_AUDIO)
-
-#include &quot;JSAudioBufferSourceNode.h&quot;
-
-#include &quot;AudioBuffer.h&quot;
-#include &quot;AudioBufferSourceNode.h&quot;
-#include &quot;JSAudioBuffer.h&quot;
-#include &lt;runtime/Error.h&gt;
-#include &lt;runtime/JSCJSValueInlines.h&gt;
-
-using namespace JSC;
-
-namespace WebCore {
-
-void JSAudioBufferSourceNode::setBuffer(ExecState&amp; state, JSValue value)
-{
-    AudioBuffer* buffer = JSAudioBuffer::toWrapped(value);
-    if (!buffer) {
-        state.vm().throwException(&amp;state, createTypeError(&amp;state, &quot;Value is not of type AudioBuffer&quot;));
-        return;
-    }
-    
-    if (!wrapped().setBuffer(buffer))
-        state.vm().throwException(&amp;state, createTypeError(&amp;state, &quot;AudioBuffer unsupported number of channels&quot;));
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(WEB_AUDIO)
</del></span></pre>
</div>
</div>

</body>
</html>