 Chromium Code Reviews
 Chromium Code Reviews Issue 10537099:
  add "always allow" option to the mediastream infobar and allow user to allow/not allow acces to devi  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src
    
  
    Issue 10537099:
  add "always allow" option to the mediastream infobar and allow user to allow/not allow acces to devi  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src| 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.contentSettings', function() { | 5 cr.define('options.contentSettings', function() { | 
| 6 /** @const */ var InlineEditableItemList = options.InlineEditableItemList; | 6 /** @const */ var InlineEditableItemList = options.InlineEditableItemList; | 
| 7 /** @const */ var InlineEditableItem = options.InlineEditableItem; | 7 /** @const */ var InlineEditableItem = options.InlineEditableItem; | 
| 8 /** @const */ var ArrayDataModel = cr.ui.ArrayDataModel; | 8 /** @const */ var ArrayDataModel = cr.ui.ArrayDataModel; | 
| 9 | 9 | 
| 10 /** | 10 /** | 
| 11 * Creates a new exceptions list item. | 11 * Creates a new exceptions list item. | 
| 12 * | |
| 12 * @param {string} contentType The type of the list. | 13 * @param {string} contentType The type of the list. | 
| 13 * @param {string} mode The browser mode, 'otr' or 'normal'. | 14 * @param {string} mode The browser mode, 'otr' or 'normal'. | 
| 14 * @param {boolean} enableAskOption Whether to show an 'ask every time' | 15 * @param {boolean} enableAskOption Whether to show an 'ask every time' option | 
| 15 * option in the select. | 16 * in the select. | 
| 
Evan Stade
2012/06/18 19:12:58
I believe the indentation was correct before.
 
no longer working on chromium
2012/06/19 12:23:17
Sorry, mistake made by eclipse, correct now.
 | |
| 16 * @param {Object} exception A dictionary that contains the data of the | 17 * @param {Object} exception A dictionary that contains the data of the | 
| 17 * exception. | 18 * exception. | 
| 18 * @constructor | 19 * @constructor | 
| 19 * @extends {options.InlineEditableItem} | 20 * @extends {options.InlineEditableItem} | 
| 20 */ | 21 */ | 
| 21 function ExceptionsListItem(contentType, mode, enableAskOption, exception) { | 22 function ExceptionsListItem(contentType, mode, enableAskOption, exception) { | 
| 22 var el = cr.doc.createElement('div'); | 23 var el = cr.doc.createElement('div'); | 
| 23 el.mode = mode; | 24 el.mode = mode; | 
| 24 el.contentType = contentType; | 25 el.contentType = contentType; | 
| 25 el.enableAskOption = enableAskOption; | 26 el.enableAskOption = enableAskOption; | 
| 26 el.dataItem = exception; | 27 el.dataItem = exception; | 
| 27 el.__proto__ = ExceptionsListItem.prototype; | 28 el.__proto__ = ExceptionsListItem.prototype; | 
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 104 // This one tracks the actual validity of the pattern in the input. This | 105 // This one tracks the actual validity of the pattern in the input. This | 
| 105 // starts off as true so as not to annoy the user when he adds a new and | 106 // starts off as true so as not to annoy the user when he adds a new and | 
| 106 // empty input. | 107 // empty input. | 
| 107 this.inputIsValid = true; | 108 this.inputIsValid = true; | 
| 108 | 109 | 
| 109 this.input = input; | 110 this.input = input; | 
| 110 this.select = select; | 111 this.select = select; | 
| 111 | 112 | 
| 112 this.updateEditables(); | 113 this.updateEditables(); | 
| 113 | 114 | 
| 114 // Editing notifications and geolocation is disabled for now. | 115 // Editing notifications, geolocation and media-stream is disabled for | 
| 116 // now. | |
| 115 if (this.contentType == 'notifications' || | 117 if (this.contentType == 'notifications' || | 
| 116 this.contentType == 'location') { | 118 this.contentType == 'location' || | 
| 119 this.contentType == 'media-stream') { | |
| 117 this.editable = false; | 120 this.editable = false; | 
| 118 } | 121 } | 
| 119 | 122 | 
| 120 // If the source of the content setting exception is not the user | 123 // If the source of the content setting exception is not the user | 
| 121 // preference, then the content settings exception is managed and the user | 124 // preference, then the content settings exception is managed and the user | 
| 122 // can't edit it. | 125 // can't edit it. | 
| 123 if (this.dataItem.source && | 126 if (this.dataItem.source && | 
| 124 this.dataItem.source != 'preference') { | 127 this.dataItem.source != 'preference') { | 
| 125 this.setAttribute('managedby', this.dataItem.source); | 128 this.setAttribute('managedby', this.dataItem.source); | 
| 126 this.deletable = false; | 129 this.deletable = false; | 
| (...skipping 21 matching lines...) Expand all Loading... | |
| 148 [listItem.contentType, listItem.mode, input.value]); | 151 [listItem.contentType, listItem.mode, input.value]); | 
| 149 }; | 152 }; | 
| 150 | 153 | 
| 151 // Listen for edit events. | 154 // Listen for edit events. | 
| 152 this.addEventListener('canceledit', this.onEditCancelled_); | 155 this.addEventListener('canceledit', this.onEditCancelled_); | 
| 153 this.addEventListener('commitedit', this.onEditCommitted_); | 156 this.addEventListener('commitedit', this.onEditCommitted_); | 
| 154 }, | 157 }, | 
| 155 | 158 | 
| 156 /** | 159 /** | 
| 157 * The pattern (e.g., a URL) for the exception. | 160 * The pattern (e.g., a URL) for the exception. | 
| 161 * | |
| 158 * @type {string} | 162 * @type {string} | 
| 159 */ | 163 */ | 
| 160 get pattern() { | 164 get pattern() { | 
| 161 return this.dataItem['displayPattern']; | 165 return this.dataItem['displayPattern']; | 
| 162 }, | 166 }, | 
| 163 set pattern(pattern) { | 167 set pattern(pattern) { | 
| 164 this.dataItem['displayPattern'] = pattern; | 168 this.dataItem['displayPattern'] = pattern; | 
| 165 }, | 169 }, | 
| 166 | 170 | 
| 167 /** | 171 /** | 
| 168 * The setting (allow/block) for the exception. | 172 * The setting (allow/block) for the exception. | 
| 173 * | |
| 169 * @type {string} | 174 * @type {string} | 
| 170 */ | 175 */ | 
| 171 get setting() { | 176 get setting() { | 
| 172 return this.dataItem['setting']; | 177 return this.dataItem['setting']; | 
| 173 }, | 178 }, | 
| 174 set setting(setting) { | 179 set setting(setting) { | 
| 175 this.dataItem['setting'] = setting; | 180 this.dataItem['setting'] = setting; | 
| 176 }, | 181 }, | 
| 177 | 182 | 
| 178 /** | 183 /** | 
| 179 * Gets a human-readable setting string. | 184 * Gets a human-readable setting string. | 
| 185 * | |
| 180 * @type {string} | 186 * @type {string} | 
| 181 */ | 187 */ | 
| 182 settingForDisplay: function() { | 188 settingForDisplay: function() { | 
| 183 var setting = this.setting; | 189 var setting = this.setting; | 
| 184 if (setting == 'allow') | 190 if (setting == 'allow') | 
| 185 return loadTimeData.getString('allowException'); | 191 return loadTimeData.getString('allowException'); | 
| 186 else if (setting == 'block') | 192 else if (setting == 'block') | 
| 187 return loadTimeData.getString('blockException'); | 193 return loadTimeData.getString('blockException'); | 
| 188 else if (setting == 'ask') | 194 else if (setting == 'ask') | 
| 189 return loadTimeData.getString('askException'); | 195 return loadTimeData.getString('askException'); | 
| 190 else if (setting == 'session') | 196 else if (setting == 'session') | 
| 191 return loadTimeData.getString('sessionException'); | 197 return loadTimeData.getString('sessionException'); | 
| 192 }, | 198 }, | 
| 193 | 199 | 
| 194 /** | 200 /** | 
| 195 * Update this list item to reflect whether the input is a valid pattern. | 201 * Update this list item to reflect whether the input is a valid pattern. | 
| 196 * @param {boolean} valid Whether said pattern is valid in the context of | 202 * | 
| 197 * a content exception setting. | 203 * @param {boolean} valid Whether said pattern is valid in the context of a | 
| 204 * content exception setting. | |
| 198 */ | 205 */ | 
| 199 setPatternValid: function(valid) { | 206 setPatternValid: function(valid) { | 
| 200 if (valid || !this.input.value) | 207 if (valid || !this.input.value) | 
| 201 this.input.setCustomValidity(''); | 208 this.input.setCustomValidity(''); | 
| 202 else | 209 else | 
| 203 this.input.setCustomValidity(' '); | 210 this.input.setCustomValidity(' '); | 
| 204 this.inputIsValid = valid; | 211 this.inputIsValid = valid; | 
| 205 this.inputValidityKnown = true; | 212 this.inputValidityKnown = true; | 
| 206 }, | 213 }, | 
| 207 | 214 | 
| (...skipping 24 matching lines...) Expand all Loading... | |
| 232 | 239 | 
| 233 /** @inheritDoc */ | 240 /** @inheritDoc */ | 
| 234 get hasBeenEdited() { | 241 get hasBeenEdited() { | 
| 235 var livePattern = this.input.value; | 242 var livePattern = this.input.value; | 
| 236 var liveSetting = this.select.value; | 243 var liveSetting = this.select.value; | 
| 237 return livePattern != this.pattern || liveSetting != this.setting; | 244 return livePattern != this.pattern || liveSetting != this.setting; | 
| 238 }, | 245 }, | 
| 239 | 246 | 
| 240 /** | 247 /** | 
| 241 * Called when committing an edit. | 248 * Called when committing an edit. | 
| 249 * | |
| 242 * @param {Event} e The end event. | 250 * @param {Event} e The end event. | 
| 243 * @private | 251 * @private | 
| 244 */ | 252 */ | 
| 245 onEditCommitted_: function(e) { | 253 onEditCommitted_: function(e) { | 
| 246 var newPattern = this.input.value; | 254 var newPattern = this.input.value; | 
| 247 var newSetting = this.select.value; | 255 var newSetting = this.select.value; | 
| 248 | 256 | 
| 249 this.finishEdit(newPattern, newSetting); | 257 this.finishEdit(newPattern, newSetting); | 
| 250 }, | 258 }, | 
| 251 | 259 | 
| 252 /** | 260 /** | 
| 253 * Called when cancelling an edit; resets the control states. | 261 * Called when cancelling an edit; resets the control states. | 
| 262 * | |
| 254 * @param {Event} e The cancel event. | 263 * @param {Event} e The cancel event. | 
| 255 * @private | 264 * @private | 
| 256 */ | 265 */ | 
| 257 onEditCancelled_: function() { | 266 onEditCancelled_: function() { | 
| 258 this.updateEditables(); | 267 this.updateEditables(); | 
| 259 this.setPatternValid(true); | 268 this.setPatternValid(true); | 
| 260 }, | 269 }, | 
| 261 | 270 | 
| 262 /** | 271 /** | 
| 263 * Editing is complete; update the model. | 272 * Editing is complete; update the model. | 
| 273 * | |
| 264 * @param {string} newPattern The pattern that the user entered. | 274 * @param {string} newPattern The pattern that the user entered. | 
| 265 * @param {string} newSetting The setting the user chose. | 275 * @param {string} newSetting The setting the user chose. | 
| 266 */ | 276 */ | 
| 267 finishEdit: function(newPattern, newSetting) { | 277 finishEdit: function(newPattern, newSetting) { | 
| 268 this.patternLabel.textContent = newPattern; | 278 this.patternLabel.textContent = newPattern; | 
| 269 this.settingLabel.textContent = this.settingForDisplay(); | 279 this.settingLabel.textContent = this.settingForDisplay(); | 
| 270 var oldPattern = this.pattern; | 280 var oldPattern = this.pattern; | 
| 271 this.pattern = newPattern; | 281 this.pattern = newPattern; | 
| 272 this.setting = newSetting; | 282 this.setting = newSetting; | 
| 273 | 283 | 
| 274 // TODO(estade): this will need to be updated if geolocation/notifications | 284 // TODO(estade): this will need to be updated if geolocation/notifications | 
| 275 // become editable. | 285 // become editable. | 
| 276 if (oldPattern != newPattern) { | 286 if (oldPattern != newPattern) { | 
| 277 chrome.send('removeException', | 287 chrome.send('removeException', | 
| 278 [this.contentType, this.mode, oldPattern]); | 288 [this.contentType, this.mode, oldPattern]); | 
| 279 } | 289 } | 
| 280 | 290 | 
| 281 chrome.send('setException', | 291 chrome.send('setException', | 
| 282 [this.contentType, this.mode, newPattern, newSetting]); | 292 [this.contentType, this.mode, newPattern, newSetting]); | 
| 283 } | 293 } | 
| 284 }; | 294 }; | 
| 285 | 295 | 
| 286 /** | 296 /** | 
| 287 * Creates a new list item for the Add New Item row, which doesn't represent | 297 * Creates a new list item for the Add New Item row, which doesn't represent | 
| 288 * an actual entry in the exceptions list but allows the user to add new | 298 * an actual entry in the exceptions list but allows the user to add new | 
| 289 * exceptions. | 299 * exceptions. | 
| 300 * | |
| 290 * @param {string} contentType The type of the list. | 301 * @param {string} contentType The type of the list. | 
| 291 * @param {string} mode The browser mode, 'otr' or 'normal'. | 302 * @param {string} mode The browser mode, 'otr' or 'normal'. | 
| 292 * @param {boolean} enableAskOption Whether to show an 'ask every time' | 303 * @param {boolean} enableAskOption Whether to show an 'ask every time' option | 
| 293 * option in the select. | 304 * in the select. | 
| 294 * @constructor | 305 * @constructor | 
| 295 * @extends {cr.ui.ExceptionsListItem} | 306 * @extends {cr.ui.ExceptionsListItem} | 
| 296 */ | 307 */ | 
| 297 function ExceptionsAddRowListItem(contentType, mode, enableAskOption) { | 308 function ExceptionsAddRowListItem(contentType, mode, enableAskOption) { | 
| 298 var el = cr.doc.createElement('div'); | 309 var el = cr.doc.createElement('div'); | 
| 299 el.mode = mode; | 310 el.mode = mode; | 
| 300 el.contentType = contentType; | 311 el.contentType = contentType; | 
| 301 el.enableAskOption = enableAskOption; | 312 el.enableAskOption = enableAskOption; | 
| 302 el.dataItem = []; | 313 el.dataItem = []; | 
| 303 el.__proto__ = ExceptionsAddRowListItem.prototype; | 314 el.__proto__ = ExceptionsAddRowListItem.prototype; | 
| (...skipping 23 matching lines...) Expand all Loading... | |
| 327 }, | 338 }, | 
| 328 | 339 | 
| 329 /** @inheritDoc */ | 340 /** @inheritDoc */ | 
| 330 get hasBeenEdited() { | 341 get hasBeenEdited() { | 
| 331 return this.input.value != ''; | 342 return this.input.value != ''; | 
| 332 }, | 343 }, | 
| 333 | 344 | 
| 334 /** | 345 /** | 
| 335 * Editing is complete; update the model. As long as the pattern isn't | 346 * Editing is complete; update the model. As long as the pattern isn't | 
| 336 * empty, we'll just add it. | 347 * empty, we'll just add it. | 
| 348 * | |
| 337 * @param {string} newPattern The pattern that the user entered. | 349 * @param {string} newPattern The pattern that the user entered. | 
| 338 * @param {string} newSetting The setting the user chose. | 350 * @param {string} newSetting The setting the user chose. | 
| 339 */ | 351 */ | 
| 340 finishEdit: function(newPattern, newSetting) { | 352 finishEdit: function(newPattern, newSetting) { | 
| 341 this.resetInput(); | 353 this.resetInput(); | 
| 342 chrome.send('setException', | 354 chrome.send('setException', | 
| 343 [this.contentType, this.mode, newPattern, newSetting]); | 355 [this.contentType, this.mode, newPattern, newSetting]); | 
| 344 }, | 356 }, | 
| 345 }; | 357 }; | 
| 346 | 358 | 
| 347 /** | 359 /** | 
| 348 * Creates a new exceptions list. | 360 * Creates a new exceptions list. | 
| 361 * | |
| 349 * @constructor | 362 * @constructor | 
| 350 * @extends {cr.ui.List} | 363 * @extends {cr.ui.List} | 
| 351 */ | 364 */ | 
| 352 var ExceptionsList = cr.ui.define('list'); | 365 var ExceptionsList = cr.ui.define('list'); | 
| 353 | 366 | 
| 354 ExceptionsList.prototype = { | 367 ExceptionsList.prototype = { | 
| 355 __proto__: InlineEditableItemList.prototype, | 368 __proto__: InlineEditableItemList.prototype, | 
| 356 | 369 | 
| 357 /** | 370 /** | 
| 358 * Called when an element is decorated as a list. | 371 * Called when an element is decorated as a list. | 
| (...skipping 18 matching lines...) Expand all Loading... | |
| 377 // Whether the exceptions in this list allow an 'Ask every time' option. | 390 // Whether the exceptions in this list allow an 'Ask every time' option. | 
| 378 this.enableAskOption = this.contentType == 'plugins' || | 391 this.enableAskOption = this.contentType == 'plugins' || | 
| 379 this.contentType == 'pepper-flash-cameramic'; | 392 this.contentType == 'pepper-flash-cameramic'; | 
| 380 | 393 | 
| 381 this.autoExpands = true; | 394 this.autoExpands = true; | 
| 382 this.reset(); | 395 this.reset(); | 
| 383 }, | 396 }, | 
| 384 | 397 | 
| 385 /** | 398 /** | 
| 386 * Creates an item to go in the list. | 399 * Creates an item to go in the list. | 
| 400 * | |
| 387 * @param {Object} entry The element from the data model for this row. | 401 * @param {Object} entry The element from the data model for this row. | 
| 388 */ | 402 */ | 
| 389 createItem: function(entry) { | 403 createItem: function(entry) { | 
| 390 if (entry) { | 404 if (entry) { | 
| 391 return new ExceptionsListItem(this.contentType, | 405 return new ExceptionsListItem(this.contentType, | 
| 392 this.mode, | 406 this.mode, | 
| 393 this.enableAskOption, | 407 this.enableAskOption, | 
| 394 entry); | 408 entry); | 
| 395 } else { | 409 } else { | 
| 396 var addRowItem = new ExceptionsAddRowListItem(this.contentType, | 410 var addRowItem = new ExceptionsAddRowListItem(this.contentType, | 
| 397 this.mode, | 411 this.mode, | 
| 398 this.enableAskOption); | 412 this.enableAskOption); | 
| 399 addRowItem.deletable = false; | 413 addRowItem.deletable = false; | 
| 400 return addRowItem; | 414 return addRowItem; | 
| 401 } | 415 } | 
| 402 }, | 416 }, | 
| 403 | 417 | 
| 404 /** | 418 /** | 
| 405 * Sets the exceptions in the js model. | 419 * Sets the exceptions in the js model. | 
| 420 * | |
| 406 * @param {Object} entries A list of dictionaries of values, each dictionary | 421 * @param {Object} entries A list of dictionaries of values, each dictionary | 
| 407 * represents an exception. | 422 * represents an exception. | 
| 408 */ | 423 */ | 
| 409 setExceptions: function(entries) { | 424 setExceptions: function(entries) { | 
| 410 var deleteCount = this.dataModel.length; | 425 var deleteCount = this.dataModel.length; | 
| 411 | 426 | 
| 412 if (this.isEditable()) { | 427 if (this.isEditable()) { | 
| 413 // We don't want to remove the Add New Exception row. | 428 // We don't want to remove the Add New Exception row. | 
| 414 deleteCount = deleteCount - 1; | 429 deleteCount = deleteCount - 1; | 
| 415 } | 430 } | 
| 416 | 431 | 
| 417 var args = [0, deleteCount]; | 432 var args = [0, deleteCount]; | 
| 418 args.push.apply(args, entries); | 433 args.push.apply(args, entries); | 
| 419 this.dataModel.splice.apply(this.dataModel, args); | 434 this.dataModel.splice.apply(this.dataModel, args); | 
| 420 }, | 435 }, | 
| 421 | 436 | 
| 422 /** | 437 /** | 
| 423 * The browser has finished checking a pattern for validity. Update the | 438 * The browser has finished checking a pattern for validity. Update the list | 
| 424 * list item to reflect this. | 439 * item to reflect this. | 
| 440 * | |
| 425 * @param {string} pattern The pattern. | 441 * @param {string} pattern The pattern. | 
| 426 * @param {bool} valid Whether said pattern is valid in the context of | 442 * @param {bool} valid Whether said pattern is valid in the context of a | 
| 427 * a content exception setting. | 443 * content exception setting. | 
| 428 */ | 444 */ | 
| 429 patternValidityCheckComplete: function(pattern, valid) { | 445 patternValidityCheckComplete: function(pattern, valid) { | 
| 430 var listItems = this.items; | 446 var listItems = this.items; | 
| 431 for (var i = 0; i < listItems.length; i++) { | 447 for (var i = 0; i < listItems.length; i++) { | 
| 432 var listItem = listItems[i]; | 448 var listItem = listItems[i]; | 
| 433 // Don't do anything for messages for the item if it is not the intended | 449 // Don't do anything for messages for the item if it is not the intended | 
| 434 // recipient, or if the response is stale (i.e. the input value has | 450 // recipient, or if the response is stale (i.e. the input value has | 
| 435 // changed since we sent the request to analyze it). | 451 // changed since we sent the request to analyze it). | 
| 436 if (pattern == listItem.input.value) | 452 if (pattern == listItem.input.value) | 
| 437 listItem.setPatternValid(valid); | 453 listItem.setPatternValid(valid); | 
| 438 } | 454 } | 
| 439 }, | 455 }, | 
| 440 | 456 | 
| 441 /** | 457 /** | 
| 442 * Returns whether the rows are editable in this list. | 458 * Returns whether the rows are editable in this list. | 
| 443 */ | 459 */ | 
| 444 isEditable: function() { | 460 isEditable: function() { | 
| 445 // Editing notifications and geolocation is disabled for now. | 461 // Exceptions of the following lists are not editable for now. | 
| 446 return !(this.contentType == 'notifications' || | 462 return !(this.contentType == 'notifications' || | 
| 447 this.contentType == 'location' || | 463 this.contentType == 'location' || | 
| 448 this.contentType == 'fullscreen'); | 464 this.contentType == 'fullscreen' || | 
| 465 this.contentType == 'media-stream'); | |
| 449 }, | 466 }, | 
| 450 | 467 | 
| 451 /** | 468 /** | 
| 452 * Removes all exceptions from the js model. | 469 * Removes all exceptions from the js model. | 
| 453 */ | 470 */ | 
| 454 reset: function() { | 471 reset: function() { | 
| 455 if (this.isEditable()) { | 472 if (this.isEditable()) { | 
| 456 // The null creates the Add New Exception row. | 473 // The null creates the Add New Exception row. | 
| 457 this.dataModel = new ArrayDataModel([null]); | 474 this.dataModel = new ArrayDataModel([null]); | 
| 458 } else { | 475 } else { | 
| (...skipping 17 matching lines...) Expand all Loading... | |
| 476 args.push(listItem.mode, listItem.pattern); | 493 args.push(listItem.mode, listItem.pattern); | 
| 477 | 494 | 
| 478 chrome.send('removeException', args); | 495 chrome.send('removeException', args); | 
| 479 }, | 496 }, | 
| 480 }; | 497 }; | 
| 481 | 498 | 
| 482 var OptionsPage = options.OptionsPage; | 499 var OptionsPage = options.OptionsPage; | 
| 483 | 500 | 
| 484 /** | 501 /** | 
| 485 * Encapsulated handling of content settings list subpage. | 502 * Encapsulated handling of content settings list subpage. | 
| 503 * | |
| 486 * @constructor | 504 * @constructor | 
| 487 */ | 505 */ | 
| 488 function ContentSettingsExceptionsArea() { | 506 function ContentSettingsExceptionsArea() { | 
| 489 OptionsPage.call(this, 'contentExceptions', | 507 OptionsPage.call(this, 'contentExceptions', | 
| 490 loadTimeData.getString('contentSettingsPageTabTitle'), | 508 loadTimeData.getString('contentSettingsPageTabTitle'), | 
| 491 'content-settings-exceptions-area'); | 509 'content-settings-exceptions-area'); | 
| 492 } | 510 } | 
| 493 | 511 | 
| 494 cr.addSingletonGetter(ContentSettingsExceptionsArea); | 512 cr.addSingletonGetter(ContentSettingsExceptionsArea); | 
| 495 | 513 | 
| (...skipping 12 matching lines...) Expand all Loading... | |
| 508 | 526 | 
| 509 // If the user types in the URL without a hash, show just cookies. | 527 // If the user types in the URL without a hash, show just cookies. | 
| 510 this.showList('cookies'); | 528 this.showList('cookies'); | 
| 511 | 529 | 
| 512 $('content-settings-exceptions-overlay-confirm').onclick = | 530 $('content-settings-exceptions-overlay-confirm').onclick = | 
| 513 OptionsPage.closeOverlay.bind(OptionsPage); | 531 OptionsPage.closeOverlay.bind(OptionsPage); | 
| 514 }, | 532 }, | 
| 515 | 533 | 
| 516 /** | 534 /** | 
| 517 * Shows one list and hides all others. | 535 * Shows one list and hides all others. | 
| 536 * | |
| 518 * @param {string} type The content type. | 537 * @param {string} type The content type. | 
| 519 */ | 538 */ | 
| 520 showList: function(type) { | 539 showList: function(type) { | 
| 521 var header = this.pageDiv.querySelector('h1'); | 540 var header = this.pageDiv.querySelector('h1'); | 
| 522 header.textContent = loadTimeData.getString(type + '_header'); | 541 header.textContent = loadTimeData.getString(type + '_header'); | 
| 523 | 542 | 
| 524 var divs = this.pageDiv.querySelectorAll('div[contentType]'); | 543 var divs = this.pageDiv.querySelectorAll('div[contentType]'); | 
| 525 for (var i = 0; i < divs.length; i++) { | 544 for (var i = 0; i < divs.length; i++) { | 
| 526 if (divs[i].getAttribute('contentType') == type) | 545 if (divs[i].getAttribute('contentType') == type) | 
| 527 divs[i].hidden = false; | 546 divs[i].hidden = false; | 
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 560 } | 579 } | 
| 561 }; | 580 }; | 
| 562 | 581 | 
| 563 return { | 582 return { | 
| 564 ExceptionsListItem: ExceptionsListItem, | 583 ExceptionsListItem: ExceptionsListItem, | 
| 565 ExceptionsAddRowListItem: ExceptionsAddRowListItem, | 584 ExceptionsAddRowListItem: ExceptionsAddRowListItem, | 
| 566 ExceptionsList: ExceptionsList, | 585 ExceptionsList: ExceptionsList, | 
| 567 ContentSettingsExceptionsArea: ContentSettingsExceptionsArea, | 586 ContentSettingsExceptionsArea: ContentSettingsExceptionsArea, | 
| 568 }; | 587 }; | 
| 569 }); | 588 }); | 
| OLD | NEW |