Index: chrome/browser/resources/settings/people_page/password_prompt_dialog.js |
diff --git a/chrome/browser/resources/settings/people_page/password_prompt_dialog.js b/chrome/browser/resources/settings/people_page/password_prompt_dialog.js |
index 415b33887fbb9bef90d2012f28a26431ff0b6fce..750f3265ef4e45180a18740f4a8b666efe2ec589 100644 |
--- a/chrome/browser/resources/settings/people_page/password_prompt_dialog.js |
+++ b/chrome/browser/resources/settings/people_page/password_prompt_dialog.js |
@@ -29,21 +29,6 @@ |
/** @const */ var PASSWORD_ACTIVE_DURATION_MS = 10 * 60 * 1000; // Ten minutes. |
-/** |
- * Helper method that checks if |password| is valid. |
- * @param {string} password |
- * @param {function(boolean):void} onCheck |
- */ |
-function checkAccountPassword_(password, onCheck) { |
- // We check the account password by trying to update the active set of quick |
- // unlock modes without changing any credentials. |
- chrome.quickUnlockPrivate.getActiveModes(function(modes) { |
- var credentials = |
- /** @type {!Array<string>} */ (Array(modes.length).fill('')); |
- chrome.quickUnlockPrivate.setModes(password, modes, credentials, onCheck); |
- }); |
-} |
- |
Polymer({ |
is: 'settings-password-prompt-dialog', |
@@ -52,7 +37,7 @@ Polymer({ |
* A wrapper around chrome.quickUnlockPrivate.setModes with the account |
* password already supplied. If this is null, the authentication screen |
* needs to be redisplayed. This property will be cleared after |
- * PASSWORD_ACTIVE_DURATION_MS milliseconds. |
+ * |this.passwordActiveDurationMs_| milliseconds. |
*/ |
setModes: { |
type: Object, |
@@ -75,7 +60,25 @@ Polymer({ |
* Helper property which marks password as valid/invalid. |
* @private |
*/ |
- passwordInvalid_: Boolean |
+ passwordInvalid_: Boolean, |
+ |
+ /** |
+ * Interface for chrome.quickUnlockPrivate calls. May be overriden by tests. |
+ * @private |
+ */ |
+ quickUnlockPrivate_: { |
+ type: Object, |
+ value: chrome.quickUnlockPrivate |
+ }, |
+ |
+ /** |
+ * PASSWORD_ACTIVE_DURATION_MS value. May be overridden by tests. |
+ * @private |
+ */ |
+ passwordActiveDurationMs_: { |
+ type: Number, |
+ value: PASSWORD_ACTIVE_DURATION_MS |
+ }, |
}, |
/** |
@@ -137,14 +140,14 @@ Polymer({ |
if (valid) { |
// Create the |this.setModes| closure and automatically clear it after |
- // |PASSWORD_ACTIVE_DURATION_MS|. |
+ // |this.passwordActiveDurationMs_|. |
var password = this.password_; |
this.password_ = ''; |
this.setModes = function(modes, credentials, onComplete) { |
- chrome.quickUnlockPrivate.setModes( |
+ this.quickUnlockPrivate_.setModes( |
password, modes, credentials, onComplete); |
- }; |
+ }.bind(this); |
function clearSetModes() { |
// Reset the password so that any cached references to this.setModes |
@@ -154,13 +157,16 @@ Polymer({ |
} |
this.clearAccountPasswordTimeout_ = setTimeout( |
- clearSetModes.bind(this), PASSWORD_ACTIVE_DURATION_MS); |
- // Closing the dialog will clear this.password_. |
- this.$.dialog.close(); |
+ clearSetModes.bind(this), this.passwordActiveDurationMs_); |
+ |
+ // Clear stored password state and close the dialog. |
+ this.password_ = ''; |
+ if (this.$.dialog.open) |
+ this.$.dialog.close(); |
} |
} |
- checkAccountPassword_(this.password_, onPasswordChecked.bind(this)); |
+ this.checkAccountPassword_(this.password_, onPasswordChecked.bind(this)); |
}, |
/** @private */ |
@@ -171,6 +177,21 @@ Polymer({ |
/** @private */ |
enableConfirm_: function() { |
return !!this.password_ && !this.passwordInvalid_; |
+ }, |
+ |
+ /** |
+ * Helper method that checks if |password| is valid. |
+ * @param {string} password |
+ * @param {function(boolean):void} onCheck |
stevenjb
2016/10/13 21:36:45
Since this is now a member function we don't need
jdufault
2016/10/13 23:41:23
|onCheck| comes from a local, but I've inlined |pa
stevenjb
2016/10/14 01:49:11
Oh, so it is. There doesn't seem to be much reason
|
+ */ |
+ checkAccountPassword_: function(password, onCheck) { |
+ // We check the account password by trying to update the active set of quick |
+ // unlock modes without changing any credentials. |
+ this.quickUnlockPrivate_.getActiveModes(function(modes) { |
+ var credentials = |
+ /** @type {!Array<string>} */ (Array(modes.length).fill('')); |
+ this.quickUnlockPrivate_.setModes(password, modes, credentials, onCheck); |
+ }.bind(this)); |
} |
}); |