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;
22c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
23c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamathimport java.util.ArrayList;
24c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
25c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamathpublic class MockableTextToSpeechService extends TextToSpeechService {
26c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
27c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    private static IDelegate sDelegate;
28c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
29c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    public static void setMocker(IDelegate delegate) {
30c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath        sDelegate = delegate;
31c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    }
32c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
33c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    static IDelegate getMocker() {
34c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath        return sDelegate;
35c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    }
36c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
37c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    @Override
38c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    protected int onIsLanguageAvailable(String lang, String country, String variant) {
39c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath        return sDelegate.onIsLanguageAvailable(lang, country, variant);
40c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    }
41c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
42c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    @Override
43c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    protected String[] onGetLanguage() {
44c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath        return sDelegate.onGetLanguage();
45c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    }
46c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
47c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    @Override
48c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    protected int onLoadLanguage(String lang, String country, String variant) {
49c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath        return sDelegate.onLoadLanguage(lang, country, variant);
50c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    }
51c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
52c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    @Override
53c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    protected void onStop() {
54c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath        sDelegate.onStop();
55c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    }
56c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
57c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    @Override
58c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    protected void onSynthesizeText(SynthesisRequest request, SynthesisCallback callback) {
59c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath        sDelegate.onSynthesizeText(request, callback);
60c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    }
61c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
62c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    public static interface IDelegate {
63c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath        int onIsLanguageAvailable(String lang, String country, String variant);
64c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
65c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath        String[] onGetLanguage();
66c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
67c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath        int onLoadLanguage(String lang, String country, String variant);
68c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
69c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath        void onStop();
70c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
71c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath        void onSynthesizeText(SynthesisRequest request, SynthesisCallback callback);
72c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
73c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath        ArrayList<String> getAvailableVoices();
74c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
75c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath        ArrayList<String> getUnavailableVoices();
76c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath    }
77c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath
78c60aad2a8ab519a9f9ac03f4f9f929ded7ba2db5Narayan Kamath}
79