Home | History | Annotate | Download | only in tts
      1 package com.android.car.messenger.tts;
      2 
      3 import android.content.Context;
      4 import android.os.Bundle;
      5 import android.speech.tts.TextToSpeech;
      6 import android.speech.tts.UtteranceProgressListener;
      7 
      8 import java.util.LinkedList;
      9 
     10 /**
     11  * Fake implementation of {@link TTSEngine} for unit-testing.
     12  */
     13 class FakeTTSEngine implements TTSEngine {
     14     TextToSpeech.OnInitListener mOnInitListener;
     15     UtteranceProgressListener mProgressListener;
     16     LinkedList<Request> mRequests = new LinkedList<>();
     17 
     18     @Override
     19     public void initialize(Context context, TextToSpeech.OnInitListener initListener) {
     20         mOnInitListener = initListener;
     21     }
     22 
     23     @Override
     24     public boolean isInitialized() {
     25         return mOnInitListener != null;
     26     }
     27 
     28     @Override
     29     public void setOnUtteranceProgressListener(UtteranceProgressListener progressListener) {
     30         mProgressListener = progressListener;
     31     }
     32 
     33     @Override
     34     public int speak(CharSequence text, int queueMode, Bundle params, String utteranceId) {
     35         mRequests.add(new Request(text, queueMode, params, utteranceId));
     36         return TextToSpeech.SUCCESS;
     37     }
     38 
     39     @Override
     40     public void stop() {
     41         mRequests.clear();
     42     }
     43 
     44     @Override
     45     public boolean isSpeaking() {
     46         // NOTE: currently not used in tests.
     47         return false;
     48     }
     49 
     50     @Override
     51     public void shutdown() {
     52         stop();
     53         mOnInitListener = null;
     54     }
     55 
     56     @Override
     57     public int getStream() {
     58         return TextToSpeech.Engine.DEFAULT_STREAM;
     59     }
     60 
     61     void startRequest(String utteranceId) {
     62         mProgressListener.onStart(utteranceId);
     63     }
     64 
     65     void finishRequest(String utteranceId) {
     66         removeRequest(utteranceId);
     67         mProgressListener.onDone(utteranceId);
     68     }
     69 
     70     void interruptRequest(String utteranceId, boolean interrupted) {
     71         removeRequest(utteranceId);
     72         mProgressListener.onStop(utteranceId, interrupted);
     73     }
     74 
     75     void failRequest(String utteranceId, int errorCode) {
     76         removeRequest(utteranceId);
     77         mProgressListener.onError(utteranceId, errorCode);
     78     }
     79 
     80     private void removeRequest(String utteranceId) {
     81         mRequests.removeIf((request) -> request.mUtteranceId.equals(utteranceId));
     82     }
     83 
     84     static class Request {
     85         CharSequence mText;
     86         int mQueueMode;
     87         Bundle mParams;
     88         String mUtteranceId;
     89 
     90         public Request(CharSequence text, int queueMode, Bundle params, String utteranceId) {
     91             mText = text;
     92             mQueueMode = queueMode;
     93             mParams = params;
     94             mUtteranceId = utteranceId;
     95         }
     96     }
     97 }
     98