Chromium Code Reviews| Index: chrome/browser/resources/settings/people_page/fingerprint_list.js |
| diff --git a/chrome/browser/resources/settings/people_page/fingerprint_list.js b/chrome/browser/resources/settings/people_page/fingerprint_list.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..00a0ebc7301f03930a0c60c82a7312512d10e89b |
| --- /dev/null |
| +++ b/chrome/browser/resources/settings/people_page/fingerprint_list.js |
| @@ -0,0 +1,112 @@ |
| +// Copyright 2016 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +/** |
| + * @fileoverview |
| + * Polymer element for displaying a list of fingerprints. |
| + * |
| + * Properties: |
| + * items: The fingerprints to display. |
| + * |
| + * Example: |
| + * <settings-fingerprint-list></settings-fingerprint-list> |
|
jdufault
2016/12/01 17:11:20
Include items binding in your example.
sammiequon
2016/12/01 20:52:29
Done.
|
| + */ |
| + |
| +(function() { |
| +'use strict'; |
| + |
| +/** |
| + * The max number of fingerprints this list can hold. |
| + * @type {number} |
| + * @const |
| + */ |
| +var MAX_NUMBER_FINGERPRINTS_ALLOWED = 5; |
| + |
| +Polymer({ |
| + is: 'settings-fingerprint-list', |
| + |
| + behaviors: [ |
| + I18nBehavior, |
| + ], |
| + |
| + properties: { |
| + /** |
| + * The list of fingerprint objects. |
| + * @type {Array<Object>} |
| + * @private |
| + */ |
| + items: { |
| + type: Array, |
| + value: function() { |
| + return []; |
| + }, |
| + notify: true, |
| + } |
| + }, |
| + |
| + /** |
| + * Returns the text to be displayed when the user has set up |
| + * |MAX_NUMBER_FINGERPRINTS_ALLOWED|. |
| + * @return {string} |
| + * @private |
| + */ |
| + getFingerprintButtonCannotAddText_: function() { |
| + return this.i18n('lockScreenCannotAddFingerprint', |
| + MAX_NUMBER_FINGERPRINTS_ALLOWED); |
| + }, |
| + |
| + /** |
| + * Adds a fingerprint with a default name. Should open up a dialog or move to |
| + * a new page, then go through a new fingerprint setup phase and probably |
| + * store the fingerprint somehow. For now just adds a new fingerpint to |
| + * |items|. |
| + * @private |
| + */ |
| + onAddFingerprint_: function() { |
| + // Determines what the newly added fingerprint's name should be. The name |
| + // should be in the format "Finger x" where x should be the lowest unused |
| + // number. A number is considered used if it matches the pattern "Finger x". |
| + // Note that finger x or Fingerx are not considered matches. |
| + var numbersUsed = []; |
| + var isRtl = document.dir == 'rtl'; |
|
jdufault
2016/12/01 17:11:19
There is a lot of complexity here to try to figure
sammiequon
2016/12/01 20:52:29
Done.
|
| + var defaultName = this.i18n('lockScreenFingerprintNewName'); |
| + var pattern = isRtl ? '^[0-9] ' + defaultName + '$' : |
| + '^' + defaultName + ' [0-9]$'; |
| + var regex = new RegExp(pattern); |
| + for (var i = 0; i < this.items.length; ++i) { |
| + var name = this.items[i]['name']; |
| + if (!!regex.exec(name)) |
| + numbersUsed.push(parseInt(isRtl ? name[0] : name[name.length - 1])); |
| + } |
| + |
| + var index = this.items.length + 1; |
| + for (var i = 1; i <= this.items.length; ++i) { |
| + if (!numbersUsed.includes(i)) { |
| + index = i; |
| + break; |
| + } |
| + } |
| + this.push('items', { 'name': isRtl ? index + ' ' + defaultName : |
|
jdufault
2016/12/01 17:11:19
Use a string format parameter to handle this logic
sammiequon
2016/12/01 20:52:29
Done.
|
| + defaultName + ' ' + index }); |
| + }, |
| + |
| + /** |
| + * Deletes a fingerprint from |items|. Should signal to the fingerprint module |
|
jdufault
2016/12/01 17:11:20
What is the "fingerprint module"?
// TODO(sammieq
sammiequon
2016/12/01 20:52:29
Done.
|
| + * to remove the fingerprint as well. |
| + * @private |
| + */ |
| + onItemDelete_: function(e) { |
| + this.splice('items', e.model.index, 1); |
| + }, |
| + |
| + /** |
| + * Checks whether another fingerprint can be added. |
| + * @return {boolean} |
| + * @private |
| + */ |
| + canAddNewFingerprint_: function(length) { |
| + return length < MAX_NUMBER_FINGERPRINTS_ALLOWED; |
| + } |
| +}); |
| +})(); |