1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213
|
/*
Copyright (C) 2010 Robert Hogan <robert@roberthogan.net>
Copyright (C) 2008,2009,2010 Nokia Corporation and/or its subsidiary(-ies)
Copyright (C) 2007 Staikos Computing Services Inc.
Copyright (C) 2007, 2012 Apple Inc.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef DumpRenderTreeSupportQt_h
#define DumpRenderTreeSupportQt_h
#include "qwebkitglobal.h"
#include <QNetworkCookieJar>
#include <QVariant>
#include <QVector>
typedef const struct OpaqueJSContext* JSContextRef;
typedef struct OpaqueJSValue* JSObjectRef;
namespace WebCore {
class Text;
class Node;
}
namespace JSC {
namespace Bindings {
class QtDRTNodeRuntime;
}
}
class QWebElement;
class QWebFrame;
class QWebFrameAdapter;
class QWebPageAdapter;
class QWebHistoryItem;
class QWebScriptWorld;
QT_BEGIN_NAMESPACE
class QUrl;
QT_END_NAMESPACE
extern QMap<int, QWebScriptWorld*> m_worldMap;
// Used to pass WebCore::Node's to layout tests using TestRunner
class QWEBKIT_EXPORT QDRTNode {
public:
QDRTNode();
QDRTNode(const QDRTNode&);
QDRTNode &operator=(const QDRTNode&);
~QDRTNode();
private:
explicit QDRTNode(WebCore::Node*);
friend class DumpRenderTreeSupportQt;
friend class QtDRTNodeRuntime;
WebCore::Node* m_node;
};
Q_DECLARE_METATYPE(QDRTNode)
class QtDRTNodeRuntime {
public:
static QDRTNode create(WebCore::Node*);
static WebCore::Node* get(const QDRTNode&);
static void initialize();
};
class QWEBKIT_EXPORT DumpRenderTreeSupportQt {
public:
DumpRenderTreeSupportQt();
~DumpRenderTreeSupportQt();
static void initialize();
static void executeCoreCommandByName(QWebPageAdapter*, const QString& name, const QString& value);
static bool isCommandEnabled(QWebPageAdapter*, const QString& name);
static QVariantList selectedRange(QWebPageAdapter*);
static QVariantList firstRectForCharacterRange(QWebPageAdapter*, int location, int length);
static void confirmComposition(QWebPageAdapter*, const char* text);
static void setDomainRelaxationForbiddenForURLScheme(bool forbidden, const QString& scheme);
static void setFrameFlatteningEnabled(QWebPageAdapter*, bool);
static void setCaretBrowsingEnabled(QWebPageAdapter*, bool value);
static void setAuthorAndUserStylesEnabled(QWebPageAdapter*, bool);
static void setDumpRenderTreeModeEnabled(bool);
static void garbageCollectorCollect();
static void garbageCollectorCollectOnAlternateThread(bool waitUntilDone);
static void setValueForUser(const QWebElement&, const QString& value);
static int javaScriptObjectsCount();
static void clearScriptWorlds();
static void evaluateScriptInIsolatedWorld(QWebFrameAdapter*, int worldID, const QString& script);
static void webInspectorExecuteScript(QWebPageAdapter*, long callId, const QString& script);
static void webInspectorShow(QWebPageAdapter*);
static void webInspectorClose(QWebPageAdapter*);
static QString webPageGroupName(QWebPageAdapter*);
static void webPageSetGroupName(QWebPageAdapter*, const QString& groupName);
static void clearFrameName(QWebFrameAdapter*);
static void overwritePluginDirectories();
static bool hasDocumentElement(QWebFrameAdapter*);
static void setWindowsBehaviorAsEditingBehavior(QWebPageAdapter*);
static void clearAllApplicationCaches();
static void whiteListAccessFromOrigin(const QString& sourceOrigin, const QString& destinationProtocol, const QString& destinationHost, bool allowDestinationSubdomains);
static void removeWhiteListAccessFromOrigin(const QString& sourceOrigin, const QString& destinationProtocol, const QString& destinationHost, bool allowDestinationSubdomains);
static void resetOriginAccessWhiteLists();
static void setMockDeviceOrientation(QWebPageAdapter*, bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma);
static void resetGeolocationMock(QWebPageAdapter*);
static void setMockGeolocationPermission(QWebPageAdapter*, bool allowed);
static void setMockGeolocationPosition(QWebPageAdapter*, double latitude, double longitude, double accuracy);
static void setMockGeolocationPositionUnavailableError(QWebPageAdapter*, const QString& message);
static int numberOfPendingGeolocationPermissionRequests(QWebPageAdapter*);
static void dumpFrameLoader(bool);
static void dumpProgressFinishedCallback(bool);
static void dumpUserGestureInFrameLoader(bool);
static void dumpResourceLoadCallbacks(bool);
static void dumpResourceResponseMIMETypes(bool);
static void dumpResourceLoadCallbacksPath(const QString& path);
static void dumpWillCacheResponseCallbacks(bool);
static void setWillSendRequestReturnsNullOnRedirect(bool);
static void setWillSendRequestReturnsNull(bool);
static void setWillSendRequestClearHeaders(const QStringList&);
static void dumpHistoryCallbacks(bool);
static void dumpVisitedLinksCallbacks(bool);
static void setDeferMainResourceDataLoad(bool);
static void dumpEditingCallbacks(bool);
static void dumpSetAcceptsEditing(bool);
static void dumpNotification(bool);
static QString viewportAsText(QWebPageAdapter*, int deviceDPI, const QSize& deviceSize, const QSize& availableSize);
static QMap<QString, QWebHistoryItem> getChildHistoryItems(const QWebHistoryItem&);
static bool isTargetItem(const QWebHistoryItem&);
static QString historyItemTarget(const QWebHistoryItem&);
static bool shouldClose(QWebFrameAdapter*);
static void setCustomPolicyDelegate(bool enabled, bool permissive);
static void addUserStyleSheet(QWebPageAdapter*, const QString& sourceCode);
static void removeUserStyleSheets(QWebPageAdapter*);
static void simulateDesktopNotificationClick(const QString& title);
static void scalePageBy(QWebFrameAdapter*, float scale, const QPoint& origin);
static QString responseMimeType(QWebFrameAdapter*);
static void clearOpener(QWebFrameAdapter*);
static void addURLToRedirect(const QString& origin, const QString& destination);
static QStringList contextMenu(QWebPageAdapter*);
static QUrl mediaContentUrlByElementId(QWebFrameAdapter*, const QString& elementId);
static void setAlternateHtml(QWebFrameAdapter*, const QString& html, const QUrl& baseUrl, const QUrl& failingUrl);
static void injectInternalsObject(QWebFrameAdapter*);
static void injectInternalsObject(JSContextRef);
static void resetInternalsObject(QWebFrameAdapter*);
static void resetInternalsObject(JSContextRef);
static void setInteractiveFormValidationEnabled(QWebPageAdapter*, bool);
static void setDefersLoading(QWebPageAdapter*, bool flag);
static void goBack(QWebPageAdapter*);
static bool thirdPartyCookiePolicyAllows(QWebPageAdapter*, const QUrl&, const QUrl& firstPartyUrl);
static void enableMockScrollbars();
static QImage paintPagesWithBoundaries(QWebFrameAdapter*);
static void setTrackRepaintRects(QWebFrameAdapter*, bool enable);
static bool trackRepaintRects(QWebFrameAdapter*);
static void getTrackedRepaintRects(QWebFrameAdapter*, QVector<QRect>& result);
static void setSeamlessIFramesEnabled(bool);
static void setShouldUseFontSmoothing(bool);
static QString frameRenderTreeDump(QWebFrameAdapter*);
static void clearNotificationPermissions();
static void disableDefaultTypesettingFeatures();
static void resetPageVisibility(QWebPageAdapter*);
static void getJSWindowObject(QWebFrameAdapter*, JSContextRef*, JSObjectRef*);
};
#endif
|