Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
halo
frameworks_base
Commits
da317ef6
Commit
da317ef6
authored
14 years ago
by
satok
Browse files
Options
Download
Email Patches
Plain Diff
[step9] Add logging code for text services
Change-Id: I4dae847951848cca85bcb73f47c509ce23327334
parent
84e35d99
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
50 additions
and
16 deletions
+50
-16
core/java/android/view/textservice/TextServicesManager.java
core/java/android/view/textservice/TextServicesManager.java
+14
-6
services/java/com/android/server/TextServicesManagerService.java
...s/java/com/android/server/TextServicesManagerService.java
+36
-10
No files found.
core/java/android/view/textservice/TextServicesManager.java
View file @
da317ef6
...
...
@@ -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
.
to
String
()
);
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
;
}
}
...
...
This diff is collapsed.
Click to expand it.
services/java/com/android/server/TextServicesManagerService.java
View file @
da317ef6
...
...
@@ -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.
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment