Notify the dictionary pack about copy failures
Bug: 6532896 Change-Id: I57f7b1a400222c89776f9bff652a7da4470232c5
This commit is contained in:
parent
ff4c037c9d
commit
3abac7e28e
1 changed files with 13 additions and 5 deletions
|
@ -58,6 +58,9 @@ public class BinaryDictionaryFileDumper {
|
||||||
|
|
||||||
public static final String QUERY_PARAMETER_MAY_PROMPT_USER = "mayPrompt";
|
public static final String QUERY_PARAMETER_MAY_PROMPT_USER = "mayPrompt";
|
||||||
public static final String QUERY_PARAMETER_TRUE = "true";
|
public static final String QUERY_PARAMETER_TRUE = "true";
|
||||||
|
public static final String QUERY_PARAMETER_DELETE_RESULT = "result";
|
||||||
|
public static final String QUERY_PARAMETER_SUCCESS = "success";
|
||||||
|
public static final String QUERY_PARAMETER_FAILURE = "failure";
|
||||||
|
|
||||||
// Prevents this class to be accidentally instantiated.
|
// Prevents this class to be accidentally instantiated.
|
||||||
private BinaryDictionaryFileDumper() {
|
private BinaryDictionaryFileDumper() {
|
||||||
|
@ -145,7 +148,7 @@ public class BinaryDictionaryFileDumper {
|
||||||
final int MODE_MIN = COMPRESSED_CRYPTED_COMPRESSED;
|
final int MODE_MIN = COMPRESSED_CRYPTED_COMPRESSED;
|
||||||
final int MODE_MAX = NONE;
|
final int MODE_MAX = NONE;
|
||||||
|
|
||||||
final Uri wordListUri = getProviderUriBuilder(id).build();
|
final Uri.Builder wordListUriBuilder = getProviderUriBuilder(id);
|
||||||
final String outputFileName = BinaryDictionaryGetter.getCacheFileName(id, locale, context);
|
final String outputFileName = BinaryDictionaryGetter.getCacheFileName(id, locale, context);
|
||||||
|
|
||||||
for (int mode = MODE_MIN; mode <= MODE_MAX; ++mode) {
|
for (int mode = MODE_MIN; mode <= MODE_MAX; ++mode) {
|
||||||
|
@ -154,6 +157,7 @@ public class BinaryDictionaryFileDumper {
|
||||||
File outputFile = null;
|
File outputFile = null;
|
||||||
FileOutputStream outputStream = null;
|
FileOutputStream outputStream = null;
|
||||||
AssetFileDescriptor afd = null;
|
AssetFileDescriptor afd = null;
|
||||||
|
final Uri wordListUri = wordListUriBuilder.build();
|
||||||
try {
|
try {
|
||||||
// Open input.
|
// Open input.
|
||||||
afd = openAssetFileDescriptor(resolver, wordListUri);
|
afd = openAssetFileDescriptor(resolver, wordListUri);
|
||||||
|
@ -190,7 +194,9 @@ public class BinaryDictionaryFileDumper {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
checkMagicAndCopyFileTo(new BufferedInputStream(inputStream), outputStream);
|
checkMagicAndCopyFileTo(new BufferedInputStream(inputStream), outputStream);
|
||||||
if (0 >= resolver.delete(wordListUri, null, null)) {
|
wordListUriBuilder.appendQueryParameter(QUERY_PARAMETER_DELETE_RESULT,
|
||||||
|
QUERY_PARAMETER_SUCCESS);
|
||||||
|
if (0 >= resolver.delete(wordListUriBuilder.build(), null, null)) {
|
||||||
Log.e(TAG, "Could not have the dictionary pack delete a word list");
|
Log.e(TAG, "Could not have the dictionary pack delete a word list");
|
||||||
}
|
}
|
||||||
BinaryDictionaryGetter.removeFilesWithIdExcept(context, id, outputFile);
|
BinaryDictionaryGetter.removeFilesWithIdExcept(context, id, outputFile);
|
||||||
|
@ -226,9 +232,11 @@ public class BinaryDictionaryFileDumper {
|
||||||
// We could not copy the file at all. This is very unexpected.
|
// We could not copy the file at all. This is very unexpected.
|
||||||
// I'd rather not print the word list ID to the log out of security concerns
|
// I'd rather not print the word list ID to the log out of security concerns
|
||||||
Log.e(TAG, "Could not copy a word list. Will not be able to use it.");
|
Log.e(TAG, "Could not copy a word list. Will not be able to use it.");
|
||||||
// If we can't copy it we should probably delete it to avoid trying to copy it over
|
// If we can't copy it we should warn the dictionary provider so that it can mark it
|
||||||
// and over each time we open LatinIME.
|
// as invalid.
|
||||||
if (0 >= resolver.delete(wordListUri, null, null)) {
|
wordListUriBuilder.appendQueryParameter(QUERY_PARAMETER_DELETE_RESULT,
|
||||||
|
QUERY_PARAMETER_FAILURE);
|
||||||
|
if (0 >= resolver.delete(wordListUriBuilder.build(), null, null)) {
|
||||||
Log.e(TAG, "In addition, we were unable to delete it.");
|
Log.e(TAG, "In addition, we were unable to delete it.");
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
|
Loading…
Reference in a new issue