| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 /** | 5 /** |
| 6 * @fileoverview Keeps track of the current braille translators. | 6 * @fileoverview Keeps track of the current braille translators. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 goog.provide('cvox.BrailleTranslatorManager'); | 9 goog.provide('cvox.BrailleTranslatorManager'); |
| 10 | 10 |
| 11 goog.require('cvox.BrailleTable'); | 11 goog.require('cvox.BrailleTable'); |
| 12 goog.require('cvox.ExpandingBrailleTranslator'); | 12 goog.require('cvox.ExpandingBrailleTranslator'); |
| 13 goog.require('cvox.LibLouis'); | 13 goog.require('cvox.LibLouis'); |
| 14 | 14 |
| 15 /** | 15 /** |
| 16 * @param {cvox.LibLouis=} opt_liblouisForTest Liblouis instance to use | 16 * @param {cvox.LibLouis=} opt_liblouisForTest Liblouis instance to use |
| 17 * for testing. | 17 * for testing. |
| 18 * @constructor | 18 * @constructor |
| 19 */ | 19 */ |
| 20 cvox.BrailleTranslatorManager = function(opt_liblouisForTest) { | 20 cvox.BrailleTranslatorManager = function(opt_liblouisForTest) { |
| 21 /** | 21 /** |
| 22 * @type {!cvox.LibLouis} | 22 * @type {!cvox.LibLouis} |
| 23 * @private | 23 * @private |
| 24 */ | 24 */ |
| 25 this.liblouis_ = opt_liblouisForTest || new cvox.LibLouis( | 25 this.liblouis_ = opt_liblouisForTest || |
| 26 chrome.extension.getURL('braille/liblouis_nacl.nmf'), | 26 new cvox.LibLouis( |
| 27 chrome.extension.getURL('braille/tables')); | 27 chrome.extension.getURL('braille/liblouis_nacl.nmf'), |
| 28 chrome.extension.getURL('braille/tables')); |
| 28 /** | 29 /** |
| 29 * @type {!Array<function()>} | 30 * @type {!Array<function()>} |
| 30 * @private | 31 * @private |
| 31 */ | 32 */ |
| 32 this.changeListeners_ = []; | 33 this.changeListeners_ = []; |
| 33 /** | 34 /** |
| 34 * @type {!Array<cvox.BrailleTable.Table>} | 35 * @type {!Array<cvox.BrailleTable.Table>} |
| 35 * @private | 36 * @private |
| 36 */ | 37 */ |
| 37 this.tables_ = []; | 38 this.tables_ = []; |
| (...skipping 17 matching lines...) Expand all Loading... |
| 55 * @private | 56 * @private |
| 56 */ | 57 */ |
| 57 this.uncontractedTranslator_ = null; | 58 this.uncontractedTranslator_ = null; |
| 58 /** | 59 /** |
| 59 * @type {string?} | 60 * @type {string?} |
| 60 * @private | 61 * @private |
| 61 */ | 62 */ |
| 62 this.uncontractedTableId_ = null; | 63 this.uncontractedTableId_ = null; |
| 63 | 64 |
| 64 if (!opt_liblouisForTest) { | 65 if (!opt_liblouisForTest) { |
| 65 document.addEventListener('DOMContentLoaded', | 66 document.addEventListener( |
| 66 this.loadLiblouis_.bind(this), | 67 'DOMContentLoaded', this.loadLiblouis_.bind(this), false); |
| 67 false); | |
| 68 } | 68 } |
| 69 }; | 69 }; |
| 70 | 70 |
| 71 cvox.BrailleTranslatorManager.prototype = { | 71 cvox.BrailleTranslatorManager.prototype = { |
| 72 /** | 72 /** |
| 73 * Adds a listener to be called whenever there is a change in the | 73 * Adds a listener to be called whenever there is a change in the |
| 74 * translator(s) returned by other methods of this instance. | 74 * translator(s) returned by other methods of this instance. |
| 75 * @param {function()} listener The listener. | 75 * @param {function()} listener The listener. |
| 76 */ | 76 */ |
| 77 addChangeListener: function(listener) { | 77 addChangeListener: function(listener) { |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 116 } | 116 } |
| 117 } | 117 } |
| 118 } | 118 } |
| 119 if (!table) | 119 if (!table) |
| 120 table = cvox.BrailleTable.forId(tables, 'en-US-comp8'); | 120 table = cvox.BrailleTable.forId(tables, 'en-US-comp8'); |
| 121 | 121 |
| 122 // If the user explicitly set an 8 dot table, use that when looking | 122 // If the user explicitly set an 8 dot table, use that when looking |
| 123 // for an uncontracted table. Otherwise, use the current table and let | 123 // for an uncontracted table. Otherwise, use the current table and let |
| 124 // getUncontracted find an appropriate corresponding table. | 124 // getUncontracted find an appropriate corresponding table. |
| 125 var table8Dot = opt_brailleTable8 ? | 125 var table8Dot = opt_brailleTable8 ? |
| 126 cvox.BrailleTable.forId(tables, opt_brailleTable8) : null; | 126 cvox.BrailleTable.forId(tables, opt_brailleTable8) : |
| 127 var uncontractedTable = cvox.BrailleTable.getUncontracted( | 127 null; |
| 128 tables, table8Dot || table); | 128 var uncontractedTable = |
| 129 cvox.BrailleTable.getUncontracted(tables, table8Dot || table); |
| 129 var newDefaultTableId = table.id; | 130 var newDefaultTableId = table.id; |
| 130 var newUncontractedTableId = table.id === uncontractedTable.id ? | 131 var newUncontractedTableId = |
| 131 null : uncontractedTable.id; | 132 table.id === uncontractedTable.id ? null : uncontractedTable.id; |
| 132 if (newDefaultTableId === this.defaultTableId_ && | 133 if (newDefaultTableId === this.defaultTableId_ && |
| 133 newUncontractedTableId === this.uncontractedTableId_) { | 134 newUncontractedTableId === this.uncontractedTableId_) { |
| 134 return; | 135 return; |
| 135 } | 136 } |
| 136 | 137 |
| 137 var finishRefresh = function(defaultTranslator, uncontractedTranslator) { | 138 var finishRefresh = function(defaultTranslator, uncontractedTranslator) { |
| 138 this.defaultTableId_ = newDefaultTableId; | 139 this.defaultTableId_ = newDefaultTableId; |
| 139 this.uncontractedTableId_ = newUncontractedTableId; | 140 this.uncontractedTableId_ = newUncontractedTableId; |
| 140 this.expandingTranslator_ = new cvox.ExpandingBrailleTranslator( | 141 this.expandingTranslator_ = new cvox.ExpandingBrailleTranslator( |
| 141 defaultTranslator, uncontractedTranslator); | 142 defaultTranslator, uncontractedTranslator); |
| 142 this.defaultTranslator_ = defaultTranslator; | 143 this.defaultTranslator_ = defaultTranslator; |
| 143 this.uncontractedTranslator_ = uncontractedTranslator; | 144 this.uncontractedTranslator_ = uncontractedTranslator; |
| 144 this.changeListeners_.forEach(function(listener) { listener(); }); | 145 this.changeListeners_.forEach(function(listener) { |
| 146 listener(); |
| 147 }); |
| 145 }.bind(this); | 148 }.bind(this); |
| 146 | 149 |
| 147 this.liblouis_.getTranslator(table.fileNames, function(translator) { | 150 this.liblouis_.getTranslator(table.fileNames, function(translator) { |
| 148 if (!newUncontractedTableId) { | 151 if (!newUncontractedTableId) { |
| 149 finishRefresh(translator, null); | 152 finishRefresh(translator, null); |
| 150 } else { | 153 } else { |
| 151 this.liblouis_.getTranslator( | 154 this.liblouis_.getTranslator( |
| 152 uncontractedTable.fileNames, | 155 uncontractedTable.fileNames, function(uncontractedTranslator) { |
| 153 function(uncontractedTranslator) { | |
| 154 finishRefresh(translator, uncontractedTranslator); | 156 finishRefresh(translator, uncontractedTranslator); |
| 155 }); | 157 }); |
| 156 } | 158 } |
| 157 }.bind(this)); | 159 }.bind(this)); |
| 158 }, | 160 }, |
| 159 | 161 |
| 160 /** | 162 /** |
| 161 * @return {cvox.ExpandingBrailleTranslator} The current expanding braille | 163 * @return {cvox.ExpandingBrailleTranslator} The current expanding braille |
| 162 * translator, or {@code null} if none is available. | 164 * translator, or {@code null} if none is available. |
| 163 */ | 165 */ |
| 164 getExpandingTranslator: function() { | 166 getExpandingTranslator: function() { |
| 165 return this.expandingTranslator_; | 167 return this.expandingTranslator_; |
| 166 }, | 168 }, |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 216 }, | 218 }, |
| 217 | 219 |
| 218 /** | 220 /** |
| 219 * @return {!Array<cvox.BrailleTable.Table>} The currently loaded braille | 221 * @return {!Array<cvox.BrailleTable.Table>} The currently loaded braille |
| 220 * tables, or an empty array if they are not yet loaded. | 222 * tables, or an empty array if they are not yet loaded. |
| 221 */ | 223 */ |
| 222 getTablesForTest: function() { | 224 getTablesForTest: function() { |
| 223 return this.tables_; | 225 return this.tables_; |
| 224 } | 226 } |
| 225 }; | 227 }; |
| OLD | NEW |