From ce487bcf33be39eed4ed56e6b98603cc87fda2eb Mon Sep 17 00:00:00 2001 From: Jean Chalard Date: Mon, 18 Mar 2013 18:40:33 +0900 Subject: [PATCH] Access the dictionary pack only if have INTERNET permission Bug: 8161354 Change-Id: I68ee3acb2955a017d25666cc2dad791798f9064a --- .../inputmethod/latin/BinaryDictionaryGetter.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java b/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java index e913f2852..94598c810 100644 --- a/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java +++ b/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java @@ -22,6 +22,7 @@ import com.android.inputmethod.latin.makedict.FormatSpec; import android.content.Context; import android.content.SharedPreferences; +import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.AssetFileDescriptor; import android.util.Log; @@ -290,8 +291,13 @@ final class BinaryDictionaryGetter { // list of everything we ever cached, so we ignore the return value. // TODO: The experimental version is not supported by the Dictionary Pack Service yet if (!ProductionFlag.IS_EXPERIMENTAL) { - BinaryDictionaryFileDumper.cacheWordListsFromContentProvider(locale, context, - hasDefaultWordList); + // We need internet access to do the following. Only do this if the package actually + // has the permission. + if (context.checkCallingOrSelfPermission(android.Manifest.permission.INTERNET) + == PackageManager.PERMISSION_GRANTED) { + BinaryDictionaryFileDumper.cacheWordListsFromContentProvider(locale, context, + hasDefaultWordList); + } } final File[] cachedWordLists = getCachedWordLists(locale.toString(), context); final String mainDictId = DictionaryInfoUtils.getMainDictId(locale);