1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_SPEECH_TTS_EXTENSION_LOADER_CHROMEOS_H_ 6 #define CHROME_BROWSER_SPEECH_TTS_EXTENSION_LOADER_CHROMEOS_H_ 7 8 #include "components/keyed_service/core/keyed_service.h" 9 #include "extensions/browser/event_router.h" 10 11 class Profile; 12 13 // Profile-keyed class that loads a built-in TTS component extension 14 // into a given profile on Chrome OS. 15 class TtsExtensionLoaderChromeOs : public KeyedService, 16 public extensions::EventRouter::Observer { 17 public: 18 static TtsExtensionLoaderChromeOs* GetInstance(Profile* profile); 19 20 // Returns true if the extension was not previously loaded and is now 21 // loading. This class will call 22 // ExtensionTtsController::RetrySpeakingQueuedUtterances when the 23 // extension finishes loading. 24 bool LoadTtsExtension(); 25 26 // Implementation of KeyedService. 27 virtual void Shutdown() OVERRIDE; 28 29 // Implementation of extensions::EventRouter::Observer. 30 virtual void OnListenerAdded(const extensions::EventListenerInfo& details) 31 OVERRIDE; 32 33 private: 34 // The state of TTS for this profile. 35 enum TtsState { 36 TTS_NOT_LOADED, 37 TTS_LOAD_REQUESTED, 38 TTS_LOADING, 39 TTS_LOADED 40 }; 41 42 explicit TtsExtensionLoaderChromeOs(Profile* profile); 43 virtual ~TtsExtensionLoaderChromeOs() {} 44 45 bool IsTtsLoadedInThisProfile(); 46 47 Profile* profile_; 48 TtsState tts_state_; 49 50 friend class TtsExtensionLoaderChromeOsFactory; 51 52 DISALLOW_COPY_AND_ASSIGN(TtsExtensionLoaderChromeOs); 53 }; 54 55 #endif // CHROME_BROWSER_SPEECH_TTS_EXTENSION_LOADER_CHROMEOS_H_ 56