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 698 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 709 this.tabIndex = UserPodTabOrder.POD_INPUT; | 709 this.tabIndex = UserPodTabOrder.POD_INPUT; |
| 710 this.actionBoxAreaElement.tabIndex = UserPodTabOrder.POD_INPUT; | 710 this.actionBoxAreaElement.tabIndex = UserPodTabOrder.POD_INPUT; |
| 711 | 711 |
| 712 this.addEventListener('keydown', this.handlePodKeyDown_.bind(this)); | 712 this.addEventListener('keydown', this.handlePodKeyDown_.bind(this)); |
| 713 this.addEventListener('click', this.handleClickOnPod_.bind(this)); | 713 this.addEventListener('click', this.handleClickOnPod_.bind(this)); |
| 714 this.addEventListener('mousedown', this.handlePodMouseDown_.bind(this)); | 714 this.addEventListener('mousedown', this.handlePodMouseDown_.bind(this)); |
| 715 | 715 |
| 716 if (this.pinKeyboard) { | 716 if (this.pinKeyboard) { |
| 717 this.pinKeyboard.addEventListener('pin-change', | 717 this.pinKeyboard.addEventListener('pin-change', |
| 718 this.handlePinChanged_.bind(this)); | 718 this.handlePinChanged_.bind(this)); |
| 719 this.pinKeyboard.addEventListener('pin-focus', | |
| 720 this.handlePinFocused_.bind(this)); | |
| 721 this.pinKeyboard.addEventListener('pin-clear', | |
| 722 this.handlePinCleared_.bind(this)); | |
| 719 } | 723 } |
| 720 | 724 |
| 721 this.actionBoxAreaElement.addEventListener('mousedown', | 725 this.actionBoxAreaElement.addEventListener('mousedown', |
| 722 stopEventPropagation); | 726 stopEventPropagation); |
| 723 this.actionBoxAreaElement.addEventListener('click', | 727 this.actionBoxAreaElement.addEventListener('click', |
| 724 this.handleActionAreaButtonClick_.bind(this)); | 728 this.handleActionAreaButtonClick_.bind(this)); |
| 725 this.actionBoxAreaElement.addEventListener('keydown', | 729 this.actionBoxAreaElement.addEventListener('keydown', |
| 726 this.handleActionAreaButtonKeyDown_.bind(this)); | 730 this.handleActionAreaButtonKeyDown_.bind(this)); |
| 727 | 731 |
| 728 this.actionBoxMenuTitleElement.addEventListener('keydown', | 732 this.actionBoxMenuTitleElement.addEventListener('keydown', |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 748 /** | 752 /** |
| 749 * Initializes the pod after its properties set and added to a pod row. | 753 * Initializes the pod after its properties set and added to a pod row. |
| 750 */ | 754 */ |
| 751 initialize: function() { | 755 initialize: function() { |
| 752 this.passwordElement.addEventListener('keydown', | 756 this.passwordElement.addEventListener('keydown', |
| 753 this.parentNode.handleKeyDown.bind(this.parentNode)); | 757 this.parentNode.handleKeyDown.bind(this.parentNode)); |
| 754 this.passwordElement.addEventListener('keypress', | 758 this.passwordElement.addEventListener('keypress', |
| 755 this.handlePasswordKeyPress_.bind(this)); | 759 this.handlePasswordKeyPress_.bind(this)); |
| 756 this.passwordElement.addEventListener('input', | 760 this.passwordElement.addEventListener('input', |
| 757 this.handleInputChanged_.bind(this)); | 761 this.handleInputChanged_.bind(this)); |
| 762 this.passwordElement.addEventListener('mouseup', | |
| 763 this.handleInputMouseUp_.bind(this)); | |
| 758 | 764 |
| 759 if (this.submitButton) { | 765 if (this.submitButton) { |
| 760 this.submitButton.addEventListener('click', | 766 this.submitButton.addEventListener('click', |
| 761 this.handleSubmitButtonClick_.bind(this)); | 767 this.handleSubmitButtonClick_.bind(this)); |
| 762 } | 768 } |
| 763 | 769 |
| 764 this.imageElement.addEventListener('load', | 770 this.imageElement.addEventListener('load', |
| 765 this.parentNode.handlePodImageLoad.bind(this.parentNode, this)); | 771 this.parentNode.handlePodImageLoad.bind(this.parentNode, this)); |
| 766 | 772 |
| 767 var initialAuthType = this.user.initialAuthType || | 773 var initialAuthType = this.user.initialAuthType || |
| (...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1160 for (var i = 0; i < elements.length; ++i) | 1166 for (var i = 0; i < elements.length; ++i) |
| 1161 this.updatePinClass_(elements[i], visible); | 1167 this.updatePinClass_(elements[i], visible); |
| 1162 this.updatePinClass_(this, visible); | 1168 this.updatePinClass_(this, visible); |
| 1163 | 1169 |
| 1164 // Set the focus to the input element after showing/hiding pin keyboard. | 1170 // Set the focus to the input element after showing/hiding pin keyboard. |
| 1165 this.mainInput.focus(); | 1171 this.mainInput.focus(); |
| 1166 | 1172 |
| 1167 // Change the password placeholder based on pin keyboard visibility. | 1173 // Change the password placeholder based on pin keyboard visibility. |
| 1168 this.passwordElement.placeholder = loadTimeData.getString(visible ? | 1174 this.passwordElement.placeholder = loadTimeData.getString(visible ? |
| 1169 'pinKeyboardPlaceholderPinPassword' : 'passwordHint'); | 1175 'pinKeyboardPlaceholderPinPassword' : 'passwordHint'); |
| 1176 | |
| 1177 chrome.send('enableVirtualKeyboardOverride', [visible]); | |
| 1170 }, | 1178 }, |
| 1171 | 1179 |
| 1172 isPinShown: function() { | 1180 isPinShown: function() { |
| 1173 return this.classList.contains('pin-enabled'); | 1181 return this.classList.contains('pin-enabled'); |
| 1174 }, | 1182 }, |
| 1175 | 1183 |
| 1176 setUserPodIconType: function(userTypeClass) { | 1184 setUserPodIconType: function(userTypeClass) { |
| 1177 this.userTypeIconAreaElement.classList.add(userTypeClass); | 1185 this.userTypeIconAreaElement.classList.add(userTypeClass); |
| 1178 this.userTypeIconAreaElement.hidden = false; | 1186 this.userTypeIconAreaElement.hidden = false; |
| 1179 }, | 1187 }, |
| (...skipping 684 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1864 this.submitButton.disabled = this.passwordElement.value.length <= 0; | 1872 this.submitButton.disabled = this.passwordElement.value.length <= 0; |
| 1865 this.showError = false; | 1873 this.showError = false; |
| 1866 $('bubble').hide(); | 1874 $('bubble').hide(); |
| 1867 }, | 1875 }, |
| 1868 | 1876 |
| 1869 /** | 1877 /** |
| 1870 * Handles pin change event from the pin keyboard. | 1878 * Handles pin change event from the pin keyboard. |
| 1871 * @param {Event} e Pin change event. | 1879 * @param {Event} e Pin change event. |
| 1872 */ | 1880 */ |
| 1873 handlePinChanged_: function(e) { | 1881 handlePinChanged_: function(e) { |
| 1874 this.passwordElement.value = e.detail.pin; | 1882 if (this.passwordElement.value != e.detail.pin) |
| 1883 this.passwordElement.value = e.detail.pin; | |
| 1875 this.updateInput_(); | 1884 this.updateInput_(); |
| 1876 }, | 1885 }, |
| 1877 | 1886 |
| 1878 /** | 1887 /** |
| 1888 * Handles pin focus event from the pin keyboard. | |
| 1889 * @param {Event} e Pin focus event. | |
| 1890 */ | |
| 1891 handlePinFocused_: function(e) { | |
| 1892 this.mainInput.focus(); | |
| 1893 }, | |
| 1894 | |
| 1895 /** | |
| 1896 * Handles pin clear event from the pin keyboard. | |
| 1897 * @param {Event} e Pin clear event. | |
| 1898 */ | |
| 1899 handlePinCleared_: function(e) { | |
| 1900 // Clear the text based on the caret location or selected region of the | |
| 1901 // password element. | |
| 1902 var selectionStart = this.passwordElement.selectionStart; | |
| 1903 var selectionEnd = this.passwordElement.selectionEnd; | |
| 1904 | |
| 1905 // If it is just a caret, remove the character infront of the caret. | |
| 1906 if (selectionStart == selectionEnd) | |
| 1907 selectionStart--; | |
|
jdufault
2016/10/26 17:56:16
Like above, can we just send a backspace key event
sammiequon
2016/10/27 00:22:40
As per offline, this cannot be achieved.
| |
| 1908 this.passwordElement.value = | |
| 1909 this.passwordElement.value.substring(0, selectionStart) + | |
| 1910 this.passwordElement.value.substring(selectionEnd, | |
| 1911 this.passwordElement.value.length); | |
| 1912 | |
| 1913 // Move the caret or selected region to the correct new place. | |
| 1914 this.passwordElement.setSelectionRange(selectionStart, selectionStart); | |
| 1915 this.handleInputChanged_(e); | |
| 1916 }, | |
| 1917 | |
| 1918 /** | |
| 1879 * Handles input event on the password element. | 1919 * Handles input event on the password element. |
| 1880 * @param {Event} e Input event. | 1920 * @param {Event} e Input event. |
| 1881 */ | 1921 */ |
| 1882 handleInputChanged_: function(e) { | 1922 handleInputChanged_: function(e) { |
| 1883 if (this.pinKeyboard) | 1923 if (this.pinKeyboard) |
| 1884 this.pinKeyboard.value = this.passwordElement.value; | 1924 this.pinKeyboard.value = this.passwordElement.value; |
| 1885 if (this.submitButton) | |
| 1886 this.submitButton.disabled = this.passwordElement.value.length <= 0; | |
| 1887 this.updateInput_(); | 1925 this.updateInput_(); |
| 1888 }, | 1926 }, |
| 1889 | 1927 |
| 1890 /** | 1928 /** |
| 1929 * Handles mouse up event on the password element. | |
| 1930 * @param {Event} e Mouse up event. | |
| 1931 */ | |
| 1932 handleInputMouseUp_: function(e) { | |
| 1933 // If the PIN keyboard is shown and the user clicks on the password | |
| 1934 // element, the virtual keyboard should pop up if it is enabled, so we | |
| 1935 // must disable the virtual keyboard override. | |
| 1936 if (this.isPinShown()) { | |
| 1937 chrome.send('enableVirtualKeyboardOverride', [false]); | |
| 1938 } | |
| 1939 }, | |
| 1940 | |
| 1941 /** | |
| 1891 * Handles click event on a user pod. | 1942 * Handles click event on a user pod. |
| 1892 * @param {Event} e Click event. | 1943 * @param {Event} e Click event. |
| 1893 */ | 1944 */ |
| 1894 handleClickOnPod_: function(e) { | 1945 handleClickOnPod_: function(e) { |
| 1895 if (this.parentNode.disabled) | 1946 if (this.parentNode.disabled) |
| 1896 return; | 1947 return; |
| 1897 | 1948 |
| 1898 if (!this.isActionBoxMenuActive) { | 1949 if (!this.isActionBoxMenuActive) { |
| 1899 if (this.isAuthTypeOnlineSignIn) { | 1950 if (this.isAuthTypeOnlineSignIn) { |
| 1900 this.showSigninUI(); | 1951 this.showSigninUI(); |
| (...skipping 1751 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3652 if (pod && pod.multiProfilesPolicyApplied) { | 3703 if (pod && pod.multiProfilesPolicyApplied) { |
| 3653 pod.userTypeBubbleElement.classList.remove('bubble-shown'); | 3704 pod.userTypeBubbleElement.classList.remove('bubble-shown'); |
| 3654 } | 3705 } |
| 3655 } | 3706 } |
| 3656 }; | 3707 }; |
| 3657 | 3708 |
| 3658 return { | 3709 return { |
| 3659 PodRow: PodRow | 3710 PodRow: PodRow |
| 3660 }; | 3711 }; |
| 3661 }); | 3712 }); |
| OLD | NEW |