Index: chrome/test/data/extensions/api_test/tabs/basics/sinewave.js |
diff --git a/chrome/test/data/extensions/api_test/tabs/basics/sinewave.js b/chrome/test/data/extensions/api_test/tabs/basics/sinewave.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d98aa3f129de63c1cc52039c1a1bfbb782afb5a5 |
--- /dev/null |
+++ b/chrome/test/data/extensions/api_test/tabs/basics/sinewave.js |
@@ -0,0 +1,38 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+window.sinewave = { |
+ play: function(win, frequency) { |
+ win.sinewaveData_ = win.sinewaveData_ || {}; |
+ data = win.sinewaveData_; |
+ |
+ if (!data.audioContext) { |
+ data.audioContext = new AudioContext(); |
+ data.gainNode = data.audioContext.createGain(); |
+ data.gainNode.gain.value = 0.5; |
+ data.gainNode.connect(data.audioContext.destination); |
+ } |
+ if (!data.oscillator || |
+ data.oscillator.frequency.value != frequency) { |
+ |
+ // Note: We recreate the oscillator each time because this switches the |
+ // audio frequency immediately. Re-using the same oscillator tends to |
+ // take several hundred milliseconds to ramp-up/down the frequency. |
+ if (data.oscillator) { |
+ data.oscillator.stop(); |
+ data.oscillator.disconnect(); |
+ } |
+ data.oscillator = data.audioContext.createOscillator(); |
+ data.oscillator.type = OscillatorNode.SINE; |
+ data.oscillator.frequency.value = frequency; |
+ data.oscillator.connect(data.gainNode); |
+ } |
+ data.oscillator.start(); |
+ }, |
+ |
+ stop: function(win) { |
+ if (win.sinewaveData_) |
+ win.sinewaveData_.oscillator.stop(); |
+ } |
+}; |