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

Commit 5b9b5a95 authored by satok's avatar satok
Browse files

Change SpellCheckerInfo IPC inputs to String

Change-Id: I4c3f3c7aa7587e3f2582b43702108fa78f37ec54
parent 1164d776
Loading
Loading
Loading
Loading
+10 −7
Original line number Diff line number Diff line
@@ -81,18 +81,18 @@ public final class TextServicesManager {
        }
        // TODO: set a proper locale instead of the dummy locale
        final String localeString = locale == null ? "en" : locale.toString();
        final SpellCheckerInfo info;
        final SpellCheckerInfo sci;
        try {
            info = sService.getCurrentSpellChecker(localeString);
            sci = sService.getCurrentSpellChecker(localeString);
        } catch (RemoteException e) {
            return null;
        }
        if (info == null) {
        if (sci == null) {
            return null;
        }
        final SpellCheckerSession session = new SpellCheckerSession(info, sService, listener);
        final SpellCheckerSession session = new SpellCheckerSession(sci, sService, listener);
        try {
            sService.getSpellCheckerService(info, localeString,
            sService.getSpellCheckerService(sci.getId(), localeString,
                    session.getTextServicesSessionListener(),
                    session.getSpellCheckerSessionListener());
        } catch (RemoteException e) {
@@ -132,9 +132,12 @@ public final class TextServicesManager {
    /**
     * @hide
     */
    public void setCurrentSpellChecker(SpellCheckerInfo info) {
    public void setCurrentSpellChecker(SpellCheckerInfo sci) {
        try {
            sService.setCurrentSpellChecker(info);
            if (sci == null) {
                throw new NullPointerException("SpellCheckerInfo is null");
            }
            sService.setCurrentSpellChecker(sci.getId());
        } catch (RemoteException e) {
            Log.e(TAG, "Error in setCurrentSpellChecker: " + e);
        }
+2 −2
Original line number Diff line number Diff line
@@ -28,10 +28,10 @@ import android.view.textservice.SpellCheckerInfo;
 */
interface ITextServicesManager {
    SpellCheckerInfo getCurrentSpellChecker(String locale);
    oneway void getSpellCheckerService(in SpellCheckerInfo info, in String locale,
    oneway void getSpellCheckerService(String sciId, in String locale,
            in ITextServicesSessionListener tsListener,
            in ISpellCheckerSessionListener scListener);
    oneway void finishSpellCheckerService(in ISpellCheckerSessionListener listener);
    oneway void setCurrentSpellChecker(in SpellCheckerInfo info);
    oneway void setCurrentSpellChecker(String sciId);
    SpellCheckerInfo[] getEnabledSpellCheckers();
}
+19 −17
Original line number Diff line number Diff line
@@ -80,7 +80,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
                // Set the current spell checker if there is one or more spell checkers
                // available. In this case, "sci" is the first one in the available spell
                // checkers.
                setCurrentSpellCheckerLocked(sci);
                setCurrentSpellCheckerLocked(sci.getId());
            }
        }
    }
@@ -95,12 +95,14 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
                if (sci == null) return;
                final String packageName = sci.getPackageName();
                final int change = isPackageDisappearing(packageName);
                if (change == PACKAGE_PERMANENT_CHANGE || change == PACKAGE_TEMPORARY_CHANGE) {
                    // Package disappearing
                    setCurrentSpellCheckerLocked(findAvailSpellCheckerLocked(null, packageName));
                } else if (isPackageModified(packageName)) {
                if (// Package disappearing
                        change == PACKAGE_PERMANENT_CHANGE || change == PACKAGE_TEMPORARY_CHANGE
                        // Package modified
                    setCurrentSpellCheckerLocked(findAvailSpellCheckerLocked(null, packageName));
                        || isPackageModified(packageName)) {
                    sci = findAvailSpellCheckerLocked(null, packageName);
                    if (sci != null) {
                        setCurrentSpellCheckerLocked(sci.getId());
                    }
                }
            }
        }
@@ -177,20 +179,20 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
    }

    @Override
    public void getSpellCheckerService(SpellCheckerInfo info, String locale,
    public void getSpellCheckerService(String sciId, String locale,
            ITextServicesSessionListener tsListener, ISpellCheckerSessionListener scListener) {
        if (!mSystemReady) {
            return;
        }
        if (info == null || tsListener == null || scListener == null) {
        if (TextUtils.isEmpty(sciId) || tsListener == null || scListener == null) {
            Slog.e(TAG, "getSpellCheckerService: Invalid input.");
            return;
        }
        final String sciId = info.getId();
        synchronized(mSpellCheckerMap) {
            if (!mSpellCheckerMap.containsKey(sciId)) {
                return;
            }
            final SpellCheckerInfo sci = mSpellCheckerMap.get(sciId);
            final int uid = Binder.getCallingUid();
            if (mSpellCheckerBindGroups.containsKey(sciId)) {
                final SpellCheckerBindGroup bindGroup = mSpellCheckerBindGroups.get(sciId);
@@ -234,7 +236,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
            }
            final long ident = Binder.clearCallingIdentity();
            try {
                startSpellCheckerServiceInnerLocked(info, locale, tsListener, scListener, uid);
                startSpellCheckerServiceInnerLocked(sci, locale, tsListener, scListener, uid);
            } finally {
                Binder.restoreCallingIdentity(ident);
            }
@@ -290,7 +292,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
    }

    @Override
    public void setCurrentSpellChecker(SpellCheckerInfo sci) {
    public void setCurrentSpellChecker(String sciId) {
        synchronized(mSpellCheckerMap) {
            if (mContext.checkCallingOrSelfPermission(
                    android.Manifest.permission.WRITE_SECURE_SETTINGS)
@@ -299,19 +301,19 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
                        "Requires permission "
                        + android.Manifest.permission.WRITE_SECURE_SETTINGS);
            }
            setCurrentSpellCheckerLocked(sci);
            setCurrentSpellCheckerLocked(sciId);
        }
    }

    private void setCurrentSpellCheckerLocked(SpellCheckerInfo sci) {
    private void setCurrentSpellCheckerLocked(String sciId) {
        if (DBG) {
            Slog.w(TAG, "setCurrentSpellChecker: " + sci.getId());
            Slog.w(TAG, "setCurrentSpellChecker: " + sciId);
        }
        if (sci == null || !mSpellCheckerMap.containsKey(sci.getId())) return;
        if (TextUtils.isEmpty(sciId) || !mSpellCheckerMap.containsKey(sciId)) return;
        final long ident = Binder.clearCallingIdentity();
        try {
            Settings.Secure.putString(mContext.getContentResolver(),
                    Settings.Secure.SPELL_CHECKER_SERVICE, sci == null ? "" : sci.getId());
                    Settings.Secure.SPELL_CHECKER_SERVICE, sciId);
        } finally {
            Binder.restoreCallingIdentity(ident);
        }