1563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark/*
2563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * Copyright (C) 2007, 2008, 2009 Apple Inc. All rights reserved.
3563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *
4563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * Redistribution and use in source and binary forms, with or without
5563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * modification, are permitted provided that the following conditions
6563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * are met:
7563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *
8563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 1.  Redistributions of source code must retain the above copyright
9563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *     notice, this list of conditions and the following disclaimer.
10563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 2.  Redistributions in binary form must reproduce the above copyright
11563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *     notice, this list of conditions and the following disclaimer in the
12563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *     documentation and/or other materials provided with the distribution.
13563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
14563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *     its contributors may be used to endorse or promote products derived
15563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *     from this software without specific prior written permission.
16563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *
17563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
18563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
21563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark */
28563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
29563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#ifndef LayoutTestController_h
30563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#define LayoutTestController_h
31563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
32563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include <JavaScriptCore/JSObjectRef.h>
33cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block#include <JavaScriptCore/JSRetainPtr.h>
3465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <map>
35dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include <set>
36563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include <string>
37231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#include <vector>
3806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#include <wtf/PassRefPtr.h>
39dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include <wtf/RefCounted.h>
40563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
41563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkclass LayoutTestController : public RefCounted<LayoutTestController> {
42563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkpublic:
4306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    static PassRefPtr<LayoutTestController> create(const std::string& testPathOrURL, const std::string& expectedPixelHash);
44563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    ~LayoutTestController();
45563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
46563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void makeWindowObject(JSContextRef context, JSObjectRef windowObject, JSValueRef* exception);
47563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
48563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void addDisallowedURL(JSStringRef url);
4965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void addURLToRedirect(std::string origin, std::string destination);
5065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    const std::string& redirectionDestinationForURL(std::string);
51dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    void clearAllApplicationCaches();
52563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void clearAllDatabases();
532bde8e466a4451c7319e3a072d118917957d6554Steve Block    void clearApplicationCacheForOrigin(JSStringRef name);
54563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void clearBackForwardList();
550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void clearPersistentUserStyleSheet();
56dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    bool callShouldCloseOnWebView();
57563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    JSStringRef copyDecodedHostName(JSStringRef name);
58563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    JSStringRef copyEncodedHostName(JSStringRef name);
59f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    JSRetainPtr<JSStringRef> counterValueForElementById(JSStringRef id);
600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void disableImageLoading();
610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void dispatchPendingLoadRequests();
62563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void display();
632fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    void displayInvalidatedRegion();
640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void execCommand(JSStringRef name, JSStringRef value);
65f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    bool findString(JSContextRef, JSStringRef, JSObjectRef optionsArray);
662bde8e466a4451c7319e3a072d118917957d6554Steve Block    JSValueRef originsWithApplicationCache(JSContextRef);
67563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool isCommandEnabled(JSStringRef name);
68563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void keepWebHistory();
69dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    JSValueRef computedStyleIncludingVisitedInfo(JSContextRef, JSValueRef);
70bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    JSValueRef nodesFromRect(JSContextRef, JSValueRef, int x, int y, unsigned top, unsigned right, unsigned bottom, unsigned left, bool ignoreClipping);
71563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void notifyDone();
728a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    int numberOfPages(float pageWidthInPixels, float pageHeightInPixels);
732bde8e466a4451c7319e3a072d118917957d6554Steve Block    int numberOfPendingGeolocationPermissionRequests();
74231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void overridePreference(JSStringRef key, JSStringRef value);
755e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    int pageNumberForElementById(JSStringRef id, float pageWidthInPixels, float pageHeightInPixels);
7606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSRetainPtr<JSStringRef> pageProperty(const char* propertyName, int pageNumber) const;
77ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    JSRetainPtr<JSStringRef> pageSizeAndMarginsInPixels(int pageNumber, int width, int height, int marginTop, int marginRight, int marginBottom, int marginLeft) const;
7806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    bool isPageBoxVisible(int pageNumber) const;
79563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    JSStringRef pathToLocalResource(JSContextRef, JSStringRef url);
80563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void queueBackNavigation(int howFarBackward);
81563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void queueForwardNavigation(int howFarForward);
82563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void queueLoad(JSStringRef url, JSStringRef target);
83967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    void queueLoadHTMLString(JSStringRef content, JSStringRef baseURL);
8465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void queueLoadAlternateHTMLString(JSStringRef content, JSStringRef baseURL, JSStringRef unreachableURL);
850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void queueLoadingScript(JSStringRef script);
860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void queueNonLoadingScript(JSStringRef script);
87563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void queueReload();
88cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    void removeAllVisitedLinks();
89563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setAcceptsEditing(bool acceptsEditing);
90643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    void setAllowUniversalAccessFromFileURLs(bool);
91692e5dbf12901edacf14812a6fae25462920af42Steve Block    void setAllowFileAccessFromFileURLs(bool);
925e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    void setAppCacheMaximumSize(unsigned long long quota);
93dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    void setApplicationCacheOriginQuota(unsigned long long quota);
94563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setAuthorAndUserStylesEnabled(bool);
952bde8e466a4451c7319e3a072d118917957d6554Steve Block    void setAutofilled(JSContextRef, JSValueRef nodeObject, bool autofilled);
960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void setCacheModel(int);
97563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setCustomPolicyDelegate(bool setDelegate, bool permissive);
98563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setDatabaseQuota(unsigned long long quota);
99d0825bca7fe65beaee391d30da42e937db621564Steve Block    void setDomainRelaxationForbiddenForURLScheme(bool forbidden, JSStringRef scheme);
100563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setIconDatabaseEnabled(bool iconDatabaseEnabled);
101563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setJavaScriptProfilingEnabled(bool profilingEnabled);
10221939df44de1705786c545cd1bf519d47250322dBen Murdoch    void setJavaScriptCanAccessClipboard(bool flag);
103563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setMainFrameIsFirstResponder(bool flag);
104db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    void setMockDeviceOrientation(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma);
1055e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    void setMockGeolocationError(int code, JSStringRef message);
1065e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    void setMockGeolocationPosition(double latitude, double longitude, double accuracy);
1074576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    void addMockSpeechInputResult(JSStringRef result, double confidence, JSStringRef language);
1080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void setPersistentUserStyleSheetLocation(JSStringRef path);
10921939df44de1705786c545cd1bf519d47250322dBen Murdoch    void setPluginsEnabled(bool flag);
110563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setPopupBlockingEnabled(bool flag);
1110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void setPrivateBrowsingEnabled(bool flag);
112563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setSelectTrailingWhitespaceEnabled(bool flag);
1130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void setSmartInsertDeleteEnabled(bool flag);
1140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void setTabKeyCyclesThroughElements(bool cycles);
115563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setUseDashboardCompatibilityMode(bool flag);
116563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setUserStyleSheetEnabled(bool flag);
117563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setUserStyleSheetLocation(JSStringRef path);
11881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    void setValueForUser(JSContextRef, JSValueRef nodeObject, JSStringRef value);
119e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block    void setViewModeMediaFeature(JSStringRef mode);
1205e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    void setXSSAuditorEnabled(bool flag);
121dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    void setFrameFlatteningEnabled(bool enable);
122dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    void setSpatialNavigationEnabled(bool enable);
123dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    void setScrollbarPolicy(JSStringRef orientation, JSStringRef policy);
124e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block    void setEditingBehavior(const char* editingBehavior);
1252daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    JSValueRef shadowRoot(JSContextRef, JSValueRef);
1265e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block
1270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void waitForPolicyDelegate();
1280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    size_t webHistoryItemCount();
129231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    unsigned workerThreadCount() const;
130563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    int windowCount();
131563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
132231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void grantDesktopNotificationPermission(JSStringRef origin);
133231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool checkDesktopNotificationPermission(JSStringRef origin);
134563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
135231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool elementDoesAutoCompleteForElementWithId(JSStringRef id);
136563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
1372daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    bool dumpAsAudio() const { return m_dumpAsAudio; }
1382daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    void setDumpAsAudio(bool dumpAsAudio) { m_dumpAsAudio = dumpAsAudio; }
1392daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
140563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool dumpAsPDF() const { return m_dumpAsPDF; }
141563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setDumpAsPDF(bool dumpAsPDF) { m_dumpAsPDF = dumpAsPDF; }
142231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
143231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool dumpAsText() const { return m_dumpAsText; }
144231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void setDumpAsText(bool dumpAsText) { m_dumpAsText = dumpAsText; }
145967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch
146967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    bool generatePixelResults() const { return m_generatePixelResults; }
147967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    void setGeneratePixelResults(bool generatePixelResults) { m_generatePixelResults = generatePixelResults; }
148967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch
149dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    bool dumpApplicationCacheDelegateCallbacks() const { return m_dumpApplicationCacheDelegateCallbacks; }
150dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    void setDumpApplicationCacheDelegateCallbacks(bool dumpCallbacks) { m_dumpApplicationCacheDelegateCallbacks = dumpCallbacks; }
151dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch
152563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool dumpBackForwardList() const { return m_dumpBackForwardList; }
153563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setDumpBackForwardList(bool dumpBackForwardList) { m_dumpBackForwardList = dumpBackForwardList; }
154563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
155563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool dumpChildFrameScrollPositions() const { return m_dumpChildFrameScrollPositions; }
156563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setDumpChildFrameScrollPositions(bool dumpChildFrameScrollPositions) { m_dumpChildFrameScrollPositions = dumpChildFrameScrollPositions; }
157563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
158563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool dumpChildFramesAsText() const { return m_dumpChildFramesAsText; }
159563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setDumpChildFramesAsText(bool dumpChildFramesAsText) { m_dumpChildFramesAsText = dumpChildFramesAsText; }
160563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
161563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool dumpDatabaseCallbacks() const { return m_dumpDatabaseCallbacks; }
162563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setDumpDatabaseCallbacks(bool dumpDatabaseCallbacks) { m_dumpDatabaseCallbacks = dumpDatabaseCallbacks; }
163563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
164563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool dumpDOMAsWebArchive() const { return m_dumpDOMAsWebArchive; }
165563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setDumpDOMAsWebArchive(bool dumpDOMAsWebArchive) { m_dumpDOMAsWebArchive = dumpDOMAsWebArchive; }
166563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
167563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool dumpEditingCallbacks() const { return m_dumpEditingCallbacks; }
168563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setDumpEditingCallbacks(bool dumpEditingCallbacks) { m_dumpEditingCallbacks = dumpEditingCallbacks; }
169563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
170231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool dumpFrameLoadCallbacks() const { return m_dumpFrameLoadCallbacks; }
171231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void setDumpFrameLoadCallbacks(bool dumpFrameLoadCallbacks) { m_dumpFrameLoadCallbacks = dumpFrameLoadCallbacks; }
172e14391e94c850b8bd03680c23b38978db68687a8John Reck
173e14391e94c850b8bd03680c23b38978db68687a8John Reck    bool dumpUserGestureInFrameLoadCallbacks() const { return m_dumpUserGestureInFrameLoadCallbacks; }
174e14391e94c850b8bd03680c23b38978db68687a8John Reck    void setDumpUserGestureInFrameLoadCallbacks(bool dumpUserGestureInFrameLoadCallbacks) { m_dumpUserGestureInFrameLoadCallbacks = dumpUserGestureInFrameLoadCallbacks; }
175231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
176cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    bool dumpHistoryDelegateCallbacks() const { return m_dumpHistoryDelegateCallbacks; }
177cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    void setDumpHistoryDelegateCallbacks(bool dumpHistoryDelegateCallbacks) { m_dumpHistoryDelegateCallbacks = dumpHistoryDelegateCallbacks; }
178cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block
179563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool dumpResourceLoadCallbacks() const { return m_dumpResourceLoadCallbacks; }
180563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setDumpResourceLoadCallbacks(bool dumpResourceLoadCallbacks) { m_dumpResourceLoadCallbacks = dumpResourceLoadCallbacks; }
1810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
1820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    bool dumpResourceResponseMIMETypes() const { return m_dumpResourceResponseMIMETypes; }
1830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void setDumpResourceResponseMIMETypes(bool dumpResourceResponseMIMETypes) { m_dumpResourceResponseMIMETypes = dumpResourceResponseMIMETypes; }
1840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
185231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool dumpSelectionRect() const { return m_dumpSelectionRect; }
186231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void setDumpSelectionRect(bool dumpSelectionRect) { m_dumpSelectionRect = dumpSelectionRect; }
187563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
188231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool dumpSourceAsWebArchive() const { return m_dumpSourceAsWebArchive; }
189231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void setDumpSourceAsWebArchive(bool dumpSourceAsWebArchive) { m_dumpSourceAsWebArchive = dumpSourceAsWebArchive; }
190231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
191231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool dumpStatusCallbacks() const { return m_dumpStatusCallbacks; }
192231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void setDumpStatusCallbacks(bool dumpStatusCallbacks) { m_dumpStatusCallbacks = dumpStatusCallbacks; }
193563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
194231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool dumpTitleChanges() const { return m_dumpTitleChanges; }
195231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void setDumpTitleChanges(bool dumpTitleChanges) { m_dumpTitleChanges = dumpTitleChanges; }
196cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block
19721939df44de1705786c545cd1bf519d47250322dBen Murdoch    bool dumpIconChanges() const { return m_dumpIconChanges; }
19821939df44de1705786c545cd1bf519d47250322dBen Murdoch    void setDumpIconChanges(bool dumpIconChanges) { m_dumpIconChanges = dumpIconChanges; }
19921939df44de1705786c545cd1bf519d47250322dBen Murdoch
200cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    bool dumpVisitedLinksCallback() const { return m_dumpVisitedLinksCallback; }
201cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    void setDumpVisitedLinksCallback(bool dumpVisitedLinksCallback) { m_dumpVisitedLinksCallback = dumpVisitedLinksCallback; }
202231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
203231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool dumpWillCacheResponse() const { return m_dumpWillCacheResponse; }
204231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void setDumpWillCacheResponse(bool dumpWillCacheResponse) { m_dumpWillCacheResponse = dumpWillCacheResponse; }
205231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
206563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool callCloseOnWebViews() const { return m_callCloseOnWebViews; }
207563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setCallCloseOnWebViews(bool callCloseOnWebViews) { m_callCloseOnWebViews = callCloseOnWebViews; }
208563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
209563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool canOpenWindows() const { return m_canOpenWindows; }
210563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setCanOpenWindows(bool canOpenWindows) { m_canOpenWindows = canOpenWindows; }
211563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
212563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool closeRemainingWindowsWhenComplete() const { return m_closeRemainingWindowsWhenComplete; }
213563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setCloseRemainingWindowsWhenComplete(bool closeRemainingWindowsWhenComplete) { m_closeRemainingWindowsWhenComplete = closeRemainingWindowsWhenComplete; }
214563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
2155e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    bool newWindowsCopyBackForwardList() const { return m_newWindowsCopyBackForwardList; }
2165e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    void setNewWindowsCopyBackForwardList(bool newWindowsCopyBackForwardList) { m_newWindowsCopyBackForwardList = newWindowsCopyBackForwardList; }
2175e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block
218563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool stopProvisionalFrameLoads() const { return m_stopProvisionalFrameLoads; }
219563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setStopProvisionalFrameLoads(bool stopProvisionalFrameLoads) { m_stopProvisionalFrameLoads = stopProvisionalFrameLoads; }
220563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
221563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool testOnscreen() const { return m_testOnscreen; }
222563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setTestOnscreen(bool testOnscreen) { m_testOnscreen = testOnscreen; }
223563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
224563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool testRepaint() const { return m_testRepaint; }
225563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setTestRepaint(bool testRepaint) { m_testRepaint = testRepaint; }
226563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
227563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool testRepaintSweepHorizontally() const { return m_testRepaintSweepHorizontally; }
228563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setTestRepaintSweepHorizontally(bool testRepaintSweepHorizontally) { m_testRepaintSweepHorizontally = testRepaintSweepHorizontally; }
229563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
230563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool waitToDump() const { return m_waitToDump; }
231563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setWaitToDump(bool waitToDump);
232231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void waitToDumpWatchdogTimerFired();
233563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
234dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    const std::set<std::string>& willSendRequestClearHeaders() const { return m_willSendRequestClearHeaders; }
235dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    void setWillSendRequestClearHeader(std::string header) { m_willSendRequestClearHeaders.insert(header); }
236dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
237d0825bca7fe65beaee391d30da42e937db621564Steve Block    bool willSendRequestReturnsNull() const { return m_willSendRequestReturnsNull; }
238d0825bca7fe65beaee391d30da42e937db621564Steve Block    void setWillSendRequestReturnsNull(bool returnsNull) { m_willSendRequestReturnsNull = returnsNull; }
239d0825bca7fe65beaee391d30da42e937db621564Steve Block
2400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    bool willSendRequestReturnsNullOnRedirect() const { return m_willSendRequestReturnsNullOnRedirect; }
2410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void setWillSendRequestReturnsNullOnRedirect(bool returnsNull) { m_willSendRequestReturnsNullOnRedirect = returnsNull; }
2420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
243563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool windowIsKey() const { return m_windowIsKey; }
244563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setWindowIsKey(bool windowIsKey);
245563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
246231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool alwaysAcceptCookies() const { return m_alwaysAcceptCookies; }
247231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void setAlwaysAcceptCookies(bool alwaysAcceptCookies);
248231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
249231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool handlesAuthenticationChallenges() const { return m_handlesAuthenticationChallenges; }
250231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void setHandlesAuthenticationChallenges(bool handlesAuthenticationChallenges) { m_handlesAuthenticationChallenges = handlesAuthenticationChallenges; }
251231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
25221939df44de1705786c545cd1bf519d47250322dBen Murdoch    bool isPrinting() const { return m_isPrinting; }
25321939df44de1705786c545cd1bf519d47250322dBen Murdoch    void setIsPrinting(bool isPrinting) { m_isPrinting = isPrinting; }
25421939df44de1705786c545cd1bf519d47250322dBen Murdoch
255231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    const std::string& authenticationUsername() const { return m_authenticationUsername; }
256231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void setAuthenticationUsername(std::string username) { m_authenticationUsername = username; }
257231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
258231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    const std::string& authenticationPassword() const { return m_authenticationPassword; }
259231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void setAuthenticationPassword(std::string password) { m_authenticationPassword = password; }
260231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
261563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool globalFlag() const { return m_globalFlag; }
262563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setGlobalFlag(bool globalFlag) { m_globalFlag = globalFlag; }
263563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
264967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    bool deferMainResourceDataLoad() const { return m_deferMainResourceDataLoad; }
265967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    void setDeferMainResourceDataLoad(bool flag) { m_deferMainResourceDataLoad = flag; }
266967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch
267563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    const std::string& testPathOrURL() const { return m_testPathOrURL; }
268563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    const std::string& expectedPixelHash() const { return m_expectedPixelHash; }
2692daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
2702daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    const std::string& encodedAudioData() const { return m_encodedAudioData; }
2712daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    void setEncodedAudioData(const std::string& encodedAudioData) { m_encodedAudioData = encodedAudioData; }
272563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
273563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool pauseAnimationAtTimeOnElementWithId(JSStringRef animationName, double time, JSStringRef elementId);
274563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool pauseTransitionAtTimeOnElementWithId(JSStringRef propertyName, double time, JSStringRef elementId);
275643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    bool sampleSVGAnimationForElementAtTime(JSStringRef animationId, double time, JSStringRef elementId);
276563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    unsigned numberOfActiveAnimations() const;
277f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick    void suspendAnimations() const;
278f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick    void resumeAnimations() const;
279231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
280dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    void addOriginAccessWhitelistEntry(JSStringRef sourceOrigin, JSStringRef destinationProtocol, JSStringRef destinationHost, bool allowDestinationSubdomains);
281dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    void removeOriginAccessWhitelistEntry(JSStringRef sourceOrigin, JSStringRef destinationProtocol, JSStringRef destinationHost, bool allowDestinationSubdomains);
282231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
283e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    void addUserScript(JSStringRef source, bool runAtStart, bool allFrames);
284e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    void addUserStyleSheet(JSStringRef source, bool allFrames);
285231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
286231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void setGeolocationPermission(bool allow);
287231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool isGeolocationPermissionSet() const { return m_isGeolocationPermissionSet; }
288231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool geolocationPermission() const { return m_geolocationPermission; }
289231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
290dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    void setDeveloperExtrasEnabled(bool);
291f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    void setAsynchronousSpellCheckingEnabled(bool);
292231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void showWebInspector();
293231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void closeWebInspector();
294643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    void setTimelineProfilingEnabled(bool enabled);
295231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void evaluateInWebInspector(long callId, JSStringRef script);
296cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    void evaluateScriptInIsolatedWorld(unsigned worldId, JSObjectRef globalObject, JSStringRef script);
297231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
298231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void setPOSIXLocale(JSStringRef locale);
299dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
300dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    void setWebViewEditable(bool);
301dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
30206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    void abortModal();
30306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
304a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    bool hasSpellingMarker(int from, int length);
3052bde8e466a4451c7319e3a072d118917957d6554Steve Block    bool hasGrammarMarker(int from, int length);
306a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
30781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    void dumpConfigurationForViewport(int deviceDPI, int deviceWidth, int deviceHeight, int availableWidth, int availableHeight);
30881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch
309f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    static void setSerializeHTTPLoads(bool serialize);
310f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch
311692e5dbf12901edacf14812a6fae25462920af42Steve Block    // The following API test functions should probably be moved to platform-specific
312692e5dbf12901edacf14812a6fae25462920af42Steve Block    // unit tests outside of DRT once they exist.
313692e5dbf12901edacf14812a6fae25462920af42Steve Block    void apiTestNewWindowDataLoadBaseURL(JSStringRef utf8Data, JSStringRef baseURL);
314dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    void apiTestGoToCurrentBackForwardItem();
315dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
316dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    // Simulate a request an embedding application could make, populating per-session credential storage.
317dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    void authenticateSession(JSStringRef url, JSStringRef username, JSStringRef password);
318dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
319dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    JSRetainPtr<JSStringRef> layerTreeAsText() const;
320dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
321dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    JSRetainPtr<JSStringRef> markerTextForListItem(JSContextRef context, JSValueRef nodeObject) const;
322692e5dbf12901edacf14812a6fae25462920af42Steve Block
3232bde8e466a4451c7319e3a072d118917957d6554Steve Block    JSValueRef originsWithLocalStorage(JSContextRef);
3242bde8e466a4451c7319e3a072d118917957d6554Steve Block    void deleteAllLocalStorage();
3252bde8e466a4451c7319e3a072d118917957d6554Steve Block    void deleteLocalStorageForOrigin(JSStringRef originIdentifier);
3262bde8e466a4451c7319e3a072d118917957d6554Steve Block    void observeStorageTrackerNotifications(unsigned number);
3272bde8e466a4451c7319e3a072d118917957d6554Steve Block    void syncLocalStorage();
3282bde8e466a4451c7319e3a072d118917957d6554Steve Block
32981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    void setShouldPaintBrokenImage(bool);
33081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    bool shouldPaintBrokenImage() const { return m_shouldPaintBrokenImage; }
33181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch
332692e5dbf12901edacf14812a6fae25462920af42Steve Block    static const unsigned maxViewWidth;
333692e5dbf12901edacf14812a6fae25462920af42Steve Block    static const unsigned maxViewHeight;
334231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
33581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    void setMinimumTimerInterval(double);
33681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch
337563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkprivate:
33806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    LayoutTestController(const std::string& testPathOrURL, const std::string& expectedPixelHash);
33906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
340dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    void setGeolocationPermissionCommon(bool allow);
341dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch
342dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    bool m_dumpApplicationCacheDelegateCallbacks;
3432daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    bool m_dumpAsAudio;
344563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_dumpAsPDF;
345231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool m_dumpAsText;
346563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_dumpBackForwardList;
347563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_dumpChildFrameScrollPositions;
348563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_dumpChildFramesAsText;
349563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_dumpDOMAsWebArchive;
350231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool m_dumpDatabaseCallbacks;
351231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool m_dumpEditingCallbacks;
352231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool m_dumpFrameLoadCallbacks;
353e14391e94c850b8bd03680c23b38978db68687a8John Reck    bool m_dumpUserGestureInFrameLoadCallbacks;
354cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    bool m_dumpHistoryDelegateCallbacks;
355231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool m_dumpResourceLoadCallbacks;
356231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool m_dumpResourceResponseMIMETypes;
357563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_dumpSelectionRect;
358563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_dumpSourceAsWebArchive;
359563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_dumpStatusCallbacks;
360563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_dumpTitleChanges;
36121939df44de1705786c545cd1bf519d47250322dBen Murdoch    bool m_dumpIconChanges;
362cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    bool m_dumpVisitedLinksCallback;
3630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    bool m_dumpWillCacheResponse;
364967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    bool m_generatePixelResults;
365563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_callCloseOnWebViews;
366563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_canOpenWindows;
367563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_closeRemainingWindowsWhenComplete;
3685e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    bool m_newWindowsCopyBackForwardList;
369563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_stopProvisionalFrameLoads;
370563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_testOnscreen;
371563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_testRepaint;
372563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_testRepaintSweepHorizontally;
373563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_waitToDump; // True if waitUntilDone() has been called, but notifyDone() has not yet been called.
374d0825bca7fe65beaee391d30da42e937db621564Steve Block    bool m_willSendRequestReturnsNull;
3750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    bool m_willSendRequestReturnsNullOnRedirect;
376563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_windowIsKey;
377231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool m_alwaysAcceptCookies;
378563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_globalFlag;
379231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool m_isGeolocationPermissionSet;
380231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool m_geolocationPermission;
381231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool m_handlesAuthenticationChallenges;
38221939df44de1705786c545cd1bf519d47250322dBen Murdoch    bool m_isPrinting;
383967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    bool m_deferMainResourceDataLoad;
38481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    bool m_shouldPaintBrokenImage;
385563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
386231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    std::string m_authenticationUsername;
387231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    std::string m_authenticationPassword;
388563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    std::string m_testPathOrURL;
389563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    std::string m_expectedPixelHash;    // empty string if no hash
390dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
391dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    std::set<std::string> m_willSendRequestClearHeaders;
392563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
3932daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    // base64 encoded WAV audio data is stored here.
3942daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    std::string m_encodedAudioData;
3952daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
396231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    // origins which have been granted desktop notification access
397231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    std::vector<JSStringRef> m_desktopNotificationAllowedOrigins;
39865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
39965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    std::map<std::string, std::string> m_URLsToRedirect;
400231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
401563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    static JSClassRef getJSClass();
402563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    static JSStaticValue* staticValues();
403563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    static JSStaticFunction* staticFunctions();
404563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark};
405563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
406563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#endif // LayoutTestController_h
407