summaryrefslogtreecommitdiff
path: root/Tools/WebKitTestRunner/InjectedBundle/TestRunner.h
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/WebKitTestRunner/InjectedBundle/TestRunner.h')
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/TestRunner.h141
1 files changed, 115 insertions, 26 deletions
diff --git a/Tools/WebKitTestRunner/InjectedBundle/TestRunner.h b/Tools/WebKitTestRunner/InjectedBundle/TestRunner.h
index cefb6a5d1..764c9e4a9 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/TestRunner.h
+++ b/Tools/WebKitTestRunner/InjectedBundle/TestRunner.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010, 2011, 2012 Apple Inc. All rights reserved.
+ * Copyright (C) 2010-2017 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -23,28 +23,28 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef TestRunner_h
-#define TestRunner_h
+#pragma once
#include "JSWrappable.h"
+#include "StringFunctions.h"
#include <JavaScriptCore/JSRetainPtr.h>
-#include <WebKit2/WKBundleScriptWorld.h>
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKBundleScriptWorld.h>
+#include <WebKit/WKRetainPtr.h>
#include <string>
-#include <wtf/PassRefPtr.h>
+#include <wtf/Ref.h>
+#include <wtf/text/WTFString.h>
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA)
#include <wtf/RetainPtr.h>
#include <CoreFoundation/CFRunLoop.h>
typedef RetainPtr<CFRunLoopTimerRef> PlatformTimerRef;
#elif PLATFORM(GTK)
-typedef unsigned int PlatformTimerRef;
+#include <wtf/RunLoop.h>
+namespace WTR {
+class TestRunner;
+typedef RunLoop::Timer<TestRunner> PlatformTimerRef;
+}
#elif PLATFORM(EFL)
-#if USE(EO)
-typedef struct _Eo_Opaque Ecore_Timer;
-#else
-typedef struct _Ecore_Timer Ecore_Timer;
-#endif
typedef Ecore_Timer* PlatformTimerRef;
#endif
@@ -52,7 +52,7 @@ namespace WTR {
class TestRunner : public JSWrappable {
public:
- static PassRefPtr<TestRunner> create();
+ static Ref<TestRunner> create();
virtual ~TestRunner();
// JSWrappable
@@ -60,13 +60,19 @@ public:
void makeWindowObject(JSContextRef, JSObjectRef windowObject, JSValueRef* exception);
+ bool isWebKit2() const { return true; }
+
// The basics.
+ WKURLRef testURL() const { return m_testURL.get(); }
+ void setTestURL(WKURLRef url) { m_testURL = url; }
void dumpAsText(bool dumpPixels);
void waitForPolicyDelegate();
void dumpChildFramesAsText() { m_whatToDump = AllFramesText; }
+ void waitUntilDownloadFinished();
void waitUntilDone();
void notifyDone();
double preciseTime();
+ double timeout() { return m_timeout; }
// Other dumping.
void dumpBackForwardList() { m_shouldDumpBackForwardListsForAllWindows = true; }
@@ -84,6 +90,7 @@ public:
void dumpApplicationCacheDelegateCallbacks() { m_dumpApplicationCacheDelegateCallbacks = true; }
void dumpDatabaseCallbacks() { m_dumpDatabaseCallbacks = true; }
void dumpDOMAsWebArchive() { m_whatToDump = DOMAsWebArchive; }
+ void dumpPolicyDelegateCallbacks() { m_dumpPolicyCallbacks = true; }
void setShouldDumpFrameLoadCallbacks(bool value) { m_dumpFrameLoadCallbacks = value; }
void setShouldDumpProgressFinishedCallback(bool value) { m_dumpProgressFinishedCallback = value; }
@@ -94,11 +101,18 @@ public:
void setCanOpenWindows(bool);
void setCloseRemainingWindowsWhenComplete(bool value) { m_shouldCloseExtraWindows = value; }
void setXSSAuditorEnabled(bool);
+ void setShadowDOMEnabled(bool);
+ void setCustomElementsEnabled(bool);
+ void setModernMediaControlsEnabled(bool);
+ void setWebGL2Enabled(bool);
+ void setFetchAPIEnabled(bool);
void setAllowUniversalAccessFromFileURLs(bool);
void setAllowFileAccessFromFileURLs(bool);
+ void setNeedsStorageAccessFromFileURLsQuirk(bool);
void setPluginsEnabled(bool);
void setJavaScriptCanAccessClipboard(bool);
void setPrivateBrowsingEnabled(bool);
+ void setUseDashboardCompatibilityMode(bool);
void setPopupBlockingEnabled(bool);
void setAuthorAndUserStylesEnabled(bool);
void setCustomPolicyDelegate(bool enabled, bool permissive = false);
@@ -112,6 +126,12 @@ public:
void dispatchPendingLoadRequests();
void setCacheModel(int);
void setAsynchronousSpellCheckingEnabled(bool);
+ void setDownloadAttributeEnabled(bool);
+ void setAllowsAnySSLCertificate(bool);
+ void setEncryptedMediaAPIEnabled(bool);
+ void setSubtleCryptoEnabled(bool);
+ void setMediaStreamEnabled(bool);
+ void setPeerConnectionEnabled(bool);
// Special DOM functions.
void clearBackForwardList();
@@ -151,7 +171,9 @@ public:
void setPrinting() { m_isPrinting = true; }
// Authentication
+ void setRejectsProtectionSpaceAndContinueForAuthenticationChallenges(bool);
void setHandlesAuthenticationChallenges(bool);
+ void setShouldLogCanAuthenticateAgainstProtectionSpace(bool);
void setAuthenticationUsername(JSStringRef);
void setAuthenticationPassword(JSStringRef);
@@ -181,6 +203,7 @@ public:
bool shouldDumpApplicationCacheDelegateCallbacks() const { return m_dumpApplicationCacheDelegateCallbacks; }
bool shouldDumpDatabaseCallbacks() const { return m_dumpDatabaseCallbacks; }
bool shouldDumpSelectionRect() const { return m_dumpSelectionRect; }
+ bool shouldDumpPolicyCallbacks() const { return m_dumpPolicyCallbacks; }
bool isPolicyDelegateEnabled() const { return m_policyDelegateEnabled; }
bool isPolicyDelegatePermissive() const { return m_policyDelegatePermissive; }
@@ -188,6 +211,7 @@ public:
bool waitToDump() const { return m_waitToDump; }
void waitToDumpWatchdogTimerFired();
void invalidateWaitToDumpWatchdogTimer();
+ bool shouldFinishAfterDownload() const { return m_shouldFinishAfterDownload; }
bool shouldAllowEditing() const { return m_shouldAllowEditing; }
@@ -198,7 +222,8 @@ public:
void showWebInspector();
void closeWebInspector();
- void evaluateInWebInspector(long callId, JSStringRef script);
+ void evaluateInWebInspector(JSStringRef script);
+ JSRetainPtr<JSStringRef> inspectorTestStubURL();
void setPOSIXLocale(JSStringRef);
@@ -206,6 +231,8 @@ public:
void setWillSendRequestReturnsNull(bool f) { m_willSendRequestReturnsNull = f; }
bool willSendRequestReturnsNullOnRedirect() const { return m_willSendRequestReturnsNullOnRedirect; }
void setWillSendRequestReturnsNullOnRedirect(bool f) { m_willSendRequestReturnsNullOnRedirect = f; }
+ void setWillSendRequestAddsHTTPBody(JSStringRef body) { m_willSendRequestHTTPBody = toWTFString(toWK(body)); }
+ String willSendRequestHTTPBody() const { return m_willSendRequestHTTPBody; }
void setTextDirection(JSStringRef);
@@ -232,6 +259,8 @@ public:
void setWindowIsKey(bool);
+ void setViewSize(double width, double height);
+
void callAddChromeInputFieldCallback();
void callRemoveChromeInputFieldCallback();
void callFocusWebViewCallback();
@@ -247,45 +276,98 @@ public:
bool hasCustomFullScreenBehavior() const { return m_customFullScreenBehavior; }
// Web notifications.
- void grantWebNotificationPermission(JSStringRef origin);
- void denyWebNotificationPermission(JSStringRef origin);
- void removeAllWebNotificationPermissions();
- void simulateWebNotificationClick(JSValueRef notification);
+ static void grantWebNotificationPermission(JSStringRef origin);
+ static void denyWebNotificationPermission(JSStringRef origin);
+ static void removeAllWebNotificationPermissions();
+ static void simulateWebNotificationClick(JSValueRef notification);
// Geolocation.
void setGeolocationPermission(bool);
void setMockGeolocationPosition(double latitude, double longitude, double accuracy, JSValueRef altitude, JSValueRef altitudeAccuracy, JSValueRef heading, JSValueRef speed);
void setMockGeolocationPositionUnavailableError(JSStringRef message);
+ bool isGeolocationProviderActive();
+
+ // MediaStream
+ void setUserMediaPermission(bool);
+ void setUserMediaPersistentPermissionForOrigin(bool permission, JSStringRef origin, JSStringRef parentOrigin);
+ unsigned userMediaPermissionRequestCountForOrigin(JSStringRef origin, JSStringRef parentOrigin) const;
+ void resetUserMediaPermissionRequestCountForOrigin(JSStringRef origin, JSStringRef parentOrigin);
void setPageVisibility(JSStringRef state);
void resetPageVisibility();
bool callShouldCloseOnWebView();
- void setCustomTimeout(int duration);
+ void setCustomTimeout(int duration) { m_timeout = duration; }
// Work queue.
void queueBackNavigation(unsigned howFarBackward);
void queueForwardNavigation(unsigned howFarForward);
- void queueLoad(JSStringRef url, JSStringRef target);
+ void queueLoad(JSStringRef url, JSStringRef target, bool shouldOpenExternalURLs);
void queueLoadHTMLString(JSStringRef content, JSStringRef baseURL, JSStringRef unreachableURL);
void queueReload();
void queueLoadingScript(JSStringRef script);
void queueNonLoadingScript(JSStringRef script);
bool secureEventInputIsEnabled() const;
-
+
+ JSValueRef failNextNewCodeBlock();
JSValueRef numberOfDFGCompiles(JSValueRef theFunction);
JSValueRef neverInlineFunction(JSValueRef theFunction);
-private:
- static const double waitToDumpWatchdogTimerInterval;
+ bool shouldDecideNavigationPolicyAfterDelay() const { return m_shouldDecideNavigationPolicyAfterDelay; }
+ void setShouldDecideNavigationPolicyAfterDelay(bool);
+ void setNavigationGesturesEnabled(bool);
+ void setIgnoresViewportScaleLimits(bool);
+ void setShouldDownloadUndisplayableMIMETypes(bool);
+
+ void runUIScript(JSStringRef script, JSValueRef callback);
+ void runUIScriptCallback(unsigned callbackID, JSStringRef result);
+
+ void installDidBeginSwipeCallback(JSValueRef);
+ void installWillEndSwipeCallback(JSValueRef);
+ void installDidEndSwipeCallback(JSValueRef);
+ void installDidRemoveSwipeSnapshotCallback(JSValueRef);
+ void callDidBeginSwipeCallback();
+ void callWillEndSwipeCallback();
+ void callDidEndSwipeCallback();
+ void callDidRemoveSwipeSnapshotCallback();
+
+ void clearTestRunnerCallbacks();
+ void accummulateLogsForChannel(JSStringRef channel);
+
+ unsigned imageCountInGeneralPasteboard() const;
+
+ // Gamepads
+ void connectMockGamepad(unsigned index);
+ void disconnectMockGamepad(unsigned index);
+ void setMockGamepadDetails(unsigned index, JSStringRef gamepadID, unsigned axisCount, unsigned buttonCount);
+ void setMockGamepadAxisValue(unsigned index, unsigned axisIndex, double value);
+ void setMockGamepadButtonValue(unsigned index, unsigned buttonIndex, double value);
+
+ // Resource Load Statistics
+ void installStatisticsDidModifyDataRecordsCallback(JSValueRef callback);
+ void statisticsDidModifyDataRecordsCallback();
+ void statisticsFireDataModificationHandler();
+ void setStatisticsPrevalentResource(JSStringRef hostName, bool value);
+ bool isStatisticsPrevalentResource(JSStringRef hostName);
+ void setStatisticsHasHadUserInteraction(JSStringRef hostName, bool value);
+ bool isStatisticsHasHadUserInteraction(JSStringRef hostName);
+ void setStatisticsTimeToLiveUserInteraction(double seconds);
+ void setStatisticsNotifyPagesWhenDataRecordsWereScanned(bool);
+ void setStatisticsShouldClassifyResourcesBeforeDataRecordsRemoval(bool);
+ void setStatisticsMinimumTimeBetweeenDataRecordsRemoval(double);
+ void statisticsResetToConsistentState();
+
+private:
TestRunner();
void platformInitialize();
void initializeWaitToDumpWatchdogTimerIfNeeded();
+ WKRetainPtr<WKURLRef> m_testURL; // Set by InjectedBundlePage once provisional load starts.
+
WhatToDump m_whatToDump;
bool m_shouldDumpAllFrameScrollPositions;
bool m_shouldDumpBackForwardListsForAllWindows;
@@ -306,6 +388,7 @@ private:
bool m_dumpWillCacheResponse;
bool m_dumpApplicationCacheDelegateCallbacks;
bool m_dumpDatabaseCallbacks;
+ bool m_dumpPolicyCallbacks { false };
bool m_disallowIncreaseForApplicationCacheQuota;
bool m_waitToDump; // True if waitUntilDone() has been called, but notifyDone() has not yet been called.
bool m_testRepaint;
@@ -315,6 +398,7 @@ private:
bool m_willSendRequestReturnsNull;
bool m_willSendRequestReturnsNullOnRedirect;
bool m_shouldStopProvisionalFrameLoads;
+ String m_willSendRequestHTTPBody;
bool m_policyDelegateEnabled;
bool m_policyDelegatePermissive;
@@ -327,12 +411,17 @@ private:
double m_databaseDefaultQuota;
double m_databaseMaxQuota;
+ bool m_shouldDecideNavigationPolicyAfterDelay { false };
+ bool m_shouldFinishAfterDownload { false };
+
bool m_userStyleSheetEnabled;
WKRetainPtr<WKStringRef> m_userStyleSheetLocation;
+ WKRetainPtr<WKArrayRef> m_allowedHosts;
+
+ size_t m_userMediaPermissionRequestCount { 0 };
+
PlatformTimerRef m_waitToDumpWatchdogTimer;
};
} // namespace WTR
-
-#endif // TestRunner_h