source: gs3-extensions/web-audio/trunk/js-mad/sink.js-master/src/core/dyn-url.js@ 28388

Last change on this file since 28388 was 28388, checked in by davidb, 11 years ago

Set of JS, CSS, PNG etc web resources to support a mixture of audio player/document display capabilities

File size: 1.6 KB
Line 
1void function (Sink) {
2
3var _Blob, _BlobBuilder, _URL, _btoa;
4
5void function (prefixes, urlPrefixes) {
6 function find (name, prefixes) {
7 var b, a = prefixes.slice();
8
9 for (b=a.shift(); typeof b !== 'undefined'; b=a.shift()) {
10 b = Function('return typeof ' + b + name +
11 '=== "undefined" ? undefined : ' +
12 b + name)();
13
14 if (b) return b;
15 }
16 }
17
18 _Blob = find('Blob', prefixes);
19 _BlobBuilder = find('BlobBuilder', prefixes);
20 _URL = find('URL', urlPrefixes);
21 _btoa = find('btoa', ['']);
22}([
23 '',
24 'Moz',
25 'WebKit',
26 'MS'
27], [
28 '',
29 'webkit'
30]);
31
32var createBlob = _Blob && _URL && function (content, type) {
33 return _URL.createObjectURL(new _Blob([content], { type: type }));
34};
35
36var createBlobBuilder = _BlobBuilder && _URL && function (content, type) {
37 var bb = new _BlobBuilder();
38 bb.append(content);
39
40 return _URL.createObjectURL(bb.getBlob(type));
41};
42
43var createData = _btoa && function (content, type) {
44 return 'data:' + type + ';base64,' + _btoa(content);
45};
46
47var createDynURL =
48 createBlob ||
49 createBlobBuilder ||
50 createData;
51
52if (!createDynURL) return;
53
54if (createBlob) createDynURL.createBlob = createBlob;
55if (createBlobBuilder) createDynURL.createBlobBuilder = createBlobBuilder;
56if (createData) createDynURL.createData = createData;
57
58if (_Blob) createDynURL.Blob = _Blob;
59if (_BlobBuilder) createDynURL.BlobBuilder = _BlobBuilder;
60if (_URL) createDynURL.URL = _URL;
61
62Sink.createDynURL = createDynURL;
63
64Sink.revokeDynURL = function (url) {
65 if (typeof url === 'string' && url.indexOf('data:') === 0) {
66 return false;
67 } else {
68 return _URL.revokeObjectURL(url);
69 }
70};
71
72}(this.Sink);
Note: See TracBrowser for help on using the repository browser.