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