Index: chrome/browser/resources/plugins.js |
diff --git a/chrome/browser/resources/plugins.js b/chrome/browser/resources/plugins.js |
deleted file mode 100644 |
index f57f1332130728c4b0e4b325b782d8c1aa28d23f..0000000000000000000000000000000000000000 |
--- a/chrome/browser/resources/plugins.js |
+++ /dev/null |
@@ -1,289 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-/** |
- * Takes the |pluginsData| input argument which represents data about the |
- * currently installed/running plugins and populates the html jstemplate with |
- * that data. |
- * @param {Object} pluginsData Detailed info about installed plugins. Same |
- * expected format as returnPluginsData(). |
- */ |
-function renderTemplate(pluginsData) { |
- // This is the javascript code that processes the template: |
- var input = new JsEvalContext(pluginsData); |
- var output = $('pluginTemplate'); |
- jstProcess(input, output); |
-} |
- |
-// Keeps track of whether details have been made visible (expanded) or not. |
-var tmiModeExpanded = false; |
- |
-/** |
- * @param {boolean} showDetails |
- */ |
-function loadShowDetailsFromPrefs(showDetails) { |
- tmiModeExpanded = showDetails; |
- // TODO(dpapad): Use setAttribute()/removeAttribute() with 'hidden' instead of |
- // style.display. |
- $('collapse').style.display = showDetails ? 'inline' : 'none'; |
- $('expand').style.display = showDetails ? 'none' : 'inline'; |
- document.body.className = showDetails ? 'show-in-tmi-mode' : 'hide-tmi-mode'; |
-} |
- |
-/** |
- * Called by the web_ui_ to re-populate the page with data representing the |
- * current state of installed plugins. |
- * @param {Object} pluginsData Detailed info about installed plugins. The |
- * template expects each plugin's format to match the following structure to |
- * correctly populate the page: |
- * { |
- * plugins: [ |
- * { |
- * name: 'Group Name', |
- * description: 'description', |
- * version: 'version', |
- * update_url: 'http://update/', |
- * critical: true, |
- * enabled_mode: 'enabledByUser', |
- * id: 'plugin-name', |
- * always_allowed: false, |
- * plugin_files: [ |
- * { |
- * path: '/foo/bar/baz/MyPlugin.plugin', |
- * name: 'MyPlugin', |
- * version: '1.2,3' |
- * description: 'My plugin', |
- * type: 'BROWSER PLUGIN', |
- * mime_types: [ |
- * { |
- * description: 'Foo Media', |
- * file_extensions: ['pdf'], |
- * mime_type: 'application/x-my-foo' |
- * }, |
- * { |
- * description: 'Bar Stuff', |
- * file_extensions: ['bar', 'baz'], |
- * mime_type: 'application/my-bar' |
- * } |
- * ], |
- * enabled_mode: 'enabledByUser', |
- * }, |
- * { |
- * path: '/tmp/MyFirst.plugin', |
- * name: 'MyFirstPlugin', |
- * version: '3.14r15926', |
- * description: 'My first plugin', |
- * type: 'BROWSER PLUGIN', |
- * mime_types: [ |
- * { |
- * description: 'New Media Type', |
- * file_extensions: ['mfp'], |
- * mime_type: 'application/x-my-first' |
- * }, |
- * ], |
- * enabled_mode: 'disabledByUser', |
- * }, |
- * ], |
- * }, |
- * ], |
- * } |
- */ |
-function returnPluginsData(pluginsData) { |
- var bodyContainer = $('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('show-in-tmi-mode'); |
- for (var i = 0; i < slidables.length; i++) |
- slidables[i].style.height = 'auto'; |
- |
- renderTemplate(pluginsData); |
- |
- // Add handlers to dynamically created HTML elements. |
- var checkboxes = document.getElementsByClassName('always-allow'); |
- for (var i = 0; i < checkboxes.length; i++) { |
- checkboxes[i].onclick = function() { |
- handleSetPluginAlwaysAllowed(this); |
- }; |
- } |
- |
- if (cr.isChromeOS) { |
- // Disable some controls for Guest in ChromeOS. |
- uiAccountTweaks.UIAccountTweaks.applyGuestSessionVisibility(document); |
- // Disable some controls for Public session in ChromeOS. |
- uiAccountTweaks.UIAccountTweaks.applyPublicSessionVisibility(document); |
- } |
- |
- // 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('show-in-tmi-mode'); |
- 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. |
- $('collapse').style.display = |
- tmiModeExpanded ? 'inline' : 'none'; |
- $('expand').style.display = |
- tmiModeExpanded ? 'none' : 'inline'; |
- bodyContainer.style.visibility = 'visible'; |
- body.className = tmiModeExpanded ? |
- 'show-tmi-mode-initial' : 'hide-tmi-mode-initial'; |
-} |
- |
-/* |
- * Toggles visibility of details. |
- */ |
-function toggleTmiMode() { |
- tmiModeExpanded = !tmiModeExpanded; |
- |
- $('collapse').style.display = |
- tmiModeExpanded ? 'inline' : 'none'; |
- $('expand').style.display = |
- tmiModeExpanded ? 'none' : 'inline'; |
- |
- document.body.className = |
- tmiModeExpanded ? 'show-tmi-mode' : 'hide-tmi-mode'; |
- |
- browserProxy.saveShowDetailsToPrefs(tmiModeExpanded); |
-} |
- |
-function handleSetPluginAlwaysAllowed(el) { |
- browserProxy.setPluginAlwaysAllowed(el.identifier, el.checked); |
-} |
- |
-/** |
- * @param {Object} plugin An object containing the information about a plugin. |
- * See returnPluginsData() for the format of this object. |
- * @return {boolean} Whether the plugin's version should be displayed. |
- */ |
-function shouldDisplayPluginVersion(plugin) { |
- return !!plugin.version && plugin.version != '0'; |
-} |
- |
-/** |
- * @param {Object} plugin An object containing the information about a plugin. |
- * See returnPluginsData() for the format of this object. |
- * @return {boolean} Whether the 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; |
-} |
- |
-/** |
- * @param {Object} plugin An object containing the information about a plugin. |
- * See returnPluginsData() for the format of this object. |
- * @return {boolean} Whether the plugin is enabled. |
- */ |
-function isPluginEnabled(plugin) { |
- return plugin.enabled_mode == 'enabledByUser' || |
- plugin.enabled_mode == 'enabledByPolicy'; |
-} |
- |
-/** |
- * @param {Object} plugin An object containing the information about a plugin. |
- * See returnPluginsData() for the format of this object. |
- * @return {boolean} Whether the plugin is fully trusted. |
- */ |
-function isPluginTrusted(plugin) { |
- return plugin.trusted == true; |
-} |
- |
-/** |
- * @param {Object} plugin An object containing the information about a plugin. |
- * See returnPluginsData() for the format of this object. |
- * @return {boolean} Whether the plugin is marked click to play by policy. |
- * |
- * This would normally be set by setting the policy DefaultPluginsSetting to 3. |
- */ |
-function isPluginPolicyClickToPlay(plugin) { |
- return plugin.policy_click_to_play == true; |
-} |
- |
-// NOTE: Need to keep a global reference to the |pageImpl| such that it is not |
-// garbage collected, which causes the pipe to close and future calls from C++ |
-// to JS to get dropped. This also allows tests to make direct calls on it. |
-var pageImpl = null; |
-var browserProxy = null; |
- |
-function initializeProxies() { |
- return importModules([ |
- 'mojo/public/js/bindings', |
- 'chrome/browser/ui/webui/plugins/plugins.mojom', |
- 'content/public/renderer/frame_interfaces', |
- ]).then(function(modules) { |
- var bindings = modules[0]; |
- var pluginsMojom = modules[1]; |
- var frameInterfaces = modules[2]; |
- |
- browserProxy = new pluginsMojom.PluginsPageHandlerPtr( |
- frameInterfaces.getInterface(pluginsMojom.PluginsPageHandler.name)); |
- |
- /** @constructor */ |
- var PluginsPageImpl = function() { |
- this.binding = new bindings.Binding(pluginsMojom.PluginsPage, this); |
- }; |
- |
- PluginsPageImpl.prototype = { |
- /** @override */ |
- onPluginsUpdated: function(plugins) { |
- returnPluginsData({plugins: plugins}); |
- }, |
- }; |
- pageImpl = new PluginsPageImpl(); |
- browserProxy.setClientPage(pageImpl.binding.createInterfacePtrAndBind()); |
- }); |
-} |
- |
-/** |
- * Overriden by tests to give them a chance to setup a fake Mojo browser proxy |
- * before any other code executes. |
- * @return {!Promise} A promise firing once necessary setup has been completed. |
- */ |
-var setupFn = setupFn || function() { return Promise.resolve(); }; |
- |
-function main() { |
- setupFn().then(function() { |
- // Add handlers to static HTML elements. |
- $('collapse').onclick = toggleTmiMode; |
- $('expand').onclick = toggleTmiMode; |
- $('details-link').onclick = toggleTmiMode; |
- return initializeProxies(); |
- }).then(function() { |
- return browserProxy.getShowDetails(); |
- }).then(function(response) { |
- // Set the |tmiModeExpanded| first otherwise the UI flickers when |
- // returnPlignsData executes. |
- loadShowDetailsFromPrefs(response.show_details); |
- return browserProxy.getPluginsData(); |
- }).then(function(pluginsData) { |
- returnPluginsData(pluginsData); |
- |
- // Unfortunately, we don't have notifications for plugin (list) status |
- // changes (yet), so in the meanwhile just update regularly. |
- setInterval(function() { |
- browserProxy.getPluginsData().then(returnPluginsData); |
- }, 30000); |
- }); |
-} |
- |
-document.addEventListener('DOMContentLoaded', main); |