Home | History | Annotate | Download | only in login
      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