Don't prompt before downloading.

We don't pay attention to the answer, so don't ask.

Bug 22069694.

Change-Id: Ic048d5570e68fbc9438c6577e27e6c7f68428606
This commit is contained in:
Dan Zivkovic 2015-06-25 15:01:04 -07:00
parent 5e4c0caac3
commit d23dd5978d
3 changed files with 12 additions and 34 deletions

View File

@ -243,14 +243,8 @@ public final class DictionaryProvider extends ContentProvider {
// Fall through
case DICTIONARY_V1_DICT_INFO:
final String locale = uri.getLastPathSegment();
// If LatinIME does not have a dictionary for this locale at all, it will
// send us true for this value. In this case, we may prompt the user for
// a decision about downloading a dictionary even over a metered connection.
final String mayPromptValue =
uri.getQueryParameter(QUERY_PARAMETER_MAY_PROMPT_USER);
final boolean mayPrompt = QUERY_PARAMETER_TRUE.equals(mayPromptValue);
final Collection<WordListInfo> dictFiles =
getDictionaryWordListsForLocale(clientId, locale, mayPrompt);
getDictionaryWordListsForLocale(clientId, locale);
// TODO: pass clientId to the following function
DictionaryService.updateNowIfNotUpdatedInAVeryLongTime(getContext());
if (null != dictFiles && dictFiles.size() > 0) {
@ -343,11 +337,10 @@ public final class DictionaryProvider extends ContentProvider {
*
* @param clientId the ID of the client requesting the list
* @param locale the locale for which we want the list, as a String
* @param mayPrompt true if we are allowed to prompt the user for arbitration via notification
* @return a collection of ids. It is guaranteed to be non-null, but may be empty.
*/
private Collection<WordListInfo> getDictionaryWordListsForLocale(final String clientId,
final String locale, final boolean mayPrompt) {
final String locale) {
final Context context = getContext();
final Cursor results =
MetadataDbHelper.queryInstalledOrDeletingOrAvailableDictionaryMetadata(context,
@ -412,8 +405,7 @@ public final class DictionaryProvider extends ContentProvider {
}
} else if (MetadataDbHelper.STATUS_AVAILABLE == wordListStatus) {
// The locale is the id for the main dictionary.
UpdateHandler.installIfNeverRequested(context, clientId, wordListId,
mayPrompt);
UpdateHandler.installIfNeverRequested(context, clientId, wordListId);
continue;
}
final WordListInfo currentBestMatch = dicts.get(wordListCategory);

View File

@ -80,8 +80,7 @@ public final class DownloadOverMeteredDialog extends Activity {
@SuppressWarnings("unused")
public void onClickAllow(final View v) {
UpdateHandler.setDownloadOverMeteredSetting(this, true);
UpdateHandler.installIfNeverRequested(this, mClientId, mWordListToDownload,
false /* mayPrompt */);
UpdateHandler.installIfNeverRequested(this, mClientId, mWordListToDownload);
finish();
}
}

View File

@ -907,9 +907,9 @@ public final class UpdateHandler {
// list because it may only install the latest version we know about for this specific
// word list ID / client ID combination.
public static void installIfNeverRequested(final Context context, final String clientId,
final String wordlistId, final boolean mayPrompt) {
final String wordlistId) {
Log.i(TAG, "installIfNeverRequested() : ClientId = " + clientId
+ " : WordListId = " + wordlistId + " : MayPrompt = " + mayPrompt);
+ " : WordListId = " + wordlistId);
final String[] idArray = wordlistId.split(DictionaryProvider.ID_CATEGORY_SEPARATOR);
// If we have a new-format dictionary id (category:manual_id), then use the
// specified category. Otherwise, it is a main dictionary, so force the
@ -942,17 +942,6 @@ public final class UpdateHandler {
return;
}
if (mayPrompt
&& DOWNLOAD_OVER_METERED_SETTING_UNKNOWN
== getDownloadOverMeteredSetting(context)) {
final ConnectivityManager cm =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (ConnectivityManagerCompatUtils.isActiveNetworkMetered(cm)) {
showDictionaryAvailableNotification(context, clientId, installCandidate);
return;
}
}
// We decided against prompting the user for a decision. This may be because we were
// explicitly asked not to, or because we are currently on wi-fi anyway, or because we
// already know the answer to the question. We'll enqueue a request ; StartDownloadAction
@ -969,14 +958,12 @@ public final class UpdateHandler {
final String localeString = installCandidate.getAsString(MetadataDbHelper.LOCALE_COLUMN);
// We are in a content provider: we can't do any UI at all. We have to defer the displaying
// itself to the service. Also, we only display this when the user does not have a
// dictionary for this language already: we know that from the mayPrompt argument.
if (mayPrompt) {
final Intent intent = new Intent();
intent.setClass(context, DictionaryService.class);
intent.setAction(DictionaryService.SHOW_DOWNLOAD_TOAST_INTENT_ACTION);
intent.putExtra(DictionaryService.LOCALE_INTENT_ARGUMENT, localeString);
context.startService(intent);
}
// dictionary for this language already.
final Intent intent = new Intent();
intent.setClass(context, DictionaryService.class);
intent.setAction(DictionaryService.SHOW_DOWNLOAD_TOAST_INTENT_ACTION);
intent.putExtra(DictionaryService.LOCALE_INTENT_ARGUMENT, localeString);
context.startService(intent);
Log.i(TAG, "installIfNeverRequested() : StartDownloadAction for " + metadata);
actions.execute(context, new LogProblemReporter(TAG));
}