// Copyright 2020 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_EXTENDED_DRAG_OFFER_H_ #define COMPONENTS_EXO_EXTENDED_DRAG_OFFER_H_ #include #include #include "components/exo/data_offer_observer.h" namespace gfx { class Vector2d; } namespace exo { class DataOffer; class ExtendedDragOffer : public DataOfferObserver { public: class Delegate { public: virtual void OnDataOfferDestroying() = 0; protected: virtual ~Delegate() = default; }; ExtendedDragOffer(DataOffer* offer, Delegate* delegate); ExtendedDragOffer(const ExtendedDragOffer&) = delete; ExtendedDragOffer& operator=(const ExtendedDragOffer&) = delete; ~ExtendedDragOffer() override; void Swallow(uint32_t serial, const std::string& mime_type); void Unswallow(uint32_t serial, const std::string& mime_type, const gfx::Vector2d& offset); private: // DataOfferObserver: void OnDataOfferDestroying(DataOffer* offer) override; DataOffer* offer_ = nullptr; // Created and destroyed at wayland/zcr_extended_drag.cc and its lifetime is // tied to the zcr_extended_drag_source_v1 object it's attached to. Delegate* const delegate_; }; } // namespace exo #endif // COMPONENTS_EXO_EXTENDED_DRAG_OFFER_H_