2011-05-16 Ian Henderson <ianh@apple.com>
[WebKit-https.git] / Tools / DumpRenderTree / wx / LayoutTestControllerWx.cpp
1 /*
2  * Copyright (C) 2008 Kevin Ollivier <kevino@theolliviers.com>
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
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.
16  *
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.
27  */
28
29 #include "config.h"
30 #include "LayoutTestController.h"
31
32 #include "DumpRenderTree.h"
33 #include "WorkQueue.h"
34 #include "WorkQueueItem.h"
35 #include <JavaScriptCore/JSRetainPtr.h>
36 #include <JavaScriptCore/JSStringRef.h>
37
38 #include <stdio.h>
39
40
41
42 LayoutTestController::~LayoutTestController()
43 {
44     // FIXME: implement
45 }
46
47 void LayoutTestController::addDisallowedURL(JSStringRef url)
48 {
49     // FIXME: implement
50 }
51
52 void LayoutTestController::clearBackForwardList()
53 {
54 }
55
56 JSStringRef LayoutTestController::copyDecodedHostName(JSStringRef name)
57 {
58     // FIXME: implement
59     return 0;
60 }
61
62 JSStringRef LayoutTestController::copyEncodedHostName(JSStringRef name)
63 {
64     // FIXME: implement
65     return 0;
66 }
67
68 void LayoutTestController::dispatchPendingLoadRequests()
69 {
70     // FIXME: Implement for testing fix for 6727495
71 }
72
73 void LayoutTestController::display()
74 {
75 }
76
77 void LayoutTestController::keepWebHistory()
78 {
79     // FIXME: implement
80 }
81
82 void LayoutTestController::notifyDone()
83 {
84     if (m_waitToDump && !WorkQueue::shared()->count())
85         notifyDoneFired();
86     m_waitToDump = false;
87 }
88
89 JSStringRef LayoutTestController::pathToLocalResource(JSContextRef context, JSStringRef url)
90 {
91     // Function introduced in r28690. This may need special-casing on Windows.
92     return JSStringRetain(url); // Do nothing on Unix.
93 }
94
95 void LayoutTestController::queueLoad(JSStringRef url, JSStringRef target)
96 {
97     // FIXME: We need to resolve relative URLs here
98     WorkQueue::shared()->queue(new LoadItem(url, target));
99 }
100
101 void LayoutTestController::setAcceptsEditing(bool acceptsEditing)
102 {
103 }
104
105 void LayoutTestController::setAlwaysAcceptCookies(bool alwaysAcceptCookies)
106 {
107     // FIXME: Implement this (and restore the default value before running each test in DumpRenderTree.cpp).
108 }
109
110 void LayoutTestController::setCustomPolicyDelegate(bool, bool)
111 {
112     // FIXME: implement
113 }
114
115 void LayoutTestController::setMainFrameIsFirstResponder(bool flag)
116 {
117     // FIXME: implement
118 }
119
120 void LayoutTestController::setTabKeyCyclesThroughElements(bool cycles)
121 {
122     // FIXME: implement
123 }
124
125 void LayoutTestController::setUseDashboardCompatibilityMode(bool flag)
126 {
127     // FIXME: implement
128 }
129
130 void LayoutTestController::setUserStyleSheetEnabled(bool flag)
131 {
132 }
133
134 void LayoutTestController::setUserStyleSheetLocation(JSStringRef path)
135 {
136 }
137
138 void LayoutTestController::setValueForUser(JSContextRef context, JSValueRef element, JSStringRef value)
139 {
140     // FIXME: implement
141 }
142
143 void LayoutTestController::setViewModeMediaFeature(JSStringRef mode)
144 {
145     // FIXME: implement
146 }
147
148 void LayoutTestController::setWindowIsKey(bool windowIsKey)
149 {
150     // FIXME: implement
151 }
152
153 void LayoutTestController::setSmartInsertDeleteEnabled(bool flag)
154 {
155     // FIXME: implement
156 }
157
158 void LayoutTestController::setJavaScriptProfilingEnabled(bool flag)
159 {
160 }
161
162 void LayoutTestController::setWaitToDump(bool waitUntilDone)
163 {
164     static const int timeoutSeconds = 10;
165
166     m_waitToDump = waitUntilDone;
167 }
168
169 int LayoutTestController::windowCount()
170 {
171     // FIXME: implement
172     return 1;
173 }
174
175 void LayoutTestController::setPrivateBrowsingEnabled(bool privateBrowsingEnabled)
176 {
177     // FIXME: implement
178 }
179
180 void LayoutTestController::setJavaScriptCanAccessClipboard(bool enabled)
181 {
182     // FIXME: implement
183 }
184
185 void LayoutTestController::setXSSAuditorEnabled(bool enabled)
186 {
187     // FIXME: implement
188 }
189
190 void LayoutTestController::setFrameFlatteningEnabled(bool enabled)
191 {
192     // FIXME: implement
193 }
194
195 void LayoutTestController::setAllowUniversalAccessFromFileURLs(bool enabled)
196 {
197     // FIXME: implement
198 }
199
200 void LayoutTestController::setAllowFileAccessFromFileURLs(bool enabled)
201 {
202     // FIXME: implement
203 }
204
205 void LayoutTestController::setAuthorAndUserStylesEnabled(bool flag)
206 {
207     // FIXME: implement
208 }
209
210 void LayoutTestController::setAutofilled(JSContextRef, JSValueRef element, bool isAutofilled)
211 {
212     // FIXME: implement
213 }
214
215 void LayoutTestController::setPopupBlockingEnabled(bool popupBlockingEnabled)
216 {
217     // FIXME: implement
218 }
219
220 void LayoutTestController::setPluginsEnabled(bool flag)
221 {
222     // FIXME: Implement
223 }
224
225 bool LayoutTestController::elementDoesAutoCompleteForElementWithId(JSStringRef id) 
226 {
227     // FIXME: implement
228     return false;
229 }
230
231 void LayoutTestController::execCommand(JSStringRef name, JSStringRef value)
232 {
233     // FIXME: implement
234 }
235
236 void LayoutTestController::setPersistentUserStyleSheetLocation(JSStringRef jsURL)
237 {
238     // FIXME: implement
239 }
240
241 void LayoutTestController::clearPersistentUserStyleSheet()
242 {
243     // FIXME: implement
244 }
245
246 void LayoutTestController::clearAllApplicationCaches()
247 {
248     // FIXME: Implement to support application cache quotas.
249 }
250
251 void LayoutTestController::clearApplicationCacheForOrigin(JSStringRef url)
252 {
253     // FIXME: Implement to support deleting all application cache for an origin.
254 }
255
256 long long LayoutTestController::localStorageDiskUsageForOrigin(JSStringRef originIdentifier)
257 {
258     // FIXME: Implement to support getting disk usage in bytes for an origin.
259     return 0;
260 }
261
262 void LayoutTestController::setApplicationCacheOriginQuota(unsigned long long quota)
263 {
264     // FIXME: Implement to support application cache quotas.
265 }
266
267 long long LayoutTestController::applicationCacheDiskUsageForOrigin(JSStringRef origin)
268 {
269     // FIXME: Implement to support getting disk usage by all application caches for an origin.
270     return 0;
271 }
272
273
274 JSValueRef LayoutTestController::originsWithApplicationCache(JSContextRef context)
275 {
276     // FIXME: Implement to get origins that have application caches.
277     return 0;
278 }
279
280 void LayoutTestController::clearAllDatabases()
281 {
282     // FIXME: implement
283 }
284  
285 void LayoutTestController::setDatabaseQuota(unsigned long long quota)
286 {    
287     // FIXME: implement
288 }
289
290 void LayoutTestController::goBack()
291 {
292     // FIXME: implement to enable loader/navigation-while-deferring-loads.html
293 }
294
295 void LayoutTestController::setDefersLoading(bool)
296 {
297     // FIXME: implement to enable loader/navigation-while-deferring-loads.html
298 }
299
300 void LayoutTestController::setDomainRelaxationForbiddenForURLScheme(bool, JSStringRef)
301 {
302     // FIXME: implement
303 }
304
305 void LayoutTestController::setAppCacheMaximumSize(unsigned long long size)
306 {
307     // FIXME: implement
308 }
309
310 unsigned LayoutTestController::numberOfActiveAnimations() const
311 {
312     // FIXME: implement
313     return 0;
314 }
315
316 void LayoutTestController::suspendAnimations() const
317 {
318     // FIXME: implement
319 }
320
321 void LayoutTestController::resumeAnimations() const
322 {
323     // FIXME: implement
324 }
325
326 unsigned LayoutTestController::workerThreadCount() const
327 {
328     // FIXME: implement
329     return 0;
330 }
331
332 void LayoutTestController::setSelectTrailingWhitespaceEnabled(bool flag)
333 {
334     // FIXME: implement
335 }
336
337 bool LayoutTestController::pauseTransitionAtTimeOnElementWithId(JSStringRef propertyName, double time, JSStringRef elementId)
338 {
339     // FIXME: implement
340     return false;
341 }
342
343 void LayoutTestController::setMockDeviceOrientation(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma)
344 {
345     // FIXME: Implement for DeviceOrientation layout tests.
346     // See https://bugs.webkit.org/show_bug.cgi?id=30335.
347 }
348
349 void LayoutTestController::setMockGeolocationPosition(double latitude, double longitude, double accuracy)
350 {
351     // FIXME: Implement for Geolocation layout tests.
352     // See https://bugs.webkit.org/show_bug.cgi?id=28264.
353 }
354
355 void LayoutTestController::setMockGeolocationError(int code, JSStringRef message)
356 {
357     // FIXME: Implement for Geolocation layout tests.
358     // See https://bugs.webkit.org/show_bug.cgi?id=28264.
359 }
360
361 void LayoutTestController::setGeolocationPermission(bool allow)
362 {
363     // FIXME: Implement for Geolocation layout tests.
364     setGeolocationPermissionCommon(allow);
365 }
366
367 int LayoutTestController::numberOfPendingGeolocationPermissionRequests()
368 {
369     // FIXME: Implement for Geolocation layout tests.
370     return -1;
371 }
372
373 void LayoutTestController::addMockSpeechInputResult(JSStringRef result, double confidence, JSStringRef language)
374 {
375     // FIXME: Implement for speech input layout tests.
376     // See https://bugs.webkit.org/show_bug.cgi?id=39485.
377 }
378
379 void LayoutTestController::setIconDatabaseEnabled(bool iconDatabaseEnabled)
380 {
381     // FIXME: implement
382 }
383
384 bool LayoutTestController::pauseAnimationAtTimeOnElementWithId(JSStringRef animationName, double time, JSStringRef elementId)
385 {
386     // FIXME: implement
387     return false;
388 }
389
390 bool LayoutTestController::sampleSVGAnimationForElementAtTime(JSStringRef animationId, double time, JSStringRef elementId)
391 {
392     // FIXME: implement
393     return false;
394 }
395
396 void LayoutTestController::setCacheModel(int)
397 {
398     // FIXME: implement
399 }
400
401 bool LayoutTestController::isCommandEnabled(JSStringRef /*name*/)
402 {
403     // FIXME: implement
404     return false;
405 }
406
407 size_t LayoutTestController::webHistoryItemCount()
408 {
409     // FIXME: implement
410     return 0;
411 }
412
413 void LayoutTestController::waitForPolicyDelegate()
414 {
415     // FIXME: Implement this.
416 }
417
418 void LayoutTestController::overridePreference(JSStringRef /* key */, JSStringRef /* value */)
419 {
420     // FIXME: implement
421 }
422
423 void LayoutTestController::addUserScript(JSStringRef source, bool runAtStart, bool allFrames)
424 {
425     printf("LayoutTestController::addUserScript not implemented.\n");
426 }
427
428 void LayoutTestController::addUserStyleSheet(JSStringRef source, bool allFrames)
429 {
430     printf("LayoutTestController::addUserStyleSheet not implemented.\n");
431 }
432
433 void LayoutTestController::showWebInspector()
434 {
435     // FIXME: Implement this.
436 }
437
438 void LayoutTestController::closeWebInspector()
439 {
440     // FIXME: Implement this.
441 }
442
443 void LayoutTestController::evaluateInWebInspector(long callId, JSStringRef script)
444 {
445     // FIXME: Implement this.
446 }
447
448 void LayoutTestController::removeAllVisitedLinks()
449 {
450     // FIXME: Implement this.
451 }
452
453 void LayoutTestController::setTimelineProfilingEnabled(bool enabled)
454 {
455
456 }
457
458 void LayoutTestController::evaluateScriptInIsolatedWorld(unsigned worldId, JSObjectRef globalObject, JSStringRef script)
459 {
460
461 }
462
463 void LayoutTestController::disableImageLoading()
464 {
465
466 }
467
468 void LayoutTestController::addOriginAccessWhitelistEntry(JSStringRef sourceOrigin, JSStringRef destinationProtocol, JSStringRef destinationHost, bool allowDestinationSubdomains)
469 {
470     // FIXME: implement
471 }
472
473 void LayoutTestController::removeOriginAccessWhitelistEntry(JSStringRef sourceOrigin, JSStringRef destinationProtocol, JSStringRef destinationHost, bool allowDestinationSubdomains)
474 {
475     // FIXME: implement
476 }
477
478 void LayoutTestController::setScrollbarPolicy(JSStringRef orientation, JSStringRef policy)
479 {
480     // FIXME: implement
481 }
482
483 JSRetainPtr<JSStringRef> LayoutTestController::counterValueForElementById(JSStringRef id)
484 {
485     return 0;
486 }
487
488 int LayoutTestController::pageNumberForElementById(JSStringRef, float, float)
489 {
490     // FIXME: implement
491     return -1;
492 }
493
494 int LayoutTestController::numberOfPages(float, float)
495 {
496     // FIXME: implement
497     return -1;
498 }
499
500 void LayoutTestController::apiTestNewWindowDataLoadBaseURL(JSStringRef utf8Data, JSStringRef baseURL)
501 {
502
503 }
504
505 void LayoutTestController::apiTestGoToCurrentBackForwardItem()
506 {
507
508 }
509
510 void LayoutTestController::setSpatialNavigationEnabled(bool)
511 {
512
513 }
514
515 void LayoutTestController::setWebViewEditable(bool)
516 {
517 }
518
519 bool LayoutTestController::callShouldCloseOnWebView()
520 {
521     return false;
522 }
523
524 JSRetainPtr<JSStringRef> LayoutTestController::layerTreeAsText() const
525 {
526     return 0;
527 }
528
529 JSRetainPtr<JSStringRef> LayoutTestController::markerTextForListItem(JSContextRef context, JSValueRef nodeObject) const
530 {
531     return 0;
532 }
533
534 JSRetainPtr<JSStringRef> LayoutTestController::shadowPseudoId(JSContextRef context, JSValueRef nodeObject) const
535 {
536     return 0;
537 }
538
539 JSValueRef LayoutTestController::computedStyleIncludingVisitedInfo(JSContextRef, JSValueRef)
540 {
541     return 0;
542 }
543
544 JSValueRef LayoutTestController::nodesFromRect(JSContextRef context, JSValueRef value, int x, int y, unsigned top, unsigned right, unsigned bottom, unsigned left, bool ignoreClipping)
545 {
546     // FIXME: Implement this.
547     return 0;
548 }
549
550 void LayoutTestController::authenticateSession(JSStringRef, JSStringRef, JSStringRef)
551 {
552 }
553
554 void LayoutTestController::setEditingBehavior(const char* editingBehavior)
555 {
556     // FIXME: Implement
557 }
558
559 void LayoutTestController::abortModal()
560 {
561 }
562
563 bool LayoutTestController::hasSpellingMarker(int, int)
564 {
565     // FIXME: Implement
566     return false;
567 }
568
569 bool LayoutTestController::hasGrammarMarker(int, int)
570 {
571     // FIXME: Implement
572     return false;
573 }
574
575 void LayoutTestController::dumpConfigurationForViewport(int /*deviceDPI*/, int /*deviceWidth*/, int /*deviceHeight*/, int /*availableWidth*/, int /*availableHeight*/)
576 {
577     // FIXME: Implement
578 }
579
580 JSRetainPtr<JSStringRef> LayoutTestController::pageProperty(const char* propertyName, int pageNumber) const
581 {
582     // FIXME: Implement
583     return 0;
584 }
585
586 bool LayoutTestController::isPageBoxVisible(int pageNumber) const
587 {
588     // FIXME: Implement
589     return true;
590 }
591
592 JSRetainPtr<JSStringRef> LayoutTestController::pageSizeAndMarginsInPixels(int pageNumber, int width, int height, int marginTop, int marginRight, int marginBottom, int marginLeft) const
593 {
594     // FIXME: Implement
595     return 0;
596 }
597
598 void LayoutTestController::setAsynchronousSpellCheckingEnabled(bool)
599 {
600     // FIXME: Implement this.
601 }
602
603 bool LayoutTestController::findString(JSContextRef context, JSStringRef target, JSObjectRef optionsArray)
604 {
605     // FIXME: Implement
606     return false;
607 }
608
609 void LayoutTestController::setSerializeHTTPLoads(bool)
610 {
611     // FIXME: Implement.
612 }
613
614 void LayoutTestController::setMinimumTimerInterval(double interval) {
615
616 }
617
618 void LayoutTestController::syncLocalStorage()
619 {
620     // FIXME: Implement.
621 }
622
623 void LayoutTestController::observeStorageTrackerNotifications(unsigned number)
624 {
625     // FIXME: Implement.
626 }
627
628 void LayoutTestController::deleteAllLocalStorage()
629 {
630     // FIXME: Implement.
631 }
632
633 JSValueRef LayoutTestController::originsWithLocalStorage(JSContextRef context)
634 {
635     // FIXME: Implement.
636     return 0;
637 }
638
639 void LayoutTestController::deleteLocalStorageForOrigin(JSStringRef URL)
640 {
641     // FIXME: Implement.
642 }
643
644 const OpaqueJSValue* LayoutTestController::shadowRoot(const OpaqueJSContext*, const OpaqueJSValue*)
645 {
646     // FIXME: Implement.
647     return 0;
648 }
649
650 JSValueRef LayoutTestController::ensureShadowRoot(JSContextRef context, JSValueRef jsElement)
651 {
652     // FIXME: Implement this.
653     return JSValueMakeUndefined(context);
654 }
655
656 void LayoutTestController::removeShadowRoot(JSContextRef context, JSValueRef jsElement)
657 {
658     // FIXME: Implement this.
659 }