Home | History | Annotate | Download | only in WebCoreSupport
      1 /*
      2     Copyright (C) 2010 Robert Hogan <robert (at) 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 
     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