1 // Copyright 2018 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_CHROMEOS_LOGIN_UI_KIOSK_APP_MENU_CONTROLLER_H_ 6 #define CHROME_BROWSER_CHROMEOS_LOGIN_UI_KIOSK_APP_MENU_CONTROLLER_H_ 7 8 #include "ash/public/cpp/kiosk_app_menu.h" 9 #include "base/macros.h" 10 #include "base/memory/weak_ptr.h" 11 #include "base/scoped_observer.h" 12 #include "chrome/browser/chromeos/app_mode/kiosk_app_manager_base.h" 13 #include "chrome/browser/chromeos/app_mode/kiosk_app_manager_observer.h" 14 15 namespace chromeos { 16 17 // Observer class to update the Kiosk app menu when Kiosk app data is changed. 18 class KioskAppMenuController : public KioskAppManagerObserver { 19 public: 20 KioskAppMenuController(); 21 ~KioskAppMenuController() override; 22 23 // Manually dispatch kiosk app data to Ash. 24 void SendKioskApps(); 25 26 // KioskAppManagerObserver: 27 void OnKioskAppDataChanged(const std::string& app_id) override; 28 void OnKioskAppDataLoadFailure(const std::string& app_id) override; 29 void OnKioskAppsSettingsChanged() override; 30 31 private: 32 void LaunchApp(const ash::KioskAppMenuEntry& app); 33 void OnMenuWillShow(); 34 35 ScopedObserver<KioskAppManagerBase, KioskAppManagerObserver> kiosk_observer_{ 36 this}; 37 38 base::WeakPtrFactory<KioskAppMenuController> weak_factory_{this}; 39 40 DISALLOW_COPY_AND_ASSIGN(KioskAppMenuController); 41 }; 42 43 } // namespace chromeos 44 45 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_UI_KIOSK_APP_MENU_CONTROLLER_H_ 46