| /* |
| * Copyright (C) 2007-2020 Apple Inc. All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * 1. Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * 2. Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in the |
| * documentation and/or other materials provided with the distribution. |
| * |
| * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY |
| * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
| * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR |
| * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
| * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
| * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
| * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
| * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| |
| #pragma once |
| |
| #include <limits.h> |
| #include <wtf/EnumTraits.h> |
| #include <wtf/Forward.h> |
| #include <wtf/OptionSet.h> |
| |
| namespace WebCore { |
| |
| // See WebDragDestinationAction and WKDragDestinationAction. |
| enum class DragDestinationAction : uint8_t { |
| DHTML = 1, |
| Edit = 2, |
| Load = 4 |
| }; |
| |
| constexpr OptionSet<DragDestinationAction> anyDragDestinationAction() |
| { |
| return OptionSet<DragDestinationAction> { DragDestinationAction::DHTML, DragDestinationAction::Edit, DragDestinationAction::Load }; |
| } |
| |
| // See WebDragSourceAction. |
| enum class DragSourceAction : uint8_t { |
| DHTML = 1 << 0, |
| Image = 1 << 1, |
| Link = 1 << 2, |
| Selection = 1 << 3, |
| #if ENABLE(ATTACHMENT_ELEMENT) |
| Attachment = 1 << 4, |
| #endif |
| #if ENABLE(INPUT_TYPE_COLOR) |
| Color = 1 << 5, |
| #endif |
| #if ENABLE(MODEL_ELEMENT) |
| Model = 1 << 6, |
| #endif |
| }; |
| |
| constexpr OptionSet<DragSourceAction> anyDragSourceAction() |
| { |
| return OptionSet<DragSourceAction> { |
| DragSourceAction::DHTML, |
| DragSourceAction::Image, |
| DragSourceAction::Link, |
| DragSourceAction::Selection |
| #if ENABLE(ATTACHMENT_ELEMENT) |
| , DragSourceAction::Attachment |
| #endif |
| #if ENABLE(INPUT_TYPE_COLOR) |
| , DragSourceAction::Color |
| #endif |
| #if ENABLE(MODEL_ELEMENT) |
| , DragSourceAction::Model |
| #endif |
| }; |
| } |
| |
| // See NSDragOperation, _UIDragOperation and UIDropOperation. |
| enum class DragOperation : uint8_t { |
| Copy = 1, |
| Link = 2, |
| Generic = 4, |
| Private = 8, |
| Move = 16, |
| Delete = 32, |
| }; |
| |
| constexpr OptionSet<DragOperation> anyDragOperation() |
| { |
| return { DragOperation::Copy, DragOperation::Link, DragOperation::Generic, DragOperation::Private, DragOperation::Move, DragOperation::Delete }; |
| } |
| |
| enum class MayExtendDragSession : bool { No, Yes }; |
| enum class HasNonDefaultPasteboardData : bool { No, Yes }; |
| enum class DragHandlingMethod : uint8_t { None, EditPlainText, EditRichText, UploadFile, PageLoad, SetColor, NonDefault }; |
| |
| } // namespace WebCore |
| |
| namespace WTF { |
| |
| template<> struct EnumTraits<WebCore::DragDestinationAction> { |
| using values = EnumValues< |
| WebCore::DragDestinationAction, |
| WebCore::DragDestinationAction::DHTML, |
| WebCore::DragDestinationAction::Edit, |
| WebCore::DragDestinationAction::Load |
| >; |
| }; |
| |
| template<> struct EnumTraits<WebCore::DragHandlingMethod> { |
| using values = EnumValues< |
| WebCore::DragHandlingMethod, |
| WebCore::DragHandlingMethod::None, |
| WebCore::DragHandlingMethod::EditPlainText, |
| WebCore::DragHandlingMethod::EditRichText, |
| WebCore::DragHandlingMethod::UploadFile, |
| WebCore::DragHandlingMethod::PageLoad, |
| WebCore::DragHandlingMethod::SetColor, |
| WebCore::DragHandlingMethod::NonDefault |
| >; |
| }; |
| |
| template<> struct EnumTraits<WebCore::DragOperation> { |
| using values = EnumValues< |
| WebCore::DragOperation, |
| WebCore::DragOperation::Copy, |
| WebCore::DragOperation::Link, |
| WebCore::DragOperation::Generic, |
| WebCore::DragOperation::Private, |
| WebCore::DragOperation::Move, |
| WebCore::DragOperation::Delete |
| >; |
| }; |
| |
| template<> struct EnumTraits<WebCore::DragSourceAction> { |
| using values = EnumValues< |
| WebCore::DragSourceAction, |
| WebCore::DragSourceAction::DHTML, |
| WebCore::DragSourceAction::Image, |
| WebCore::DragSourceAction::Link, |
| WebCore::DragSourceAction::Selection |
| #if ENABLE(ATTACHMENT_ELEMENT) |
| , WebCore::DragSourceAction::Attachment |
| #endif |
| #if ENABLE(INPUT_TYPE_COLOR) |
| , WebCore::DragSourceAction::Color |
| #endif |
| #if ENABLE(MODEL_ELEMENT) |
| , WebCore::DragSourceAction::Model |
| #endif |
| >; |
| }; |
| |
| } // namespace WTF |