| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 cr.define('options.passwordManager', function() { | 5 cr.define('options.passwordManager', function() { |
| 6 /** @const */ var ArrayDataModel = cr.ui.ArrayDataModel; | 6 /** @const */ var ArrayDataModel = cr.ui.ArrayDataModel; |
| 7 /** @const */ var DeletableItemList = options.DeletableItemList; | 7 /** @const */ var DeletableItemList = options.DeletableItemList; |
| 8 /** @const */ var DeletableItem = options.DeletableItem; | 8 /** @const */ var DeletableItem = options.DeletableItem; |
| 9 /** @const */ var List = cr.ui.List; | 9 /** @const */ var List = cr.ui.List; |
| 10 | 10 |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 | 70 |
| 71 // The URL of the site. | 71 // The URL of the site. |
| 72 var urlDiv = this.ownerDocument.createElement('div'); | 72 var urlDiv = this.ownerDocument.createElement('div'); |
| 73 urlDiv.className = 'favicon-cell left-elided-url url'; | 73 urlDiv.className = 'favicon-cell left-elided-url url'; |
| 74 urlDiv.setAttribute( | 74 urlDiv.setAttribute( |
| 75 'title', getTitleForPasswordOrigin(this.url, this.isUrlSecure)); | 75 'title', getTitleForPasswordOrigin(this.url, this.isUrlSecure)); |
| 76 var urlLink = this.ownerDocument.createElement('a'); | 76 var urlLink = this.ownerDocument.createElement('a'); |
| 77 urlLink.href = this.url; | 77 urlLink.href = this.url; |
| 78 urlLink.setAttribute('target', '_blank'); | 78 urlLink.setAttribute('target', '_blank'); |
| 79 urlLink.textContent = this.shownUrl.split('').reverse().join(''); | 79 urlLink.textContent = this.shownUrl.split('').reverse().join(''); |
| 80 urlLink.addEventListener('focus', function() { |
| 81 this.handleFocus(); |
| 82 }.bind(this)); |
| 80 urlDiv.appendChild(urlLink); | 83 urlDiv.appendChild(urlLink); |
| 81 urlDiv.style.backgroundImage = getFaviconImageSet( | 84 urlDiv.style.backgroundImage = getFaviconImageSet( |
| 82 'origin/' + this.url, 16); | 85 'origin/' + this.url, 16); |
| 83 this.contentElement.appendChild(urlDiv); | 86 this.contentElement.appendChild(urlDiv); |
| 84 this.urlLink = urlLink; | 87 this.urlLink = urlLink; |
| 85 | 88 |
| 86 // The stored username. | 89 // The stored username. |
| 87 var usernameDiv = this.ownerDocument.createElement('div'); | 90 var usernameDiv = this.ownerDocument.createElement('div'); |
| 88 usernameDiv.className = 'name'; | 91 usernameDiv.className = 'name'; |
| 89 usernameDiv.title = this.username; | 92 usernameDiv.title = this.username; |
| 90 this.contentElement.appendChild(usernameDiv); | 93 this.contentElement.appendChild(usernameDiv); |
| 91 var usernameInput = this.ownerDocument.createElement('input'); | 94 var usernameInput = this.ownerDocument.createElement('input'); |
| 92 usernameInput.type = 'text'; | 95 usernameInput.type = 'text'; |
| 93 usernameInput.className = 'inactive-item'; | 96 usernameInput.className = 'inactive-item'; |
| 94 usernameInput.readOnly = true; | 97 usernameInput.readOnly = true; |
| 95 usernameInput.value = this.username; | 98 usernameInput.value = this.username; |
| 99 usernameInput.addEventListener('focus', function() { |
| 100 this.handleFocus(); |
| 101 }.bind(this)); |
| 96 usernameDiv.appendChild(usernameInput); | 102 usernameDiv.appendChild(usernameInput); |
| 97 this.usernameField = usernameInput; | 103 this.usernameField = usernameInput; |
| 98 | 104 |
| 99 if (this.federation) { | 105 if (this.federation) { |
| 100 // The federation. | 106 // The federation. |
| 101 var federationDiv = this.ownerDocument.createElement('div'); | 107 var federationDiv = this.ownerDocument.createElement('div'); |
| 102 federationDiv.className = 'federation'; | 108 federationDiv.className = 'federation'; |
| 103 federationDiv.textContent = this.federation; | 109 federationDiv.textContent = this.federation; |
| 104 this.contentElement.appendChild(federationDiv); | 110 this.contentElement.appendChild(federationDiv); |
| 105 } else { | 111 } else { |
| 106 // The stored password. | 112 // The stored password. |
| 107 var passwordInputDiv = this.ownerDocument.createElement('div'); | 113 var passwordInputDiv = this.ownerDocument.createElement('div'); |
| 108 passwordInputDiv.className = 'password'; | 114 passwordInputDiv.className = 'password'; |
| 109 | 115 |
| 110 // The password input field. | 116 // The password input field. |
| 111 var passwordInput = this.ownerDocument.createElement('input'); | 117 var passwordInput = this.ownerDocument.createElement('input'); |
| 112 passwordInput.type = 'password'; | 118 passwordInput.type = 'password'; |
| 113 passwordInput.className = 'inactive-item'; | 119 passwordInput.className = 'inactive-item'; |
| 114 passwordInput.readOnly = true; | 120 passwordInput.readOnly = true; |
| 115 passwordInput.value = this.showPasswords_ ? this.password : '********'; | 121 passwordInput.value = this.showPasswords_ ? this.password : '********'; |
| 116 passwordInputDiv.appendChild(passwordInput); | 122 passwordInputDiv.appendChild(passwordInput); |
| 117 var deletableItem = this; | |
| 118 passwordInput.addEventListener('focus', function() { | 123 passwordInput.addEventListener('focus', function() { |
| 119 deletableItem.handleFocus(); | 124 this.handleFocus(); |
| 120 }); | 125 }.bind(this)); |
| 121 this.passwordField = passwordInput; | 126 this.passwordField = passwordInput; |
| 122 this.setFocusable_(false); | 127 this.setFocusable_(false); |
| 123 | 128 |
| 124 // The show/hide button. | 129 // The show/hide button. |
| 125 if (this.showPasswords_) { | 130 if (this.showPasswords_) { |
| 126 var button = this.ownerDocument.createElement('button'); | 131 var button = this.ownerDocument.createElement('button'); |
| 127 button.hidden = true; | 132 button.hidden = true; |
| 128 button.className = 'list-inline-button custom-appearance'; | 133 button.className = 'list-inline-button custom-appearance'; |
| 129 button.textContent = loadTimeData.getString('passwordShowButton'); | 134 button.textContent = loadTimeData.getString('passwordShowButton'); |
| 130 button.addEventListener('click', this.onClick_.bind(this), true); | 135 button.addEventListener('click', this.onClick_.bind(this), true); |
| 131 button.addEventListener('mousedown', function(event) { | 136 button.addEventListener('mousedown', function(event) { |
| 132 // Don't focus on this button by mousedown. | 137 // Don't focus on this button by mousedown. |
| 133 event.preventDefault(); | 138 event.preventDefault(); |
| 134 // Don't handle list item selection. It causes focus change. | 139 // Don't handle list item selection. It causes focus change. |
| 135 event.stopPropagation(); | 140 event.stopPropagation(); |
| 136 }, false); | 141 }, false); |
| 137 button.addEventListener('focus', function() { | 142 button.addEventListener('focus', function() { |
| 138 deletableItem.handleFocus(); | 143 this.handleFocus(); |
| 139 }); | 144 }.bind(this)); |
| 140 passwordInputDiv.appendChild(button); | 145 passwordInputDiv.appendChild(button); |
| 141 this.passwordShowButton = button; | 146 this.passwordShowButton = button; |
| 142 } | 147 } |
| 143 this.contentElement.appendChild(passwordInputDiv); | 148 this.contentElement.appendChild(passwordInputDiv); |
| 144 } | 149 } |
| 145 }, | 150 }, |
| 146 | 151 |
| 147 /** @override */ | 152 /** @override */ |
| 148 selectionChanged: function() { | 153 selectionChanged: function() { |
| 149 var usernameInput = this.usernameField; | 154 var usernameInput = this.usernameField; |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 322 var urlDiv = this.ownerDocument.createElement('div'); | 327 var urlDiv = this.ownerDocument.createElement('div'); |
| 323 urlDiv.className = 'url'; | 328 urlDiv.className = 'url'; |
| 324 urlDiv.classList.add('favicon-cell'); | 329 urlDiv.classList.add('favicon-cell'); |
| 325 urlDiv.classList.add('left-elided-url'); | 330 urlDiv.classList.add('left-elided-url'); |
| 326 urlDiv.setAttribute( | 331 urlDiv.setAttribute( |
| 327 'title', getTitleForPasswordOrigin(this.url, this.isUrlSecure)); | 332 'title', getTitleForPasswordOrigin(this.url, this.isUrlSecure)); |
| 328 var urlLink = this.ownerDocument.createElement('a'); | 333 var urlLink = this.ownerDocument.createElement('a'); |
| 329 urlLink.href = this.url; | 334 urlLink.href = this.url; |
| 330 urlLink.textContent = this.shownUrl.split('').reverse().join(''); | 335 urlLink.textContent = this.shownUrl.split('').reverse().join(''); |
| 331 urlLink.setAttribute('target', '_blank'); | 336 urlLink.setAttribute('target', '_blank'); |
| 337 urlLink.addEventListener('focus', function() { |
| 338 this.handleFocus(); |
| 339 }.bind(this)); |
| 340 this.urlLink = urlLink; |
| 332 urlDiv.appendChild(urlLink); | 341 urlDiv.appendChild(urlLink); |
| 333 urlDiv.style.backgroundImage = getFaviconImageSet( | 342 urlDiv.style.backgroundImage = getFaviconImageSet( |
| 334 'origin/' + this.url, 16); | 343 'origin/' + this.url, 16); |
| 335 urlLink.tabIndex = -1; | |
| 336 this.contentElement.appendChild(urlDiv); | 344 this.contentElement.appendChild(urlDiv); |
| 337 }, | 345 }, |
| 338 | 346 |
| 347 /** @override */ |
| 348 selectionChanged: function() { |
| 349 if (this.selected) { |
| 350 this.setFocusable_(true); |
| 351 this.urlLink.focus(); |
| 352 } else { |
| 353 this.setFocusable_(false); |
| 354 } |
| 355 }, |
| 356 |
| 357 /** |
| 358 * Set the focusability of this row. |
| 359 * @param {boolean} focusable |
| 360 * @private |
| 361 */ |
| 362 setFocusable_: function(focusable) { |
| 363 var tabIndex = focusable ? 0 : -1; |
| 364 this.urlLink.tabIndex = tabIndex; |
| 365 this.closeButtonElement.tabIndex = tabIndex; |
| 366 }, |
| 367 |
| 339 /** | 368 /** |
| 340 * Get the url for the entry. | 369 * Get the url for the entry. |
| 341 * @type {string} | 370 * @type {string} |
| 342 */ | 371 */ |
| 343 get url() { | 372 get url() { |
| 344 return this.dataItem[ORIGIN_FIELD]; | 373 return this.dataItem[ORIGIN_FIELD]; |
| 345 }, | 374 }, |
| 346 set url(url) { | 375 set url(url) { |
| 347 this.dataItem[ORIGIN_FIELD] = url; | 376 this.dataItem[ORIGIN_FIELD] = url; |
| 348 }, | 377 }, |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 486 PasswordExceptionsList: PasswordExceptionsList, | 515 PasswordExceptionsList: PasswordExceptionsList, |
| 487 ORIGIN_FIELD: ORIGIN_FIELD, | 516 ORIGIN_FIELD: ORIGIN_FIELD, |
| 488 SHOWN_URL_FIELD: SHOWN_URL_FIELD, | 517 SHOWN_URL_FIELD: SHOWN_URL_FIELD, |
| 489 IS_SECURE_FIELD: IS_SECURE_FIELD, | 518 IS_SECURE_FIELD: IS_SECURE_FIELD, |
| 490 USERNAME_FIELD: USERNAME_FIELD, | 519 USERNAME_FIELD: USERNAME_FIELD, |
| 491 PASSWORD_FIELD: PASSWORD_FIELD, | 520 PASSWORD_FIELD: PASSWORD_FIELD, |
| 492 FEDERATION_FIELD: FEDERATION_FIELD, | 521 FEDERATION_FIELD: FEDERATION_FIELD, |
| 493 ORIGINAL_INDEX_FIELD: ORIGINAL_INDEX_FIELD | 522 ORIGINAL_INDEX_FIELD: ORIGINAL_INDEX_FIELD |
| 494 }; | 523 }; |
| 495 }); | 524 }); |
| OLD | NEW |