Loading java/res/values/donottranslate.xml +1 −0 Original line number Diff line number Diff line Loading @@ -214,5 +214,6 @@ <string name="dictionary_pack_package_name">com.google.android.inputmethod.latin.dictionarypack</string> <string name="dictionary_pack_settings_activity">com.google.android.inputmethod.latin.dictionarypack.DictionarySettingsActivity</string> <string name="dictionary_pack_client_id">com.android.inputmethod.latin</string> <string name="dictionary_pack_metadata_uri"></string> <string name="settings_warning_researcher_mode">Attention! You are using the special keyboard for research purposes.</string> </resources> java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java +27 −1 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.inputmethod.latin; import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; import android.content.res.AssetFileDescriptor; import android.database.Cursor; Loading Loading @@ -68,6 +69,10 @@ public final class BinaryDictionaryFileDumper { // The path fragment to append after the client ID for dictionary info requests. private static final String QUERY_PATH_DICT_INFO = "dict"; // The path fragment to append after the client ID for updating the metadata URI. private static final String QUERY_PATH_METADATA = "metadata"; private static final String INSERT_METADATA_CLIENT_ID_COLUMN = "clientid"; private static final String INSERT_METADATA_METADATA_URI_COLUMN = "uri"; // Prevents this class to be accidentally instantiated. private BinaryDictionaryFileDumper() { Loading Loading @@ -103,7 +108,10 @@ public final class BinaryDictionaryFileDumper { final Uri dictionaryPackUri = builder.build(); final Cursor c = resolver.query(dictionaryPackUri, DICTIONARY_PROJECTION, null, null, null); if (null == c) return Collections.<WordListInfo>emptyList(); if (null == c) { reinitializeClientRecordInDictionaryContentProvider(context, resolver, clientId); return Collections.<WordListInfo>emptyList(); } if (c.getCount() <= 0 || !c.moveToFirst()) { c.close(); return Collections.<WordListInfo>emptyList(); Loading Loading @@ -335,4 +343,22 @@ public final class BinaryDictionaryFileDumper { output.write(buffer, 0, readBytes); input.close(); } private static void reinitializeClientRecordInDictionaryContentProvider(final Context context, final ContentResolver resolver, final String clientId) { final String metadataFileUri = context.getString(R.string.dictionary_pack_metadata_uri); if (TextUtils.isEmpty(metadataFileUri)) return; // Tell the content provider to reset all information about this client id final Uri metadataContentUri = getProviderUriBuilder(clientId) .appendPath(QUERY_PATH_METADATA) .appendQueryParameter(QUERY_PARAMETER_PROTOCOL, QUERY_PARAMETER_PROTOCOL_VALUE) .build(); resolver.delete(metadataContentUri, null, null); // Update the metadata URI final ContentValues metadataValues = new ContentValues(); metadataValues.put(INSERT_METADATA_CLIENT_ID_COLUMN, clientId); metadataValues.put(INSERT_METADATA_METADATA_URI_COLUMN, metadataFileUri); resolver.insert(metadataContentUri, metadataValues); // TODO: Update the versions of the dictionaries } } Loading
java/res/values/donottranslate.xml +1 −0 Original line number Diff line number Diff line Loading @@ -214,5 +214,6 @@ <string name="dictionary_pack_package_name">com.google.android.inputmethod.latin.dictionarypack</string> <string name="dictionary_pack_settings_activity">com.google.android.inputmethod.latin.dictionarypack.DictionarySettingsActivity</string> <string name="dictionary_pack_client_id">com.android.inputmethod.latin</string> <string name="dictionary_pack_metadata_uri"></string> <string name="settings_warning_researcher_mode">Attention! You are using the special keyboard for research purposes.</string> </resources>
java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java +27 −1 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.inputmethod.latin; import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; import android.content.res.AssetFileDescriptor; import android.database.Cursor; Loading Loading @@ -68,6 +69,10 @@ public final class BinaryDictionaryFileDumper { // The path fragment to append after the client ID for dictionary info requests. private static final String QUERY_PATH_DICT_INFO = "dict"; // The path fragment to append after the client ID for updating the metadata URI. private static final String QUERY_PATH_METADATA = "metadata"; private static final String INSERT_METADATA_CLIENT_ID_COLUMN = "clientid"; private static final String INSERT_METADATA_METADATA_URI_COLUMN = "uri"; // Prevents this class to be accidentally instantiated. private BinaryDictionaryFileDumper() { Loading Loading @@ -103,7 +108,10 @@ public final class BinaryDictionaryFileDumper { final Uri dictionaryPackUri = builder.build(); final Cursor c = resolver.query(dictionaryPackUri, DICTIONARY_PROJECTION, null, null, null); if (null == c) return Collections.<WordListInfo>emptyList(); if (null == c) { reinitializeClientRecordInDictionaryContentProvider(context, resolver, clientId); return Collections.<WordListInfo>emptyList(); } if (c.getCount() <= 0 || !c.moveToFirst()) { c.close(); return Collections.<WordListInfo>emptyList(); Loading Loading @@ -335,4 +343,22 @@ public final class BinaryDictionaryFileDumper { output.write(buffer, 0, readBytes); input.close(); } private static void reinitializeClientRecordInDictionaryContentProvider(final Context context, final ContentResolver resolver, final String clientId) { final String metadataFileUri = context.getString(R.string.dictionary_pack_metadata_uri); if (TextUtils.isEmpty(metadataFileUri)) return; // Tell the content provider to reset all information about this client id final Uri metadataContentUri = getProviderUriBuilder(clientId) .appendPath(QUERY_PATH_METADATA) .appendQueryParameter(QUERY_PARAMETER_PROTOCOL, QUERY_PARAMETER_PROTOCOL_VALUE) .build(); resolver.delete(metadataContentUri, null, null); // Update the metadata URI final ContentValues metadataValues = new ContentValues(); metadataValues.put(INSERT_METADATA_CLIENT_ID_COLUMN, clientId); metadataValues.put(INSERT_METADATA_METADATA_URI_COLUMN, metadataFileUri); resolver.insert(metadataContentUri, metadataValues); // TODO: Update the versions of the dictionaries } }