0b9219e595b8cabe28f10500973db2ebc1b71375
[WebKit-https.git] / Source / WebKit2 / 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 #ifndef AssistedNodeInformation_h
27 #define AssistedNodeInformation_h
28
29 #include "ArgumentCoders.h"
30 #include <WebCore/IntRect.h>
31 #include <WebCore/WebAutocapitalize.h>
32 #include <wtf/text/WTFString.h>
33
34 namespace WebKit {
35
36 enum WKInputType {
37     WKTypeNone,
38     WKTypeContentEditable,
39     WKTypeText,
40     WKTypePassword,
41     WKTypeTextArea,
42     WKTypeSearch,
43     WKTypeEmail,
44     WKTypeURL,
45     WKTypePhone,
46     WKTypeNumber,
47     WKTypeNumberPad,
48     WKTypeDate,
49     WKTypeDateTime,
50     WKTypeDateTimeLocal,
51     WKTypeMonth,
52     WKTypeWeek,
53     WKTypeTime,
54     WKTypeSelect
55 };
56
57 #if PLATFORM(IOS)
58 struct WKOptionItem {
59     WKOptionItem()
60         : isGroup(false)
61         , isSelected(false)
62         , disabled(false)
63         , parentGroupID(0)
64     {
65     }
66
67     WKOptionItem(const WKOptionItem& item)
68         : text(item.text)
69         , isGroup(item.isGroup)
70         , isSelected(item.isSelected)
71         , disabled(item.disabled)
72         , parentGroupID(item.parentGroupID)
73     {
74     }
75
76     WKOptionItem(const String& text, bool isGroup, int parentID, bool selected, bool disabled)
77         : text(text)
78         , isGroup(isGroup)
79         , isSelected(selected)
80         , disabled(disabled)
81         , parentGroupID(parentID)
82     {
83     }
84     String text;
85     bool isGroup;
86     bool isSelected;
87     bool disabled;
88     int parentGroupID;
89
90     void encode(IPC::ArgumentEncoder&) const;
91     static bool decode(IPC::ArgumentDecoder&, WKOptionItem&);
92 };
93
94 struct AssistedNodeInformation {
95     AssistedNodeInformation()
96         : minimumScaleFactor(-INFINITY)
97         , maximumScaleFactor(INFINITY)
98         , nodeFontSize(0)
99         , hasNextNode(false)
100         , hasPreviousNode(false)
101         , isAutocorrect(false)
102         , isMultiSelect(false)
103         , isReadOnly(false)
104         , allowsUserScaling(false)
105         , autocapitalizeType(WebAutocapitalizeTypeDefault)
106         , elementType(WKTypeNone)
107         , selectedIndex(-1)
108         , valueAsNumber(0)
109     {
110     }
111
112     WebCore::IntRect elementRect;
113     WebCore::IntRect selectionRect;
114     double minimumScaleFactor;
115     double maximumScaleFactor;
116     double nodeFontSize;
117     bool hasNextNode;
118     bool hasPreviousNode;
119     bool isAutocorrect;
120     bool isMultiSelect;
121     bool isReadOnly;
122     bool allowsUserScaling;
123     WebAutocapitalizeType autocapitalizeType;
124     WKInputType elementType;
125     String formAction;
126     Vector<WKOptionItem> selectOptions;
127     int selectedIndex;
128     String value;
129     double valueAsNumber;
130     String title;
131
132     void encode(IPC::ArgumentEncoder&) const;
133     static bool decode(IPC::ArgumentDecoder&, AssistedNodeInformation&);
134 };
135 #endif
136
137 }
138
139 #endif // InteractionInformationAtPosition_h