LayoutTestController.h revision f05b935882198ccf7d81675736e3aeb089c5113a
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>
34dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include <set>
35563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include <string>
36231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#include <vector>
3706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#include <wtf/PassRefPtr.h>
38dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include <wtf/RefCounted.h>
39563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
40563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkclass LayoutTestController : public RefCounted<LayoutTestController> {
41563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkpublic:
4206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    static PassRefPtr<LayoutTestController> create(const std::string& testPathOrURL, const std::string& expectedPixelHash);
43563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    ~LayoutTestController();
44563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
45563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void makeWindowObject(JSContextRef context, JSObjectRef windowObject, JSValueRef* exception);
46563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
47563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void addDisallowedURL(JSStringRef url);
48dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    void clearAllApplicationCaches();
49563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void clearAllDatabases();
50563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void clearBackForwardList();
510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void clearPersistentUserStyleSheet();
52dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    bool callShouldCloseOnWebView();
53563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    JSStringRef copyDecodedHostName(JSStringRef name);
54563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    JSStringRef copyEncodedHostName(JSStringRef name);
55f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    JSRetainPtr<JSStringRef> counterValueForElementById(JSStringRef id);
560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void disableImageLoading();
570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void dispatchPendingLoadRequests();
58563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void display();
590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void execCommand(JSStringRef name, JSStringRef value);
60f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    bool findString(JSContextRef, JSStringRef, JSObjectRef optionsArray);
61563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool isCommandEnabled(JSStringRef name);
62563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void keepWebHistory();
63dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    JSValueRef computedStyleIncludingVisitedInfo(JSContextRef, JSValueRef);
64bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    JSValueRef nodesFromRect(JSContextRef, JSValueRef, int x, int y, unsigned top, unsigned right, unsigned bottom, unsigned left, bool ignoreClipping);
65563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void notifyDone();
668a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    int numberOfPages(float pageWidthInPixels, float pageHeightInPixels);
67231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void overridePreference(JSStringRef key, JSStringRef value);
685e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    int pageNumberForElementById(JSStringRef id, float pageWidthInPixels, float pageHeightInPixels);
6906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    JSRetainPtr<JSStringRef> pageProperty(const char* propertyName, int pageNumber) const;
70ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    JSRetainPtr<JSStringRef> pageSizeAndMarginsInPixels(int pageNumber, int width, int height, int marginTop, int marginRight, int marginBottom, int marginLeft) const;
7106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    bool isPageBoxVisible(int pageNumber) const;
72563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    JSStringRef pathToLocalResource(JSContextRef, JSStringRef url);
73563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void queueBackNavigation(int howFarBackward);
74563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void queueForwardNavigation(int howFarForward);
75563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void queueLoad(JSStringRef url, JSStringRef target);
76967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    void queueLoadHTMLString(JSStringRef content, JSStringRef baseURL);
770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void queueLoadingScript(JSStringRef script);
780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void queueNonLoadingScript(JSStringRef script);
79563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void queueReload();
80cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    void removeAllVisitedLinks();
81563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setAcceptsEditing(bool acceptsEditing);
82643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    void setAllowUniversalAccessFromFileURLs(bool);
83692e5dbf12901edacf14812a6fae25462920af42Steve Block    void setAllowFileAccessFromFileURLs(bool);
845e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    void setAppCacheMaximumSize(unsigned long long quota);
85dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    void setApplicationCacheOriginQuota(unsigned long long quota);
86563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setAuthorAndUserStylesEnabled(bool);
870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void setCacheModel(int);
88563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setCustomPolicyDelegate(bool setDelegate, bool permissive);
89563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setDatabaseQuota(unsigned long long quota);
90d0825bca7fe65beaee391d30da42e937db621564Steve Block    void setDomainRelaxationForbiddenForURLScheme(bool forbidden, JSStringRef scheme);
91563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setIconDatabaseEnabled(bool iconDatabaseEnabled);
92563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setJavaScriptProfilingEnabled(bool profilingEnabled);
9321939df44de1705786c545cd1bf519d47250322dBen Murdoch    void setJavaScriptCanAccessClipboard(bool flag);
94563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setMainFrameIsFirstResponder(bool flag);
95db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    void setMockDeviceOrientation(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma);
965e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    void setMockGeolocationError(int code, JSStringRef message);
975e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    void setMockGeolocationPosition(double latitude, double longitude, double accuracy);
984576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    void addMockSpeechInputResult(JSStringRef result, double confidence, JSStringRef language);
990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void setPersistentUserStyleSheetLocation(JSStringRef path);
10021939df44de1705786c545cd1bf519d47250322dBen Murdoch    void setPluginsEnabled(bool flag);
101563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setPopupBlockingEnabled(bool flag);
1020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void setPrivateBrowsingEnabled(bool flag);
103563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setSelectTrailingWhitespaceEnabled(bool flag);
1040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void setSmartInsertDeleteEnabled(bool flag);
1050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void setTabKeyCyclesThroughElements(bool cycles);
106563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setUseDashboardCompatibilityMode(bool flag);
107563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setUserStyleSheetEnabled(bool flag);
108563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setUserStyleSheetLocation(JSStringRef path);
109e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block    void setViewModeMediaFeature(JSStringRef mode);
1105e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    void setXSSAuditorEnabled(bool flag);
111dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    void setFrameFlatteningEnabled(bool enable);
112dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    void setSpatialNavigationEnabled(bool enable);
113dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    void setScrollbarPolicy(JSStringRef orientation, JSStringRef policy);
114e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block    void setEditingBehavior(const char* editingBehavior);
1155e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block
1160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void waitForPolicyDelegate();
1170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    size_t webHistoryItemCount();
118231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    unsigned workerThreadCount() const;
119563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    int windowCount();
120563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
121231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void grantDesktopNotificationPermission(JSStringRef origin);
122231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool checkDesktopNotificationPermission(JSStringRef origin);
123563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
124231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool elementDoesAutoCompleteForElementWithId(JSStringRef id);
125563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
126563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool dumpAsPDF() const { return m_dumpAsPDF; }
127563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setDumpAsPDF(bool dumpAsPDF) { m_dumpAsPDF = dumpAsPDF; }
128231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
129231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool dumpAsText() const { return m_dumpAsText; }
130231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void setDumpAsText(bool dumpAsText) { m_dumpAsText = dumpAsText; }
131967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch
132967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    bool generatePixelResults() const { return m_generatePixelResults; }
133967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    void setGeneratePixelResults(bool generatePixelResults) { m_generatePixelResults = generatePixelResults; }
134967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch
135dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    bool dumpApplicationCacheDelegateCallbacks() const { return m_dumpApplicationCacheDelegateCallbacks; }
136dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    void setDumpApplicationCacheDelegateCallbacks(bool dumpCallbacks) { m_dumpApplicationCacheDelegateCallbacks = dumpCallbacks; }
137dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch
138563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool dumpBackForwardList() const { return m_dumpBackForwardList; }
139563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setDumpBackForwardList(bool dumpBackForwardList) { m_dumpBackForwardList = dumpBackForwardList; }
140563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
141563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool dumpChildFrameScrollPositions() const { return m_dumpChildFrameScrollPositions; }
142563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setDumpChildFrameScrollPositions(bool dumpChildFrameScrollPositions) { m_dumpChildFrameScrollPositions = dumpChildFrameScrollPositions; }
143563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
144563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool dumpChildFramesAsText() const { return m_dumpChildFramesAsText; }
145563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setDumpChildFramesAsText(bool dumpChildFramesAsText) { m_dumpChildFramesAsText = dumpChildFramesAsText; }
146563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
147563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool dumpDatabaseCallbacks() const { return m_dumpDatabaseCallbacks; }
148563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setDumpDatabaseCallbacks(bool dumpDatabaseCallbacks) { m_dumpDatabaseCallbacks = dumpDatabaseCallbacks; }
149563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
150563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool dumpDOMAsWebArchive() const { return m_dumpDOMAsWebArchive; }
151563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setDumpDOMAsWebArchive(bool dumpDOMAsWebArchive) { m_dumpDOMAsWebArchive = dumpDOMAsWebArchive; }
152563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
153563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool dumpEditingCallbacks() const { return m_dumpEditingCallbacks; }
154563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setDumpEditingCallbacks(bool dumpEditingCallbacks) { m_dumpEditingCallbacks = dumpEditingCallbacks; }
155563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
156231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool dumpFrameLoadCallbacks() const { return m_dumpFrameLoadCallbacks; }
157231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void setDumpFrameLoadCallbacks(bool dumpFrameLoadCallbacks) { m_dumpFrameLoadCallbacks = dumpFrameLoadCallbacks; }
158e14391e94c850b8bd03680c23b38978db68687a8John Reck
159e14391e94c850b8bd03680c23b38978db68687a8John Reck    bool dumpUserGestureInFrameLoadCallbacks() const { return m_dumpUserGestureInFrameLoadCallbacks; }
160e14391e94c850b8bd03680c23b38978db68687a8John Reck    void setDumpUserGestureInFrameLoadCallbacks(bool dumpUserGestureInFrameLoadCallbacks) { m_dumpUserGestureInFrameLoadCallbacks = dumpUserGestureInFrameLoadCallbacks; }
161231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
162cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    bool dumpHistoryDelegateCallbacks() const { return m_dumpHistoryDelegateCallbacks; }
163cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    void setDumpHistoryDelegateCallbacks(bool dumpHistoryDelegateCallbacks) { m_dumpHistoryDelegateCallbacks = dumpHistoryDelegateCallbacks; }
164cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block
165563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool dumpResourceLoadCallbacks() const { return m_dumpResourceLoadCallbacks; }
166563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setDumpResourceLoadCallbacks(bool dumpResourceLoadCallbacks) { m_dumpResourceLoadCallbacks = dumpResourceLoadCallbacks; }
1670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
1680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    bool dumpResourceResponseMIMETypes() const { return m_dumpResourceResponseMIMETypes; }
1690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void setDumpResourceResponseMIMETypes(bool dumpResourceResponseMIMETypes) { m_dumpResourceResponseMIMETypes = dumpResourceResponseMIMETypes; }
1700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
171231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool dumpSelectionRect() const { return m_dumpSelectionRect; }
172231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void setDumpSelectionRect(bool dumpSelectionRect) { m_dumpSelectionRect = dumpSelectionRect; }
173563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
174231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool dumpSourceAsWebArchive() const { return m_dumpSourceAsWebArchive; }
175231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void setDumpSourceAsWebArchive(bool dumpSourceAsWebArchive) { m_dumpSourceAsWebArchive = dumpSourceAsWebArchive; }
176231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
177231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool dumpStatusCallbacks() const { return m_dumpStatusCallbacks; }
178231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void setDumpStatusCallbacks(bool dumpStatusCallbacks) { m_dumpStatusCallbacks = dumpStatusCallbacks; }
179563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
180231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool dumpTitleChanges() const { return m_dumpTitleChanges; }
181231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void setDumpTitleChanges(bool dumpTitleChanges) { m_dumpTitleChanges = dumpTitleChanges; }
182cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block
18321939df44de1705786c545cd1bf519d47250322dBen Murdoch    bool dumpIconChanges() const { return m_dumpIconChanges; }
18421939df44de1705786c545cd1bf519d47250322dBen Murdoch    void setDumpIconChanges(bool dumpIconChanges) { m_dumpIconChanges = dumpIconChanges; }
18521939df44de1705786c545cd1bf519d47250322dBen Murdoch
186cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    bool dumpVisitedLinksCallback() const { return m_dumpVisitedLinksCallback; }
187cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    void setDumpVisitedLinksCallback(bool dumpVisitedLinksCallback) { m_dumpVisitedLinksCallback = dumpVisitedLinksCallback; }
188231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
189231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool dumpWillCacheResponse() const { return m_dumpWillCacheResponse; }
190231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void setDumpWillCacheResponse(bool dumpWillCacheResponse) { m_dumpWillCacheResponse = dumpWillCacheResponse; }
191231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
192563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool callCloseOnWebViews() const { return m_callCloseOnWebViews; }
193563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setCallCloseOnWebViews(bool callCloseOnWebViews) { m_callCloseOnWebViews = callCloseOnWebViews; }
194563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
195563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool canOpenWindows() const { return m_canOpenWindows; }
196563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setCanOpenWindows(bool canOpenWindows) { m_canOpenWindows = canOpenWindows; }
197563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
198563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool closeRemainingWindowsWhenComplete() const { return m_closeRemainingWindowsWhenComplete; }
199563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setCloseRemainingWindowsWhenComplete(bool closeRemainingWindowsWhenComplete) { m_closeRemainingWindowsWhenComplete = closeRemainingWindowsWhenComplete; }
200563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
2015e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    bool newWindowsCopyBackForwardList() const { return m_newWindowsCopyBackForwardList; }
2025e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    void setNewWindowsCopyBackForwardList(bool newWindowsCopyBackForwardList) { m_newWindowsCopyBackForwardList = newWindowsCopyBackForwardList; }
2035e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block
204563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool stopProvisionalFrameLoads() const { return m_stopProvisionalFrameLoads; }
205563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setStopProvisionalFrameLoads(bool stopProvisionalFrameLoads) { m_stopProvisionalFrameLoads = stopProvisionalFrameLoads; }
206563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
207563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool testOnscreen() const { return m_testOnscreen; }
208563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setTestOnscreen(bool testOnscreen) { m_testOnscreen = testOnscreen; }
209563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
210563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool testRepaint() const { return m_testRepaint; }
211563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setTestRepaint(bool testRepaint) { m_testRepaint = testRepaint; }
212563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
213563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool testRepaintSweepHorizontally() const { return m_testRepaintSweepHorizontally; }
214563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setTestRepaintSweepHorizontally(bool testRepaintSweepHorizontally) { m_testRepaintSweepHorizontally = testRepaintSweepHorizontally; }
215563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
216563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool waitToDump() const { return m_waitToDump; }
217563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setWaitToDump(bool waitToDump);
218231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void waitToDumpWatchdogTimerFired();
219563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
220dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    const std::set<std::string>& willSendRequestClearHeaders() const { return m_willSendRequestClearHeaders; }
221dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    void setWillSendRequestClearHeader(std::string header) { m_willSendRequestClearHeaders.insert(header); }
222dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
223d0825bca7fe65beaee391d30da42e937db621564Steve Block    bool willSendRequestReturnsNull() const { return m_willSendRequestReturnsNull; }
224d0825bca7fe65beaee391d30da42e937db621564Steve Block    void setWillSendRequestReturnsNull(bool returnsNull) { m_willSendRequestReturnsNull = returnsNull; }
225d0825bca7fe65beaee391d30da42e937db621564Steve Block
2260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    bool willSendRequestReturnsNullOnRedirect() const { return m_willSendRequestReturnsNullOnRedirect; }
2270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    void setWillSendRequestReturnsNullOnRedirect(bool returnsNull) { m_willSendRequestReturnsNullOnRedirect = returnsNull; }
2280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
229563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool windowIsKey() const { return m_windowIsKey; }
230563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setWindowIsKey(bool windowIsKey);
231563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
232231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool alwaysAcceptCookies() const { return m_alwaysAcceptCookies; }
233231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void setAlwaysAcceptCookies(bool alwaysAcceptCookies);
234231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
235231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool handlesAuthenticationChallenges() const { return m_handlesAuthenticationChallenges; }
236231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void setHandlesAuthenticationChallenges(bool handlesAuthenticationChallenges) { m_handlesAuthenticationChallenges = handlesAuthenticationChallenges; }
237231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
23821939df44de1705786c545cd1bf519d47250322dBen Murdoch    bool isPrinting() const { return m_isPrinting; }
23921939df44de1705786c545cd1bf519d47250322dBen Murdoch    void setIsPrinting(bool isPrinting) { m_isPrinting = isPrinting; }
24021939df44de1705786c545cd1bf519d47250322dBen Murdoch
241231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    const std::string& authenticationUsername() const { return m_authenticationUsername; }
242231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void setAuthenticationUsername(std::string username) { m_authenticationUsername = username; }
243231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
244231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    const std::string& authenticationPassword() const { return m_authenticationPassword; }
245231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void setAuthenticationPassword(std::string password) { m_authenticationPassword = password; }
246231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
247563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool globalFlag() const { return m_globalFlag; }
248563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void setGlobalFlag(bool globalFlag) { m_globalFlag = globalFlag; }
249563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
250967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    bool deferMainResourceDataLoad() const { return m_deferMainResourceDataLoad; }
251967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    void setDeferMainResourceDataLoad(bool flag) { m_deferMainResourceDataLoad = flag; }
252967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch
253563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    const std::string& testPathOrURL() const { return m_testPathOrURL; }
254563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    const std::string& expectedPixelHash() const { return m_expectedPixelHash; }
255563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
256563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool pauseAnimationAtTimeOnElementWithId(JSStringRef animationName, double time, JSStringRef elementId);
257563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool pauseTransitionAtTimeOnElementWithId(JSStringRef propertyName, double time, JSStringRef elementId);
258643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    bool sampleSVGAnimationForElementAtTime(JSStringRef animationId, double time, JSStringRef elementId);
259563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    unsigned numberOfActiveAnimations() const;
260f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick    void suspendAnimations() const;
261f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick    void resumeAnimations() const;
262231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
263dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    void addOriginAccessWhitelistEntry(JSStringRef sourceOrigin, JSStringRef destinationProtocol, JSStringRef destinationHost, bool allowDestinationSubdomains);
264dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    void removeOriginAccessWhitelistEntry(JSStringRef sourceOrigin, JSStringRef destinationProtocol, JSStringRef destinationHost, bool allowDestinationSubdomains);
265231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
266e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    void addUserScript(JSStringRef source, bool runAtStart, bool allFrames);
267e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    void addUserStyleSheet(JSStringRef source, bool allFrames);
268231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
269231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void setGeolocationPermission(bool allow);
270231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool isGeolocationPermissionSet() const { return m_isGeolocationPermissionSet; }
271231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool geolocationPermission() const { return m_geolocationPermission; }
272231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
273dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    void setDeveloperExtrasEnabled(bool);
274f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    void setAsynchronousSpellCheckingEnabled(bool);
275231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void showWebInspector();
276231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void closeWebInspector();
277643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    void setTimelineProfilingEnabled(bool enabled);
278231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void evaluateInWebInspector(long callId, JSStringRef script);
279cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    void evaluateScriptInIsolatedWorld(unsigned worldId, JSObjectRef globalObject, JSStringRef script);
280231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
281231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    void setPOSIXLocale(JSStringRef locale);
282dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
283dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    void setWebViewEditable(bool);
284dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
28506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    void abortModal();
28606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
287a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    bool hasSpellingMarker(int from, int length);
288a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
289f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    void dumpConfigurationForViewport(int availableWidth, int availableHeight);
290f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch
291f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    static void setSerializeHTTPLoads(bool serialize);
292f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch
293692e5dbf12901edacf14812a6fae25462920af42Steve Block    // The following API test functions should probably be moved to platform-specific
294692e5dbf12901edacf14812a6fae25462920af42Steve Block    // unit tests outside of DRT once they exist.
295692e5dbf12901edacf14812a6fae25462920af42Steve Block    void apiTestNewWindowDataLoadBaseURL(JSStringRef utf8Data, JSStringRef baseURL);
296dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    void apiTestGoToCurrentBackForwardItem();
297dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
298dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    // Simulate a request an embedding application could make, populating per-session credential storage.
299dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    void authenticateSession(JSStringRef url, JSStringRef username, JSStringRef password);
300dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
301dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    JSRetainPtr<JSStringRef> layerTreeAsText() const;
302dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
303dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    JSRetainPtr<JSStringRef> markerTextForListItem(JSContextRef context, JSValueRef nodeObject) const;
304692e5dbf12901edacf14812a6fae25462920af42Steve Block
305692e5dbf12901edacf14812a6fae25462920af42Steve Block    static const unsigned maxViewWidth;
306692e5dbf12901edacf14812a6fae25462920af42Steve Block    static const unsigned maxViewHeight;
307231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
308563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkprivate:
30906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    LayoutTestController(const std::string& testPathOrURL, const std::string& expectedPixelHash);
31006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
311dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    void setGeolocationPermissionCommon(bool allow);
312dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch
313dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    bool m_dumpApplicationCacheDelegateCallbacks;
314563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_dumpAsPDF;
315231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool m_dumpAsText;
316563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_dumpBackForwardList;
317563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_dumpChildFrameScrollPositions;
318563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_dumpChildFramesAsText;
319563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_dumpDOMAsWebArchive;
320231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool m_dumpDatabaseCallbacks;
321231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool m_dumpEditingCallbacks;
322231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool m_dumpFrameLoadCallbacks;
323e14391e94c850b8bd03680c23b38978db68687a8John Reck    bool m_dumpUserGestureInFrameLoadCallbacks;
324cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    bool m_dumpHistoryDelegateCallbacks;
325231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool m_dumpResourceLoadCallbacks;
326231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool m_dumpResourceResponseMIMETypes;
327563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_dumpSelectionRect;
328563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_dumpSourceAsWebArchive;
329563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_dumpStatusCallbacks;
330563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_dumpTitleChanges;
33121939df44de1705786c545cd1bf519d47250322dBen Murdoch    bool m_dumpIconChanges;
332cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block    bool m_dumpVisitedLinksCallback;
3330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    bool m_dumpWillCacheResponse;
334967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    bool m_generatePixelResults;
335563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_callCloseOnWebViews;
336563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_canOpenWindows;
337563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_closeRemainingWindowsWhenComplete;
3385e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    bool m_newWindowsCopyBackForwardList;
339563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_stopProvisionalFrameLoads;
340563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_testOnscreen;
341563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_testRepaint;
342563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_testRepaintSweepHorizontally;
343563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_waitToDump; // True if waitUntilDone() has been called, but notifyDone() has not yet been called.
344d0825bca7fe65beaee391d30da42e937db621564Steve Block    bool m_willSendRequestReturnsNull;
3450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    bool m_willSendRequestReturnsNullOnRedirect;
346563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_windowIsKey;
347231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool m_alwaysAcceptCookies;
348563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    bool m_globalFlag;
349231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool m_isGeolocationPermissionSet;
350231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool m_geolocationPermission;
351231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    bool m_handlesAuthenticationChallenges;
35221939df44de1705786c545cd1bf519d47250322dBen Murdoch    bool m_isPrinting;
353967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch    bool m_deferMainResourceDataLoad;
354563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
355231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    std::string m_authenticationUsername;
356231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    std::string m_authenticationPassword;
357563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    std::string m_testPathOrURL;
358563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    std::string m_expectedPixelHash;    // empty string if no hash
359dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
360dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    std::set<std::string> m_willSendRequestClearHeaders;
361563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
362231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    // origins which have been granted desktop notification access
363231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block    std::vector<JSStringRef> m_desktopNotificationAllowedOrigins;
364231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
365563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    static JSClassRef getJSClass();
366563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    static JSStaticValue* staticValues();
367563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    static JSStaticFunction* staticFunctions();
368563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark};
369563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
370563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#endif // LayoutTestController_h
371