• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 <QVariant>
28 
29 namespace WebCore {
30 class Text;
31 class Node;
32 }
33 
34 
35 #if defined(WTF_USE_V8) && WTF_USE_V8
36 namespace V8 {
37 namespace Bindings {
38 class QtDRTNodeRuntime;
39 }
40 }
41 #else
42 namespace JSC {
43 namespace Bindings {
44 class QtDRTNodeRuntime;
45 }
46 }
47 #endif
48 
49 class QWebElement;
50 class QWebFrame;
51 class QWebPage;
52 class QWebHistoryItem;
53 class QWebScriptWorld;
54 class QUrl;
55 
56 extern QMap<int, QWebScriptWorld*> m_worldMap;
57 
58 // Used to pass WebCore::Node's to layout tests using LayoutTestController
59 class QWEBKIT_EXPORT QDRTNode {
60 public:
61     QDRTNode();
62     QDRTNode(const QDRTNode&);
63     QDRTNode &operator=(const QDRTNode&);
64     ~QDRTNode();
65 
66 private:
67     explicit QDRTNode(WebCore::Node*);
68 
69     friend class DumpRenderTreeSupportQt;
70 
71 #if defined(WTF_USE_V8) && WTF_USE_V8
72     friend class V8::Bindings::QtDRTNodeRuntime;
73 #else
74     friend class JSC::Bindings::QtDRTNodeRuntime;
75 #endif
76 
77     WebCore::Node* m_node;
78 };
79 
Q_DECLARE_METATYPE(QDRTNode)80 Q_DECLARE_METATYPE(QDRTNode)
81 
82 class QWEBKIT_EXPORT DumpRenderTreeSupportQt {
83 
84 public:
85 
86     DumpRenderTreeSupportQt();
87     ~DumpRenderTreeSupportQt();
88 
89 
90     static void executeCoreCommandByName(QWebPage* page, const QString& name, const QString& value);
91     static bool isCommandEnabled(QWebPage* page, const QString& name);
92     static bool findString(QWebPage* page, const QString& string, const QStringList& optionArray);
93     static void setSmartInsertDeleteEnabled(QWebPage* page, bool enabled);
94     static void setSelectTrailingWhitespaceEnabled(QWebPage* page, bool enabled);
95     static QVariantList selectedRange(QWebPage* page);
96     static QVariantList firstRectForCharacterRange(QWebPage* page, int location, int length);
97 
98     static bool pauseAnimation(QWebFrame*, const QString& name, double time, const QString& elementId);
99     static bool pauseTransitionOfProperty(QWebFrame*, const QString& name, double time, const QString& elementId);
100     static bool pauseSVGAnimation(QWebFrame*, const QString& animationId, double time, const QString& elementId);
101     static void suspendActiveDOMObjects(QWebFrame* frame);
102     static void resumeActiveDOMObjects(QWebFrame* frame);
103 
104     static void setDomainRelaxationForbiddenForURLScheme(bool forbidden, const QString& scheme);
105     static void setFrameFlatteningEnabled(QWebPage*, bool);
106     static void setCaretBrowsingEnabled(QWebPage* page, bool value);
107     static void setMediaType(QWebFrame* qframe, const QString& type);
108     static void setDumpRenderTreeModeEnabled(bool b);
109 
110     static void garbageCollectorCollect();
111     static void garbageCollectorCollectOnAlternateThread(bool waitUntilDone);
112     static void setJavaScriptProfilingEnabled(QWebFrame*, bool enabled);
113     static int javaScriptObjectsCount();
114     static void clearScriptWorlds();
115     static void evaluateScriptInIsolatedWorld(QWebFrame* frame, int worldID, const QString& script);
116 
117     static void setTimelineProfilingEnabled(QWebPage*, bool enabled);
118     static void webInspectorExecuteScript(QWebPage* page, long callId, const QString& script);
119     static void webInspectorShow(QWebPage* page);
120     static void webInspectorClose(QWebPage* page);
121 
122     static QString webPageGroupName(QWebPage *page);
123     static QString counterValueForElementById(QWebFrame* frame, const QString& id);
124     static void webPageSetGroupName(QWebPage* page, const QString& groupName);
125     static void clearFrameName(QWebFrame* frame);
126     static void overwritePluginDirectories();
127     static int numberOfActiveAnimations(QWebFrame*);
128     static void suspendAnimations(QWebFrame*);
129     static void resumeAnimations(QWebFrame*);
130     static int numberOfPages(QWebFrame* frame, float width, float height);
131     static int pageNumberForElementById(QWebFrame* frame, const QString& id, float width, float height);
132     static bool hasDocumentElement(QWebFrame* frame);
133     static bool elementDoesAutoCompleteForElementWithId(QWebFrame* frame, const QString& elementId);
134     static void setEditingBehavior(QWebPage* page, const QString& editingBehavior);
135 
136     static void clearAllApplicationCaches();
137 
138     static void whiteListAccessFromOrigin(const QString& sourceOrigin, const QString& destinationProtocol, const QString& destinationHost, bool allowDestinationSubdomains);
139     static void removeWhiteListAccessFromOrigin(const QString& sourceOrigin, const QString& destinationProtocol, const QString& destinationHost, bool allowDestinationSubdomains);
140     static void resetOriginAccessWhiteLists();
141 
142     static void activeMockDeviceOrientationClient(bool b);
143     static void removeMockDeviceOrientation();
144     static void setMockDeviceOrientation(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma);
145 
146     static void resetGeolocationMock(QWebPage*);
147     static void setMockGeolocationPermission(QWebPage*, bool allowed);
148     static void setMockGeolocationPosition(QWebPage*, double latitude, double longitude, double accuracy);
149     static void setMockGeolocationError(QWebPage*, int errorCode, const QString& message);
150     static int numberOfPendingGeolocationPermissionRequests(QWebPage*);
151 
152     static int workerThreadCount();
153 
154     static QString markerTextForListItem(const QWebElement& listItem);
155     static QVariantMap computedStyleIncludingVisitedInfo(const QWebElement& element);
156     static QString plainText(const QVariant& rng);
157 
158     static void dumpFrameLoader(bool b);
159     static void dumpUserGestureInFrameLoader(bool b);
160     static void dumpResourceLoadCallbacks(bool b);
161     static void dumpResourceResponseMIMETypes(bool b);
162     static void dumpResourceLoadCallbacksPath(const QString& path);
163     static void setWillSendRequestReturnsNullOnRedirect(bool b);
164     static void setWillSendRequestReturnsNull(bool b);
165     static void setWillSendRequestClearHeaders(const QStringList& headers);
166     static void dumpHistoryCallbacks(bool b);
167     static void dumpVisitedLinksCallbacks(bool b);
168 
169     static void setDeferMainResourceDataLoad(bool b);
170 
171     static void dumpEditingCallbacks(bool b);
172     static void dumpSetAcceptsEditing(bool b);
173 
174     static void dumpNotification(bool b);
175 
176     static QMap<QString, QWebHistoryItem> getChildHistoryItems(const QWebHistoryItem& historyItem);
177     static bool isTargetItem(const QWebHistoryItem& historyItem);
178     static QString historyItemTarget(const QWebHistoryItem& historyItem);
179 
180     static bool shouldClose(QWebFrame* frame);
181 
182     static void setCustomPolicyDelegate(bool enabled, bool permissive);
183 
184     static bool isPageBoxVisible(QWebFrame* frame, int pageIndex);
185 
186     static QString pageSizeAndMarginsInPixels(QWebFrame* frame, int pageIndex, int width, int height, int marginTop, int marginRight, int marginBottom, int marginLeft);
187     static QString pageProperty(QWebFrame* frame, const QString& propertyName, int pageNumber);
188     static void addUserStyleSheet(QWebPage* page, const QString& sourceCode);
189     static void simulateDesktopNotificationClick(const QString& title);
190     static QString viewportAsText(QWebPage*, int deviceDPI, const QSize& deviceSize, const QSize& availableSize);
191 
192     static QVariantList nodesFromRect(const QWebElement& document, int x, int y, unsigned top, unsigned right, unsigned bottom, unsigned left, bool ignoreClipping);
193     static QString responseMimeType(QWebFrame*);
194     static void clearOpener(QWebFrame*);
195     static void addURLToRedirect(const QString& origin, const QString& destination);
196     static QStringList contextMenu(QWebPage*);
197 
198     static double defaultMinimumTimerInterval(); // Not really tied to WebView
199     static void setMinimumTimerInterval(QWebPage*, double);
200 
201     static QUrl mediaContentUrlByElementId(QWebFrame*, const QString& elementId);
202     static void setAlternateHtml(QWebFrame*, const QString& html, const QUrl& baseUrl, const QUrl& failingUrl);
203 
204     static QVariant shadowRoot(const QWebElement&);
205 };
206 
207 #endif
208