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 16namespace base { 17class ListValue; 18} 19 20namespace extensions { 21class ExtensionRegistry; 22} 23 24namespace app_list { 25 26class RecommendedApps; 27 28// Handler for the app launcher start page. 29class 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