1c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath/*
2c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath * Copyright (C) 2011 The Android Open Source Project
3c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath *
4c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath * Licensed under the Apache License, Version 2.0 (the "License");
5c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath * you may not use this file except in compliance with the License.
6c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath * You may obtain a copy of the License at
7c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath *
8c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath *      http://www.apache.org/licenses/LICENSE-2.0
9c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath *
10c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath * Unless required by applicable law or agreed to in writing, software
11c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath * distributed under the License is distributed on an "AS IS" BASIS,
12c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath * See the License for the specific language governing permissions and
14c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath * limitations under the License.
15c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath */
16c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
17c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamathpackage com.android.speech.tts;
18c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
19c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamathimport android.speech.tts.SynthesisCallback;
20c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamathimport android.speech.tts.SynthesisRequest;
21c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamathimport android.speech.tts.TextToSpeechService;
224b73867a12a9339c7788e8949aac4a32d2eee22bPrzemyslaw Szczepaniakimport android.util.Log;
23c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
24c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamathimport java.util.ArrayList;
254b73867a12a9339c7788e8949aac4a32d2eee22bPrzemyslaw Szczepaniakimport java.util.logging.Logger;
26c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
27c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamathpublic class MockableTextToSpeechService extends TextToSpeechService {
28c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
29c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    private static IDelegate sDelegate;
30c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
31c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    public static void setMocker(IDelegate delegate) {
32c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath        sDelegate = delegate;
33c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    }
34c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
35c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    static IDelegate getMocker() {
36c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath        return sDelegate;
37c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    }
38c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
39c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    @Override
40c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    protected int onIsLanguageAvailable(String lang, String country, String variant) {
41c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath        return sDelegate.onIsLanguageAvailable(lang, country, variant);
42c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    }
43c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
44c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    @Override
45c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    protected String[] onGetLanguage() {
46c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath        return sDelegate.onGetLanguage();
47c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    }
48c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
49c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    @Override
50c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    protected int onLoadLanguage(String lang, String country, String variant) {
51c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath        return sDelegate.onLoadLanguage(lang, country, variant);
52c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    }
53c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
54c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    @Override
55c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    protected void onStop() {
56c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath        sDelegate.onStop();
57c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    }
58c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
59c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    @Override
60c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    protected void onSynthesizeText(SynthesisRequest request, SynthesisCallback callback) {
61c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath        sDelegate.onSynthesizeText(request, callback);
62c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    }
63c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
64c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    public static interface IDelegate {
65c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath        int onIsLanguageAvailable(String lang, String country, String variant);
66c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
67c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath        String[] onGetLanguage();
68c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
69c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath        int onLoadLanguage(String lang, String country, String variant);
70c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
71c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath        void onStop();
72c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
73c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath        void onSynthesizeText(SynthesisRequest request, SynthesisCallback callback);
74c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
75c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath        ArrayList<String> getAvailableVoices();
76c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
77c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath        ArrayList<String> getUnavailableVoices();
78c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    }
79c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
80c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath}
81