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

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 should(
30 Promise
31 .all([Audit.loadFileFromUrl(
32 '../resources/hyper-reality/laughter.wav')])
33 .then((arrayBuffers) => {
34 encodedAudio = arrayBuffers[0];
35 }),
36 'Loading of audio file')
37 .beResolved()
38 .then(() => task.done());
39 });
40
41 audit.define('decode-audio-neuters', (task, should) => {
42 // Decode the audio file and verify that it neuters the array, so that
43 // it can't be transfered somewhere else.
44 p = context.decodeAudioData(encodedAudio);
45 should(() => {
46 postMessage('', '*', [encodedAudio]);
47 }, 'Transfer of audio buffer').throw('DataCloneError');
48 should(p, 'Decoding of audio').beResolved().then(() => task.done());
49 });
50
51 audit.define('neutered buffer', (task, should) => {
52 // Any non-empy ArrayBuffer will work. We're going to transfer that
53 // array before calling decodeAudioData.
54 let buffer = new ArrayBuffer(1000);
55
56 should(() => {
57 postMessage('', '*', [buffer]);
58 }, 'Transfer buffer').notThrow();
59
60 should(
61 context.decodeAudioData(buffer),
62 'decodeAudioData on neutered buffer')
63 .beRejected()
64 .then(() => task.done());
65 });
66
67 audit.define('shared-array-buffer', (task, should) => {
68 // Only run the test if SharedArrayBuffer is available
69 if (window.SharedArrayBuffer) {
70 let b = new SharedArrayBuffer(1000);
71 should(
72 context.decodeAudioData(b),
73 'decodeAudioData on SharedArrayBuffer')
74 .beRejected('TypeError')
75 .then(() => task.done());
76 } else {
77 should(false, 'SharedArrayBuffer')
78 .message(
79 '', 'not tested because SharedArrayBuffer not available');
80 task.done();
81 }
82 });
83
84 audit.run();
85 </script>
86 </body>
87 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698