| OLD | NEW |
| (Empty) |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 cr.define('options.WebsiteSettings', function() { | |
| 6 /** @const */ var Page = cr.ui.pageManager.Page; | |
| 7 | |
| 8 ///////////////////////////////////////////////////////////////////////////// | |
| 9 // WebsiteSettingsEditor class: | |
| 10 | |
| 11 /** | |
| 12 * Encapsulated handling of the website settings editor page. | |
| 13 * @constructor | |
| 14 * @extends {cr.ui.pageManager.Page} | |
| 15 */ | |
| 16 function WebsiteSettingsEditor() { | |
| 17 Page.call(this, 'websiteEdit', | |
| 18 loadTimeData.getString('websitesOptionsPageTabTitle'), | |
| 19 'website-settings-edit-page'); | |
| 20 this.permissions = ['geolocation', 'notifications', 'media-stream', | |
| 21 'cookies', 'multiple-automatic-downloads', 'images', | |
| 22 'plugins', 'popups', 'javascript']; | |
| 23 this.permissionsLookup = { | |
| 24 'geolocation': 'Location', | |
| 25 'notifications': 'Notifications', | |
| 26 'media-stream': 'MediaStream', | |
| 27 'cookies': 'Cookies', | |
| 28 'multiple-automatic-downloads': 'Downloads', | |
| 29 'images': 'Images', | |
| 30 'plugins': 'Plugins', | |
| 31 'popups': 'Popups', | |
| 32 'javascript': 'Javascript' | |
| 33 }; | |
| 34 } | |
| 35 | |
| 36 cr.addSingletonGetter(WebsiteSettingsEditor); | |
| 37 | |
| 38 WebsiteSettingsEditor.prototype = { | |
| 39 __proto__: Page.prototype, | |
| 40 | |
| 41 | |
| 42 /** @override */ | |
| 43 initializePage: function() { | |
| 44 Page.prototype.initializePage.call(this); | |
| 45 | |
| 46 $('website-settings-storage-delete-button').onclick = function(event) { | |
| 47 chrome.send('deleteLocalStorage'); | |
| 48 }; | |
| 49 | |
| 50 $('website-settings-battery-stop-button').onclick = function(event) { | |
| 51 chrome.send('stopOrigin'); | |
| 52 }; | |
| 53 | |
| 54 $('websiteSettingsEditorCancelButton').onclick = | |
| 55 PageManager.closeOverlay.bind(PageManager); | |
| 56 | |
| 57 $('websiteSettingsEditorDoneButton').onclick = function(event) { | |
| 58 WebsiteSettingsEditor.getInstance().updatePermissions(); | |
| 59 PageManager.closeOverlay.bind(PageManager)(); | |
| 60 }; | |
| 61 | |
| 62 var permissionList = | |
| 63 this.pageDiv.querySelector('.origin-permission-list'); | |
| 64 for (var key in this.permissions) { | |
| 65 permissionList.appendChild( | |
| 66 this.makePermissionOption_(this.permissions[key])); | |
| 67 } | |
| 68 }, | |
| 69 | |
| 70 /** | |
| 71 * Populates the page with the proper information for a given URL. | |
| 72 * @param {string} url The URL of the page. | |
| 73 * @private | |
| 74 */ | |
| 75 populatePage: function(url) { | |
| 76 this.url = url; | |
| 77 | |
| 78 var titleEl = $('website-title'); | |
| 79 titleEl.textContent = url; | |
| 80 titleEl.style.backgroundImage = getFaviconImageSet(url); | |
| 81 | |
| 82 chrome.send('getOriginInfo', [url]); | |
| 83 }, | |
| 84 | |
| 85 /** | |
| 86 * Populates and displays the page with given origin information. | |
| 87 * @param {string} localStorage A string describing the local storage use. | |
| 88 * @param {string} batteryUsage A string describing the battery use. | |
| 89 * @param {Object} permissions A dictionary of permissions to their | |
| 90 * available and current settings, and if it is editable. | |
| 91 * @param {boolean} showPage If the page should raised. | |
| 92 * @private | |
| 93 */ | |
| 94 populateOrigin_: function(localStorage, batteryUsage, permissions, | |
| 95 showPage) { | |
| 96 $('local-storage-title').textContent = localStorage; | |
| 97 $('battery-title').textContent = batteryUsage; | |
| 98 for (var key in permissions) { | |
| 99 var selector = $(key + '-select-option'); | |
| 100 | |
| 101 var options = permissions[key].options; | |
| 102 selector.options.length = 0; | |
| 103 for (var option in options) { | |
| 104 selector.options[selector.options.length] = | |
| 105 new Option(loadTimeData.getString(options[option] + 'Exception'), | |
| 106 options[option]); | |
| 107 } | |
| 108 | |
| 109 selector.value = permissions[key].setting; | |
| 110 selector.originalValue = permissions[key].setting; | |
| 111 selector.disabled = !permissions[key].editable; | |
| 112 } | |
| 113 if (showPage) | |
| 114 PageManager.showPageByName('websiteEdit', false); | |
| 115 }, | |
| 116 | |
| 117 updatePermissions: function() { | |
| 118 for (var key in this.permissions) { | |
| 119 var selection = $(this.permissions[key] + '-select-option'); | |
| 120 if (selection.value != selection.originalValue) { | |
| 121 chrome.send('setOriginPermission', | |
| 122 [this.permissions[key], selection.value]); | |
| 123 } | |
| 124 } | |
| 125 }, | |
| 126 | |
| 127 /** | |
| 128 * Populates the origin permission list with the different usable | |
| 129 * permissions. | |
| 130 * @param {string} permissionName A string with the permission name. | |
| 131 * @return {Element} The element with the usable permission setting. | |
| 132 */ | |
| 133 makePermissionOption_: function(permissionName) { | |
| 134 var permissionOption = cr.doc.createElement('div'); | |
| 135 permissionOption.className = 'permission-option'; | |
| 136 | |
| 137 var permissionNameSpan = cr.doc.createElement('span'); | |
| 138 permissionNameSpan.className = 'permission-name'; | |
| 139 permissionNameSpan.textContent = loadTimeData.getString('websites' + | |
| 140 this.permissionsLookup[permissionName] + 'Description'); | |
| 141 permissionOption.appendChild(permissionNameSpan); | |
| 142 | |
| 143 var permissionSelector = cr.doc.createElement('select'); | |
| 144 permissionSelector.setAttribute('id', permissionName + '-select-option'); | |
| 145 permissionSelector.className = 'weaktrl permission-selection-option'; | |
| 146 permissionOption.appendChild(permissionSelector); | |
| 147 return permissionOption; | |
| 148 }, | |
| 149 }; | |
| 150 | |
| 151 WebsiteSettingsEditor.populateOrigin = function(localStorage, batteryUsage, | |
| 152 permissions, showPage) { | |
| 153 WebsiteSettingsEditor.getInstance().populateOrigin_(localStorage, | |
| 154 batteryUsage, | |
| 155 permissions, | |
| 156 showPage); | |
| 157 }; | |
| 158 | |
| 159 WebsiteSettingsEditor.showEditPage = function(url) { | |
| 160 WebsiteSettingsEditor.getInstance().populatePage(url); | |
| 161 }; | |
| 162 | |
| 163 // Export | |
| 164 return { | |
| 165 WebsiteSettingsEditor: WebsiteSettingsEditor | |
| 166 }; | |
| 167 | |
| 168 }); | |
| OLD | NEW |