From 667e82e9d455f1f0c2e11204ba9459657cf85936 Mon Sep 17 00:00:00 2001 From: darcywong00 Date: Thu, 23 Nov 2017 11:45:27 +0700 Subject: [PATCH] Ignore zero-byte JS keyboard files For the 3rd part of #370, ignore 0-byte JS files in `KMManager.getLatestKeyboardFileVersion)` If a keyboard doesn't have a valid version, attempting to load it will revert to the default (EuroLatin2) keyboard. Also added a check so null version keyboard doesn't get added to OldKeyboardsList --- .../app/src/main/java/com/tavultesoft/kmea/KMKeyboard.java | 3 +++ .../app/src/main/java/com/tavultesoft/kmea/KMManager.java | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMKeyboard.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMKeyboard.java index 8fe335e74b..1ede944002 100644 --- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMKeyboard.java +++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMKeyboard.java @@ -44,6 +44,7 @@ import android.widget.GridLayout; import android.widget.PopupWindow; import android.widget.PopupWindow.OnDismissListener; import android.widget.TextView; +import android.widget.Toast; final class KMKeyboard extends WebView { private final Context context; @@ -236,6 +237,7 @@ final class KMKeyboard extends WebView { boolean retVal = true; String keyboardVersion = KMManager.getLatestKeyboardFileVersion(getContext(), keyboardID); if (!KMManager.shouldAllowSetKeyboard() || keyboardVersion == null) { + Toast.makeText(context, "Invalid keyboard! Loading default", Toast.LENGTH_LONG).show(); keyboardID = KMManager.KMDefault_KeyboardID; languageID = KMManager.KMDefault_LanguageID; retVal = false; @@ -323,6 +325,7 @@ final class KMKeyboard extends WebView { boolean retVal = true; String keyboardVersion = KMManager.getLatestKeyboardFileVersion(getContext(), keyboardID); if (!KMManager.shouldAllowSetKeyboard() || keyboardVersion == null) { + Toast.makeText(context, "Invalid keyboard! Loading default", Toast.LENGTH_LONG).show(); keyboardID = KMManager.KMDefault_KeyboardID; languageID = KMManager.KMDefault_LanguageID; keyboardName = KMManager.KMDefault_KeyboardName; diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMManager.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMManager.java index cafadd280f..94aff752bd 100644 --- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMManager.java +++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMManager.java @@ -472,7 +472,7 @@ public final class KMManager { String langID = kbInfo.get(KMKey_LanguageID); String kbVersion = kbInfo.get(KMManager.KMKey_KeyboardVersion); String latestKbVersion = getLatestKeyboardFileVersion(context, kbID); - if (kbVersion == null || !kbVersion.equals(latestKbVersion)) { + if ((latestKbVersion != null) && (kbVersion == null || !kbVersion.equals(latestKbVersion))) { kbInfo.put(KMManager.KMKey_KeyboardVersion, latestKbVersion); kbList.set(i, kbInfo); shouldUpdateList = true; @@ -1456,8 +1456,10 @@ public final class KMManager { return kbFileVersion; for (String file : files) { - if (!file.endsWith(".js")) + // Ensure keyboard file is JS and non-zero size + if (!file.endsWith(".js") || new File(path + file).length() == 0) { continue; + } String base = String.format("%s-", keyboardID); int index = file.indexOf(base);