7e6e1fa9b1f51c1c49d9757f31860bf16e68381e
[WebKit-https.git] / Source / WebKit / gtk / WebCoreSupport / DumpRenderTreeSupportGtk.h
1 /*
2  *  Copyright (C) Research In Motion Limited 2010. All rights reserved.
3  *
4  *  This library is free software; you can redistribute it and/or
5  *  modify it under the terms of the GNU Lesser General Public
6  *  License as published by the Free Software Foundation; either
7  *  version 2 of the License, or (at your option) any later version.
8  *
9  *  This library is distributed in the hope that it will be useful,
10  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  *  Lesser General Public License for more details.
13  *
14  *  You should have received a copy of the GNU Lesser General Public
15  *  License along with this library; if not, write to the Free Software
16  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
17  */
18
19 #ifndef DumpRenderTreeSupportGtk_h
20 #define DumpRenderTreeSupportGtk_h
21
22 #include "JSStringRef.h"
23 #include <atk/atk.h>
24 #include <glib.h>
25 #include <webkit/webkitdefines.h>
26 #include <wtf/text/CString.h>
27
28 namespace WebKit {
29
30 enum {
31     WebFindOptionsCaseInsensitive = 1 << 0,
32     WebFindOptionsAtWordStarts = 1 << 1,
33     WebFindOptionsTreatMedialCapitalAsWordStart = 1 << 2,
34     WebFindOptionsBackwards = 1 << 3,
35     WebFindOptionsWrapAround = 1 << 4,
36     WebFindOptionsStartInSelection = 1 << 5
37 };
38
39 }
40 typedef unsigned WebKitFindOptions;
41
42 class DumpRenderTreeSupportGtk {
43
44 public:
45     DumpRenderTreeSupportGtk();
46     ~DumpRenderTreeSupportGtk();
47
48     static void setDumpRenderTreeModeEnabled(bool);
49     static bool dumpRenderTreeModeEnabled();
50
51     static void setLinksIncludedInFocusChain(bool);
52     static bool linksIncludedInFocusChain();
53     static void setSelectTrailingWhitespaceEnabled(bool);
54     static bool selectTrailingWhitespaceEnabled();
55
56     static void clearOpener(WebKitWebFrame*);
57
58     // FIXME: Move these to webkitwebframe.h once their API has been discussed.
59     static GSList* getFrameChildren(WebKitWebFrame*);
60     static WTF::CString getInnerText(WebKitWebFrame*);
61     static WTF::CString dumpRenderTree(WebKitWebFrame*);
62     static void addUserStyleSheet(WebKitWebFrame*, const char* sourceCode, bool allFrames);
63     static guint getPendingUnloadEventCount(WebKitWebFrame*);
64     static bool pauseAnimation(WebKitWebFrame*, const char* name, double time, const char* element);
65     static bool pauseTransition(WebKitWebFrame*, const char* name, double time, const char* element);
66     static WTF::CString markerTextForListItem(WebKitWebFrame*, JSContextRef, JSValueRef nodeObject);
67     static unsigned int numberOfActiveAnimations(WebKitWebFrame*);
68     static void clearMainFrameName(WebKitWebFrame*);
69     static AtkObject* getFocusedAccessibleElement(WebKitWebFrame*);
70     static AtkObject* getRootAccessibleElement(WebKitWebFrame*);
71     static void layoutFrame(WebKitWebFrame*);
72     static void setAutofilled(JSContextRef, JSValueRef, bool);
73     static void setValueForUser(JSContextRef, JSValueRef, JSStringRef);
74     static bool shouldClose(WebKitWebFrame*);
75     static bool elementDoesAutoCompleteForElementWithId(WebKitWebFrame*, JSStringRef);
76     static JSValueRef computedStyleIncludingVisitedInfo(JSContextRef, JSValueRef);
77
78     // WebKitWebView
79     static void executeCoreCommandByName(WebKitWebView*, const gchar* name, const gchar* value);
80     static bool isCommandEnabled(WebKitWebView*, const gchar* name);
81     static bool findString(WebKitWebView*, const gchar*, WebKitFindOptions);
82     static double defaultMinimumTimerInterval(); // Not really tied to WebView
83     static void setMinimumTimerInterval(WebKitWebView*, double);
84     static void rectangleForSelection(WebKitWebFrame*, cairo_rectangle_int_t*);
85     static void scalePageBy(WebKitWebView*, float, float, float);
86     static void setDefersLoading(WebKitWebView*, bool);
87     static void setSmartInsertDeleteEnabled(WebKitWebView*, bool);
88     static void forceWebViewPaint(WebKitWebView*);
89
90     // Accessibility
91     static WTF::CString accessibilityHelpText(AtkObject*);
92
93     // TextInputController
94     static void setComposition(WebKitWebView*, const char*, int start, int length);
95     static bool hasComposition(WebKitWebView*);
96     static bool compositionRange(WebKitWebView*, int* start, int* length);
97     static void confirmComposition(WebKitWebView*, const char*);
98     static bool firstRectForCharacterRange(WebKitWebView*, int location, int length, cairo_rectangle_int_t*);
99     static bool selectedRange(WebKitWebView*, int* start, int* length);
100     static void doCommand(WebKitWebView*, const char*);
101     // GC
102     static void gcCollectJavascriptObjects();
103     static void gcCollectJavascriptObjectsOnAlternateThread(bool waitUntilDone);
104     static unsigned long gcCountJavascriptObjects();
105
106     static void whiteListAccessFromOrigin(const gchar* sourceOrigin, const gchar* destinationProtocol, const gchar* destinationHost, bool allowDestinationSubdomains);
107     static void removeWhiteListAccessFromOrigin(const char* sourceOrigin, const char* destinationProtocol, const char* destinationHost, bool allowDestinationSubdomains);
108     static void resetOriginAccessWhiteLists();
109     static unsigned int workerThreadCount();
110
111     static void resetGeolocationClientMock(WebKitWebView*);
112     static void setMockGeolocationPermission(WebKitWebView*, bool allowed);
113     static void setMockGeolocationPosition(WebKitWebView*, double latitude, double longitude, double accuracy);
114     static void setMockGeolocationError(WebKitWebView*, int errorCode, const gchar* errorMessage);
115     static int numberOfPendingGeolocationPermissionRequests(WebKitWebView*);
116
117     static void setPageCacheSupportsPlugins(WebKitWebView*, bool enabled);
118     static void setCSSGridLayoutEnabled(WebKitWebView*, bool enabled);
119     static void setCSSRegionsEnabled(WebKitWebView*, bool enabled);
120
121     static void deliverAllMutationsIfNecessary();
122     static void setDomainRelaxationForbiddenForURLScheme(bool forbidden, const char* urlScheme);
123     static void setSerializeHTTPLoads(bool enabled);
124
125     static void setTracksRepaints(WebKitWebFrame*, bool tracks);
126     static bool isTrackingRepaints(WebKitWebFrame*);
127     static GSList* trackedRepaintRects(WebKitWebFrame*);
128     static void resetTrackedRepaints(WebKitWebFrame*);
129
130     static void clearMemoryCache();
131
132 private:
133     static bool s_drtRun;
134     static bool s_linksIncludedInTabChain;
135     static bool s_selectTrailingWhitespaceEnabled;
136 };
137
138 #endif