summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author satok <satok@google.com> 2011-08-02 12:24:44 +0900
committer satok <satok@google.com> 2011-08-02 14:04:43 +0900
commit5b9b5a9553a0276dc6b7f1f458c8d4ed03227988 (patch)
treeba993d2c6706b121b21094149032248c81c8a5c5
parent1164d776c612a33bc5e54262589490fb1d2c257d (diff)
Change SpellCheckerInfo IPC inputs to String
Change-Id: I4c3f3c7aa7587e3f2582b43702108fa78f37ec54
-rw-r--r--core/java/android/view/textservice/TextServicesManager.java17
-rw-r--r--core/java/com/android/internal/textservice/ITextServicesManager.aidl4
-rw-r--r--services/java/com/android/server/TextServicesManagerService.java36
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);
}