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
|
/*
* Copyright (C) Research In Motion Limited 2010. All rights reserved.
* Copyright (C) 2012 Apple Inc. All Rights Reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef DumpRenderTreeSupportGtk_h
#define DumpRenderTreeSupportGtk_h
#include "JSStringRef.h"
#include "PageVisibilityState.h"
#include <atk/atk.h>
#include <glib.h>
#include <webkit/webkitdefines.h>
#include <wtf/text/CString.h>
namespace WebKit {
enum {
WebFindOptionsCaseInsensitive = 1 << 0,
WebFindOptionsAtWordStarts = 1 << 1,
WebFindOptionsTreatMedialCapitalAsWordStart = 1 << 2,
WebFindOptionsBackwards = 1 << 3,
WebFindOptionsWrapAround = 1 << 4,
WebFindOptionsStartInSelection = 1 << 5
};
}
typedef unsigned WebKitFindOptions;
class DumpRenderTreeSupportGtk {
public:
DumpRenderTreeSupportGtk();
~DumpRenderTreeSupportGtk();
static void setDumpRenderTreeModeEnabled(bool);
static bool dumpRenderTreeModeEnabled();
static void setLinksIncludedInFocusChain(bool);
static bool linksIncludedInFocusChain();
static void clearOpener(WebKitWebFrame*);
// FIXME: Move these to webkitwebframe.h once their API has been discussed.
static GSList* getFrameChildren(WebKitWebFrame*);
static WTF::CString getInnerText(WebKitWebFrame*);
static WTF::CString dumpRenderTree(WebKitWebFrame*);
static void addUserScript(WebKitWebFrame*, const char*, bool, bool);
static void addUserStyleSheet(WebKitWebFrame*, const char* sourceCode, bool allFrames);
static guint getPendingUnloadEventCount(WebKitWebFrame*);
static void clearMainFrameName(WebKitWebFrame*);
static AtkObject* getFocusedAccessibleElement(WebKitWebFrame*);
static AtkObject* getRootAccessibleElement(WebKitWebFrame*);
static void layoutFrame(WebKitWebFrame*);
static void setValueForUser(JSContextRef, JSValueRef, JSStringRef);
static bool shouldClose(WebKitWebFrame*);
// WebKitWebView
static void executeCoreCommandByName(WebKitWebView*, const gchar* name, const gchar* value);
static bool isCommandEnabled(WebKitWebView*, const gchar* name);
static bool findString(WebKitWebView*, const gchar*, WebKitFindOptions);
static void rectangleForSelection(WebKitWebFrame*, cairo_rectangle_int_t*);
static void scalePageBy(WebKitWebView*, float, float, float);
static void setDefersLoading(WebKitWebView*, bool);
static void forceWebViewPaint(WebKitWebView*);
// Accessibility
static WTF::CString accessibilityHelpText(AtkObject*);
// TextInputController
static void setComposition(WebKitWebView*, const char*, int start, int length);
static bool hasComposition(WebKitWebView*);
static bool compositionRange(WebKitWebView*, int* start, int* length);
static void confirmComposition(WebKitWebView*, const char*);
static bool firstRectForCharacterRange(WebKitWebView*, int location, int length, cairo_rectangle_int_t*);
static bool selectedRange(WebKitWebView*, int* start, int* length);
static void doCommand(WebKitWebView*, const char*);
// GC
static void gcCollectJavascriptObjects();
static void gcCollectJavascriptObjectsOnAlternateThread(bool waitUntilDone);
static unsigned long gcCountJavascriptObjects();
static void whiteListAccessFromOrigin(const gchar* sourceOrigin, const gchar* destinationProtocol, const gchar* destinationHost, bool allowDestinationSubdomains);
static void removeWhiteListAccessFromOrigin(const char* sourceOrigin, const char* destinationProtocol, const char* destinationHost, bool allowDestinationSubdomains);
static void resetOriginAccessWhiteLists();
static void resetGeolocationClientMock(WebKitWebView*);
static void setMockGeolocationPermission(WebKitWebView*, bool allowed);
static void setMockGeolocationPosition(WebKitWebView*, double latitude, double longitude, double accuracy);
static void setMockGeolocationPositionUnavailableError(WebKitWebView*, const gchar* errorMessage);
static int numberOfPendingGeolocationPermissionRequests(WebKitWebView*);
static void setPageCacheSupportsPlugins(WebKitWebView*, bool enabled);
static void setCSSGridLayoutEnabled(WebKitWebView*, bool enabled);
static void setCSSRegionsEnabled(WebKitWebView*, bool enabled);
static void setCSSCustomFilterEnabled(WebKitWebView*, bool enabled);
static void setExperimentalContentSecurityPolicyFeaturesEnabled(bool);
static void setSeamlessIFramesEnabled(bool);
static void setShadowDOMEnabled(bool);
static void setStyleScopedEnabled(bool);
static void deliverAllMutationsIfNecessary();
static void setDomainRelaxationForbiddenForURLScheme(bool forbidden, const char* urlScheme);
static void setSerializeHTTPLoads(bool enabled);
static void setTracksRepaints(WebKitWebFrame*, bool tracks);
static bool isTrackingRepaints(WebKitWebFrame*);
static GSList* trackedRepaintRects(WebKitWebFrame*);
static void resetTrackedRepaints(WebKitWebFrame*);
static void clearMemoryCache();
static void clearApplicationCache();
enum FrameLoadEvent {
WillPerformClientRedirectToURL,
DidCancelClientRedirect,
DidReceiveServerRedirectForProvisionalLoad,
DidDisplayInsecureContent,
DidDetectXSS,
};
typedef void (*FrameLoadEventCallback)(WebKitWebFrame*, FrameLoadEvent, const char* url);
static void setFrameLoadEventCallback(FrameLoadEventCallback);
static FrameLoadEventCallback s_frameLoadEventCallback;
typedef bool (*AuthenticationCallback) (CString& username, CString& password);
static void setAuthenticationCallback(AuthenticationCallback);
static AuthenticationCallback s_authenticationCallback;
static void setPageVisibility(WebKitWebView*, WebCore::PageVisibilityState, bool);
private:
static bool s_drtRun;
static bool s_linksIncludedInTabChain;
};
#endif
|