Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 /** | 5 /** |
| 6 * @fileoverview User pod row implementation. | 6 * @fileoverview User pod row implementation. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 cr.define('login', function() { | 9 cr.define('login', function() { |
| 10 /** | 10 /** |
| (...skipping 739 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 750 /** | 750 /** |
| 751 * Initializes the pod after its properties set and added to a pod row. | 751 * Initializes the pod after its properties set and added to a pod row. |
| 752 */ | 752 */ |
| 753 initialize: function() { | 753 initialize: function() { |
| 754 this.passwordElement.addEventListener('keydown', | 754 this.passwordElement.addEventListener('keydown', |
| 755 this.parentNode.handleKeyDown.bind(this.parentNode)); | 755 this.parentNode.handleKeyDown.bind(this.parentNode)); |
| 756 this.passwordElement.addEventListener('keypress', | 756 this.passwordElement.addEventListener('keypress', |
| 757 this.handlePasswordKeyPress_.bind(this)); | 757 this.handlePasswordKeyPress_.bind(this)); |
| 758 this.passwordElement.addEventListener('input', | 758 this.passwordElement.addEventListener('input', |
| 759 this.handleInputChanged_.bind(this)); | 759 this.handleInputChanged_.bind(this)); |
| 760 this.submitButton.addEventListener('click', | |
| 761 this.handleSubmitButtonClick_.bind(this)); | |
| 760 | 762 |
| 761 this.imageElement.addEventListener('load', | 763 this.imageElement.addEventListener('load', |
| 762 this.parentNode.handlePodImageLoad.bind(this.parentNode, this)); | 764 this.parentNode.handlePodImageLoad.bind(this.parentNode, this)); |
| 763 | 765 |
| 764 var initialAuthType = this.user.initialAuthType || | 766 var initialAuthType = this.user.initialAuthType || |
| 765 AUTH_TYPE.OFFLINE_PASSWORD; | 767 AUTH_TYPE.OFFLINE_PASSWORD; |
| 766 this.setAuthType(initialAuthType, null); | 768 this.setAuthType(initialAuthType, null); |
| 767 | 769 |
| 768 this.userClickAuthAllowed_ = false; | 770 this.userClickAuthAllowed_ = false; |
| 771 | |
| 772 // Lazy load the assets needed for the polymer submit button. | |
| 773 if (!cr.ui.login.ResourceLoader.alreadyLoadedAssets( | |
| 774 'custom-elements-user-pod')) { | |
| 775 cr.ui.login.ResourceLoader.registerAssets({ | |
| 776 id: 'custom-elements-user-pod', | |
| 777 html: [{ url: 'chrome://oobe/custom_elements_user_pod.html' }] | |
| 778 }); | |
| 779 cr.ui.login.ResourceLoader.loadAssetsOnIdle('custom-elements-user-pod'); | |
| 780 } | |
| 769 }, | 781 }, |
| 770 | 782 |
| 771 /** | 783 /** |
| 772 * Resets tab order for pod elements to its initial state. | 784 * Resets tab order for pod elements to its initial state. |
| 773 */ | 785 */ |
| 774 resetTabOrder: function() { | 786 resetTabOrder: function() { |
| 775 // Note: the |mainInput| can be the pod itself. | 787 // Note: the |mainInput| can be the pod itself. |
| 776 this.mainInput.tabIndex = -1; | 788 this.mainInput.tabIndex = -1; |
| 777 this.tabIndex = UserPodTabOrder.POD_INPUT; | 789 this.tabIndex = UserPodTabOrder.POD_INPUT; |
| 778 }, | 790 }, |
| 779 | 791 |
| 780 /** | 792 /** |
| 781 * Handles keypress event (i.e. any textual input) on password input. | 793 * Handles keypress event (i.e. any textual input) on password input. |
| 782 * @param {Event} e Keypress Event object. | 794 * @param {Event} e Keypress Event object. |
| 783 * @private | 795 * @private |
| 784 */ | 796 */ |
| 785 handlePasswordKeyPress_: function(e) { | 797 handlePasswordKeyPress_: function(e) { |
| 786 // When tabbing from the system tray a tab key press is received. Suppress | 798 // When tabbing from the system tray a tab key press is received. Suppress |
| 787 // this so as not to type a tab character into the password field. | 799 // this so as not to type a tab character into the password field. |
| 788 if (e.keyCode == 9) { | 800 if (e.keyCode == 9) { |
| 789 e.preventDefault(); | 801 e.preventDefault(); |
| 790 return; | 802 return; |
| 791 } | 803 } |
| 792 this.customIconElement.cancelDelayedTooltipShow(); | 804 this.customIconElement.cancelDelayedTooltipShow(); |
| 793 }, | 805 }, |
| 794 | 806 |
| 795 /** | 807 /** |
| 808 * Handles a click event on submit button. | |
| 809 * @param {Event} e Click event. | |
| 810 */ | |
| 811 handleSubmitButtonClick_: function(e) { | |
| 812 this.parentNode.setActivatedPod(this, e); | |
| 813 }, | |
| 814 | |
| 815 /** | |
| 796 * Top edge margin number of pixels. | 816 * Top edge margin number of pixels. |
| 797 * @type {?number} | 817 * @type {?number} |
| 798 */ | 818 */ |
| 799 set top(top) { | 819 set top(top) { |
| 800 this.style.top = cr.ui.toCssPx(top); | 820 this.style.top = cr.ui.toCssPx(top); |
| 801 }, | 821 }, |
| 802 | 822 |
| 803 /** | 823 /** |
| 804 * Top edge margin number of pixels. | 824 * Top edge margin number of pixels. |
| 805 */ | 825 */ |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 863 | 883 |
| 864 /** | 884 /** |
| 865 * Gets password field. | 885 * Gets password field. |
| 866 * @type {!HTMLInputElement} | 886 * @type {!HTMLInputElement} |
| 867 */ | 887 */ |
| 868 get passwordElement() { | 888 get passwordElement() { |
| 869 return this.querySelector('.password'); | 889 return this.querySelector('.password'); |
| 870 }, | 890 }, |
| 871 | 891 |
| 872 /** | 892 /** |
| 893 * Gets submit button. | |
| 894 * @type {!HTMLInputElement} | |
| 895 */ | |
| 896 get submitButton() { | |
| 897 return this.querySelector('.submit-button'); | |
| 898 }, | |
| 899 | |
| 900 /** | |
| 873 * Gets the password label, which is used to show a message where the | 901 * Gets the password label, which is used to show a message where the |
| 874 * password field is normally. | 902 * password field is normally. |
| 875 * @type {!HTMLInputElement} | 903 * @type {!HTMLInputElement} |
| 876 */ | 904 */ |
| 877 get passwordLabelElement() { | 905 get passwordLabelElement() { |
| 878 return this.querySelector('.password-label'); | 906 return this.querySelector('.password-label'); |
| 879 }, | 907 }, |
| 880 | 908 |
| 881 get pinContainer() { | 909 get pinContainer() { |
| 882 return this.querySelector('.pin-container'); | 910 return this.querySelector('.pin-container'); |
| (...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1096 this.querySelector('.mp-policy-not-allowed-msg').hidden = false; | 1124 this.querySelector('.mp-policy-not-allowed-msg').hidden = false; |
| 1097 } else if (this.user_.isApp) { | 1125 } else if (this.user_.isApp) { |
| 1098 this.setUserPodIconType('app'); | 1126 this.setUserPodIconType('app'); |
| 1099 } | 1127 } |
| 1100 }, | 1128 }, |
| 1101 | 1129 |
| 1102 isPinReady: function() { | 1130 isPinReady: function() { |
| 1103 return this.pinKeyboard && this.pinKeyboard.offsetHeight > 0; | 1131 return this.pinKeyboard && this.pinKeyboard.offsetHeight > 0; |
| 1104 }, | 1132 }, |
| 1105 | 1133 |
| 1134 setErrorDisplay: function(visible) { | |
|
jdufault
2016/08/30 21:02:27
toggleDisplayError?
toggleErrorShown?
setErrorShow
sammiequon
2016/08/30 22:28:27
Done.
| |
| 1135 this.submitButton.classList.toggle('error-shown', visible); | |
| 1136 }, | |
| 1137 | |
| 1106 toggleTransitions: function(enable) { | 1138 toggleTransitions: function(enable) { |
| 1107 this.classList.toggle('flying-pin-pod', enable); | 1139 this.classList.toggle('flying-pin-pod', enable); |
| 1108 }, | 1140 }, |
| 1109 | 1141 |
| 1110 updatePinClass_: function(element, enable) { | 1142 updatePinClass_: function(element, enable) { |
| 1111 element.classList.toggle('pin-enabled', enable); | 1143 element.classList.toggle('pin-enabled', enable); |
| 1112 element.classList.toggle('pin-disabled', !enable); | 1144 element.classList.toggle('pin-disabled', !enable); |
| 1113 }, | 1145 }, |
| 1114 | 1146 |
| 1115 setPinVisibility: function(visible) { | 1147 setPinVisibility: function(visible) { |
| (...skipping 707 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1823 this.parentNode.setActivatedPod(this); | 1855 this.parentNode.setActivatedPod(this); |
| 1824 }, | 1856 }, |
| 1825 | 1857 |
| 1826 handlePinChanged_: function(e) { | 1858 handlePinChanged_: function(e) { |
| 1827 this.passwordElement.value = e.detail.pin; | 1859 this.passwordElement.value = e.detail.pin; |
| 1828 }, | 1860 }, |
| 1829 | 1861 |
| 1830 handleInputChanged_: function(e) { | 1862 handleInputChanged_: function(e) { |
| 1831 if (this.pinKeyboard) | 1863 if (this.pinKeyboard) |
| 1832 this.pinKeyboard.value = this.passwordElement.value; | 1864 this.pinKeyboard.value = this.passwordElement.value; |
| 1865 this.submitButton.disabled = this.passwordElement.value.length <= 0; | |
| 1866 this.setErrorDisplay(false); | |
| 1833 }, | 1867 }, |
| 1834 | 1868 |
| 1835 /** | 1869 /** |
| 1836 * Handles click event on a user pod. | 1870 * Handles click event on a user pod. |
| 1837 * @param {Event} e Click event. | 1871 * @param {Event} e Click event. |
| 1838 */ | 1872 */ |
| 1839 handleClickOnPod_: function(e) { | 1873 handleClickOnPod_: function(e) { |
| 1840 if (this.parentNode.disabled) | 1874 if (this.parentNode.disabled) |
| 1841 return; | 1875 return; |
| 1842 | 1876 |
| (...skipping 754 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2597 /** | 2631 /** |
| 2598 * Add an existing user pod to this pod row. | 2632 * Add an existing user pod to this pod row. |
| 2599 * @param {!Object} user User info dictionary. | 2633 * @param {!Object} user User info dictionary. |
| 2600 */ | 2634 */ |
| 2601 addUserPod: function(user) { | 2635 addUserPod: function(user) { |
| 2602 var userPod = this.createUserPod(user); | 2636 var userPod = this.createUserPod(user); |
| 2603 this.appendChild(userPod); | 2637 this.appendChild(userPod); |
| 2604 userPod.initialize(); | 2638 userPod.initialize(); |
| 2605 }, | 2639 }, |
| 2606 | 2640 |
| 2641 /** | |
| 2642 * Enables or disables transitions on the user pod. | |
| 2643 * @param {boolean} enable | |
| 2644 */ | |
| 2607 togglePinTransitions: function(enable) { | 2645 togglePinTransitions: function(enable) { |
| 2608 for (var i = 0; i < this.pods.length; ++i) | 2646 for (var i = 0; i < this.pods.length; ++i) |
| 2609 this.pods[i].toggleTransitions(enable); | 2647 this.pods[i].toggleTransitions(enable); |
| 2610 }, | 2648 }, |
| 2611 | 2649 |
| 2650 /** | |
| 2651 * Performs visual changes on the user pod if there is an error. | |
| 2652 * @param {boolean} visible Whether to show or hide the display. | |
| 2653 */ | |
| 2654 setFocusedPodErrorDisplay: function(visible) { | |
| 2655 if (this.focusedPod_) | |
| 2656 this.focusedPod_.setErrorDisplay(visible); | |
| 2657 }, | |
| 2658 | |
| 2659 /** | |
| 2660 * Shows or hides the pin keyboard for the current focused pod. | |
| 2661 * @param {boolean} visible | |
| 2662 */ | |
| 2612 setFocusedPodPinVisibility: function(visible) { | 2663 setFocusedPodPinVisibility: function(visible) { |
| 2613 if (this.focusedPod_ && this.focusedPod_.user.showPin) | 2664 if (this.focusedPod_ && this.focusedPod_.user.showPin) |
| 2614 this.focusedPod_.setPinVisibility(visible); | 2665 this.focusedPod_.setPinVisibility(visible); |
| 2615 }, | 2666 }, |
| 2616 | 2667 |
| 2617 /** | 2668 /** |
| 2618 * Runs app with a given id from the list of loaded apps. | 2669 * Runs app with a given id from the list of loaded apps. |
| 2619 * @param {!string} app_id of an app to run. | 2670 * @param {!string} app_id of an app to run. |
| 2620 * @param {boolean=} opt_diagnosticMode Whether to run the app in | 2671 * @param {boolean=} opt_diagnosticMode Whether to run the app in |
| 2621 * diagnostic mode. Default is false. | 2672 * diagnostic mode. Default is false. |
| (...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2968 /** | 3019 /** |
| 2969 * Called when window was resized. | 3020 * Called when window was resized. |
| 2970 */ | 3021 */ |
| 2971 onWindowResize: function() { | 3022 onWindowResize: function() { |
| 2972 var layout = this.calculateLayout_(); | 3023 var layout = this.calculateLayout_(); |
| 2973 if (layout.columns != this.columns || layout.rows != this.rows) | 3024 if (layout.columns != this.columns || layout.rows != this.rows) |
| 2974 this.placePods_(); | 3025 this.placePods_(); |
| 2975 | 3026 |
| 2976 // Wrap this in a set timeout so the function is called after the pod is | 3027 // Wrap this in a set timeout so the function is called after the pod is |
| 2977 // finished transitioning so that we work with the final pod dimensions. | 3028 // finished transitioning so that we work with the final pod dimensions. |
| 2978 setTimeout(function(podrow) { | 3029 setTimeout(function() { |
| 2979 podrow.scrollFocusedPodIntoView(); | 3030 this.scrollFocusedPodIntoView(); |
| 2980 }, 200, this); | 3031 }.bind(this), 200); |
|
jdufault
2016/08/30 21:02:26
Where does 200 come from?
sammiequon
2016/08/30 22:28:27
Done.
| |
| 2981 }, | 3032 }, |
| 2982 | 3033 |
| 2983 /** | 3034 /** |
| 2984 * Returns width of podrow having |columns| number of columns. | 3035 * Returns width of podrow having |columns| number of columns. |
| 2985 * @private | 3036 * @private |
| 2986 */ | 3037 */ |
| 2987 columnsToWidth_: function(columns) { | 3038 columnsToWidth_: function(columns) { |
| 2988 var isDesktopUserManager = Oobe.getInstance().displayType == | 3039 var isDesktopUserManager = Oobe.getInstance().displayType == |
| 2989 DISPLAY_TYPE.DESKTOP_USER_MANAGER; | 3040 DISPLAY_TYPE.DESKTOP_USER_MANAGER; |
| 2990 var margin = isDesktopUserManager ? DESKTOP_MARGIN_BY_COLUMNS[columns] : | 3041 var margin = isDesktopUserManager ? DESKTOP_MARGIN_BY_COLUMNS[columns] : |
| (...skipping 582 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3573 if (pod && pod.multiProfilesPolicyApplied) { | 3624 if (pod && pod.multiProfilesPolicyApplied) { |
| 3574 pod.userTypeBubbleElement.classList.remove('bubble-shown'); | 3625 pod.userTypeBubbleElement.classList.remove('bubble-shown'); |
| 3575 } | 3626 } |
| 3576 } | 3627 } |
| 3577 }; | 3628 }; |
| 3578 | 3629 |
| 3579 return { | 3630 return { |
| 3580 PodRow: PodRow | 3631 PodRow: PodRow |
| 3581 }; | 3632 }; |
| 3582 }); | 3633 }); |
| OLD | NEW |