• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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);
~TtsExtensionLoaderChromeOs()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