Commit 6610fffe authored by Fabian Sommer's avatar Fabian Sommer Committed by Commit Bot

Disable user input in smart card dialog when no attempts remaining.

Add property to pin_keyboard to disable input.

Bug: 1027988
Change-Id: Ib715335fc0e9d8c54f440c48361851549b8a0464
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1936496Reviewed-by: default avatarAlexander Alekseev <alemate@chromium.org>
Commit-Queue: Fabian Sommer <fabiansommer@google.com>
Cr-Commit-Position: refs/heads/master@{#719922}
parent fdd188b5
...@@ -30,7 +30,8 @@ ...@@ -30,7 +30,8 @@
has-error="[[hasError_(parameters, userEdited_)]]" has-error="[[hasError_(parameters, userEdited_)]]"
aria-label$="[[getAriaLabel_(locale, parameters, errorLabelId_, aria-label$="[[getAriaLabel_(locale, parameters, errorLabelId_,
userEdited_)]]" userEdited_)]]"
on-pin-change="onPinChange_" on-submit="onSubmit_"> on-pin-change="onPinChange_" on-submit="onSubmit_"
disabled="[[!canSubmit_]]">
<div id="errorContainer" problem <div id="errorContainer" problem
hidden="[[!hasError_(parameters, userEdited_)]]"> hidden="[[!hasError_(parameters, userEdited_)]]">
<iron-icon id="errorIcon" icon="cr:error-outline"></iron-icon> <iron-icon id="errorIcon" icon="cr:error-outline"></iron-icon>
...@@ -53,7 +54,7 @@ ...@@ -53,7 +54,7 @@
<div slot="bottom-buttons" class="layout horizontal justified"> <div slot="bottom-buttons" class="layout horizontal justified">
<oobe-back-button on-tap="onBackClicked_"></oobe-back-button> <oobe-back-button on-tap="onBackClicked_"></oobe-back-button>
<oobe-next-button on-tap="onSubmit_" <oobe-next-button on-tap="onSubmit_"
disabled="[[processingCompletion_]]"></oobe-next-button> disabled="[[!canSubmit_]]"></oobe-next-button>
</div> </div>
</oobe-dialog> </oobe-dialog>
......
...@@ -55,6 +55,16 @@ Polymer({ ...@@ -55,6 +55,16 @@ Polymer({
type: Boolean, type: Boolean,
value: false, value: false,
}, },
/**
* Whether the user can submit a login request.
* @private
*/
canSubmit_: {
type: Boolean,
computed:
'computeCanSubmit_(parameters.attemptsLeft, processingCompletion_)',
},
}, },
/** /**
...@@ -82,6 +92,16 @@ Polymer({ ...@@ -82,6 +92,16 @@ Polymer({
} }
}, },
/**
* Returns whether the user can make more attempts to log in.
* @param {OobeTypes.SecurityTokenPinDialogParameters} parameters
* @return {boolean}
* @private
*/
computeCanSubmit_: function(attemptsLeft, processingCompletion) {
return attemptsLeft != 0 && !processingCompletion;
},
/** /**
* Invoked when the "Back" button is clicked. * Invoked when the "Back" button is clicked.
* @private * @private
......
...@@ -200,28 +200,28 @@ ...@@ -200,28 +200,28 @@
placeholder="[[getInputPlaceholder_(enablePassword, placeholder="[[getInputPlaceholder_(enablePassword,
enablePlaceholder)]]" enablePlaceholder)]]"
on-keydown="onInputKeyDown_" force-underline="true" on-keydown="onInputKeyDown_" force-underline="true"
disabled="[[isIncognitoUi]]"> disabled="[[crInputDisabled_(disabled, isIncognitoUi)]]">
</cr-input> </cr-input>
</div> </div>
<slot select="[problem]"></slot> <slot select="[problem]"></slot>
<div id="rowsContainer"> <div id="rowsContainer">
<div class="row"> <div class="row">
<cr-button class="digit-button" on-tap="onNumberTap_" value="1" <cr-button class="digit-button" on-tap="onNumberTap_" value="1"
noink> noink disabled="[[disabled]]">
<inner-text class="number">[[i18n('pinKeyboard1')]]</inner-text> <inner-text class="number">[[i18n('pinKeyboard1')]]</inner-text>
<inner-text class="letter" <inner-text class="letter"
hidden="[[!enableLetters]]">&nbsp;</inner-text> hidden="[[!enableLetters]]">&nbsp;</inner-text>
<paper-ripple class="circle" center></paper-ripple> <paper-ripple class="circle" center></paper-ripple>
</cr-button> </cr-button>
<cr-button class="digit-button" on-tap="onNumberTap_" value="2" <cr-button class="digit-button" on-tap="onNumberTap_" value="2"
noink> noink disabled="[[disabled]]">
<inner-text class="number">[[i18n('pinKeyboard2')]]</inner-text> <inner-text class="number">[[i18n('pinKeyboard2')]]</inner-text>
<inner-text class="letter" <inner-text class="letter"
hidden="[[!enableLetters]]">ABC</inner-text> hidden="[[!enableLetters]]">ABC</inner-text>
<paper-ripple class="circle" center></paper-ripple> <paper-ripple class="circle" center></paper-ripple>
</cr-button> </cr-button>
<cr-button class="digit-button" on-tap="onNumberTap_" value="3" <cr-button class="digit-button" on-tap="onNumberTap_" value="3"
noink> noink disabled="[[disabled]]">
<inner-text class="number">[[i18n('pinKeyboard3')]]</inner-text> <inner-text class="number">[[i18n('pinKeyboard3')]]</inner-text>
<inner-text class="letter" <inner-text class="letter"
hidden="[[!enableLetters]]">DEF</inner-text> hidden="[[!enableLetters]]">DEF</inner-text>
...@@ -230,21 +230,21 @@ ...@@ -230,21 +230,21 @@
</div> </div>
<div class="row"> <div class="row">
<cr-button class="digit-button" on-tap="onNumberTap_" value="4" <cr-button class="digit-button" on-tap="onNumberTap_" value="4"
noink> noink disabled="[[disabled]]">
<inner-text class="number">[[i18n('pinKeyboard4')]]</inner-text> <inner-text class="number">[[i18n('pinKeyboard4')]]</inner-text>
<inner-text class="letter" <inner-text class="letter"
hidden="[[!enableLetters]]">GHI</inner-text> hidden="[[!enableLetters]]">GHI</inner-text>
<paper-ripple class="circle" center></paper-ripple> <paper-ripple class="circle" center></paper-ripple>
</cr-button> </cr-button>
<cr-button class="digit-button" on-tap="onNumberTap_" value="5" <cr-button class="digit-button" on-tap="onNumberTap_" value="5"
noink> noink disabled="[[disabled]]">
<inner-text class="number">[[i18n('pinKeyboard5')]]</inner-text> <inner-text class="number">[[i18n('pinKeyboard5')]]</inner-text>
<inner-text class="letter" <inner-text class="letter"
hidden="[[!enableLetters]]">JKL</inner-text> hidden="[[!enableLetters]]">JKL</inner-text>
<paper-ripple class="circle" center></paper-ripple> <paper-ripple class="circle" center></paper-ripple>
</cr-button> </cr-button>
<cr-button class="digit-button" on-tap="onNumberTap_" value="6" <cr-button class="digit-button" on-tap="onNumberTap_" value="6"
noink> noink disabled="[[disabled]]">
<inner-text class="number">[[i18n('pinKeyboard6')]]</inner-text> <inner-text class="number">[[i18n('pinKeyboard6')]]</inner-text>
<inner-text class="letter" <inner-text class="letter"
hidden="[[!enableLetters]]">MNO</inner-text> hidden="[[!enableLetters]]">MNO</inner-text>
...@@ -253,21 +253,21 @@ ...@@ -253,21 +253,21 @@
</div> </div>
<div class="row"> <div class="row">
<cr-button class="digit-button" on-tap="onNumberTap_" value="7" <cr-button class="digit-button" on-tap="onNumberTap_" value="7"
noink> noink disabled="[[disabled]]">
<inner-text class="number">[[i18n('pinKeyboard7')]]</inner-text> <inner-text class="number">[[i18n('pinKeyboard7')]]</inner-text>
<inner-text class="letter" <inner-text class="letter"
hidden="[[!enableLetters]]">PQRS</inner-text> hidden="[[!enableLetters]]">PQRS</inner-text>
<paper-ripple class="circle" center></paper-ripple> <paper-ripple class="circle" center></paper-ripple>
</cr-button> </cr-button>
<cr-button class="digit-button" on-tap="onNumberTap_" value="8" <cr-button class="digit-button" on-tap="onNumberTap_" value="8"
noink> noink disabled="[[disabled]]">
<inner-text class="number">[[i18n('pinKeyboard8')]]</inner-text> <inner-text class="number">[[i18n('pinKeyboard8')]]</inner-text>
<inner-text class="letter" <inner-text class="letter"
hidden="[[!enableLetters]]">TUV</inner-text> hidden="[[!enableLetters]]">TUV</inner-text>
<paper-ripple class="circle" center></paper-ripple> <paper-ripple class="circle" center></paper-ripple>
</cr-button> </cr-button>
<cr-button class="digit-button" on-tap="onNumberTap_" value="9" <cr-button class="digit-button" on-tap="onNumberTap_" value="9"
noink> noink disabled="[[disabled]]">
<inner-text class="number">[[i18n('pinKeyboard9')]]</inner-text> <inner-text class="number">[[i18n('pinKeyboard9')]]</inner-text>
<inner-text class="letter" <inner-text class="letter"
hidden="[[!enableLetters]]">WXYZ</inner-text> hidden="[[!enableLetters]]">WXYZ</inner-text>
...@@ -277,7 +277,7 @@ ...@@ -277,7 +277,7 @@
<div class="row bottom-row"> <div class="row bottom-row">
<div class="digit-button"></div> <div class="digit-button"></div>
<cr-button class="digit-button" on-tap="onNumberTap_" value="0" <cr-button class="digit-button" on-tap="onNumberTap_" value="0"
noink> noink disabled="[[disabled]]">
<inner-text class="number">[[i18n('pinKeyboard0')]]</inner-text> <inner-text class="number">[[i18n('pinKeyboard0')]]</inner-text>
<inner-text class="letter" <inner-text class="letter"
hidden="[[!enableLetters]]">+</inner-text> hidden="[[!enableLetters]]">+</inner-text>
......
...@@ -94,6 +94,11 @@ Polymer({ ...@@ -94,6 +94,11 @@ Polymer({
hasError: Boolean, hasError: Boolean,
disabled: {
type: Boolean,
value: false,
},
/** /**
* The password element the pin keyboard is associated with. If this is not * The password element the pin keyboard is associated with. If this is not
* set, then a default input element is shown and used. * set, then a default input element is shown and used.
...@@ -528,5 +533,13 @@ Polymer({ ...@@ -528,5 +533,13 @@ Polymer({
return this.passwordElement || return this.passwordElement ||
(/** @type {CrInputElement} */ (this.$.pinInput)).inputElement; (/** @type {CrInputElement} */ (this.$.pinInput)).inputElement;
}, },
/**
* Needed for "incognito mode". (FIXME after https://crbug.com/900351 is
* fixed).
*/
crInputDisabled_: function() {
return this.disabled || this.isIncognitoUi;
},
}); });
})(); })();
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment