Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 727cd740 authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka Committed by Android Git Automerger
Browse files

am f2eadbb4: Clear keyboard cache when system locale is changed

* commit 'f2eadbb4':
  Clear keyboard cache when system locale is changed
parents 3ef26ac1 f2eadbb4
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -82,6 +82,7 @@
                <action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <action android:name="android.intent.action.USER_INITIALIZE" />
                <action android:name="android.intent.action.LOCALE_CHANGED" />
            </intent-filter>
        </receiver>

+9 −1
Original line number Diff line number Diff line
@@ -119,7 +119,15 @@ public final class KeyboardLayoutSet {
                new SparseArray<>();
    }

    public static void clearKeyboardCache() {
    public static void onSystemLocaleChanged() {
        clearKeyboardCache();
    }

    public static void onKeyboardThemeChanged() {
        clearKeyboardCache();
    }

    private static void clearKeyboardCache() {
        sKeyboardCache.clear();
        sKeysCache.clear();
    }
+1 −1
Original line number Diff line number Diff line
@@ -102,7 +102,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
        if (mThemeContext == null || !keyboardTheme.equals(mKeyboardTheme)) {
            mKeyboardTheme = keyboardTheme;
            mThemeContext = new ContextThemeWrapper(context, keyboardTheme.mStyleId);
            KeyboardLayoutSet.clearKeyboardCache();
            KeyboardLayoutSet.onKeyboardThemeChanged();
            return true;
        }
        return false;
+14 −15
Original line number Diff line number Diff line
@@ -17,21 +17,16 @@
package com.android.inputmethod.latin;

import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.os.Process;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.inputmethod.InputMethodManager;
import android.view.inputmethod.InputMethodSubtype;

import com.android.inputmethod.compat.IntentCompatUtils;
import com.android.inputmethod.latin.settings.Settings;
import com.android.inputmethod.keyboard.KeyboardLayoutSet;
import com.android.inputmethod.latin.setup.LauncherIconVisibilityManager;
import com.android.inputmethod.latin.setup.SetupActivity;
import com.android.inputmethod.latin.utils.UncachedInputMethodManagerUtils;

/**
@@ -58,6 +53,9 @@ import com.android.inputmethod.latin.utils.UncachedInputMethodManagerUtils;
 * When a multiuser account has been created, {@link Intent#ACTION_USER_INITIALIZE} is received
 * by this receiver and it checks the whether the setup wizard's icon should be appeared or not on
 * the launcher depending on which partition this IME is installed.
 *
 * When the system locale has been changed, {@link Intent#ACTION_LOCALE_CHANGED} is received by
 * this receiver and the {@link KeyboardLayoutSet}'s cache is cleared.
 */
public final class SystemBroadcastReceiver extends BroadcastReceiver {
    private static final String TAG = SystemBroadcastReceiver.class.getSimpleName();
@@ -67,21 +65,22 @@ public final class SystemBroadcastReceiver extends BroadcastReceiver {
        final String intentAction = intent.getAction();
        if (Intent.ACTION_MY_PACKAGE_REPLACED.equals(intentAction)) {
            Log.i(TAG, "Package has been replaced: " + context.getPackageName());
        } else if (Intent.ACTION_BOOT_COMPLETED.equals(intentAction)) {
            Log.i(TAG, "Boot has been completed");
        } else if (IntentCompatUtils.is_ACTION_USER_INITIALIZE(intentAction)) {
            Log.i(TAG, "User initialize");
        }

        LauncherIconVisibilityManager.onReceiveGlobalIntent(intentAction, context);

        if (Intent.ACTION_MY_PACKAGE_REPLACED.equals(intentAction)) {
            // Need to restore additional subtypes because system always clears additional
            // subtypes when the package is replaced.
            RichInputMethodManager.init(context);
            final RichInputMethodManager richImm = RichInputMethodManager.getInstance();
            final InputMethodSubtype[] additionalSubtypes = richImm.getAdditionalSubtypes(context);
            richImm.setAdditionalInputMethodSubtypes(additionalSubtypes);
            LauncherIconVisibilityManager.updateSetupWizardIconVisibility(context);
        } else if (Intent.ACTION_BOOT_COMPLETED.equals(intentAction)) {
            Log.i(TAG, "Boot has been completed");
            LauncherIconVisibilityManager.updateSetupWizardIconVisibility(context);
        } else if (IntentCompatUtils.is_ACTION_USER_INITIALIZE(intentAction)) {
            Log.i(TAG, "User initialize");
            LauncherIconVisibilityManager.updateSetupWizardIconVisibility(context);
        } else if (Intent.ACTION_LOCALE_CHANGED.equals(intentAction)) {
            Log.i(TAG, "System locale changed");
            KeyboardLayoutSet.onSystemLocaleChanged();
        }

        // The process that hosts this broadcast receiver is invoked and remains alive even after
+0 −9
Original line number Diff line number Diff line
@@ -24,7 +24,6 @@ import android.content.pm.PackageManager;
import android.preference.PreferenceManager;
import android.util.Log;

import com.android.inputmethod.compat.IntentCompatUtils;
import com.android.inputmethod.latin.settings.Settings;

/**
@@ -55,14 +54,6 @@ import com.android.inputmethod.latin.settings.Settings;
public final class LauncherIconVisibilityManager {
    private static final String TAG = LauncherIconVisibilityManager.class.getSimpleName();

    public static void onReceiveGlobalIntent(final String action, final Context context) {
        if (Intent.ACTION_MY_PACKAGE_REPLACED.equals(action) ||
                Intent.ACTION_BOOT_COMPLETED.equals(action) ||
                IntentCompatUtils.is_ACTION_USER_INITIALIZE(action)) {
            updateSetupWizardIconVisibility(context);
        }
    }

    public static void updateSetupWizardIconVisibility(final Context context) {
        final ComponentName setupWizardActivity = new ComponentName(context, SetupActivity.class);
        final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
Loading