diff options
| author | 2011-08-02 12:24:44 +0900 | |
|---|---|---|
| committer | 2011-08-02 14:04:43 +0900 | |
| commit | 5b9b5a9553a0276dc6b7f1f458c8d4ed03227988 (patch) | |
| tree | ba993d2c6706b121b21094149032248c81c8a5c5 | |
| parent | 1164d776c612a33bc5e54262589490fb1d2c257d (diff) | |
Change SpellCheckerInfo IPC inputs to String
Change-Id: I4c3f3c7aa7587e3f2582b43702108fa78f37ec54
3 files changed, 31 insertions, 26 deletions
diff --git a/core/java/android/view/textservice/TextServicesManager.java b/core/java/android/view/textservice/TextServicesManager.java index 7b32b51fb448..027d82a3bc50 100644 --- a/core/java/android/view/textservice/TextServicesManager.java +++ b/core/java/android/view/textservice/TextServicesManager.java @@ -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); } diff --git a/core/java/com/android/internal/textservice/ITextServicesManager.aidl b/core/java/com/android/internal/textservice/ITextServicesManager.aidl index eae1ac83acf9..4d7dfbb8aec1 100644 --- a/core/java/com/android/internal/textservice/ITextServicesManager.aidl +++ b/core/java/com/android/internal/textservice/ITextServicesManager.aidl @@ -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(); } diff --git a/services/java/com/android/server/TextServicesManagerService.java b/services/java/com/android/server/TextServicesManagerService.java index 837778e4d8d6..e97df84a8329 100644 --- a/services/java/com/android/server/TextServicesManagerService.java +++ b/services/java/com/android/server/TextServicesManagerService.java @@ -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)) { - // Package modified - setCurrentSpellCheckerLocked(findAvailSpellCheckerLocked(null, packageName)); + if (// Package disappearing + change == PACKAGE_PERMANENT_CHANGE || change == PACKAGE_TEMPORARY_CHANGE + // Package modified + || 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); } |