Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(249)

Side by Side Diff: chrome/browser/resources/options/handler_options_list.js

Issue 518673003: Add policy indicator for protocol handlers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixes nits Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698