| 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.exportPath('options'); | 5 cr.exportPath('options'); |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * @typedef {{appId: string, | 8 * @typedef {{appId: string, |
| 9 * appName: (string|undefined), | 9 * appName: (string|undefined), |
| 10 * embeddingOrigin: (string|undefined), | 10 * embeddingOrigin: (string|undefined), |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 ////////////////////////////////////////////////////////////////////////////// | 22 ////////////////////////////////////////////////////////////////////////////// |
| 23 // ContentSettings class: | 23 // ContentSettings class: |
| 24 | 24 |
| 25 /** | 25 /** |
| 26 * Encapsulated handling of content settings page. | 26 * Encapsulated handling of content settings page. |
| 27 * @constructor | 27 * @constructor |
| 28 * @extends {cr.ui.pageManager.Page} | 28 * @extends {cr.ui.pageManager.Page} |
| 29 */ | 29 */ |
| 30 function ContentSettings() { | 30 function ContentSettings() { |
| 31 this.activeNavTab = null; | 31 this.activeNavTab = null; |
| 32 Page.call(this, 'content', | 32 Page.call( |
| 33 loadTimeData.getString('contentSettingsPageTabTitle'), | 33 this, 'content', loadTimeData.getString('contentSettingsPageTabTitle'), |
| 34 'content-settings-page'); | 34 'content-settings-page'); |
| 35 } | 35 } |
| 36 | 36 |
| 37 cr.addSingletonGetter(ContentSettings); | 37 cr.addSingletonGetter(ContentSettings); |
| 38 | 38 |
| 39 ContentSettings.prototype = { | 39 ContentSettings.prototype = { |
| 40 __proto__: Page.prototype, | 40 __proto__: Page.prototype, |
| 41 | 41 |
| 42 /** @override */ | 42 /** @override */ |
| 43 initializePage: function() { | 43 initializePage: function() { |
| 44 Page.prototype.initializePage.call(this); | 44 Page.prototype.initializePage.call(this); |
| 45 | 45 |
| 46 var exceptionsButtons = | 46 var exceptionsButtons = |
| 47 this.pageDiv.querySelectorAll('.exceptions-list-button'); | 47 this.pageDiv.querySelectorAll('.exceptions-list-button'); |
| 48 for (var i = 0; i < exceptionsButtons.length; i++) { | 48 for (var i = 0; i < exceptionsButtons.length; i++) { |
| 49 exceptionsButtons[i].onclick = function(event) { | 49 exceptionsButtons[i].onclick = function(event) { |
| 50 var hash = event.currentTarget.getAttribute('contentType'); | 50 var hash = event.currentTarget.getAttribute('contentType'); |
| 51 PageManager.showPageByName('contentExceptions', true, | 51 PageManager.showPageByName( |
| 52 {hash: '#' + hash}); | 52 'contentExceptions', true, {hash: '#' + hash}); |
| 53 }; | 53 }; |
| 54 } | 54 } |
| 55 | 55 |
| 56 var manageHandlersButton = $('manage-handlers-button'); | 56 var manageHandlersButton = $('manage-handlers-button'); |
| 57 if (manageHandlersButton) { | 57 if (manageHandlersButton) { |
| 58 manageHandlersButton.onclick = function(event) { | 58 manageHandlersButton.onclick = function(event) { |
| 59 PageManager.showPageByName('handlers'); | 59 PageManager.showPageByName('handlers'); |
| 60 }; | 60 }; |
| 61 } | 61 } |
| 62 | 62 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 75 }; | 75 }; |
| 76 | 76 |
| 77 $('content-settings-overlay-confirm').onclick = | 77 $('content-settings-overlay-confirm').onclick = |
| 78 PageManager.closeOverlay.bind(PageManager); | 78 PageManager.closeOverlay.bind(PageManager); |
| 79 | 79 |
| 80 $('media-pepper-flash-default-mic').hidden = true; | 80 $('media-pepper-flash-default-mic').hidden = true; |
| 81 $('media-pepper-flash-default-camera').hidden = true; | 81 $('media-pepper-flash-default-camera').hidden = true; |
| 82 $('media-pepper-flash-exceptions-mic').hidden = true; | 82 $('media-pepper-flash-exceptions-mic').hidden = true; |
| 83 $('media-pepper-flash-exceptions-camera').hidden = true; | 83 $('media-pepper-flash-exceptions-camera').hidden = true; |
| 84 | 84 |
| 85 $('media-select-mic').addEventListener('change', | 85 $('media-select-mic') |
| 86 ContentSettings.setDefaultMicrophone_); | 86 .addEventListener('change', ContentSettings.setDefaultMicrophone_); |
| 87 $('media-select-camera').addEventListener('change', | 87 $('media-select-camera') |
| 88 ContentSettings.setDefaultCamera_); | 88 .addEventListener('change', ContentSettings.setDefaultCamera_); |
| 89 }, | 89 }, |
| 90 }; | 90 }; |
| 91 | 91 |
| 92 ContentSettings.updateHandlersEnabledRadios = function(enabled) { | 92 ContentSettings.updateHandlersEnabledRadios = function(enabled) { |
| 93 var selector = '#content-settings-page input[type=radio][value=' + | 93 var selector = '#content-settings-page input[type=radio][value=' + |
| 94 (enabled ? 'allow' : 'block') + '].handler-radio'; | 94 (enabled ? 'allow' : 'block') + '].handler-radio'; |
| 95 document.querySelector(selector).checked = true; | 95 document.querySelector(selector).checked = true; |
| 96 }; | 96 }; |
| 97 | 97 |
| 98 /** | 98 /** |
| 99 * Sets the values for all the content settings radios and labels. | 99 * Sets the values for all the content settings radios and labels. |
| 100 * @param {Object<{managedBy: string, value: string}>} dict A mapping from | 100 * @param {Object<{managedBy: string, value: string}>} dict A mapping from |
| 101 * radio groups to the checked value for that group. | 101 * radio groups to the checked value for that group. |
| 102 */ | 102 */ |
| 103 ContentSettings.setContentFilterSettingsValue = function(dict) { | 103 ContentSettings.setContentFilterSettingsValue = function(dict) { |
| 104 for (var group in dict) { | 104 for (var group in dict) { |
| 105 var managedBy = dict[group].managedBy; | 105 var managedBy = dict[group].managedBy; |
| 106 var controlledBy = managedBy == 'policy' || managedBy == 'extension' ? | 106 var controlledBy = |
| 107 managedBy : null; | 107 managedBy == 'policy' || managedBy == 'extension' ? managedBy : null; |
| 108 document.querySelector('input[type=radio][name=' + group + '][value=' + | 108 document |
| 109 dict[group].value + ']').checked = true; | 109 .querySelector( |
| 110 var radios = document.querySelectorAll('input[type=radio][name=' + | 110 'input[type=radio][name=' + group + |
| 111 group + ']'); | 111 '][value=' + dict[group].value + ']') |
| 112 .checked = true; |
| 113 var radios = |
| 114 document.querySelectorAll('input[type=radio][name=' + group + ']'); |
| 112 for (var i = 0, len = radios.length; i < len; i++) { | 115 for (var i = 0, len = radios.length; i < len; i++) { |
| 113 radios[i].disabled = (managedBy != 'default'); | 116 radios[i].disabled = (managedBy != 'default'); |
| 114 radios[i].controlledBy = controlledBy; | 117 radios[i].controlledBy = controlledBy; |
| 115 } | 118 } |
| 116 var indicators = document.querySelectorAll( | 119 var indicators = document.querySelectorAll( |
| 117 'span.controlled-setting-indicator[content-setting=' + group + ']'); | 120 'span.controlled-setting-indicator[content-setting=' + group + ']'); |
| 118 if (indicators.length == 0) | 121 if (indicators.length == 0) |
| 119 continue; | 122 continue; |
| 120 // Create a synthetic pref change event decorated as | 123 // Create a synthetic pref change event decorated as |
| 121 // CoreOptionsHandler::CreateValueForPref() does. | 124 // CoreOptionsHandler::CreateValueForPref() does. |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 162 | 165 |
| 163 /** | 166 /** |
| 164 * @param {string} type The type of exceptions (e.g. "location") to get. | 167 * @param {string} type The type of exceptions (e.g. "location") to get. |
| 165 * @param {string} mode The mode of the desired exceptions list (e.g. otr). | 168 * @param {string} mode The mode of the desired exceptions list (e.g. otr). |
| 166 * @return {?options.contentSettings.ExceptionsList} The corresponding | 169 * @return {?options.contentSettings.ExceptionsList} The corresponding |
| 167 * exceptions list or null. | 170 * exceptions list or null. |
| 168 */ | 171 */ |
| 169 ContentSettings.getExceptionsList = function(type, mode) { | 172 ContentSettings.getExceptionsList = function(type, mode) { |
| 170 var exceptionsList = document.querySelector( | 173 var exceptionsList = document.querySelector( |
| 171 'div[contentType=' + type + '] list[mode=' + mode + ']'); | 174 'div[contentType=' + type + '] list[mode=' + mode + ']'); |
| 172 return !exceptionsList ? null : | 175 return !exceptionsList ? |
| 173 assertInstanceof(exceptionsList, | 176 null : |
| 174 options.contentSettings.ExceptionsList); | 177 assertInstanceof( |
| 178 exceptionsList, options.contentSettings.ExceptionsList); |
| 175 }; | 179 }; |
| 176 | 180 |
| 177 /** | 181 /** |
| 178 * The browser's response to a request to check the validity of a given URL | 182 * The browser's response to a request to check the validity of a given URL |
| 179 * pattern. | 183 * pattern. |
| 180 * @param {string} type The content type. | 184 * @param {string} type The content type. |
| 181 * @param {string} mode The browser mode. | 185 * @param {string} mode The browser mode. |
| 182 * @param {string} pattern The pattern. | 186 * @param {string} pattern The pattern. |
| 183 * @param {boolean} valid Whether said pattern is valid in the context of | 187 * @param {boolean} valid Whether said pattern is valid in the context of |
| 184 * a content exception setting. | 188 * a content exception setting. |
| 185 */ | 189 */ |
| 186 ContentSettings.patternValidityCheckComplete = | 190 ContentSettings.patternValidityCheckComplete = function( |
| 187 function(type, mode, pattern, valid) { | 191 type, mode, pattern, valid) { |
| 188 this.getExceptionsList(type, mode).patternValidityCheckComplete(pattern, | 192 this.getExceptionsList(type, mode) |
| 189 valid); | 193 .patternValidityCheckComplete(pattern, valid); |
| 190 }; | 194 }; |
| 191 | 195 |
| 192 /** | 196 /** |
| 193 * Shows/hides the link to the Pepper Flash camera or microphone, | 197 * Shows/hides the link to the Pepper Flash camera or microphone, |
| 194 * default or exceptions settings. | 198 * default or exceptions settings. |
| 195 * Please note that whether the link is actually showed or not is also | 199 * Please note that whether the link is actually showed or not is also |
| 196 * affected by the style class pepper-flash-settings. | 200 * affected by the style class pepper-flash-settings. |
| 197 * @param {string} linkType Can be 'default' or 'exceptions'. | 201 * @param {string} linkType Can be 'default' or 'exceptions'. |
| 198 * @param {string} contentType Can be 'mic' or 'camera'. | 202 * @param {string} contentType Can be 'mic' or 'camera'. |
| 199 * @param {boolean} show Whether to show (or hide) the link. | 203 * @param {boolean} show Whether to show (or hide) the link. |
| 200 */ | 204 */ |
| 201 ContentSettings.showMediaPepperFlashLink = | 205 ContentSettings.showMediaPepperFlashLink = function( |
| 202 function(linkType, contentType, show) { | 206 linkType, contentType, show) { |
| 203 assert(['default', 'exceptions'].indexOf(linkType) >= 0); | 207 assert(['default', 'exceptions'].indexOf(linkType) >= 0); |
| 204 assert(['mic', 'camera'].indexOf(contentType) >= 0); | 208 assert(['mic', 'camera'].indexOf(contentType) >= 0); |
| 205 $('media-pepper-flash-' + linkType + '-' + contentType).hidden = !show; | 209 $('media-pepper-flash-' + linkType + '-' + contentType).hidden = !show; |
| 206 }; | 210 }; |
| 207 | 211 |
| 208 /** | 212 /** |
| 209 * Updates the microphone/camera devices menu with the given entries. | 213 * Updates the microphone/camera devices menu with the given entries. |
| 210 * @param {string} type The device type. | 214 * @param {string} type The device type. |
| 211 * @param {Array} devices List of available devices. | 215 * @param {Array} devices List of available devices. |
| 212 * @param {string} defaultdevice The unique id of the current default device. | 216 * @param {string} defaultdevice The unique id of the current default device. |
| 213 */ | 217 */ |
| 214 ContentSettings.updateDevicesMenu = function(type, devices, defaultdevice) { | 218 ContentSettings.updateDevicesMenu = function(type, devices, defaultdevice) { |
| 215 var deviceSelect = ''; | 219 var deviceSelect = ''; |
| 216 if (type == 'mic') { | 220 if (type == 'mic') { |
| 217 deviceSelect = $('media-select-mic'); | 221 deviceSelect = $('media-select-mic'); |
| 218 } else if (type == 'camera') { | 222 } else if (type == 'camera') { |
| 219 deviceSelect = $('media-select-camera'); | 223 deviceSelect = $('media-select-camera'); |
| 220 } else { | 224 } else { |
| 221 console.error('Unknown device type for <device select> UI element: ' + | 225 console.error( |
| 222 type); | 226 'Unknown device type for <device select> UI element: ' + type); |
| 223 return; | 227 return; |
| 224 } | 228 } |
| 225 | 229 |
| 226 deviceSelect.textContent = ''; | 230 deviceSelect.textContent = ''; |
| 227 | 231 |
| 228 var deviceCount = devices.length; | 232 var deviceCount = devices.length; |
| 229 var defaultIndex = -1; | 233 var defaultIndex = -1; |
| 230 for (var i = 0; i < deviceCount; i++) { | 234 for (var i = 0; i < deviceCount; i++) { |
| 231 var device = devices[i]; | 235 var device = devices[i]; |
| 232 var option = new Option(device.name, device.id); | 236 var option = new Option(device.name, device.id); |
| 233 if (option.value == defaultdevice) | 237 if (option.value == defaultdevice) |
| 234 defaultIndex = i; | 238 defaultIndex = i; |
| 235 deviceSelect.appendChild(option); | 239 deviceSelect.appendChild(option); |
| 236 } | 240 } |
| 237 if (defaultIndex >= 0) | 241 if (defaultIndex >= 0) |
| 238 deviceSelect.selectedIndex = defaultIndex; | 242 deviceSelect.selectedIndex = defaultIndex; |
| 239 }; | 243 }; |
| 240 | 244 |
| 241 /** | 245 /** |
| 242 * Sets the visibility of the microphone/camera devices menu. | 246 * Sets the visibility of the microphone/camera devices menu. |
| 243 * @param {string} type The content settings type name of this device. | 247 * @param {string} type The content settings type name of this device. |
| 244 * @param {boolean} show Whether to show the menu. | 248 * @param {boolean} show Whether to show the menu. |
| 245 */ | 249 */ |
| 246 ContentSettings.setDevicesMenuVisibility = function(type, show) { | 250 ContentSettings.setDevicesMenuVisibility = function(type, show) { |
| 247 assert(type == 'media-stream-mic' || type == 'media-stream-camera'); | 251 assert(type == 'media-stream-mic' || type == 'media-stream-camera'); |
| 248 var deviceSelect = $(type == 'media-stream-mic' ? 'media-select-mic' : | 252 var deviceSelect = |
| 249 'media-select-camera'); | 253 $(type == 'media-stream-mic' ? 'media-select-mic' : |
| 254 'media-select-camera'); |
| 250 deviceSelect.hidden = !show; | 255 deviceSelect.hidden = !show; |
| 251 }; | 256 }; |
| 252 | 257 |
| 253 /** | 258 /** |
| 254 * Enables/disables the protected content exceptions button. | 259 * Enables/disables the protected content exceptions button. |
| 255 * @param {boolean} enable Whether to enable the button. | 260 * @param {boolean} enable Whether to enable the button. |
| 256 */ | 261 */ |
| 257 ContentSettings.enableProtectedContentExceptions = function(enable) { | 262 ContentSettings.enableProtectedContentExceptions = function(enable) { |
| 258 var exceptionsButton = $('protected-content-exceptions'); | 263 var exceptionsButton = $('protected-content-exceptions'); |
| 259 if (exceptionsButton) | 264 if (exceptionsButton) |
| (...skipping 12 matching lines...) Expand all Loading... |
| 272 /** | 277 /** |
| 273 * Set the default camera device based on the popup selection. | 278 * Set the default camera device based on the popup selection. |
| 274 * @private | 279 * @private |
| 275 */ | 280 */ |
| 276 ContentSettings.setDefaultCamera_ = function() { | 281 ContentSettings.setDefaultCamera_ = function() { |
| 277 var deviceSelect = $('media-select-camera'); | 282 var deviceSelect = $('media-select-camera'); |
| 278 chrome.send('setDefaultCaptureDevice', ['camera', deviceSelect.value]); | 283 chrome.send('setDefaultCaptureDevice', ['camera', deviceSelect.value]); |
| 279 }; | 284 }; |
| 280 | 285 |
| 281 // Export | 286 // Export |
| 282 return { | 287 return {ContentSettings: ContentSettings}; |
| 283 ContentSettings: ContentSettings | |
| 284 }; | |
| 285 | 288 |
| 286 }); | 289 }); |
| OLD | NEW |