| 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 1364 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1375 | 1375 |
| 1376 /** | 1376 /** |
| 1377 * Returns all the pods in this pod row. | 1377 * Returns all the pods in this pod row. |
| 1378 * @type {NodeList} | 1378 * @type {NodeList} |
| 1379 */ | 1379 */ |
| 1380 get pods() { | 1380 get pods() { |
| 1381 return Array.prototype.slice.call(this.children); | 1381 return Array.prototype.slice.call(this.children); |
| 1382 }, | 1382 }, |
| 1383 | 1383 |
| 1384 /** | 1384 /** |
| 1385 * Return true if user pod row has only single user pod in it. | 1385 * Return true if user pod row has only single user pod in it, which should |
| 1386 * always be focused. |
| 1386 * @type {boolean} | 1387 * @type {boolean} |
| 1387 */ | 1388 */ |
| 1388 get isSinglePod() { | 1389 get alwaysFocusSinglePod() { |
| 1389 return this.children.length == 1; | 1390 var isDesktopUserManager = Oobe.getInstance().displayType == |
| 1391 DISPLAY_TYPE.DESKTOP_USER_MANAGER; |
| 1392 |
| 1393 return isDesktopUserManager ? false : this.children.length == 1; |
| 1390 }, | 1394 }, |
| 1391 | 1395 |
| 1392 /** | 1396 /** |
| 1393 * Returns pod with the given app id. | 1397 * Returns pod with the given app id. |
| 1394 * @param {!string} app_id Application id to be matched. | 1398 * @param {!string} app_id Application id to be matched. |
| 1395 * @return {Object} Pod with the given app id. null if pod hasn't been | 1399 * @return {Object} Pod with the given app id. null if pod hasn't been |
| 1396 * found. | 1400 * found. |
| 1397 */ | 1401 */ |
| 1398 getPodWithAppId_: function(app_id) { | 1402 getPodWithAppId_: function(app_id) { |
| 1399 for (var i = 0, pod; pod = this.pods[i]; ++i) { | 1403 for (var i = 0, pod; pod = this.pods[i]; ++i) { |
| (...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1599 // Desktop: recalculate pods layout right away. | 1603 // Desktop: recalculate pods layout right away. |
| 1600 if (isDesktopUserManager || isCrosAccountPicker) { | 1604 if (isDesktopUserManager || isCrosAccountPicker) { |
| 1601 this.placePods_(); | 1605 this.placePods_(); |
| 1602 | 1606 |
| 1603 // Without timeout changes in pods positions will be animated even | 1607 // Without timeout changes in pods positions will be animated even |
| 1604 // though it happened when 'flying-pods' class was disabled. | 1608 // though it happened when 'flying-pods' class was disabled. |
| 1605 setTimeout(function() { | 1609 setTimeout(function() { |
| 1606 Oobe.getInstance().toggleClass('flying-pods', true); | 1610 Oobe.getInstance().toggleClass('flying-pods', true); |
| 1607 }, 0); | 1611 }, 0); |
| 1608 | 1612 |
| 1609 this.focusPod(this.preselectedPod); | 1613 // On desktop, don't pre-select a pod if it's the only one. |
| 1614 if (isDesktopUserManager && this.pods.length == 1) |
| 1615 this.focusPod(); |
| 1616 else |
| 1617 this.focusPod(this.preselectedPod); |
| 1610 } else { | 1618 } else { |
| 1611 this.podPlacementPostponed_ = true; | 1619 this.podPlacementPostponed_ = true; |
| 1612 | 1620 |
| 1613 // Update [Cancel] button state. | 1621 // Update [Cancel] button state. |
| 1614 if ($('login-header-bar').signinUIState == | 1622 if ($('login-header-bar').signinUIState == |
| 1615 SIGNIN_UI_STATE.GAIA_SIGNIN && | 1623 SIGNIN_UI_STATE.GAIA_SIGNIN && |
| 1616 emptyPodRow && | 1624 emptyPodRow && |
| 1617 this.pods.length > 0) { | 1625 this.pods.length > 0) { |
| 1618 login.GaiaSigninScreen.updateCancelButtonState(); | 1626 login.GaiaSigninScreen.updateCancelButtonState(); |
| 1619 } | 1627 } |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1866 } | 1874 } |
| 1867 | 1875 |
| 1868 // Make sure there's only one focusPod operation happening at a time. | 1876 // Make sure there's only one focusPod operation happening at a time. |
| 1869 if (this.insideFocusPod_) { | 1877 if (this.insideFocusPod_) { |
| 1870 this.keyboardActivated_ = false; | 1878 this.keyboardActivated_ = false; |
| 1871 return; | 1879 return; |
| 1872 } | 1880 } |
| 1873 this.insideFocusPod_ = true; | 1881 this.insideFocusPod_ = true; |
| 1874 | 1882 |
| 1875 for (var i = 0, pod; pod = this.pods[i]; ++i) { | 1883 for (var i = 0, pod; pod = this.pods[i]; ++i) { |
| 1876 if (!this.isSinglePod) { | 1884 if (!this.alwaysFocusSinglePod) { |
| 1877 pod.isActionBoxMenuActive = false; | 1885 pod.isActionBoxMenuActive = false; |
| 1878 } | 1886 } |
| 1879 if (pod != podToFocus) { | 1887 if (pod != podToFocus) { |
| 1880 pod.isActionBoxMenuHovered = false; | 1888 pod.isActionBoxMenuHovered = false; |
| 1881 pod.classList.remove('focused'); | 1889 pod.classList.remove('focused'); |
| 1882 pod.classList.remove('faded'); | 1890 pod.classList.remove('faded'); |
| 1883 pod.reset(false); | 1891 pod.reset(false); |
| 1884 } | 1892 } |
| 1885 } | 1893 } |
| 1886 | 1894 |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2025 // Clear all menus if the click is outside pod menu and its | 2033 // Clear all menus if the click is outside pod menu and its |
| 2026 // button area. | 2034 // button area. |
| 2027 if (!findAncestorByClass(e.target, 'action-box-menu') && | 2035 if (!findAncestorByClass(e.target, 'action-box-menu') && |
| 2028 !findAncestorByClass(e.target, 'action-box-area')) { | 2036 !findAncestorByClass(e.target, 'action-box-area')) { |
| 2029 for (var i = 0, pod; pod = this.pods[i]; ++i) | 2037 for (var i = 0, pod; pod = this.pods[i]; ++i) |
| 2030 pod.isActionBoxMenuActive = false; | 2038 pod.isActionBoxMenuActive = false; |
| 2031 } | 2039 } |
| 2032 | 2040 |
| 2033 // Clears focus if not clicked on a pod and if there's more than one pod. | 2041 // Clears focus if not clicked on a pod and if there's more than one pod. |
| 2034 var pod = findAncestorByClass(e.target, 'pod'); | 2042 var pod = findAncestorByClass(e.target, 'pod'); |
| 2035 if ((!pod || pod.parentNode != this) && !this.isSinglePod) { | 2043 if ((!pod || pod.parentNode != this) && !this.alwaysFocusSinglePod) { |
| 2036 this.focusPod(); | 2044 this.focusPod(); |
| 2037 } | 2045 } |
| 2038 | 2046 |
| 2039 if (pod) | 2047 if (pod) |
| 2040 pod.isActionBoxMenuHovered = true; | 2048 pod.isActionBoxMenuHovered = true; |
| 2041 | 2049 |
| 2042 // Return focus back to single pod. | 2050 // Return focus back to single pod. |
| 2043 if (this.isSinglePod) { | 2051 if (this.alwaysFocusSinglePod) { |
| 2044 this.focusPod(this.focusedPod_, true /* force */); | 2052 this.focusPod(this.focusedPod_, true /* force */); |
| 2045 if (!pod) | 2053 if (!pod) |
| 2046 this.focusedPod_.isActionBoxMenuHovered = false; | 2054 this.focusedPod_.isActionBoxMenuHovered = false; |
| 2047 } | 2055 } |
| 2048 }, | 2056 }, |
| 2049 | 2057 |
| 2050 /** | 2058 /** |
| 2051 * Handler of mouse move event. | 2059 * Handler of mouse move event. |
| 2052 * @param {Event} e Click Event object. | 2060 * @param {Event} e Click Event object. |
| 2053 * @private | 2061 * @private |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2102 e.target.focus(); | 2110 e.target.focus(); |
| 2103 } | 2111 } |
| 2104 return; | 2112 return; |
| 2105 } | 2113 } |
| 2106 | 2114 |
| 2107 // Clears pod focus when we reach here. It means new focus is neither | 2115 // Clears pod focus when we reach here. It means new focus is neither |
| 2108 // on a pod nor on a button/input for a pod. | 2116 // on a pod nor on a button/input for a pod. |
| 2109 // Do not "defocus" user pod when it is a single pod. | 2117 // Do not "defocus" user pod when it is a single pod. |
| 2110 // That means that 'focused' class will not be removed and | 2118 // That means that 'focused' class will not be removed and |
| 2111 // input field/button will always be visible. | 2119 // input field/button will always be visible. |
| 2112 if (!this.isSinglePod) | 2120 if (!this.alwaysFocusSinglePod) |
| 2113 this.focusPod(); | 2121 this.focusPod(); |
| 2114 }, | 2122 }, |
| 2115 | 2123 |
| 2116 /** | 2124 /** |
| 2117 * Handler of keydown event. | 2125 * Handler of keydown event. |
| 2118 * @param {Event} e KeyDown Event object. | 2126 * @param {Event} e KeyDown Event object. |
| 2119 */ | 2127 */ |
| 2120 handleKeyDown: function(e) { | 2128 handleKeyDown: function(e) { |
| 2121 if (this.disabled) | 2129 if (this.disabled) |
| 2122 return; | 2130 return; |
| (...skipping 27 matching lines...) Expand all Loading... |
| 2150 if (e.target == this.focusedPod_.passwordElement || | 2158 if (e.target == this.focusedPod_.passwordElement || |
| 2151 (targetTag != 'INPUT' && | 2159 (targetTag != 'INPUT' && |
| 2152 targetTag != 'BUTTON' && | 2160 targetTag != 'BUTTON' && |
| 2153 targetTag != 'A')) { | 2161 targetTag != 'A')) { |
| 2154 this.setActivatedPod(this.focusedPod_, e); | 2162 this.setActivatedPod(this.focusedPod_, e); |
| 2155 e.stopPropagation(); | 2163 e.stopPropagation(); |
| 2156 } | 2164 } |
| 2157 } | 2165 } |
| 2158 break; | 2166 break; |
| 2159 case 'U+001B': // Esc | 2167 case 'U+001B': // Esc |
| 2160 if (!this.isSinglePod) | 2168 if (!this.alwaysFocusSinglePod) |
| 2161 this.focusPod(); | 2169 this.focusPod(); |
| 2162 break; | 2170 break; |
| 2163 } | 2171 } |
| 2164 }, | 2172 }, |
| 2165 | 2173 |
| 2166 /** | 2174 /** |
| 2167 * Called right after the pod row is shown. | 2175 * Called right after the pod row is shown. |
| 2168 */ | 2176 */ |
| 2169 handleAfterShow: function() { | 2177 handleAfterShow: function() { |
| 2170 // Without timeout changes in pods positions will be animated even though | 2178 // Without timeout changes in pods positions will be animated even though |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2230 if (this.podsWithPendingImages_.length == 0) { | 2238 if (this.podsWithPendingImages_.length == 0) { |
| 2231 this.classList.remove('images-loading'); | 2239 this.classList.remove('images-loading'); |
| 2232 } | 2240 } |
| 2233 } | 2241 } |
| 2234 }; | 2242 }; |
| 2235 | 2243 |
| 2236 return { | 2244 return { |
| 2237 PodRow: PodRow | 2245 PodRow: PodRow |
| 2238 }; | 2246 }; |
| 2239 }); | 2247 }); |
| OLD | NEW |