Move URL from WebCore to WTF
[WebKit-https.git] / Source / WebKit / Shared / AssistedNodeInformation.h
1 /*
2  * Copyright (C) 2014 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. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #pragma once
27
28 #include "ArgumentCoders.h"
29 #include <WebCore/AutocapitalizeTypes.h>
30 #include <WebCore/Autofill.h>
31 #include <WebCore/Color.h>
32 #include <WebCore/GraphicsLayer.h>
33 #include <WebCore/InputMode.h>
34 #include <WebCore/IntRect.h>
35 #include <wtf/URL.h>
36 #include <wtf/text/WTFString.h>
37
38 namespace WebKit {
39
40 enum class InputType {
41     None,
42     ContentEditable,
43     Text,
44     Password,
45     TextArea,
46     Search,
47     Email,
48     URL,
49     Phone,
50     Number,
51     NumberPad,
52     Date,
53     DateTime,
54     DateTimeLocal,
55     Month,
56     Week,
57     Time,
58     Select,
59     Drawing,
60 #if ENABLE(INPUT_TYPE_COLOR)
61     Color
62 #endif
63 };
64
65 #if PLATFORM(IOS_FAMILY)
66 struct OptionItem {
67     OptionItem() { }
68
69     OptionItem(const OptionItem& item)
70         : text(item.text)
71         , isGroup(item.isGroup)
72         , isSelected(item.isSelected)
73         , disabled(item.disabled)
74         , parentGroupID(item.parentGroupID)
75     {
76     }
77
78     OptionItem(const String& text, bool isGroup, int parentID, bool selected, bool disabled)
79         : text(text)
80         , isGroup(isGroup)
81         , isSelected(selected)
82         , disabled(disabled)
83         , parentGroupID(parentID)
84     {
85     }
86     String text;
87     bool isGroup { false };
88     bool isSelected { false };
89     bool disabled { false };
90     int parentGroupID { 0 };
91
92     void encode(IPC::Encoder&) const;
93     static std::optional<OptionItem> decode(IPC::Decoder&);
94 };
95
96 struct AssistedNodeInformation {
97     WebCore::IntRect elementRect;
98     WebCore::IntRect selectionRect;
99     double minimumScaleFactor { -INFINITY };
100     double maximumScaleFactor { INFINITY };
101     double maximumScaleFactorIgnoringAlwaysScalable { INFINITY };
102     double nodeFontSize { 0 };
103     bool hasNextNode { false };
104     WebCore::IntRect nextNodeRect;
105     bool hasPreviousNode { false };
106     WebCore::IntRect previousNodeRect;
107     bool isAutocorrect { false };
108     bool isRTL { false };
109     bool isMultiSelect { false };
110     bool isReadOnly {false };
111     bool allowsUserScaling { false };
112     bool allowsUserScalingIgnoringAlwaysScalable { false };
113     bool insideFixedPosition { false };
114     AutocapitalizeType autocapitalizeType { AutocapitalizeTypeDefault };
115     InputType elementType { InputType::None };
116     WebCore::InputMode inputMode { WebCore::InputMode::Unspecified };
117     String formAction;
118     Vector<OptionItem> selectOptions;
119     int selectedIndex { -1 };
120     String value;
121     double valueAsNumber { 0 };
122     String title;
123     bool acceptsAutofilledLoginCredentials { false };
124     bool isAutofillableUsernameField { false };
125     bool elementIsTransparent { false };
126     URL representingPageURL;
127     WebCore::AutofillFieldName autofillFieldName { WebCore::AutofillFieldName::None };
128     String placeholder;
129     String label;
130     String ariaLabel;
131     WebCore::GraphicsLayer::EmbeddedViewID embeddedViewID;
132 #if ENABLE(DATALIST_ELEMENT)
133     bool hasSuggestions { false };
134 #if ENABLE(INPUT_TYPE_COLOR)
135     Vector<WebCore::Color> suggestedColors;
136 #endif
137 #endif
138
139     uint64_t assistedNodeIdentifier { 0 };
140
141     void encode(IPC::Encoder&) const;
142     static bool decode(IPC::Decoder&, AssistedNodeInformation&);
143 };
144 #endif
145
146 }