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 ArrayDataModel = cr.ui.ArrayDataModel; | 6 /** @const */ var ArrayDataModel = cr.ui.ArrayDataModel; |
7 /** @const */ var List = cr.ui.List; | 7 /** @const */ var List = cr.ui.List; |
8 /** @const */ var ListItem = cr.ui.ListItem; | 8 /** @const */ var ListItem = cr.ui.ListItem; |
9 /** @const */ var DeletableItem = options.DeletableItem; | 9 /** @const */ var DeletableItem = options.DeletableItem; |
10 /** @const */ var DeletableItemList = options.DeletableItemList; | 10 /** @const */ var DeletableItemList = options.DeletableItemList; |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
144 handlerElement.classList.remove('none'); | 144 handlerElement.classList.remove('none'); |
145 delegate.setDefault(data.handlers[index]); | 145 delegate.setDefault(data.handlers[index]); |
146 } | 146 } |
147 }); | 147 }); |
148 handlerElement.appendChild(selectElement); | 148 handlerElement.appendChild(selectElement); |
149 handlerElement.className = 'handlers-site-column'; | 149 handlerElement.className = 'handlers-site-column'; |
150 if (data.default_handler == -1) | 150 if (data.default_handler == -1) |
151 this.classList.add('none'); | 151 this.classList.add('none'); |
152 this.appendChild(handlerElement); | 152 this.appendChild(handlerElement); |
153 | 153 |
154 // Remove link. | 154 if (data.has_policy_recommendations) { |
155 var removeElement = document.createElement('div'); | 155 // Create an indicator to show that the handler has policy |
156 removeElement.textContent = | 156 // recommendations. |
157 loadTimeData.getString('handlers_remove_link'); | 157 var indicator = new options.ControlledSettingIndicator(); |
158 removeElement.addEventListener('click', function(e) { | 158 if (data.is_default_handler_set_by_user || data.default_handler == -1) { |
159 var value = selectElement ? selectElement.value : 0; | 159 // The default handler is registered by the user or set to none, which |
160 delegate.removeHandler(value, data.handlers[value]); | 160 // indicates that the user setting has overridden a policy |
161 }); | 161 // recommendation. Show the appropriate bubble. |
162 removeElement.className = 'handlers-remove-column handlers-remove-link'; | 162 indicator.controlledBy = 'hasRecommendation'; |
163 this.appendChild(removeElement); | 163 indicator.resetHandler = function() { |
164 // If there is a policy recommendation, data.handlers.length >= 1. | |
165 // Setting the default handler to 0 ensures that it won't be 'none', | |
166 // and there *is* a user registered handler created by setDefault, | |
167 // which is required for a change notification. | |
168 // The user-registered handlers are removed in a loop. Note that if | |
169 // a handler is installed by policy, removeHandler does nothing. | |
170 delegate.setDefault(data.handlers[0]); | |
171 for (var i = 0; i < data.handlers.length; ++i) { | |
172 delegate.removeHandler(value, data.handlers[i]); | |
Vitaly Pavlenko
2014/09/12 02:08:16
I'm compiling this source with Closure Compiler. L
| |
173 } | |
174 }; | |
175 } else { | |
176 indicator.controlledBy = 'recommended'; | |
177 } | |
178 this.appendChild(indicator); | |
179 } | |
180 | |
181 if (data.registered_by_user) { | |
182 // Remove link. | |
183 var removeElement = document.createElement('div'); | |
184 removeElement.textContent = | |
185 loadTimeData.getString('handlers_remove_link'); | |
186 removeElement.addEventListener('click', function(e) { | |
187 var value = selectElement ? selectElement.value : 0; | |
188 delegate.removeHandler(value, data.handlers[value]); | |
189 }); | |
190 removeElement.className = | |
191 'handlers-remove-column handlers-remove-link'; | |
192 this.appendChild(removeElement); | |
193 } | |
164 }, | 194 }, |
165 | 195 |
166 /** @override */ | 196 /** @override */ |
167 decorate: function() { | 197 decorate: function() { |
168 ListItem.prototype.decorate.call(this); | 198 ListItem.prototype.decorate.call(this); |
169 | 199 |
170 var delegate = { | 200 var delegate = { |
171 removeHandler: function(index, handler) { | 201 removeHandler: function(index, handler) { |
172 chrome.send('removeHandler', [handler]); | 202 chrome.send('removeHandler', [handler]); |
173 }, | 203 }, |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
216 }, | 246 }, |
217 }; | 247 }; |
218 | 248 |
219 return { | 249 return { |
220 IgnoredHandlersListItem: IgnoredHandlersListItem, | 250 IgnoredHandlersListItem: IgnoredHandlersListItem, |
221 IgnoredHandlersList: IgnoredHandlersList, | 251 IgnoredHandlersList: IgnoredHandlersList, |
222 HandlerListItem: HandlerListItem, | 252 HandlerListItem: HandlerListItem, |
223 HandlersList: HandlersList, | 253 HandlersList: HandlersList, |
224 }; | 254 }; |
225 }); | 255 }); |
OLD | NEW |