Home | History | Annotate | Download | only in speech
      1 // Copyright (c) 2012 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/browser_context_keyed_service/browser_context_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
     16     : public BrowserContextKeyedService,
     17       public extensions::EventRouter::Observer {
     18  public:
     19   static TtsExtensionLoaderChromeOs* GetInstance(Profile* profile);
     20 
     21   // Returns true if the extension was not previously loaded and is now
     22   // loading. This class will call
     23   // ExtensionTtsController::RetrySpeakingQueuedUtterances when the
     24   // extension finishes loading.
     25   bool LoadTtsExtension();
     26 
     27   // Implementation of BrowserContextKeyedService.
     28   virtual void Shutdown() OVERRIDE;
     29 
     30   // Implementation of extensions::EventRouter::Observer.
     31   virtual void OnListenerAdded(const extensions::EventListenerInfo& details)
     32       OVERRIDE;
     33 
     34  private:
     35   // The state of TTS for this profile.
     36   enum TtsState {
     37     TTS_NOT_LOADED,
     38     TTS_LOAD_REQUESTED,
     39     TTS_LOADING,
     40     TTS_LOADED
     41   };
     42 
     43   explicit TtsExtensionLoaderChromeOs(Profile* profile);
     44   virtual ~TtsExtensionLoaderChromeOs() {}
     45 
     46   bool IsTtsLoadedInThisProfile();
     47 
     48   Profile* profile_;
     49   TtsState tts_state_;
     50 
     51   friend class TtsExtensionLoaderChromeOsFactory;
     52 
     53   DISALLOW_COPY_AND_ASSIGN(TtsExtensionLoaderChromeOs);
     54 };
     55 
     56 #endif  // CHROME_BROWSER_SPEECH_TTS_EXTENSION_LOADER_CHROMEOS_H_
     57