1 // Copyright 2013 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_UI_WEBUI_APP_LIST_START_PAGE_HANDLER_H_ 6 #define CHROME_BROWSER_UI_WEBUI_APP_LIST_START_PAGE_HANDLER_H_ 7 8 #include "base/basictypes.h" 9 #include "base/compiler_specific.h" 10 #include "base/prefs/pref_change_registrar.h" 11 #include "base/scoped_observer.h" 12 #include "chrome/browser/ui/app_list/recommended_apps_observer.h" 13 #include "content/public/browser/web_ui_message_handler.h" 14 #include "extensions/browser/extension_registry_observer.h" 15 16 namespace base { 17 class ListValue; 18 } 19 20 namespace extensions { 21 class ExtensionRegistry; 22 } 23 24 namespace app_list { 25 26 class RecommendedApps; 27 28 // Handler for the app launcher start page. 29 class StartPageHandler : public content::WebUIMessageHandler, 30 public extensions::ExtensionRegistryObserver, 31 public RecommendedAppsObserver { 32 public: 33 StartPageHandler(); 34 virtual ~StartPageHandler(); 35 36 private: 37 // content::WebUIMessageHandler overrides: 38 virtual void RegisterMessages() OVERRIDE; 39 40 // extensions::ExtensionRegistryObserver implementation. 41 virtual void OnExtensionLoaded( 42 content::BrowserContext* browser_context, 43 const extensions::Extension* extension) OVERRIDE; 44 virtual void OnExtensionUnloaded( 45 content::BrowserContext* browser_context, 46 const extensions::Extension* extension, 47 extensions::UnloadedExtensionInfo::Reason reason) OVERRIDE; 48 49 // RecommendedAppsObserver overrdies: 50 virtual void OnRecommendedAppsChanged() OVERRIDE; 51 52 // Creates a ListValue for the recommended apps and sends it to js side. 53 void SendRecommendedApps(); 54 55 #if defined(OS_CHROMEOS) 56 // Called when the pref has been changed. 57 void OnHotwordEnabledChanged(); 58 #endif 59 60 // JS callbacks. 61 void HandleInitialize(const base::ListValue* args); 62 void HandleLaunchApp(const base::ListValue* args); 63 void HandleSpeechResult(const base::ListValue* args); 64 void HandleSpeechSoundLevel(const base::ListValue* args); 65 void HandleSpeechRecognition(const base::ListValue* args); 66 67 RecommendedApps* recommended_apps_; // Not owned. 68 PrefChangeRegistrar pref_change_registrar_; 69 70 ScopedObserver<extensions::ExtensionRegistry, 71 extensions::ExtensionRegistryObserver> 72 extension_registry_observer_; 73 74 DISALLOW_COPY_AND_ASSIGN(StartPageHandler); 75 }; 76 77 } // namespace app_list 78 79 #endif // CHROME_BROWSER_UI_WEBUI_APP_LIST_START_PAGE_HANDLER_H_ 80