1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ui/ozone/platform/wayland/test/test_data_offer.h"
#include <wayland-server-core.h>
#include <utility>
#include "base/functional/bind.h"
#include "base/logging.h"
#include "base/memory/raw_ptr.h"
#include "base/notimplemented.h"
#include "ui/ozone/platform/wayland/test/test_selection_device_manager.h"
namespace wl {
namespace {
void DataOfferAccept(wl_client* client,
wl_resource* resource,
uint32_t serial,
const char* mime_type) {
NOTIMPLEMENTED();
}
void DataOfferDestroy(wl_client* client, wl_resource* resource) {
wl_resource_destroy(resource);
}
void DataOfferFinish(wl_client* client, wl_resource* resource) {
NOTIMPLEMENTED();
}
void DataOfferSetActions(wl_client* client,
wl_resource* resource,
uint32_t dnd_actions,
uint32_t preferred_action) {
GetUserDataAs<TestDataOffer>(resource)->SetActions(dnd_actions,
preferred_action);
}
struct WlDataOfferImpl : public TestSelectionOffer::Delegate {
explicit WlDataOfferImpl(TestDataOffer* offer) : offer_(offer) {}
~WlDataOfferImpl() override = default;
WlDataOfferImpl(const WlDataOfferImpl&) = delete;
WlDataOfferImpl& operator=(const WlDataOfferImpl&) = delete;
void SendOffer(const std::string& mime_type) override {
wl_data_offer_send_offer(offer_->resource(), mime_type.c_str());
}
private:
const raw_ptr<TestDataOffer> offer_;
};
} // namespace
const struct wl_data_offer_interface kTestDataOfferImpl = {
DataOfferAccept, &TestSelectionOffer::Receive, DataOfferDestroy,
DataOfferFinish, DataOfferSetActions};
TestDataOffer::TestDataOffer(wl_resource* resource)
: TestSelectionOffer(resource, std::make_unique<WlDataOfferImpl>(this)) {}
TestDataOffer::~TestDataOffer() = default;
// static
TestDataOffer* TestDataOffer::FromResource(wl_resource* resource) {
if (!ResourceHasImplementation(resource, &wl_data_offer_interface,
&kTestDataOfferImpl)) {
return nullptr;
}
return GetUserDataAs<TestDataOffer>(resource);
}
void TestDataOffer::SetActions(uint32_t dnd_actions,
uint32_t preferred_action) {
client_supported_actions_ = dnd_actions;
client_preferred_action_ = preferred_action;
OnAction(client_preferred_action_);
}
void TestDataOffer::OnSourceActions(uint32_t source_actions) {
wl_data_offer_send_source_actions(resource(), source_actions);
}
void TestDataOffer::OnAction(uint32_t dnd_action) {
wl_data_offer_send_action(resource(), dnd_action);
}
} // namespace wl
|