Home | History | Annotate | Download | only in speech
      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