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_ENABLE_SCREEN_HANDLER_H_
6#define CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_KIOSK_ENABLE_SCREEN_HANDLER_H_
7
8#include "base/compiler_specific.h"
9#include "base/memory/weak_ptr.h"
10#include "chrome/browser/chromeos/app_mode/kiosk_app_manager.h"
11#include "chrome/browser/chromeos/login/screens/kiosk_enable_screen_actor.h"
12#include "chrome/browser/ui/webui/chromeos/login/base_screen_handler.h"
13
14namespace chromeos {
15
16// WebUI implementation of KioskEnableScreenActor.
17class KioskEnableScreenHandler : public KioskEnableScreenActor,
18                                 public BaseScreenHandler {
19 public:
20  KioskEnableScreenHandler();
21  virtual ~KioskEnableScreenHandler();
22
23  // KioskEnableScreenActor implementation:
24  virtual void Show() OVERRIDE;
25  virtual void SetDelegate(Delegate* delegate) OVERRIDE;
26
27  // BaseScreenHandler implementation:
28  virtual void DeclareLocalizedValues(LocalizedValuesBuilder* builder) OVERRIDE;
29  virtual void Initialize() OVERRIDE;
30
31  // WebUIMessageHandler implementation:
32  virtual void RegisterMessages() OVERRIDE;
33
34 private:
35  // JS messages handlers.
36  void HandleOnClose();
37  void HandleOnEnable();
38
39  // Callback for KioskAppManager::EnableConsumerModeKiosk().
40  void OnEnableConsumerModeKiosk(bool success);
41
42  // Callback for KioskAppManager::GetConsumerKioskModeStatus().
43  void OnGetConsumerKioskModeStatus(
44      KioskAppManager::ConsumerKioskModeStatus status);
45
46  Delegate* delegate_;
47
48  // Keeps whether screen should be shown right after initialization.
49  bool show_on_init_;
50
51  // True if machine's consumer kiosk mode is in a configurable state.
52  bool is_configurable_;
53
54  base::WeakPtrFactory<KioskEnableScreenHandler> weak_ptr_factory_;
55
56  DISALLOW_COPY_AND_ASSIGN(KioskEnableScreenHandler);
57};
58
59}  // namespace chromeos
60
61#endif  // CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_KIOSK_ENABLE_SCREEN_HANDLER_H_
62