chromium/ui/aura/client/drag_drop_client_observer.h

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

#ifndef UI_AURA_CLIENT_DRAG_DROP_CLIENT_OBSERVER_H_
#define UI_AURA_CLIENT_DRAG_DROP_CLIENT_OBSERVER_H_

#include "build/chromeos_buildflags.h"
#include "ui/aura/aura_export.h"

namespace ui {
namespace mojom {
enum class DragOperation;
}  // namespace mojom

class DropTargetEvent;
}  // namespace ui

namespace aura {
namespace client {

// Observes drag-and-drop sessions. NOTE: drop could be asynchronous. Therefore,
// an active async drop could be interrupted by a new drag-and-drop session. In
// this case, observers are NOT notified of the interrupted async drop.
// Some possible calling orders are listed below:
// 1. Sync/async drop completion: `OnDragStarted()` -> `OnDragUpdated()` ->
// `OnDragCompleted()` -> `OnDropCompleted()`.
// 2. Async drop cancellation: OnDragStarted()` -> `OnDragUpdated()` ->
// `OnDragCompleted()` -> `OnDragCancelled()`.
class AURA_EXPORT DragDropClientObserver {};

}  // namespace client
}  // namespace aura

#endif  // UI_AURA_CLIENT_DRAG_DROP_CLIENT_OBSERVER_H_