Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/apps/system/js/simcard_dialog.js
diff options
context:
space:
mode:
Diffstat (limited to 'apps/system/js/simcard_dialog.js')
-rw-r--r--apps/system/js/simcard_dialog.js355
1 files changed, 0 insertions, 355 deletions
diff --git a/apps/system/js/simcard_dialog.js b/apps/system/js/simcard_dialog.js
deleted file mode 100644
index 4176cbf..0000000
--- a/apps/system/js/simcard_dialog.js
+++ /dev/null
@@ -1,355 +0,0 @@
-/* -*- Mode: js; js-indent-level: 2; indent-tabs-mode: nil -*- */
-/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
-
-'use strict';
-
-var SimPinDialog = {
- dialogTitle: document.querySelector('#simpin-dialog header h1'),
- dialogDone: document.querySelector('#simpin-dialog button[type="submit"]'),
- dialogClose: document.querySelector('#simpin-dialog button[type="reset"]'),
-
- pinArea: document.getElementById('pinArea'),
- pukArea: document.getElementById('pukArea'),
- nckArea: document.getElementById('nckArea'),
- newPinArea: document.getElementById('newPinArea'),
- confirmPinArea: document.getElementById('confirmPinArea'),
-
- pinInput: null,
- pukInput: null,
- nckInput: null,
- newPinInput: null,
- confirmPinInput: null,
-
- errorMsg: document.getElementById('errorMsg'),
- errorMsgHeader: document.getElementById('messageHeader'),
- errorMsgBody: document.getElementById('messageBody'),
-
- mobileConnection: null,
-
- lockType: 'pin',
- action: 'unlock',
-
- // Now we don't have a number-password type for input field
- // mimic one by binding one number input and one text input
- getNumberPasswordInputField: function spl_wrapNumberInput(name) {
- var valueEntered = '';
- var inputField = document.querySelector('input[name="' + name + '"]');
- var displayField = document.querySelector('input[name="' + name + 'Vis"]');
- var codeMaxLength = parseInt(inputField.getAttribute('maxlength'), 10);
- var self = this;
-
- inputField.addEventListener('keypress', function(evt) {
- if (evt.target !== inputField)
- return;
- evt.preventDefault();
-
- var code = evt.charCode;
- if (code !== 0 && (code < 0x30 || code > 0x39))
- return;
-
- if (code === 0) { // backspace
- valueEntered = valueEntered.substr(0, valueEntered.length - 1);
- } else {
- if (valueEntered.length >= codeMaxLength)
- return;
- valueEntered += String.fromCharCode(code);
- }
- displayField.value = encryption(valueEntered);
- if (displayField.value.length >= 4)
- self.dialogDone.disabled = false;
- else
- self.dialogDone.disabled = true;
- });
-
- function encryption(str) {
- return (new Array(str.length + 1)).join('*');
- }
-
- function setValue(value) {
- valueEntered = value;
- inputField.value = value;
- displayField.value = encryption(valueEntered);
- }
-
- function setFocus() {
- inputField.focus();
- }
-
- function blur() {
- inputField.blur();
- }
-
- return {
- get value() { return valueEntered; },
- set value(value) { setValue(value) },
- focus: setFocus,
- blur: blur
- };
- },
-
- handleCardState: function spl_handleCardState() {
- var _ = navigator.mozL10n.get;
-
- var cardState = this.mobileConnection.cardState;
- switch (cardState) {
- case 'pinRequired':
- this.lockType = 'pin';
- this.errorMsg.hidden = true;
- this.inputFieldControl(true, false, false, false);
- this.pinInput.focus();
- break;
- case 'pukRequired':
- this.lockType = 'puk';
- this.errorMsgHeader.textContent = _('simCardLockedMsg') || '';
- this.errorMsgHeader.dataset.l10nId = 'simCardLockedMsg';
- this.errorMsgBody.textContent = _('enterPukMsg') || '';
- this.errorMsgBody.dataset.l10nId = 'enterPukMsg';
- this.errorMsg.hidden = false;
- this.inputFieldControl(false, true, false, true);
- this.pukInput.focus();
- break;
- case 'networkLocked':
- this.lockType = 'nck';
- this.errorMsg.hidden = true;
- this.inputFieldControl(false, false, true, false);
- this.nckInput.focus();
- break;
- default:
- this.skip();
- break;
- }
- this.dialogTitle.textContent = _(this.lockType + 'Title') || '';
- this.dialogTitle.dataset.l10nId = this.lockType + 'Title';
- },
-
- handleError: function spl_handleLockError(evt) {
- var retry = (evt.retryCount) ? evt.retryCount : -1;
- this.showErrorMsg(retry, evt.lockType);
- if (retry === -1) {
- this.skip();
- return;
- }
- if (evt.lockType === 'pin') {
- this.pinInput.focus();
- } else if (evt.lockType === 'puk') {
- this.pukInput.focus();
- } else {
- this.nckInput.focus();
- }
- },
-
- showErrorMsg: function spl_showErrorMsg(retry, type) {
- var _ = navigator.mozL10n.get;
-
- this.errorMsgHeader.textContent = _(type + 'ErrorMsg');
- this.errorMsgHeader.dataset.l10nId = type + 'ErrorMsg';
-
- if (retry !== 1) {
- var l10nArgs = { n: retry };
- this.errorMsgBody.dataset.l10nId = type + 'AttemptMsg';
- this.errorMsgBody.dataset.l10nArgs = JSON.stringify(l10nArgs);
- this.errorMsgBody.textContent = _(type + 'AttemptMsg', l10nArgs);
- } else {
- this.errorMsgBody.dataset.l10nId = type + 'LastChanceMsg';
- this.errorMsgBody.textContent = _(type + 'LastChanceMsg');
- }
-
- this.errorMsg.hidden = false;
- },
-
- unlockPin: function spl_unlockPin() {
- var pin = this.pinInput.value;
- if (pin === '')
- return;
-
- var options = {lockType: 'pin', pin: pin };
- this.unlockCardLock(options);
- this.clear();
- },
-
- unlockPuk: function spl_unlockPuk() {
- var _ = navigator.mozL10n.get;
-
- var puk = this.pukInput.value;
- var newPin = this.newPinInput.value;
- var confirmPin = this.confirmPinInput.value;
- if (puk === '' || newPin === '' || confirmPin === '')
- return;
-
- if (newPin !== confirmPin) {
- this.errorMsgHeader.textContent = _('newPinErrorMsg');
- this.errorMsgHeader.dataset.l10nId = 'newPinErrorMsg';
- this.errorMsgBody.textContent = '';
- this.errorMsg.hidden = false;
- return;
- }
- var options = {lockType: 'puk', puk: puk, newPin: newPin };
- this.unlockCardLock(options);
- this.clear();
- },
-
- unlockNck: function spl_unlockNck() {
- var nck = this.nckInput.value;
- if (nck === '')
- return;
-
- var options = {lockType: 'nck', pin: nck };
- this.unlockCardLock(options);
- this.clear();
- },
-
- unlockCardLock: function spl_unlockCardLock(options) {
- var req = this.mobileConnection.unlockCardLock(options);
- req.onsuccess = this.close.bind(this, 'success');
- },
-
- enableLock: function spl_enableLock() {
- var pin = this.pinInput.value;
- if (pin === '')
- return;
-
- var enabled = SimPinLock.simPinCheckBox.checked;
- var options = {lockType: 'pin', pin: pin, enabled: enabled};
- this.setCardLock(options);
- this.clear();
- },
-
- changePin: function spl_changePin() {
- var _ = navigator.mozL10n.get;
-
- var pin = this.pinInput.value;
- var newPin = this.newPinInput.value;
- var confirmPin = this.confirmPinInput.value;
- if (pin === '' || newPin === '' || confirmPin === '')
- return;
-
- if (newPin !== confirmPin) {
- this.errorMsgHeader.textContent = _('newPinErrorMsg');
- this.errorMsgHeader.dataset.l10nId = 'newPinErrorMsg';
- this.errorMsgBody.textContent = '';
- this.errorMsg.hidden = false;
- return;
- }
- var options = {lockType: 'pin', pin: pin, newPin: newPin};
- this.setCardLock(options);
- this.clear();
- },
-
- setCardLock: function spl_setCardLock(options) {
- var req = this.mobileConnection.setCardLock(options);
- req.onsuccess = this.close.bind(this, 'success');
- },
- inputFieldControl: function spl_inputField(isPin, isPuk, isNck, isNewPin) {
- this.pinArea.hidden = !isPin;
- this.pukArea.hidden = !isPuk;
- this.nckArea.hidden = !isNck;
- this.newPinArea.hidden = !isNewPin;
- this.confirmPinArea.hidden = !isNewPin;
- },
-
- verify: function spl_verify() {
- switch (this.action) {
- case 'unlock':
- if (this.lockType === 'pin')
- this.unlockPin();
- else if (this.lockType === 'puk') {
- this.unlockPuk();
- } else {
- this.unlockNck();
- }
- break;
- case 'enable':
- this.enableLock();
- break;
- case 'changePin':
- this.changePin();
- break;
- }
- return false;
- },
-
- onHide: function spl_onHide(reason) {
- this.clear();
- if (this.onclose)
- this.onclose(reason);
- },
-
- clear: function spl_clear() {
- this.errorMsg.hidden = true;
- this.pinInput.value = '';
- this.pinInput.blur();
- this.pukInput.value = '';
- this.pukInput.blur();
- this.newPinInput.value = '';
- this.confirmPinInput.value = '';
- },
-
- onclose: null,
- /**
- * Show the SIM pin dialog
- * @param {String} action Name of the action to execute,
- * either: unlock, enable or changePin.
- * @param {Function} title Optional function called when dialog is closed.
- * Receive a single argument being the reason of
- * dialog closing: success, skip, home or holdhome.
- */
- show: function spl_show(action, onclose) {
- var _ = navigator.mozL10n.get;
-
- this.systemDialog.show();
- this.dialogDone.disabled = true;
- this.action = action;
- this.lockType = 'pin';
- switch (action) {
- case 'unlock':
- this.handleCardState();
- break;
- case 'enable':
- this.inputFieldControl(true, false, false, false);
- this.dialogTitle.textContent = _('pinTitle') || '';
- this.dialogTitle.dataset.l10nId = 'pinTitle';
- break;
- case 'changePin':
- this.inputFieldControl(true, false, false, true);
- this.dialogTitle.textContent = _('newpinTitle') || '';
- this.dialogTitle.dataset.l10nId = 'newpinTitle';
- break;
- }
-
- if (onclose && typeof onclose === 'function')
- this.onclose = onclose;
- },
-
- close: function spl_close(reason) {
- this.systemDialog.hide(reason);
- },
-
- skip: function spl_skip() {
- this.close('skip');
- return false;
- },
-
- init: function spl_init() {
- this.systemDialog = SystemDialog('simpin-dialog', {
- onHide: this.onHide.bind(this)
- });
-
- this.mobileConnection = window.navigator.mozMobileConnection;
- if (!this.mobileConnection)
- return;
-
- this.mobileConnection.addEventListener('icccardlockerror',
- this.handleError.bind(this));
-
- this.dialogDone.onclick = this.verify.bind(this);
- this.dialogClose.onclick = this.skip.bind(this);
- this.pinInput = this.getNumberPasswordInputField('simpin');
- this.pukInput = this.getNumberPasswordInputField('simpuk');
- this.nckInput = this.getNumberPasswordInputField('nckpin');
- this.newPinInput = this.getNumberPasswordInputField('newSimpin');
- this.confirmPinInput = this.getNumberPasswordInputField('confirmNewSimpin');
- }
-};
-
-SimPinDialog.init();
-