Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 /** | |
| 6 * @fileoverview Polymer element for displaying material design HID detection | |
| 7 * screen. | |
| 8 */ | |
| 9 | |
| 10 (function() { | |
| 11 /** @const {number} */ var PINCODE_LENGTH = 6; | |
| 12 | |
| 13 Polymer({ | |
| 14 is: 'oobe-hid-detection-md', | |
| 15 | |
| 16 properties: { | |
| 17 /** "Continue" button is disabled until HID devices are paired. */ | |
| 18 continueButtonDisabled: { | |
| 19 type: Boolean, | |
| 20 value: true, | |
| 21 }, | |
| 22 | |
| 23 /** This is the displayed text for keyboard "Pairing" state. */ | |
| 24 keyboardPairingLabel: String, | |
| 25 | |
| 26 /** This is the displayed text for keyboard "Paired" state. */ | |
| 27 keyboardPairedLabel: String, | |
| 28 | |
| 29 /** | |
| 30 * Current state in mouse pairing process. | |
| 31 * @private | |
| 32 */ | |
| 33 mouseState_: String, | |
| 34 | |
| 35 /** | |
| 36 * Current state in keyboard pairing process. | |
| 37 * @private | |
| 38 */ | |
| 39 keyboardState_: String, | |
| 40 | |
| 41 /** | |
| 42 * Controls visibility of keyboard pincode. | |
| 43 * @private | |
| 44 */ | |
| 45 keyboardPincodeVisible_: Boolean, | |
| 46 | |
| 47 /** | |
| 48 * Reference to OOBE screen object. | |
| 49 * @type {!OobeTypes.Screen} | |
| 50 */ | |
| 51 screen: Object, | |
| 52 }, | |
| 53 | |
| 54 /** | |
| 55 * Displayed keyboard pincode. | |
| 56 */ | |
| 57 keyboardPincode_: String, | |
| 58 | |
| 59 /** | |
| 60 * Helper function to update keyboard/mouse state. | |
| 61 * @param {string} state Existing connection state (one of | |
| 62 * screen.CONNECTION). | |
|
xiyuan
2017/01/04 21:02:23
nit: 2 more space indent
| |
| 63 * @param {string} newState New connection state (one of screen.CONNECTION). | |
| 64 * @private | |
| 65 */ | |
| 66 calculateState_: function(state, newState) { | |
| 67 if (newState === undefined) | |
| 68 return state; | |
| 69 if (!this.screen) | |
| 70 return state; | |
| 71 if (newState == this.screen.CONNECTION.UPDATE) | |
| 72 return state; | |
| 73 | |
| 74 return newState; | |
| 75 }, | |
| 76 | |
| 77 /** | |
| 78 * Helper function to calculate visibility of 'connected' icons. | |
| 79 * @param {string} state Connection state (one of screen.CONNECTION). | |
| 80 * @private | |
| 81 */ | |
| 82 tickIsVisible_: function(state) { | |
| 83 if (!this.screen) | |
| 84 return false; | |
| 85 return this.screen && ( | |
|
xiyuan
2017/01/04 21:02:23
nit: no need to test this.screen since the "if" ab
| |
| 86 (state == this.screen.CONNECTION.USB) || | |
| 87 (state == this.screen.CONNECTION.CONNECTED) || | |
| 88 (state == this.screen.CONNECTION.PAIRED) | |
| 89 ); | |
| 90 }, | |
| 91 | |
| 92 /** | |
| 93 * Helper function to update keyboard/mouse state. | |
| 94 * Returns true if strings are not equal. False otherwize. | |
| 95 * @param {string} string1 | |
| 96 * @param {string} string2 | |
| 97 * @private | |
| 98 */ | |
| 99 notEq_: function(string1, string2) { return string1 != string2; }, | |
| 100 | |
| 101 /** | |
| 102 * Sets current state in mouse pairing process. | |
| 103 * @param {string} state Connection state (one of screen.CONNECTION). | |
| 104 */ | |
| 105 setMouseState: function(state) { | |
| 106 this.mouseState_ = this.calculateState_(this.mouseState_, state); | |
| 107 }, | |
| 108 | |
| 109 /** | |
| 110 * Updates visibility of keyboard pincode. | |
| 111 * @param {string} state Connection state (one of screen.CONNECTION). | |
| 112 * @private | |
| 113 */ | |
| 114 updateKeyboardPincodeVisible_: function(state) { | |
| 115 this.keyboardPincodeVisible_ = this.keyboardPincode_ && this.screen && | |
| 116 (this.keyboardState_ == this.screen.CONNECTION.PAIRING); | |
| 117 }, | |
| 118 | |
| 119 /** | |
| 120 * Sets current state in keyboard pairing process. | |
| 121 * @param {string} state Connection state (one of screen.CONNECTION). | |
| 122 */ | |
| 123 setKeyboardState: function(state) { | |
| 124 this.keyboardState_ = this.calculateState_(this.keyboardState_, state); | |
| 125 this.updateKeyboardPincodeVisible_(); | |
| 126 }, | |
| 127 | |
| 128 /** | |
| 129 * Sets displayed keyboard pin. | |
| 130 * @param {string} pincode Pincode. | |
| 131 * @param {number} entered Number of digits already entered. | |
| 132 * @param {boolean} expected | |
| 133 * @param {string} label Connection state displayed description. | |
| 134 */ | |
| 135 setPincodeState: function(pincode, entered, expected, label) { | |
| 136 this.keyboardPincode_ = pincode; | |
| 137 if (!pincode) { | |
| 138 this.updateKeyboardPincodeVisible_(); | |
| 139 return; | |
| 140 } | |
| 141 if (!this.screen) | |
| 142 return; | |
| 143 | |
| 144 if (pincode.length != PINCODE_LENGTH) | |
| 145 console.error('Wrong pincode length'); | |
| 146 | |
| 147 // Pincode keys plus Enter key. | |
| 148 for (let i = 0; i < (PINCODE_LENGTH + 1); i++) { | |
| 149 var pincodeSymbol = this.$['hid-keyboard-pincode-sym-' + (i + 1)]; | |
| 150 pincodeSymbol.classList.toggle('key-typed', i < entered && expected); | |
| 151 pincodeSymbol.classList.toggle('key-untyped', i > entered && expected); | |
| 152 pincodeSymbol.classList.toggle('key-next', i == entered && expected); | |
| 153 if (i < PINCODE_LENGTH) | |
| 154 pincodeSymbol.textContent = pincode[i] ? pincode[i] : ''; | |
| 155 } | |
| 156 | |
| 157 var wasVisible = this.keyboardPincodeVisible_; | |
| 158 this.updateKeyboardPincodeVisible_(); | |
| 159 if (this.keyboardPincodeVisible_ && !wasVisible) { | |
| 160 announceAccessibleMessage( | |
| 161 label + ' ' + pincode + ' ' + | |
| 162 loadTimeData.getString('hidDetectionBTEnterKey')); | |
| 163 } | |
| 164 }, | |
| 165 | |
| 166 /** | |
| 167 * This is 'on-tap' event handler for 'Continue' button. | |
| 168 */ | |
| 169 onHIDContinueTap_: function(event) { | |
| 170 chrome.send('HIDDetectionOnContinue'); | |
| 171 event.stopPropagation(); | |
| 172 }, | |
| 173 }); | |
| 174 })(); | |
| OLD | NEW |