OLD | NEW |
| (Empty) |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 cr.define('options', function() { | |
6 const OptionsPage = options.OptionsPage; | |
7 const ArrayDataModel = cr.ui.ArrayDataModel; | |
8 | |
9 ///////////////////////////////////////////////////////////////////////////// | |
10 // PasswordManager class: | |
11 | |
12 /** | |
13 * Encapsulated handling of password and exceptions page. | |
14 * @constructor | |
15 */ | |
16 function PasswordManager() { | |
17 this.activeNavTab = null; | |
18 OptionsPage.call(this, | |
19 'passwords', | |
20 templateData.passwordsPageTabTitle, | |
21 'password-manager'); | |
22 } | |
23 | |
24 cr.addSingletonGetter(PasswordManager); | |
25 | |
26 PasswordManager.prototype = { | |
27 __proto__: OptionsPage.prototype, | |
28 | |
29 /** | |
30 * The saved passwords list. | |
31 * @type {DeletableItemList} | |
32 * @private | |
33 */ | |
34 savedPasswordsList_: null, | |
35 | |
36 /** | |
37 * The password exceptions list. | |
38 * @type {DeletableItemList} | |
39 * @private | |
40 */ | |
41 passwordExceptionsList_: null, | |
42 | |
43 /** @inheritDoc */ | |
44 initializePage: function() { | |
45 OptionsPage.prototype.initializePage.call(this); | |
46 | |
47 this.createSavedPasswordsList_(); | |
48 this.createPasswordExceptionsList_(); | |
49 }, | |
50 | |
51 /** @inheritDoc */ | |
52 canShowPage: function() { | |
53 return !PersonalOptions.disablePasswordManagement(); | |
54 }, | |
55 | |
56 /** @inheritDoc */ | |
57 didShowPage: function() { | |
58 // Updating the password lists may cause a blocking platform dialog pop up | |
59 // (Mac, Linux), so we delay this operation until the page is shown. | |
60 chrome.send('updatePasswordLists'); | |
61 }, | |
62 | |
63 /** | |
64 * Creates, decorates and initializes the saved passwords list. | |
65 * @private | |
66 */ | |
67 createSavedPasswordsList_: function() { | |
68 this.savedPasswordsList_ = $('saved-passwords-list'); | |
69 options.passwordManager.PasswordsList.decorate(this.savedPasswordsList_); | |
70 this.savedPasswordsList_.autoExpands = true; | |
71 }, | |
72 | |
73 /** | |
74 * Creates, decorates and initializes the password exceptions list. | |
75 * @private | |
76 */ | |
77 createPasswordExceptionsList_: function() { | |
78 this.passwordExceptionsList_ = $('password-exceptions-list'); | |
79 options.passwordManager.PasswordExceptionsList.decorate( | |
80 this.passwordExceptionsList_); | |
81 this.passwordExceptionsList_.autoExpands = true; | |
82 }, | |
83 | |
84 /** | |
85 * Updates the visibility of the list and empty list placeholder. | |
86 * @param {!List} list The list to toggle visilibility for. | |
87 */ | |
88 updateListVisibility_: function(list) { | |
89 var empty = list.dataModel.length == 0; | |
90 var listPlaceHolderID = list.id + '-empty-placeholder'; | |
91 list.hidden = empty; | |
92 $(listPlaceHolderID).hidden = !empty; | |
93 }, | |
94 | |
95 /** | |
96 * Updates the data model for the saved passwords list with the values from | |
97 * |entries|. | |
98 * @param {Array} entries The list of saved password data. | |
99 */ | |
100 setSavedPasswordsList_: function(entries) { | |
101 this.savedPasswordsList_.dataModel = new ArrayDataModel(entries); | |
102 this.updateListVisibility_(this.savedPasswordsList_); | |
103 }, | |
104 | |
105 /** | |
106 * Updates the data model for the password exceptions list with the values | |
107 * from |entries|. | |
108 * @param {Array} entries The list of password exception data. | |
109 */ | |
110 setPasswordExceptionsList_: function(entries) { | |
111 this.passwordExceptionsList_.dataModel = new ArrayDataModel(entries); | |
112 this.updateListVisibility_(this.passwordExceptionsList_); | |
113 }, | |
114 }; | |
115 | |
116 /** | |
117 * Call to remove a saved password. | |
118 * @param rowIndex indicating the row to remove. | |
119 */ | |
120 PasswordManager.removeSavedPassword = function(rowIndex) { | |
121 chrome.send('removeSavedPassword', [String(rowIndex)]); | |
122 }; | |
123 | |
124 /** | |
125 * Call to remove a password exception. | |
126 * @param rowIndex indicating the row to remove. | |
127 */ | |
128 PasswordManager.removePasswordException = function(rowIndex) { | |
129 chrome.send('removePasswordException', [String(rowIndex)]); | |
130 }; | |
131 | |
132 /** | |
133 * Call to remove all saved passwords. | |
134 * @param tab contentType of the tab currently on. | |
135 */ | |
136 PasswordManager.removeAllPasswords = function() { | |
137 chrome.send('removeAllSavedPasswords'); | |
138 }; | |
139 | |
140 /** | |
141 * Call to remove all saved passwords. | |
142 * @param tab contentType of the tab currently on. | |
143 */ | |
144 PasswordManager.removeAllPasswordExceptions = function() { | |
145 chrome.send('removeAllPasswordExceptions'); | |
146 }; | |
147 | |
148 PasswordManager.setSavedPasswordsList = function(entries) { | |
149 PasswordManager.getInstance().setSavedPasswordsList_(entries); | |
150 }; | |
151 | |
152 PasswordManager.setPasswordExceptionsList = function(entries) { | |
153 PasswordManager.getInstance().setPasswordExceptionsList_(entries); | |
154 }; | |
155 | |
156 // Export | |
157 return { | |
158 PasswordManager: PasswordManager | |
159 }; | |
160 | |
161 }); | |
OLD | NEW |