2 * Copyright (C) 2007, 2008, 2009 Apple Inc. All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
14 * its contributors may be used to endorse or promote products derived
15 * from this software without specific prior written permission.
17 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
18 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
21 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 #ifndef LayoutTestController_h
30 #define LayoutTestController_h
32 #include <JavaScriptCore/JSObjectRef.h>
33 #include <JavaScriptCore/JSRetainPtr.h>
38 #include <wtf/PassRefPtr.h>
39 #include <wtf/RefCounted.h>
41 class LayoutTestController : public RefCounted<LayoutTestController> {
43 static PassRefPtr<LayoutTestController> create(const std::string& testPathOrURL, const std::string& expectedPixelHash);
44 ~LayoutTestController();
46 void makeWindowObject(JSContextRef context, JSObjectRef windowObject, JSValueRef* exception);
48 void addDisallowedURL(JSStringRef url);
49 void addURLToRedirect(std::string origin, std::string destination);
50 const std::string& redirectionDestinationForURL(std::string);
51 void clearAllApplicationCaches();
52 void clearAllDatabases();
53 void clearApplicationCacheForOrigin(JSStringRef name);
54 void clearBackForwardList();
55 void clearPersistentUserStyleSheet();
56 bool callShouldCloseOnWebView();
57 JSStringRef copyDecodedHostName(JSStringRef name);
58 JSStringRef copyEncodedHostName(JSStringRef name);
59 void deliverWebIntent(JSStringRef action, JSStringRef type, JSStringRef data);
60 void disableImageLoading();
61 void dispatchPendingLoadRequests();
63 void displayInvalidatedRegion();
64 void execCommand(JSStringRef name, JSStringRef value);
65 bool findString(JSContextRef, JSStringRef, JSObjectRef optionsArray);
67 JSValueRef originsWithApplicationCache(JSContextRef);
68 long long applicationCacheDiskUsageForOrigin(JSStringRef name);
69 bool isCommandEnabled(JSStringRef name);
70 void keepWebHistory();
71 JSValueRef computedStyleIncludingVisitedInfo(JSContextRef, JSValueRef);
73 int numberOfPages(float pageWidthInPixels, float pageHeightInPixels);
74 int numberOfPendingGeolocationPermissionRequests();
75 void overridePreference(JSStringRef key, JSStringRef value);
76 JSRetainPtr<JSStringRef> pageProperty(const char* propertyName, int pageNumber) const;
77 JSRetainPtr<JSStringRef> pageSizeAndMarginsInPixels(int pageNumber, int width, int height, int marginTop, int marginRight, int marginBottom, int marginLeft) const;
78 JSStringRef pathToLocalResource(JSContextRef, JSStringRef url);
79 void queueBackNavigation(int howFarBackward);
80 void queueForwardNavigation(int howFarForward);
81 void queueLoad(JSStringRef url, JSStringRef target);
82 void queueLoadHTMLString(JSStringRef content, JSStringRef baseURL);
83 void queueLoadAlternateHTMLString(JSStringRef content, JSStringRef baseURL, JSStringRef unreachableURL);
84 void queueLoadingScript(JSStringRef script);
85 void queueNonLoadingScript(JSStringRef script);
87 void removeAllVisitedLinks();
88 void sendWebIntentResponse(JSStringRef response);
89 void setAcceptsEditing(bool acceptsEditing);
90 void setAllowUniversalAccessFromFileURLs(bool);
91 void setAllowFileAccessFromFileURLs(bool);
92 void setAppCacheMaximumSize(unsigned long long quota);
93 void setApplicationCacheOriginQuota(unsigned long long quota);
94 void setAuthorAndUserStylesEnabled(bool);
95 void setAutofilled(JSContextRef, JSValueRef nodeObject, bool autofilled);
96 void setCacheModel(int);
97 void setCustomPolicyDelegate(bool setDelegate, bool permissive);
98 void setDatabaseQuota(unsigned long long quota);
99 void setDomainRelaxationForbiddenForURLScheme(bool forbidden, JSStringRef scheme);
100 void setDefersLoading(bool);
101 void setIconDatabaseEnabled(bool iconDatabaseEnabled);
102 void setJavaScriptCanAccessClipboard(bool flag);
103 void setAutomaticLinkDetectionEnabled(bool flag);
104 void setMainFrameIsFirstResponder(bool flag);
105 void setMockDeviceOrientation(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma);
106 void setMockGeolocationError(int code, JSStringRef message);
107 void setMockGeolocationPosition(double latitude, double longitude, double accuracy);
108 void addMockSpeechInputResult(JSStringRef result, double confidence, JSStringRef language);
109 void setMockSpeechInputDumpRect(bool flag);
110 void setPersistentUserStyleSheetLocation(JSStringRef path);
111 void setPluginsEnabled(bool flag);
112 void setPopupBlockingEnabled(bool flag);
113 void setPrivateBrowsingEnabled(bool flag);
114 void setSelectTrailingWhitespaceEnabled(bool flag);
115 void setSmartInsertDeleteEnabled(bool flag);
116 void setTabKeyCyclesThroughElements(bool cycles);
117 void setUseDashboardCompatibilityMode(bool flag);
118 void setUserStyleSheetEnabled(bool flag);
119 void setUserStyleSheetLocation(JSStringRef path);
120 void setValueForUser(JSContextRef, JSValueRef nodeObject, JSStringRef value);
121 void setViewModeMediaFeature(JSStringRef mode);
122 void setXSSAuditorEnabled(bool flag);
123 void setFrameFlatteningEnabled(bool enable);
124 void setSpatialNavigationEnabled(bool enable);
125 void setScrollbarPolicy(JSStringRef orientation, JSStringRef policy);
126 void startSpeechInput(JSContextRef inputElement);
127 void setPageVisibility(const char*);
128 void resetPageVisibility();
130 void waitForPolicyDelegate();
131 size_t webHistoryItemCount();
132 unsigned workerThreadCount() const;
135 #if PLATFORM(MAC) || PLATFORM(GTK) || PLATFORM(WIN)
136 JSRetainPtr<JSStringRef> platformName() const;
139 void grantDesktopNotificationPermission(JSStringRef origin);
140 bool checkDesktopNotificationPermission(JSStringRef origin);
141 void ignoreDesktopNotificationPermissionRequests();
142 bool areDesktopNotificationPermissionRequestsIgnored() const { return m_areDesktopNotificationPermissionRequestsIgnored; }
143 void simulateDesktopNotificationClick(JSStringRef title);
145 bool elementDoesAutoCompleteForElementWithId(JSStringRef id);
147 bool dumpAsAudio() const { return m_dumpAsAudio; }
148 void setDumpAsAudio(bool dumpAsAudio) { m_dumpAsAudio = dumpAsAudio; }
150 bool dumpAsPDF() const { return m_dumpAsPDF; }
151 void setDumpAsPDF(bool dumpAsPDF) { m_dumpAsPDF = dumpAsPDF; }
153 bool dumpAsText() const { return m_dumpAsText; }
154 void setDumpAsText(bool dumpAsText) { m_dumpAsText = dumpAsText; }
156 bool generatePixelResults() const { return m_generatePixelResults; }
157 void setGeneratePixelResults(bool generatePixelResults) { m_generatePixelResults = generatePixelResults; }
159 bool disallowIncreaseForApplicationCacheQuota() const { return m_disallowIncreaseForApplicationCacheQuota; }
160 void setDisallowIncreaseForApplicationCacheQuota(bool disallowIncrease) { m_disallowIncreaseForApplicationCacheQuota = disallowIncrease; }
162 bool dumpApplicationCacheDelegateCallbacks() const { return m_dumpApplicationCacheDelegateCallbacks; }
163 void setDumpApplicationCacheDelegateCallbacks(bool dumpCallbacks) { m_dumpApplicationCacheDelegateCallbacks = dumpCallbacks; }
165 bool dumpBackForwardList() const { return m_dumpBackForwardList; }
166 void setDumpBackForwardList(bool dumpBackForwardList) { m_dumpBackForwardList = dumpBackForwardList; }
168 bool dumpChildFrameScrollPositions() const { return m_dumpChildFrameScrollPositions; }
169 void setDumpChildFrameScrollPositions(bool dumpChildFrameScrollPositions) { m_dumpChildFrameScrollPositions = dumpChildFrameScrollPositions; }
171 bool dumpChildFramesAsText() const { return m_dumpChildFramesAsText; }
172 void setDumpChildFramesAsText(bool dumpChildFramesAsText) { m_dumpChildFramesAsText = dumpChildFramesAsText; }
174 bool dumpDatabaseCallbacks() const { return m_dumpDatabaseCallbacks; }
175 void setDumpDatabaseCallbacks(bool dumpDatabaseCallbacks) { m_dumpDatabaseCallbacks = dumpDatabaseCallbacks; }
177 bool dumpDOMAsWebArchive() const { return m_dumpDOMAsWebArchive; }
178 void setDumpDOMAsWebArchive(bool dumpDOMAsWebArchive) { m_dumpDOMAsWebArchive = dumpDOMAsWebArchive; }
180 bool dumpEditingCallbacks() const { return m_dumpEditingCallbacks; }
181 void setDumpEditingCallbacks(bool dumpEditingCallbacks) { m_dumpEditingCallbacks = dumpEditingCallbacks; }
183 bool dumpFrameLoadCallbacks() const { return m_dumpFrameLoadCallbacks; }
184 void setDumpFrameLoadCallbacks(bool dumpFrameLoadCallbacks) { m_dumpFrameLoadCallbacks = dumpFrameLoadCallbacks; }
186 bool dumpProgressFinishedCallback() const { return m_dumpProgressFinishedCallback; }
187 void setDumpProgressFinishedCallback(bool dumpProgressFinishedCallback) { m_dumpProgressFinishedCallback = dumpProgressFinishedCallback; }
189 bool dumpUserGestureInFrameLoadCallbacks() const { return m_dumpUserGestureInFrameLoadCallbacks; }
190 void setDumpUserGestureInFrameLoadCallbacks(bool dumpUserGestureInFrameLoadCallbacks) { m_dumpUserGestureInFrameLoadCallbacks = dumpUserGestureInFrameLoadCallbacks; }
192 bool dumpHistoryDelegateCallbacks() const { return m_dumpHistoryDelegateCallbacks; }
193 void setDumpHistoryDelegateCallbacks(bool dumpHistoryDelegateCallbacks) { m_dumpHistoryDelegateCallbacks = dumpHistoryDelegateCallbacks; }
195 bool dumpResourceLoadCallbacks() const { return m_dumpResourceLoadCallbacks; }
196 void setDumpResourceLoadCallbacks(bool dumpResourceLoadCallbacks) { m_dumpResourceLoadCallbacks = dumpResourceLoadCallbacks; }
198 bool dumpResourceResponseMIMETypes() const { return m_dumpResourceResponseMIMETypes; }
199 void setDumpResourceResponseMIMETypes(bool dumpResourceResponseMIMETypes) { m_dumpResourceResponseMIMETypes = dumpResourceResponseMIMETypes; }
201 bool dumpSelectionRect() const { return m_dumpSelectionRect; }
202 void setDumpSelectionRect(bool dumpSelectionRect) { m_dumpSelectionRect = dumpSelectionRect; }
204 bool dumpSourceAsWebArchive() const { return m_dumpSourceAsWebArchive; }
205 void setDumpSourceAsWebArchive(bool dumpSourceAsWebArchive) { m_dumpSourceAsWebArchive = dumpSourceAsWebArchive; }
207 bool dumpStatusCallbacks() const { return m_dumpStatusCallbacks; }
208 void setDumpStatusCallbacks(bool dumpStatusCallbacks) { m_dumpStatusCallbacks = dumpStatusCallbacks; }
210 bool dumpTitleChanges() const { return m_dumpTitleChanges; }
211 void setDumpTitleChanges(bool dumpTitleChanges) { m_dumpTitleChanges = dumpTitleChanges; }
213 bool dumpIconChanges() const { return m_dumpIconChanges; }
214 void setDumpIconChanges(bool dumpIconChanges) { m_dumpIconChanges = dumpIconChanges; }
216 bool dumpVisitedLinksCallback() const { return m_dumpVisitedLinksCallback; }
217 void setDumpVisitedLinksCallback(bool dumpVisitedLinksCallback) { m_dumpVisitedLinksCallback = dumpVisitedLinksCallback; }
219 bool dumpWillCacheResponse() const { return m_dumpWillCacheResponse; }
220 void setDumpWillCacheResponse(bool dumpWillCacheResponse) { m_dumpWillCacheResponse = dumpWillCacheResponse; }
222 bool callCloseOnWebViews() const { return m_callCloseOnWebViews; }
223 void setCallCloseOnWebViews(bool callCloseOnWebViews) { m_callCloseOnWebViews = callCloseOnWebViews; }
225 bool canOpenWindows() const { return m_canOpenWindows; }
226 void setCanOpenWindows(bool canOpenWindows) { m_canOpenWindows = canOpenWindows; }
228 bool closeRemainingWindowsWhenComplete() const { return m_closeRemainingWindowsWhenComplete; }
229 void setCloseRemainingWindowsWhenComplete(bool closeRemainingWindowsWhenComplete) { m_closeRemainingWindowsWhenComplete = closeRemainingWindowsWhenComplete; }
231 bool newWindowsCopyBackForwardList() const { return m_newWindowsCopyBackForwardList; }
232 void setNewWindowsCopyBackForwardList(bool newWindowsCopyBackForwardList) { m_newWindowsCopyBackForwardList = newWindowsCopyBackForwardList; }
234 bool stopProvisionalFrameLoads() const { return m_stopProvisionalFrameLoads; }
235 void setStopProvisionalFrameLoads(bool stopProvisionalFrameLoads) { m_stopProvisionalFrameLoads = stopProvisionalFrameLoads; }
237 bool testOnscreen() const { return m_testOnscreen; }
238 void setTestOnscreen(bool testOnscreen) { m_testOnscreen = testOnscreen; }
240 bool testRepaint() const { return m_testRepaint; }
241 void setTestRepaint(bool testRepaint) { m_testRepaint = testRepaint; }
243 bool testRepaintSweepHorizontally() const { return m_testRepaintSweepHorizontally; }
244 void setTestRepaintSweepHorizontally(bool testRepaintSweepHorizontally) { m_testRepaintSweepHorizontally = testRepaintSweepHorizontally; }
246 bool waitToDump() const { return m_waitToDump; }
247 void setWaitToDump(bool waitToDump);
248 void waitToDumpWatchdogTimerFired();
250 const std::set<std::string>& willSendRequestClearHeaders() const { return m_willSendRequestClearHeaders; }
251 void setWillSendRequestClearHeader(std::string header) { m_willSendRequestClearHeaders.insert(header); }
253 bool willSendRequestReturnsNull() const { return m_willSendRequestReturnsNull; }
254 void setWillSendRequestReturnsNull(bool returnsNull) { m_willSendRequestReturnsNull = returnsNull; }
256 bool willSendRequestReturnsNullOnRedirect() const { return m_willSendRequestReturnsNullOnRedirect; }
257 void setWillSendRequestReturnsNullOnRedirect(bool returnsNull) { m_willSendRequestReturnsNullOnRedirect = returnsNull; }
259 bool windowIsKey() const { return m_windowIsKey; }
260 void setWindowIsKey(bool windowIsKey);
262 bool alwaysAcceptCookies() const { return m_alwaysAcceptCookies; }
263 void setAlwaysAcceptCookies(bool alwaysAcceptCookies);
265 bool handlesAuthenticationChallenges() const { return m_handlesAuthenticationChallenges; }
266 void setHandlesAuthenticationChallenges(bool handlesAuthenticationChallenges) { m_handlesAuthenticationChallenges = handlesAuthenticationChallenges; }
268 bool isPrinting() const { return m_isPrinting; }
269 void setIsPrinting(bool isPrinting) { m_isPrinting = isPrinting; }
271 const std::string& authenticationUsername() const { return m_authenticationUsername; }
272 void setAuthenticationUsername(std::string username) { m_authenticationUsername = username; }
274 const std::string& authenticationPassword() const { return m_authenticationPassword; }
275 void setAuthenticationPassword(std::string password) { m_authenticationPassword = password; }
277 bool globalFlag() const { return m_globalFlag; }
278 void setGlobalFlag(bool globalFlag) { m_globalFlag = globalFlag; }
280 bool deferMainResourceDataLoad() const { return m_deferMainResourceDataLoad; }
281 void setDeferMainResourceDataLoad(bool flag) { m_deferMainResourceDataLoad = flag; }
283 bool useDeferredFrameLoading() const { return m_useDeferredFrameLoading; }
284 void setUseDeferredFrameLoading(bool flag) { m_useDeferredFrameLoading = flag; }
286 const std::string& testPathOrURL() const { return m_testPathOrURL; }
287 const std::string& expectedPixelHash() const { return m_expectedPixelHash; }
289 const std::string& encodedAudioData() const { return m_encodedAudioData; }
290 void setEncodedAudioData(const std::string& encodedAudioData) { m_encodedAudioData = encodedAudioData; }
292 bool pauseAnimationAtTimeOnElementWithId(JSStringRef animationName, double time, JSStringRef elementId);
293 bool pauseTransitionAtTimeOnElementWithId(JSStringRef propertyName, double time, JSStringRef elementId);
294 unsigned numberOfActiveAnimations() const;
296 void addOriginAccessWhitelistEntry(JSStringRef sourceOrigin, JSStringRef destinationProtocol, JSStringRef destinationHost, bool allowDestinationSubdomains);
297 void removeOriginAccessWhitelistEntry(JSStringRef sourceOrigin, JSStringRef destinationProtocol, JSStringRef destinationHost, bool allowDestinationSubdomains);
299 void addUserScript(JSStringRef source, bool runAtStart, bool allFrames);
300 void addUserStyleSheet(JSStringRef source, bool allFrames);
302 void setGeolocationPermission(bool allow);
303 bool isGeolocationPermissionSet() const { return m_isGeolocationPermissionSet; }
304 bool geolocationPermission() const { return m_geolocationPermission; }
306 void setDeveloperExtrasEnabled(bool);
307 void setAsynchronousSpellCheckingEnabled(bool);
308 void showWebInspector();
309 void closeWebInspector();
310 void evaluateInWebInspector(long callId, JSStringRef script);
311 void evaluateScriptInIsolatedWorld(unsigned worldID, JSObjectRef globalObject, JSStringRef script);
312 void evaluateScriptInIsolatedWorldAndReturnValue(unsigned worldID, JSObjectRef globalObject, JSStringRef script);
314 bool shouldStayOnPageAfterHandlingBeforeUnload() const { return m_shouldStayOnPageAfterHandlingBeforeUnload; }
315 void setShouldStayOnPageAfterHandlingBeforeUnload(bool shouldStayOnPageAfterHandlingBeforeUnload) { m_shouldStayOnPageAfterHandlingBeforeUnload = shouldStayOnPageAfterHandlingBeforeUnload; }
317 void addChromeInputField();
318 void removeChromeInputField();
321 void setBackingScaleFactor(double);
323 void setPOSIXLocale(JSStringRef locale);
325 void setWebViewEditable(bool);
329 static void setSerializeHTTPLoads(bool serialize);
331 // The following API test functions should probably be moved to platform-specific
332 // unit tests outside of DRT once they exist.
333 void apiTestNewWindowDataLoadBaseURL(JSStringRef utf8Data, JSStringRef baseURL);
334 void apiTestGoToCurrentBackForwardItem();
336 // Simulate a request an embedding application could make, populating per-session credential storage.
337 void authenticateSession(JSStringRef url, JSStringRef username, JSStringRef password);
339 JSRetainPtr<JSStringRef> layerTreeAsText() const;
341 JSRetainPtr<JSStringRef> markerTextForListItem(JSContextRef context, JSValueRef nodeObject) const;
343 JSValueRef originsWithLocalStorage(JSContextRef);
344 void deleteAllLocalStorage();
345 void deleteLocalStorageForOrigin(JSStringRef originIdentifier);
346 long long localStorageDiskUsageForOrigin(JSStringRef originIdentifier);
347 void observeStorageTrackerNotifications(unsigned number);
348 void syncLocalStorage();
350 void setShouldPaintBrokenImage(bool);
351 bool shouldPaintBrokenImage() const { return m_shouldPaintBrokenImage; }
353 static const unsigned maxViewWidth;
354 static const unsigned maxViewHeight;
356 void setMinimumTimerInterval(double);
358 void setTextDirection(JSStringRef);
359 const std::string& titleTextDirection() const { return m_titleTextDirection; }
360 void setTitleTextDirection(const std::string& direction) { m_titleTextDirection = direction; }
362 // Custom full screen behavior.
363 void setHasCustomFullScreenBehavior(bool value) { m_customFullScreenBehavior = value; }
364 bool hasCustomFullScreenBehavior() const { return m_customFullScreenBehavior; }
366 void setStorageDatabaseIdleInterval(double);
369 LayoutTestController(const std::string& testPathOrURL, const std::string& expectedPixelHash);
371 void setGeolocationPermissionCommon(bool allow);
373 bool m_disallowIncreaseForApplicationCacheQuota;
374 bool m_dumpApplicationCacheDelegateCallbacks;
378 bool m_dumpBackForwardList;
379 bool m_dumpChildFrameScrollPositions;
380 bool m_dumpChildFramesAsText;
381 bool m_dumpDOMAsWebArchive;
382 bool m_dumpDatabaseCallbacks;
383 bool m_dumpEditingCallbacks;
384 bool m_dumpFrameLoadCallbacks;
385 bool m_dumpProgressFinishedCallback;
386 bool m_dumpUserGestureInFrameLoadCallbacks;
387 bool m_dumpHistoryDelegateCallbacks;
388 bool m_dumpResourceLoadCallbacks;
389 bool m_dumpResourceResponseMIMETypes;
390 bool m_dumpSelectionRect;
391 bool m_dumpSourceAsWebArchive;
392 bool m_dumpStatusCallbacks;
393 bool m_dumpTitleChanges;
394 bool m_dumpIconChanges;
395 bool m_dumpVisitedLinksCallback;
396 bool m_dumpWillCacheResponse;
397 bool m_generatePixelResults;
398 bool m_callCloseOnWebViews;
399 bool m_canOpenWindows;
400 bool m_closeRemainingWindowsWhenComplete;
401 bool m_newWindowsCopyBackForwardList;
402 bool m_stopProvisionalFrameLoads;
405 bool m_testRepaintSweepHorizontally;
406 bool m_waitToDump; // True if waitUntilDone() has been called, but notifyDone() has not yet been called.
407 bool m_willSendRequestReturnsNull;
408 bool m_willSendRequestReturnsNullOnRedirect;
410 bool m_alwaysAcceptCookies;
412 bool m_isGeolocationPermissionSet;
413 bool m_geolocationPermission;
414 bool m_handlesAuthenticationChallenges;
416 bool m_deferMainResourceDataLoad;
417 bool m_useDeferredFrameLoading;
418 bool m_shouldPaintBrokenImage;
419 bool m_shouldStayOnPageAfterHandlingBeforeUnload;
420 bool m_areDesktopNotificationPermissionRequestsIgnored;
421 bool m_customFullScreenBehavior;
423 std::string m_authenticationUsername;
424 std::string m_authenticationPassword;
425 std::string m_testPathOrURL;
426 std::string m_expectedPixelHash; // empty string if no hash
427 std::string m_titleTextDirection;
429 std::set<std::string> m_willSendRequestClearHeaders;
431 // base64 encoded WAV audio data is stored here.
432 std::string m_encodedAudioData;
434 // origins which have been granted desktop notification access
435 std::vector<JSStringRef> m_desktopNotificationAllowedOrigins;
437 std::map<std::string, std::string> m_URLsToRedirect;
439 static JSClassRef getJSClass();
440 static JSStaticValue* staticValues();
441 static JSStaticFunction* staticFunctions();
444 #endif // LayoutTestController_h