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', function() { | 5 cr.define('options', function() { |
6 /** @const */ var Page = cr.ui.pageManager.Page; | 6 /** @const */ var Page = cr.ui.pageManager.Page; |
7 /** @const */ var PageManager = cr.ui.pageManager.PageManager; | 7 /** @const */ var PageManager = cr.ui.pageManager.PageManager; |
8 /** @const */ var ArrayDataModel = cr.ui.ArrayDataModel; | 8 /** @const */ var ArrayDataModel = cr.ui.ArrayDataModel; |
9 | 9 |
10 ///////////////////////////////////////////////////////////////////////////// | 10 ///////////////////////////////////////////////////////////////////////////// |
11 // PasswordManager class: | 11 // PasswordManager class: |
12 | 12 |
13 /** | 13 /** |
14 * Encapsulated handling of password and exceptions page. | 14 * Encapsulated handling of password and exceptions page. |
15 * @constructor | 15 * @constructor |
16 * @extends {cr.ui.pageManager.Page} | 16 * @extends {cr.ui.pageManager.Page} |
17 */ | 17 */ |
18 function PasswordManager() { | 18 function PasswordManager() { |
19 this.activeNavTab = null; | 19 this.activeNavTab = null; |
20 Page.call(this, 'passwords', | 20 Page.call( |
21 loadTimeData.getString('passwordsPageTabTitle'), | 21 this, 'passwords', loadTimeData.getString('passwordsPageTabTitle'), |
22 'password-manager'); | 22 'password-manager'); |
23 } | 23 } |
24 | 24 |
25 cr.addSingletonGetter(PasswordManager); | 25 cr.addSingletonGetter(PasswordManager); |
26 | 26 |
27 PasswordManager.prototype = { | 27 PasswordManager.prototype = { |
28 __proto__: Page.prototype, | 28 __proto__: Page.prototype, |
29 | 29 |
30 /** | 30 /** |
31 * The saved passwords list. | 31 * The saved passwords list. |
32 * @type {options.DeletableItemList} | 32 * @type {options.DeletableItemList} |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
64 }; | 64 }; |
65 | 65 |
66 $('password-manager-import').onclick = function() { | 66 $('password-manager-import').onclick = function() { |
67 chrome.send('importPassword'); | 67 chrome.send('importPassword'); |
68 }; | 68 }; |
69 | 69 |
70 $('password-manager-export').onclick = function() { | 70 $('password-manager-export').onclick = function() { |
71 chrome.send('exportPassword'); | 71 chrome.send('exportPassword'); |
72 }; | 72 }; |
73 | 73 |
74 $('password-search-box').addEventListener('search', | 74 $('password-search-box') |
75 this.handleSearchQueryChange_.bind(this)); | 75 .addEventListener('search', this.handleSearchQueryChange_.bind(this)); |
76 | 76 |
77 $('exceptions-learn-more').onclick = function() { | 77 $('exceptions-learn-more').onclick = function() { |
78 chrome.send('coreOptionsUserMetricsAction', | 78 chrome.send( |
79 ['Options_PasswordManagerExceptionsLearnMore']); | 79 'coreOptionsUserMetricsAction', |
| 80 ['Options_PasswordManagerExceptionsLearnMore']); |
80 return true; // Always follow the href | 81 return true; // Always follow the href |
81 }; | 82 }; |
82 | 83 |
83 this.createSavedPasswordsList_(); | 84 this.createSavedPasswordsList_(); |
84 this.createPasswordExceptionsList_(); | 85 this.createPasswordExceptionsList_(); |
85 }, | 86 }, |
86 | 87 |
87 /** @override */ | 88 /** @override */ |
88 canShowPage: function() { | 89 canShowPage: function() { |
89 return !(cr.isChromeOS && UIAccountTweaks.loggedInAsGuest()); | 90 return !(cr.isChromeOS && UIAccountTweaks.loggedInAsGuest()); |
90 }, | 91 }, |
91 | 92 |
92 /** @override */ | 93 /** @override */ |
93 didShowPage: function() { | 94 didShowPage: function() { |
94 // Updating the password lists may cause a blocking platform dialog pop up | 95 // Updating the password lists may cause a blocking platform dialog pop up |
95 // (Mac, Linux), so we delay this operation until the page is shown. | 96 // (Mac, Linux), so we delay this operation until the page is shown. |
96 chrome.send('updatePasswordLists'); | 97 chrome.send('updatePasswordLists'); |
97 $('password-search-box').focus(); | 98 $('password-search-box').focus(); |
98 }, | 99 }, |
99 | 100 |
100 /** | 101 /** |
101 * Creates, decorates and initializes the saved passwords list. | 102 * Creates, decorates and initializes the saved passwords list. |
102 * @private | 103 * @private |
103 */ | 104 */ |
104 createSavedPasswordsList_: function() { | 105 createSavedPasswordsList_: function() { |
105 var savedPasswordsList = $('saved-passwords-list'); | 106 var savedPasswordsList = $('saved-passwords-list'); |
106 options.passwordManager.PasswordsList.decorate(savedPasswordsList); | 107 options.passwordManager.PasswordsList.decorate(savedPasswordsList); |
107 this.savedPasswordsList_ = assertInstanceof(savedPasswordsList, | 108 this.savedPasswordsList_ = |
108 options.DeletableItemList); | 109 assertInstanceof(savedPasswordsList, options.DeletableItemList); |
109 }, | 110 }, |
110 | 111 |
111 /** | 112 /** |
112 * Creates, decorates and initializes the password exceptions list. | 113 * Creates, decorates and initializes the password exceptions list. |
113 * @private | 114 * @private |
114 */ | 115 */ |
115 createPasswordExceptionsList_: function() { | 116 createPasswordExceptionsList_: function() { |
116 var passwordExceptionsList = $('password-exceptions-list'); | 117 var passwordExceptionsList = $('password-exceptions-list'); |
117 options.passwordManager.PasswordExceptionsList.decorate( | 118 options.passwordManager.PasswordExceptionsList.decorate( |
118 passwordExceptionsList); | 119 passwordExceptionsList); |
119 this.passwordExceptionsList_ = assertInstanceof(passwordExceptionsList, | 120 this.passwordExceptionsList_ = |
120 options.DeletableItemList); | 121 assertInstanceof(passwordExceptionsList, options.DeletableItemList); |
121 }, | 122 }, |
122 | 123 |
123 /** | 124 /** |
124 * Handles search query changes. | 125 * Handles search query changes. |
125 * @param {!Event} e The event object. | 126 * @param {!Event} e The event object. |
126 * @private | 127 * @private |
127 */ | 128 */ |
128 handleSearchQueryChange_: function(e) { | 129 handleSearchQueryChange_: function(e) { |
129 if (this.queryDelayTimerId_) | 130 if (this.queryDelayTimerId_) |
130 window.clearTimeout(this.queryDelayTimerId_); | 131 window.clearTimeout(this.queryDelayTimerId_); |
131 | 132 |
132 // Searching cookies uses a timeout of 500ms. We use a shorter timeout | 133 // Searching cookies uses a timeout of 500ms. We use a shorter timeout |
133 // because there are probably fewer passwords and we want the UI to be | 134 // because there are probably fewer passwords and we want the UI to be |
134 // snappier since users will expect that it's "less work." | 135 // snappier since users will expect that it's "less work." |
135 this.queryDelayTimerId_ = window.setTimeout( | 136 this.queryDelayTimerId_ = |
136 this.searchPasswords_.bind(this), 250); | 137 window.setTimeout(this.searchPasswords_.bind(this), 250); |
137 | 138 |
138 chrome.send('coreOptionsUserMetricsAction', | 139 chrome.send( |
139 ['Options_PasswordManagerSearch']); | 140 'coreOptionsUserMetricsAction', ['Options_PasswordManagerSearch']); |
140 }, | 141 }, |
141 | 142 |
142 /** | 143 /** |
143 * Search passwords using text in |password-search-box|. | 144 * Search passwords using text in |password-search-box|. |
144 * @private | 145 * @private |
145 */ | 146 */ |
146 searchPasswords_: function() { | 147 searchPasswords_: function() { |
147 this.queryDelayTimerId_ = 0; | 148 this.queryDelayTimerId_ = 0; |
148 var filter = $('password-search-box').value; | 149 var filter = $('password-search-box').value; |
149 filter = (filter == '') ? null : filter; | 150 filter = (filter == '') ? null : filter; |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
246 $('password-manager-import-export').hidden = false; | 247 $('password-manager-import-export').hidden = false; |
247 }, | 248 }, |
248 }; | 249 }; |
249 | 250 |
250 /** | 251 /** |
251 * Removes a saved password. | 252 * Removes a saved password. |
252 * @param {number} rowIndex indicating the row to remove. | 253 * @param {number} rowIndex indicating the row to remove. |
253 */ | 254 */ |
254 PasswordManager.removeSavedPassword = function(rowIndex) { | 255 PasswordManager.removeSavedPassword = function(rowIndex) { |
255 chrome.send('removeSavedPassword', [String(rowIndex)]); | 256 chrome.send('removeSavedPassword', [String(rowIndex)]); |
256 chrome.send('coreOptionsUserMetricsAction', | 257 chrome.send( |
257 ['Options_PasswordManagerDeletePassword']); | 258 'coreOptionsUserMetricsAction', |
| 259 ['Options_PasswordManagerDeletePassword']); |
258 }; | 260 }; |
259 | 261 |
260 /** | 262 /** |
261 * Removes a password exception. | 263 * Removes a password exception. |
262 * @param {number} rowIndex indicating the row to remove. | 264 * @param {number} rowIndex indicating the row to remove. |
263 */ | 265 */ |
264 PasswordManager.removePasswordException = function(rowIndex) { | 266 PasswordManager.removePasswordException = function(rowIndex) { |
265 chrome.send('removePasswordException', [String(rowIndex)]); | 267 chrome.send('removePasswordException', [String(rowIndex)]); |
266 }; | 268 }; |
267 | 269 |
268 PasswordManager.requestShowPassword = function(index) { | 270 PasswordManager.requestShowPassword = function(index) { |
269 chrome.send('requestShowPassword', [index]); | 271 chrome.send('requestShowPassword', [index]); |
270 }; | 272 }; |
271 | 273 |
272 // Forward public APIs to private implementations on the singleton instance. | 274 // Forward public APIs to private implementations on the singleton instance. |
273 cr.makePublic(PasswordManager, [ | 275 cr.makePublic(PasswordManager, [ |
274 'setSavedPasswordsList', | 276 'setSavedPasswordsList', |
275 'setPasswordExceptionsList', | 277 'setPasswordExceptionsList', |
276 'showImportExportButton', | 278 'showImportExportButton', |
277 'showPassword', | 279 'showPassword', |
278 ]); | 280 ]); |
279 | 281 |
280 // Export | 282 // Export |
281 return { | 283 return {PasswordManager: PasswordManager}; |
282 PasswordManager: PasswordManager | |
283 }; | |
284 | 284 |
285 }); | 285 }); |
OLD | NEW |