From dc64f384a4f2c42e367cd788fcfe10a49019e324 Mon Sep 17 00:00:00 2001 From: "Joshua A. Horton" Date: Tue, 13 Feb 2018 08:31:35 +0700 Subject: [PATCH] Modified 'shutdown' related code; adjusted initial definition of the 'keyman' variable to help the 'delete' succeed. --- web/source/keymanweb.ts | 2 +- web/source/kmwapi.ts | 1 - web/source/kmwbase.ts | 7 +------ web/source/kmwkeyboards.ts | 2 +- web/unit_tests/test_utils.js | 6 ++++-- 5 files changed, 7 insertions(+), 11 deletions(-) diff --git a/web/source/keymanweb.ts b/web/source/keymanweb.ts index a764706c6f..9b79f1c306 100644 --- a/web/source/keymanweb.ts +++ b/web/source/keymanweb.ts @@ -122,7 +122,7 @@ if(!window['keyman']['initialized']) { // Complete page initialization only after the page is fully loaded, including any embedded fonts // This avoids the need to use a timer to test for the fonts - util.attachDOMEvent(window, 'load', keyman.domManager._WindowLoad,false); + util.attachDOMEvent(window, 'load', keymanweb.domManager._WindowLoad,false); util.attachDOMEvent(window, 'unload', keymanweb.domManager._WindowUnload,false); // added fourth argument (default value) // *** I3319 Supplementary Plane modifications - end new code diff --git a/web/source/kmwapi.ts b/web/source/kmwapi.ts index 988bd3fedd..a74999f60a 100644 --- a/web/source/kmwapi.ts +++ b/web/source/kmwapi.ts @@ -21,7 +21,6 @@ */ // kmwbase.ts -goog.exportProperty(keyman, "build", keyman); // Only works on individual instances. goog.exportSymbol("KeymanBase.prototype.addEventListener", KeymanBase.prototype.addEventListener); goog.exportSymbol("KeymanBase.prototype.isFontAvailable", KeymanBase.prototype.isFontAvailable); diff --git a/web/source/kmwbase.ts b/web/source/kmwbase.ts index 4b3fa17804..0d03fb9cc5 100644 --- a/web/source/kmwbase.ts +++ b/web/source/kmwbase.ts @@ -20,11 +20,6 @@ Copyright 2017 SIL International ***/ -declare var keyman: KeymanBase; -declare var KeymanWeb: KeyboardInterface; -var keyman: KeymanBase = window['keyman'] || {}; -window['keyman'] = keyman; // To preserve the name _here_ in case of minification. - class KeymanBase { _TitleElement = null; // I1972 - KeymanWeb Titlebar should not be a link _IE = 0; // browser version identification @@ -560,7 +555,7 @@ KeymanBase.__BUILD__ = 299; */ // If a copy of the script is already loaded, detect this and prevent re-initialization / data reset. -if(!window['keyman']['loaded']) { +if(!window['keyman'] || !window['keyman']['loaded']) { (function() { /* The base object call may need to be moved into a separate, later file eventually. diff --git a/web/source/kmwkeyboards.ts b/web/source/kmwkeyboards.ts index ad38d7b924..6b0bf91a4b 100644 --- a/web/source/kmwkeyboards.ts +++ b/web/source/kmwkeyboards.ts @@ -1126,7 +1126,7 @@ class KeyboardManager { Lscript = this.keymanweb.util._CreateElement('script'); URL = URL + ((arguments.length > 1) && byLanguage ? 'languages' : 'keyboards') - +'?jsonp=keyman.register&version='+keyman['version']+'.'+KeymanBase['__BUILD__']; + +'?jsonp=keyman.register&version='+this.keymanweb['version']+'.'+KeymanBase['__BUILD__']; var kbdManager = this; diff --git a/web/unit_tests/test_utils.js b/web/unit_tests/test_utils.js index 2e0b713871..d00217ef5a 100644 --- a/web/unit_tests/test_utils.js +++ b/web/unit_tests/test_utils.js @@ -65,8 +65,10 @@ var setupScript = function(src, done, timeout, uiInitCheck) { var teardownKMW = function() { keyman['shutdown'](); - delete window.keyman; - window["keyman"] = undefined; + var success = delete window["keyman"]; + if(!success) { + window["keyman"] = undefined; + } } // Make sure the main script loads...