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_CHROMEOS_LOGIN_KIOSK_APP_MENU_HANDLER_H_ 6 #define CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_KIOSK_APP_MENU_HANDLER_H_ 7 8 #include <string> 9 10 #include "base/compiler_specific.h" 11 #include "base/memory/scoped_ptr.h" 12 #include "base/memory/weak_ptr.h" 13 #include "chrome/browser/chromeos/app_mode/kiosk_app_manager.h" 14 #include "chrome/browser/chromeos/app_mode/kiosk_app_manager_observer.h" 15 #include "chrome/browser/ui/webui/chromeos/login/network_state_informer.h" 16 #include "content/public/browser/web_ui_message_handler.h" 17 18 namespace chromeos { 19 20 // KioskAppMenuHandler supplies kiosk apps data to apps menu on sign-in 21 // screen when app mode is enabled and handles "launchKioskApp" request 22 // from the apps menu. 23 class KioskAppMenuHandler 24 : public content::WebUIMessageHandler, 25 public KioskAppManagerObserver, 26 public NetworkStateInformer::NetworkStateInformerObserver { 27 public: 28 explicit KioskAppMenuHandler( 29 const scoped_refptr<NetworkStateInformer>& network_state_informer); 30 virtual ~KioskAppMenuHandler(); 31 32 void GetLocalizedStrings(base::DictionaryValue* localized_strings); 33 34 // content::WebUIMessageHandler overrides: 35 virtual void RegisterMessages() OVERRIDE; 36 37 // Returns true if new kiosk UI is enabled. 38 static bool EnableNewKioskUI(); 39 40 private: 41 // Sends all kiosk apps to webui. 42 void SendKioskApps(); 43 44 // JS callbacks. 45 void HandleInitializeKioskApps(const base::ListValue* args); 46 void HandleKioskAppsLoaded(const base::ListValue* args); 47 void HandleCheckKioskAppLaunchError(const base::ListValue* args); 48 49 // KioskAppManagerObserver overrides: 50 virtual void OnKioskAppsSettingsChanged() OVERRIDE; 51 virtual void OnKioskAppDataChanged(const std::string& app_id) OVERRIDE; 52 53 // NetworkStateInformer::NetworkStateInformerObserver overrides: 54 virtual void UpdateState(ErrorScreenActor::ErrorReason reason) OVERRIDE; 55 56 base::WeakPtrFactory<KioskAppMenuHandler> weak_ptr_factory_; 57 58 // True when WebUI is initialized. Otherwise don't allow calling JS functions. 59 bool is_webui_initialized_; 60 61 scoped_refptr<NetworkStateInformer> network_state_informer_; 62 63 DISALLOW_COPY_AND_ASSIGN(KioskAppMenuHandler); 64 }; 65 66 } // namespace chromeos 67 68 #endif // CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_KIOSK_APP_MENU_HANDLER_H_ 69