From 207e87f60f9543599a7452e01e1a8a04fa474a00 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Sun, 30 Nov 2014 02:52:50 -0800 Subject: [PATCH] GUAC-932: Remove legacy JavaScript source. --- guacamole/pom.xml | 2 - guacamole/src/main/webapp/scripts/history.js | 212 ------------------- guacamole/src/main/webapp/scripts/session.js | 171 --------------- 3 files changed, 385 deletions(-) delete mode 100644 guacamole/src/main/webapp/scripts/history.js delete mode 100644 guacamole/src/main/webapp/scripts/session.js diff --git a/guacamole/pom.xml b/guacamole/pom.xml index c07e8b308..351d5b257 100644 --- a/guacamole/pom.xml +++ b/guacamole/pom.xml @@ -142,8 +142,6 @@ lib/messageformat/messageformat.js license.txt guacamole-common-js/all.js - scripts/session.js - scripts/history.js diff --git a/guacamole/src/main/webapp/scripts/history.js b/guacamole/src/main/webapp/scripts/history.js deleted file mode 100644 index 5165e8df0..000000000 --- a/guacamole/src/main/webapp/scripts/history.js +++ /dev/null @@ -1,212 +0,0 @@ -/* - * Copyright (C) 2013 Glyptodon LLC - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -/** - * Set of thumbnails for each connection, indexed by ID. - */ -GuacamoleHistory = new (function() { - - /** - * Reference to this GuacamoleHistory. - */ - var guac_history = this; - - /** - * The number of entries to allow before removing old entries based on the - * cutoff. - */ - var IDEAL_LENGTH = 6; - - /** - * The maximum age of a history entry before it is removed, in - * milliseconds. - */ - var CUTOFF_AGE = 900000; - - var history = {}; - - function truncate() { - - // Build list of entries - var entries = []; - for (var old_id in history) - entries.push(history[old_id]); - - // Avoid history growth beyond defined number of entries - if (entries.length > IDEAL_LENGTH) { - - // Sort list - entries.sort(GuacamoleHistory.Entry.compare); - - // Remove entries until length is ideal or all are recent - var now = new Date().getTime(); - while (entries.length > IDEAL_LENGTH - && now - entries[0].accessed > CUTOFF_AGE) { - - // Remove entry - var removed = entries.shift(); - delete history[removed.id]; - - } - - } - - } - - /** - * Returns the URL for the thumbnail of the connection with the given ID, - * or undefined if no thumbnail is associated with that connection. - */ - this.get = function(id) { - return history[id] || new GuacamoleHistory.Entry(); - }; - - /** - * Updates the thumbnail and access time of the history entry for the - * connection with the given ID. - */ - this.update = function(id, thumbnail) { - - /* Do nothing if localStorage not present */ - if (!localStorage) - return; - - // Create updated entry - var entry = new GuacamoleHistory.Entry( - id, - thumbnail, - new Date().getTime() - ); - - // Store entry in history - history[id] = entry; - truncate(); - - // Save updated history, ignore inability to use localStorage - try { - localStorage.setItem("GUAC_HISTORY", JSON.stringify(history)); - } - catch (ignore) {} - - }; - - /** - * Reloads all history data. - */ - this.reload = function() { - - /* Do nothing if localStorage not present */ - if (!localStorage) - return; - - // Get old and new for comparison, ignore inability to use localStorage - var old_history = history; - try { - var new_history = JSON.parse(localStorage.getItem("GUAC_HISTORY") || "{}"); - } - catch (ignore) { - return; - } - - // Update history - history = new_history; - - // Call onchange handler as necessary - if (guac_history.onchange) { - - // Produce union of all known IDs - var known_ids = {}; - for (var new_id in new_history) known_ids[new_id] = true; - for (var old_id in old_history) known_ids[old_id] = true; - - // For each known ID - for (var id in known_ids) { - - // Get entries - var old_entry = old_history[id]; - var new_entry = new_history[id]; - - // Call handler for all changed - if (!old_entry || !new_entry - || old_entry.accessed != new_entry.accessed) - guac_history.onchange(id, old_entry, new_entry); - - } - - } // end onchange - - }; - - /** - * Event handler called whenever a history entry is changed. - * - * @event - * @param {String} id The ID of the connection whose history entry is - * changing. - * @param {GuacamoleHistory.Entry} old_entry The old value of the entry, if - * any. - * @param {GuacamoleHistory.Entry} new_entry The new value of the entry, if - * any. - */ - this.onchange = null; - - // Reload when modified - window.addEventListener("storage", guac_history.reload, false); - - // Initial load - guac_history.reload(); - -})(); - -/** - * A single entry in the indexed connection usage history. - * - * @constructor - * @param {String} id The ID of this connection. - * @param {String} thumbnail The URL of the thumbnail to use to represent this - * connection. - * @param {Number} last_access The time this connection was last accessed, in - * seconds. - */ -GuacamoleHistory.Entry = function(id, thumbnail, last_access) { - - /** - * The ID of the connection associated with this history entry. - */ - this.id = id; - - /** - * The thumbnail associated with the connection associated with this history - * entry. - */ - this.thumbnail = thumbnail; - - /** - * The time the connection associated with this entry was last accessed. - */ - this.accessed = last_access; - -}; - -GuacamoleHistory.Entry.compare = function(a, b) { - return a.accessed - b.accessed; -}; diff --git a/guacamole/src/main/webapp/scripts/session.js b/guacamole/src/main/webapp/scripts/session.js deleted file mode 100644 index 7afc9b6b2..000000000 --- a/guacamole/src/main/webapp/scripts/session.js +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright (C) 2013 Glyptodon LLC - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -/** - * Global storage for Guacamole pages. - */ -GuacamoleSessionStorage = (function() { - - // Retrieve storage from owner of window, if possible - var opener_storage = null; - try { - opener_storage = opener && opener.GuacamoleSessionStorage; - } - catch (e) {} - - return opener_storage; - -})() || new (function() { - - /** - * The contents of storage, as a JSON string containing name/value pairs as - * properties. - * - * @private - * @type String - */ - var stored_json = "{}"; - - /** - * Called whenever an item value changes. - * - * @callback onchange - * @param {String} name The name of the item changed. - * @param value The new item value. - */ - - /** - * All attached listeners. - * - * @type onchange[] - */ - var listeners = []; - - /** - * Notifies all listeners that an item has changed. - * - * @param {String} name The name of the item that changed. - * @param value The new item value. - */ - function __notify_changed(name, value) { - for (var i=0; i