[Pkg-javascript-commits] [pdf.js] 395/414: Convert the password prompt to a class
David Prévot
taffit at moszumanska.debian.org
Tue Jun 28 17:12:44 UTC 2016
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository pdf.js.
commit 2b7137ba0a05aede70b03860c9546adba19490a6
Author: Tim van der Meij <timvandermeij at gmail.com>
Date: Mon Apr 18 23:59:46 2016 +0200
Convert the password prompt to a class
Furthermore we introduce two new methods named `setCallback` and
`setReason` so external code does not change the properties of the class
directly. Finally we update various names of properties and methods to
be more self-explanatory.
---
web/app.js | 18 ++++----
web/password_prompt.js | 123 +++++++++++++++++++++++++++++--------------------
2 files changed, 80 insertions(+), 61 deletions(-)
diff --git a/web/app.js b/web/app.js
index 87982cf..56216bd 100644
--- a/web/app.js
+++ b/web/app.js
@@ -285,14 +285,13 @@ var PDFViewerApplication = {
});
}
- PasswordPrompt.initialize({
+ this.passwordPrompt = new PasswordPrompt({
overlayName: 'passwordOverlay',
- passwordField: document.getElementById('password'),
- passwordText: document.getElementById('passwordText'),
- passwordSubmit: document.getElementById('passwordSubmit'),
- passwordCancel: document.getElementById('passwordCancel')
+ label: document.getElementById('passwordText'),
+ input: document.getElementById('password'),
+ submitButton: document.getElementById('passwordSubmit'),
+ cancelButton: document.getElementById('passwordCancel')
});
- this.passwordPrompt = PasswordPrompt;
this.pdfOutlineViewer = new PDFOutlineViewer({
container: document.getElementById('outlineView'),
@@ -687,10 +686,9 @@ var PDFViewerApplication = {
var loadingTask = pdfjsLib.getDocument(parameters);
this.pdfLoadingTask = loadingTask;
- loadingTask.onPassword = function passwordNeeded(updatePassword, reason) {
- PasswordPrompt.updatePassword = updatePassword;
- PasswordPrompt.reason = reason;
- PasswordPrompt.open();
+ loadingTask.onPassword = function passwordNeeded(updateCallback, reason) {
+ self.passwordPrompt.setUpdateCallback(updateCallback, reason);
+ self.passwordPrompt.open();
};
loadingTask.onProgress = function getDocumentProgress(progressData) {
diff --git a/web/password_prompt.js b/web/password_prompt.js
index 1202dfb..200ef93 100644
--- a/web/password_prompt.js
+++ b/web/password_prompt.js
@@ -32,69 +32,90 @@
var mozL10n = uiUtils.mozL10n;
var OverlayManager = overlayManager.OverlayManager;
-var PasswordPrompt = {
- overlayName: null,
- updatePassword: null,
- reason: null,
- passwordField: null,
- passwordText: null,
- passwordSubmit: null,
- passwordCancel: null,
-
- initialize: function secondaryToolbarInitialize(options) {
- this.overlayName = options.overlayName;
- this.passwordField = options.passwordField;
- this.passwordText = options.passwordText;
- this.passwordSubmit = options.passwordSubmit;
- this.passwordCancel = options.passwordCancel;
+/**
+ * @typedef {Object} PasswordPromptOptions
+ * @property {string} overlayName - Name of the overlay for the overlay manager.
+ * @property {HTMLParagraphElement} label - Label containing instructions for
+ * entering the password.
+ * @property {HTMLInputElement} input - Input field for entering the password.
+ * @property {HTMLButtonElement} submitButton - Button for submitting the
+ * password.
+ * @property {HTMLButtonElement} cancelButton - Button for cancelling password
+ * entry.
+ */
- // Attach the event listeners.
- this.passwordSubmit.addEventListener('click',
- this.verifyPassword.bind(this));
+/**
+ * @class
+ */
+var PasswordPrompt = (function PasswordPromptClosure() {
+ /**
+ * @constructs PasswordPrompt
+ * @param {PasswordPromptOptions} options
+ */
+ function PasswordPrompt(options) {
+ this.overlayName = options.overlayName;
+ this.label = options.label;
+ this.input = options.input;
+ this.submitButton = options.submitButton;
+ this.cancelButton = options.cancelButton;
- this.passwordCancel.addEventListener('click', this.close.bind(this));
+ this.updateCallback = null;
+ this.reason = null;
- this.passwordField.addEventListener('keydown', function (e) {
+ // Attach the event listeners.
+ this.submitButton.addEventListener('click', this.verify.bind(this));
+ this.cancelButton.addEventListener('click', this.close.bind(this));
+ this.input.addEventListener('keydown', function (e) {
if (e.keyCode === 13) { // Enter key
- this.verifyPassword();
+ this.verify();
}
}.bind(this));
OverlayManager.register(this.overlayName, this.close.bind(this), true);
- },
-
- open: function passwordPromptOpen() {
- OverlayManager.open(this.overlayName).then(function () {
- this.passwordField.type = 'password';
- this.passwordField.focus();
-
- var promptString = mozL10n.get('password_label', null,
- 'Enter the password to open this PDF file.');
+ }
- if (this.reason === pdfjsLib.PasswordResponses.INCORRECT_PASSWORD) {
- promptString = mozL10n.get('password_invalid', null,
- 'Invalid password. Please try again.');
+ PasswordPrompt.prototype = {
+ open: function PasswordPrompt_open() {
+ OverlayManager.open(this.overlayName).then(function () {
+ this.input.type = 'password';
+ this.input.focus();
+
+ var promptString = mozL10n.get('password_label', null,
+ 'Enter the password to open this PDF file.');
+
+ if (this.reason === pdfjsLib.PasswordResponses.INCORRECT_PASSWORD) {
+ promptString = mozL10n.get('password_invalid', null,
+ 'Invalid password. Please try again.');
+ }
+
+ this.label.textContent = promptString;
+ }.bind(this));
+ },
+
+ close: function PasswordPrompt_close() {
+ OverlayManager.close(this.overlayName).then(function () {
+ this.input.value = '';
+ this.input.type = '';
+ }.bind(this));
+ },
+
+ verify: function PasswordPrompt_verify() {
+ var password = this.input.value;
+ if (password && password.length > 0) {
+ this.close();
+ return this.updateCallback(password);
}
+ },
- this.passwordText.textContent = promptString;
- }.bind(this));
- },
-
- close: function passwordPromptClose() {
- OverlayManager.close(this.overlayName).then(function () {
- this.passwordField.value = '';
- this.passwordField.type = '';
- }.bind(this));
- },
-
- verifyPassword: function passwordPromptVerifyPassword() {
- var password = this.passwordField.value;
- if (password && password.length > 0) {
- this.close();
- return this.updatePassword(password);
+ setUpdateCallback:
+ function PasswordPrompt_setUpdateCallback(updateCallback, reason) {
+ this.updateCallback = updateCallback;
+ this.reason = reason;
}
- }
-};
+ };
+
+ return PasswordPrompt;
+})();
exports.PasswordPrompt = PasswordPrompt;
}));
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/pdf.js.git
More information about the Pkg-javascript-commits
mailing list