// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_EXO_GAMING_SEAT_DELEGATE_H_
#define COMPONENTS_EXO_GAMING_SEAT_DELEGATE_H_

namespace exo {
class Surface;
class GamepadDelegate;
class GamingSeat;

// It send gamepad_added event and generate the GamepadDelegate.
class GamingSeatDelegate {
 public:
  // Gives the delegate a chance to clean up when the GamingSeat instance is
  // destroyed
  virtual void OnGamingSeatDestroying(GamingSeat* gaming_seat) = 0;

  // This should return true if |surface| is a valid target for this gaming
  // seat. E.g. the surface is owned by the same client as the gaming seat.
  virtual bool CanAcceptGamepadEventsForSurface(Surface* surface) const = 0;

  // When a new gamepad is connected, gaming seat call this to get the
  // gamepad delegate.
  virtual GamepadDelegate* GamepadAdded() = 0;

 protected:
  virtual ~GamingSeatDelegate() {}
};

}  // namespace exo

#endif  // COMPONENTS_EXO_GAMING_SEAT_DELEGATE_H_
