// Copyright 2017 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_DATA_DEVICE_DELEGATE_H_
#define COMPONENTS_EXO_DATA_DEVICE_DELEGATE_H_

#include <string>
#include <vector>

#include "base/containers/flat_set.h"

namespace base {
class TimeTicks;
}

namespace gfx {
class PointF;
}

namespace exo {

class DataDevice;
class DataOffer;
class Surface;
enum class DndAction;

// Handles events on data devices in context-specific ways.
class DataDeviceDelegate {
 public:
  // Called at the top of the data device's destructor, to give observers a
  // chance to remove themselves.
  virtual void OnDataDeviceDestroying(DataDevice* data_device) = 0;

  // Called when DataOffer object is delivered from a client. DataDeviceDelegate
  // has responsibility to release the returned DataOffer object.
  virtual DataOffer* OnDataOffer() = 0;

  // Called during a drag operation when pointer enters |surface|.
  virtual void OnEnter(Surface* surface,
                       const gfx::PointF& location,
                       const DataOffer& data_offer) = 0;

  // Called during a drag operation when pointer leaves |surface|.
  virtual void OnLeave() = 0;

  // Called during a drag operation when pointer moves on the |surface|.
  virtual void OnMotion(base::TimeTicks time_stamp,
                        const gfx::PointF& location) = 0;

  // Called during a drag operation when user drops dragging data on the
  // |surface|.
  virtual void OnDrop() = 0;

  // Called when the data is pasted on the DataDevice.
  virtual void OnSelection(const DataOffer& data_offer) = 0;

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

 protected:
  virtual ~DataDeviceDelegate() {}
};

}  // namespace exo

#endif  // COMPONENTS_EXO_DATA_DEVICE_DELEGATE_H_
