Merge "Fix TTS instantiation from webview accessibility handlers." into ics-mr1

This commit is contained in:
Narayan Kamath
2011-11-28 10:36:32 -08:00
committed by Android (Google) Code Review
3 changed files with 31 additions and 6 deletions

View File

@@ -490,6 +490,7 @@ public class TextToSpeech {
private final Map<String, Uri> mUtterances;
private final Bundle mParams = new Bundle();
private final TtsEngines mEnginesHelper;
private final String mPackageName;
private volatile String mCurrentEngine = null;
/**
@@ -518,19 +519,36 @@ public class TextToSpeech {
* @param engine Package name of the TTS engine to use.
*/
public TextToSpeech(Context context, OnInitListener listener, String engine) {
this(context, listener, engine, null);
}
/**
* Used by the framework to instantiate TextToSpeech objects with a supplied
* package name, instead of using {@link android.content.Context#getPackageName()}
*
* @hide
*/
public TextToSpeech(Context context, OnInitListener listener, String engine,
String packageName) {
mContext = context;
mInitListener = listener;
mRequestedEngine = engine;
mEarcons = new HashMap<String, Uri>();
mUtterances = new HashMap<String, Uri>();
mUtteranceProgressListener = null;
mEnginesHelper = new TtsEngines(mContext);
if (packageName != null) {
mPackageName = packageName;
} else {
mPackageName = mContext.getPackageName();
}
initTts();
}
private String getPackageName() {
return mContext.getPackageName();
return mPackageName;
}
private <R> R runActionNoReconnect(Action<R> action, R errorResult, String method) {

View File

@@ -450,7 +450,7 @@ public abstract class TextToSpeechService extends Service {
@Override
public void dispatchOnDone() {
final String utteranceId = getUtteranceId();
if (!TextUtils.isEmpty(utteranceId)) {
if (utteranceId != null) {
mCallbacks.dispatchOnDone(getCallingApp(), utteranceId);
}
}
@@ -458,7 +458,7 @@ public abstract class TextToSpeechService extends Service {
@Override
public void dispatchOnStart() {
final String utteranceId = getUtteranceId();
if (!TextUtils.isEmpty(utteranceId)) {
if (utteranceId != null) {
mCallbacks.dispatchOnStart(getCallingApp(), utteranceId);
}
}
@@ -466,7 +466,7 @@ public abstract class TextToSpeechService extends Service {
@Override
public void dispatchOnError() {
final String utteranceId = getUtteranceId();
if (!TextUtils.isEmpty(utteranceId)) {
if (utteranceId != null) {
mCallbacks.dispatchOnError(getCallingApp(), utteranceId);
}
}

View File

@@ -1306,8 +1306,15 @@ public class WebView extends AbsoluteLayout
if (AccessibilityManager.getInstance(mContext).isEnabled()
&& getSettings().getJavaScriptEnabled()) {
// exposing the TTS for now ...
mTextToSpeech = new TextToSpeech(getContext(), null);
addJavascriptInterface(mTextToSpeech, ALIAS_ACCESSIBILITY_JS_INTERFACE);
final Context ctx = getContext();
if (ctx != null) {
final String packageName = ctx.getPackageName();
if (packageName != null) {
mTextToSpeech = new TextToSpeech(getContext(), null, null,
packageName + ".**webview**");
addJavascriptInterface(mTextToSpeech, ALIAS_ACCESSIBILITY_JS_INTERFACE);
}
}
}
}