Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6510)

Unified Diff: chrome/browser/speech/speech_input_extension_manager.cc

Issue 11779002: Make specch input extension api a PKS. (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/speech/speech_input_extension_manager.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/speech/speech_input_extension_manager.cc
===================================================================
--- chrome/browser/speech/speech_input_extension_manager.cc (revision 176116)
+++ chrome/browser/speech/speech_input_extension_manager.cc (working copy)
@@ -6,9 +6,11 @@
#include "base/bind.h"
#include "base/json/json_writer.h"
+#include "base/lazy_instance.h"
#include "base/utf_string_conversions.h"
#include "base/values.h"
#include "chrome/browser/extensions/event_router.h"
+#include "chrome/browser/extensions/extension_function_registry.h"
#include "chrome/browser/extensions/extension_host.h"
#include "chrome/browser/extensions/extension_process_manager.h"
#include "chrome/browser/extensions/extension_service.h"
@@ -17,6 +19,7 @@
#include "chrome/browser/profiles/profile_dependency_manager.h"
#include "chrome/browser/profiles/profile_keyed_service.h"
#include "chrome/browser/profiles/profile_keyed_service_factory.h"
+#include "chrome/browser/speech/speech_input_extension_api.h"
#include "chrome/common/chrome_notification_types.h"
#include "chrome/common/extensions/extension.h"
#include "content/public/browser/browser_thread.h"
@@ -58,84 +61,8 @@
const char kOnSoundStartEvent[] = "experimental.speechInput.onSoundStart";
const char kOnSoundEndEvent[] = "experimental.speechInput.onSoundEnd";
-// Wrap an SpeechInputExtensionManager using scoped_refptr to avoid
-// assertion failures on destruction because of not using release().
-class SpeechInputExtensionManagerWrapper : public ProfileKeyedService {
- public:
- explicit SpeechInputExtensionManagerWrapper(
- SpeechInputExtensionManager* manager)
- : manager_(manager) {}
-
- virtual ~SpeechInputExtensionManagerWrapper() {}
-
- SpeechInputExtensionManager* manager() const { return manager_.get(); }
-
- private:
- // Methods from ProfileKeyedService.
- virtual void Shutdown() OVERRIDE {
- manager()->ShutdownOnUIThread();
- }
-
- scoped_refptr<SpeechInputExtensionManager> manager_;
-};
}
-// Factory for SpeechInputExtensionManagers as profile keyed services.
-class SpeechInputExtensionManager::Factory : public ProfileKeyedServiceFactory {
- public:
- static void Initialize();
- static Factory* GetInstance();
-
- SpeechInputExtensionManagerWrapper* GetForProfile(Profile* profile);
-
- private:
- friend struct DefaultSingletonTraits<Factory>;
-
- Factory();
- virtual ~Factory();
-
- // ProfileKeyedServiceFactory methods:
- virtual ProfileKeyedService* BuildServiceInstanceFor(
- Profile* profile) const OVERRIDE;
- virtual bool ServiceRedirectedInIncognito() const OVERRIDE { return false; }
- virtual bool ServiceIsNULLWhileTesting() const OVERRIDE { return true; }
- virtual bool ServiceIsCreatedWithProfile() const OVERRIDE { return true; }
-
- DISALLOW_COPY_AND_ASSIGN(Factory);
-};
-
-void SpeechInputExtensionManager::Factory::Initialize() {
- GetInstance();
-}
-
-SpeechInputExtensionManager::Factory*
- SpeechInputExtensionManager::Factory::GetInstance() {
- return Singleton<SpeechInputExtensionManager::Factory>::get();
-}
-
-SpeechInputExtensionManagerWrapper*
- SpeechInputExtensionManager::Factory::GetForProfile(
- Profile* profile) {
- return static_cast<SpeechInputExtensionManagerWrapper*>(
- GetServiceForProfile(profile, true));
-}
-
-SpeechInputExtensionManager::Factory::Factory()
- : ProfileKeyedServiceFactory("SpeechInputExtensionManager",
- ProfileDependencyManager::GetInstance()) {
-}
-
-SpeechInputExtensionManager::Factory::~Factory() {
-}
-
-ProfileKeyedService*
- SpeechInputExtensionManager::Factory::BuildServiceInstanceFor(
- Profile* profile) const {
- scoped_refptr<SpeechInputExtensionManager> manager(
- new SpeechInputExtensionManager(profile));
- return new SpeechInputExtensionManagerWrapper(manager);
-}
-
SpeechInputExtensionInterface::SpeechInputExtensionInterface() {
}
@@ -159,17 +86,14 @@
SpeechInputExtensionManager* SpeechInputExtensionManager::GetForProfile(
Profile* profile) {
- SpeechInputExtensionManagerWrapper* wrapper =
- Factory::GetInstance()->GetForProfile(profile);
- if (!wrapper)
+ extensions::SpeechInputAPI* speech_input_api =
+ extensions::ProfileKeyedAPIFactory<extensions::SpeechInputAPI>::
+ GetForProfile(profile);
+ if (!speech_input_api)
return NULL;
- return wrapper->manager();
+ return speech_input_api->manager();
}
-void SpeechInputExtensionManager::InitializeFactory() {
- Factory::Initialize();
-}
-
void SpeechInputExtensionManager::Observe(int type,
const content::NotificationSource& source,
const content::NotificationDetails& details) {
@@ -765,3 +689,31 @@
void SpeechInputExtensionManager::OnAudioLevelsChange(int session_id,
float volume,
float noise_volume) {}
+
+namespace extensions {
+
+SpeechInputAPI::SpeechInputAPI(Profile* profile)
+ : manager_(new SpeechInputExtensionManager(profile)) {
+ ExtensionFunctionRegistry* registry =
+ ExtensionFunctionRegistry::GetInstance();
+ registry->RegisterFunction<StartSpeechInputFunction>();
+ registry->RegisterFunction<StopSpeechInputFunction>();
+ registry->RegisterFunction<IsRecordingSpeechInputFunction>();
+}
+
+SpeechInputAPI::~SpeechInputAPI() {
+}
+
+void SpeechInputAPI::Shutdown() {
+ manager_->ShutdownOnUIThread();
+}
+
+static base::LazyInstance<ProfileKeyedAPIFactory<SpeechInputAPI> >
+ g_factory = LAZY_INSTANCE_INITIALIZER;
+
+// static
+ProfileKeyedAPIFactory<SpeechInputAPI>* SpeechInputAPI::GetFactoryInstance() {
+ return &g_factory.Get();
+}
+
+} // namespace extensions
« no previous file with comments | « chrome/browser/speech/speech_input_extension_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698