Commit da317ef6 authored by satok's avatar satok
Browse files

[step9] Add logging code for text services

Change-Id: I4dae847951848cca85bcb73f47c509ce23327334
parent 84e35d99
......@@ -22,9 +22,9 @@ import android.content.Context;
import android.os.IBinder;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.view.textservice.SpellCheckerInfo;
import android.service.textservice.SpellCheckerSession;
import android.service.textservice.SpellCheckerSession.SpellCheckerSessionListener;
import android.util.Log;
import java.util.Locale;
......@@ -38,6 +38,7 @@ import java.util.Locale;
*/
public final class TextServicesManager {
private static final String TAG = TextServicesManager.class.getSimpleName();
private static final boolean DBG = false;
private static TextServicesManager sInstance;
private static ITextServicesManager sService;
......@@ -75,12 +76,14 @@ public final class TextServicesManager {
// TODO: Handle referToSpellCheckerLanguageSettings
public SpellCheckerSession newSpellCheckerSession(Locale locale,
SpellCheckerSessionListener listener, boolean referToSpellCheckerLanguageSettings) {
if (locale == null || listener == null) {
if (listener == null) {
throw new NullPointerException();
}
// TODO: set a proper locale instead of the dummy locale
final String localeString = locale == null ? "en" : locale.toString();
final SpellCheckerInfo info;
try {
info = sService.getCurrentSpellChecker(locale.toString());
info = sService.getCurrentSpellChecker(localeString);
} catch (RemoteException e) {
return null;
}
......@@ -89,8 +92,8 @@ public final class TextServicesManager {
}
final SpellCheckerSession session = new SpellCheckerSession(info, sService, listener);
try {
sService.getSpellCheckerService(
info, locale.toString(), session.getTextServicesSessionListener(),
sService.getSpellCheckerService(info, localeString,
session.getTextServicesSessionListener(),
session.getSpellCheckerSessionListener());
} catch (RemoteException e) {
return null;
......@@ -103,8 +106,13 @@ public final class TextServicesManager {
*/
public SpellCheckerInfo[] getEnabledSpellCheckers() {
try {
return sService.getEnabledSpellCheckers();
final SpellCheckerInfo[] retval = sService.getEnabledSpellCheckers();
if (DBG) {
Log.d(TAG, "getEnabledSpellCheckers: " + (retval != null ? retval.length : "null"));
}
return retval;
} catch (RemoteException e) {
Log.e(TAG, "Error in getEnabledSpellCheckers: " + e);
return null;
}
}
......
......@@ -81,14 +81,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
buildSpellCheckerMapLocked(mContext, mSpellCheckerList, mSpellCheckerMap);
// TODO: Update for each locale
SpellCheckerInfo sci = getCurrentSpellChecker(null);
if (sci == null) {
sci = findAvailSpellCheckerLocked(null, null);
if (sci == null) return;
// 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.
setCurrentSpellChecker(sci);
}
if (sci == null) return;
final String packageName = sci.getPackageName();
final int change = isPackageDisappearing(packageName);
if (change == PACKAGE_PERMANENT_CHANGE || change == PACKAGE_TEMPORARY_CHANGE) {
......@@ -125,6 +118,9 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
list.add(sci);
map.put(sci.getId(), sci);
}
if (DBG) {
Slog.d(TAG, "buildSpellCheckerMapLocked: " + list.size() + "," + map.size());
}
}
// TODO: find an appropriate spell checker for specified locale
......@@ -138,6 +134,9 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
for (int i = 0; i < spellCheckersCount; ++i) {
final SpellCheckerInfo sci = mSpellCheckerList.get(i);
if (prefPackage.equals(sci.getPackageName())) {
if (DBG) {
Slog.d(TAG, "findAvailSpellCheckerLocked: " + sci.getPackageName());
}
return sci;
}
}
......@@ -153,14 +152,20 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
@Override
public SpellCheckerInfo getCurrentSpellChecker(String locale) {
synchronized (mSpellCheckerMap) {
final String curSpellCheckerId =
String curSpellCheckerId =
Settings.Secure.getString(mContext.getContentResolver(),
Settings.Secure.SPELL_CHECKER_SERVICE);
if (DBG) {
Slog.w(TAG, "getCurrentSpellChecker: " + curSpellCheckerId);
}
if (TextUtils.isEmpty(curSpellCheckerId)) {
return null;
final SpellCheckerInfo sci = findAvailSpellCheckerLocked(null, null);
if (sci == null) return null;
// 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.
setCurrentSpellChecker(sci);
return sci;
}
return mSpellCheckerMap.get(curSpellCheckerId);
}
......@@ -202,11 +207,20 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
@Override
public SpellCheckerInfo[] getEnabledSpellCheckers() {
if (DBG) {
Slog.d(TAG, "getEnabledSpellCheckers: " + mSpellCheckerList.size());
for (int i = 0; i < mSpellCheckerList.size(); ++i) {
Slog.d(TAG, "EnabledSpellCheckers: " + mSpellCheckerList.get(i).getPackageName());
}
}
return mSpellCheckerList.toArray(new SpellCheckerInfo[mSpellCheckerList.size()]);
}
@Override
public void finishSpellCheckerService(ISpellCheckerSessionListener listener) {
if (DBG) {
Slog.d(TAG, "FinishSpellCheckerService");
}
synchronized(mSpellCheckerMap) {
for (SpellCheckerBindGroup group : mSpellCheckerBindGroups.values()) {
if (group == null) continue;
......@@ -240,6 +254,9 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
}
public void onServiceConnected(ISpellCheckerService spellChecker) {
if (DBG) {
Slog.d(TAG, "onServiceConnected");
}
synchronized(mSpellCheckerMap) {
for (InternalDeathRecipient listener : mListeners) {
try {
......@@ -254,6 +271,9 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
public void addListener(ITextServicesSessionListener tsListener, String locale,
ISpellCheckerSessionListener scListener) {
if (DBG) {
Slog.d(TAG, "addListener: " + locale);
}
synchronized(mSpellCheckerMap) {
try {
final int size = mListeners.size();
......@@ -276,6 +296,9 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
}
public void removeListener(ISpellCheckerSessionListener listener) {
if (DBG) {
Slog.d(TAG, "remove listener");
}
synchronized(mSpellCheckerMap) {
final int size = mListeners.size();
final ArrayList<InternalDeathRecipient> removeList =
......@@ -295,6 +318,9 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
}
private void cleanLocked() {
if (DBG) {
Slog.d(TAG, "cleanLocked");
}
if (mListeners.isEmpty()) {
mSpellCheckerBindGroups.remove(this);
// Unbind service when there is no active clients.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment