Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a6f8ebc6 authored by Narayan Kamath's avatar Narayan Kamath Committed by Android (Google) Code Review
Browse files

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

parents 425c595a 68e2af55
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
@@ -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) {
+3 −3
Original line number Diff line number Diff line
@@ -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);
            }
        }
+9 −2
Original line number Diff line number Diff line
@@ -1306,10 +1306,17 @@ public class WebView extends AbsoluteLayout
        if (AccessibilityManager.getInstance(mContext).isEnabled()
                && getSettings().getJavaScriptEnabled()) {
            // exposing the TTS for now ...
            mTextToSpeech = new TextToSpeech(getContext(), null);
            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);
                }
            }
        }
    }

    /**
     * Removes accessibility APIs from JavaScript.