Emit last progress notification before calling dispatchDidFinishLoad
[WebKit-https.git] / Source / WebKit / qt / WebCoreSupport / DumpRenderTreeSupportQt.h
1 /*
2     Copyright (C) 2010 Robert Hogan <robert@roberthogan.net>
3     Copyright (C) 2008,2009,2010 Nokia Corporation and/or its subsidiary(-ies)
4     Copyright (C) 2007 Staikos Computing Services Inc.
5     Copyright (C) 2007 Apple Inc.
6
7     This library is free software; you can redistribute it and/or
8     modify it under the terms of the GNU Library General Public
9     License as published by the Free Software Foundation; either
10     version 2 of the License, or (at your option) any later version.
11
12     This library is distributed in the hope that it will be useful,
13     but WITHOUT ANY WARRANTY; without even the implied warranty of
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15     Library General Public License for more details.
16
17     You should have received a copy of the GNU Library General Public License
18     along with this library; see the file COPYING.LIB.  If not, write to
19     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20     Boston, MA 02110-1301, USA.
21 */
22
23 #ifndef DumpRenderTreeSupportQt_h
24 #define DumpRenderTreeSupportQt_h
25
26 #include "qwebkitglobal.h"
27 #include <QNetworkCookieJar>
28 #include <QVariant>
29
30 namespace WebCore {
31 class Text;
32 class Node;
33 }
34
35
36 #if defined(WTF_USE_V8) && WTF_USE_V8
37 namespace V8 {
38 namespace Bindings {
39 class QtDRTNodeRuntime;
40 }
41 }
42 #else
43 namespace JSC {
44 namespace Bindings {
45 class QtDRTNodeRuntime;
46 }
47 }
48 #endif
49
50 class QWebElement;
51 class QWebFrame;
52 class QWebPage;
53 class QWebHistoryItem;
54 class QWebScriptWorld;
55
56 QT_BEGIN_NAMESPACE
57 class QUrl;
58 QT_END_NAMESPACE
59
60 extern QMap<int, QWebScriptWorld*> m_worldMap;
61
62 // Used to pass WebCore::Node's to layout tests using LayoutTestController
63 class QWEBKIT_EXPORT QDRTNode {
64 public:
65     QDRTNode();
66     QDRTNode(const QDRTNode&);
67     QDRTNode &operator=(const QDRTNode&);
68     ~QDRTNode();
69
70 private:
71     explicit QDRTNode(WebCore::Node*);
72
73     friend class DumpRenderTreeSupportQt;
74
75 #if defined(WTF_USE_V8) && WTF_USE_V8
76     friend class V8::Bindings::QtDRTNodeRuntime;
77 #else
78     friend class JSC::Bindings::QtDRTNodeRuntime;
79 #endif
80
81     WebCore::Node* m_node;
82 };
83
84 Q_DECLARE_METATYPE(QDRTNode)
85
86 class QWEBKIT_EXPORT DumpRenderTreeSupportQt {
87
88 public:
89
90     DumpRenderTreeSupportQt();
91     ~DumpRenderTreeSupportQt();
92
93
94     static void executeCoreCommandByName(QWebPage* page, const QString& name, const QString& value);
95     static bool isCommandEnabled(QWebPage* page, const QString& name);
96     static bool findString(QWebPage* page, const QString& string, const QStringList& optionArray);
97     static void setSmartInsertDeleteEnabled(QWebPage* page, bool enabled);
98     static void setSelectTrailingWhitespaceEnabled(QWebPage* page, bool enabled);
99     static QVariantList selectedRange(QWebPage* page);
100     static QVariantList firstRectForCharacterRange(QWebPage* page, int location, int length);
101     static void confirmComposition(QWebPage*, const char* text);
102
103     static bool pauseAnimation(QWebFrame*, const QString& name, double time, const QString& elementId);
104     static bool pauseTransitionOfProperty(QWebFrame*, const QString& name, double time, const QString& elementId);
105     static bool pauseSVGAnimation(QWebFrame*, const QString& animationId, double time, const QString& elementId);
106     static void suspendActiveDOMObjects(QWebFrame* frame);
107     static void resumeActiveDOMObjects(QWebFrame* frame);
108
109     static void setDomainRelaxationForbiddenForURLScheme(bool forbidden, const QString& scheme);
110     static void setFrameFlatteningEnabled(QWebPage*, bool);
111     static void setCaretBrowsingEnabled(QWebPage* page, bool value);
112     static void setAuthorAndUserStylesEnabled(QWebPage*, bool);
113     static void setMediaType(QWebFrame* qframe, const QString& type);
114     static void setDumpRenderTreeModeEnabled(bool b);
115
116     static void garbageCollectorCollect();
117     static void garbageCollectorCollectOnAlternateThread(bool waitUntilDone);
118     static void setAutofilled(const QWebElement&, bool enabled);
119     static void setJavaScriptProfilingEnabled(QWebFrame*, bool enabled);
120     static void setValueForUser(const QWebElement&, const QString& value);
121     static int javaScriptObjectsCount();
122     static void clearScriptWorlds();
123     static void evaluateScriptInIsolatedWorld(QWebFrame* frame, int worldID, const QString& script);
124
125     static void webInspectorExecuteScript(QWebPage* page, long callId, const QString& script);
126     static void webInspectorShow(QWebPage* page);
127     static void webInspectorClose(QWebPage* page);
128
129     static QString webPageGroupName(QWebPage *page);
130     static QString counterValueForElementById(QWebFrame* frame, const QString& id);
131     static void webPageSetGroupName(QWebPage* page, const QString& groupName);
132     static void clearFrameName(QWebFrame* frame);
133     static void overwritePluginDirectories();
134     static int numberOfActiveAnimations(QWebFrame*);
135     static void suspendAnimations(QWebFrame*);
136     static void resumeAnimations(QWebFrame*);
137     static int numberOfPages(QWebFrame* frame, float width, float height);
138     static int pageNumberForElementById(QWebFrame* frame, const QString& id, float width, float height);
139     static bool hasDocumentElement(QWebFrame* frame);
140     static bool elementDoesAutoCompleteForElementWithId(QWebFrame* frame, const QString& elementId);
141     static void setEditingBehavior(QWebPage* page, const QString& editingBehavior);
142
143     static void clearAllApplicationCaches();
144
145     static void whiteListAccessFromOrigin(const QString& sourceOrigin, const QString& destinationProtocol, const QString& destinationHost, bool allowDestinationSubdomains);
146     static void removeWhiteListAccessFromOrigin(const QString& sourceOrigin, const QString& destinationProtocol, const QString& destinationHost, bool allowDestinationSubdomains);
147     static void resetOriginAccessWhiteLists();
148
149     static void activeMockDeviceOrientationClient(bool b);
150     static void removeMockDeviceOrientation();
151     static void setMockDeviceOrientation(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma);
152
153     static void resetGeolocationMock(QWebPage*);
154     static void setMockGeolocationPermission(QWebPage*, bool allowed);
155     static void setMockGeolocationPosition(QWebPage*, double latitude, double longitude, double accuracy);
156     static void setMockGeolocationError(QWebPage*, int errorCode, const QString& message);
157     static int numberOfPendingGeolocationPermissionRequests(QWebPage*);
158
159     static int workerThreadCount();
160
161     static QString markerTextForListItem(const QWebElement& listItem);
162     static QVariantMap computedStyleIncludingVisitedInfo(const QWebElement& element);
163     static QString plainText(const QVariant& rng);
164
165     static void dumpFrameLoader(bool b);
166     static void dumpProgressFinishedCallback(bool);
167     static void dumpUserGestureInFrameLoader(bool b);
168     static void dumpResourceLoadCallbacks(bool b);
169     static void dumpResourceResponseMIMETypes(bool b);
170     static void dumpResourceLoadCallbacksPath(const QString& path);
171     static void setWillSendRequestReturnsNullOnRedirect(bool b);
172     static void setWillSendRequestReturnsNull(bool b);
173     static void setWillSendRequestClearHeaders(const QStringList& headers);
174     static void dumpHistoryCallbacks(bool b);
175     static void dumpVisitedLinksCallbacks(bool b);
176
177     static void setDeferMainResourceDataLoad(bool b);
178
179     static void dumpEditingCallbacks(bool b);
180     static void dumpSetAcceptsEditing(bool b);
181
182     static void dumpNotification(bool b);
183
184     static QMap<QString, QWebHistoryItem> getChildHistoryItems(const QWebHistoryItem& historyItem);
185     static bool isTargetItem(const QWebHistoryItem& historyItem);
186     static QString historyItemTarget(const QWebHistoryItem& historyItem);
187
188     static bool shouldClose(QWebFrame* frame);
189
190     static void setCustomPolicyDelegate(bool enabled, bool permissive);
191
192     static bool isPageBoxVisible(QWebFrame* frame, int pageIndex);
193
194     static QString pageSizeAndMarginsInPixels(QWebFrame* frame, int pageIndex, int width, int height, int marginTop, int marginRight, int marginBottom, int marginLeft);
195     static QString pageProperty(QWebFrame* frame, const QString& propertyName, int pageNumber);
196     static void addUserStyleSheet(QWebPage* page, const QString& sourceCode);
197     static void simulateDesktopNotificationClick(const QString& title);
198     static QString viewportAsText(QWebPage*, int deviceDPI, const QSize& deviceSize, const QSize& availableSize);
199
200     static void scalePageBy(QWebFrame*, float scale, const QPoint& origin);
201
202     static QVariantList nodesFromRect(const QWebElement& document, int x, int y, unsigned top, unsigned right, unsigned bottom, unsigned left, bool ignoreClipping);
203     static QString responseMimeType(QWebFrame*);
204     static void clearOpener(QWebFrame*);
205     static void addURLToRedirect(const QString& origin, const QString& destination);
206     static QStringList contextMenu(QWebPage*);
207
208     static double defaultMinimumTimerInterval(); // Not really tied to WebView
209     static void setMinimumTimerInterval(QWebPage*, double);
210
211     static QUrl mediaContentUrlByElementId(QWebFrame*, const QString& elementId);
212     static void setAlternateHtml(QWebFrame*, const QString& html, const QUrl& baseUrl, const QUrl& failingUrl);
213
214     static QString layerTreeAsText(QWebFrame*);
215
216     static void injectInternalsObject(QWebFrame*);
217     static void resetInternalsObject(QWebFrame*);
218
219     static void setInteractiveFormValidationEnabled(QWebPage*, bool);
220
221     static void setDefersLoading(QWebPage*, bool flag);
222     static void goBack(QWebPage*);
223
224 #if QT_VERSION >= QT_VERSION_CHECK(4, 8, 0)
225     static bool thirdPartyCookiePolicyAllows(QNetworkCookieJar*, const QUrl&, const QUrl& firstPartyUrl);
226 #endif
227 };
228
229 #endif