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

Unified Diff: chrome/browser/resources/plugins.html

Issue 7086003: Apply content-security-policy to chrome://plugins page. This involves (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/browser_resources.grd ('k') | chrome/browser/resources/plugins.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/resources/plugins.html
===================================================================
--- chrome/browser/resources/plugins.html (revision 87333)
+++ chrome/browser/resources/plugins.html (working copy)
@@ -2,6 +2,11 @@
<html i18n-values="dir:textdirection;">
<head>
<meta charset="utf-8">
+<!-- X-WebKit-CSP is our development name for Content-Security-Policy.
+ The 'unsafe-eval' is required for jstemplate_compiled.js.
+ TODO(tsepez) rename when Content-security-policy is done.
+-->
+<meta http-equiv="X-WebKit-CSP" content="object-src 'none'; script-src chrome://resources 'self' 'unsafe-eval'">
<title i18n-content="pluginsTitle"></title>
<style>
body {
@@ -242,230 +247,7 @@
button {
font-size: 104%;
}
-
</style>
-<script>
-
-/**
- * This variable structure is here to document the structure that the template
- * expects to correctly populate the page.
- */
-var pluginDataFormat = {
- 'plugins': [
- {
- 'name': 'Group Name',
- 'description': 'description',
- 'version': 'version',
- 'update_url': 'http://update/',
- 'critical': true,
- 'enabled': true,
- 'plugin_files': [
- {
- 'path': '/blahblah/blahblah/MyCrappyPlugin.plugin',
- 'name': 'MyCrappyPlugin',
- 'version': '1.2.3',
- 'description': 'My crappy plugin',
- 'mimeTypes': [
- { 'description': 'Foo Media',
- 'fileExtensions': [ 'foo' ],
- 'mimeType': 'application/x-my-foo' },
- { 'description': 'Bar Stuff',
- 'fileExtensions': [ 'bar','baz' ],
- 'mimeType': 'application/my-bar' }
- ],
- 'enabledMode': 'enabledByUser'
- },
- {
- 'path': '/tmp/MyFirst.plugin',
- 'name': 'MyFirstPlugin',
- 'version': '3.14r15926',
- 'description': 'My first plugin',
- 'mimeTypes': [
- { 'description': 'New Guy Media',
- 'fileExtensions': [ 'mfp' ],
- 'mimeType': 'application/x-my-first' }
- ],
- 'enabledMode': 'enabledByPolicy'
- },
- {
- 'path': '/foobar/baz/YourGreatPlugin.plugin',
- 'name': 'YourGreatPlugin',
- 'version': '4.5',
- 'description': 'Your great plugin',
- 'mimeTypes': [
- { 'description': 'Baz Stuff',
- 'fileExtensions': [ 'baz' ],
- 'mimeType': 'application/x-your-baz' }
- ],
- 'enabledMode': 'disabledByUser'
- },
- {
- 'path': '/foobiz/bar/HisGreatPlugin.plugin',
- 'name': 'HisGreatPlugin',
- 'version': '1.2',
- 'description': 'His great plugin',
- 'mimeTypes': [
- { 'description': 'More baz Stuff',
- 'fileExtensions': [ 'bor' ],
- 'mimeType': 'application/x-his-bor' }
- ],
- 'enabledMode': 'disabledByPolicy'
- }
- ]
- }
- ]
-};
-
-/**
- * Takes the |pluginsData| input argument which represents data about the
- * currently installed/running plugins and populates the html jstemplate with
- * that data. It expects an object structure like the above.
- * @param {Object} pluginsData Detailed info about installed plugins
- */
-function renderTemplate(pluginsData) {
- // This is the javascript code that processes the template:
- var input = new JsEvalContext(pluginsData);
- var output = document.getElementById('pluginTemplate');
- jstProcess(input, output);
-}
-
-/**
- * Asks the C++ PluginsDOMHandler to get details about the installed plugins and
- * return detailed data about the configuration. The PluginsDOMHandler should
- * reply to returnPluginsData() (below).
- */
-function requestPluginsData() {
- chrome.send('requestPluginsData', []);
- chrome.send('getShowDetails', []);
-}
-
-function loadShowDetailsFromPrefs(show_details) {
- tmiModeExpanded = show_details;
- document.getElementById('collapse').style.display =
- show_details ? 'inline' : 'none';
- document.getElementById('expand').style.display =
- show_details ? 'none' : 'inline';
-
- document.body.className =
- show_details ? 'showTmiMode' : 'hideTmiMode';
-}
-
-/**
- * Asks the C++ PluginsDOMHandler to show the terms of service (about:terms).
- */
-function showTermsOfService() {
- chrome.send('showTermsOfService', []);
-}
-
-/**
- * Called by the web_ui_ to re-populate the page with data representing the
- * current state of installed plugins.
- */
-function returnPluginsData(pluginsData){
- var bodyContainer = document.getElementById('body-container');
- var body = document.body;
-
- // Set all page content to be visible so we can measure heights.
- bodyContainer.style.visibility = 'hidden';
- body.className = '';
- var slidables = document.getElementsByClassName('showInTmiMode');
- for (var i = 0; i < slidables.length; i++)
- slidables[i].style.height = 'auto';
-
- renderTemplate(pluginsData);
-
- // Make sure the left column (with "Description:", "Location:", etc.) is the
- // same size for all plugins.
- var labels = document.getElementsByClassName('plugin-details-label');
- var maxLabelWidth = 0;
- for (var i = 0; i < labels.length; i++)
- labels[i].style.width = 'auto';
- for (var i = 0; i < labels.length; i++)
- maxLabelWidth = Math.max(maxLabelWidth, labels[i].offsetWidth);
- for (var i = 0; i < labels.length; i++)
- labels[i].style.width = maxLabelWidth + 'px';
-
- // Explicitly set the height for each element that wants to be "slid" in and
- // out when the tmiModeExpanded is toggled.
- var slidables = document.getElementsByClassName('showInTmiMode');
- for (var i = 0; i < slidables.length; i++)
- slidables[i].style.height = slidables[i].offsetHeight + 'px';
-
- // Reset visibility of page based on the current tmi mode.
- document.getElementById('collapse').style.display =
- tmiModeExpanded ? 'inline' : 'none';
- document.getElementById('expand').style.display =
- tmiModeExpanded ? 'none' : 'inline';
- bodyContainer.style.visibility = 'visible';
- body.className = tmiModeExpanded ?
- 'showTmiModeInitial' : 'hideTmiModeInitial';
-}
-
-/**
- * Handles a 'enable' or 'disable' button getting clicked.
- */
-function handleEnablePlugin(node, enable, isGroup) {
- // Tell the C++ PluginsDOMHandler to enable/disable the plugin.
- chrome.send('enablePlugin', [String(node.path), String(enable),
- String(isGroup)]);
-}
-
-// Keeps track of whether details have been made visible (expanded) or not.
-var tmiModeExpanded = false;
-
-/*
- * Toggles visibility of details.
- */
-function toggleTmiMode() {
- tmiModeExpanded = !tmiModeExpanded;
-
- document.getElementById('collapse').style.display =
- tmiModeExpanded ? 'inline' : 'none';
- document.getElementById('expand').style.display =
- tmiModeExpanded ? 'none' : 'inline';
-
- document.body.className =
- tmiModeExpanded ? 'showTmiMode' : 'hideTmiMode';
-
- chrome.send('saveShowDetailsToPrefs', [String(tmiModeExpanded)]);
-}
-
-/**
- * Determines whether a plugin's version should be displayed.
- */
-function shouldDisplayPluginVersion(plugin) {
- return !!plugin.version && plugin.version != '0';
-}
-
-/**
- * Determines whether a plugin's description should be displayed.
- */
-function shouldDisplayPluginDescription(plugin) {
- // Only display the description if it's not blank and if it's not just the
- // name, version, or combination thereof.
- return plugin.description &&
- plugin.description != plugin.name &&
- plugin.description != plugin.version &&
- plugin.description != 'Version ' + plugin.version &&
- plugin.description != plugin.name + ' ' + plugin.version;
-}
-
-/**
- * Determines whether a plugin is enabled or not.
- */
-function isPluginEnabled(plugin) {
- return plugin.enabledMode == 'enabledByUser' ||
- plugin.enabledMode == 'enabledByPolicy';
-}
-
-// Unfortunately, we don't have notifications for plugin (list) status changes
-// (yet), so in the meanwhile just update regularly.
-setInterval(requestPluginsData, 30000);
-
-// Get data and have it displayed upon loading.
-document.addEventListener('DOMContentLoaded', requestPluginsData);
-
-</script>
</head>
<body i18n-values=".style.fontFamily:fontfamily;.style.fontSize:fontsize">
<div id="body-container" style="visibility:hidden">
@@ -487,15 +269,14 @@
jscontent="plugins.length"></span>)</span>
</td>
<td width="18">
- <img id="collapse" class="tmi-mode-image"
- style="display:none" onclick="toggleTmiMode();"
+ <img id="collapse" class="tmi-mode-image" style="display:none"
src="shared/images/minus.png">
<img id="expand" class="tmi-mode-image"
- onclick="toggleTmiMode();" src="shared/images/plus.png">
+ src="shared/images/plus.png">
</td>
<td>
<div class="tmi-mode-link">
- <a onclick="toggleTmiMode();" style="cursor: default"
+ <a id="details-link" style="cursor: default"
i18n-content="pluginsDetailsModeLink">DETAILS</a>
</div>
</td>
@@ -578,17 +359,17 @@
i18n-content="pluginEnabledByPolicy">(ENABLED_BY_POLICY)</span>
<span>
<a
+ class="disable-plugin-link"
jsvalues=".path:path"
jsdisplay="enabledMode == 'enabledByUser'"
- onclick="handleEnablePlugin(this, false, false)"
- href="javascript:void(0);"
+ href="#"
i18n-content="disable"
>DISABLE</a>
<a
+ class="enable-plugin-link"
jsvalues=".path:path"
jsdisplay="enabledMode == 'disabledByUser'"
- onclick="handleEnablePlugin(this, true, false)"
- href="javascript:void(0);"
+ href="#"
i18n-content="enable"
>ENABLE</a>
<span
@@ -635,17 +416,17 @@
<div class="plugin-actions">
<span>
<a
+ class="disable-group-link"
jsvalues=".path:name"
jsdisplay="enabledMode == 'enabledByUser'"
- onclick="handleEnablePlugin(this, false, true)"
- href="javascript:void(0);"
+ href="#"
i18n-content="disable"
>DISABLE</a>
<a
+ class="enable-group-link"
jsvalues=".path:name"
jsdisplay="enabledMode == 'disabledByUser'"
- onclick="handleEnablePlugin(this, true, true)"
- href="javascript:void(0);"
+ href="#"
i18n-content="enable"
>ENABLE</a>
<span
@@ -666,5 +447,10 @@
</div>
</div>
</div>
+<script src="chrome://plugins/plugins.js"></script>
+<script src="chrome://plugins/strings.js"></script>
+<script src="chrome://resources/js/i18n_template.js"></script>
+<script src="chrome://resources/js/i18n_process.js"></script>
+<script src="chrome://resources/js/jstemplate_compiled.js"></script>
</body>
</html>
« no previous file with comments | « chrome/browser/browser_resources.grd ('k') | chrome/browser/resources/plugins.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698