Skip to content

Commit

Permalink
add onerror support for MozSettings emulation and remove hack from ke…
Browse files Browse the repository at this point in the history
…yboard.js
  • Loading branch information
andreasgal committed Feb 15, 2012
1 parent 0210fe0 commit 6c24627
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 28 deletions.
23 changes: 0 additions & 23 deletions apps/homescreen/js/keyboard.js
Expand Up @@ -32,41 +32,18 @@ const IMEManager = {
'zhuying': ['zh-Hant-Zhuying']
},

kMozSettingsTimeout: 800,
loadKeyboardSettings: function loadKeyboardSettings(callback) {
var completed = false;
var completeSettingRequests = (function completeSettingRequests() {

if (completed)
return;

clearTimeout(settingTimer);

if (!this.keyboards.length)
this.keyboards =
[].concat(
this.keyboardSettingGroups['english'],
this.keyboardSettingGroups['zhuying']
);

if (this.keyboards.indexOf(this.currentKeyboard) === -1)
this.currentKeyboard = this.keyboards[0];

this.keyboards.forEach((function loadIMEngines(name) {
this.loadKeyboard(name);
}).bind(this));

completed = true;
callback();
}).bind(this);

// XXX: Fallback if MozSettings timed out
var settingTimer = setTimeout(function () {
dump('Keyboard: MozSettings timed out. Skip user settings.');
completeSettingRequests();

}, this.kMozSettingsTimeout);

this.keyboards = [];
var keyboardSettingGroupKeys = [];
for (var key in this.keyboardSettingGroups) {
Expand Down
24 changes: 19 additions & 5 deletions webapi.js
Expand Up @@ -247,20 +247,34 @@
navigator.mozSettings = {
get: function(key) {
var onsuccess = [];
var onerror = [];
var request = {
addEventListener: function(name, fn) {
if (name === "success")
if (name === 'success')
onsuccess.push(fn);
if (name === 'error')
onerror.push(fn);
},
set onsuccess(fn) {
onsuccess.push(fn);
},
set onerror(fn) {
onerror.push(fn);
}
};
setImmediate(function() {
request.result = {
key: key,
value: localStorage.getItem(prefix + key)
};
try {
request.result = {
key: key,
value: localStorage.getItem(prefix + key)
};
} catch (e) {
while (onerror.length > 0) {
var fn = onerror.shift();
fn();
}
return;
}
while (onsuccess.length > 0) {
var fn = onsuccess.shift();
fn();
Expand Down

0 comments on commit 6c24627

Please sign in to comment.