Web Automation: elements larger than the viewport have incorrect in-view center point
[WebKit-https.git] / Source / WebCore / platform / ContextMenuItem.h
1 /*
2  * Copyright (C) 2006 Apple Inc.  All rights reserved.
3  * Copyright (C) 2010 Igalia S.L
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
15  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
18  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
25  */
26
27 #ifndef ContextMenuItem_h
28 #define ContextMenuItem_h
29
30 #include <wtf/text/WTFString.h>
31
32 namespace WebCore {
33
34 class ContextMenu;
35 class Image;
36
37 enum ContextMenuAction {
38     ContextMenuItemTagNoAction,
39     ContextMenuItemTagOpenLinkInNewWindow,
40     ContextMenuItemTagDownloadLinkToDisk,
41     ContextMenuItemTagCopyLinkToClipboard,
42     ContextMenuItemTagOpenImageInNewWindow,
43     ContextMenuItemTagDownloadImageToDisk,
44     ContextMenuItemTagCopyImageToClipboard,
45 #if PLATFORM(GTK)
46     ContextMenuItemTagCopyImageUrlToClipboard,
47 #endif
48     ContextMenuItemTagOpenFrameInNewWindow,
49     ContextMenuItemTagCopy,
50     ContextMenuItemTagGoBack,
51     ContextMenuItemTagGoForward,
52     ContextMenuItemTagStop,
53     ContextMenuItemTagReload,
54     ContextMenuItemTagCut,
55     ContextMenuItemTagPaste,
56 #if PLATFORM(GTK)
57     ContextMenuItemTagDelete,
58     ContextMenuItemTagSelectAll,
59     ContextMenuItemTagInputMethods,
60     ContextMenuItemTagUnicode,
61     ContextMenuItemTagUnicodeInsertLRMMark,
62     ContextMenuItemTagUnicodeInsertRLMMark,
63     ContextMenuItemTagUnicodeInsertLREMark,
64     ContextMenuItemTagUnicodeInsertRLEMark,
65     ContextMenuItemTagUnicodeInsertLROMark,
66     ContextMenuItemTagUnicodeInsertRLOMark,
67     ContextMenuItemTagUnicodeInsertPDFMark,
68     ContextMenuItemTagUnicodeInsertZWSMark,
69     ContextMenuItemTagUnicodeInsertZWJMark,
70     ContextMenuItemTagUnicodeInsertZWNJMark,
71 #endif
72     ContextMenuItemTagSpellingGuess,
73     ContextMenuItemTagNoGuessesFound,
74     ContextMenuItemTagIgnoreSpelling,
75     ContextMenuItemTagLearnSpelling,
76     ContextMenuItemTagOther,
77     ContextMenuItemTagSearchInSpotlight,
78     ContextMenuItemTagSearchWeb,
79     ContextMenuItemTagLookUpInDictionary,
80     ContextMenuItemTagOpenWithDefaultApplication,
81     ContextMenuItemPDFActualSize,
82     ContextMenuItemPDFZoomIn,
83     ContextMenuItemPDFZoomOut,
84     ContextMenuItemPDFAutoSize,
85     ContextMenuItemPDFSinglePage,
86     ContextMenuItemPDFFacingPages,
87     ContextMenuItemPDFContinuous,
88     ContextMenuItemPDFNextPage,
89     ContextMenuItemPDFPreviousPage,
90     ContextMenuItemTagOpenLink,
91     ContextMenuItemTagIgnoreGrammar,
92     ContextMenuItemTagSpellingMenu, // Spelling or Spelling/Grammar sub-menu
93     ContextMenuItemTagShowSpellingPanel,
94     ContextMenuItemTagCheckSpelling,
95     ContextMenuItemTagCheckSpellingWhileTyping,
96     ContextMenuItemTagCheckGrammarWithSpelling,
97     ContextMenuItemTagFontMenu, // Font sub-menu
98     ContextMenuItemTagShowFonts,
99     ContextMenuItemTagBold,
100     ContextMenuItemTagItalic,
101     ContextMenuItemTagUnderline,
102     ContextMenuItemTagOutline,
103     ContextMenuItemTagStyles,
104     ContextMenuItemTagShowColors,
105     ContextMenuItemTagSpeechMenu, // Speech sub-menu
106     ContextMenuItemTagStartSpeaking,
107     ContextMenuItemTagStopSpeaking,
108     ContextMenuItemTagWritingDirectionMenu, // Writing Direction sub-menu
109     ContextMenuItemTagDefaultDirection,
110     ContextMenuItemTagLeftToRight,
111     ContextMenuItemTagRightToLeft,
112     ContextMenuItemTagPDFSinglePageScrolling,
113     ContextMenuItemTagPDFFacingPagesScrolling,
114     ContextMenuItemTagInspectElement,
115     ContextMenuItemTagTextDirectionMenu, // Text Direction sub-menu
116     ContextMenuItemTagTextDirectionDefault,
117     ContextMenuItemTagTextDirectionLeftToRight,
118     ContextMenuItemTagTextDirectionRightToLeft,
119 #if PLATFORM(COCOA)
120     ContextMenuItemTagCorrectSpellingAutomatically,
121     ContextMenuItemTagSubstitutionsMenu,
122     ContextMenuItemTagShowSubstitutions,
123     ContextMenuItemTagSmartCopyPaste,
124     ContextMenuItemTagSmartQuotes,
125     ContextMenuItemTagSmartDashes,
126     ContextMenuItemTagSmartLinks,
127     ContextMenuItemTagTextReplacement,
128     ContextMenuItemTagTransformationsMenu,
129     ContextMenuItemTagMakeUpperCase,
130     ContextMenuItemTagMakeLowerCase,
131     ContextMenuItemTagCapitalize,
132     ContextMenuItemTagChangeBack,
133 #endif
134     ContextMenuItemTagOpenMediaInNewWindow,
135     ContextMenuItemTagDownloadMediaToDisk,
136     ContextMenuItemTagCopyMediaLinkToClipboard,
137     ContextMenuItemTagToggleMediaControls,
138     ContextMenuItemTagToggleMediaLoop,
139     ContextMenuItemTagEnterVideoFullscreen,
140     ContextMenuItemTagMediaPlayPause,
141     ContextMenuItemTagMediaMute,
142     ContextMenuItemTagDictationAlternative,
143     ContextMenuItemTagToggleVideoFullscreen,
144     ContextMenuItemTagShareMenu,
145     ContextMenuItemTagToggleVideoEnhancedFullscreen,
146     ContextMenuItemBaseCustomTag = 5000,
147     ContextMenuItemLastCustomTag = 5999,
148     ContextMenuItemBaseApplicationTag = 10000
149 };
150
151 enum ContextMenuItemType {
152     ActionType,
153     CheckableActionType,
154     SeparatorType,
155     SubmenuType
156 };
157
158 class ContextMenuItem {
159     WTF_MAKE_FAST_ALLOCATED;
160 public:
161     WEBCORE_EXPORT ContextMenuItem(ContextMenuItemType, ContextMenuAction, const String&, ContextMenu* subMenu = 0);
162     WEBCORE_EXPORT ContextMenuItem(ContextMenuItemType, ContextMenuAction, const String&, bool enabled, bool checked);
163
164     WEBCORE_EXPORT ~ContextMenuItem();
165
166     void setType(ContextMenuItemType);
167     WEBCORE_EXPORT ContextMenuItemType type() const;
168
169     void setAction(ContextMenuAction);
170     WEBCORE_EXPORT ContextMenuAction action() const;
171
172     void setChecked(bool = true);
173     WEBCORE_EXPORT bool checked() const;
174
175     void setEnabled(bool = true);
176     WEBCORE_EXPORT bool enabled() const;
177
178     void setSubMenu(ContextMenu*);
179
180     WEBCORE_EXPORT ContextMenuItem(ContextMenuAction, const String&, bool enabled, bool checked, const Vector<ContextMenuItem>& subMenuItems);
181     ContextMenuItem();
182
183     bool isNull() const;
184
185     void setTitle(const String& title) { m_title = title; }
186     const String& title() const { return m_title; }
187
188     const Vector<ContextMenuItem>& subMenuItems() const { return m_subMenuItems; }
189 private:
190     ContextMenuItemType m_type;
191     ContextMenuAction m_action;
192     String m_title;
193     bool m_enabled;
194     bool m_checked;
195     Vector<ContextMenuItem> m_subMenuItems;
196 };
197
198 }
199
200 #endif // ContextMenuItem_h