/* Copyright (C) 2010 Robert Hogan Copyright (C) 2008,2009,2010 Nokia Corporation and/or its subsidiary(-ies) Copyright (C) 2007 Staikos Computing Services Inc. Copyright (C) 2007 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 namespace WebCore { class Text; class Node; } #if defined(WTF_USE_V8) && WTF_USE_V8 namespace V8 { namespace Bindings { class QtDRTNodeRuntime; } } #else namespace JSC { namespace Bindings { class QtDRTNodeRuntime; } } #endif class QWebElement; class QWebFrame; class QWebPage; class QWebHistoryItem; class QWebScriptWorld; class QUrl; extern QMap m_worldMap; // Used to pass WebCore::Node's to layout tests using LayoutTestController class QWEBKIT_EXPORT QDRTNode { public: QDRTNode(); QDRTNode(const QDRTNode&); QDRTNode &operator=(const QDRTNode&); ~QDRTNode(); private: explicit QDRTNode(WebCore::Node*); friend class DumpRenderTreeSupportQt; #if defined(WTF_USE_V8) && WTF_USE_V8 friend class V8::Bindings::QtDRTNodeRuntime; #else friend class JSC::Bindings::QtDRTNodeRuntime; #endif WebCore::Node* m_node; }; Q_DECLARE_METATYPE(QDRTNode) class QWEBKIT_EXPORT DumpRenderTreeSupportQt { public: DumpRenderTreeSupportQt(); ~DumpRenderTreeSupportQt(); static void executeCoreCommandByName(QWebPage* page, const QString& name, const QString& value); static bool isCommandEnabled(QWebPage* page, const QString& name); static bool findString(QWebPage* page, const QString& string, const QStringList& optionArray); static void setSmartInsertDeleteEnabled(QWebPage* page, bool enabled); static void setSelectTrailingWhitespaceEnabled(QWebPage* page, bool enabled); static QVariantList selectedRange(QWebPage* page); static QVariantList firstRectForCharacterRange(QWebPage* page, int location, int length); static bool pauseAnimation(QWebFrame*, const QString& name, double time, const QString& elementId); static bool pauseTransitionOfProperty(QWebFrame*, const QString& name, double time, const QString& elementId); static bool pauseSVGAnimation(QWebFrame*, const QString& animationId, double time, const QString& elementId); static void suspendActiveDOMObjects(QWebFrame* frame); static void resumeActiveDOMObjects(QWebFrame* frame); static void setDomainRelaxationForbiddenForURLScheme(bool forbidden, const QString& scheme); static void setFrameFlatteningEnabled(QWebPage*, bool); static void setCaretBrowsingEnabled(QWebPage* page, bool value); static void setMediaType(QWebFrame* qframe, const QString& type); static void setDumpRenderTreeModeEnabled(bool b); static void garbageCollectorCollect(); static void garbageCollectorCollectOnAlternateThread(bool waitUntilDone); static void setJavaScriptProfilingEnabled(QWebFrame*, bool enabled); static int javaScriptObjectsCount(); static void clearScriptWorlds(); static void evaluateScriptInIsolatedWorld(QWebFrame* frame, int worldID, const QString& script); static void setTimelineProfilingEnabled(QWebPage*, bool enabled); static void webInspectorExecuteScript(QWebPage* page, long callId, const QString& script); static void webInspectorShow(QWebPage* page); static void webInspectorClose(QWebPage* page); static QString webPageGroupName(QWebPage *page); static QString counterValueForElementById(QWebFrame* frame, const QString& id); static void webPageSetGroupName(QWebPage* page, const QString& groupName); static void clearFrameName(QWebFrame* frame); static void overwritePluginDirectories(); static int numberOfActiveAnimations(QWebFrame*); static void suspendAnimations(QWebFrame*); static void resumeAnimations(QWebFrame*); static int numberOfPages(QWebFrame* frame, float width, float height); static int pageNumberForElementById(QWebFrame* frame, const QString& id, float width, float height); static bool hasDocumentElement(QWebFrame* frame); static bool elementDoesAutoCompleteForElementWithId(QWebFrame* frame, const QString& elementId); static void setEditingBehavior(QWebPage* page, const QString& editingBehavior); 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 activeMockDeviceOrientationClient(bool b); static void removeMockDeviceOrientation(); static void setMockDeviceOrientation(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma); static void resetGeolocationMock(QWebPage*); static void setMockGeolocationPermission(QWebPage*, bool allowed); static void setMockGeolocationPosition(QWebPage*, double latitude, double longitude, double accuracy); static void setMockGeolocationError(QWebPage*, int errorCode, const QString& message); static int workerThreadCount(); static QString markerTextForListItem(const QWebElement& listItem); static QVariantMap computedStyleIncludingVisitedInfo(const QWebElement& element); static QString plainText(const QVariant& rng); static void dumpFrameLoader(bool b); static void dumpUserGestureInFrameLoader(bool b); static void dumpResourceLoadCallbacks(bool b); static void dumpResourceResponseMIMETypes(bool b); static void dumpResourceLoadCallbacksPath(const QString& path); static void setWillSendRequestReturnsNullOnRedirect(bool b); static void setWillSendRequestReturnsNull(bool b); static void setWillSendRequestClearHeaders(const QStringList& headers); static void dumpHistoryCallbacks(bool b); static void dumpVisitedLinksCallbacks(bool b); static void setDeferMainResourceDataLoad(bool b); static void dumpEditingCallbacks(bool b); static void dumpSetAcceptsEditing(bool b); static void dumpNotification(bool b); static QMap getChildHistoryItems(const QWebHistoryItem& historyItem); static bool isTargetItem(const QWebHistoryItem& historyItem); static QString historyItemTarget(const QWebHistoryItem& historyItem); static bool shouldClose(QWebFrame* frame); static void setCustomPolicyDelegate(bool enabled, bool permissive); static bool isPageBoxVisible(QWebFrame* frame, int pageIndex); static QString pageSizeAndMarginsInPixels(QWebFrame* frame, int pageIndex, int width, int height, int marginTop, int marginRight, int marginBottom, int marginLeft); static QString pageProperty(QWebFrame* frame, const QString& propertyName, int pageNumber); static void addUserStyleSheet(QWebPage* page, const QString& sourceCode); static void simulateDesktopNotificationClick(const QString& title); static QString viewportAsText(QWebPage*, int deviceDPI, const QSize& deviceSize, const QSize& availableSize); static QVariantList nodesFromRect(const QWebElement& document, int x, int y, unsigned top, unsigned right, unsigned bottom, unsigned left, bool ignoreClipping); static QString responseMimeType(QWebFrame*); static void clearOpener(QWebFrame*); static void addURLToRedirect(const QString& origin, const QString& destination); static QStringList contextMenu(QWebPage*); static double defaultMinimumTimerInterval(); // Not really tied to WebView static void setMinimumTimerInterval(QWebPage*, double); static QUrl mediaContentUrlByElementId(QWebFrame*, const QString& elementId); }; #endif