1// Copyright 2014 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_HOST_PAIRING_SCREEN_HANDLER_H_
6#define CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_HOST_PAIRING_SCREEN_HANDLER_H_
7
8#include "base/macros.h"
9#include "chrome/browser/chromeos/login/screens/host_pairing_screen_actor.h"
10#include "chrome/browser/chromeos/login/screens/screen_context.h"
11#include "chrome/browser/ui/webui/chromeos/login/base_screen_handler.h"
12
13namespace chromeos {
14
15class HostPairingScreenHandler : public HostPairingScreenActor,
16                                 public BaseScreenHandler {
17 public:
18  HostPairingScreenHandler();
19  virtual ~HostPairingScreenHandler();
20
21 private:
22  void HandleContextReady();
23
24  // Overridden from BaseScreenHandler:
25  virtual void Initialize() OVERRIDE;
26  virtual void DeclareLocalizedValues(LocalizedValuesBuilder* builder) OVERRIDE;
27
28  // Overridden from content::WebUIMessageHandler:
29  virtual void RegisterMessages() OVERRIDE;
30
31  // Overridden from HostPairingScreenActor:
32  virtual void Show() OVERRIDE;
33  virtual void Hide() OVERRIDE;
34  virtual void SetDelegate(Delegate* delegate) OVERRIDE;
35  virtual void OnContextChanged(const base::DictionaryValue& diff) OVERRIDE;
36
37  HostPairingScreenActor::Delegate* delegate_;
38  bool show_on_init_;
39  bool js_context_ready_;
40
41  // Caches context changes while JS part is not ready to receive messages.
42  ScreenContext context_cache_;
43
44  DISALLOW_COPY_AND_ASSIGN(HostPairingScreenHandler);
45};
46
47}  // namespace chromeos
48
49#endif  // CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_HOST_PAIRING_SCREEN_HANDLER_H_
50