Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1438)

Side by Side Diff: third_party/WebKit/LayoutTests/webaudio/decodeAudioData/decode-audio-data-neuter.html

Issue 2746913003: Detach buffer in decodeAudioData (Closed)
Patch Set: Address review comments Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <!doctype html>
2 <html>
3 <head>
4 <script src="../../resources/testharness.js"></script>
5 <script src="../../resources/testharnessreport.js"></script>
6 <script src="../resources/audit.js"></script>
7 <title>Test Neutering by decodeAudioData </title>
8 </head>
9
10 <body>
11 <script>
12 // Any valid rate will do. Just need something to create an offline
13 // context.
14 let sampleRate = 44100;
15
16 let audit = Audit.createTaskRunner();
17
18 // Context to use for decodeAudioData
19 let context;
20 // The encoded audio file that we want to decode.
21 let encodedAudio;
22
23 audit.define('initialize', (task, should) => {
24 // Create the context and load up any valid encoded audio file.
25 should(() => {
26 context = new OfflineAudioContext(1, 1, sampleRate);
27 }, 'Context creation').notThrow();
28
29 Audit.loadFileFromUrl(
30 '../resources/hyper-reality/laughter.wav')
31 .then(response => {
32 encodedAudio = response;
33 should(true, 'Loading of encoded audio file')
34 .message('succeeded', 'failed');
35 })
36 .then(() => task.done());
37 });
38
39 audit.define('decode-audio-neuters', (task, should) => {
40 // Decode the audio file and verify that it neuters the array, so that
41 // it can't be transfered somewhere else.
42 p = context.decodeAudioData(encodedAudio);
43 should(() => {
44 postMessage('', '*', [encodedAudio]);
45 }, 'Transfer of audio buffer').throw('DataCloneError');
46 should(p, 'Decoding of audio').beResolved().then(() => task.done());
47 });
48
49 audit.define('neutered buffer', (task, should) => {
50 // Any non-empy ArrayBuffer will work. We're going to transfer that
51 // array before calling decodeAudioData.
52 let buffer = new ArrayBuffer(1000);
53
54 should(() => {
55 postMessage('', '*', [buffer]);
56 }, 'Transfer buffer via postMessage').notThrow();
57
58 should(
59 context.decodeAudioData(buffer),
60 'decodeAudioData on neutered buffer')
61 .beRejected('TypeError')
62 .then(() => task.done());
63 });
64
65 audit.run();
66 </script>
67 </body>
68 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698