1// Copyright (c) 2012 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_EULA_SCREEN_HANDLER_H_
6#define CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_EULA_SCREEN_HANDLER_H_
7
8#include "base/compiler_specific.h"
9#include "base/memory/ref_counted.h"
10#include "chrome/browser/chromeos/login/screens/eula_screen_actor.h"
11#include "chrome/browser/ui/webui/chromeos/login/base_screen_handler.h"
12#include "chromeos/tpm_password_fetcher.h"
13#include "content/public/browser/web_ui.h"
14
15namespace base {
16class DictionaryValue;
17}
18
19namespace chromeos {
20
21class CoreOobeActor;
22class HelpAppLauncher;
23
24// WebUI implementation of EulaScreenActor. It is used to interact
25// with the eula part of the JS page.
26class EulaScreenHandler : public EulaScreenActor,
27                          public BaseScreenHandler,
28                          public TpmPasswordFetcherDelegate {
29 public:
30  explicit EulaScreenHandler(CoreOobeActor* core_oobe_actor);
31  virtual ~EulaScreenHandler();
32
33  // EulaScreenActor implementation:
34  virtual void PrepareToShow() OVERRIDE;
35  virtual void Show() OVERRIDE;
36  virtual void Hide() OVERRIDE;
37  virtual void SetDelegate(Delegate* delegate) OVERRIDE;
38  virtual void OnPasswordFetched(const std::string& tpm_password) OVERRIDE;
39
40  // BaseScreenHandler implementation:
41  virtual void DeclareLocalizedValues(LocalizedValuesBuilder* builder) OVERRIDE;
42  virtual void GetAdditionalParameters(base::DictionaryValue* dict) OVERRIDE;
43  virtual void Initialize() OVERRIDE;
44
45  // WebUIMessageHandler implementation:
46  virtual void RegisterMessages() OVERRIDE;
47
48 private:
49  // JS messages handlers.
50  void HandleOnExit(bool accepted, bool usager_stats_enabled);
51  void HandleOnLearnMore();
52  void HandleOnChromeCredits();
53  void HandleOnChromeOSCredits();
54  void HandleOnInstallationSettingsPopupOpened();
55
56  EulaScreenActor::Delegate* delegate_;
57  CoreOobeActor* core_oobe_actor_;
58
59  // Help application used for help dialogs.
60  scoped_refptr<HelpAppLauncher> help_app_;
61
62  // Keeps whether screen should be shown right after initialization.
63  bool show_on_init_;
64
65  DISALLOW_COPY_AND_ASSIGN(EulaScreenHandler);
66};
67
68}  // namespace chromeos
69
70#endif  // CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_EULA_SCREEN_HANDLER_H_
71