blob: ceebeb7b56400d89ec9de4fa2798b94382f86adc [file] [log] [blame]
// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_UI_ASH_LOGIN_KIOSK_APP_MENU_CONTROLLER_H_
#define CHROME_BROWSER_UI_ASH_LOGIN_KIOSK_APP_MENU_CONTROLLER_H_
#include "ash/public/cpp/kiosk_app_menu.h"
#include "base/memory/weak_ptr.h"
#include "base/scoped_multi_source_observation.h"
#include "chrome/browser/ash/app_mode/kiosk_app_manager_base.h"
#include "chrome/browser/ash/app_mode/kiosk_app_manager_observer.h"
namespace ash {
// Observer class to update the Kiosk app menu when Kiosk app data is changed.
class KioskAppMenuController : public KioskAppManagerObserver {
public:
KioskAppMenuController();
KioskAppMenuController(const KioskAppMenuController&) = delete;
KioskAppMenuController& operator=(const KioskAppMenuController&) = delete;
~KioskAppMenuController() override;
// Manually dispatch kiosk app data to Ash.
void SendKioskApps();
void ConfigureKioskCallbacks();
// KioskAppManagerObserver:
void OnKioskAppDataChanged(const std::string& app_id) override;
void OnKioskAppDataLoadFailure(const std::string& app_id) override;
void OnKioskAppsSettingsChanged() override;
private:
void LaunchApp(const KioskAppMenuEntry& app);
void OnMenuWillShow();
base::ScopedMultiSourceObservation<KioskAppManagerBase,
KioskAppManagerObserver>
kiosk_observations_{this};
base::WeakPtrFactory<KioskAppMenuController> weak_factory_{this};
};
} // namespace ash
#endif // CHROME_BROWSER_UI_ASH_LOGIN_KIOSK_APP_MENU_CONTROLLER_H_