1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file. 4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/** 6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @fileoverview Earcons library that uses the HTML5 Audio element to play back 7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * auditory cues. 8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * 9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */ 10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)goog.provide('cvox.EarconsBackground'); 13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)goog.require('cvox.AbstractEarcons'); 15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/** 18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @constructor 19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @extends {cvox.AbstractEarcons} 20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */ 21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)cvox.EarconsBackground = function() { 22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) goog.base(this); 23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) this.audioMap = new Object(); 25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if (localStorage['earcons'] === 'false') { 26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) this.enabled = false; 27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}; 29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)goog.inherits(cvox.EarconsBackground, cvox.AbstractEarcons); 30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/** 33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @return {string} The human-readable name of the earcon set. 34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */ 35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)cvox.EarconsBackground.prototype.getName = function() { 36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return 'ChromeVox earcons'; 37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}; 38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/** 41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @return {string} The base URL for loading earcons. 42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */ 43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)cvox.EarconsBackground.prototype.getBaseUrl = function() { 44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return cvox.EarconsBackground.BASE_URL; 45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}; 46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/** 49cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @override 50cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */ 51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)cvox.EarconsBackground.prototype.playEarcon = function(earcon) { 52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) goog.base(this, 'playEarcon', earcon); 53cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if (!this.enabled) { 54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return; 55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 56cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if (window['console']) { 57cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) window['console']['log']('Earcon ' + this.getEarconName(earcon)); 58cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 59cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 60cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) this.currentAudio = this.audioMap[earcon]; 61cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if (!this.currentAudio) { 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.currentAudio = new Audio(chrome.extension.getURL(this.getBaseUrl() + 631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.getEarconFilename(earcon))); 64cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) this.audioMap[earcon] = this.currentAudio; 65cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 66cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) try { 67cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) this.currentAudio.currentTime = 0; 68cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } catch (e) { 69cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 70cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if (this.currentAudio.paused) { 71cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) this.currentAudio.volume = 0.7; 72cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) this.currentAudio.play(); 73cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 74cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}; 75cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 76cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 77cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/** 78cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * The base URL for loading eracons. 79cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @type {string} 80cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */ 811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccicvox.EarconsBackground.BASE_URL = 'chromevox/background/earcons/'; 82