15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)cr.define('options.contentSettings', function() { 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** @const */ var ControlledSettingIndicator = 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) options.ControlledSettingIndicator; 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** @const */ var InlineEditableItemList = options.InlineEditableItemList; 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** @const */ var InlineEditableItem = options.InlineEditableItem; 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** @const */ var ArrayDataModel = cr.ui.ArrayDataModel; 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Creates a new exceptions list item. 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} contentType The type of the list. 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} mode The browser mode, 'otr' or 'normal'. 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {boolean} enableAskOption Whether to show an 'ask every time' 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * option in the select. 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {Object} exception A dictionary that contains the data of the 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * exception. 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @constructor 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @extends {options.InlineEditableItem} 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) function ExceptionsListItem(contentType, mode, enableAskOption, exception) { 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var el = cr.doc.createElement('div'); 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) el.mode = mode; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) el.contentType = contentType; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) el.enableAskOption = enableAskOption; 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) el.dataItem = exception; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) el.__proto__ = ExceptionsListItem.prototype; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) el.decorate(); 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return el; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExceptionsListItem.prototype = { 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) __proto__: InlineEditableItem.prototype, 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Called when an element is decorated as a list item. 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) decorate: function() { 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InlineEditableItem.prototype.decorate.call(this); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.isPlaceholder = !this.pattern; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var patternCell = this.createEditableTextCell(this.pattern); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) patternCell.className = 'exception-pattern'; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) patternCell.classList.add('weakrtl'); 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.contentElement.appendChild(patternCell); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (this.pattern) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.patternLabel = patternCell.querySelector('.static-text'); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var input = patternCell.querySelector('input'); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(stuartmorgan): Create an createEditableSelectCell abstracting 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // this code. 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Setting label for display mode. |pattern| will be null for the 'add new 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // exception' row. 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (this.pattern) { 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var settingLabel = cr.doc.createElement('span'); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) settingLabel.textContent = this.settingForDisplay(); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) settingLabel.className = 'exception-setting'; 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) settingLabel.setAttribute('displaymode', 'static'); 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.contentElement.appendChild(settingLabel); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.settingLabel = settingLabel; 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Setting select element for edit mode. 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var select = cr.doc.createElement('select'); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var optionAllow = cr.doc.createElement('option'); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) optionAllow.textContent = loadTimeData.getString('allowException'); 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) optionAllow.value = 'allow'; 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) select.appendChild(optionAllow); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (this.enableAskOption) { 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var optionAsk = cr.doc.createElement('option'); 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) optionAsk.textContent = loadTimeData.getString('askException'); 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) optionAsk.value = 'ask'; 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) select.appendChild(optionAsk); 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (this.contentType == 'cookies') { 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var optionSession = cr.doc.createElement('option'); 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) optionSession.textContent = loadTimeData.getString('sessionException'); 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) optionSession.value = 'session'; 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) select.appendChild(optionSession); 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (this.contentType != 'fullscreen') { 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var optionBlock = cr.doc.createElement('option'); 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) optionBlock.textContent = loadTimeData.getString('blockException'); 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) optionBlock.value = 'block'; 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) select.appendChild(optionBlock); 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (this.isEmbeddingRule()) { 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.patternLabel.classList.add('sublabel'); 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.editable = false; 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (this.setting == 'default') { 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Items that don't have their own settings (parents of 'embedded on' 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // items) aren't deletable. 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.deletable = false; 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.editable = false; 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) if (this.contentType != 'zoomlevels') { 10823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) this.addEditField(select, this.settingLabel); 10923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) this.contentElement.appendChild(select); 11023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) } 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) select.className = 'exception-setting'; 112a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) select.setAttribute('aria-labelledby', 'exception-behavior-column'); 113a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (this.pattern) 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) select.setAttribute('displaymode', 'edit'); 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (this.contentType == 'media-stream') { 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) this.settingLabel.classList.add('media-audio-setting'); 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) var videoSettingLabel = cr.doc.createElement('span'); 1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) videoSettingLabel.textContent = this.videoSettingForDisplay(); 1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) videoSettingLabel.className = 'exception-setting'; 1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) videoSettingLabel.classList.add('media-video-setting'); 1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) videoSettingLabel.setAttribute('displaymode', 'static'); 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) this.contentElement.appendChild(videoSettingLabel); 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 12823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) if (this.contentType == 'zoomlevels') { 12923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) this.deletable = true; 13023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) this.editable = false; 13123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 13223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) var zoomLabel = cr.doc.createElement('span'); 13323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) zoomLabel.textContent = this.dataItem.zoom; 13423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) zoomLabel.className = 'exception-setting'; 13523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) zoomLabel.setAttribute('displaymode', 'static'); 13623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) zoomLabel.setAttribute('aria-labelledby', 'exception-zoom-column'); 13723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) this.contentElement.appendChild(zoomLabel); 13823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) this.zoomLabel = zoomLabel; 13923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) } 14023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Used to track whether the URL pattern in the input is valid. 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This will be true if the browser process has informed us that the 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // current text in the input is valid. Changing the text resets this to 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // false, and getting a response from the browser sets it back to true. 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // It starts off as false for empty string (new exceptions) or true for 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // already-existing exceptions (which we assume are valid). 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.inputValidityKnown = this.pattern; 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This one tracks the actual validity of the pattern in the input. This 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // starts off as true so as not to annoy the user when he adds a new and 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // empty input. 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.inputIsValid = true; 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.input = input; 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.select = select; 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.updateEditables(); 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Editing notifications, geolocation and media-stream is disabled for 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // now. 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (this.contentType == 'notifications' || 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.contentType == 'location' || 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.contentType == 'media-stream') { 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.editable = false; 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If the source of the content setting exception is not a user 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // preference, that source controls the exception and the user cannot edit 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // or delete it. 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var controlledBy = 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.dataItem.source && this.dataItem.source != 'preference' ? 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.dataItem.source : null; 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (controlledBy) { 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.setAttribute('controlled-by', controlledBy); 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.deletable = false; 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.editable = false; 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (controlledBy == 'policy' || controlledBy == 'extension') { 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.querySelector('.row-delete-button').hidden = true; 1811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci var indicator = new ControlledSettingIndicator(); 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) indicator.setAttribute('content-exception', this.contentType); 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Create a synthetic pref change event decorated as 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // CoreOptionsHandler::CreateValueForPref() does. 1854e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) var event = new Event(this.contentType); 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) event.value = { controlledBy: controlledBy }; 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) indicator.handlePrefChange(event); 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.appendChild(indicator); 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If the exception comes from a hosted app, display the name and the 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // icon of the app. 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (controlledBy == 'HostedApp') { 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.title = 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) loadTimeData.getString('set_by') + ' ' + this.dataItem.appName; 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var button = this.querySelector('.row-delete-button'); 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Use the host app's favicon (16px, match bigger size). 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // See c/b/ui/webui/extensions/extension_icon_source.h 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // for a description of the chrome://extension-icon URL. 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) button.style.backgroundImage = 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'url(\'chrome://extension-icon/' + this.dataItem.appId + '/16/1\')'; 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var listItem = this; 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Handle events on the editable nodes. 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) input.oninput = function(event) { 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) listItem.inputValidityKnown = false; 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome.send('checkExceptionPatternValidity', 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [listItem.contentType, listItem.mode, input.value]); 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Listen for edit events. 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.addEventListener('canceledit', this.onEditCancelled_); 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.addEventListener('commitedit', this.onEditCommitted_); 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) isEmbeddingRule: function() { 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return this.dataItem.embeddingOrigin && 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.dataItem.embeddingOrigin !== this.dataItem.origin; 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The pattern (e.g., a URL) for the exception. 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @type {string} 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) get pattern() { 2281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!this.isEmbeddingRule()) 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return this.dataItem.origin; 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return loadTimeData.getStringF('embeddedOnHost', 2321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.dataItem.embeddingOrigin); 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set pattern(pattern) { 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!this.editable) 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) console.error('Tried to change uneditable pattern'); 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.dataItem.displayPattern = pattern; 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The setting (allow/block) for the exception. 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @type {string} 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) get setting() { 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return this.dataItem.setting; 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set setting(setting) { 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.dataItem.setting = setting; 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Gets a human-readable setting string. 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @return {string} The display string. 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) settingForDisplay: function() { 2592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return this.getDisplayStringForSetting(this.setting); 2602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }, 2612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** 2632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * media video specific function. 2642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Gets a human-readable video setting string. 2652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * 2662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @return {string} The display string. 2672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 2682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) videoSettingForDisplay: function() { 2692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return this.getDisplayStringForSetting(this.dataItem.video); 2702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }, 2712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** 2732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Gets a human-readable display string for setting. 2742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * 2752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param {string} setting The setting to be displayed. 2762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @return {string} The display string. 2772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 2782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) getDisplayStringForSetting: function(setting) { 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (setting == 'allow') 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return loadTimeData.getString('allowException'); 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if (setting == 'block') 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return loadTimeData.getString('blockException'); 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if (setting == 'ask') 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return loadTimeData.getString('askException'); 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if (setting == 'session') 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return loadTimeData.getString('sessionException'); 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if (setting == 'default') 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ''; 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) console.error('Unknown setting: [' + setting + ']'); 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ''; 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Update this list item to reflect whether the input is a valid pattern. 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {boolean} valid Whether said pattern is valid in the context of a 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * content exception setting. 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setPatternValid: function(valid) { 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (valid || !this.input.value) 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.input.setCustomValidity(''); 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.input.setCustomValidity(' '); 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.inputIsValid = valid; 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.inputValidityKnown = true; 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Set the <input> to its original contents. Used when the user quits 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * editing. 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) resetInput: function() { 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.input.value = this.pattern; 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copy the data model values to the editable nodes. 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) updateEditables: function() { 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.resetInput(); 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var settingOption = 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.select.querySelector('[value=\'' + this.setting + '\']'); 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (settingOption) 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) settingOption.selected = true; 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** @override */ 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) get currentInputIsValid() { 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return this.inputValidityKnown && this.inputIsValid; 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** @override */ 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) get hasBeenEdited() { 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var livePattern = this.input.value; 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var liveSetting = this.select.value; 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return livePattern != this.pattern || liveSetting != this.setting; 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Called when committing an edit. 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {Event} e The end event. 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @private 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) onEditCommitted_: function(e) { 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var newPattern = this.input.value; 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var newSetting = this.select.value; 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.finishEdit(newPattern, newSetting); 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Called when cancelling an edit; resets the control states. 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {Event} e The cancel event. 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @private 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci onEditCancelled_: function(e) { 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.updateEditables(); 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.setPatternValid(true); 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Editing is complete; update the model. 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} newPattern The pattern that the user entered. 3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} newSetting The setting the user chose. 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finishEdit: function(newPattern, newSetting) { 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.patternLabel.textContent = newPattern; 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.settingLabel.textContent = this.settingForDisplay(); 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var oldPattern = this.pattern; 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.pattern = newPattern; 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.setting = newSetting; 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(estade): this will need to be updated if geolocation/notifications 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // become editable. 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (oldPattern != newPattern) { 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome.send('removeException', 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [this.contentType, this.mode, oldPattern]); 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome.send('setException', 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [this.contentType, this.mode, newPattern, newSetting]); 3877dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch }, 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Creates a new list item for the Add New Item row, which doesn't represent 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * an actual entry in the exceptions list but allows the user to add new 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * exceptions. 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} contentType The type of the list. 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} mode The browser mode, 'otr' or 'normal'. 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {boolean} enableAskOption Whether to show an 'ask every time' option 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * in the select. 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @constructor 4001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @extends {options.contentSettings.ExceptionsListItem} 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) function ExceptionsAddRowListItem(contentType, mode, enableAskOption) { 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var el = cr.doc.createElement('div'); 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) el.mode = mode; 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) el.contentType = contentType; 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) el.enableAskOption = enableAskOption; 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) el.dataItem = []; 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) el.__proto__ = ExceptionsAddRowListItem.prototype; 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) el.decorate(); 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return el; 4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExceptionsAddRowListItem.prototype = { 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) __proto__: ExceptionsListItem.prototype, 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) decorate: function() { 4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExceptionsListItem.prototype.decorate.call(this); 4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.input.placeholder = 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) loadTimeData.getString('addNewExceptionInstructions'); 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Do we always want a default of allow? 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.setting = 'allow'; 4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Clear the <input> and let the placeholder text show again. 4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) resetInput: function() { 4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.input.value = ''; 4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** @override */ 4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) get hasBeenEdited() { 4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return this.input.value != ''; 4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Editing is complete; update the model. As long as the pattern isn't 4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * empty, we'll just add it. 4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} newPattern The pattern that the user entered. 4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} newSetting The setting the user chose. 4455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) finishEdit: function(newPattern, newSetting) { 4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.resetInput(); 4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome.send('setException', 4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) [this.contentType, this.mode, newPattern, newSetting]); 4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Creates a new exceptions list. 4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @constructor 4571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @extends {options.InlineEditableItemList} 4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var ExceptionsList = cr.ui.define('list'); 4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExceptionsList.prototype = { 4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) __proto__: InlineEditableItemList.prototype, 4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Called when an element is decorated as a list. 4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) decorate: function() { 4685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InlineEditableItemList.prototype.decorate.call(this); 4695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.classList.add('settings-list'); 4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (var parentNode = this.parentNode; parentNode; 4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) parentNode = parentNode.parentNode) { 4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (parentNode.hasAttribute('contentType')) { 4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.contentType = parentNode.getAttribute('contentType'); 4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.mode = this.getAttribute('mode'); 4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Whether the exceptions in this list allow an 'Ask every time' option. 4832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) this.enableAskOption = this.contentType == 'plugins'; 4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.autoExpands = true; 4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.reset(); 4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Creates an item to go in the list. 4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {Object} entry The element from the data model for this row. 4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) createItem: function(entry) { 4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (entry) { 4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return new ExceptionsListItem(this.contentType, 4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.mode, 4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.enableAskOption, 4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry); 5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var addRowItem = new ExceptionsAddRowListItem(this.contentType, 5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.mode, 5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.enableAskOption); 5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) addRowItem.deletable = false; 5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return addRowItem; 5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Sets the exceptions in the js model. 5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {Object} entries A list of dictionaries of values, each dictionary 5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * represents an exception. 5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setExceptions: function(entries) { 5165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var deleteCount = this.dataModel.length; 5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (this.isEditable()) { 5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // We don't want to remove the Add New Exception row. 5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deleteCount = deleteCount - 1; 5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var args = [0, deleteCount]; 5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) args.push.apply(args, entries); 5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.dataModel.splice.apply(this.dataModel, args); 5265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The browser has finished checking a pattern for validity. Update the list 5305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * item to reflect this. 5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} pattern The pattern. 5331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @param {boolean} valid Whether said pattern is valid in the context of a 5345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * content exception setting. 5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) patternValidityCheckComplete: function(pattern, valid) { 5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var listItems = this.items; 5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (var i = 0; i < listItems.length; i++) { 5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var listItem = listItems[i]; 5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Don't do anything for messages for the item if it is not the intended 5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // recipient, or if the response is stale (i.e. the input value has 5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // changed since we sent the request to analyze it). 5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (pattern == listItem.input.value) 5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) listItem.setPatternValid(valid); 5455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 5475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns whether the rows are editable in this list. 5505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 5515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) isEditable: function() { 5525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Exceptions of the following lists are not editable for now. 5535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return !(this.contentType == 'notifications' || 5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.contentType == 'location' || 5555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.contentType == 'fullscreen' || 55623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) this.contentType == 'media-stream' || 55723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) this.contentType == 'zoomlevels'); 5585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Removes all exceptions from the js model. 5625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) reset: function() { 5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (this.isEditable()) { 5655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The null creates the Add New Exception row. 5665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.dataModel = new ArrayDataModel([null]); 5675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.dataModel = new ArrayDataModel([]); 5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 5715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** @override */ 5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deleteItemAtIndex: function(index) { 5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var listItem = this.getListItemByIndex(index); 5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!listItem.deletable) 5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var dataItem = listItem.dataItem; 5791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci chrome.send('removeException', [listItem.contentType, 5801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci listItem.mode, 5811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci dataItem.origin, 5821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci dataItem.embeddingOrigin]); 5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) var Page = cr.ui.pageManager.Page; 5875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) var PageManager = cr.ui.pageManager.PageManager; 5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Encapsulated handling of content settings list subpage. 5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @constructor 5931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @extends {cr.ui.pageManager.Page} 5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) function ContentSettingsExceptionsArea() { 5965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Page.call(this, 'contentExceptions', 5975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) loadTimeData.getString('contentSettingsPageTabTitle'), 5985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'content-settings-exceptions-area'); 5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cr.addSingletonGetter(ContentSettingsExceptionsArea); 6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentSettingsExceptionsArea.prototype = { 6045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __proto__: Page.prototype, 6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /** @override */ 6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) initializePage: function() { 6085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Page.prototype.initializePage.call(this); 6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var exceptionsLists = this.pageDiv.querySelectorAll('list'); 6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (var i = 0; i < exceptionsLists.length; i++) { 6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) options.contentSettings.ExceptionsList.decorate(exceptionsLists[i]); 6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentSettingsExceptionsArea.hideOTRLists(false); 6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If the user types in the URL without a hash, show just cookies. 6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.showList('cookies'); 6195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $('content-settings-exceptions-overlay-confirm').onclick = 6215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PageManager.closeOverlay.bind(PageManager); 6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 6255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Shows one list and hides all others. 6265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} type The content type. 6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) showList: function(type) { 630cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Update the title for the type that was shown. 631cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) this.title = loadTimeData.getString(type + 'TabTitle'); 632cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var header = this.pageDiv.querySelector('h1'); 6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) header.textContent = loadTimeData.getString(type + '_header'); 6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var divs = this.pageDiv.querySelectorAll('div[contentType]'); 6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (var i = 0; i < divs.length; i++) { 6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (divs[i].getAttribute('contentType') == type) 6395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) divs[i].hidden = false; 6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) divs[i].hidden = true; 6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 6442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) var mediaHeader = this.pageDiv.querySelector('.media-header'); 6452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mediaHeader.hidden = type != 'media-stream'; 64623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 64723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) $('exception-behavior-column').hidden = type == 'zoomlevels'; 64823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) $('exception-zoom-column').hidden = type != 'zoomlevels'; 6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 6505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 6525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Called after the page has been shown. Show the content type for the 6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * location's hash. 6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 6555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) didShowPage: function() { 6561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (this.hash) 6571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this.showList(this.hash.slice(1)); 6585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 6595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 6625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Called when the last incognito window is closed. 6635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentSettingsExceptionsArea.OTRProfileDestroyed = function() { 6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.hideOTRLists(true); 6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 6675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Hides the incognito exceptions lists and optionally clears them as well. 6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {boolean} clear Whether to clear the lists. 6715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 6725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentSettingsExceptionsArea.hideOTRLists = function(clear) { 6735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var otrLists = document.querySelectorAll('list[mode=otr]'); 6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (var i = 0; i < otrLists.length; i++) { 6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) otrLists[i].parentNode.hidden = true; 6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (clear) 6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) otrLists[i].reset(); 6795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return { 6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExceptionsListItem: ExceptionsListItem, 6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExceptionsAddRowListItem: ExceptionsAddRowListItem, 6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExceptionsList: ExceptionsList, 6865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentSettingsExceptionsArea: ContentSettingsExceptionsArea, 6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}); 689