1a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// found in the LICENSE file.
4a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
5a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_HID_DETECTION_SCREEN_ACTOR_H_
6a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#define CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_HID_DETECTION_SCREEN_ACTOR_H_
7a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
8a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include <string>
9a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/callback_forward.h"
115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
12a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochnamespace chromeos {
13a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
14a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// Interface between HID detection screen and its representation.
15a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// Note, do not forget to call OnActorDestroyed in the dtor.
16a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass HIDDetectionScreenActor {
17a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch public:
18a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  // Allows us to get info from HID detection screen that we need.
19a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  class Delegate {
20a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch   public:
21a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    virtual ~Delegate() {}
22a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
23a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    // Called when screen is exited.
24a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    virtual void OnExit() = 0;
25a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
26a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    // This method is called, when actor is being destroyed. Note, if Delegate
27a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    // is destroyed earlier then it has to call SetDelegate(NULL).
28a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    virtual void OnActorDestroyed(HIDDetectionScreenActor* actor) = 0;
29a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  };
30a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
31a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual ~HIDDetectionScreenActor() {}
32a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
33a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual void Show() = 0;
34a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual void Hide() = 0;
35a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual void SetDelegate(Delegate* delegate) = 0;
365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // Checks if we should show the screen or enough devices already present.
385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // Calls corresponding set of actions based on the bool result.
395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual void CheckIsScreenRequired(
405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      const base::Callback<void(bool)>& on_check_done) = 0;
41a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch};
42a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
43a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch}  // namespace chromeos
44a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
45a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#endif  // CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_HID_DETECTION_SCREEN_ACTOR_H_
46a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
47