blob: 81960c6ebf7c750542de5586fb3cdc6d54de3432 [file] [log] [blame]
// 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 <cstdint>
#include <string>
#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_