1/*
2 * Copyright (C) 2007-2018 Apple Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26#pragma once
27
28#include <limits.h>
29#include <wtf/Forward.h>
30
31namespace WebCore {
32
33// WebCoreDragDestinationAction should be kept in sync with WebDragDestinationAction.
34typedef enum {
35 DragDestinationActionNone = 0,
36 DragDestinationActionDHTML = 1,
37 DragDestinationActionEdit = 2,
38 DragDestinationActionLoad = 4,
39 DragDestinationActionAny = UINT_MAX
40} DragDestinationAction;
41
42// WebCoreDragSourceAction should be kept in sync with WebDragSourceAction.
43typedef enum {
44 DragSourceActionNone = 0,
45 DragSourceActionDHTML = 1,
46 DragSourceActionImage = 2,
47 DragSourceActionLink = 4,
48 DragSourceActionSelection = 8,
49#if ENABLE(ATTACHMENT_ELEMENT)
50 DragSourceActionAttachment = 16,
51#endif
52#if ENABLE(INPUT_TYPE_COLOR)
53 DragSourceActionColor = 32,
54#endif
55 DragSourceActionAny = UINT_MAX
56} DragSourceAction;
57
58// Matches NSDragOperation.
59typedef enum {
60 DragOperationNone = 0,
61 DragOperationCopy = 1,
62 DragOperationLink = 2,
63 DragOperationGeneric = 4,
64 DragOperationPrivate = 8,
65 DragOperationMove = 16,
66 DragOperationDelete = 32,
67 DragOperationEvery = UINT_MAX
68} DragOperation;
69
70enum class MayExtendDragSession : bool { No, Yes };
71enum class HasNonDefaultPasteboardData : bool { No, Yes };
72enum class DragHandlingMethod : uint8_t { None, EditPlainText, EditRichText, UploadFile, PageLoad, SetColor, NonDefault };
73
74} // namespace WebCore
75
76namespace WTF {
77
78template<> struct EnumTraits<WebCore::DragHandlingMethod> {
79 using values = EnumValues<
80 WebCore::DragHandlingMethod,
81 WebCore::DragHandlingMethod::None,
82 WebCore::DragHandlingMethod::EditPlainText,
83 WebCore::DragHandlingMethod::EditRichText,
84 WebCore::DragHandlingMethod::UploadFile,
85 WebCore::DragHandlingMethod::PageLoad,
86 WebCore::DragHandlingMethod::SetColor,
87 WebCore::DragHandlingMethod::NonDefault
88 >;
89};
90
91} // namespace WTF
92