dom/tests/mochitest/ajax/scriptaculous/src/sound.js

Tue, 06 Jan 2015 21:39:09 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 06 Jan 2015 21:39:09 +0100
branch
TOR_BUG_9701
changeset 8
97036ab72558
permissions
-rw-r--r--

Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

     1 // script.aculo.us sound.js v1.7.1_beta2, Tue May 15 15:15:45 EDT 2007
     3 // Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
     4 //
     5 // Based on code created by Jules Gravinese (http://www.webveteran.com/)
     6 //
     7 // script.aculo.us is freely distributable under the terms of an MIT-style license.
     8 // For details, see the script.aculo.us web site: http://script.aculo.us/
    10 Sound = {
    11   tracks: {},
    12   _enabled: true,
    13   template:
    14     new Template('<embed style="height:0" id="sound_#{track}_#{id}" src="#{url}" loop="false" autostart="true" hidden="true"/>'),
    15   enable: function(){
    16     Sound._enabled = true;
    17   },
    18   disable: function(){
    19     Sound._enabled = false;
    20   },
    21   play: function(url){
    22     if(!Sound._enabled) return;
    23     var options = Object.extend({
    24       track: 'global', url: url, replace: false
    25     }, arguments[1] || {});
    27     if(options.replace && this.tracks[options.track]) {
    28       $R(0, this.tracks[options.track].id).each(function(id){
    29         var sound = $('sound_'+options.track+'_'+id);
    30         sound.Stop && sound.Stop();
    31         sound.remove();
    32       })
    33       this.tracks[options.track] = null;
    34     }
    36     if(!this.tracks[options.track])
    37       this.tracks[options.track] = { id: 0 }
    38     else
    39       this.tracks[options.track].id++;
    41     options.id = this.tracks[options.track].id;
    42     if (Prototype.Browser.IE) {
    43       var sound = document.createElement('bgsound');
    44       sound.setAttribute('id','sound_'+options.track+'_'+options.id);
    45       sound.setAttribute('src',options.url);
    46       sound.setAttribute('loop','1');
    47       sound.setAttribute('autostart','true');
    48       $$('body')[0].appendChild(sound);
    49     }  
    50     else
    51       new Insertion.Bottom($$('body')[0], Sound.template.evaluate(options));
    52   }
    53 };
    55 if(Prototype.Browser.Gecko && navigator.userAgent.indexOf("Win") > 0){
    56   if(navigator.plugins && $A(navigator.plugins).detect(function(p){ return p.name.indexOf('QuickTime') != -1 }))
    57     Sound.template = new Template('<object id="sound_#{track}_#{id}" width="0" height="0" type="audio/mpeg" data="#{url}"/>')
    58   else
    59     Sound.play = function(){}
    60 }

mercurial