2011-04-02 Dominic Cooney <dominicc@google.com>
[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 <webkit/webkitdefines.h>
24
25 #include <atk/atk.h>
26 #include <glib.h>
27 #include <webkit/webkitdefines.h>
28 #include <webkit/webkitwebframe.h>
29 #include <wtf/text/CString.h>
30
31 namespace WebKit {
32
33 enum {
34     WebFindOptionsCaseInsensitive = 1 << 0,
35     WebFindOptionsAtWordStarts = 1 << 1,
36     WebFindOptionsTreatMedialCapitalAsWordStart = 1 << 2,
37     WebFindOptionsBackwards = 1 << 3,
38     WebFindOptionsWrapAround = 1 << 4,
39     WebFindOptionsStartInSelection = 1 << 5
40 };
41
42 }
43 typedef unsigned WebKitFindOptions;
44
45 class DumpRenderTreeSupportGtk {
46
47 public:
48     DumpRenderTreeSupportGtk();
49     ~DumpRenderTreeSupportGtk();
50
51     static void setDumpRenderTreeModeEnabled(bool);
52     static bool dumpRenderTreeModeEnabled();
53
54     static void setLinksIncludedInFocusChain(bool);
55     static bool linksIncludedInFocusChain();
56     static void setSelectTrailingWhitespaceEnabled(bool);
57     static bool selectTrailingWhitespaceEnabled();
58
59     static JSValueRef nodesFromRect(JSContextRef context, JSValueRef value, int x, int y, unsigned top, unsigned right, unsigned bottom, unsigned left, bool ignoreClipping);
60     static void dumpConfigurationForViewport(WebKitWebView* webView, gint deviceDPI, gint deviceWidth, gint deviceHeight, gint availableWidth, gint availableHeight);
61
62     static void clearOpener(WebKitWebFrame*);
63
64     static JSValueRef shadowRoot(JSContextRef, JSValueRef);
65
66     // FIXME: Move these to webkitwebframe.h once their API has been discussed.
67     static GSList* getFrameChildren(WebKitWebFrame*);
68     static WTF::CString getInnerText(WebKitWebFrame*);
69     static WTF::CString dumpRenderTree(WebKitWebFrame*);
70     static WTF::CString counterValueForElementById(WebKitWebFrame*, const char* id);
71     static int pageNumberForElementById(WebKitWebFrame*, const char* id, float pageWidth, float pageHeight);
72     static int numberOfPagesForFrame(WebKitWebFrame*, float pageWidth, float pageHeight);
73     static WTF::CString pageProperty(WebKitWebFrame*, const char* propertyName, int pageNumber);
74     static bool isPageBoxVisible(WebKitWebFrame*, int pageNumber);
75     static WTF::CString pageSizeAndMarginsInPixels(WebKitWebFrame*, int pageNumber, int width, int height, int marginTop, int marginRight, int marginBottom, int marginLeft);
76     static void addUserStyleSheet(WebKitWebFrame*, const char* sourceCode, bool allFrames);
77     static guint getPendingUnloadEventCount(WebKitWebFrame*);
78     static bool pauseAnimation(WebKitWebFrame*, const char* name, double time, const char* element);
79     static bool pauseTransition(WebKitWebFrame*, const char* name, double time, const char* element);
80     static bool pauseSVGAnimation(WebKitWebFrame*, const char* animationId, double time, const char* elementId);
81     static WTF::CString markerTextForListItem(WebKitWebFrame*, JSContextRef, JSValueRef nodeObject);
82     static unsigned int numberOfActiveAnimations(WebKitWebFrame*);
83     static void suspendAnimations(WebKitWebFrame*);
84     static void resumeAnimations(WebKitWebFrame*);
85     static void clearMainFrameName(WebKitWebFrame*);
86     static AtkObject* getFocusedAccessibleElement(WebKitWebFrame*);
87     static AtkObject* getRootAccessibleElement(WebKitWebFrame*);
88     static void layoutFrame(WebKitWebFrame*);
89     static void setAutofilled(JSContextRef, JSValueRef, bool);
90     static void setValueForUser(JSContextRef, JSValueRef, JSStringRef);
91
92     // WebKitWebView
93     static void executeCoreCommandByName(WebKitWebView*, const gchar* name, const gchar* value);
94     static bool isCommandEnabled(WebKitWebView*, const gchar* name);
95     static bool findString(WebKitWebView*, const gchar*, WebKitFindOptions);
96     static void setComposition(WebKitWebView*, const char* text, int start, int end);
97     static void confirmComposition(WebKitWebView*, const char* text);
98     static bool firstRectForCharacterRange(WebKitWebView*, int location, int length, GdkRectangle*);
99     static bool selectedRange(WebKitWebView*, int* start, int* end);
100     static double defaultMinimumTimerInterval(); // Not really tied to WebView
101     static void setMinimumTimerInterval(WebKitWebView*, double);
102
103     // GC
104     static void gcCollectJavascriptObjects();
105     static void gcCollectJavascriptObjectsOnAlternateThread(bool waitUntilDone);
106     static unsigned long gcCountJavascriptObjects();
107
108     static void whiteListAccessFromOrigin(const gchar* sourceOrigin, const gchar* destinationProtocol, const gchar* destinationHost, bool allowDestinationSubdomains);
109     static void resetOriginAccessWhiteLists();
110     static unsigned int workerThreadCount();
111     static bool webkitWebFrameSelectionHasSpellingMarker(WebKitWebFrame*, gint from, gint length);
112
113 private:
114     static bool s_drtRun;
115     static bool s_linksIncludedInTabChain;
116     static bool s_selectTrailingWhitespaceEnabled;
117 };
118
119 #endif