summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCary Clark <>2009-03-24 21:14:25 -0700
committerThe Android Open Source Project <initial-contribution@android.com>2009-03-24 21:14:25 -0700
commit5ec837f49e9c57d4394ce64b853fd86269c8b340 (patch)
treede89879b3a2cb0d713abc3c1fac766cb17706245
parent02ba42cb469e2f0e26216fe434dbb912cf48d248 (diff)
downloadexternal_webkit-5ec837f49e9c57d4394ce64b853fd86269c8b340.zip
external_webkit-5ec837f49e9c57d4394ce64b853fd86269c8b340.tar.gz
external_webkit-5ec837f49e9c57d4394ce64b853fd86269c8b340.tar.bz2
Automated import from //branches/master/...@141953,141953
-rw-r--r--ChangeLog2862
-rw-r--r--GNUmakefile.am487
-rw-r--r--Makefile33
-rw-r--r--Makefile.shared30
-rw-r--r--SunSpider/ChangeLog671
-rw-r--r--SunSpider/TODO70
-rw-r--r--SunSpider/UNCOVERED99
-rw-r--r--SunSpider/hosted/sunspider-driver.html96
-rw-r--r--SunSpider/hosted/sunspider-record-result.js31
-rw-r--r--SunSpider/hosted/sunspider-results.html91
-rw-r--r--SunSpider/hosted/sunspider.css31
-rw-r--r--SunSpider/hosted/sunspider.html78
-rwxr-xr-xSunSpider/make-hosted77
-rw-r--r--SunSpider/resources/TEMPLATE.html50
-rw-r--r--SunSpider/resources/sunspider-analyze-results.js268
-rw-r--r--SunSpider/resources/sunspider-compare-results.js380
-rw-r--r--SunSpider/resources/sunspider-standalone-compare.js26
-rw-r--r--SunSpider/resources/sunspider-standalone-driver.js53
-rwxr-xr-xSunSpider/sunspider228
-rwxr-xr-xSunSpider/sunspider-compare-results142
-rw-r--r--SunSpider/tests/3d-cube.js337
-rw-r--r--SunSpider/tests/3d-morph.js54
-rw-r--r--SunSpider/tests/3d-raytrace.js441
-rw-r--r--SunSpider/tests/LIST26
-rw-r--r--SunSpider/tests/LIST-UBENCH7
-rw-r--r--SunSpider/tests/LIST-V85
-rw-r--r--SunSpider/tests/access-binary-trees.js50
-rw-r--r--SunSpider/tests/access-fannkuch.js66
-rw-r--r--SunSpider/tests/access-nbody.js169
-rw-r--r--SunSpider/tests/access-nsieve.js38
-rw-r--r--SunSpider/tests/bitops-3bit-bits-in-byte.js32
-rw-r--r--SunSpider/tests/bitops-bits-in-byte.js21
-rw-r--r--SunSpider/tests/bitops-bitwise-and.js28
-rw-r--r--SunSpider/tests/bitops-nsieve-bits.js32
-rw-r--r--SunSpider/tests/controlflow-recursive.js25
-rw-r--r--SunSpider/tests/crypto-aes.js422
-rw-r--r--SunSpider/tests/crypto-md5.js286
-rw-r--r--SunSpider/tests/crypto-sha1.js224
-rw-r--r--SunSpider/tests/date-format-tofte.js299
-rw-r--r--SunSpider/tests/date-format-xparb.js417
-rw-r--r--SunSpider/tests/math-cordic.js95
-rw-r--r--SunSpider/tests/math-partial-sums.js33
-rw-r--r--SunSpider/tests/math-spectral-norm.js51
-rw-r--r--SunSpider/tests/regexp-dna.js1712
-rw-r--r--SunSpider/tests/string-base64.js135
-rw-r--r--SunSpider/tests/string-fasta.js85
-rw-r--r--SunSpider/tests/string-tagcloud.js265
-rw-r--r--SunSpider/tests/string-unpack-code.js68
-rw-r--r--SunSpider/tests/string-validate-input.js89
-rw-r--r--SunSpider/tests/ubench/function-closure.js7
-rw-r--r--SunSpider/tests/ubench/function-empty.js6
-rw-r--r--SunSpider/tests/ubench/function-missing-args.js6
-rw-r--r--SunSpider/tests/ubench/function-sum.js7
-rw-r--r--SunSpider/tests/ubench/loop-empty-resolve.js2
-rw-r--r--SunSpider/tests/ubench/loop-empty.js2
-rw-r--r--SunSpider/tests/ubench/loop-sum.js5
-rw-r--r--SunSpider/tests/v8-crypto.js1686
-rw-r--r--SunSpider/tests/v8-deltablue.js877
-rw-r--r--SunSpider/tests/v8-earley-boyer.js4680
-rw-r--r--SunSpider/tests/v8-raytrace.js3415
-rw-r--r--SunSpider/tests/v8-richards.js536
-rw-r--r--WebCore/NOTICE1032
-rw-r--r--WebKit.pri89
-rw-r--r--WebKit.pro12
-rw-r--r--WebKit/gtk/docs/webkitgtk-docs.sgml41
-rw-r--r--WebKit/gtk/docs/webkitgtk-overrides.txt (renamed from WebCore/MODULE_LICENSE_LGPL)0
-rw-r--r--WebKit/gtk/docs/webkitgtk-sections.txt275
-rw-r--r--WebKit/gtk/docs/webkitgtk.types12
-rw-r--r--WebKit/gtk/tests/main.c84
-rw-r--r--WebKit/mac/ForwardingHeaders/kjs/SavedBuiltins.h1
-rw-r--r--WebKit/mac/ForwardingHeaders/kjs/collector.h1
-rw-r--r--WebKit/mac/ForwardingHeaders/kjs/dtoa.h1
-rw-r--r--WebKit/mac/ForwardingHeaders/kjs/identifier.h1
-rw-r--r--WebKit/mac/ForwardingHeaders/kjs/interpreter.h1
-rw-r--r--WebKit/mac/ForwardingHeaders/kjs/lookup.h1
-rw-r--r--WebKit/mac/ForwardingHeaders/kjs/operations.h1
-rw-r--r--WebKit/mac/ForwardingHeaders/kjs/protect.h1
-rw-r--r--WebKit/mac/Plugins/Hosted/HostedNetscapePluginStream.h97
-rw-r--r--WebKit/mac/Plugins/Hosted/HostedNetscapePluginStream.mm248
-rw-r--r--WebKit/mac/Plugins/Hosted/NetscapePluginHostManager.h70
-rw-r--r--WebKit/mac/Plugins/Hosted/NetscapePluginHostManager.mm234
-rw-r--r--WebKit/mac/Plugins/Hosted/NetscapePluginHostProxy.h82
-rw-r--r--WebKit/mac/Plugins/Hosted/NetscapePluginHostProxy.mm635
-rw-r--r--WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.h254
-rw-r--r--WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.mm946
-rw-r--r--WebKit/mac/Plugins/Hosted/ProxyInstance.h86
-rw-r--r--WebKit/mac/Plugins/Hosted/ProxyInstance.mm310
-rw-r--r--WebKit/mac/Plugins/Hosted/WebHostedNetscapePluginView.h63
-rw-r--r--WebKit/mac/Plugins/Hosted/WebHostedNetscapePluginView.mm299
-rw-r--r--WebKit/mac/Plugins/Hosted/WebKitPluginAgent.defs (renamed from WebKitTools/DumpRenderTree/mac/AccessibilityControllerMac.mm)41
-rw-r--r--WebKit/mac/Plugins/Hosted/WebKitPluginAgentReply.defs (renamed from WebKitTools/DumpRenderTree/AccessibilityController.h)28
-rw-r--r--WebKit/mac/Plugins/Hosted/WebKitPluginClient.defs166
-rw-r--r--WebKit/mac/Plugins/Hosted/WebKitPluginHost.defs172
-rw-r--r--WebKit/mac/Plugins/Hosted/WebKitPluginHostTypes.defs (renamed from WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.h)12
-rw-r--r--WebKit/mac/Plugins/Hosted/WebKitPluginHostTypes.h (renamed from WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h)57
-rw-r--r--WebKitExamplePlugins/ChangeLog127
-rw-r--r--WebKitExamplePlugins/NetscapeCocoaPlugin/Info.plist36
-rw-r--r--WebKitExamplePlugins/NetscapeCocoaPlugin/MenuHandler.h47
-rw-r--r--WebKitExamplePlugins/NetscapeCocoaPlugin/MenuHandler.m99
-rw-r--r--WebKitExamplePlugins/NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj/project.pbxproj240
-rw-r--r--WebKitExamplePlugins/NetscapeCocoaPlugin/main.m370
-rw-r--r--WebKitExamplePlugins/NetscapeCocoaPlugin/test.html11
-rw-r--r--WebKitExamplePlugins/NetscapeInputMethodPlugin/Info.plist36
-rw-r--r--WebKitExamplePlugins/NetscapeInputMethodPlugin/NetscapeInputMethodPlugin.xcodeproj/project.pbxproj236
-rw-r--r--WebKitExamplePlugins/NetscapeInputMethodPlugin/main.m514
-rw-r--r--WebKitExamplePlugins/NetscapeInputMethodPlugin/test.html11
-rw-r--r--WebKitLibraries/ChangeLog998
-rw-r--r--WebKitLibraries/WebCoreSQLite3/sqlite3.h2679
-rw-r--r--WebKitLibraries/WebCoreSQLite3/sqlite3ext.h290
-rw-r--r--WebKitLibraries/WebKitSystemInterface.h189
-rw-r--r--WebKitLibraries/libWebCoreSQLite3.abin3012256 -> 0 bytes
-rw-r--r--WebKitLibraries/libWebKitSystemInterfaceLeopard.abin1773088 -> 0 bytes
-rw-r--r--WebKitLibraries/libWebKitSystemInterfaceTiger.abin729556 -> 0 bytes
-rw-r--r--WebKitLibraries/win/include/SafariTheme/SafariThemeConstants.h1
-rw-r--r--WebKitLibraries/win/include/WebKitSystemInterface/WebKitSystemInterface.h75
-rw-r--r--WebKitLibraries/win/lib/WebKitSystemInterface.libbin124648 -> 0 bytes
-rw-r--r--WebKitLibraries/win/lib/WebKitSystemInterface_debug.libbin65018 -> 0 bytes
-rwxr-xr-xWebKitLibraries/win/tools/WinTools.make3
-rw-r--r--WebKitLibraries/win/tools/scripts/PRODUCTVERSION1
-rw-r--r--WebKitLibraries/win/tools/scripts/VERSION1
-rwxr-xr-xWebKitLibraries/win/tools/scripts/auto-version.sh75
-rw-r--r--WebKitLibraries/win/tools/vsprops/common.vsprops47
-rw-r--r--WebKitLibraries/win/tools/vsprops/debug.vsprops35
-rw-r--r--WebKitLibraries/win/tools/vsprops/debug_internal.vsprops26
-rw-r--r--WebKitLibraries/win/tools/vsprops/release.vsprops43
-rwxr-xr-xWebKitTools/BuildSlaveSupport/build-launcher-app120
-rwxr-xr-xWebKitTools/BuildSlaveSupport/build-launcher-dmg118
-rw-r--r--WebKitTools/BuildSlaveSupport/build.webkit.org-config/Makefile19
-rw-r--r--WebKitTools/BuildSlaveSupport/build.webkit.org-config/buildbot.css108
-rw-r--r--WebKitTools/BuildSlaveSupport/build.webkit.org-config/buildbot.tac10
-rw-r--r--WebKitTools/BuildSlaveSupport/build.webkit.org-config/master.cfg22
-rw-r--r--WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/__init__.py5
-rw-r--r--WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/auth.py9
-rw-r--r--WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/basesteps.py51
-rw-r--r--WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/builders.py35
-rw-r--r--WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/factories.py70
-rw-r--r--WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/schedulers.py15
-rw-r--r--WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/status.py19
-rw-r--r--WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/steps.py220
-rwxr-xr-xWebKitTools/BuildSlaveSupport/run-performance-tests80
-rw-r--r--WebKitTools/CLWrapper/CLWrapper.cpp52
-rw-r--r--WebKitTools/CLWrapper/CLWrapper.sln20
-rw-r--r--WebKitTools/CLWrapper/CLWrapper.vcproj199
-rw-r--r--WebKitTools/ChangeLog20894
-rw-r--r--WebKitTools/CodeCoverage/README22
-rw-r--r--WebKitTools/CodeCoverage/amber.pngbin127 -> 0 bytes
-rw-r--r--WebKitTools/CodeCoverage/cov.py201
-rw-r--r--WebKitTools/CodeCoverage/emerald.pngbin127 -> 0 bytes
-rw-r--r--WebKitTools/CodeCoverage/gcov.css116
-rw-r--r--WebKitTools/CodeCoverage/glass.pngbin127 -> 0 bytes
-rw-r--r--WebKitTools/CodeCoverage/regenerate-coverage-display408
-rw-r--r--WebKitTools/CodeCoverage/ruby.pngbin127 -> 0 bytes
-rw-r--r--WebKitTools/CodeCoverage/run-generate-coverage-data240
-rw-r--r--WebKitTools/CodeCoverage/snow.pngbin127 -> 0 bytes
-rw-r--r--WebKitTools/CygwinDownloader/cygwin-downloader.py157
-rw-r--r--WebKitTools/CygwinDownloader/cygwin-downloader.zipbin2989085 -> 0 bytes
-rwxr-xr-xWebKitTools/CygwinDownloader/make-zip.sh30
-rw-r--r--WebKitTools/CygwinDownloader/setup.py4
-rw-r--r--WebKitTools/DrawTest/AppDelegate.h37
-rw-r--r--WebKitTools/DrawTest/AppDelegate.m52
-rw-r--r--WebKitTools/DrawTest/DrawTest.xcodeproj/project.pbxproj387
-rw-r--r--WebKitTools/DrawTest/DrawTestDocument.h45
-rw-r--r--WebKitTools/DrawTest/DrawTestDocument.m151
-rw-r--r--WebKitTools/DrawTest/DrawTestInspectorController.h37
-rw-r--r--WebKitTools/DrawTest/DrawTestInspectorController.m48
-rw-r--r--WebKitTools/DrawTest/DrawTestToolbarController.h37
-rw-r--r--WebKitTools/DrawTest/DrawTestToolbarController.m354
-rw-r--r--WebKitTools/DrawTest/DrawTestView.h38
-rw-r--r--WebKitTools/DrawTest/DrawTestView.m43
-rw-r--r--WebKitTools/DrawTest/DrawTest_Prefix.pch37
-rw-r--r--WebKitTools/DrawTest/English.lproj/DrawTestDocument.nib/classes.nib34
-rw-r--r--WebKitTools/DrawTest/English.lproj/DrawTestDocument.nib/info.nib22
-rw-r--r--WebKitTools/DrawTest/English.lproj/DrawTestDocument.nib/keyedobjects.nibbin6746 -> 0 bytes
-rw-r--r--WebKitTools/DrawTest/English.lproj/Inspector.nib/classes.nib12
-rw-r--r--WebKitTools/DrawTest/English.lproj/Inspector.nib/info.nib16
-rw-r--r--WebKitTools/DrawTest/English.lproj/Inspector.nib/keyedobjects.nibbin9256 -> 0 bytes
-rw-r--r--WebKitTools/DrawTest/English.lproj/MainMenu.nib/classes.nib44
-rw-r--r--WebKitTools/DrawTest/English.lproj/MainMenu.nib/info.nib21
-rw-r--r--WebKitTools/DrawTest/English.lproj/MainMenu.nib/keyedobjects.nibbin17633 -> 0 bytes
-rw-r--r--WebKitTools/DrawTest/English.lproj/TestViewer.nib/classes.nib36
-rw-r--r--WebKitTools/DrawTest/English.lproj/TestViewer.nib/info.nib17
-rw-r--r--WebKitTools/DrawTest/English.lproj/TestViewer.nib/keyedobjects.nibbin11724 -> 0 bytes
-rw-r--r--WebKitTools/DrawTest/Info.plist49
-rw-r--r--WebKitTools/DrawTest/SVGTest.h48
-rw-r--r--WebKitTools/DrawTest/SVGTest.m113
-rw-r--r--WebKitTools/DrawTest/ScalingImageView.h33
-rw-r--r--WebKitTools/DrawTest/ScalingImageView.m57
-rw-r--r--WebKitTools/DrawTest/TestController.h72
-rw-r--r--WebKitTools/DrawTest/TestController.m270
-rw-r--r--WebKitTools/DrawTest/TestViewerSplitView.h31
-rw-r--r--WebKitTools/DrawTest/TestViewerSplitView.m77
-rw-r--r--WebKitTools/DrawTest/main.m29
-rw-r--r--WebKitTools/DumpRenderTree/AccessibilityController.cpp70
-rw-r--r--WebKitTools/DumpRenderTree/AccessibilityUIElement.cpp303
-rw-r--r--WebKitTools/DumpRenderTree/AccessibilityUIElement.h111
-rw-r--r--WebKitTools/DumpRenderTree/DumpRenderTree.h66
-rw-r--r--WebKitTools/DumpRenderTree/DumpRenderTree.sln47
-rw-r--r--WebKitTools/DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj795
-rw-r--r--WebKitTools/DumpRenderTree/DumpRenderTreePrefix.h38
-rw-r--r--WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/ASCIICType.h1
-rw-r--r--WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/Assertions.h1
-rw-r--r--WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/HashMap.h1
-rw-r--r--WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/HashSet.h1
-rwxr-xr-xWebKitTools/DumpRenderTree/ForwardingHeaders/wtf/HashTraits.h1
-rw-r--r--WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/Locker.h1
-rw-r--r--WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/MathExtras.h1
-rw-r--r--WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/Noncopyable.h1
-rw-r--r--WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/OwnPtr.h1
-rw-r--r--WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/PassRefPtr.h1
-rw-r--r--WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/Platform.h1
-rw-r--r--WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/RefCounted.h1
-rw-r--r--WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/RefPtr.h1
-rw-r--r--WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/RetainPtr.h1
-rw-r--r--WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/StringExtras.h1
-rw-r--r--WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/Threading.h1
-rw-r--r--WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/Vector.h1
-rw-r--r--WebKitTools/DumpRenderTree/GCController.cpp108
-rw-r--r--WebKitTools/DumpRenderTree/GCController.h51
-rw-r--r--WebKitTools/DumpRenderTree/JavaScriptThreading.h40
-rw-r--r--WebKitTools/DumpRenderTree/LayoutTestController.cpp780
-rw-r--r--WebKitTools/DumpRenderTree/LayoutTestController.h192
-rw-r--r--WebKitTools/DumpRenderTree/Makefile2
-rw-r--r--WebKitTools/DumpRenderTree/PixelDumpSupport.h46
-rw-r--r--WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/Info.plist60
-rw-r--r--WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp676
-rw-r--r--WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.cpp135
-rw-r--r--WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp328
-rw-r--r--WebKitTools/DumpRenderTree/WorkQueue.cpp89
-rw-r--r--WebKitTools/DumpRenderTree/WorkQueue.h51
-rw-r--r--WebKitTools/DumpRenderTree/WorkQueueItem.h108
-rw-r--r--WebKitTools/DumpRenderTree/cg/ImageDiffCG.cpp253
-rw-r--r--WebKitTools/DumpRenderTree/cg/PixelDumpSupportCG.cpp134
-rw-r--r--WebKitTools/DumpRenderTree/cg/PixelDumpSupportCG.h80
-rw-r--r--WebKitTools/DumpRenderTree/config.h47
-rw-r--r--WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher100.ttfbin28512 -> 0 bytes
-rw-r--r--WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher200.ttfbin28512 -> 0 bytes
-rw-r--r--WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher300.ttfbin28492 -> 0 bytes
-rw-r--r--WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher400.ttfbin28440 -> 0 bytes
-rw-r--r--WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher500.ttfbin28424 -> 0 bytes
-rw-r--r--WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher600.ttfbin28460 -> 0 bytes
-rw-r--r--WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher700.ttfbin28384 -> 0 bytes
-rw-r--r--WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher800.ttfbin28492 -> 0 bytes
-rw-r--r--WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher900.ttfbin28492 -> 0 bytes
-rw-r--r--WebKitTools/DumpRenderTree/gtk/DumpRenderTree.cpp407
-rw-r--r--WebKitTools/DumpRenderTree/gtk/DumpRenderTreeGtk.h41
-rw-r--r--WebKitTools/DumpRenderTree/gtk/GCControllerGtk.cpp43
-rw-r--r--WebKitTools/DumpRenderTree/gtk/LayoutTestControllerGtk.cpp270
-rw-r--r--WebKitTools/DumpRenderTree/gtk/WorkQueueItemGtk.cpp74
-rw-r--r--WebKitTools/DumpRenderTree/mac/AccessibilityUIElementMac.mm425
-rw-r--r--WebKitTools/DumpRenderTree/mac/AppleScriptController.h39
-rw-r--r--WebKitTools/DumpRenderTree/mac/AppleScriptController.m126
-rw-r--r--WebKitTools/DumpRenderTree/mac/CheckedMalloc.cpp59
-rw-r--r--WebKitTools/DumpRenderTree/mac/CheckedMalloc.h31
-rw-r--r--WebKitTools/DumpRenderTree/mac/Configurations/Base.xcconfig17
-rw-r--r--WebKitTools/DumpRenderTree/mac/Configurations/DebugRelease.xcconfig7
-rw-r--r--WebKitTools/DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig4
-rw-r--r--WebKitTools/DumpRenderTree/mac/Configurations/ImageDiff.xcconfig1
-rw-r--r--WebKitTools/DumpRenderTree/mac/Configurations/TestNetscapePlugIn.xcconfig6
-rw-r--r--WebKitTools/DumpRenderTree/mac/DumpRenderTree.mm1093
-rw-r--r--WebKitTools/DumpRenderTree/mac/DumpRenderTreeDraggingInfo.h53
-rw-r--r--WebKitTools/DumpRenderTree/mac/DumpRenderTreeDraggingInfo.mm108
-rw-r--r--WebKitTools/DumpRenderTree/mac/DumpRenderTreeMac.h63
-rw-r--r--WebKitTools/DumpRenderTree/mac/DumpRenderTreePasteboard.h38
-rw-r--r--WebKitTools/DumpRenderTree/mac/DumpRenderTreePasteboard.m205
-rw-r--r--WebKitTools/DumpRenderTree/mac/DumpRenderTreeWindow.h36
-rw-r--r--WebKitTools/DumpRenderTree/mac/DumpRenderTreeWindow.mm86
-rw-r--r--WebKitTools/DumpRenderTree/mac/EditingDelegate.h38
-rw-r--r--WebKitTools/DumpRenderTree/mac/EditingDelegate.mm191
-rw-r--r--WebKitTools/DumpRenderTree/mac/EventSendingController.h53
-rw-r--r--WebKitTools/DumpRenderTree/mac/EventSendingController.mm667
-rw-r--r--WebKitTools/DumpRenderTree/mac/FrameLoadDelegate.h39
-rw-r--r--WebKitTools/DumpRenderTree/mac/FrameLoadDelegate.mm351
-rw-r--r--WebKitTools/DumpRenderTree/mac/GCControllerMac.mm47
-rw-r--r--WebKitTools/DumpRenderTree/mac/LayoutTestControllerMac.mm311
-rw-r--r--WebKitTools/DumpRenderTree/mac/NavigationController.h39
-rw-r--r--WebKitTools/DumpRenderTree/mac/NavigationController.m109
-rw-r--r--WebKitTools/DumpRenderTree/mac/ObjCController.h38
-rw-r--r--WebKitTools/DumpRenderTree/mac/ObjCController.m239
-rw-r--r--WebKitTools/DumpRenderTree/mac/ObjCPlugin.h36
-rw-r--r--WebKitTools/DumpRenderTree/mac/ObjCPlugin.m206
-rw-r--r--WebKitTools/DumpRenderTree/mac/ObjCPluginFunction.h34
-rw-r--r--WebKitTools/DumpRenderTree/mac/ObjCPluginFunction.m37
-rw-r--r--WebKitTools/DumpRenderTree/mac/PixelDumpSupportMac.mm241
-rw-r--r--WebKitTools/DumpRenderTree/mac/PolicyDelegate.h35
-rw-r--r--WebKitTools/DumpRenderTree/mac/PolicyDelegate.mm45
-rw-r--r--WebKitTools/DumpRenderTree/mac/ResourceLoadDelegate.h35
-rw-r--r--WebKitTools/DumpRenderTree/mac/ResourceLoadDelegate.mm194
-rw-r--r--WebKitTools/DumpRenderTree/mac/TextInputController.h42
-rw-r--r--WebKitTools/DumpRenderTree/mac/TextInputController.m423
-rw-r--r--WebKitTools/DumpRenderTree/mac/UIDelegate.h37
-rw-r--r--WebKitTools/DumpRenderTree/mac/UIDelegate.mm163
-rw-r--r--WebKitTools/DumpRenderTree/mac/WorkQueueItemMac.mm77
-rw-r--r--WebKitTools/DumpRenderTree/pthreads/JavaScriptThreadingPthreads.cpp137
-rw-r--r--WebKitTools/DumpRenderTree/qt/DumpRenderTree.cpp332
-rw-r--r--WebKitTools/DumpRenderTree/qt/DumpRenderTree.h101
-rw-r--r--WebKitTools/DumpRenderTree/qt/DumpRenderTree.pro22
-rw-r--r--WebKitTools/DumpRenderTree/qt/fonts.conf258
-rw-r--r--WebKitTools/DumpRenderTree/qt/fonts/AHEM____.TTFbin12480 -> 0 bytes
-rw-r--r--WebKitTools/DumpRenderTree/qt/jsobjects.cpp363
-rw-r--r--WebKitTools/DumpRenderTree/qt/jsobjects.h140
-rw-r--r--WebKitTools/DumpRenderTree/qt/main.cpp174
-rw-r--r--WebKitTools/DumpRenderTree/qt/testplugin.cpp67
-rw-r--r--WebKitTools/DumpRenderTree/qt/testplugin.h45
-rw-r--r--WebKitTools/DumpRenderTree/win/AccessibilityControllerWin.cpp84
-rw-r--r--WebKitTools/DumpRenderTree/win/AccessibilityUIElementWin.cpp266
-rw-r--r--WebKitTools/DumpRenderTree/win/DraggingInfo.h62
-rw-r--r--WebKitTools/DumpRenderTree/win/DumpRenderTree.cpp1127
-rw-r--r--WebKitTools/DumpRenderTree/win/DumpRenderTree.vcproj411
-rw-r--r--WebKitTools/DumpRenderTree/win/DumpRenderTreeWin.h55
-rw-r--r--WebKitTools/DumpRenderTree/win/EditingDelegate.cpp355
-rw-r--r--WebKitTools/DumpRenderTree/win/EditingDelegate.h176
-rw-r--r--WebKitTools/DumpRenderTree/win/EventSender.cpp597
-rw-r--r--WebKitTools/DumpRenderTree/win/EventSender.h42
-rw-r--r--WebKitTools/DumpRenderTree/win/FrameLoadDelegate.cpp314
-rw-r--r--WebKitTools/DumpRenderTree/win/FrameLoadDelegate.h139
-rw-r--r--WebKitTools/DumpRenderTree/win/GCControllerWin.cpp60
-rw-r--r--WebKitTools/DumpRenderTree/win/ImageDiff.vcproj163
-rw-r--r--WebKitTools/DumpRenderTree/win/LayoutTestControllerWin.cpp630
-rw-r--r--WebKitTools/DumpRenderTree/win/MD5.cpp78
-rw-r--r--WebKitTools/DumpRenderTree/win/MD5.h45
-rw-r--r--WebKitTools/DumpRenderTree/win/PixelDumpSupportWin.cpp68
-rw-r--r--WebKitTools/DumpRenderTree/win/PolicyDelegate.cpp87
-rw-r--r--WebKitTools/DumpRenderTree/win/PolicyDelegate.h74
-rw-r--r--WebKitTools/DumpRenderTree/win/ResourceLoadDelegate.cpp257
-rw-r--r--WebKitTools/DumpRenderTree/win/ResourceLoadDelegate.h103
-rw-r--r--WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.def6
-rw-r--r--WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.rc101
-rw-r--r--WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj263
-rw-r--r--WebKitTools/DumpRenderTree/win/TestNetscapePlugin/main.c183
-rw-r--r--WebKitTools/DumpRenderTree/win/TestNetscapePlugin/main.cpp215
-rw-r--r--WebKitTools/DumpRenderTree/win/TestNetscapePlugin/resource.h14
-rwxr-xr-xWebKitTools/DumpRenderTree/win/UIDelegate.cpp444
-rwxr-xr-xWebKitTools/DumpRenderTree/win/UIDelegate.h321
-rw-r--r--WebKitTools/DumpRenderTree/win/WorkQueueItemWin.cpp134
-rw-r--r--WebKitTools/FindSafari/FindSafari.cpp276
-rw-r--r--WebKitTools/FindSafari/FindSafari.rc70
-rw-r--r--WebKitTools/FindSafari/FindSafari.vcproj118
-rw-r--r--WebKitTools/FindSafari/Safari.exe.manifest129
-rw-r--r--WebKitTools/FindSafari/resource.h16
-rw-r--r--WebKitTools/GNUmakefile.am76
-rw-r--r--WebKitTools/GtkLauncher/main.c203
-rw-r--r--WebKitTools/GtkLauncher/simple.svg15
-rw-r--r--WebKitTools/GtkLauncher/text.html9
-rw-r--r--WebKitTools/MIDLWrapper/MIDLWrapper.cpp86
-rw-r--r--WebKitTools/MIDLWrapper/MIDLWrapper.sln20
-rw-r--r--WebKitTools/MIDLWrapper/MIDLWrapper.vcproj199
-rw-r--r--WebKitTools/Makefile33
-rw-r--r--WebKitTools/Scripts/SpacingHeuristics.pm101
-rw-r--r--WebKitTools/Scripts/VCSUtils.pm119
-rwxr-xr-xWebKitTools/Scripts/bisect-builds420
-rwxr-xr-xWebKitTools/Scripts/build-drawtest48
-rwxr-xr-xWebKitTools/Scripts/build-dumprendertree54
-rwxr-xr-xWebKitTools/Scripts/build-jsc54
-rwxr-xr-xWebKitTools/Scripts/build-webkit350
-rwxr-xr-xWebKitTools/Scripts/check-dom-results141
-rwxr-xr-xWebKitTools/Scripts/check-for-global-initializers135
-rwxr-xr-xWebKitTools/Scripts/check-for-weak-vtables101
-rwxr-xr-xWebKitTools/Scripts/clean-header-guards53
-rwxr-xr-xWebKitTools/Scripts/commit-log-editor189
-rwxr-xr-xWebKitTools/Scripts/compare-timing-files88
-rwxr-xr-xWebKitTools/Scripts/create-exports5
-rwxr-xr-xWebKitTools/Scripts/debug-safari38
-rwxr-xr-xWebKitTools/Scripts/do-file-rename115
-rwxr-xr-xWebKitTools/Scripts/do-webcore-rename199
-rwxr-xr-xWebKitTools/Scripts/extract-localizable-strings351
-rwxr-xr-xWebKitTools/Scripts/find-extra-includes102
-rwxr-xr-xWebKitTools/Scripts/find-included-framework-headers10
-rwxr-xr-xWebKitTools/Scripts/gdb-safari83
-rw-r--r--WebKitTools/Scripts/generate-coverage-data71
-rwxr-xr-xWebKitTools/Scripts/make-js-test-wrappers159
-rwxr-xr-xWebKitTools/Scripts/num-cpus16
-rwxr-xr-xWebKitTools/Scripts/parallelcl224
-rwxr-xr-xWebKitTools/Scripts/parse-malloc-history154
-rwxr-xr-xWebKitTools/Scripts/pdevenv25
-rwxr-xr-xWebKitTools/Scripts/prepare-ChangeLog1436
-rwxr-xr-xWebKitTools/Scripts/print-msvc-project-dependencies143
-rwxr-xr-xWebKitTools/Scripts/report-include-statistics114
-rwxr-xr-xWebKitTools/Scripts/resolve-ChangeLogs468
-rwxr-xr-xWebKitTools/Scripts/run-drawtest47
-rwxr-xr-xWebKitTools/Scripts/run-iexploder-tests172
-rwxr-xr-xWebKitTools/Scripts/run-javascriptcore-tests189
-rwxr-xr-xWebKitTools/Scripts/run-jsc58
-rwxr-xr-xWebKitTools/Scripts/run-launcher70
-rwxr-xr-xWebKitTools/Scripts/run-leaks212
-rwxr-xr-xWebKitTools/Scripts/run-mangleme-tests175
-rwxr-xr-xWebKitTools/Scripts/run-pageloadtest92
-rwxr-xr-xWebKitTools/Scripts/run-safari63
-rwxr-xr-xWebKitTools/Scripts/run-sunspider131
-rwxr-xr-xWebKitTools/Scripts/run-webkit-app50
-rwxr-xr-xWebKitTools/Scripts/run-webkit-httpd127
-rwxr-xr-xWebKitTools/Scripts/run-webkit-nightly.cmd10
-rwxr-xr-xWebKitTools/Scripts/run-webkit-tests1862
-rwxr-xr-xWebKitTools/Scripts/set-webkit-configuration41
-rwxr-xr-xWebKitTools/Scripts/sort-Xcode-project-file114
-rwxr-xr-xWebKitTools/Scripts/split-file-by-class159
-rwxr-xr-xWebKitTools/Scripts/sunspider-compare-results101
-rwxr-xr-xWebKitTools/Scripts/svn-apply443
-rwxr-xr-xWebKitTools/Scripts/svn-create-patch442
-rwxr-xr-xWebKitTools/Scripts/svn-unapply374
-rwxr-xr-xWebKitTools/Scripts/update-iexploder-cssproperties112
-rwxr-xr-xWebKitTools/Scripts/update-javascriptcore-test-results73
-rw-r--r--WebKitTools/Scripts/update-sources-list.py93
-rwxr-xr-xWebKitTools/Scripts/update-webkit92
-rwxr-xr-xWebKitTools/Scripts/update-webkit-auxiliary-libs121
-rwxr-xr-xWebKitTools/Scripts/update-webkit-localizable-strings46
-rwxr-xr-xWebKitTools/Scripts/update-webkit-support-libs105
-rw-r--r--WebKitTools/Scripts/webkitdirs.pm984
-rwxr-xr-xWebKitTools/Scripts/wkstyle89
-rw-r--r--WebKitTools/WebKitLauncher/Info.plist476
-rw-r--r--WebKitTools/WebKitLauncher/VERSION1
-rw-r--r--WebKitTools/WebKitLauncher/WebKitLauncher.xcodeproj/project.pbxproj358
-rw-r--r--WebKitTools/WebKitLauncher/WebKitNightlyEnabler.m165
-rw-r--r--WebKitTools/WebKitLauncher/main.m164
-rw-r--r--WebKitTools/WebKitLauncher/start.html33
-rw-r--r--WebKitTools/WebKitLauncher/webkit.icnsbin56937 -> 0 bytes
-rw-r--r--WebKitTools/WinLauncher/WinLauncher.cpp408
-rw-r--r--WebKitTools/WinLauncher/WinLauncher.h109
-rw-r--r--WebKitTools/WinLauncher/WinLauncher.icobin23558 -> 0 bytes
-rw-r--r--WebKitTools/WinLauncher/WinLauncher.rc136
-rw-r--r--WebKitTools/WinLauncher/WinLauncher.vcproj260
-rw-r--r--WebKitTools/WinLauncher/resource.h27
-rw-r--r--WebKitTools/WinLauncher/small.icobin23558 -> 0 bytes
-rw-r--r--WebKitTools/WinLauncher/stdafx.cpp33
-rw-r--r--WebKitTools/WinLauncher/stdafx.h69
-rw-r--r--WebKitTools/iExploder/CHANGELOG.txt328
-rw-r--r--WebKitTools/iExploder/LICENSE.txt20
-rw-r--r--WebKitTools/iExploder/README.txt149
-rw-r--r--WebKitTools/iExploder/htdocs/config.rb6
-rw-r--r--WebKitTools/iExploder/htdocs/cssproperties.in348
-rw-r--r--WebKitTools/iExploder/htdocs/cssvalues.in339
-rw-r--r--WebKitTools/iExploder/htdocs/htmlattrs.in259
-rw-r--r--WebKitTools/iExploder/htdocs/htmltags.in128
-rw-r--r--WebKitTools/iExploder/htdocs/htmlvalues.in35
-rwxr-xr-xWebKitTools/iExploder/htdocs/iexploder.cgi45
-rw-r--r--WebKitTools/iExploder/htdocs/iexploder.rb337
-rw-r--r--WebKitTools/iExploder/htdocs/index.html34
-rwxr-xr-xWebKitTools/iExploder/htdocs/webserver.rb75
-rwxr-xr-xWebKitTools/iExploder/tools/lasthit.rb53
-rwxr-xr-xWebKitTools/iExploder/tools/osx_last_crash.rb48
-rwxr-xr-xWebKitTools/iExploder/tools/showtest.rb43
-rw-r--r--WebKitTools/mangleme/LICENSE504
-rw-r--r--WebKitTools/mangleme/Makefile16
-rw-r--r--WebKitTools/mangleme/README20
-rw-r--r--WebKitTools/mangleme/mangle.cgi.c122
-rw-r--r--WebKitTools/mangleme/remangle.cgi.c125
-rw-r--r--WebKitTools/mangleme/tags.h76
-rw-r--r--WebKitTools/record-memory-win/main.cpp187
-rwxr-xr-xWebKitTools/vcbin/cl.exebin6656 -> 0 bytes
-rwxr-xr-xWebKitTools/vcbin/midl.exebin7168 -> 0 bytes
-rw-r--r--WebKitTools/wx/browser/browser.bkl63
-rw-r--r--WebKitTools/wx/browser/browser.cpp62
-rwxr-xr-xWebKitTools/wx/build-wxwebkit407
-rwxr-xr-xWebKitTools/wx/install-unix-extras172
-rw-r--r--acinclude.m4359
-rwxr-xr-xautogen.sh57
-rw-r--r--configure.ac748
-rw-r--r--symbols.filter5
457 files changed, 4141 insertions, 96408 deletions
diff --git a/ChangeLog b/ChangeLog
deleted file mode 100644
index a380ea1..0000000
--- a/ChangeLog
+++ /dev/null
@@ -1,2862 +0,0 @@
-2008-11-03 Alp Toker <alp@nuanti.com>
-
- autotools distcleancheck fix. Add dolt-generated files and
- webkitenumtypes.h to the list of files that need to be cleaned.
- Unreviewed.
-
- * GNUmakefile.am:
-
-2008-11-03 Alp Toker <alp@nuanti.com>
-
- Rubber-stamped by Holger Freyther.
-
- Do not enable RTTI or exceptions in debug builds, matching release
- builds. They don't help much with debugging and significantly slow
- down and increase the size of the debug build.
-
- * GNUmakefile.am:
-
-2008-11-03 Alp Toker <alp@nuanti.com>
-
- Rubber-stamped by Holger Freyther.
-
- Add mingw32 case to dolt for faster GTK+ Windows builds.
-
- * acinclude.m4:
-
-2008-11-02 Xan Lopez <xan@gnome.org>
-
- Reviewed by Holger Freyther
-
- https://bugs.webkit.org/show_bug.cgi?id=22009
- HTML5 Video with GStreamer pulls gnome-vfs without using it.
-
- * configure.ac:
- Remove gnome-vfs from configure.ac, it's unused.
-
-2008-10-30 Alp Toker <alp@nuanti.com>
-
- https://bugs.webkit.org/show_bug.cgi?id=19395
- doltlibtool bug with bash 3.0
-
- autotools dolt build fix for bash version 3.0 and older. Remove
- concatenation syntax from doltlibtool to support the older versions
- which don't have '+='.
-
- * acinclude.m4:
-
-2008-10-30 Alp Toker <alp@nuanti.com>
-
- Rubber-stamped by Oliver Hunt.
-
- autotools build system change to enable JIT features by default. Can
- be disabled with --disable-jit (and is disabled automatically on
- unsupported platforms).
-
- * configure.ac:
-
-2008-10-30 Alp Toker <alp@nuanti.com>
-
- Bump WebKit GTK+ version to 1.0.3.
-
- * configure.ac:
-
-2008-10-29 Gustavo Noronha Silva <gns@gnome.org>
-
- Reviewed by Holger Freyther.
-
- Added all the files that need to be installed for the Inspector to
- work.
-
-2008-10-29 Mike Hommey <glandium@debian.org>
-
- Reviewed by Holger Freyther.
-
- https://bugs.webkit.org/show_bug.cgi?id=21884
- Test presence and link against libpng.
-
- * GNUmakefile.am:
- * configure.ac:
-
-2008-10-29 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Holger Freyther.
-
- Add --enable-optimizations to enable optimized builds. The default
- is to enable it for release builds, and disabled for debug builds.
- This option will allow builders to have a debug as well as
- optimized builds.
-
- * GNUmakefile.am:
- * configure.ac:
-
-2008-10-28 Mike Hommey <glandium@debian.org>
-
- Reviewed by Alp Toker.
-
- https://bugs.webkit.org/show_bug.cgi?id=21885
- [GTK] libwebkit doesn't link against libpangoft2
-
- Add pkg-config check for pangoft2 which provides
- pango_fc_font_description_from_pattern() used in the FreeType font
- backend.
-
- * configure.ac:
-
-2008-10-28 Alp Toker <alp@nuanti.com>
-
- Include copyright license files in the autotools dist target.
-
- Change suggested by Mike Hommey.
-
- * GNUmakefile.am:
-
-2008-10-25 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Gtk build fix: add '-' to Wl which was missed in r36845
-
- * GNUmakefile.am:
-
-2008-10-22 Alp Toker <alp@nuanti.com>
-
- Fix build for Cairo 1.2.
-
- * configure.ac:
-
-2008-10-20 Alp Toker <alp@nuanti.com>
-
- Partial GTK+/Win32 build fix. Lowercase library name to enable linking
- when cross-compiling Windows binaries from Linux: -lWs2_32 -> -lws2_32
-
- * configure.ac:
-
-2008-10-13 Alp Toker <alp@nuanti.com>
-
- GTK+ build fix: Ensure correct builds when debugging is
- enabled/disabled by defining NDEBUG in autotoolsconfig.h as needed.
- It's still passed as a compiler flag since some sources (DRT) don't
- use config.h yet.
-
- * configure.ac:
-
-2008-10-09 Alp Toker <alp@nuanti.com>
-
- Reviewed by Mark Rowe.
-
- https://bugs.webkit.org/show_bug.cgi?id=20760
- Implement support for x86 Linux in CTI
-
- Prepare to enable CTI/WREC on supported architectures. Will be
- switched on when the crasher introduced in r37386 is resolved.
-
- * configure.ac:
-
-2008-10-07 Alp Toker <alp@nuanti.com>
-
- GTK+ build fix for older automake versions (1.7). Discussed in bug
- #21392.
-
- * GNUmakefile.am:
-
-2008-10-07 Alp Toker <alp@nuanti.com>
-
- Reviewed by Mark Rowe.
-
- https://bugs.webkit.org/show_bug.cgi?id=21392
- [GTK] Auto-generate JS DOM binding sources list
-
- Remove the huge lists of generated DOM binding sources and headers in
- the build system. These are difficult to maintain and can be derived
- automatically.
-
- The new strategy is to re-use the existing lists of IDL sources (which
- are needed for dist support anyway). This will also ease the addition
- of new language bindings.
-
- * GNUmakefile.am:
-
-2008-09-27 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Holger Freyther.
-
- https://bugs.webkit.org/show_bug.cgi?id=20287
- [Gtk] disable plugins for gtk/directfb target
-
- Introduce WTF_PLATFORM_X11 for X11 builds.
- Also use target-specific packages when building the port
-
- * configure.ac: Do not check for cairo-ft for directfb builds.
-
-2008-09-27 Marco Barisione <marco.barisione@collabora.co.uk>
-
- Reviewed by Holger Freyther.
-
- http://bugs.webkit.org/show_bug.cgi?id=21174
- [GTK][AUTOTOOLS] Enable large file support at configure time
-
- * configure.ac: Enable large file support with AC_SYS_LARGEFILE.
-
-2008-09-23 Richard Hult <richard@imendio.com>
-
- Reviewed by Alp Toker. Landed by Jan Alonzo.
-
- http://bugs.webkit.org/show_bug.cgi?id=20582
- [Gtk] Link error on Mac OS X
-
- * GNUmakefile.am: Only use the -version-script flag for the gnu
- linker.
- * configure.ac: Check for GNU OSes.
-
-2008-09-19 Alp Toker <alp@nuanti.com>
-
- Build fix for the 'gold' linker and recent binutils. New behaviour
- requires that we link to used libraries explicitly.
-
- * GNUmakefile.am:
- * configure.ac:
-
-2008-09-04 Marco Barisione <marco.barisione@collabora.co.uk>
-
- Reviewed by Eric Seidel.
-
- http://bugs.webkit.org/show_bug.cgi?id=20380
- [GTK][AUTOTOOLS] Include autotoolsconfig.h from config.h
-
- * configure.ac: Rename the configuration header from aconfig.h to autotoolsconfig.h.
-
-2008-08-28 Alp Toker <alp@nuanti.com>
-
- GTK+ dist/build fix. List newly added header files.
-
- * GNUmakefile.am:
-
-2008-08-27 Mike Hommey <glandium@debian.org>
-
- Reviewed by Holger.
-
- * GNUmakefile.am:
- * symbols.filter: Added.
-
-2008-08-10 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed (and updated) by Alp Toker.
-
- https://bugs.webkit.org/show_bug.cgi?id=16620
- [GTK] Autotools make dist and make check support
-
- Get make dist working.
-
- Note that not all possible configurations have been tested yet.
-
- * GNUmakefile.am:
-
-2008-08-09 Marco Barisione <marco.barisione@collabora.co.uk>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=19045
- [gtk] ./configure doesn't check for x toolkit availability
-
- Some old versions of Xt do not provide xt.pc, in this case use
- AC_CHECK_LIB to check if the library is installed and then fall back
- to using just -lXt.
-
- * configure.ac:
-
-2008-08-09 Alp Toker <alp@nuanti.com>
-
- GTK+ build fixes.
-
- Back out r20338 libxslt check (conditional check already exists and
- this broke the build).
-
- Make the flex version check a warning rather than fatal to fix the
- build bot.
-
- * configure.ac:
-
-2008-08-08 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Mark Rowe.
-
- http://bugs.webkit.org/show_bug.cgi?id=20338
- [Gtk] Autotools should check for libxslt
-
- Autotools check for libxslt
-
- * configure.ac:
-
-2008-08-07 Kalle Vahlman <zuh@iki.fi>
-
- Reviewed by David Kilzer.
-
- Check for correct flex version to avoid faulty builds
-
- A correct Webkit build requires flex 2.5.33 but autotools build doesn't check for it
- https://bugs.webkit.org/show_bug.cgi?id=20253
-
- acinclude.m4: Import AX_COMPARE_VERSION macro
- configure.ac: Check for flex version
-
- * acinclude.m4:
- * configure.ac:
-
-2008-08-07 Simon Hausmann <hausmann@webkit.org>
-
- Rubber-stamped by Lars.
-
- Added API tests for QWebPage/QWebFrame based on QTestLib.
-
- * WebKit.pro: Add WebKit/qt/tests to the build.
-
-2008-08-06 Marco Barisione <marco.barisione@collabora.co.uk>
-
- Reviewed by Eric Seidel.
-
- http://bugs.webkit.org/show_bug.cgi?id=20276
- [GTK] Makefile rules for the enum GTypes files depend on Makefile
- instead of GNUmakefile
-
- The patch committed in revision 34649 added the code needed to
- generate GTypes for enums but the makefile rules for
- stamp-webkitenumtypes.h and webkitenumtypes.cpp were depending on
- Makefile (used by other ports) instead of GNUmakefile.
-
- * GNUmakefile.am: Depend on GNUmakefile instead of Makefile.
-
-2008-08-05 Marco Barisione <marco.barisione@collabora.co.uk>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=19045
- [gtk] ./configure doesn't check for x toolkit availability
-
- Check for the .pc file for Xt instead of hard coding -lXt in the
- GNUmakefile.am.
-
- Thanks to Dominik Röttsches for the initial patch.
-
- * GNUmakefile.am:
- * configure.ac:
-
-2008-07-30 Marco Barisione <marco.barisione@collabora.co.uk>
-
- Reviewed by Holger.
-
- http://bugs.webkit.org/show_bug.cgi?id=19742
- [GTK] Auto generate webkitmarshal.list
-
- Auto generate webkitmarshal.list from source files to reduce the
- number of conflicts when merging git branches or when applying
- patches.
- Also rename webkit-marshal.* to webkitmarshal.* for consistency.
-
- * GNUmakefile.am:
-
-2008-07-25 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Copy the way Gtk detects jpeglib. Hinted by Wouter Bolsterlee.
-
- [Gtk] Improve detection jpeglib
- https://bugs.webkit.org/show_bug.cgi?id=17865
-
- * GNUmakefile.am:
- * configure.ac:
-
-2008-07-25 Simon Hausmann <hausmann@webkit.org>
-
- Discussed with and rubber-stamped by Lars.
-
- Fix the build system for the Qt port.
-
- Recent JavaScriptCore changes require the addition of JavaScriptCore/API to the
- include search path. With a build process that combines JavaScriptCore and
- WebCore in one build process/Makefile the existance of
- JavaScriptCore/API/Node.h and WebCore/dom/Node.h causes include conflicts.
-
- This commit solves this by introducing a separate build of JavaScriptCore into
- a static library.
-
- As a result of the split-up a race-condition due to broken dependencies of
- regular source files to header files of generated sources showed up very
- frequently when doing parallel builds (which the buildbot does). This commit at
- the same time tries to address the dependency problem by making the
- addExtraCompiler() function also generate a pseudo extra compiler that
- represents the header file output, so that qmake is aware of the creation of
- the header file for dependency calculation.
-
- At the same time I removed a lot of cruft from the pro files to ease maintenance.
-
- * WebKit.pri:
- * WebKit.pro:
-
-2008-06-18 Marco Barisione <marco.barisione@collabora.co.uk>
-
- Reviewed by Alp Toker.
-
- https://bugs.webkit.org/show_bug.cgi?id=19171
- [GTK] GTypes for enumerations
-
- Generate GTypes for public enumerations so they can be used as
- properties.
-
- * GNUmakefile.am: Generate webkit-enum-types.cpp and
- webkit-enum-types.h.
-
-2008-06-16 Simon Hausmann <hausmann@webkit.org>
-
- Fix the Qt build. testkjs.pro is now called jsc.pro.
-
- * WebKit.pro:
-
-2008-06-15 Alp Toker <alp@nuanti.com>
-
- Rubber-stamped by Maciej.
-
- Install 'jsc' application by default.
-
- * GNUmakefile.am:
-
-2008-06-08 Alp Toker <alp@nuanti.com>
-
- autotools/GTK+ build system cleanup. Don't include WebKit API in the
- WebCore build as it's no longer needed since r34426.
-
- * GNUmakefile.am:
-
-2008-06-08 Alp Toker <alp@nuanti.com>
-
- Rubber-stamped by Mark Rowe.
-
- Bring back -fstrict-aliasing for JavaScriptCore which was removed in
- r31821, since aliasing issues have now been fixed.
-
- Use -O3, not -O2 for the JavaScriptCore build.
-
- * GNUmakefile.am:
- * configure.ac:
-
-2008-06-05 Christian Dywan <christian@twotoasts.de>
-
- Reviewed by Alp Toker.
-
- https://bugs.webkit.org/show_bug.cgi?id=14141
- Please add a version to the Gtk port
-
- * GNUmakefile.am:
-
-2008-06-02 Alp Toker <alp@nuanti.com>
-
- GTK+/autotools Windows build system fixes.
-
- * GNUmakefile.am:
- * configure.ac:
-
-2008-06-02 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Alp Toker.
-
- Build WebCore GTK+ sources as part of WebCore, not WebKit.
- Split common and GTK+-specific sources into separate file lists.
-
- * GNUmakefile.am:
-
-2008-06-01 Josh Triplett <josh@freedesktop.org>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=16891
- [GTK] autotools build is slow
-
- Add dolt revision 5e9eef10 to the autotools build system. Speeds up
- the build, often by a factor of two or more on supported platforms,
- otherwise falls back to libtool.
-
- See http://dolt.freedesktop.org for details.
-
- * acinclude.m4: Added.
- * configure.ac:
-
-2008-05-25 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=19142
- [Gtk] Remove build options --svg-experimental and --cross-document-messaging
-
- * configure.ac:
-
-2008-05-24 Alp Toker <alp@nuanti.com>
-
- GTK+/Win32 build fixes. Link against Windows ICU without using
- icu-config since it's not available on that platform.
-
- Link against Ws2_32 when the curl http backend is chosen since we
- use select() directly.
-
- * configure.ac:
-
-2008-05-23 Alp Toker <alp@nuanti.com>
-
- GTK+ fixes for building without database support.
-
- * configure.ac:
-
-2008-05-20 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Alp Toker.
-
- Fix for previous autotools change.
-
- * configure.ac:
-
-2008-05-20 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Alp.
-
- http://bugs.webkit.org/show_bug.cgi?id=18483
- [Gtk] Autotools should match build-webkit default flags
-
- * configure.ac:
-
-2008-05-19 Alp Toker <alp@nuanti.com>
-
- GTK+ build fix for Mac/Win. Don't check for FreeType/FontConfig when
- the Pango font backend is selected.
-
- * GNUmakefile.am:
- * configure.ac:
-
-2008-05-16 Julien Chaffraix <jchaffraix@webkit.org>
-
- Reviewed by Eric.
-
- Preparatory work for bug 9191: JS*ElementWrapperFactory should be autogenerated
-
- * configure.ac: Add HTML_FLAGS and set it when video is enabled.
-
-2008-05-15 Ariya Hidayat <ariya.hidayat@trolltech.com>
-
- Reviewed by Simon.
-
- Since WebKitGtk is fully using autotools now, clean-up the .pro/.pri files
- from gtk-port.
-
- * WebKit.pri:
- * WebKit.pro:
-
-2008-05-09 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Mark.
-
- Add x86_64 rule.
-
- * Makefile:
-
-2008-05-09 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Holger.
-
- Removed explicit linkage against libxml and libxslt on Qt/Mac builds.
-
- This dependency is completely unnecessary here and creates only problems by
- propagating through WebCore.pro over libQtWebKit.prl right now customer
- applications.
-
-
- * WebKit.pri:
-
-2008-05-02 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Mark.
-
- Add an "x86_64" make rule.
-
- * Makefile.shared:
-
-2008-05-02 Jan Michael Alonzo <jmalonzo@unpluggable.com>
-
- Reviewed by Eric.
-
- https://bugs.webkit.org/show_bug.cgi?id=18811
- Enable dashboard and offline web apps in autotools
-
- * configure.ac:
-
-2008-05-01 Marc Ordinas i Llopis <marc.ordinasillopis@collabora.co.uk>
-
- Reviewed by Alp Toker.
-
- https://bugs.webkit.org/show_bug.cgi?id=14750
- Added support for NPAPI plugins on Gtk and Qt-x11 ports.
-
- * GNUmakefile.am: Added Xt library.
-
-2008-04-29 David Kilzer <ddkilzer@apple.com>
-
- BUILD FIX for ENABLE(DASHBOARD_SUPPORT)
-
- * configure.ac: Added conditional for ENABLE_DASHBOARD_SUPPORT.
-
-2008-04-22 Alp Toker <alp@nuanti.com>
-
- GTK+ debug build fix for changes in r32257.
-
- * GNUmakefile.am:
-
-2008-04-18 Jan Michael Alonzo <jmalonzo@unpluggable.com>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=16620
- [GTK] Autotools make dist and make check support
-
- Cleanups.
-
- * GNUmakefile.am:
-
-2008-04-11 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Antti Koivisto.
-
- * GNUmakefile.am: Disable a warning that GCC 4.3 triggers all over the show.
-
-2008-04-17 Alp Toker <alp@atoker.com>
-
- GTK+ build fix. Back out the libjpeg check part of r32008 from bug
- #17865 (reopened).
-
- * configure.ac:
-
-2008-04-17 Jan Michael Alonzo <jmalonzo@unpluggable.com>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=17865
- [Gtk] Improve detection of jpeglib and glib tools
-
- Improve detecting jpeglib and glib tools
-
- * configure.ac: Throw an error if the dependencies above are
- currently not installed
-
-2008-04-14 Xan Lopez <xan@gnome.org>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=17917
- Bug 17917: Cookie support for HTTP soup backend
-
- Bumped the libsoup required version to 2.23 for cookie support.
-
- * configure.ac:
-
-2008-04-11 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Anders Carlsson.
-
- Fix https://bugs.webkit.org/show_bug.cgi?id=18430
- Bug 18430: SIGSEGV on amd64 when built with gcc 4.3
-
- GCC 4.3 generates bad code in some instances when working with our HashTables
- as some of the HashTable code violates the strict aliasing requirements. Since
- GCC 4.2 this code has generated warnings when -fstrict-aliasing is enabled. Until
- the code can be fixed to be safe with strict aliasing enabled, we will disable
- strict aliasing.
-
- * GNUmakefile.am:
-
-2008-03-12 Michael Emmel <mike.emmel@gmail.com>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=18397
- Fix leaving spaces before parens in functions
-
- * WebKitTools/Scripts/wkstyle:
-
-2008-04-07 Jan Michael Alonzo <jmalonzo@unpluggable.com>
-
- Build fix, rubber-stamped and landed by ap.
-
- * configure.ac: Add autoconf flag for HTML5 client-side session and persistent storage support.
-
-2008-03-21 Rodney Dawes <dobey@wayofthemonkey.com>
-
- Reviewed by Holger.
-
- Remove the JSCore include path options from global_cppflags.
- Place JSCore include path options in javascriptcore_cppflags.
- Add javascriptcore_cppflags to libWebCore_la_CPPFLAGS.
-
- * GNUmakefile.am:
-
-2008-03-20 Jasper Bryant-Greene <jasper@unix.geek.nz>
-
- Reviewed by Anders.
-
- Resolves http://bugs.webkit.org/show_bug.cgi?id=16092
- "[GTK] Middle-mouse click should allow opening a URL in a new tab"
-
- Added WebKitNavigationAction object to GTK API
-
- * GNUmakefile.am:
-
-2008-03-12 Xan Lopez <xan@gnome.org>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=15229
-
- Add optional font backend support with freetype and pango
- backends. Default is freetype for now.
-
- Original patch by Sven Herzberg <sven@imendio.com>
-
- * configure.ac:
-
-2008-03-11 Xan Lopez <xan@gnome.org>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=16476
-
- Add support for multiple http backends, and add soup backend (off by default).
-
- * GNUmakefile.am:
- * configure.ac:
-
-2008-03-07 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Darin Adler.
-
- Done with Lars.
-
- Added plugins subdirectory to the include path.
-
- * WebKit.pri:
-
-2008-03-09 Alp Toker <alp@atoker.com>
-
- GTK+ build fix for r30913.
-
- Use UNICODE_CFLAGS for C++ sources as well as C sources.
-
- * GNUmakefile.am:
-
-2008-03-09 Jürg Billeter <j@bitron.ch>
-
- Reviewed by Alp Toker.
-
- Conditionalise ICU for Unicode in the GTK+ port.
-
- * GNUmakefile.am:
- * configure.ac:
-
-2008-03-03 Brent Fulgham <bfulgham@gmail.com>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=17644
- Build GTK on Mac OS X using native ICU library
-
- Use Apple native ICU libraries when building GTK
- webkit on Mac OS.
-
- * configure.ac:
-
-2008-03-02 Brent Fulgham <bfulgham@gmail.com>
-
- Reviewed by Alp Toker.
-
- Add ICU_CPPFLAGS earlier in include path for WebCore
- so that we find $(icu_cppflags)/unicode/utf8.h, rather than
- the wtf/unicode/UTF8.h on case-insensitive file systems.
-
- * GNUmakefile.am:
-
-2008-03-02 Alp Toker <alp@atoker.com>
-
- Reviewed by Mark Rowe.
-
- Split the WebKit GTK+ build out of the WebCore build and change the
- shared object name to match the package name.
-
- * GNUmakefile.am:
-
-2008-02-28 Alp Toker <alp@atoker.com>
-
- Fix a configure script typo spotted by Kalle Vahlman.
-
- * configure.ac:
-
-2008-02-26 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Darin Adler.
-
- Add "64" and "64u" make rules to allow easy building of 64-bit versions.
-
- make 64: will build Intel-only 64-bit.
- make 64u: will build 4-way universal for PPC and Intel.
-
- * Makefile:
- * Makefile.shared:
-
-2008-02-23 Jan Michael Alonzo <jmalonzo@unpluggable.com>
-
- Rubber stamped by Darin Adler.
-
- Add separator '\' after libJavaScriptCore_la_LIBADD and cleanup
- whitespaces introduced in the previous commit.
-
- * GNUmakefile.am:
-
-2008-02-23 Jan Michael Alonzo <jmalonzo@unpluggable.com>
-
- Rubber-stamped by Darin Adler.
-
- * GNUmakefile.am: Add both GLOBALDEPS and WEBKITDEPS instead of DEPENDENCIES.
- * configure.ac: Break dependent modules into GLOBALDEPS and WEBKITDEPS.
-
-2008-02-21 Alp Toker <alp@atoker.com>
-
- Fix a configure script typo.
-
- * configure.ac:
-
-2008-02-21 Alp Toker <alp@atoker.com>
-
- GTK+/autotools SVG experimental build fix
-
- Don't enable SVG filters in --enable-svg-experimental.
-
- This feature isn't supported at all yet. Developers can enable it
- explicitly by passing --enable-svg-filters if needed.
-
- * configure.ac:
-
-2008-02-21 Mike Auty <mike.auty@gmail.com>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=17445
- [GTK] WebKit doesn't compile with LDFLAGS="-Wl,--as-needed"
-
- The GNUmakefile.am files make use of the LDFLAGS variable to include library
- additions such as -ljpeg etc. Unfortunately, if these inclusions aren't made
- in LIBADD/LDADD variables, then they are mis-ordered during the linking.
-
- The as-needed flag discards libraries whose functions have not been needed by
- earlier libraries, which therefore makes the ordering important.
-
- This moves all -l library inclusion statements from LDFLAGS variables to
- LIBADD/LDADD variables.
-
- * GNUmakefile.am:
-
-2008-02-15 Alp Toker <alp@atoker.com>
-
- Reviewed by Holger.
-
- GTK+ configure script cleanups
-
- Categorize the configuration summary printout.
- Bump GTK+ requirement to 2.8.
- Rename 'webkit_target' to just 'target'.
- Don't check for pthread on Win32.
-
- * configure.ac:
-
-2008-02-14 Adam Roben <aroben@apple.com>
-
- Turn on cross-document messaging support by default
-
- Reviewed by Darin Adler.
-
- * configure.ac:
-
-2008-02-14 Adam Roben <aroben@apple.com>
-
- Conditionalize cross-document messaging support
-
- The cross-document messaging parts of HTML 5 are in flux and we want
- ports to be able to turn off the support as needed.
-
- Note that the support is turned off by default right now. A subsequent
- commit will turn it on by default.
-
- Reviewed by Darin Adler.
-
- * configure.ac:
-
-2008-02-12 Rodney Dawes <dobey@wayofthemonkey.com>
-
- Reviewed by Alp Toker.
-
- Add a --with-hildon argument to configure.ac for adding MAEMO_CHANGES
- to the CPPFLAGS for WebCore and WebKit
- Add a pkgconfig check for hildon-1 when --with-hildon specified
- Output the use of Hildon support in the summary
- Add HILDON_CPPFLAGS to webkitgtk_cppflags
- Add HILDON_CFLAGS to libWebKitGtk_la_CFLAGS
- Add HILDON_LIBS to libWebKitGtk_la_LDFLAGS
-
- * configure.ac:
- * GNUmakefile.am:
-
-2008-02-08 Alp Toker <alp@atoker.com>
-
- Rubber-stamped by Maciej.
-
- Bump autoconf CAIRO_REQUIRED_VERSION up to 1.4.
-
- * configure.ac:
-
-2008-02-06 Timothy Hatcher <timothy@apple.com>
-
- Rubber-stamped by Mark Rowe.
-
- Dump of bugs.webkit.org's Bugzilla instance.
-
- * BugsSite: Added.
- * BugsSite/.htaccess: Added.
- * BugsSite/Bugzilla: Added.
- * BugsSite/Bugzilla.pm: Added.
- * BugsSite/Bugzilla/.cvsignore: Added.
- * BugsSite/Bugzilla/.htaccess: Added.
- * BugsSite/Bugzilla/Attachment.pm: Added.
- * BugsSite/Bugzilla/Auth: Added.
- * BugsSite/Bugzilla/Auth.pm: Added.
- * BugsSite/Bugzilla/Auth/Login: Added.
- * BugsSite/Bugzilla/Auth/Login/WWW: Added.
- * BugsSite/Bugzilla/Auth/Login/WWW.pm: Added.
- * BugsSite/Bugzilla/Auth/Login/WWW/CGI: Added.
- * BugsSite/Bugzilla/Auth/Login/WWW/CGI.pm: Added.
- * BugsSite/Bugzilla/Auth/Login/WWW/CGI/Cookie.pm: Added.
- * BugsSite/Bugzilla/Auth/Login/WWW/Env.pm: Added.
- * BugsSite/Bugzilla/Auth/README: Added.
- * BugsSite/Bugzilla/Auth/Verify: Added.
- * BugsSite/Bugzilla/Auth/Verify/DB.pm: Added.
- * BugsSite/Bugzilla/Auth/Verify/LDAP.pm: Added.
- * BugsSite/Bugzilla/Bug.pm: Added.
- * BugsSite/Bugzilla/BugMail.pm: Added.
- * BugsSite/Bugzilla/CGI.pm: Added.
- * BugsSite/Bugzilla/Chart.pm: Added.
- * BugsSite/Bugzilla/Config.pm: Added.
- * BugsSite/Bugzilla/Constants.pm: Added.
- * BugsSite/Bugzilla/DB: Added.
- * BugsSite/Bugzilla/DB.pm: Added.
- * BugsSite/Bugzilla/DB/Mysql.pm: Added.
- * BugsSite/Bugzilla/DB/Pg.pm: Added.
- * BugsSite/Bugzilla/DB/Schema: Added.
- * BugsSite/Bugzilla/DB/Schema.pm: Added.
- * BugsSite/Bugzilla/DB/Schema/Mysql.pm: Added.
- * BugsSite/Bugzilla/DB/Schema/Pg.pm: Added.
- * BugsSite/Bugzilla/Error.pm: Added.
- * BugsSite/Bugzilla/Flag.pm: Added.
- * BugsSite/Bugzilla/FlagType.pm: Added.
- * BugsSite/Bugzilla/Group.pm: Added.
- * BugsSite/Bugzilla/Search.pm: Added.
- * BugsSite/Bugzilla/Series.pm: Added.
- * BugsSite/Bugzilla/Template: Added.
- * BugsSite/Bugzilla/Template.pm: Added.
- * BugsSite/Bugzilla/Template/Plugin: Added.
- * BugsSite/Bugzilla/Template/Plugin/Bugzilla.pm: Added.
- * BugsSite/Bugzilla/Template/Plugin/Hook.pm: Added.
- * BugsSite/Bugzilla/Template/Plugin/User.pm: Added.
- * BugsSite/Bugzilla/Token.pm: Added.
- * BugsSite/Bugzilla/User: Added.
- * BugsSite/Bugzilla/User.pm: Added.
- * BugsSite/Bugzilla/User/Setting.pm: Added.
- * BugsSite/Bugzilla/Util.pm: Added.
- * BugsSite/CGI.pl: Added.
- * BugsSite/PrettyPatch: Added.
- * BugsSite/PrettyPatch/PrettyPatch.rb: Added.
- * BugsSite/PrettyPatch/prettify.rb: Added.
- * BugsSite/QUICKSTART: Added.
- * BugsSite/README: Added.
- * BugsSite/UPGRADING: Added.
- * BugsSite/UPGRADING-pre-2.8: Added.
- * BugsSite/ant.jpg: Added.
- * BugsSite/attachment-aroben.cgi: Added.
- * BugsSite/attachment.cgi: Added.
- * BugsSite/buglist.cgi: Added.
- * BugsSite/bugzilla.dtd: Added.
- * BugsSite/chart.cgi: Added.
- * BugsSite/checksetup.pl: Added.
- * BugsSite/colchange.cgi: Added.
- * BugsSite/collectstats.pl: Added.
- * BugsSite/config.cgi: Added.
- * BugsSite/contrib: Added.
- * BugsSite/contrib/BugzillaEmail.pm: Added.
- * BugsSite/contrib/README: Added.
- * BugsSite/contrib/README.Mailif: Added.
- * BugsSite/contrib/bug_email.pl: Added.
- * BugsSite/contrib/bugmail_help.html: Added.
- * BugsSite/contrib/bugzilla-submit: Added.
- * BugsSite/contrib/bugzilla-submit/README: Added.
- * BugsSite/contrib/bugzilla-submit/bugdata.txt: Added.
- * BugsSite/contrib/bugzilla-submit/bugzilla-submit: Added.
- * BugsSite/contrib/bugzilla-submit/bugzilla-submit.xml: Added.
- * BugsSite/contrib/bugzilla.procmailrc: Added.
- * BugsSite/contrib/bugzilla_email_append.pl: Added.
- * BugsSite/contrib/bugzilla_ldapsync.rb: Added.
- * BugsSite/contrib/bzdbcopy.pl: Added.
- * BugsSite/contrib/cmdline: Added.
- * BugsSite/contrib/cmdline/bugcount: Added.
- * BugsSite/contrib/cmdline/bugids: Added.
- * BugsSite/contrib/cmdline/buglist: Added.
- * BugsSite/contrib/cmdline/bugs: Added.
- * BugsSite/contrib/cmdline/bugslink: Added.
- * BugsSite/contrib/cmdline/makequery: Added.
- * BugsSite/contrib/cmdline/query.conf: Added.
- * BugsSite/contrib/cvs-update.pl: Added.
- * BugsSite/contrib/gnats2bz.pl: Added.
- * BugsSite/contrib/gnatsparse: Added.
- * BugsSite/contrib/gnatsparse/README: Added.
- * BugsSite/contrib/gnatsparse/gnatsparse.py: Added.
- * BugsSite/contrib/gnatsparse/magic.py: Added.
- * BugsSite/contrib/gnatsparse/specialuu.py: Added.
- * BugsSite/contrib/jb2bz.py: Added.
- * BugsSite/contrib/mysqld-watcher.pl: Added.
- * BugsSite/contrib/sendbugmail.pl: Added.
- * BugsSite/contrib/sendunsentbugmail.pl: Added.
- * BugsSite/contrib/syncLDAP.pl: Added.
- * BugsSite/contrib/yp_nomail.sh: Added.
- * BugsSite/createaccount.cgi: Added.
- * BugsSite/data: Added.
- * BugsSite/data/.htaccess: Added.
- * BugsSite/data/attachments: Added.
- * BugsSite/data/attachments/.htaccess: Added.
- * BugsSite/data/duplicates: Added.
- * BugsSite/data/mail: Added.
- * BugsSite/data/mimedump-tmp: Added.
- * BugsSite/data/mining: Added.
- * BugsSite/data/nomail: Added.
- * BugsSite/data/params: Added.
- * BugsSite/data/template: Added.
- * BugsSite/data/template/template: Added.
- * BugsSite/data/template/template/en: Added.
- * BugsSite/data/template/template/en/custom: Added.
- * BugsSite/data/template/template/en/custom/account: Added.
- * BugsSite/data/template/template/en/custom/account/auth: Added.
- * BugsSite/data/template/template/en/custom/account/auth/ldap-error.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/account/auth/login-small.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/account/auth/login.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/account/cancel-token.txt.tmpl: Added.
- * BugsSite/data/template/template/en/custom/account/create.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/account/created.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/account/email: Added.
- * BugsSite/data/template/template/en/custom/account/email/change-new.txt.tmpl: Added.
- * BugsSite/data/template/template/en/custom/account/email/change-old.txt.tmpl: Added.
- * BugsSite/data/template/template/en/custom/account/email/confirm.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/account/exists.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/account/password: Added.
- * BugsSite/data/template/template/en/custom/account/password/forgotten-password.txt.tmpl: Added.
- * BugsSite/data/template/template/en/custom/account/password/set-forgotten-password.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/account/prefs: Added.
- * BugsSite/data/template/template/en/custom/account/prefs/account.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/account/prefs/email.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/account/prefs/footer.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/account/prefs/permissions.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/account/prefs/prefs.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/account/prefs/saved-searches.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/account/prefs/settings.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin: Added.
- * BugsSite/data/template/template/en/custom/admin/classifications: Added.
- * BugsSite/data/template/template/en/custom/admin/classifications/add.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/classifications/del.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/classifications/delete.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/classifications/edit.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/classifications/new.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/classifications/reclassify.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/classifications/select.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/classifications/update.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/components: Added.
- * BugsSite/data/template/template/en/custom/admin/components/confirm-delete.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/components/create.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/components/created.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/components/deleted.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/components/edit.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/components/footer.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/components/list.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/components/select-product.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/components/updated.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/fieldvalues: Added.
- * BugsSite/data/template/template/en/custom/admin/fieldvalues/confirm-delete.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/fieldvalues/create.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/fieldvalues/created.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/fieldvalues/deleted.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/fieldvalues/edit.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/fieldvalues/footer.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/fieldvalues/list.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/fieldvalues/select-field.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/fieldvalues/updated.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/flag-type: Added.
- * BugsSite/data/template/template/en/custom/admin/flag-type/confirm-delete.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/flag-type/edit.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/flag-type/list.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/groups: Added.
- * BugsSite/data/template/template/en/custom/admin/groups/change.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/groups/create.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/groups/created.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/groups/delete.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/groups/deleted.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/groups/edit.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/groups/list.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/groups/remove.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/keywords: Added.
- * BugsSite/data/template/template/en/custom/admin/keywords/confirm-delete.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/keywords/create.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/keywords/created.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/keywords/edit.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/keywords/list.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/keywords/rebuild-cache.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/milestones: Added.
- * BugsSite/data/template/template/en/custom/admin/milestones/confirm-delete.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/milestones/create.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/milestones/created.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/milestones/deleted.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/milestones/edit.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/milestones/footer.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/milestones/list.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/milestones/select-product.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/milestones/updated.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/products: Added.
- * BugsSite/data/template/template/en/custom/admin/products/confirm-delete.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/products/deleted.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/products/footer.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/products/groupcontrol: Added.
- * BugsSite/data/template/template/en/custom/admin/products/groupcontrol/confirm-edit.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/products/groupcontrol/edit.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/products/list-classifications.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/products/list.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/settings: Added.
- * BugsSite/data/template/template/en/custom/admin/settings/edit.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/settings/updated.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/table.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/users: Added.
- * BugsSite/data/template/template/en/custom/admin/users/confirm-delete.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/users/create.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/users/edit.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/users/list.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/users/listselectvars.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/users/search.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/users/userdata.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/versions: Added.
- * BugsSite/data/template/template/en/custom/admin/versions/confirm-delete.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/versions/create.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/versions/created.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/versions/deleted.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/versions/edit.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/versions/footer.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/versions/list.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/versions/select-product.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/admin/versions/updated.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/attachment: Added.
- * BugsSite/data/template/template/en/custom/attachment/choose.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/attachment/content-types.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/attachment/create.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/attachment/created.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/attachment/diff-file.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/attachment/diff-footer.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/attachment/diff-header.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/attachment/edit.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/attachment/list.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/attachment/show-multiple.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/attachment/updated.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug: Added.
- * BugsSite/data/template/template/en/custom/bug/activity: Added.
- * BugsSite/data/template/template/en/custom/bug/activity/show.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug/activity/table.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug/choose.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug/comments.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug/create: Added.
- * BugsSite/data/template/template/en/custom/bug/create/comment-guided.txt.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug/create/comment.txt.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug/create/create-guided.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug/create/create.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug/create/created.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug/create/make-template.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug/create/user-message.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug/dependency-graph.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug/dependency-tree.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug/edit.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug/knob.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug/navigate.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug/process: Added.
- * BugsSite/data/template/template/en/custom/bug/process/bugmail.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug/process/confirm-duplicate.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug/process/header.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug/process/midair.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug/process/next.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug/process/results.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug/process/verify-new-product.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug/show-multiple.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug/show.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug/show.xml.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug/summarize-time.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug/time.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug/votes: Added.
- * BugsSite/data/template/template/en/custom/bug/votes/delete-all.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug/votes/list-for-bug.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/bug/votes/list-for-user.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/config.js.tmpl: Added.
- * BugsSite/data/template/template/en/custom/config.rdf.tmpl: Added.
- * BugsSite/data/template/template/en/custom/flag: Added.
- * BugsSite/data/template/template/en/custom/flag/list.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/global: Added.
- * BugsSite/data/template/template/en/custom/global/banner.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/global/choose-classification.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/global/choose-product.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/global/code-error.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/global/confirm-user-match.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/global/field-descs.none.tmpl: Added.
- * BugsSite/data/template/template/en/custom/global/footer.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/global/header.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/global/help-header.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/global/help.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/global/hidden-fields.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/global/initialize.none.tmpl: Added.
- * BugsSite/data/template/template/en/custom/global/message.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/global/messages.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/global/select-menu.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/global/setting-descs.none.tmpl: Added.
- * BugsSite/data/template/template/en/custom/global/site-navigation.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/global/useful-links.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/global/user-error.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/global/userselect.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/global/variables.none.tmpl: Added.
- * BugsSite/data/template/template/en/custom/index.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/list: Added.
- * BugsSite/data/template/template/en/custom/list/change-columns.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/list/edit-multiple.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/list/list-simple.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/list/list.csv.tmpl: Added.
- * BugsSite/data/template/template/en/custom/list/list.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/list/list.ics.tmpl: Added.
- * BugsSite/data/template/template/en/custom/list/list.js.tmpl: Added.
- * BugsSite/data/template/template/en/custom/list/list.rdf.tmpl: Added.
- * BugsSite/data/template/template/en/custom/list/list.rss.tmpl: Added.
- * BugsSite/data/template/template/en/custom/list/quips.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/list/server-push.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/list/table.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/pages: Added.
- * BugsSite/data/template/template/en/custom/pages/bug-writing.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/pages/fields.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/pages/linked.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/pages/linkify.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/pages/voting.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/reports: Added.
- * BugsSite/data/template/template/en/custom/reports/chart.csv.tmpl: Added.
- * BugsSite/data/template/template/en/custom/reports/chart.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/reports/chart.png.tmpl: Added.
- * BugsSite/data/template/template/en/custom/reports/components.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/reports/create-chart.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/reports/duplicates-simple.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/reports/duplicates-table.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/reports/duplicates.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/reports/duplicates.rdf.tmpl: Added.
- * BugsSite/data/template/template/en/custom/reports/edit-series.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/reports/keywords.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/reports/menu.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/reports/report-bar.png.tmpl: Added.
- * BugsSite/data/template/template/en/custom/reports/report-line.png.tmpl: Added.
- * BugsSite/data/template/template/en/custom/reports/report-pie.png.tmpl: Added.
- * BugsSite/data/template/template/en/custom/reports/report-simple.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/reports/report-table.csv.tmpl: Added.
- * BugsSite/data/template/template/en/custom/reports/report-table.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/reports/report.csv.tmpl: Added.
- * BugsSite/data/template/template/en/custom/reports/report.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/reports/series-common.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/reports/series.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/request: Added.
- * BugsSite/data/template/template/en/custom/request/email.txt.tmpl: Added.
- * BugsSite/data/template/template/en/custom/request/queue.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/search: Added.
- * BugsSite/data/template/template/en/custom/search/boolean-charts.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/search/form.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/search/knob.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/search/search-advanced.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/search/search-create-series.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/search/search-help.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/search/search-report-graph.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/search/search-report-select.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/search/search-report-table.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/search/search-specific.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/search/tabs.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/sidebar.xul.tmpl: Added.
- * BugsSite/data/template/template/en/custom/whine: Added.
- * BugsSite/data/template/template/en/custom/whine/mail.html.tmpl: Added.
- * BugsSite/data/template/template/en/custom/whine/mail.txt.tmpl: Added.
- * BugsSite/data/template/template/en/custom/whine/multipart-mime.txt.tmpl: Added.
- * BugsSite/data/template/template/en/custom/whine/schedule.html.tmpl: Added.
- * BugsSite/data/template/template/en/default: Added.
- * BugsSite/data/template/template/en/default/attachment: Added.
- * BugsSite/data/template/template/en/default/attachment/edit-aroben.html.tmpl: Added.
- * BugsSite/data/template/template/en/default/list: Added.
- * BugsSite/data/template/template/en/default/list/list.atom.tmpl: Added.
- * BugsSite/data/versioncache: Added.
- * BugsSite/data/versioncache.13P9L: Added.
- * BugsSite/data/versioncache.1lH1E: Added.
- * BugsSite/data/versioncache.3AnHd: Added.
- * BugsSite/data/versioncache.3Jmjt: Added.
- * BugsSite/data/versioncache.3JzIL: Added.
- * BugsSite/data/versioncache.77b4y: Added.
- * BugsSite/data/versioncache.7VzyU: Added.
- * BugsSite/data/versioncache.EQdAm: Added.
- * BugsSite/data/versioncache.EouAG: Added.
- * BugsSite/data/versioncache.LJ5n1: Added.
- * BugsSite/data/versioncache.Lb0fW: Added.
- * BugsSite/data/versioncache.PyAd8: Added.
- * BugsSite/data/versioncache.SFyse: Added.
- * BugsSite/data/versioncache.SkTTg: Added.
- * BugsSite/data/versioncache.VVO7E: Added.
- * BugsSite/data/versioncache.XbxgU: Added.
- * BugsSite/data/versioncache.Yezqr: Added.
- * BugsSite/data/versioncache.dtzIv: Added.
- * BugsSite/data/versioncache.jzpeh: Added.
- * BugsSite/data/versioncache.pbn6U: Added.
- * BugsSite/data/versioncache.qyixS: Added.
- * BugsSite/data/versioncache.sBMdb: Added.
- * BugsSite/data/versioncache.xNi34: Added.
- * BugsSite/data/webdot: Added.
- * BugsSite/data/webdot/.htaccess: Added.
- * BugsSite/data/webdot/0ZLH3QpFd8.dot: Added.
- * BugsSite/data/webdot/3s6e7eC2Dy.dot: Added.
- * BugsSite/data/webdot/6MW0q54cyY.dot: Added.
- * BugsSite/data/webdot/A2RlhPdO2Q.dot: Added.
- * BugsSite/data/webdot/DuBX4I4946.dot: Added.
- * BugsSite/data/webdot/GudTgvrKBX.dot: Added.
- * BugsSite/data/webdot/I1mCbLtAzQ.dot: Added.
- * BugsSite/data/webdot/JtKgvWGVb4.dot: Added.
- * BugsSite/data/webdot/RFk4bjAwYc.dot: Added.
- * BugsSite/data/webdot/YQ1pWFVfqt.dot: Added.
- * BugsSite/data/webdot/YcFUepShZI.dot: Added.
- * BugsSite/data/webdot/a9i00KgTQk.dot: Added.
- * BugsSite/data/webdot/c412GYaHch.dot: Added.
- * BugsSite/data/webdot/hjYnYr3tV1.dot: Added.
- * BugsSite/data/webdot/pq3Qw7wynI.dot: Added.
- * BugsSite/data/webdot/tL7GjA7bqH.dot: Added.
- * BugsSite/defparams.pl: Added.
- * BugsSite/describecomponents.cgi: Added.
- * BugsSite/describekeywords.cgi: Added.
- * BugsSite/describekeywords.cgi.bak: Added.
- * BugsSite/docs: Added.
- * BugsSite/docs/.cvsignore: Added.
- * BugsSite/docs/README.docs: Added.
- * BugsSite/docs/html: Added.
- * BugsSite/docs/html/Bugzilla-Guide.html: Added.
- * BugsSite/docs/html/about.html: Added.
- * BugsSite/docs/html/administration.html: Added.
- * BugsSite/docs/html/bug_page.html: Added.
- * BugsSite/docs/html/bugreports.html: Added.
- * BugsSite/docs/html/cmdline-bugmail.html: Added.
- * BugsSite/docs/html/cmdline.html: Added.
- * BugsSite/docs/html/components.html: Added.
- * BugsSite/docs/html/configuration.html: Added.
- * BugsSite/docs/html/conventions.html: Added.
- * BugsSite/docs/html/copyright.html: Added.
- * BugsSite/docs/html/credits.html: Added.
- * BugsSite/docs/html/cust-change-permissions.html: Added.
- * BugsSite/docs/html/cust-hooks.html: Added.
- * BugsSite/docs/html/cust-templates.html: Added.
- * BugsSite/docs/html/customization.html: Added.
- * BugsSite/docs/html/dbdoc.html: Added.
- * BugsSite/docs/html/dbmodify.html: Added.
- * BugsSite/docs/html/disclaimer.html: Added.
- * BugsSite/docs/html/extraconfig.html: Added.
- * BugsSite/docs/html/faq.html: Added.
- * BugsSite/docs/html/flags-overview.html: Added.
- * BugsSite/docs/html/flags.html: Added.
- * BugsSite/docs/html/general-advice.html: Added.
- * BugsSite/docs/html/gfdl-0.html: Added.
- * BugsSite/docs/html/gfdl-1.html: Added.
- * BugsSite/docs/html/gfdl-10.html: Added.
- * BugsSite/docs/html/gfdl-2.html: Added.
- * BugsSite/docs/html/gfdl-3.html: Added.
- * BugsSite/docs/html/gfdl-4.html: Added.
- * BugsSite/docs/html/gfdl-5.html: Added.
- * BugsSite/docs/html/gfdl-6.html: Added.
- * BugsSite/docs/html/gfdl-7.html: Added.
- * BugsSite/docs/html/gfdl-8.html: Added.
- * BugsSite/docs/html/gfdl-9.html: Added.
- * BugsSite/docs/html/gfdl-howto.html: Added.
- * BugsSite/docs/html/gfdl.html: Added.
- * BugsSite/docs/html/glossary.html: Added.
- * BugsSite/docs/html/groups.html: Added.
- * BugsSite/docs/html/hintsandtips.html: Added.
- * BugsSite/docs/html/index.html: Added.
- * BugsSite/docs/html/install-perlmodules-manual.html: Added.
- * BugsSite/docs/html/installation.html: Added.
- * BugsSite/docs/html/installing-bugzilla.html: Added.
- * BugsSite/docs/html/integration.html: Added.
- * BugsSite/docs/html/lifecycle.html: Added.
- * BugsSite/docs/html/list.html: Added.
- * BugsSite/docs/html/milestones.html: Added.
- * BugsSite/docs/html/modules-manual-download.html: Added.
- * BugsSite/docs/html/modules-manual-instructions.html: Added.
- * BugsSite/docs/html/modules-manual-optional.html: Added.
- * BugsSite/docs/html/myaccount.html: Added.
- * BugsSite/docs/html/newversions.html: Added.
- * BugsSite/docs/html/nonroot.html: Added.
- * BugsSite/docs/html/os-specific.html: Added.
- * BugsSite/docs/html/parameters.html: Added.
- * BugsSite/docs/html/paranoid-security.html: Added.
- * BugsSite/docs/html/patches.html: Added.
- * BugsSite/docs/html/patchviewer.html: Added.
- * BugsSite/docs/html/products.html: Added.
- * BugsSite/docs/html/query.html: Added.
- * BugsSite/docs/html/quips.html: Added.
- * BugsSite/docs/html/reporting.html: Added.
- * BugsSite/docs/html/security-bugzilla.html: Added.
- * BugsSite/docs/html/security-mysql.html: Added.
- * BugsSite/docs/html/security-os.html: Added.
- * BugsSite/docs/html/security-webserver.html: Added.
- * BugsSite/docs/html/security.html: Added.
- * BugsSite/docs/html/trbl-bundlebugzilla.html: Added.
- * BugsSite/docs/html/trbl-dbdsponge.html: Added.
- * BugsSite/docs/html/trbl-index.html: Added.
- * BugsSite/docs/html/trbl-passwd-encryption.html: Added.
- * BugsSite/docs/html/trbl-perlmodule.html: Added.
- * BugsSite/docs/html/trbl-relogin-everyone.html: Added.
- * BugsSite/docs/html/trbl-testserver.html: Added.
- * BugsSite/docs/html/trouble-filetemp.html: Added.
- * BugsSite/docs/html/troubleshooting.html: Added.
- * BugsSite/docs/html/upgrading.html: Added.
- * BugsSite/docs/html/useradmin.html: Added.
- * BugsSite/docs/html/userpreferences.html: Added.
- * BugsSite/docs/html/using-intro.html: Added.
- * BugsSite/docs/html/using.html: Added.
- * BugsSite/docs/html/versions.html: Added.
- * BugsSite/docs/html/voting.html: Added.
- * BugsSite/docs/html/whining.html: Added.
- * BugsSite/docs/html/x3190.html: Added.
- * BugsSite/docs/images: Added.
- * BugsSite/docs/images/bzLifecycle.png: Added.
- * BugsSite/docs/images/bzLifecycle.xml: Added.
- * BugsSite/docs/images/callouts: Added.
- * BugsSite/docs/images/callouts/1.gif: Added.
- * BugsSite/docs/images/callouts/2.gif: Added.
- * BugsSite/docs/images/callouts/3.gif: Added.
- * BugsSite/docs/images/caution.gif: Added.
- * BugsSite/docs/images/note.gif: Added.
- * BugsSite/docs/images/tip.gif: Added.
- * BugsSite/docs/images/warning.gif: Added.
- * BugsSite/docs/makedocs.pl: Added.
- * BugsSite/docs/pdf: Added.
- * BugsSite/docs/pdf/Bugzilla-Guide.pdf: Added.
- * BugsSite/docs/rel_notes.txt: Added.
- * BugsSite/docs/txt: Added.
- * BugsSite/docs/txt/Bugzilla-Guide.txt: Added.
- * BugsSite/docs/xml: Added.
- * BugsSite/docs/xml/Bugzilla-Guide.xml: Added.
- * BugsSite/docs/xml/about.xml: Added.
- * BugsSite/docs/xml/administration.xml: Added.
- * BugsSite/docs/xml/conventions.xml: Added.
- * BugsSite/docs/xml/customization.xml: Added.
- * BugsSite/docs/xml/dbschema.mysql: Added.
- * BugsSite/docs/xml/faq.xml: Added.
- * BugsSite/docs/xml/filetemp.patch: Added.
- * BugsSite/docs/xml/gfdl.xml: Added.
- * BugsSite/docs/xml/glossary.xml: Added.
- * BugsSite/docs/xml/index.xml: Added.
- * BugsSite/docs/xml/installation.xml: Added.
- * BugsSite/docs/xml/integration.xml: Added.
- * BugsSite/docs/xml/introduction.xml: Added.
- * BugsSite/docs/xml/modules.xml: Added.
- * BugsSite/docs/xml/patches.xml: Added.
- * BugsSite/docs/xml/requiredsoftware.xml: Added.
- * BugsSite/docs/xml/security.xml: Added.
- * BugsSite/docs/xml/troubleshooting.xml: Added.
- * BugsSite/docs/xml/using.xml: Added.
- * BugsSite/doeditparams.cgi: Added.
- * BugsSite/duplicates.cgi: Added.
- * BugsSite/duplicates.xul: Added.
- * BugsSite/editclassifications.cgi: Added.
- * BugsSite/editcomponents.cgi: Added.
- * BugsSite/editflagtypes.cgi: Added.
- * BugsSite/editgroups.cgi: Added.
- * BugsSite/editkeywords.cgi: Added.
- * BugsSite/editmilestones.cgi: Added.
- * BugsSite/editparams.cgi: Added.
- * BugsSite/editproducts.cgi: Added.
- * BugsSite/editsettings.cgi: Added.
- * BugsSite/editusers.cgi: Added.
- * BugsSite/editvalues.cgi: Added.
- * BugsSite/editversions.cgi: Added.
- * BugsSite/editwhines.cgi: Added.
- * BugsSite/enter_bug.cgi: Added.
- * BugsSite/favicon.ico: Added.
- * BugsSite/globals.pl: Added.
- * BugsSite/graphs: Added.
- * BugsSite/images: Added.
- * BugsSite/images/padlock.png: Added.
- * BugsSite/importxml.pl: Added.
- * BugsSite/index.cgi: Added.
- * BugsSite/js: Added.
- * BugsSite/js/duplicates.js: Added.
- * BugsSite/js/productform.js: Added.
- * BugsSite/localconfig.js: Added.
- * BugsSite/long_list.cgi: Added.
- * BugsSite/move.pl: Added.
- * BugsSite/page.cgi: Added.
- * BugsSite/post_bug.cgi: Added.
- * BugsSite/process_bug.cgi: Added.
- * BugsSite/productmenu.js: Added.
- * BugsSite/query.cgi: Added.
- * BugsSite/quicksearch.html: Added.
- * BugsSite/quicksearch.js: Added.
- * BugsSite/quicksearchhack.html: Added.
- * BugsSite/quips.cgi: Added.
- * BugsSite/relogin.cgi: Added.
- * BugsSite/report.cgi: Added.
- * BugsSite/reports.cgi: Added.
- * BugsSite/request.cgi: Added.
- * BugsSite/robots.txt: Added.
- * BugsSite/runtests.pl: Added.
- * BugsSite/sanitycheck.cgi: Added.
- * BugsSite/show_activity.cgi: Added.
- * BugsSite/show_bug.cgi: Added.
- * BugsSite/showattachment.cgi: Added.
- * BugsSite/showdependencygraph.cgi: Added.
- * BugsSite/showdependencytree.cgi: Added.
- * BugsSite/sidebar.cgi: Added.
- * BugsSite/skins: Added.
- * BugsSite/skins/.cvsignore: Added.
- * BugsSite/skins/custom: Added.
- * BugsSite/skins/custom/admin.css: Added.
- * BugsSite/skins/custom/buglist.css: Added.
- * BugsSite/skins/custom/duplicates.css: Added.
- * BugsSite/skins/custom/editusers.css: Added.
- * BugsSite/skins/custom/global.css: Added.
- * BugsSite/skins/custom/index.css: Added.
- * BugsSite/skins/custom/opendarwin.gif: Added.
- * BugsSite/skins/custom/panel.css: Added.
- * BugsSite/skins/custom/show_multiple.css: Added.
- * BugsSite/skins/custom/summarize-time.css: Added.
- * BugsSite/skins/custom/voting.css: Added.
- * BugsSite/skins/standard: Added.
- * BugsSite/skins/standard/admin.css: Added.
- * BugsSite/skins/standard/buglist.css: Added.
- * BugsSite/skins/standard/duplicates.css: Added.
- * BugsSite/skins/standard/editusers.css: Added.
- * BugsSite/skins/standard/global: Added.
- * BugsSite/skins/standard/global.css: Added.
- * BugsSite/skins/standard/global/body-back.gif: Added.
- * BugsSite/skins/standard/global/header.png: Added.
- * BugsSite/skins/standard/index: Added.
- * BugsSite/skins/standard/index.css: Added.
- * BugsSite/skins/standard/index/front.jpg: Added.
- * BugsSite/skins/standard/index/front.png: Added.
- * BugsSite/skins/standard/panel.css: Added.
- * BugsSite/skins/standard/show_multiple.css: Added.
- * BugsSite/skins/standard/summarize-time.css: Added.
- * BugsSite/skins/standard/voting.css: Added.
- * BugsSite/summarize_time.cgi: Added.
- * BugsSite/t: Added.
- * BugsSite/t/001compile.t: Added.
- * BugsSite/t/002goodperl.t: Added.
- * BugsSite/t/003safesys.t: Added.
- * BugsSite/t/004template.t: Added.
- * BugsSite/t/005no_tabs.t: Added.
- * BugsSite/t/006spellcheck.t: Added.
- * BugsSite/t/007util.t: Added.
- * BugsSite/t/008filter.t: Added.
- * BugsSite/t/009bugwords.t: Added.
- * BugsSite/t/011pod.t: Added.
- * BugsSite/t/Support: Added.
- * BugsSite/t/Support/Files.pm: Added.
- * BugsSite/t/Support/Systemexec.pm: Added.
- * BugsSite/t/Support/Templates.pm: Added.
- * BugsSite/t/testchart.gif: Added.
- * BugsSite/t/testchart.png: Added.
- * BugsSite/t/testgd.png: Added.
- * BugsSite/template: Added.
- * BugsSite/template/.cvsignore: Added.
- * BugsSite/template/.htaccess: Added.
- * BugsSite/template/en: Added.
- * BugsSite/template/en/.cvsignore: Added.
- * BugsSite/template/en/custom: Added.
- * BugsSite/template/en/custom/account: Added.
- * BugsSite/template/en/custom/account/auth: Added.
- * BugsSite/template/en/custom/account/auth/ldap-error.html.tmpl: Added.
- * BugsSite/template/en/custom/account/auth/login-small.html.tmpl: Added.
- * BugsSite/template/en/custom/account/auth/login.html.tmpl: Added.
- * BugsSite/template/en/custom/account/cancel-token.txt.tmpl: Added.
- * BugsSite/template/en/custom/account/create.html.tmpl: Added.
- * BugsSite/template/en/custom/account/created.html.tmpl: Added.
- * BugsSite/template/en/custom/account/email: Added.
- * BugsSite/template/en/custom/account/email/change-new.txt.tmpl: Added.
- * BugsSite/template/en/custom/account/email/change-old.txt.tmpl: Added.
- * BugsSite/template/en/custom/account/email/confirm.html.tmpl: Added.
- * BugsSite/template/en/custom/account/exists.html.tmpl: Added.
- * BugsSite/template/en/custom/account/password: Added.
- * BugsSite/template/en/custom/account/password/forgotten-password.txt.tmpl: Added.
- * BugsSite/template/en/custom/account/password/set-forgotten-password.html.tmpl: Added.
- * BugsSite/template/en/custom/account/prefs: Added.
- * BugsSite/template/en/custom/account/prefs/account.html.tmpl: Added.
- * BugsSite/template/en/custom/account/prefs/email.html.tmpl: Added.
- * BugsSite/template/en/custom/account/prefs/footer.html.tmpl: Added.
- * BugsSite/template/en/custom/account/prefs/permissions.html.tmpl: Added.
- * BugsSite/template/en/custom/account/prefs/prefs.html.tmpl: Added.
- * BugsSite/template/en/custom/account/prefs/saved-searches.html.tmpl: Added.
- * BugsSite/template/en/custom/account/prefs/settings.html.tmpl: Added.
- * BugsSite/template/en/custom/admin: Added.
- * BugsSite/template/en/custom/admin/classifications: Added.
- * BugsSite/template/en/custom/admin/classifications/add.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/classifications/del.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/classifications/delete.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/classifications/edit.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/classifications/new.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/classifications/reclassify.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/classifications/select.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/classifications/update.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/components: Added.
- * BugsSite/template/en/custom/admin/components/confirm-delete.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/components/create.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/components/created.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/components/deleted.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/components/edit.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/components/footer.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/components/list.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/components/select-product.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/components/updated.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/fieldvalues: Added.
- * BugsSite/template/en/custom/admin/fieldvalues/confirm-delete.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/fieldvalues/create.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/fieldvalues/created.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/fieldvalues/deleted.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/fieldvalues/edit.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/fieldvalues/footer.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/fieldvalues/list.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/fieldvalues/select-field.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/fieldvalues/updated.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/flag-type: Added.
- * BugsSite/template/en/custom/admin/flag-type/confirm-delete.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/flag-type/edit.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/flag-type/list.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/groups: Added.
- * BugsSite/template/en/custom/admin/groups/change.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/groups/create.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/groups/created.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/groups/delete.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/groups/deleted.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/groups/edit.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/groups/list.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/groups/remove.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/keywords: Added.
- * BugsSite/template/en/custom/admin/keywords/confirm-delete.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/keywords/create.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/keywords/created.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/keywords/edit.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/keywords/list.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/keywords/rebuild-cache.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/milestones: Added.
- * BugsSite/template/en/custom/admin/milestones/confirm-delete.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/milestones/create.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/milestones/created.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/milestones/deleted.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/milestones/edit.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/milestones/footer.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/milestones/list.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/milestones/select-product.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/milestones/updated.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/products: Added.
- * BugsSite/template/en/custom/admin/products/confirm-delete.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/products/deleted.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/products/footer.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/products/groupcontrol: Added.
- * BugsSite/template/en/custom/admin/products/groupcontrol/confirm-edit.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/products/groupcontrol/edit.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/products/list-classifications.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/products/list.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/settings: Added.
- * BugsSite/template/en/custom/admin/settings/edit.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/settings/updated.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/table.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/users: Added.
- * BugsSite/template/en/custom/admin/users/confirm-delete.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/users/create.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/users/edit.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/users/list.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/users/listselectvars.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/users/search.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/users/userdata.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/versions: Added.
- * BugsSite/template/en/custom/admin/versions/confirm-delete.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/versions/create.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/versions/created.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/versions/deleted.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/versions/edit.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/versions/footer.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/versions/list.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/versions/select-product.html.tmpl: Added.
- * BugsSite/template/en/custom/admin/versions/updated.html.tmpl: Added.
- * BugsSite/template/en/custom/attachment: Added.
- * BugsSite/template/en/custom/attachment/choose.html.tmpl: Added.
- * BugsSite/template/en/custom/attachment/content-types.html.tmpl: Added.
- * BugsSite/template/en/custom/attachment/create.html.tmpl: Added.
- * BugsSite/template/en/custom/attachment/created.html.tmpl: Added.
- * BugsSite/template/en/custom/attachment/diff-file.html.tmpl: Added.
- * BugsSite/template/en/custom/attachment/diff-footer.html.tmpl: Added.
- * BugsSite/template/en/custom/attachment/diff-header.html.tmpl: Added.
- * BugsSite/template/en/custom/attachment/edit.html.tmpl: Added.
- * BugsSite/template/en/custom/attachment/list.html.tmpl: Added.
- * BugsSite/template/en/custom/attachment/show-multiple.html.tmpl: Added.
- * BugsSite/template/en/custom/attachment/updated.html.tmpl: Added.
- * BugsSite/template/en/custom/bug: Added.
- * BugsSite/template/en/custom/bug/activity: Added.
- * BugsSite/template/en/custom/bug/activity/show.html.tmpl: Added.
- * BugsSite/template/en/custom/bug/activity/table.html.tmpl: Added.
- * BugsSite/template/en/custom/bug/choose.html.tmpl: Added.
- * BugsSite/template/en/custom/bug/comments.html.tmpl: Added.
- * BugsSite/template/en/custom/bug/create: Added.
- * BugsSite/template/en/custom/bug/create/comment-guided.txt.tmpl: Added.
- * BugsSite/template/en/custom/bug/create/comment.txt.tmpl: Added.
- * BugsSite/template/en/custom/bug/create/create-guided.html.tmpl: Added.
- * BugsSite/template/en/custom/bug/create/create.html.tmpl: Added.
- * BugsSite/template/en/custom/bug/create/created.html.tmpl: Added.
- * BugsSite/template/en/custom/bug/create/make-template.html.tmpl: Added.
- * BugsSite/template/en/custom/bug/create/user-message.html.tmpl: Added.
- * BugsSite/template/en/custom/bug/dependency-graph.html.tmpl: Added.
- * BugsSite/template/en/custom/bug/dependency-tree.html.tmpl: Added.
- * BugsSite/template/en/custom/bug/edit.html.tmpl: Added.
- * BugsSite/template/en/custom/bug/knob.html.tmpl: Added.
- * BugsSite/template/en/custom/bug/navigate.html.tmpl: Added.
- * BugsSite/template/en/custom/bug/process: Added.
- * BugsSite/template/en/custom/bug/process/bugmail.html.tmpl: Added.
- * BugsSite/template/en/custom/bug/process/confirm-duplicate.html.tmpl: Added.
- * BugsSite/template/en/custom/bug/process/header.html.tmpl: Added.
- * BugsSite/template/en/custom/bug/process/midair.html.tmpl: Added.
- * BugsSite/template/en/custom/bug/process/next.html.tmpl: Added.
- * BugsSite/template/en/custom/bug/process/results.html.tmpl: Added.
- * BugsSite/template/en/custom/bug/process/verify-new-product.html.tmpl: Added.
- * BugsSite/template/en/custom/bug/show-multiple.html.tmpl: Added.
- * BugsSite/template/en/custom/bug/show.html.tmpl: Added.
- * BugsSite/template/en/custom/bug/show.xml.tmpl: Added.
- * BugsSite/template/en/custom/bug/summarize-time.html.tmpl: Added.
- * BugsSite/template/en/custom/bug/time.html.tmpl: Added.
- * BugsSite/template/en/custom/bug/votes: Added.
- * BugsSite/template/en/custom/bug/votes/delete-all.html.tmpl: Added.
- * BugsSite/template/en/custom/bug/votes/list-for-bug.html.tmpl: Added.
- * BugsSite/template/en/custom/bug/votes/list-for-user.html.tmpl: Added.
- * BugsSite/template/en/custom/config.js.tmpl: Added.
- * BugsSite/template/en/custom/config.rdf.tmpl: Added.
- * BugsSite/template/en/custom/filterexceptions.pl: Added.
- * BugsSite/template/en/custom/flag: Added.
- * BugsSite/template/en/custom/flag/list.html.tmpl: Added.
- * BugsSite/template/en/custom/global: Added.
- * BugsSite/template/en/custom/global/banner.html.tmpl: Added.
- * BugsSite/template/en/custom/global/choose-classification.html.tmpl: Added.
- * BugsSite/template/en/custom/global/choose-product.html.tmpl: Added.
- * BugsSite/template/en/custom/global/code-error.html.tmpl: Added.
- * BugsSite/template/en/custom/global/confirm-user-match.html.tmpl: Added.
- * BugsSite/template/en/custom/global/field-descs.none.tmpl: Added.
- * BugsSite/template/en/custom/global/footer.html.tmpl: Added.
- * BugsSite/template/en/custom/global/header.html.tmpl: Added.
- * BugsSite/template/en/custom/global/help-header.html.tmpl: Added.
- * BugsSite/template/en/custom/global/help.html.tmpl: Added.
- * BugsSite/template/en/custom/global/hidden-fields.html.tmpl: Added.
- * BugsSite/template/en/custom/global/initialize.none.tmpl: Added.
- * BugsSite/template/en/custom/global/message.html.tmpl: Added.
- * BugsSite/template/en/custom/global/messages.html.tmpl: Added.
- * BugsSite/template/en/custom/global/select-menu.html.tmpl: Added.
- * BugsSite/template/en/custom/global/setting-descs.none.tmpl: Added.
- * BugsSite/template/en/custom/global/site-navigation.html.tmpl: Added.
- * BugsSite/template/en/custom/global/useful-links.html.tmpl: Added.
- * BugsSite/template/en/custom/global/user-error.html.tmpl: Added.
- * BugsSite/template/en/custom/global/userselect.html.tmpl: Added.
- * BugsSite/template/en/custom/global/variables.none.tmpl: Added.
- * BugsSite/template/en/custom/index.html.tmpl: Added.
- * BugsSite/template/en/custom/list: Added.
- * BugsSite/template/en/custom/list/change-columns.html.tmpl: Added.
- * BugsSite/template/en/custom/list/edit-multiple.html.tmpl: Added.
- * BugsSite/template/en/custom/list/list-simple.html.tmpl: Added.
- * BugsSite/template/en/custom/list/list.csv.tmpl: Added.
- * BugsSite/template/en/custom/list/list.html.tmpl: Added.
- * BugsSite/template/en/custom/list/list.ics.tmpl: Added.
- * BugsSite/template/en/custom/list/list.js.tmpl: Added.
- * BugsSite/template/en/custom/list/list.rdf.tmpl: Added.
- * BugsSite/template/en/custom/list/list.rss.tmpl: Added.
- * BugsSite/template/en/custom/list/quips.html.tmpl: Added.
- * BugsSite/template/en/custom/list/server-push.html.tmpl: Added.
- * BugsSite/template/en/custom/list/table.html.tmpl: Added.
- * BugsSite/template/en/custom/pages: Added.
- * BugsSite/template/en/custom/pages/bug-writing.html.tmpl: Added.
- * BugsSite/template/en/custom/pages/fields.html.tmpl: Added.
- * BugsSite/template/en/custom/pages/linked.html.tmpl: Added.
- * BugsSite/template/en/custom/pages/linkify.html.tmpl: Added.
- * BugsSite/template/en/custom/pages/voting.html.tmpl: Added.
- * BugsSite/template/en/custom/reports: Added.
- * BugsSite/template/en/custom/reports/chart.csv.tmpl: Added.
- * BugsSite/template/en/custom/reports/chart.html.tmpl: Added.
- * BugsSite/template/en/custom/reports/chart.png.tmpl: Added.
- * BugsSite/template/en/custom/reports/components.html.tmpl: Added.
- * BugsSite/template/en/custom/reports/create-chart.html.tmpl: Added.
- * BugsSite/template/en/custom/reports/duplicates-simple.html.tmpl: Added.
- * BugsSite/template/en/custom/reports/duplicates-table.html.tmpl: Added.
- * BugsSite/template/en/custom/reports/duplicates.html.tmpl: Added.
- * BugsSite/template/en/custom/reports/duplicates.rdf.tmpl: Added.
- * BugsSite/template/en/custom/reports/edit-series.html.tmpl: Added.
- * BugsSite/template/en/custom/reports/keywords.html.tmpl: Added.
- * BugsSite/template/en/custom/reports/menu.html.tmpl: Added.
- * BugsSite/template/en/custom/reports/report-bar.png.tmpl: Added.
- * BugsSite/template/en/custom/reports/report-line.png.tmpl: Added.
- * BugsSite/template/en/custom/reports/report-pie.png.tmpl: Added.
- * BugsSite/template/en/custom/reports/report-simple.html.tmpl: Added.
- * BugsSite/template/en/custom/reports/report-table.csv.tmpl: Added.
- * BugsSite/template/en/custom/reports/report-table.html.tmpl: Added.
- * BugsSite/template/en/custom/reports/report.csv.tmpl: Added.
- * BugsSite/template/en/custom/reports/report.html.tmpl: Added.
- * BugsSite/template/en/custom/reports/series-common.html.tmpl: Added.
- * BugsSite/template/en/custom/reports/series.html.tmpl: Added.
- * BugsSite/template/en/custom/request: Added.
- * BugsSite/template/en/custom/request/email.txt.tmpl: Added.
- * BugsSite/template/en/custom/request/queue.html.tmpl: Added.
- * BugsSite/template/en/custom/search: Added.
- * BugsSite/template/en/custom/search/boolean-charts.html.tmpl: Added.
- * BugsSite/template/en/custom/search/form.html.tmpl: Added.
- * BugsSite/template/en/custom/search/knob.html.tmpl: Added.
- * BugsSite/template/en/custom/search/search-advanced.html.tmpl: Added.
- * BugsSite/template/en/custom/search/search-create-series.html.tmpl: Added.
- * BugsSite/template/en/custom/search/search-help.html.tmpl: Added.
- * BugsSite/template/en/custom/search/search-report-graph.html.tmpl: Added.
- * BugsSite/template/en/custom/search/search-report-select.html.tmpl: Added.
- * BugsSite/template/en/custom/search/search-report-table.html.tmpl: Added.
- * BugsSite/template/en/custom/search/search-specific.html.tmpl: Added.
- * BugsSite/template/en/custom/search/tabs.html.tmpl: Added.
- * BugsSite/template/en/custom/sidebar.xul.tmpl: Added.
- * BugsSite/template/en/custom/whine: Added.
- * BugsSite/template/en/custom/whine/mail.html.tmpl: Added.
- * BugsSite/template/en/custom/whine/mail.txt.tmpl: Added.
- * BugsSite/template/en/custom/whine/multipart-mime.txt.tmpl: Added.
- * BugsSite/template/en/custom/whine/schedule.html.tmpl: Added.
- * BugsSite/template/en/default: Added.
- * BugsSite/template/en/default/account: Added.
- * BugsSite/template/en/default/account/auth: Added.
- * BugsSite/template/en/default/account/auth/ldap-error.html.tmpl: Added.
- * BugsSite/template/en/default/account/auth/login-small.html.tmpl: Added.
- * BugsSite/template/en/default/account/auth/login.html.tmpl: Added.
- * BugsSite/template/en/default/account/cancel-token.txt.tmpl: Added.
- * BugsSite/template/en/default/account/create.html.tmpl: Added.
- * BugsSite/template/en/default/account/created.html.tmpl: Added.
- * BugsSite/template/en/default/account/email: Added.
- * BugsSite/template/en/default/account/email/change-new.txt.tmpl: Added.
- * BugsSite/template/en/default/account/email/change-old.txt.tmpl: Added.
- * BugsSite/template/en/default/account/email/confirm.html.tmpl: Added.
- * BugsSite/template/en/default/account/exists.html.tmpl: Added.
- * BugsSite/template/en/default/account/password: Added.
- * BugsSite/template/en/default/account/password/forgotten-password.txt.tmpl: Added.
- * BugsSite/template/en/default/account/password/set-forgotten-password.html.tmpl: Added.
- * BugsSite/template/en/default/account/prefs: Added.
- * BugsSite/template/en/default/account/prefs/account.html.tmpl: Added.
- * BugsSite/template/en/default/account/prefs/email.html.tmpl: Added.
- * BugsSite/template/en/default/account/prefs/footer.html.tmpl: Added.
- * BugsSite/template/en/default/account/prefs/permissions.html.tmpl: Added.
- * BugsSite/template/en/default/account/prefs/prefs.html.tmpl: Added.
- * BugsSite/template/en/default/account/prefs/saved-searches.html.tmpl: Added.
- * BugsSite/template/en/default/account/prefs/settings.html.tmpl: Added.
- * BugsSite/template/en/default/admin: Added.
- * BugsSite/template/en/default/admin/classifications: Added.
- * BugsSite/template/en/default/admin/classifications/add.html.tmpl: Added.
- * BugsSite/template/en/default/admin/classifications/del.html.tmpl: Added.
- * BugsSite/template/en/default/admin/classifications/delete.html.tmpl: Added.
- * BugsSite/template/en/default/admin/classifications/edit.html.tmpl: Added.
- * BugsSite/template/en/default/admin/classifications/new.html.tmpl: Added.
- * BugsSite/template/en/default/admin/classifications/reclassify.html.tmpl: Added.
- * BugsSite/template/en/default/admin/classifications/select.html.tmpl: Added.
- * BugsSite/template/en/default/admin/classifications/update.html.tmpl: Added.
- * BugsSite/template/en/default/admin/components: Added.
- * BugsSite/template/en/default/admin/components/confirm-delete.html.tmpl: Added.
- * BugsSite/template/en/default/admin/components/create.html.tmpl: Added.
- * BugsSite/template/en/default/admin/components/created.html.tmpl: Added.
- * BugsSite/template/en/default/admin/components/deleted.html.tmpl: Added.
- * BugsSite/template/en/default/admin/components/edit.html.tmpl: Added.
- * BugsSite/template/en/default/admin/components/footer.html.tmpl: Added.
- * BugsSite/template/en/default/admin/components/list.html.tmpl: Added.
- * BugsSite/template/en/default/admin/components/select-product.html.tmpl: Added.
- * BugsSite/template/en/default/admin/components/updated.html.tmpl: Added.
- * BugsSite/template/en/default/admin/fieldvalues: Added.
- * BugsSite/template/en/default/admin/fieldvalues/confirm-delete.html.tmpl: Added.
- * BugsSite/template/en/default/admin/fieldvalues/create.html.tmpl: Added.
- * BugsSite/template/en/default/admin/fieldvalues/created.html.tmpl: Added.
- * BugsSite/template/en/default/admin/fieldvalues/deleted.html.tmpl: Added.
- * BugsSite/template/en/default/admin/fieldvalues/edit.html.tmpl: Added.
- * BugsSite/template/en/default/admin/fieldvalues/footer.html.tmpl: Added.
- * BugsSite/template/en/default/admin/fieldvalues/list.html.tmpl: Added.
- * BugsSite/template/en/default/admin/fieldvalues/select-field.html.tmpl: Added.
- * BugsSite/template/en/default/admin/fieldvalues/updated.html.tmpl: Added.
- * BugsSite/template/en/default/admin/flag-type: Added.
- * BugsSite/template/en/default/admin/flag-type/confirm-delete.html.tmpl: Added.
- * BugsSite/template/en/default/admin/flag-type/edit.html.tmpl: Added.
- * BugsSite/template/en/default/admin/flag-type/list.html.tmpl: Added.
- * BugsSite/template/en/default/admin/groups: Added.
- * BugsSite/template/en/default/admin/groups/change.html.tmpl: Added.
- * BugsSite/template/en/default/admin/groups/create.html.tmpl: Added.
- * BugsSite/template/en/default/admin/groups/created.html.tmpl: Added.
- * BugsSite/template/en/default/admin/groups/delete.html.tmpl: Added.
- * BugsSite/template/en/default/admin/groups/deleted.html.tmpl: Added.
- * BugsSite/template/en/default/admin/groups/edit.html.tmpl: Added.
- * BugsSite/template/en/default/admin/groups/list.html.tmpl: Added.
- * BugsSite/template/en/default/admin/groups/remove.html.tmpl: Added.
- * BugsSite/template/en/default/admin/keywords: Added.
- * BugsSite/template/en/default/admin/keywords/confirm-delete.html.tmpl: Added.
- * BugsSite/template/en/default/admin/keywords/create.html.tmpl: Added.
- * BugsSite/template/en/default/admin/keywords/created.html.tmpl: Added.
- * BugsSite/template/en/default/admin/keywords/edit.html.tmpl: Added.
- * BugsSite/template/en/default/admin/keywords/list.html.tmpl: Added.
- * BugsSite/template/en/default/admin/keywords/rebuild-cache.html.tmpl: Added.
- * BugsSite/template/en/default/admin/milestones: Added.
- * BugsSite/template/en/default/admin/milestones/confirm-delete.html.tmpl: Added.
- * BugsSite/template/en/default/admin/milestones/create.html.tmpl: Added.
- * BugsSite/template/en/default/admin/milestones/created.html.tmpl: Added.
- * BugsSite/template/en/default/admin/milestones/deleted.html.tmpl: Added.
- * BugsSite/template/en/default/admin/milestones/edit.html.tmpl: Added.
- * BugsSite/template/en/default/admin/milestones/footer.html.tmpl: Added.
- * BugsSite/template/en/default/admin/milestones/list.html.tmpl: Added.
- * BugsSite/template/en/default/admin/milestones/select-product.html.tmpl: Added.
- * BugsSite/template/en/default/admin/milestones/updated.html.tmpl: Added.
- * BugsSite/template/en/default/admin/products: Added.
- * BugsSite/template/en/default/admin/products/confirm-delete.html.tmpl: Added.
- * BugsSite/template/en/default/admin/products/deleted.html.tmpl: Added.
- * BugsSite/template/en/default/admin/products/footer.html.tmpl: Added.
- * BugsSite/template/en/default/admin/products/groupcontrol: Added.
- * BugsSite/template/en/default/admin/products/groupcontrol/confirm-edit.html.tmpl: Added.
- * BugsSite/template/en/default/admin/products/groupcontrol/edit.html.tmpl: Added.
- * BugsSite/template/en/default/admin/products/list-classifications.html.tmpl: Added.
- * BugsSite/template/en/default/admin/products/list.html.tmpl: Added.
- * BugsSite/template/en/default/admin/settings: Added.
- * BugsSite/template/en/default/admin/settings/edit.html.tmpl: Added.
- * BugsSite/template/en/default/admin/settings/updated.html.tmpl: Added.
- * BugsSite/template/en/default/admin/table.html.tmpl: Added.
- * BugsSite/template/en/default/admin/users: Added.
- * BugsSite/template/en/default/admin/users/confirm-delete.html.tmpl: Added.
- * BugsSite/template/en/default/admin/users/create.html.tmpl: Added.
- * BugsSite/template/en/default/admin/users/edit.html.tmpl: Added.
- * BugsSite/template/en/default/admin/users/list.html.tmpl: Added.
- * BugsSite/template/en/default/admin/users/listselectvars.html.tmpl: Added.
- * BugsSite/template/en/default/admin/users/search.html.tmpl: Added.
- * BugsSite/template/en/default/admin/users/userdata.html.tmpl: Added.
- * BugsSite/template/en/default/admin/versions: Added.
- * BugsSite/template/en/default/admin/versions/confirm-delete.html.tmpl: Added.
- * BugsSite/template/en/default/admin/versions/create.html.tmpl: Added.
- * BugsSite/template/en/default/admin/versions/created.html.tmpl: Added.
- * BugsSite/template/en/default/admin/versions/deleted.html.tmpl: Added.
- * BugsSite/template/en/default/admin/versions/edit.html.tmpl: Added.
- * BugsSite/template/en/default/admin/versions/footer.html.tmpl: Added.
- * BugsSite/template/en/default/admin/versions/list.html.tmpl: Added.
- * BugsSite/template/en/default/admin/versions/select-product.html.tmpl: Added.
- * BugsSite/template/en/default/admin/versions/updated.html.tmpl: Added.
- * BugsSite/template/en/default/attachment: Added.
- * BugsSite/template/en/default/attachment/choose.html.tmpl: Added.
- * BugsSite/template/en/default/attachment/content-types.html.tmpl: Added.
- * BugsSite/template/en/default/attachment/create.html.tmpl: Added.
- * BugsSite/template/en/default/attachment/created.html.tmpl: Added.
- * BugsSite/template/en/default/attachment/diff-file.html.tmpl: Added.
- * BugsSite/template/en/default/attachment/diff-footer.html.tmpl: Added.
- * BugsSite/template/en/default/attachment/diff-header.html.tmpl: Added.
- * BugsSite/template/en/default/attachment/edit-aroben.html.tmpl: Added.
- * BugsSite/template/en/default/attachment/edit.html.tmpl: Added.
- * BugsSite/template/en/default/attachment/list.html.tmpl: Added.
- * BugsSite/template/en/default/attachment/show-multiple.html.tmpl: Added.
- * BugsSite/template/en/default/attachment/updated.html.tmpl: Added.
- * BugsSite/template/en/default/bug: Added.
- * BugsSite/template/en/default/bug/activity: Added.
- * BugsSite/template/en/default/bug/activity/show.html.tmpl: Added.
- * BugsSite/template/en/default/bug/activity/table.html.tmpl: Added.
- * BugsSite/template/en/default/bug/choose.html.tmpl: Added.
- * BugsSite/template/en/default/bug/comments.html.tmpl: Added.
- * BugsSite/template/en/default/bug/create: Added.
- * BugsSite/template/en/default/bug/create/comment-guided.txt.tmpl: Added.
- * BugsSite/template/en/default/bug/create/comment.txt.tmpl: Added.
- * BugsSite/template/en/default/bug/create/create-guided.html.tmpl: Added.
- * BugsSite/template/en/default/bug/create/create.html.tmpl: Added.
- * BugsSite/template/en/default/bug/create/created.html.tmpl: Added.
- * BugsSite/template/en/default/bug/create/make-template.html.tmpl: Added.
- * BugsSite/template/en/default/bug/create/user-message.html.tmpl: Added.
- * BugsSite/template/en/default/bug/dependency-graph.html.tmpl: Added.
- * BugsSite/template/en/default/bug/dependency-tree.html.tmpl: Added.
- * BugsSite/template/en/default/bug/edit.html.tmpl: Added.
- * BugsSite/template/en/default/bug/knob.html.tmpl: Added.
- * BugsSite/template/en/default/bug/navigate.html.tmpl: Added.
- * BugsSite/template/en/default/bug/process: Added.
- * BugsSite/template/en/default/bug/process/bugmail.html.tmpl: Added.
- * BugsSite/template/en/default/bug/process/confirm-duplicate.html.tmpl: Added.
- * BugsSite/template/en/default/bug/process/header.html.tmpl: Added.
- * BugsSite/template/en/default/bug/process/midair.html.tmpl: Added.
- * BugsSite/template/en/default/bug/process/next.html.tmpl: Added.
- * BugsSite/template/en/default/bug/process/results.html.tmpl: Added.
- * BugsSite/template/en/default/bug/process/verify-new-product.html.tmpl: Added.
- * BugsSite/template/en/default/bug/show-multiple.html.tmpl: Added.
- * BugsSite/template/en/default/bug/show.html.tmpl: Added.
- * BugsSite/template/en/default/bug/show.xml.tmpl: Added.
- * BugsSite/template/en/default/bug/summarize-time.html.tmpl: Added.
- * BugsSite/template/en/default/bug/time.html.tmpl: Added.
- * BugsSite/template/en/default/bug/votes: Added.
- * BugsSite/template/en/default/bug/votes/delete-all.html.tmpl: Added.
- * BugsSite/template/en/default/bug/votes/list-for-bug.html.tmpl: Added.
- * BugsSite/template/en/default/bug/votes/list-for-user.html.tmpl: Added.
- * BugsSite/template/en/default/config.js.tmpl: Added.
- * BugsSite/template/en/default/config.rdf.tmpl: Added.
- * BugsSite/template/en/default/filterexceptions.pl: Added.
- * BugsSite/template/en/default/flag: Added.
- * BugsSite/template/en/default/flag/list.html.tmpl: Added.
- * BugsSite/template/en/default/global: Added.
- * BugsSite/template/en/default/global/banner.html.tmpl: Added.
- * BugsSite/template/en/default/global/choose-classification.html.tmpl: Added.
- * BugsSite/template/en/default/global/choose-product.html.tmpl: Added.
- * BugsSite/template/en/default/global/code-error.html.tmpl: Added.
- * BugsSite/template/en/default/global/confirm-user-match.html.tmpl: Added.
- * BugsSite/template/en/default/global/field-descs.none.tmpl: Added.
- * BugsSite/template/en/default/global/footer.html.tmpl: Added.
- * BugsSite/template/en/default/global/header.html.tmpl: Added.
- * BugsSite/template/en/default/global/help-header.html.tmpl: Added.
- * BugsSite/template/en/default/global/help.html.tmpl: Added.
- * BugsSite/template/en/default/global/hidden-fields.html.tmpl: Added.
- * BugsSite/template/en/default/global/initialize.none.tmpl: Added.
- * BugsSite/template/en/default/global/message.html.tmpl: Added.
- * BugsSite/template/en/default/global/messages.html.tmpl: Added.
- * BugsSite/template/en/default/global/select-menu.html.tmpl: Added.
- * BugsSite/template/en/default/global/setting-descs.none.tmpl: Added.
- * BugsSite/template/en/default/global/site-navigation.html.tmpl: Added.
- * BugsSite/template/en/default/global/useful-links.html.tmpl: Added.
- * BugsSite/template/en/default/global/user-error.html.tmpl: Added.
- * BugsSite/template/en/default/global/userselect.html.tmpl: Added.
- * BugsSite/template/en/default/global/variables.none.tmpl: Added.
- * BugsSite/template/en/default/index.html.tmpl: Added.
- * BugsSite/template/en/default/list: Added.
- * BugsSite/template/en/default/list/change-columns.html.tmpl: Added.
- * BugsSite/template/en/default/list/edit-multiple.html.tmpl: Added.
- * BugsSite/template/en/default/list/list-simple.html.tmpl: Added.
- * BugsSite/template/en/default/list/list.atom.tmpl: Added.
- * BugsSite/template/en/default/list/list.csv.tmpl: Added.
- * BugsSite/template/en/default/list/list.html.tmpl: Added.
- * BugsSite/template/en/default/list/list.ics.tmpl: Added.
- * BugsSite/template/en/default/list/list.js.tmpl: Added.
- * BugsSite/template/en/default/list/list.rdf.tmpl: Added.
- * BugsSite/template/en/default/list/quips.html.tmpl: Added.
- * BugsSite/template/en/default/list/server-push.html.tmpl: Added.
- * BugsSite/template/en/default/list/table.html.tmpl: Added.
- * BugsSite/template/en/default/pages: Added.
- * BugsSite/template/en/default/pages/bug-writing.html.tmpl: Added.
- * BugsSite/template/en/default/pages/fields.html.tmpl: Added.
- * BugsSite/template/en/default/pages/linked.html.tmpl: Added.
- * BugsSite/template/en/default/pages/linkify.html.tmpl: Added.
- * BugsSite/template/en/default/pages/voting.html.tmpl: Added.
- * BugsSite/template/en/default/reports: Added.
- * BugsSite/template/en/default/reports/chart.csv.tmpl: Added.
- * BugsSite/template/en/default/reports/chart.html.tmpl: Added.
- * BugsSite/template/en/default/reports/chart.png.tmpl: Added.
- * BugsSite/template/en/default/reports/components.html.tmpl: Added.
- * BugsSite/template/en/default/reports/create-chart.html.tmpl: Added.
- * BugsSite/template/en/default/reports/duplicates-simple.html.tmpl: Added.
- * BugsSite/template/en/default/reports/duplicates-table.html.tmpl: Added.
- * BugsSite/template/en/default/reports/duplicates.html.tmpl: Added.
- * BugsSite/template/en/default/reports/duplicates.rdf.tmpl: Added.
- * BugsSite/template/en/default/reports/edit-series.html.tmpl: Added.
- * BugsSite/template/en/default/reports/keywords.html.tmpl: Added.
- * BugsSite/template/en/default/reports/menu.html.tmpl: Added.
- * BugsSite/template/en/default/reports/report-bar.png.tmpl: Added.
- * BugsSite/template/en/default/reports/report-line.png.tmpl: Added.
- * BugsSite/template/en/default/reports/report-pie.png.tmpl: Added.
- * BugsSite/template/en/default/reports/report-simple.html.tmpl: Added.
- * BugsSite/template/en/default/reports/report-table.csv.tmpl: Added.
- * BugsSite/template/en/default/reports/report-table.html.tmpl: Added.
- * BugsSite/template/en/default/reports/report.csv.tmpl: Added.
- * BugsSite/template/en/default/reports/report.html.tmpl: Added.
- * BugsSite/template/en/default/reports/series-common.html.tmpl: Added.
- * BugsSite/template/en/default/reports/series.html.tmpl: Added.
- * BugsSite/template/en/default/request: Added.
- * BugsSite/template/en/default/request/email.txt.tmpl: Added.
- * BugsSite/template/en/default/request/queue.html.tmpl: Added.
- * BugsSite/template/en/default/search: Added.
- * BugsSite/template/en/default/search/boolean-charts.html.tmpl: Added.
- * BugsSite/template/en/default/search/form.html.tmpl: Added.
- * BugsSite/template/en/default/search/knob.html.tmpl: Added.
- * BugsSite/template/en/default/search/search-advanced.html.tmpl: Added.
- * BugsSite/template/en/default/search/search-create-series.html.tmpl: Added.
- * BugsSite/template/en/default/search/search-help.html.tmpl: Added.
- * BugsSite/template/en/default/search/search-report-graph.html.tmpl: Added.
- * BugsSite/template/en/default/search/search-report-select.html.tmpl: Added.
- * BugsSite/template/en/default/search/search-report-table.html.tmpl: Added.
- * BugsSite/template/en/default/search/search-specific.html.tmpl: Added.
- * BugsSite/template/en/default/search/tabs.html.tmpl: Added.
- * BugsSite/template/en/default/sidebar.xul.tmpl: Added.
- * BugsSite/template/en/default/whine: Added.
- * BugsSite/template/en/default/whine/mail.html.tmpl: Added.
- * BugsSite/template/en/default/whine/mail.txt.tmpl: Added.
- * BugsSite/template/en/default/whine/multipart-mime.txt.tmpl: Added.
- * BugsSite/template/en/default/whine/schedule.html.tmpl: Added.
- * BugsSite/template/en/extension: Added.
- * BugsSite/template/en/extension/filterexceptions.pl: Added.
- * BugsSite/testagent.cgi: Added.
- * BugsSite/testserver.pl: Added.
- * BugsSite/token.cgi: Added.
- * BugsSite/userprefs.cgi: Added.
- * BugsSite/votes.cgi: Added.
- * BugsSite/whine.pl: Added.
- * BugsSite/whineatnews.pl: Added.
- * BugsSite/xml.cgi: Added.
-
-2008-02-04 Jan Michael Alonzo <jmalonzo@unpluggable.com>
-
- Reviewed by Alp Toker and Mark Rowe.
-
- http://bugs.webkit.org/show_bug.cgi?id=16618
- [GTK] build-webkit and run-webkit-tests autootools support
-
- Add support for the autotools build to the WebKit build and test
- scripts.
-
-2008-02-04 Rodney Dawes <dobey@wayofthemonkey.com>
-
- Reviewed by Alp Toker and Mark Rowe.
-
- Fix http://bugs.webkit.org/show_bug.cgi?id=17175.
- Bug 17175: Use of C++ compiler flags in CFLAGS
-
- Add global_cxxflags definition for inclusion in CXXFLAGS variables.
- Only use -fno-rtti and $(SYMBOL_VISIBILITY_INLINES) with global_cxxflags as gcc complains they aren't valid for C.
-
- * GNUmakefile.am:
-
-2008-02-04 Alp Toker <alp@atoker.com>
-
- Rubber-stamped by Mark Rowe.
-
- Remove all trailing whitespace in the GTK+ port and related
- components.
-
- * GNUmakefile.am:
- * configure.ac:
-
-2008-01-31 Alp Toker <alp@atoker.com>
-
- Reviewed by Mark Rowe.
-
- Fix the pkg-config file to follow GTK+ package naming and versioning
- conventions.
-
- Remove unneeded dependency listings.
-
- * GNUmakefile.am:
- * configure.ac:
-
-2008-01-31 Alp Toker <alp@atoker.com>
-
- Rubber-stamped by Adam Roben.
-
- http://bugs.webkit.org/show_bug.cgi?id=17006
- [GTK] Header path should be webkit/webkit.h
-
- Move the GTK+ API sources as needed and update the build systems.
-
- * GNUmakefile.am:
- * WebKit.pri:
-
-2008-01-27 Jan Michael Alonzo <jmalonzo@unpluggable.com>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=14811
- [gtk] [request] add a webkit_gtk_page_go_to_history_item function
-
- * GNUmakefile.am: Added webkitwebbackforwardlist and webkitwebhistoryitem
-
-2008-01-26 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Alp Toker.
-
- Fix http://bugs.webkit.org/show_bug.cgi?id=17007.
- Bug 17007: [GTK] autogen.sh attempts to use "libtoolize" on the Mac
-
- libtoolize is installed as glibtoolize on Mac OS X to avoid naming conflicts
- with other system commands. Check for the presence of glibtoolize if libtoolize
- cannot be found.
-
- * autogen.sh:
-
-2008-01-23 Alp Toker <alp@atoker.com>
-
- Rubber-stamped by Mark Rowe.
-
- Remove whitespace after -I in automake include lists.
-
- * GNUmakefile.am:
-
-2008-01-22 Christian Dywan <christian@imendio.com>
-
- Reviewed by Alp Toker.
-
- [GTK] API: WebKitWebSettings is not usable
- http://bugs.webkit.org/show_bug.cgi?id=16219
-
- Implement WebKitWebSettings.
-
- * GNUmakefile.am:
-
-2008-01-22 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Lars.
-
- Don't compile the ICO plugin when building against Qt >= 4.4
-
-
- * WebKit.pro:
-
-2008-01-21 Jan Michael Alonzo <jmalonzo@unpluggable.com>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=16955
- Get errors when cross-compile webkit-gtk
-
- * GNUmakefile.am: added ICU_CPPFLAGS
- * configure.ac: added ICU_CPPFLAGS, removed ICU_CFLAGS
-
-2008-01-19 Jan Michael Alonzo <jmalonzo@unpluggable.com>
-
- Reviewed by Alp Toker.
-
- Add svg foreign object and svg experimental to the GTK+/autotools
- build system.
-
- * configure.ac:
-
-2008-01-15 Alp Toker <alp@atoker.com>
-
- Rubber-stamped by Anders.
-
- Make the HTTP backend configurable in the GTK+ port. curl is currently
- the only option.
-
- * GNUmakefile.am:
- * WebKit.pri:
- * configure.ac:
-
-2008-01-15 Alp Toker <alp@atoker.com>
-
- GTK+/autotools build fix for GCC < 4. Use the -fvisibility compiler
- flags only when they're available.
-
- Additionally, use -fvisibility-inlines-hidden in both debug and
- release builds when available to match the Mac build.
-
- * GNUmakefile.am:
- * configure.ac:
-
-2008-01-12 Alp Toker <alp@atoker.com>
-
- Reviewed by Mark Rowe.
-
- Hide non-public symbols in GTK+/autotools release builds.
-
- * GNUmakefile.am:
-
-2008-01-11 Alp Toker <alp@atoker.com>
-
- Reviewed by Oliver Hunt.
-
- Enable FastMalloc by default in GTK+/autotools and add a configure
- switch.
-
- * GNUmakefile.am:
- * configure.ac:
-
-2008-01-11 Luca Bruno <lethalman88@gmail.com>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=16838
- [GTK] Bad autotools debug and video options
-
- Fix some configure options.
-
- * configure.ac:
-
-2008-01-11 Mark Rowe <mrowe@apple.com>
-
- Attempt to fix the GTK+ and Qt builds.
-
- * WebKit.pro:
-
-2008-01-10 Alp Toker <alp@atoker.com>
-
- SVG font build fix for GTK+/autotools.
-
- * configure.ac:
-
-2008-01-05 Alp Toker <alp@atoker.com>
-
- Rubber-stamped by Mark Rowe.
-
- Fix configure script output with correct descriptions of the default
- configuration options.
-
- * configure.ac:
-
-2008-01-05 Sylvain Pasche <sylvain.pasche@gmail.com>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=16736
- Allow autogen.sh invocation from a separate build directory.
-
- * autogen.sh:
-
-2008-01-04 Alp Toker <alp@atoker.com>
-
- Rubber-stamped by Mark Rowe.
-
- Remove AM_MAINTAINER_MODE, as recommended by the automake manual. The
- "rebuild rules" will now be enabled by default.
-
- This obviates the need to pass '--enable-maintainer-mode' to
- configure.
-
- * configure.ac:
-
-2008-01-02 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Rubber stamped by Alp.
-
- Remove GDK_MULTIHEAD_SAFE and GTK_MULTIHEAD_SAFE because they break
- the build. At least people doing a debug build on Ubuntu Hardy will see
- the breakage. I was asked to leave the flags inside the files to ease future
- debugging.
-
- * GNUmakefile.am:
- * WebKit.pri:
-
-2008-01-01 Alp Toker <alp@atoker.com>
-
- GTK+ autotools build fix. Track changes in r29051, r29058 and pass the
- correct parameter to AM_INIT_AUTOMAKE.
-
- * configure.ac:
-
-2007-12-30 Alp Toker <alp@atoker.com>
-
- Build fix for older autoconf versions.
-
- * configure.ac:
-
-2007-12-29 Jan Michael Alonzo <jmalonzo@unpluggable.com>
-
- Reviewed by Alp Toker.
-
- Enable Database, XPath and XSLT features by default
-
- * configure.ac:
-
-2007-12-29 Jan Michael Alonzo <jmalonzo@unpluggable.com>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=16669
- autotools update and fixes
-
- Various fixes to the autotools build
-
- * GNUmakefile.am:
- - Remove ICU_FLAGS because it adds -g in the CFLAGS/CXXFLAGS
- - Fix clean rules (Rodney Dawes)
- - Added webcore specific variables, remove STDINT_H and
- PTHREAD_NP_H checks (already included in config.h)
- * autogen.sh:
- - Loosen automake and aclocal requirement
- * configure.ac:
- - Workaround AC_PROG_CXX putting -g in CXXFLAGS. Only use -g
- when doing a debug build (Rodney Dawes)
- - Fix webkit target and remove traces of XBL
-
-2007-12-27 Jan Michael Alonzo <jmalonzo@unpluggable.com>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=16353
- [GTK] Check for deprecated API use (G_DISABLE_DEPRECATED etc.)
-
- Added the flags mentioned in the bug only when doing 'debug'
- builds. -DGST_DISABLE_DEPRECATED only added when video is enabled.
-
- * GNUmakefile.am:
- * WebKit.pri:
-
-2007-12-26 Jan Michael Alonzo <jmalonzo@unpluggable.com>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=16390
- Use autotools or GNU make as the build system for the GTK port
-
- * GNUmakefile.am: Added.
- * autogen.sh: Added.
- * configure.ac: Added.
-
-2007-12-20 Alp Toker <alp@atoker.com>
-
- Rubber-stamped by Maciej.
-
- http://bugs.webkit.org/show_bug.cgi?id=16542
- [GTK] Text is missing with old Pango version
-
- Back out commits r28880, r28876, r28865, r28864 which added Pango font
- selection support. These changes caused a regression where no text was
- displayed with older Pango versions.
-
- * WebKit.pri:
-
-2007-12-19 Alp Toker <alp@atoker.com>
-
- Remove the cairo-ft pkg-config check. The GTK+ port doesn't use
- cairo-ft directly following changes in r28864.
-
- * WebKit.pri:
-
-2007-12-12 Alp Toker <alp@atoker.com>
-
- Reviewed by Mark Rowe.
-
- http://bugs.webkit.org/show_bug.cgi?id=16302
- [GTK] Compiler flags for optimization
-
- Use the compiler flags -fno-exceptions -fno-rtti.
-
- This patch does not add all the flags discussed in the bug report,
- only these two.
-
- * WebKit.pri:
-
-2007-12-04 Xan Lopez <xan@gnome.org>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=15561
- GTK port needs DumpRenderTree implementation
-
- Start work on the GTK+ DRT.
-
- * WebKit.pro:
-
-2007-11-30 Alp Toker <alp@atoker.com>
-
- Reviewed by Adam Roben.
-
- http://bugs.webkit.org/show_bug.cgi?id=15691
- [GTK] Public API does not follow GTK+ conventions
-
- Refactor the WebKit/GTK+ public API. Changes:
- WebKitPage -> WebKitWebView
- WebKitFrame -> WebKitWebFrame
-
- Public API source and header names have been updated to mirror the API
- changes.
-
- The API is now kept in WebKit/gtk/WebView to match other ports in the
- same class such as Mac and Win.
-
- * WebKit.pri:
-
-2007-11-26 Rodney Dawes <dobey@wayofthemonkey.com>
-
- Reviewed by Mark Rowe.
-
- Set CONFIG option for the window system GTK+ is using
-
- * WebKit.pri:
-
-2007-11-22 Alp Toker <alp@atoker.com>
-
- GTK+ build fix. Pass a correct LIBDIR value.
-
- * WebKit.pri:
-
-2007-11-20 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Alp Toker.
-
- * WebKit.pri: Add in -Wno-unused-parameter to silence warnings in WebCore.
-
-2007-11-20 Alp Toker <alp@atoker.com>
-
- Reviewed by Simon Hausmann.
-
- Clean up GTK+ port configuration.
-
- Use similar compiler warning flags to the Mac build.
-
- Add the qmake changes needed for DirectFB support.
-
- * WebKit.pri:
-
-2007-11-07 Simon Hausmann <hausmann@kde.org>
-
- Reviewed by Mark.
-
- Add WebKit/qt/Api to the dependency path when building QtLauncher and DumpRenderTree.
- That means that changes to the public API of the Qt port also trigger a rebuild of the tools.
-
- * WebKit.pri:
-
-2007-10-03 Lars Knoll <lars@trolltech.com>
-
- Signed off by olliej.
-
- move WebKitQt to WebKit/qt for consistency with the other ports.
-
- * WebKit.pri:
- * WebKit.pro:
-
-2007-10-03 Lars Knoll <lars@trolltech.com>
-
- Reviewed by olliej.
-
- Move the Qt version of DRT into the correct place and put the binary into BUILDDIR/bin.
-
- * WebKit.pro:
-
-2007-09-29 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by Mark.
-
- -Fix http://bugs.webkit.org/show_bug.cgi?id=13226.
- Remove Bakefiles from svn.
-
- * Bakefiles/Bakefiles.bkgen: Removed.
- * Bakefiles/ChangeLog: Removed.
- * Bakefiles/Readme.txt: Removed.
- * Bakefiles/presets.bkl: Removed.
- * Bakefiles/update-file-lists.py: Removed.
-
-2007-09-20 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Rubber stamped by Adam.
-
- Renamed files from *Gdk to *Gtk (see #14732) using the
- work of Juan A. Suarez Romero as a base.
-
- GDK -> GTK
-
- * WebKit.pri:
- * WebKit.pro:
-
-2007-07-29 Brian Mastenbrook <brian@mastenbrook.net>
-
- Build fix for WebKit/Gtk to compile on Fedora 7 as described in
- http://bugs.webkit.org/show_bug.cgi?id=14557
-
- * WebKit.pri: cairo-ft is used by the WebKit/Gtk port
-
-2007-07-27 Simon Hausmann <hausmann@kde.org>
-
- Done with and reviewed by Lars and Zack.
-
- Exclude DumpRenderTree from the Qt build on Windows for now.
-
- * WebKit.pro:
-
-2007-07-27 Simon Hausmann <hausmann@kde.org>
-
- Done with and reviewed by Lars and Zack.
-
- Temporarily disable the ICO support for the Qt build on Windows.
-
- * WebKit.pro:
-
-2007-07-26 Simon Hausmann <hausmann@kde.org>
-
- Reviewed by Lars.
-
- Use QMAKE_LIBDIR instead of QMAKE_LFLAGS to specify the library search path for QtWebKit, as the former is portable and correctly transformed to /LIBPATH: with msvc for example.
-
- * WebKit.pri:
-
-2007-07-22 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by Adam.
-
- Add WebKit/gtk/Api and WebCoreSupport API to the INCLUDEPATH to allow GdkLauncher to be
- build against it.
-
- * WebKit.pri:
-
-2007-07-18 Simon Hausmann <hausmann@kde.org>
-
- Reviewed by Zack.
-
- Don't call gcc directly when building the dftables tool but use a separate .pro file for the Qt build.
-
- * WebKit.pro:
-
-2007-07-18 Timothy Hatcher <timothy@apple.com>
-
- Add a SCRIPTS_PATH variable so Makefiles of differnet nested directories can
- still use this one Makefile.shared as an include.
-
- * Makefile.shared:
-
-2007-07-12 George Staikos <staikos@kde.org>
-
- Fix build in debug mode.
-
- * WebKit.pri:
-
-2007-07-11 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by Darin Adler.
-
- As of http://bugs.webkit.org/show_bug.cgi?id=14527 move the
- WebCore/ForwardingHeader/JavaScriptCore to JavaScriptCore
-
- * WebKit.pri: Adjust INCLUDEPATH
-
-2007-06-25 Adam Roben <aroben@apple.com>
-
- Really remove LayoutTestResults.
-
- * LayoutTestResults: Removed.
-
-2007-06-25 Adam Roben <aroben@apple.com>
-
- Fix Bug 14405: LayoutTestResults/qt should be in LayoutTests/qt
- http://bugs.webkit.org/show_bug.cgi?id=14405
-
- Reviewed by Anders.
-
- * LayoutTestResults: Removed.
-
-2007-06-25 Alp Toker <alp.toker@collabora.co.uk>
-
- Reviewed by Mark.
-
- http://bugs.webkit.org/show_bug.cgi?id=13975
- Use system-provided libjpeg and libpng
-
- * WebKit.pri: Link against external libjpeg and libpng.
-
-2007-06-20 Adam Roben <aroben@apple.com>
-
- Reviewed by Simon Hausmann.
-
- More Gdk build fixing.
-
- * WebKit.pro:
-
-2007-06-15 Adam Treat <adam@staikos.net>
-
- Reviewed by George Staikos.
-
- Add ICO support to the Qt build.
-
- * WebKit.pro:
-
-2007-06-13 George Staikos <staikos@kde.org>
-
- Reviewed by Lars.
-
- Compile without self-linking.
-
- * WebKit.pri:
-
-2007-06-13 Simon Hausmann <hausmann@kde.org>
-
- Reviewed by Lars.
-
- * WebKit.pri: WebKitQt is now called QtWebKit.
-
-2007-05-31 Alp Toker <alp.toker@collabora.co.uk>
-
- Reviewed by Eric Seidel.
-
- http://bugs.webkit.org/show_bug.cgi?id=13941
- Rename WebCore/platform/network/gdk to WebCore/platform/network/curl
-
- * WebKit.pri:
-
-2007-05-18 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by Mark Rowe.
-
- * WebKit.pro: Build testkjs for Gdk and Qt
-
-2007-05-11 Holger Freyther <freyther@kde.org>
-
- Reviewed by Mark Rowe.
-
- Move libcurl configuration into WebKit.pri so it will be used by GdkLauncher,
- and add ICU configuration to QMAKE_CXXFLAGS.
-
- * WebKit.pri:
-
-2007-05-06 Erik Bunce <kde@bunce.us>
-
- Reviewed by Mark Rowe.
-
- * WebKit.pri:
- Removed unnecessary dependency on MacPorts (/opt/local)
-
-2007-05-03 Holger Freyther <freyther@kde.org>
-
- Reviewed by Zack, landed by Simon.
- This is bugzilla bug 13499.
-
- * WebKit.pri: Place Qt into a scope, start sharing qmake with the Gdk
- port
- * WebKit.pro: Place Qt into a scope, start sharing qmake with the Gdk
- port
-
-2007-04-27 Holger Freyther <freyther@kde.org>
-
- Reviewed by Maciej.
-
- Remove unmaintained CMake build system.
-
- * CMakeLists.txt: Removed.
-
-2007-01-30 Simon Hausmann <hausmann@kde.org>
-
- Reviewed by Zack.
-
- * WebKit.pri: libJavaScriptCore is gone with the Qt build
- * WebKit.pro:
-
-2007-01-26 George Staikos <staikos@kde.org>
-
- Remove headers - not needed now.
-
- * WebKit.pri:
-
-2007-01-23 George Staikos <staikos@kde.org>
-
- Put everything back since we can't build everything without it yet.
-
- * WebKit.pri:
-
-2007-01-16 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Zack
-
- Remove everything but the new public API from
- the include path.
-
- * WebKit.pri:
-
-2007-01-11 George Staikos <staikos@kde.org>
-
- Fix the Qt build
-
- * WebKit.pri:
-
-2007-01-03 Lars Knoll <lars@trolltech.com>
-
- Fix the Qt build
-
- * WebKit.pri:
-
-2006-12-17 Simon Hausmann <hausmann@kde.org>
-
- Reviewed by Rob Buis.
-
- * WebKit.pro: Build testkjs.
-
-2006-12-14 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Brady.
-
- * Makefile.shared: use $PIPESTATUS[0] and a sub-shell to exit with xcodebuild's exit status
-
-2006-12-13 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Brady and Anders.
-
- * Makefile.shared: Stop spewing the environment all the time, at least for command-line builds.
-
-2006-12-10 Zack Rusin <zack@kde.org>
-
- Client classes have been moved to WebKitQt/WebCoreSupport so
- adjusting the pri file.
-
- * WebKit.pri:
-
-2006-12-10 George Staikos <staikos@kde.org>
-
- Reviewed by Zack.
-
- Add WebKitBuild/Release back to the output dir for external build cases.
-
- * WebKit.pri:
-
-2006-12-10 Zack Rusin <zack@kde.org>
-
- Fix the link directory location.
-
- * WebKit.pri:
-
-2006-12-10 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Zack
-
- Include DumpRenderTree in the Qt build
-
- * WebKit.pro:
-
-2006-12-09 George Staikos <staikos@kde.org>
-
- Reviewed by Zack.
-
- Correct the path to the libraries for QMake.
-
- * WebKit.pri:
-
-2006-12-09 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Zack
-
- Make it possible to build WebKit with qmake.
-
- * WebKit.pri: Added.
- * WebKit.pro: Added.
-
-2006-11-19 Simon Hausmann <hausmann@kde.org>
-
- Reviewed by Zack.
-
- http://bugs.webkit.org/show_bug.cgi?id=11649
-
- * CMakeLists.txt: Fix Qt-only build without KDE cmake files
-
-2006-10-30 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Brady.
-
- Make the universal build return non-zero when module make fails.
-
- * Makefile:
-
-2006-10-30 Stephanie Lewis <slewis@apple.com>
-
- Reviewed by Darin Adler.
-
- Change Makefiles to return non-zero when module make fails.
-
- * Makefile:
-
-2006-10-27 Brady Eidson <beidson@apple.com>
-
- Rubber stamped by Tim Hatcher
-
- Added "make universal" to build universal binaries
-
- * Makefile:
- * Makefile.shared:
-
-2006-10-01 Nikolas Zimmermann <zimmermann@kde.org>
-
- Reviewed by eseidel.
-
- * CMakeLists.txt: add option to disable colored output when building on the buildbot
-
diff --git a/GNUmakefile.am b/GNUmakefile.am
deleted file mode 100644
index e274289..0000000
--- a/GNUmakefile.am
+++ /dev/null
@@ -1,487 +0,0 @@
-# Top-level Makefile rule for automake
-#
-# Variable conventions:
-#
-# _h_api = API headers that will be installed and included in the distribution
-# _cppflags = flags that will be passed to the C/CXX Preprocessor
-# _sources = sources that will be compiled and included in the distribution
-# _built_sources = files that will be autogenerated by the build system and
-# will be part of the _SOURCES primary
-# _built_nosources = files that are autogenerated but are not part of the
-# _SOURCES primary
-# _cleanfiles = files that will be removed by the clean target
-#
-# Sources, headers, flags, etc... should be added to the respective variables
-# with the above suffix, e.g, webcore-specific sources should go to
-# webcore_sources, gtk port API and WebCoreSupport parts to webkitgtk_sources,
-# etc... The only exceptions are the global variables. See Global Variables
-# below.
-#
-# Global Variables
-#
-# global_cppflags = CPPFLAGS that apply to JSC, WebCore, and to any
-# specific port
-# global_cflags = CFLAGS that apply to JSC, WebCore, and to
-# any specific port
-# global_cxxflags = CXXFLAGS that apply to JSC, WebCore, and to any
-# specific port
-
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-# Directory for autogenerated sources
-GENSOURCES := $(top_builddir)/DerivedSources
-GENPROGRAMS := $(top_builddir)/Programs
-
-# Script for creating hash tables
-CREATE_HASH_TABLE = $(srcdir)/JavaScriptCore/kjs/create_hash_table
-
-# Libraries and support components
-bin_PROGRAMS :=
-
-noinst_PROGRAMS :=
-
-noinst_HEADERS :=
-
-lib_LIBRARIES :=
-
-IDL_BINDINGS :=
-
-# Global flags to CPP
-global_cppflags :=
-
-global_cppflags += \
- -DWTF_USE_ICU_UNICODE=1
-
-# Default compiler flags
-global_cflags := \
- -Wall -W -Wcast-align -Wchar-subscripts -Wreturn-type \
- -Wformat -Wformat-security -Wno-format-y2k -Wundef \
- -Wmissing-format-attribute -Wpointer-arith -Wwrite-strings \
- -Wno-unused-parameter -Wno-parentheses
-
-global_cxxflags := \
- $(SYMBOL_VISIBILITY_INLINES)
-
-if !ENABLE_DEBUG
-global_cflags += \
- -fno-exceptions \
- $(SYMBOL_VISIBILITY)
-
-global_cxxflags += \
- -fno-rtti
-endif
-
-# -no-undefined required for building DLLs on Windows
-# It breaks the build on other platforms, so we use it conditionally
-if OS_WIN32
-no_undefined = -no-undefined
-endif
-
-# Shared libraries
-lib_LTLIBRARIES = \
- libwebkit-1.0.la
-
-# Convenience libraries
-noinst_LTLIBRARIES = \
- libJavaScriptCore.la \
- libWebCore.la
-
-#
-# JavaScriptCore
-javascriptcore_h_api :=
-javascriptcore_cppflags:=
-javascriptcore_sources :=
-javascriptcore_built_sources :=
-javascriptcore_built_nosources :=
-javascriptcore_dist :=
-
-javascriptcore_cppflags += \
- -I$(srcdir)/JavaScriptCore \
- -I$(srcdir)/JavaScriptCore/ForwardingHeaders \
- -I$(srcdir)/JavaScriptCore/wtf \
- -I$(srcdir)/JavaScriptCore/kjs \
- -I$(top_builddir)/DerivedSources
-
-# The variables above are already included below so no need to touch
-# these variables unless you really have to
-nodist_EXTRA_libJavaScriptCore_la_SOURCES = \
- $(javascriptcore_built_nosources)
-
-nodist_libJavaScriptCore_la_SOURCES = \
- $(javascriptcore_built_sources)
-
-libJavaScriptCore_ladir = $(prefix)/include/webkit-1.0/JavaScriptCore
-libJavaScriptCore_la_HEADERS = $(javascriptcore_h_api)
-
-libJavaScriptCore_la_SOURCES = \
- $(javascriptcore_sources)
-
-libJavaScriptCore_la_LIBADD = \
- $(UNICODE_LIBS) \
- $(GLOBALDEPS_LIBS) \
- -lpthread
-
-libJavaScriptCore_la_CXXFLAGS = \
- -fstrict-aliasing \
- -O3 \
- $(global_cxxflags) \
- $(global_cflags) \
- $(GLOBALDEPS_CFLAGS) \
- $(UNICODE_CFLAGS)
-
-libJavaScriptCore_la_CFLAGS = \
- -fstrict-aliasing \
- -O3 \
- $(global_cflags) \
- $(GLOBALDEPS_CFLAGS) \
- $(UNICODE_CFLAGS)
-
-libJavaScriptCore_la_CPPFLAGS = \
- $(global_cppflags) \
- $(javascriptcore_cppflags)
-
-#
-# WebCore
-webcore_cppflags :=
-webcore_sources :=
-webcore_libadd :=
-webcore_built_sources :=
-webcore_built_nosources :=
-webcore_dist :=
-webcoregtk_cppflags :=
-webcoregtk_sources :=
-
-nodist_libWebCore_la_SOURCES = \
- $(webcore_built_sources)
-
-libWebCore_la_SOURCES = \
- $(webcore_sources) \
- $(webcoregtk_sources)
-
-libWebCore_la_CXXFLAGS = \
- -fno-strict-aliasing \
- -O2 \
- $(global_cxxflags) \
- $(global_cflags) \
- $(GLOBALDEPS_CFLAGS) \
- $(UNICODE_CFLAGS) \
- $(WEBKITDEPS_CFLAGS) \
- $(XT_CFLAGS) \
- $(LIBCURL_CFLAGS) \
- $(LIBSOUP_CFLAGS) \
- $(FREETYPE_CFLAGS) \
- $(SQLITE3_CFLAGS) \
- $(GSTREAMER_CFLAGS) \
- $(LIBXSLT_CFLAGS) \
- $(COVERAGE_CFLAGS) \
- $(HILDON_CFLAGS)
-
-libWebCore_la_CFLAGS = \
- -fno-strict-aliasing \
- -O2 \
- $(global_cflags) \
- $(GLOBALDEPS_CFLAGS) \
- $(UNICODE_CFLAGS) \
- $(WEBKITDEPS_CFLAGS) \
- $(XT_CFLAGS) \
- $(LIBCURL_CFLAGS) \
- $(LIBSOUP_CFLAGS) \
- $(FREETYPE_CFLAGS) \
- $(SQLITE3_CFLAGS) \
- $(GSTREAMER_CFLAGS) \
- $(LIBXSLT_CFLAGS) \
- $(COVERAGE_CFLAGS) \
- $(HILDON_CFLAGS)
-
-libWebCore_la_CPPFLAGS = \
- $(global_cppflags) \
- $(webcore_cppflags) \
- $(javascriptcore_cppflags) \
- $(webcoregtk_cppflags) \
- $(HILDON_CPPFLAGS)
-
-libWebCore_la_LIBADD = \
- libJavaScriptCore.la \
- $(webcore_libadd) \
- $(GLOBALDEPS_LIBS) \
- $(WEBKITDEPS_LIBS) \
- $(XT_LIBS) \
- $(LIBCURL_LIBS) \
- $(LIBSOUP_LIBS) \
- $(FREETYPE_LIBS) \
- $(UNICODE_LIBS) \
- $(SQLITE3_LIBS) \
- $(GSTREAMER_LIBS) \
- $(LIBXSLT_LIBS) \
- $(HILDON_LIBS) \
- $(JPEG_LIBS) \
- -lpthread
-
-# WebKit
-webkitgtk_h_api :=
-webkitgtk_sources :=
-webkitgtk_cppflags :=
-webkitgtk_built_sources :=
-webkitgtk_built_nosources :=
-webkitgtk_cleanfiles :=
-
-nodist_libwebkit_1_0_la_SOURCES = \
- $(webkitgtk_built_sources)
-
-libwebkit_1_0_ladir = $(prefix)/include/webkit-1.0/webkit
-libwebkit_1_0_la_HEADERS = \
- $(webkitgtk_h_api) \
- WebKit/gtk/webkit/webkitenumtypes.h
-
-libwebkit_1_0_la_SOURCES = \
- $(webkitgtk_sources)
-
-libwebkit_1_0_la_CXXFLAGS = \
- $(libWebCore_la_CXXFLAGS)
-
-libwebkit_1_0_la_CFLAGS = \
- $(libWebCore_la_CFLAGS)
-
-libwebkit_1_0_la_CPPFLAGS = \
- $(libWebCore_la_CPPFLAGS) \
- $(webkitgtk_cppflags)
-
-libwebkit_1_0_la_LDFLAGS = \
- $(COVERAGE_LDFLAGS) \
- -version-info @LIBWEBKITGTK_VERSION@ \
- -Wl,--version-script,$(srcdir)/symbols.filter \
- $(no_undefined)
-
-libwebkit_1_0_la_LIBADD = \
- libWebCore.la
-
-#
-# Extra checks and flags
-global_cppflags += \
- -DBUILDING_CAIRO__=1 \
- -DBUILDING_GTK__=1 \
- -DWTF_CHANGES
-
-if !ENABLE_FAST_MALLOC
-global_cppflags += \
- -DUSE_SYSTEM_MALLOC
-endif
-
-if TARGET_X11
-global_cppflags += -DXP_UNIX
-endif
-
-if !ENABLE_DEBUG
-global_cppflags += -DNDEBUG
-else
-webcoregtk_cppflags += \
- -DG_DISABLE_DEPRECATED \
- -DGDK_PIXBUF_DISABLE_DEPRECATED \
- -DGDK_DISABLE_DEPRECATED \
- -DGTK_DISABLE_DEPRECATED \
- -DPANGO_DISABLE_DEPRECATED
-
-# Might be useful in the future
-# -DGDK_MULTIHEAD_SAFE \
-# -DGTK_MULTIHEAD_SAFE
-endif
-
-if !ENABLE_DATABASE
-global_cppflags += -DENABLE_DATABASE=0
-endif
-
-if !ENABLE_ICONDATABASE
-global_cppflags += -DENABLE_ICONDATABASE=0
-endif
-
-if ENABLE_COVERAGE
-global_cppflags += \
- -DGCC_GENERATE_TEST_COVERAGE_FILES \
- -DGCC_INSTRUMENT_PROGRAM_FLOW_ARCS
-endif
-
-if ENABLE_VIDEO
-webcore_libadd += -lgstinterfaces-0.10 -lgstvideo-0.10
-endif
-
-webkitgtk_h_api += \
- WebKit/gtk/webkit/webkit.h \
- WebKit/gtk/webkit/webkitdefines.h \
- WebKit/gtk/webkit/webkitnetworkrequest.h \
- WebKit/gtk/webkit/webkitversion.h \
- WebKit/gtk/webkit/webkitwebbackforwardlist.h \
- WebKit/gtk/webkit/webkitwebframe.h \
- WebKit/gtk/webkit/webkitwebhistoryitem.h \
- WebKit/gtk/webkit/webkitwebsettings.h \
- WebKit/gtk/webkit/webkitwebview.h
-
-webkitgtk_built_sources += \
- DerivedSources/webkitenumtypes.cpp \
- DerivedSources/webkitmarshal.cpp \
- DerivedSources/webkitmarshal.h \
- WebKit/gtk/webkit/webkitenumtypes.h
-
-webkitgtk_sources += \
- WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp \
- WebKit/gtk/WebCoreSupport/ChromeClientGtk.h \
- WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp \
- WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.h \
- WebKit/gtk/WebCoreSupport/DragClientGtk.cpp \
- WebKit/gtk/WebCoreSupport/DragClientGtk.h \
- WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp \
- WebKit/gtk/WebCoreSupport/EditorClientGtk.h \
- WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp \
- WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.h \
- WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp \
- WebKit/gtk/WebCoreSupport/InspectorClientGtk.h \
- WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.cpp \
- WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.h \
- WebKit/gtk/webkit/webkitnetworkrequest.cpp \
- WebKit/gtk/webkit/webkitprivate.cpp \
- WebKit/gtk/webkit/webkitprivate.h \
- WebKit/gtk/webkit/webkitversion.cpp \
- WebKit/gtk/webkit/webkitwebbackforwardlist.cpp \
- WebKit/gtk/webkit/webkitwebframe.cpp \
- WebKit/gtk/webkit/webkitwebhistoryitem.cpp \
- WebKit/gtk/webkit/webkitwebsettings.cpp \
- WebKit/gtk/webkit/webkitwebview.cpp
-
-webkitgtk_cppflags += \
- -DBUILDING_WEBKIT \
- -I$(srcdir)/WebKit/gtk \
- -I$(srcdir)/WebKit/gtk/WebCoreSupport \
- -I$(srcdir)/WebKit/gtk/webkit \
- -I$(top_builddir)/WebKit/gtk/webkit
-
-webkitgtk_cleanfiles += \
- $(top_builddir)/Programs/GtkLauncher \
- $(top_builddir)/WebKit/gtk/webkit-1.0.pc
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = WebKit/gtk/webkit-1.0.pc
-
-stamp_files := \
- stamp-webkitmarshal.cpp \
- stamp-webkitmarshal.h \
- stamp-webkitenumtypes.cpp \
- stamp-webkitenumtypes.h
-
-WEBKIT_MARSHAL = $(GENSOURCES)/webkitmarshal
-WEBKIT_MARSHAL_LIST = $(WEBKIT_MARSHAL).list
-
-$(WEBKIT_MARSHAL_LIST): $(webkitgtk_sources) GNUmakefile.am
- ( cd $(top_srcdir) && \
- sed -n -e 's/.*webkit_marshal_\([[:upper:][:digit:]]*__[[:upper:][:digit:]_]*\).*/\1/p' \
- $(webkitgtk_sources) ) \
- | sed -e 's/__/:/' -e 'y/_/,/' | sort -u > $@.tmp
- if cmp -s $@.tmp $@; then \
- rm $@.tmp; \
- else \
- mv $@.tmp $@; \
- fi
-
-$(WEBKIT_MARSHAL).cpp: stamp-webkitmarshal.cpp
- @true
-
-$(WEBKIT_MARSHAL).h: stamp-webkitmarshal.h
- @true
-
-stamp-webkitmarshal.cpp: $(WEBKIT_MARSHAL_LIST)
- echo "extern \"C\" {" > $(WEBKIT_MARSHAL).cpp && \
- $(GLIB_GENMARSHAL) --prefix=webkit_marshal $(WEBKIT_MARSHAL_LIST) --body >> $(WEBKIT_MARSHAL).cpp && echo '}' >> $(WEBKIT_MARSHAL).cpp && \
- echo timestamp > $(@F)
-
-stamp-webkitmarshal.h: $(WEBKIT_MARSHAL_LIST)
- $(GLIB_GENMARSHAL) --prefix=webkit_marshal $(WEBKIT_MARSHAL_LIST) --header > $(WEBKIT_MARSHAL).h && \
- echo timestamp > $(@F)
-
-WebKit/gtk/webkit/webkitenumtypes.h: stamp-webkitenumtypes.h
- @true
-stamp-webkitenumtypes.h: $(webkitgtk_h_api) GNUmakefile
- (cd $(srcdir) \
- && glib-mkenums \
- --fhead "#ifndef WEBKIT_ENUM_TYPES_H\n" \
- --fhead "#define WEBKIT_ENUM_TYPES_H\n\n" \
- --fhead "#include <glib-object.h>\n\n" \
- --fhead "#include <webkit/webkitdefines.h>\n\n" \
- --fhead "G_BEGIN_DECLS\n\n" \
- --ftail "G_END_DECLS\n\n" \
- --ftail "#endif\n" \
- --fprod "#include <@filename@>\n\n" \
- --eprod "#define WEBKIT_TYPE_@ENUMSHORT@ @enum_name@_get_type()\n\n" \
- --eprod "WEBKIT_API GType\n@enum_name@_get_type(void);\n\n" \
- $(webkitgtk_h_api) | \
- sed 's,WebKit/gtk/,,' | \
- sed 's,web_kit,webkit,' | \
- sed 's,WEBKIT_TYPE_KIT,WEBKIT_TYPE,' \
- ) > xgen-gth \
- && (cmp -s xgen-gth WebKit/gtk/webkit/webkitenumtypes.h || cp xgen-gth WebKit/gtk/webkit/webkitenumtypes.h) \
- && rm -f xgen-gth \
- && echo timestamp > $(@F)
-
-DerivedSources/webkitenumtypes.cpp: $(webkitgtk_h_api) GNUmakefile
- (cd $(srcdir) \
- && glib-mkenums \
- --fhead "#include <config.h>\n" \
- --fhead "#include <glib-object.h>\n" \
- --fhead "#include \"$(top_builddir)/WebKit/gtk/webkit/webkitenumtypes.h\"\n\n" \
- --fhead "extern \"C\" {\n\n" \
- --fprod "\n/* enumerations from \"@filename@\" */" \
- --vhead "static const G@Type@Value _@enum_name@_values[] = {" \
- --vprod " { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \
- --vtail " { 0, NULL, NULL }\n};\n\n" \
- --vtail "GType @enum_name@_get_type(void)\n{\n" \
- --vtail " static GType type = 0;\n\n" \
- --vtail " if (!type)\n" \
- --vtail " type = g_@type@_register_static(\"@EnumName@\", _@enum_name@_values);\n\n" \
- --vtail " return type;\n}\n\n" \
- --ftail "}\n" \
- $(webkitgtk_h_api) | \
- sed 's,web_kit,webkit,' \
- ) > xgen-gtc \
- && cp xgen-gtc $@ \
- && rm -f xgen-gtc
-
-# END WEBKIT GTK+
-#
-# Files that will be distributed
-EXTRA_DIST = \
- $(javascriptcore_dist) \
- $(webcore_dist) \
- symbols.filter
-
-# Files that will be cleaned
-MAINTAINERCLEANFILES := $(stamp_files) $(BUILT_SOURCES)
-DISTCLEANFILES := $(stamp_files) $(BUILT_SOURCES)
-CLEANFILES := $(stamp_files) $(BUILT_SOURCES)
-
-# Include module makefiles
-include JavaScriptCore/GNUmakefile.am
-include WebCore/GNUmakefile.am
-include WebKitTools/GNUmakefile.am
-
-# Autogenerated sources
-BUILT_SOURCES = \
- $(javascriptcore_built_sources) \
- $(javascriptcore_built_nosources) \
- $(webcore_built_sources) \
- $(webcore_built_nosources) \
- $(webkitgtk_built_sources) \
- $(webkitgtk_built_nosources)
-
-# Project-wide clean rules
-CLEANFILES += \
- $(webkitgtk_cleanfiles)
-
-MAINTAINERCLEANFILES += \
- $(srcdir)/aconfig.h.in \
- configure \
- config.* \
- GNUmakefile.in \
- INSTALL \
- README
-
-# remove built sources and program directories
-clean-local:
- -rm -rf $(GENSOURCES) $(GENPROGRAMS)
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 217a035..0000000
--- a/Makefile
+++ /dev/null
@@ -1,33 +0,0 @@
-MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools
-
-all:
- @for dir in $(MODULES); do ${MAKE} $@ -C $$dir; exit_status=$$?; \
- if [ $$exit_status -ne 0 ]; then exit $$exit_status; fi; done
-
-debug d development dev develop:
- @for dir in $(MODULES); do ${MAKE} $@ -C $$dir; exit_status=$$?; \
- if [ $$exit_status -ne 0 ]; then exit $$exit_status; fi; done
-
-release r deployment dep deploy:
- @for dir in $(MODULES); do ${MAKE} $@ -C $$dir; exit_status=$$?; \
- if [ $$exit_status -ne 0 ]; then exit $$exit_status; fi; done
-
-universal u:
- @for dir in $(MODULES); do ${MAKE} $@ -C $$dir; exit_status=$$?; \
- if [ $$exit_status -ne 0 ]; then exit $$exit_status; fi; done
-
-x86_64:
- @for dir in $(MODULES); do ${MAKE} $@ -C $$dir; exit_status=$$?; \
- if [ $$exit_status -ne 0 ]; then exit $$exit_status; fi; done
-
-64:
- @for dir in $(MODULES); do ${MAKE} $@ -C $$dir; exit_status=$$?; \
- if [ $$exit_status -ne 0 ]; then exit $$exit_status; fi; done
-
-64u:
- @for dir in $(MODULES); do ${MAKE} $@ -C $$dir; exit_status=$$?; \
- if [ $$exit_status -ne 0 ]; then exit $$exit_status; fi; done
-
-clean:
- @for dir in $(MODULES); do ${MAKE} $@ -C $$dir; exit_status=$$?; \
- if [ $$exit_status -ne 0 ]; then exit $$exit_status; fi; done
diff --git a/Makefile.shared b/Makefile.shared
deleted file mode 100644
index dfad6fb..0000000
--- a/Makefile.shared
+++ /dev/null
@@ -1,30 +0,0 @@
-SCRIPTS_PATH ?= ../WebKitTools/Scripts
-XCODE_OPTIONS = `perl -I$(SCRIPTS_PATH) -Mwebkitdirs -e 'print XcodeOptionString()'` $(ARGS)
-
-all:
- ( xcodebuild $(OTHER_OPTIONS) $(XCODE_OPTIONS) | grep -v setenv && exit $${PIPESTATUS[0]} )
-
-debug d development dev develop: force
- $(SCRIPTS_PATH)/set-webkit-configuration --debug
- ( xcodebuild $(OTHER_OPTIONS) $(XCODE_OPTIONS) | grep -v setenv && exit $${PIPESTATUS[0]} )
-
-release r deployment dep deploy: force
- $(SCRIPTS_PATH)/set-webkit-configuration --release
- ( xcodebuild $(OTHER_OPTIONS) $(XCODE_OPTIONS) | grep -v setenv && exit $${PIPESTATUS[0]} )
-
-universal u: force
- ( xcodebuild $(OTHER_OPTIONS) $(XCODE_OPTIONS) 'ARCHS=ppc i386' | grep -v setenv && exit $${PIPESTATUS[0]} )
-
-x86_64: force
- ( xcodebuild $(OTHER_OPTIONS) $(XCODE_OPTIONS) 'ARCHS=x86_64' | grep -v setenv && exit $${PIPESTATUS[0]} )
-
-64: force
- ( xcodebuild $(OTHER_OPTIONS) $(XCODE_OPTIONS) 'ARCHS=i386 x86_64' | grep -v setenv && exit $${PIPESTATUS[0]} )
-
-64u: force
- ( xcodebuild $(OTHER_OPTIONS) $(XCODE_OPTIONS) 'ARCHS=ppc ppc64 i386 x86_64' | grep -v setenv && exit $${PIPESTATUS[0]} )
-
-clean:
- ( xcodebuild $(OTHER_OPTIONS) -alltargets clean $(XCODE_OPTIONS) | grep -v setenv && exit $${PIPESTATUS[0]} )
-
-force: ;
diff --git a/SunSpider/ChangeLog b/SunSpider/ChangeLog
deleted file mode 100644
index a014a3a..0000000
--- a/SunSpider/ChangeLog
+++ /dev/null
@@ -1,671 +0,0 @@
-2008-10-30 Zoltan Horvath <Horvath.Zoltan.6@stud.u-szeged.hu>
-
- Fix a bug where when V8's or UBENCH's test suite list file is missing
- the error message is suggesting that SunSpider's list file is missing.
-
- Reviewed by Sam Weinig.
-
- * sunspider:
- (loadTestsList): Fix the error message to use the right list name.
-
-2008-10-07 David Hyatt <hyatt@apple.com>
-
- https://bugs.webkit.org/show_bug.cgi?id=18989
-
- Remove global substitution from SunSpider regexp test, since only Firefox was honoring it and
- we want all browsers to be doing the same thing on the test.
-
- Reviewed by Maciej
-
- * tests/regexp-dna.js:
-
-2008-09-09 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Rubber-stamped by Maciej Stachowiak.
-
- The bleeding edge branch of V8 now supports passing fileanmes after
- '-f', so the SunSpider script should be changed to do this again.
- This allows all 3 major JavaScript engines to be used with the
- unmodified SunSpider script.
-
- * sunspider:
-
-2008-09-04 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej Stachowiak.
-
- Add a '--args' option to SunSpider, so that we can pass '-j' to TraceMonkey
- and '--expose-gc' to V8. Also, rename the '--v8' option to '--v8-suite' and
- correct the punctuation in its documentation.
-
- * sunspider:
-
-2008-09-04 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver Hunt.
-
- Bug 20616: Incorporate V8 benchmarks in testing
- <https://bugs.webkit.org/show_bug.cgi?id=20616>
-
- This is a first attempt at running the V8 benchmarks within SunSpider,
- with the --v8 option. The number of iterations is fixed for each
- benchmark, and was chosen to make each of the benchmarks run between
- 500 ms and 600 ms in V8 on my machine, a 2.16 GHz MacBook Pro.
-
- * sunspider:
- * tests/LIST-V8: Added.
- * tests/v8-crypto.js: Added.
- * tests/v8-deltablue.js: Added.
- * tests/v8-earley-boyer.js: Added.
- * tests/v8-raytrace.js: Added.
- * tests/v8-richards.js: Added.
-
-2008-09-02 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Not reviewed.
-
- Remove a local change that was accidentally committed in r36034.
-
- * resources/sunspider-standalone-driver.js:
-
-2008-09-02 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Rubber-stamped by Oliver Hunt.
-
- Make SunSpider work with JavaScript shells that don't take filenames
- after a '-f' argument.
-
- * sunspider:
-
-2008-06-07 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Timothy.
-
- Remove the --squirrelfish option from SunSpider, as it is no longer needed.
-
- * sunspider:
- * tests/LIST-SQUIRRELFISH: Removed.
-
-2008-06-03 Alexey Proskuryakov <ap@webkit.org>
-
- Rubber-stamped by Mark Rowe.
-
- Roll out r31215 - with Mac OS X 10.5.3, there is no need to pause update daemon any more.
-
- * sunspider:
-
-2008-04-15 Maciej Stachowiak <mjs@apple.com>
-
- Rubber stamped by Oliver.
-
- - add newly working tests to squirrelfish list
-
- * tests/LIST-SQUIRRELFISH: Add 3d-raytrace and string-unpack-code
-
-2008-04-14 Maciej Stachowiak <mjs@apple.com>
-
- Rubber stamped by Oliver.
-
- - move ubench tests properly.
-
- * tests/ubench: Added.
- * tests/ubench/function-closure.js: Added.
- * tests/ubench/function-empty.js: Added.
- * tests/ubench/function-missing-args.js: Added.
- * tests/ubench/function-sum.js: Added.
- * tests/ubench/loop-empty-resolve.js: Added.
- * tests/ubench/loop-empty.js: Added.
- * tests/ubench/loop-sum.js: Added.
-
-2008-04-14 Maciej Stachowiak <mjs@apple.com>
-
- Rubber stamped by Oliver.
-
- * sunspider: Don't force --runs=1 in squirrelfish mode any more.
-
-2008-04-14 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - make --squirrelfish mode use the real harness, but a reduced set of tests
-
- Also add a new ubench mode which runs the older squirrelfish microbenchmarks.
-
- * sunspider:
- * tests/LIST-SQUIRRELFISH:
- * tests/LIST-UBENCH: Added.
- * tests/squirrelfish: Moved to tests/ubench
-
-2008-04-14 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Removed an unused test.
-
- * tests/squirrelfish/loop-resolve.js: Removed.
-
-2008-04-10 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- Add newly runnable tests to --squirrelfish mode.
-
- * tests/LIST-SQUIRRELFISH:
-
-2008-04-06 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- A little more love for --squirrelfish mode:
-
- Fixed a misplaced sort. Results properly sort now.
-
- Added a test list just for squirrelfish, and updated it to include
- all currently passing SunSpider tests.
-
- Fixed the pruning regexp to match 3d-morph.js.
-
- * sunspider:
-
-2008-03-26 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- --squirrelfish mode: pared down tests for squirrelfish to chew on.
-
- * sunspider:
- * tests/LIST:
- * tests/squirrelfish: Added.
- * tests/squirrelfish/function-closure.js: Added.
- * tests/squirrelfish/function-empty.js: Added.
- * tests/squirrelfish/function-missing-args.js: Added.
- * tests/squirrelfish/function-sum.js: Added.
- * tests/squirrelfish/loop-empty-resolve.js: Added.
- * tests/squirrelfish/loop-empty.js: Added.
- * tests/squirrelfish/loop-resolve.js: Added.
- * tests/squirrelfish/loop-sum.js: Added.
-
-2008-03-21 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Geoff.
-
- * sunspider: Pause update daemon on Darwin to make results reliable
- again (workaround for <rdar://problem/5811127>).
-
-2008-02-07 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- * sunspider: add an error message when ./tests/LIST is not found
-
-2007-12-29 Alp Toker <alp@atoker.com>
-
- Fix typo.
-
- * hosted/sunspider.html:
-
-2007-12-29 Alp Toker <alp@atoker.com>
-
- Reviewed by Maciej.
-
- Provide the current URL in the SunSpider results page. Useful for
- copying benchmark results out of browsers without a location bar or
- where the location bar can't handle long URLs.
-
- * hosted/sunspider-results.html:
-
-2007-12-20 Eric Seidel <eric@webkit.org>
-
- Reviewed by mjs.
-
- * sunspider: increase default number of runs for more accurate numbers
-
-2007-12-18 Mark Rowe <mrowe@apple.com>
-
- Fix typo.
-
- * hosted/sunspider.html:
-
-2007-12-18 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Eric.
-
- - give an extra digit of precision for small differences.
-
- * resources/sunspider-compare-results.js:
-
-2007-12-17 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Eric.
-
- - work around IE layout bugs
-
- * hosted/sunspider.css:
-
-2007-12-17 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Mark.
-
- - fix compare feature
-
- * hosted/sunspider-results.html:
-
-2007-12-17 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Mark.
-
- - Change the format of the output URL to be shorter, to meet IE constraints
-
- * hosted/sunspider-driver.html:
- * hosted/sunspider-results.html:
-
-2007-12-13 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - Add some explanatory test and a dumb logo to SunSpider web hosted version
-
- * hosted/sunspider-driver.html:
- * hosted/sunspider-results.html:
- * hosted/sunspider.css:
- * hosted/sunspider.html:
-
-2007-12-13 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - Make the web-hosted version of SunSpider look a little bit less drab.
-
- * hosted/sunspider-driver.html:
- * hosted/sunspider-results.html:
- * hosted/sunspider.css: Added.
- * hosted/sunspider.html:
- * resources/TEMPLATE.html:
-
-2007-12-12 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Sam.
-
- - Change sunspider-compare-results output from showing "% faster" values to "x as fast" values.
-
- A sample of what new-style results would look like:
-
- TEST COMPARISON FROM TO DETAILS
- ...
- ** TOTAL **: 1.41x as fast 6613.6ms +/- 0.1% 4703.0ms +/- 0.1% significant
- ...
- 3bit-bits-in-byte: *1.36x as slow* 88.8ms +/- 0.6% 121.1ms +/- 0.6% significant
-
- * resources/sunspider-compare-results.js:
-
-2007-11-14 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- * sunspider: add --shark-cache for L2 Cache Miss profiling
-
-2007-11-09 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin Adler.
-
- http://bugs.webkit.org/show_bug.cgi?id=15925
- SunSpider should check for Shark being installed
-
- * sunspider: Explicitly test that shark command line tool is installed.
-
-2007-11-04 Darin Adler <darin@apple.com>
-
- * hosted/sunspider.html: Tweaked formatting a bit.
-
-2007-11-03 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin Adler.
-
- - Add compare mode and a description of the benchmark to the hosted version.
-
- * hosted/sunspider-results.html: Add compare mode - you can just paste in another results URL.
- * hosted/sunspider.html: Added intro text.
- * make-hosted: Copy new file.
- * resources/sunspider-compare-results.js: Made more reusable by putting the implementation in
- a function.
- * resources/sunspider-standalone-compare.js: Added. Calls the function in the way standalone mode
- expects.
- * sunspider-compare-results: Use sunspider-standalone-compare.js.
-
-2007-11-02 Darin Adler <darin@apple.com>
-
- * sunspider: Changed "--base" to "--set-baseline".
-
-2007-11-02 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- * sunspider: Added a "--base" option that records the current test as a baseline.
- Moved the code to find the newest .mshark file into a function (since I needed to use
- it in the other script and I prefer to copy/paste a function).
-
- * sunspider-compare-results: Added logic to compare the baseline with the last
- run when you don't pass any parameters.
-
-2007-10-29 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Eric.
-
- - Added list of ECMAScript3 features that SunSpider does not cover currently.
-
- * UNCOVERED: Added.
-
-2007-10-29 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - Give better error messages when sunspider-compare-results fails
-
- * sunspider-compare-results:
-
-2007-10-29 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin Adler.
-
- - fix Date tests to work in command-line SpiderMonkey
-
- * tests/date-format-tofte.js:
- * tests/date-format-xparb.js:
-
-2007-10-29 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- * sunspider: Added --shark20 option, to run Shark at its highest sample
- resolution instead of its default.
-
-2007-10-28 Adam Roben <aroben@apple.com>
-
- Fix SunSpider on Windows
-
- Reviewed by Eric.
-
- * sunspider: Don't use colons in filenames.
-
-2007-10-28 Darin Adler <darin@apple.com>
-
- Reviewed by Adam.
-
- * resources/sunspider-analyze-results.js: Tweak the output format a little.
- Change so that when there's only one run we don't write out confidence
- intervals at all rather than writing "NaN" over and over again.
-
- * sunspider: Use the time and date as a suffix on the results file, that way
- all the results are left behind in the tmp directory. This will make it easy
- for us to add features that compare past results in the future. Also rename
- the .mshark files using the same scheme.
-
- * sunspider-compare-results: Relax the parsing rules so we can parse the
- results file exactly as it's emitted from sunspider.
-
-2007-10-25 Adam Roben <aroben@apple.com>
-
- Strip carriage returns from results
-
- Carriage returns were screwing up sunspider-compare-results on
- Windows.
-
- Rubberstamped by Oliver.
-
- * sunspider:
-
-2007-10-24 Darin Adler <darin@apple.com>
-
- Reviewed by Eric.
-
- * sunspider: Open the profile in shark after completing a run.
- * sunspider-compare-results: Tiny perl tweaks.
-
-2007-10-23 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin Adler.
-
- - Don't hardcode my path to testkjs
-
- * sunspider-compare-results:
-
-2007-10-23 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin Adler.
-
- - Add a compare script to compare results, and improve formatting of standard results a bit.
-
- * resources/sunspider-analyze-results.js:
- * resources/sunspider-compare-results.js: Added.
- * sunspider-compare-results: Added.
-
-2007-10-23 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin Adler.
-
- * resources/sunspider-analyze-results.js: Do the error range
- properly, using the t-distribution instead of 1.96 (which was
- based on the normal distribution).
-
- * sunspider: Print results in a way that will be friendlier to the
- soon-to-come compare mode.
-
-2007-10-22 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Review.
-
- - add more tests (probably the final set for now)
-
- Already balanced. Added date, regexp, control flow, and a few
- more string and object/array access tests.
-
- * tests/LIST:
- * tests/access-fannkuch.js: Added.
- * tests/access-nbody.js: Added.
- * tests/controlflow-recursive.js: Added.
- * tests/date-format-tofte.js: Added.
- * tests/date-format-xparb.js: Added.
- * tests/regexp-dna.js: Added.
- * tests/string-validate-input.js: Added.
-
-2007-10-21 Eric Seidel <eric@webkit.org>
-
- Reviewed by mjs.
-
- * sunspider: make --shark only sample from testkjs
-
-2007-10-21 Maciej Stachowiak <mjs@apple.com>
-
- Rubber stamped by Eric.
-
- - added crypto tests (already balanced)
-
- * tests/LIST:
- * tests/crypto-aes.js: Added.
- * tests/crypto-md5.js: Added.
- * tests/crypto-sha1.js: Added.
-
-2007-10-21 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Adam.
-
- - rebalance new tests
-
- Scaled the new tests so they take 400-600ms on a reasonably normal user setup:
-
- Internet Explorer 7, Window XP, Dell Latitude D810 with a 2.13GHz Pentium M
-
- This balances them with the existing tests.
-
- * tests/access-binary-trees.js:
- * tests/access-nsieve.js:
- * tests/bitops-nsieve-bits.js:
- * tests/math-partial-sums.js:
- * tests/math-spectral-norm.js:
- * tests/string-fasta.js:
-
-2007-10-20 Eric Seidel <eric@webkit.org>
-
- Reviewed by darin.
-
- Add improved argument handling to sunspider, including
- --runs=<number>, --tests=<pattern, --shark, and --help
- Also re-factor code into subroutines
-
- * sunspider: improved argument handling
-
-2007-10-20 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Mark.
-
- - Add more new tests, mostly from the computer language shootout. Not normalized yet.
-
- * TODO:
- * tests/LIST:
- * tests/access-binary-trees.js: Added.
- * tests/access-nsieve.js: Added.
- * tests/bitops-nsieve-bits.js: Added.
- * tests/math-partial-sums.js: Added.
- * tests/math-spectral-norm.js: Added.
- * tests/string-fasta.js: Added.
-
-2007-10-20 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin Adler.
-
- * TODO: Updated to note areas that are now well-covered.
-
- - Change the tests and the driver to avoid leaving large object
- graphs hanging around, since that throws off the subsequent tests.
-
- * resources/sunspider-standalone-driver.js:
- * tests/3d-cube.js:
- * tests/3d-morph.js:
- * tests/3d-raytrace.js:
- * tests/bitops-bitwise-and.js:
- * tests/string-base64.js:
- * tests/string-tagcloud.js:
-
-2007-10-20 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Nikolas.
-
- - Rebalance test complexity.
-
- Scaled all the tests so they take 400-600ms on a reasonably normal user setup:
-
- Internet Explorer 7, Window XP, Dell Latitude D810 with a 2.13GHz Pentium M
-
- However, for some tests, IE7 was a huge outlier compared to other
- major browsers. For those tests, I used Firefox 2.0.0.8 on the
- same OS and hardware as a normalization basis.
-
- * tests/3d-morph.js:
- * tests/3d-raytrace.js:
- * tests/bitops-3bit-bits-in-byte.js:
- * tests/bitops-bits-in-byte.js:
- * tests/bitops-bitwise-and.js:
- * tests/math-cordic.js:
- * tests/string-base64.js:
- * tests/string-tagcloud.js:
- * tests/string-unpack-code.js:
-
-2007-10-20 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - Fix the browser-hosted driver to be compatible with Safari 2
-
- * hosted/sunspider-driver.html:
-
-2007-10-20 Maciej Stachowiak <mjs@apple.com>
-
- Rubber stamped by Hyatt.
-
- - Add BSD license notice to cordic test, the original author said to do so.
-
- * tests/math-cordic.js:
-
-2007-10-18 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Eric.
-
- - Support Windows and Windows browsers.
-
- * hosted/sunspider-results.html: Display results correctly in IE.
- * sunspider: tweaks to work on Windows, and with spaces in the path.
-
-2007-10-18 Maciej Stachowiak <mjs@apple.com>
-
- Rubber stamped by Oliver.
-
- * tests/string-tagcloud.js: Remove stray print()
-
-2007-10-17 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- Add some string test cases.
-
- * tests/string-base64.js: Added. Does base64 encoding and decoding.
- * tests/string-tagcloud.js: Added. Parses a JSON string and
- generates tagcloud HTML markup based on the data.
- * tests/string-unpack-code.js: Added. Unpack compressed versions of
- four of the most popular JavaScript libraries.
- * tests/LIST: Added the new tests.
-
-2007-10-16 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Anders.
-
- * TODO: Updated with info on how to do the stats properly.
-
- * hosted/sunspider-driver.html: Reduce timeout from 500 to 200 to
- avoid overly slowing down the benchmark.
-
- Added some 3D-related test cases.
-
- * tests/3d-cube.js: Added.
- * tests/3d-morph.js: Added.
- * tests/3d-raytrace.js: Added.
- * tests/LIST:
-
-2007-10-14 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin Adler.
-
- - New JavaScript benchmark
- http://bugs.webkit.org/show_bug.cgi?id=15515
-
- A start on a new JavaScript benchmark, with standalone and
- browser-hosted drivers.
-
- The test content is still incomplete and the drivers could use
- some more features but there is enough here to make a good start.
-
- The drivers compute a 95% confidence interval on the mean for the
- whole test, each category, and each individual test to make it
- easier to tell whether differences are statistically
- significant. The confidence interval can be narrowed by running
- the test more times.
-
- * TODO: Added. Remaining things that need to be done.
- * sunspider: Added. Perl script that acts as the standalone test driver.
- * resources/sunspider-standalone-driver.js: Added. JavaScript part
- of standalone test driver.
- * resources/sunspider-analyze-results.js: Added. JavaScript statistical
- analysis code.
- * resources/TEMPLATE.html: Added. Template for browser-hosted tests.
- * make-hosted: Added. Script to generate browser-hosted tests.
- * hosted/sunspider.html: Added. Start page for browser-hosted test.
- * hosted/sunspider-driver.html: Added. Driver for browser-hosted tests.
- * hosted/sunspider-results.html: Added. Results page for browser-hosted
- tests.
- * hosted/sunspider-record-result.js: Added. Helper file for browser-hosted
- tests.
- * tests/LIST: Added. List of tests to use.
- * tests/bitops-3bit-bits-in-byte.js: Added. Some initial test content.
- * tests/bitops-bits-in-byte.js: Added. Ditto.
- * tests/bitops-bitwise-and.js: Added. Ditto.
- * tests/math-cordic.js: Added. Ditto.
-
diff --git a/SunSpider/TODO b/SunSpider/TODO
deleted file mode 100644
index fee4bc0..0000000
--- a/SunSpider/TODO
+++ /dev/null
@@ -1,70 +0,0 @@
-
-* Add more test cases. Categories we'd like to cover (with reasonably
- real-world tests, preferably not microbenchmarks) include:
-
- (X marks the ones that are fairly well covered now).
-
- X math (general)
- X bitops
- X 3-d (the math bits)
- - crypto / encoding
- X string processing
- - regexps
- - date processing
- - array processing
- - control flow
- - function calls / recursion
- - object access (unclear if it is possible to make a realistic
- benchmark that isolates this)
-
- I'd specifically like to add all the computer language shootout
- tests that Mozilla is using.
-
-* Normalize tests. Most of the test cases available have a repeat
- count of some sort, so the time they take can be tuned. The tests
- should be tuned so that each category contributes about the same
- total, and so each test in each category contributes about the same
- amount. The question is, what implementation should be the baseline?
- My current thought is to either pick some specific browser on a
- specific platform (IE 7 or Firefox 2 perhaps), or try to target the
- average that some set of same-generation release browsers get on
- each test. The latter is more work. IE7 is probably a reasonable
- normalization target since it is the latest version of the most
- popular browser, so results on this benchmark will tell you how much
- you have to gain or lose by using a different browser.
-
-* Instead of using the standard error, the correct way to calculate
- a 95% confidence interval for a small sample is the t-test.
- <http://en.wikipedia.org/wiki/Student%27s_t-test>. Basically this involves
- using values from a 2-tailed t-distribution table instead of 1.96 to
- multiply by the error function, a table is available at
- <http://www.medcalc.be/manual/t-distribution.php>
-
-* Add support to compare two different engines (or two builds of the
- same engine) interleaved.
-
-* Add support to compare two existing sets of saved results.
-
-* Allow repeat count to be controlled from the browser-hosted version
- and the WebKitTools wrapper script.
-
-* Add support to run only a subset of the tests (both command-line and
- web versions).
-
-* Add a profile mode for the command-line version that runs the tests
- repeatedly in the same command-line interpreter instance, for ease
- of profiling.
-
-* Make the browser-hosted version prettier, both in general design and
- maybe using bar graphs for the output.
-
-* Make it possible to track change over time and generate a graph per
- result showing result and error bar for each version.
-
-* Hook up to automated testing / buildbot infrastructure.
-
-* Possibly... add the ability to download iBench from its original
- server, pull out the JS test content, preprocess it, and add it as a
- category to the benchmark.
-
-* Profit.
diff --git a/SunSpider/UNCOVERED b/SunSpider/UNCOVERED
deleted file mode 100644
index 2a34572..0000000
--- a/SunSpider/UNCOVERED
+++ /dev/null
@@ -1,99 +0,0 @@
-
-The following language features are not covered:
-
-Operators:
-
->>>=
-^=
-%=
-in
-prefix --
->>=
-delete
-void
-instanceof
-
-
-statements:
-
-with
-switch
-
-
-core language feaures:
-
-getters / setters
-closure data access
-heavy use of first-class functions
-
-Builtins:
-
-String.search
-
-Number.toFixed
-Number.toExponential
-Number.toPrecision
-
-RegExp.exec
-RegExp custom properties
-
-Function.apply
-Function.call
-
-parseInt
-parseFloat
-escape
-unescape
-decodeURI
-encodeURI
-
-
-Date.toDateString
-Date.toTimeString
-Date.getUTCFullYear
-Date.getUTCMonth
-Date.getUTCDate
-Date.getUTCDay
-Date.getUTCSeconds
-Date.getMilliseconds
-Date.getUTCMilliseconds
-Date.set*
-
-
-Math.E
-Math.LN2
-Math.LN10
-Math.LOG2E
-Math.LOG10E
-Math.SQRT1_2
-Math.SQRT2
-Math.acos
-Math.asin
-Math.atan
-Math.atan2
-Math.exp
-Math.min
-Math.tan
-
-Object.hasOwnProperty
-Object.propertyIsEnumerable
-Object.isPrototypeOf
-
-
-Array.concat
-Array.join
-Array.pop
-Array.push
-Array.reverse
-Array.shift
-Array.slice
-Array.sort
-Array.splice
-Array.unshift
-Array.every
-Array.forEach
-Array.some
-Array.indexOf
-Array.lastIndexOf
-Array.filter
-Array.map
diff --git a/SunSpider/hosted/sunspider-driver.html b/SunSpider/hosted/sunspider-driver.html
deleted file mode 100644
index 16fbca9..0000000
--- a/SunSpider/hosted/sunspider-driver.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<!--
- Copyright (C) 2007 Apple Inc. All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--->
-
-<title>SunSpider JavaScript Benchmark (In Progress...)</title>
-<link rel="stylesheet" href="sunspider.css"></link>
-</head>
-
-<body onload="next()">
-
-<h2><span id="logo">&#x2600;</span>SunSpider JavaScript Benchmark <small>(In Progress...)</small></h2>
-
-<script src="sunspider-test-prefix.js"></script>
-<script>
-var testIndex = -1;
-var currentRepeat = 0;
-var repeatCount = 5;
-
-var output = [];
-output.length = repeatCount;
-for (var i = 0; i < output.length; i++) {
- output[i] = {};
-}
-
-function next()
-{
- window.setTimeout(reallyNext, 500);
-}
-
-function reallyNext()
-{
- testIndex++;
- if (testIndex < tests.length) {
- document.getElementById("testframe").src = tests[testIndex] + ".html";
- } else if (++currentRepeat < repeatCount) {
- testIndex = 0;
- document.getElementById("testframe").src = tests[testIndex] + ".html";
- } else {
- finish();
- }
-}
-
-function recordResult(time)
-{
- output[currentRepeat][tests[testIndex]] = time;
- next();
-}
-
-function finish()
-{
- var outputString = "{";
- for (var test in output[0]) {
- outputString += '"' + test + '":[';
- for (var i = 0; i < output.length; i++) {
- outputString += output[i][test] + ",";
- }
- outputString = outputString.substring(0, outputString.length - 1);
- outputString += "],";
- }
- outputString = outputString.substring(0, outputString.length - 1);
- outputString += "}";
-
- location = "sunspider-results.html?" + encodeURI(outputString);
-}
-
-</script>
-
-<iframe id="testframe">
-</iframe>
-
-</body>
-</html>
diff --git a/SunSpider/hosted/sunspider-record-result.js b/SunSpider/hosted/sunspider-record-result.js
deleted file mode 100644
index f86749a..0000000
--- a/SunSpider/hosted/sunspider-record-result.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-function record(time) {
- document.getElementById("console").innerHTML = time + "ms";
- if (window.parent) {
- parent.recordResult(time);
- }
-}
diff --git a/SunSpider/hosted/sunspider-results.html b/SunSpider/hosted/sunspider-results.html
deleted file mode 100644
index cc74938..0000000
--- a/SunSpider/hosted/sunspider-results.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<!--
- Copyright (C) 2007 Apple Inc. All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--->
-
-<title>SunSpider JavaScript Benchmark Results</title>
-<link rel="stylesheet" href="sunspider.css"></link>
-</head>
-
-<body>
-<h2><span id="logo">&#x2600;</span>SunSpider JavaScript Benchmark Results</h2>
-
-<p><a href="sunspider-driver.html">Run Again</a></p>
-
-<p><input style="width: 90%;" id="selfUrl" type="text" readonly="readonly"></input><br>
-<small>(You can bookmark this results URL for later comparison.)</small></p>
-
-<form onsubmit="event.preventDefault(); compare(other.value);">To compare to another run, paste a saved result URL in the text field below and press enter:<br>
-<input style="width: 90%;" name="other" type="text"></input><br>
-</form>
-
-<pre id="console">
-</pre>
-
-
-<script>
-var selfUrlInput = document.getElementById("selfUrl");
-selfUrlInput.value = location;
-
-var output = pivot(eval("(" + decodeURI(location.search.substring(1)) + ")"));
-
-function pivot(input) {
- var output = [];
- for (var test in input) {
- for (var i = 0; i < input[test].length; i++) {
- if (!output[i])
- output[i] = {};
- output[i][test] = input[test][i];
- }
- }
- return output;
-}
-
-function print(str) {
- var console = document.getElementById("console");
- console.appendChild(document.createTextNode(str));
- console.appendChild(document.createElement("br"));
-}
-</script>
-
-<script src="sunspider-test-prefix.js"></script>
-<script src="sunspider-analyze-results.js"></script>
-<script src="sunspider-compare-results.js"></script>
-
-<script>
-var output2 = output;
-
-function compare(other)
-{
- document.getElementById("console").innerHTML = "";
- var output1 = pivot(eval("(" + decodeURI(other.split("?")[1]) + ")"));
- sunspiderCompareResults(output1, output2);
-}
-</script>
-
-
-</body>
-</html>
diff --git a/SunSpider/hosted/sunspider.css b/SunSpider/hosted/sunspider.css
deleted file mode 100644
index 7a17979..0000000
--- a/SunSpider/hosted/sunspider.css
+++ /dev/null
@@ -1,31 +0,0 @@
-
-body { font-family: sans-serif;
- margin: 20px;
- background-color: #D9D5A1;
- color: #1B0636 }
-
-h2 { background-color: #4E8AB9;
- margin: -20px -20px 0px -20px;
- padding: 30px 20px 30px 20px;
- color: yellow;
- border-bottom: 2px solid #360D6B;
- zoom: 1.0 /* I CAN HAS LAYOUT? (ie hack) */ }
-
-dt { font-weight: bold }
-
-dd { margin-bottom: 1em; margin-top: 0.5em }
-
-:link { color: #1363A1 }
-:visited { color: #5113A1 }
-
-#testframe { margin-top: 20px;
- width: 80%;
- height: 500px;
- border: 2px solid #360D6B }
-
-#logo { float: left;
- position: relative;
- bottom: 0.33em;
- padding-right: 20px;
- margin-bottom: -40px;
- font-size: 3em }
diff --git a/SunSpider/hosted/sunspider.html b/SunSpider/hosted/sunspider.html
deleted file mode 100644
index f7dfd42..0000000
--- a/SunSpider/hosted/sunspider.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-
-<!--
- Copyright (C) 2007 Apple Inc. All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--->
-
-<title>SunSpider JavaScript Benchmark</title>
-<link rel="stylesheet" href="sunspider.css"></link>
-</head>
-
-<body>
-
-<h2><span id="logo">&#x2600;</span>SunSpider JavaScript Benchmark</h2>
-
-<p>This is SunSpider, a JavaScript benchmark. This benchmark tests the
-core JavaScript language only, not the DOM or other browser APIs. It
-is designed to compare different versions of the same browser, and
-different browsers to each other. Unlike many widely available
-JavaScript benchmarks, this test is:</p>
-
-<dl>
-<dt>Real World<dt>
-<dd>This test mostly avoids microbenchmarks, and tries to focus on
-the kinds of actual problems developers solve with JavaScript today,
-and the problems they may want to tackle in the future as the language
-gets faster. This includes tests to generate a tagcloud from JSON
-input, a 3D raytracer, cryptography tests, code decompression, and
-many more examples. There are a few microbenchmarkish things, but they
-mostly represent real performance problems that developers have
-encountered.</dd>
-
-<dt>Balanced<dt>
-<dd>This test is balanced between different areas of the language and
-different types of code. It's not all math, all string processing, or
-all timing simple loops. In addition to having tests in many
-categories, the individual tests were balanced to take similar amounts
-of time on currently shipping versions of popular browsers.</dd>
-
-<dt>Statistically Sound<dt>
-<dd>One of the challenges of benchmarking is knowing how much noise
-you have in your measurements. This benchmark runs each test multiple
-times and determines an error range (technically, a 95% confidence
-interval). In addition, in comparison mode it tells you if you have
-enough data to determine if the difference is statistically
-significant.</dd>
-
-</dl>
-
-<p><a href="sunspider-driver.html">Start Now!</a><br>
-<small>(When you run the benchmark, be patient - it loops through all of the
-test cases five times and can take a minute or longer to complete.)</small></p>
-
-</body>
-
-</html>
diff --git a/SunSpider/make-hosted b/SunSpider/make-hosted
deleted file mode 100755
index 303de56..0000000
--- a/SunSpider/make-hosted
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2007 Apple Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
-# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-use strict;
-
-open TEMPLATE, "<resources/TEMPLATE.html";
-my $template = do { local $/; <TEMPLATE> };
-close TEMPLATE;
-
-my @tests = ();
-my @categories = ();
-my %uniqueCategories = ();
-
-open TESTLIST, "<./tests/LIST";
-while (<TESTLIST>) {
- chomp;
- next unless $_;
- push @tests, $_;
- my $category = $_;
- $category =~ s/-.*//;
- if (!$uniqueCategories{$category}) {
- push @categories, $category;
- $uniqueCategories{$category} = $category;
- }
-}
-close TESTLIST;
-
-for my $test (@tests) {
- my $name = "${test}";
-
- open SCRIPT, "<tests/${test}.js";
- my $script = do { local $/; <SCRIPT> };
- close SCRIPT;
-
- my $output = $template;
- $output =~ s/\@NAME\@/${name}/g;
- $output =~ s/\@SCRIPT\@/${script}/g;
-
- open OUTPUT, ">hosted/${test}.html";
- print OUTPUT $output;
- close OUTPUT;
-}
-
-
-my $prefix = "var tests = [ " . join(", ", map { '"' . $_ . '"' } @tests) . " ];\n";
-$prefix .= "var categories = [ " . join(", ", map { '"' . $_ . '"' } @categories) . " ];\n";
-
-open PREFIX, ">hosted/sunspider-test-prefix.js";
-print PREFIX $prefix;
-close PREFIX;
-
-system("cp resources/sunspider-analyze-results.js hosted");
-system("cp resources/sunspider-compare-results.js hosted");
-
-print "hosted/sunspider.html is ready to use.\n";
diff --git a/SunSpider/resources/TEMPLATE.html b/SunSpider/resources/TEMPLATE.html
deleted file mode 100644
index 926150d..0000000
--- a/SunSpider/resources/TEMPLATE.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE html>
-<head>
-<!--
- Copyright (C) 2007 Apple Inc. All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--->
-
-<title>SunSpider @NAME@</title>
-<link rel="stylesheet" href="sunspider.css"></link>
-</head>
-
-<body>
-<h3>@NAME@</h3>
-<div id="console">
-</div>
-<script src="sunspider-record-result.js"></script>
-<script>
-
-var _sunSpiderStartDate = new Date();
-
-@SCRIPT@
-
-var _sunSpiderInterval = new Date() - _sunSpiderStartDate;
-
-record(_sunSpiderInterval);
-</script>
-
-
-</body>
-</html>
diff --git a/SunSpider/resources/sunspider-analyze-results.js b/SunSpider/resources/sunspider-analyze-results.js
deleted file mode 100644
index d849f59..0000000
--- a/SunSpider/resources/sunspider-analyze-results.js
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-var count = output.length;
-
-var itemTotals = {};
-itemTotals.length = count;
-
-var total = 0;
-var categoryTotals = {};
-var testTotalsByCategory = {};
-
-var mean = 0;
-var categoryMeans = {};
-var testMeansByCategory = {};
-
-var stdDev = 0;
-var categoryStdDevs = {};
-var testStdDevsByCategory = {};
-
-var stdErr = 0;
-var categoryStdErrs = {};
-var testStdErrsByCategory = {};
-
-function initialize()
-{
- itemTotals = {total: []};
-
- for (var i = 0; i < categories.length; i++) {
- var category = categories[i];
- itemTotals[category] = [];
- categoryTotals[category] = 0;
- testTotalsByCategory[category] = {};
- categoryMeans[category] = 0;
- testMeansByCategory[category] = {};
- categoryStdDevs[category] = 0;
- testStdDevsByCategory[category] = {};
- categoryStdErrs[category] = 0;
- testStdErrsByCategory[category] = {};
- }
-
- for (var i = 0; i < tests.length; i++) {
- var test = tests[i];
- itemTotals[test] = [];
- var category = test.replace(/-.*/, "");
- testTotalsByCategory[category][test] = 0;
- testMeansByCategory[category][test] = 0;
- testStdDevsByCategory[category][test] = 0;
- testStdErrsByCategory[category][test] = 0;
- }
-
- for (var i = 0; i < count; i++) {
- itemTotals["total"][i] = 0;
- for (var category in categoryTotals) {
- itemTotals[category][i] = 0;
- for (var test in testTotalsByCategory[category]) {
- itemTotals[test][i] = 0;
- }
- }
- }
-}
-
-function computeItemTotals()
-{
- for (var i = 0; i < output.length; i++) {
- var result = output[i];
- for (var test in result) {
- var time = result[test];
- var category = test.replace(/-.*/, "");
- itemTotals["total"][i] += time;
- itemTotals[category][i] += time;
- itemTotals[test][i] += time;
- }
- }
-}
-
-function computeTotals()
-{
- for (var i = 0; i < output.length; i++) {
- var result = output[i];
- for (var test in result) {
- var time = result[test];
- var category = test.replace(/-.*/, "");
- total += time;
- categoryTotals[category] += time;
- testTotalsByCategory[category][test] += time;
- }
- }
-}
-
-function computeMeans()
-{
- mean = total / count;
- for (var category in categoryTotals) {
- categoryMeans[category] = categoryTotals[category] / count;
- for (var test in testTotalsByCategory[category]) {
- testMeansByCategory[category][test] = testTotalsByCategory[category][test] / count;
- }
- }
-}
-
-function standardDeviation(mean, items)
-{
- var deltaSquaredSum = 0;
- for (var i = 0; i < items.length; i++) {
- var delta = items[i] - mean;
- deltaSquaredSum += delta * delta;
- }
- variance = deltaSquaredSum / (items.length - 1);
- return Math.sqrt(variance);
-}
-
-function computeStdDevs()
-{
- stdDev = standardDeviation(mean, itemTotals["total"]);
- for (var category in categoryStdDevs) {
- categoryStdDevs[category] = standardDeviation(categoryMeans[category], itemTotals[category]);
- }
- for (var category in categoryStdDevs) {
- for (var test in testStdDevsByCategory[category]) {
- testStdDevsByCategory[category][test] = standardDeviation(testMeansByCategory[category][test], itemTotals[test]);
- }
- }
-}
-
-function computeStdErrors()
-{
- var sqrtCount = Math.sqrt(count);
-
- stdErr = stdDev / sqrtCount;
- for (var category in categoryStdErrs) {
- categoryStdErrs[category] = categoryStdDevs[category] / sqrtCount;
- }
- for (var category in categoryStdDevs) {
- for (var test in testStdErrsByCategory[category]) {
- testStdErrsByCategory[category][test] = testStdDevsByCategory[category][test] / sqrtCount;
- }
- }
-
-}
-
-var tDistribution = [NaN, NaN, 12.71, 4.30, 3.18, 2.78, 2.57, 2.45, 2.36, 2.31, 2.26, 2.23, 2.20, 2.18, 2.16, 2.14, 2.13, 2.12, 2.11, 2.10, 2.09, 2.09, 2.08, 2.07, 2.07, 2.06, 2.06, 2.06, 2.05, 2.05, 2.05, 2.04, 2.04, 2.04, 2.03, 2.03, 2.03, 2.03, 2.03, 2.02, 2.02, 2.02, 2.02, 2.02, 2.02, 2.02, 2.01, 2.01, 2.01, 2.01, 2.01, 2.01, 2.01, 2.01, 2.01, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.96];
-var tMax = tDistribution.length;
-var tLimit = 1.96;
-
-function tDist(n)
-{
- if (n > tMax)
- return tLimit;
- return tDistribution[n];
-}
-
-
-function formatResult(meanWidth, mean, stdErr, n)
-{
- var meanString = mean.toFixed(1).toString();
- while (meanString.length < meanWidth) {
- meanString = " " + meanString;
- }
-
- if (n == 1)
- return meanString + "ms";
-
- return meanString + "ms +/- " + ((tDist(n) * stdErr / mean) * 100).toFixed(1) + "%";
-}
-
-function computeLabelWidth()
-{
- var width = "Total".length;
- for (var category in categoryMeans) {
- if (category.length + 2 > width)
- width = category.length + 2;
- }
- for (var i = 0; i < tests.length; i++) {
- var shortName = tests[i].replace(/^[^-]*-/, "");
- if (shortName.length + 4 > width)
- width = shortName.length + 4;
- }
-
- return width;
-}
-
-function computeMeanWidth()
-{
- var width = mean.toFixed(1).toString().length;
- for (var category in categoryMeans) {
- var candidate = categoryMeans[category].toFixed(2).toString().length;
- if (candidate > width)
- width = candidate;
- for (var test in testMeansByCategory[category]) {
- var candidate = testMeansByCategory[category][test].toFixed(2).toString().length;
- if (candidate > width)
- width = candidate;
- }
- }
-
- return width;
-}
-
-function resultLine(labelWidth, indent, label, meanWidth, mean, stdErr)
-{
- var result = "";
- for (i = 0; i < indent; i++) {
- result += " ";
- }
-
- result += label + ": ";
-
- for (i = 0; i < (labelWidth - (label.length + indent)); i++) {
- result += " ";
- }
-
- return result + formatResult(meanWidth, mean, stdErr, count);
-}
-
-function printOutput()
-{
- var labelWidth = computeLabelWidth();
- var meanWidth = computeMeanWidth();
-
- print("\n");
- print("============================================");
- if (count == 1)
- print("RESULTS");
- else
- print("RESULTS (means and 95% confidence intervals)");
- print("--------------------------------------------");
- print(resultLine(labelWidth, 0, "Total", meanWidth, mean, stdErr));
- print("--------------------------------------------");
- for (var category in categoryMeans) {
- print("");
- print(resultLine(labelWidth, 2, category, meanWidth, categoryMeans[category], categoryStdErrs[category]));
- for (var test in testMeansByCategory[category]) {
- var shortName = test.replace(/^[^-]*-/, "");
- print(resultLine(labelWidth, 4, shortName, meanWidth, testMeansByCategory[category][test], testStdErrsByCategory[category][test]));
- }
- }
-}
-
-initialize();
-computeItemTotals();
-computeTotals();
-computeMeans();
-computeStdDevs();
-computeStdErrors();
-printOutput();
diff --git a/SunSpider/resources/sunspider-compare-results.js b/SunSpider/resources/sunspider-compare-results.js
deleted file mode 100644
index 887b8db..0000000
--- a/SunSpider/resources/sunspider-compare-results.js
+++ /dev/null
@@ -1,380 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-function sunspiderCompareResults(output1, output2)
-{
- var count1 = output1.length;
- var count2 = output2.length;
-
- var itemTotals1 = {};
- itemTotals1.length = count1;
-
- var total1 = 0;
- var categoryTotals1 = {};
- var testTotalsByCategory1 = {};
-
- var mean1 = 0;
- var categoryMeans1 = {};
- var testMeansByCategory1 = {};
-
- var stdDev1 = 0;
- var categoryStdDevs1 = {};
- var testStdDevsByCategory1 = {};
-
- var stdErr1 = 0;
- var categoryStdErrs1 = {};
- var testStdErrsByCategory1 = {};
-
- var itemTotals2 = {};
- itemTotals2.length = count2;
-
- var total2 = 0;
- var categoryTotals2 = {};
- var testTotalsByCategory2 = {};
-
- var mean2 = 0;
- var categoryMeans2 = {};
- var testMeansByCategory2 = {};
-
- var stdDev2 = 0;
- var categoryStdDevs2 = {};
- var testStdDevsByCategory2 = {};
-
- var stdErr2 = 0;
- var categoryStdErrs2 = {};
- var testStdErrsByCategory2 = {};
-
- function initialize()
- {
- itemTotals1 = {total: []};
-
- for (var i = 0; i < categories.length; i++) {
- var category = categories[i];
- itemTotals1[category] = [];
- categoryTotals1[category] = 0;
- testTotalsByCategory1[category] = {};
- categoryMeans1[category] = 0;
- testMeansByCategory1[category] = {};
- categoryStdDevs1[category] = 0;
- testStdDevsByCategory1[category] = {};
- categoryStdErrs1[category] = 0;
- testStdErrsByCategory1[category] = {};
- }
-
- for (var i = 0; i < tests.length; i++) {
- var test = tests[i];
- itemTotals1[test] = [];
- var category = test.replace(/-.*/, "");
- testTotalsByCategory1[category][test] = 0;
- testMeansByCategory1[category][test] = 0;
- testStdDevsByCategory1[category][test] = 0;
- testStdErrsByCategory1[category][test] = 0;
- }
-
- for (var i = 0; i < count1; i++) {
- itemTotals1["total"][i] = 0;
- for (var category in categoryTotals1) {
- itemTotals1[category][i] = 0;
- for (var test in testTotalsByCategory1[category]) {
- itemTotals1[test][i] = 0;
- }
- }
- }
-
- itemTotals2 = {total: []};
-
- for (var i = 0; i < categories.length; i++) {
- var category = categories[i];
- itemTotals2[category] = [];
- categoryTotals2[category] = 0;
- testTotalsByCategory2[category] = {};
- categoryMeans2[category] = 0;
- testMeansByCategory2[category] = {};
- categoryStdDevs2[category] = 0;
- testStdDevsByCategory2[category] = {};
- categoryStdErrs2[category] = 0;
- testStdErrsByCategory2[category] = {};
- }
-
- for (var i = 0; i < tests.length; i++) {
- var test = tests[i];
- itemTotals2[test] = [];
- var category = test.replace(/-.*/, "");
- testTotalsByCategory2[category][test] = 0;
- testMeansByCategory2[category][test] = 0;
- testStdDevsByCategory2[category][test] = 0;
- testStdErrsByCategory2[category][test] = 0;
- }
-
- for (var i = 0; i < count2; i++) {
- itemTotals2["total"][i] = 0;
- for (var category in categoryTotals2) {
- itemTotals2[category][i] = 0;
- for (var test in testTotalsByCategory2[category]) {
- itemTotals2[test][i] = 0;
- }
- }
- }
-
- }
-
- function computeItemTotals(output, itemTotals)
- {
- for (var i = 0; i < output.length; i++) {
- var result = output[i];
- for (var test in result) {
- var time = result[test];
- var category = test.replace(/-.*/, "");
- itemTotals["total"][i] += time;
- itemTotals[category][i] += time;
- itemTotals[test][i] += time;
- }
- }
- }
-
- function computeTotals(output, categoryTotals, testTotalsByCategory)
- {
- var total = 0;
-
- for (var i = 0; i < output.length; i++) {
- var result = output[i];
- for (var test in result) {
- var time = result[test];
- var category = test.replace(/-.*/, "");
- total += time;
- categoryTotals[category] += time;
- testTotalsByCategory[category][test] += time;
- }
- }
-
- return total;
- }
-
- function computeMeans(count, total, categoryTotals, categoryMeans, testTotalsByCategory, testMeansByCategory)
- {
- var mean = total / count;
- for (var category in categoryTotals) {
- categoryMeans[category] = categoryTotals[category] / count;
- for (var test in testTotalsByCategory[category]) {
- testMeansByCategory[category][test] = testTotalsByCategory[category][test] / count;
- }
- }
- return mean;
- }
-
- function standardDeviation(mean, items)
- {
- var deltaSquaredSum = 0;
- for (var i = 0; i < items.length; i++) {
- var delta = items[i] - mean;
- deltaSquaredSum += delta * delta;
- }
- variance = deltaSquaredSum / (items.length - 1);
- return Math.sqrt(variance);
- }
-
- function computeStdDevs(mean, itemTotals, categoryStdDevs, categoryMeans, testStdDevsByCategory, testMeansByCategory)
- {
- var stdDev = standardDeviation(mean, itemTotals["total"]);
- for (var category in categoryStdDevs) {
- categoryStdDevs[category] = standardDeviation(categoryMeans[category], itemTotals[category]);
- }
- for (var category in categoryStdDevs) {
- for (var test in testStdDevsByCategory[category]) {
- testStdDevsByCategory[category][test] = standardDeviation(testMeansByCategory[category][test], itemTotals[test]);
- }
- }
- return stdDev;
- }
-
- function computeStdErrors(count, stdDev, categoryStdErrs, categoryStdDevs, testStdErrsByCategory, testStdDevsByCategory)
- {
- var sqrtCount = Math.sqrt(count);
-
- var stdErr = stdDev / sqrtCount;
- for (var category in categoryStdErrs) {
- categoryStdErrs[category] = categoryStdDevs[category] / sqrtCount;
- }
- for (var category in categoryStdDevs) {
- for (var test in testStdErrsByCategory[category]) {
- testStdErrsByCategory[category][test] = testStdDevsByCategory[category][test] / sqrtCount;
- }
- }
-
- return stdErr;
- }
-
- var tDistribution = [NaN, NaN, 12.71, 4.30, 3.18, 2.78, 2.57, 2.45, 2.36, 2.31, 2.26, 2.23, 2.20, 2.18, 2.16, 2.14, 2.13, 2.12, 2.11, 2.10, 2.09, 2.09, 2.08, 2.07, 2.07, 2.06, 2.06, 2.06, 2.05, 2.05, 2.05, 2.04, 2.04, 2.04, 2.03, 2.03, 2.03, 2.03, 2.03, 2.02, 2.02, 2.02, 2.02, 2.02, 2.02, 2.02, 2.01, 2.01, 2.01, 2.01, 2.01, 2.01, 2.01, 2.01, 2.01, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.99, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.98, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.97, 1.96];
- var tMax = tDistribution.length;
- var tLimit = 1.96;
-
- function tDist(n)
- {
- if (n > tMax)
- return tLimit;
- return tDistribution[n];
- }
-
-
- function formatMean(meanWidth, mean, stdErr, count)
- {
- var meanString = mean.toFixed(1).toString();
- while (meanString.length < meanWidth) {
- meanString = " " + meanString;
- }
-
- var error = "+/- " + ((tDist(count) * stdErr / mean) * 100).toFixed(1) + "% ";
-
- return meanString + "ms " + error;
- }
-
- function computeLabelWidth()
- {
- var width = "Total".length;
- for (var category in categoryMeans1) {
- if (category.length + 2 > width)
- width = category.length + 2;
- }
- for (var i = 0; i < tests.length; i++) {
- var shortName = tests[i].replace(/^[^-]*-/, "");
- if (shortName.length + 4 > width)
- width = shortName.length + 4;
- }
-
- return width;
- }
-
- function computeMeanWidth(mean, categoryMeans, testMeansByCategory)
- {
- var width = mean.toFixed(1).toString().length;
- for (var category in categoryMeans) {
- var candidate = categoryMeans[category].toFixed(1).toString().length;
- if (candidate > width)
- width = candidate;
- for (var test in testMeansByCategory[category]) {
- var candidate = testMeansByCategory[category][test].toFixed(1).toString().length;
- if (candidate > width)
- width = candidate;
- }
- }
-
- return width;
- }
-
- function pad(str, n)
- {
- while (str.length < n) {
- str += " ";
- }
- return str;
- }
-
- function resultLine(labelWidth, indent, label, meanWidth1, mean1, stdErr1, meanWidth2, mean2, stdErr2)
- {
- result = pad("", indent);
- result += label + ": ";
- result = pad(result, labelWidth + 2);
-
- var t = (mean1 - mean2) / (Math.sqrt((stdErr1 * stdErr1) + (stdErr1 * stdErr2)));
- var df = count1 + count2 - 2;
-
- var statisticallySignificant = (Math.abs(t) > tDist(df+1));
- var diff = mean2 - mean1;
- var percentage = 100 * diff / mean1;
- var isFaster = diff < 0;
- var probablySame = (percentage < 0.1) && !statisticallySignificant;
- var ratio = isFaster ? (mean1 / mean2) : (mean2 / mean1);
- var fixedRatio = (ratio < 1.2) ? ratio.toFixed(3).toString() : ((ratio < 10) ? ratio.toFixed(2).toString() : ratio.toFixed(1).toString());
- var formattedRatio = isFaster ? fixedRatio + "x as fast" : "*" + fixedRatio + "x as slow*";
-
- var diffSummary;
- var diffDetail;
-
- if (probablySame) {
- diffSummary = "-";
- diffDetail = "";
- } else if (!statisticallySignificant) {
- diffSummary = "??";
- diffDetail = " not conclusive: might be " + formattedRatio;
- } else {
- diffSummary = formattedRatio;
- diffDetail = " significant";
- }
-
- return result + pad(diffSummary, 18) + formatMean(meanWidth1, mean1, stdErr1, count1) + " " + formatMean(meanWidth2, mean2, stdErr2, count2) + diffDetail;
- }
-
- function printOutput()
- {
- var labelWidth = computeLabelWidth();
- var meanWidth1 = computeMeanWidth(mean1, categoryMeans1, testMeansByCategory1);
- var meanWidth2 = computeMeanWidth(mean2, categoryMeans2, testMeansByCategory2);
-
- print("\n");
- var header = "TEST";
- while (header.length < labelWidth)
- header += " ";
- header += " COMPARISON FROM TO DETAILS";
- print(header);
- print("");
- print("=============================================================================");
- print("");
- print(resultLine(labelWidth, 0, "** TOTAL **", meanWidth1, mean1, stdErr1, meanWidth2, mean2, stdErr2));
- print("");
- print("=============================================================================");
-
- for (var category in categoryMeans1) {
- print("");
- print(resultLine(labelWidth, 2, category,
- meanWidth1, categoryMeans1[category], categoryStdErrs1[category],
- meanWidth2, categoryMeans2[category], categoryStdErrs2[category]));
- for (var test in testMeansByCategory1[category]) {
- var shortName = test.replace(/^[^-]*-/, "");
- print(resultLine(labelWidth, 4, shortName,
- meanWidth1, testMeansByCategory1[category][test], testStdErrsByCategory1[category][test],
- meanWidth2, testMeansByCategory2[category][test], testStdErrsByCategory2[category][test]));
- }
- }
- }
-
- initialize();
-
- computeItemTotals(output1, itemTotals1);
- computeItemTotals(output2, itemTotals2);
-
- total1 = computeTotals(output1, categoryTotals1, testTotalsByCategory1);
- total2 = computeTotals(output2, categoryTotals2, testTotalsByCategory2);
-
- mean1 = computeMeans(count1, total1, categoryTotals1, categoryMeans1, testTotalsByCategory1, testMeansByCategory1);
- mean2 = computeMeans(count2, total2, categoryTotals2, categoryMeans2, testTotalsByCategory2, testMeansByCategory2);
-
- stdDev1 = computeStdDevs(mean1, itemTotals1, categoryStdDevs1, categoryMeans1, testStdDevsByCategory1, testMeansByCategory1);
- stdDev2 = computeStdDevs(mean2, itemTotals2, categoryStdDevs2, categoryMeans2, testStdDevsByCategory2, testMeansByCategory2);
-
- stdErr1 = computeStdErrors(count1, stdDev1, categoryStdErrs1, categoryStdDevs1, testStdErrsByCategory1, testStdDevsByCategory1);
- stdErr2 = computeStdErrors(count2, stdDev2, categoryStdErrs2, categoryStdDevs2, testStdErrsByCategory2, testStdDevsByCategory2);
-
- printOutput();
-}
diff --git a/SunSpider/resources/sunspider-standalone-compare.js b/SunSpider/resources/sunspider-standalone-compare.js
deleted file mode 100644
index e82c155..0000000
--- a/SunSpider/resources/sunspider-standalone-compare.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-sunspiderCompareResults(output1, output2);
diff --git a/SunSpider/resources/sunspider-standalone-driver.js b/SunSpider/resources/sunspider-standalone-driver.js
deleted file mode 100644
index 22aeb61..0000000
--- a/SunSpider/resources/sunspider-standalone-driver.js
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-var results = new Array();
-
-var time = 0;
-var times = [];
-times.length = tests.length;
-
-for (var j = 0; j < tests.length; j++) {
- var testName = "tests/" + tests[j] + ".js";
- var startTime = new Date;
- load(testName);
- times[j] = new Date() - startTime;
- gc();
-}
-
-function recordResults(tests, times)
-{
- var output = "{\n";
-
- for (j = 0; j < tests.length; j++) {
- output += ' "' + tests[j] + '": ' + times[j] + ',\n';
- }
- output = output.substring(0, output.length - 2) + "\n";
-
- output += "}";
- print(output);
-}
-
-recordResults(tests, times);
diff --git a/SunSpider/sunspider b/SunSpider/sunspider
deleted file mode 100755
index 84375f3..0000000
--- a/SunSpider/sunspider
+++ /dev/null
@@ -1,228 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2007 Apple Inc. All rights reserved.
-# Copyright (C) 2007 Eric Seidel <eric@webkit.org>
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
-# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-use strict;
-use Getopt::Long;
-use File::Basename;
-use File::Spec;
-use Cwd;
-use POSIX qw(strftime);
-use Time::HiRes qw(gettimeofday tv_interval);
-
-my $showHelp = 0;
-my $runShark = 0;
-my $runShark20 = 0;
-my $runSharkCache = 0;
-my $ubench = 0;
-my $v8suite = 0;
-my $jsShellPath;
-my $jsShellArgs = "";
-my $setBaseline = 0;
-my $testsPattern;
-my $testRuns = 10;
-
-my $programName = basename($0);
-my $usage = <<EOF;
-Usage: $programName --shell=[path] [options]
- --help Show this help message
- --set-baseline Set baseline for future comparisons
- --shell Path to JavaScript shell
- --args Arguments to pass to JavaScript shell
- --runs Number of times to run tests (default: $testRuns)
- --tests Only run tests matching provided pattern
- --shark Sample execution time with the Mac OS X "Shark" performance testing tool (implies --runs=1)
- --shark20 Like --shark, but with a 20 microsecond sampling interval
- --shark-cache Like --shark, but performs a L2 cache-miss sample instead of time sample
- --ubench Use microbenchmark suite instead of regular tests (to check for core execution regressions)
- --v8-suite Use the V8 benchmark suite
-EOF
-
-GetOptions('runs=i' => \$testRuns,
- 'set-baseline' => \$setBaseline,
- 'shell=s' => \$jsShellPath,
- 'args=s' => \$jsShellArgs,
- 'shark' => \$runShark,
- 'shark20' => \$runShark20,
- 'shark-cache' => \$runSharkCache,
- 'ubench' => \$ubench,
- 'v8-suite' => \$v8suite,
- 'tests=s' => \$testsPattern,
- 'help' => \$showHelp);
-
-$runShark = 1 if $runSharkCache;
-$runShark = 20 if $runShark20;
-$testRuns = 1 if $runShark;
-if ($runShark && ! -x "/usr/bin/shark") {
- die "Please install CHUD tools from http://developer.apple.com/tools/download/\n";
-}
-
-my $sharkCacheProfileIndex = 0;
-if ($runSharkCache) {
- my $sharkProfileList = `shark -l 2>&1`;
- for my $profile (split(/\n/, $sharkProfileList)) {
- $profile =~ /(\d+) - (.+)/;
- next unless (defined $1);
- my $profileIndex = $1;
- my $profileName = $2;
- if ($profileName =~ /L2 Cache/) {
- $sharkCacheProfileIndex = $profileIndex;
- print "Using Shark L2 Cache Miss Profile: " . $profile . "\n";
- last;
- }
- }
- die "Failed to find L2 Cache Miss Profile for --shark-cache\n" unless ($sharkCacheProfileIndex);
-}
-
-if (!$jsShellPath || $showHelp) {
- print STDERR $usage;
- exit 1;
-}
-
-sub dumpToFile($$)
-{
- my ($contents, $path) = @_;
- open FILE, ">", $path or die "Failed to open $path";
- print FILE $contents;
- close FILE;
-}
-
-my @tests = ();
-my @categories = ();
-my %uniqueCategories = ();
-
-sub loadTestsList()
-{
- my $testlist = "LIST";
- $testlist = "LIST-UBENCH" if ($ubench);
- $testlist = "LIST-V8" if ($v8suite);
-
- open TESTLIST, "<", "tests/${testlist}" or die "Can't find ./tests/${testlist}";
- while (<TESTLIST>) {
- chomp;
- next unless !$testsPattern || /$testsPattern/;
-
- push @tests, $_;
- my $category = $_;
- $category =~ s/-.*//;
- if (!$uniqueCategories{$category}) {
- push @categories, $category;
- $uniqueCategories{$category} = $category;
- }
- }
- close TESTLIST;
-}
-
-my $timeString = strftime "%Y-%m-%d-%H.%M.%S", localtime $^T;
-my $prefixFile = "tmp/sunspider-test-prefix.js";
-my $resultsFile = "tmp/sunspider-results-$timeString.js";
-
-sub writePrefixFile()
-{
- my $prefix = "var tests = [ " . join(", ", map { '"' . $_ . '"' } @tests) . " ];\n";
- $prefix .= "var categories = [ " . join(", ", map { '"' . $_ . '"' } @categories) . " ];\n";
-
- mkdir "tmp";
- dumpToFile($prefix, $prefixFile);
-}
-
-sub runTestsOnce($)
-{
- my ($useShark) = @_;
- my $shellArgs = $jsShellArgs . " -f $prefixFile -f resources/sunspider-standalone-driver.js 2> /dev/null";
- my $output;
- if ($useShark) {
- my $intervalArg = $useShark == 20 ? "-I 20u" : "";
- my $cacheArg = $runSharkCache ? "-c $sharkCacheProfileIndex" : "";
- $output = `shark $intervalArg $cacheArg -i -1-q "$jsShellPath" $shellArgs`;
- } else {
- $output = `"$jsShellPath" $shellArgs | grep -v break`;
- }
- return $output;
-}
-
-sub newestFile($$)
-{
- my ($dir, $pattern) = @_;
-
- my $newestAge;
- my $newestFile = "";
- opendir DIR, $dir or die;
- for my $file (readdir DIR) {
- if ($file =~ $pattern) {
- my $age = -M "$dir/$file";
- if (!defined $newestAge || $age < $newestAge) {
- $newestFile = $file;
- $newestAge = $age;
- }
- }
- }
- closedir DIR;
-
- return "$dir/$newestFile";
-}
-
-loadTestsList();
-if ($testsPattern) {
- print STDERR "Found " . scalar(@tests) . " tests matching '" . $testsPattern . "'\n";
-} else {
- print STDERR "Found " . scalar(@tests) . " tests\n";
-}
-die "No tests to run" unless scalar(@tests);
-print STDERR "Running SunSpider once for warmup, then " . ($runShark ? "under Shark" : "$testRuns time" . ($testRuns == 1 ? "" : "s")) . "\n";
-writePrefixFile();
-
-runTestsOnce(0);
-print "Discarded first run.\n";
-
-my $result;
-my $count = 0;
-my @results = ();
-my $total = 0;
-print "[";
-while ($count++ < $testRuns) {
- $result = runTestsOnce($runShark);
- $result =~ s/\r\n/\n/g;
- chomp $result;
- push @results, $result;
- print $result;
- print ",\n" unless ($count == $testRuns);
-}
-print "]\n";
-
-my $output = "var output = [\n" . join(",\n", @results) . "\n];\n";
-dumpToFile($output, $resultsFile);
-dumpToFile(File::Spec->rel2abs($resultsFile), "tmp/baseline-filename.txt") if $setBaseline;
-
-system("$jsShellPath", "-f", $prefixFile, "-f", $resultsFile, "-f", "resources/sunspider-analyze-results.js");
-
-if ($runShark) {
- my $newestMShark = newestFile(".", qr/\.mshark$/);
- if ($newestMShark) {
- my $profileFile = "tmp/sunspider-profile-$timeString.mshark";
- rename $newestMShark, $profileFile or die;
- exec "/usr/bin/open", $profileFile;
- }
-}
diff --git a/SunSpider/sunspider-compare-results b/SunSpider/sunspider-compare-results
deleted file mode 100755
index f23fb24..0000000
--- a/SunSpider/sunspider-compare-results
+++ /dev/null
@@ -1,142 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2007 Apple Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
-# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-use strict;
-use Getopt::Long;
-use File::Basename;
-
-my $showHelp = 0;
-my $jsShellPath;
-
-my $programName = basename($0);
-my $usage = <<EOF;
-Usage: $programName --shell=[path] [options] FILE FILE
- --help Show this help message
- --shell Path to javascript shell
-EOF
-
-GetOptions('shell=s' => \$jsShellPath,
- 'help' => \$showHelp);
-
-if ((scalar @ARGV != 0 && scalar @ARGV != 2) || !$jsShellPath || $showHelp) {
- print STDERR $usage;
- exit 1;
-}
-
-sub readResultsFile($)
-{
- my ($filename) = @_;
- open FILE, "<", $filename or die;
- my $foundStart = 0;
- my $foundOutput = 0;
- my $foundEnd = 0;
- my $result = "";
- while (<FILE>) {
- if (!$foundStart) {
- if (/^\[\{$/) {
- $foundStart = 1;
- $result .= $_;
- } elsif (/^var \w+ = \[$/) {
- $foundOutput = 1;
- } elsif ($foundOutput && /^\{$/) {
- $foundOutput = 0;
- $foundStart = 1;
- $result = "[{\n";
- }
- } else {
- if (/\];?$/) {
- $foundEnd = 1;
- chomp;
- s/;$//;
- $result .= $_;
- last;
- } else {
- $result .= $_;
- }
- }
- }
- close FILE;
-
- die "Cound not find data in ${filename} - needs to start with [{" unless $foundStart;
- die "Cound not find data in ${filename} - needs to end with }]" unless $foundEnd;
-
- return $result;
-}
-
-sub dumpToFile($$)
-{
- my ($contents, $path) = @_;
- open FILE, ">", $path or die;
- print FILE $contents;
- close FILE;
-}
-
-sub readFile($)
-{
- my ($path) = @_;
- open FILE, "<", $path or die;
- my $result = <FILE>;
- close FILE;
- return $result;
-}
-
-sub newestFile($$)
-{
- my ($dir, $pattern) = @_;
-
- my $newestAge;
- my $newestFile = "";
- opendir DIR, $dir or die;
- for my $file (readdir DIR) {
- if ($file =~ $pattern) {
- my $age = -M "$dir/$file";
- if (!defined $newestAge || $age < $newestAge) {
- $newestFile = $file;
- $newestAge = $age;
- }
- }
- }
- closedir DIR;
-
- return "$dir/$newestFile";
-}
-
-my $file1;
-my $file2;
-
-if (scalar @ARGV == 2) {
- $file1 = $ARGV[0];
- $file2 = $ARGV[1];
-} else {
- $file1 = readFile("tmp/baseline-filename.txt");
- $file2 = newestFile("tmp", qr/sunspider-results-.+\.js$/);
-}
-
-my $output = "var output1 = " . readResultsFile($file1) . ";\n";
-$output .= "var output2 = " . readResultsFile($file2) . ";\n";
-
-dumpToFile($output, "tmp/sunspider-comparison-data.js");
-
-system($jsShellPath, "-f", "tmp/sunspider-test-prefix.js", "-f", "tmp/sunspider-comparison-data.js", "-f", "resources/sunspider-compare-results.js", "-f", "resources/sunspider-standalone-compare.js");
diff --git a/SunSpider/tests/3d-cube.js b/SunSpider/tests/3d-cube.js
deleted file mode 100644
index e2cd6f9..0000000
--- a/SunSpider/tests/3d-cube.js
+++ /dev/null
@@ -1,337 +0,0 @@
-// 3D Cube Rotation
-// http://www.speich.net/computer/moztesting/3d.htm
-// Created by Simon Speich
-
-var Q = new Array();
-var MTrans = new Array(); // transformation matrix
-var MQube = new Array(); // position information of qube
-var I = new Array(); // entity matrix
-var Origin = new Object();
-var Testing = new Object();
-var LoopTimer;
-
-var DisplArea = new Object();
-DisplArea.Width = 300;
-DisplArea.Height = 300;
-
-function DrawLine(From, To) {
- var x1 = From.V[0];
- var x2 = To.V[0];
- var y1 = From.V[1];
- var y2 = To.V[1];
- var dx = Math.abs(x2 - x1);
- var dy = Math.abs(y2 - y1);
- var x = x1;
- var y = y1;
- var IncX1, IncY1;
- var IncX2, IncY2;
- var Den;
- var Num;
- var NumAdd;
- var NumPix;
-
- if (x2 >= x1) { IncX1 = 1; IncX2 = 1; }
- else { IncX1 = -1; IncX2 = -1; }
- if (y2 >= y1) { IncY1 = 1; IncY2 = 1; }
- else { IncY1 = -1; IncY2 = -1; }
- if (dx >= dy) {
- IncX1 = 0;
- IncY2 = 0;
- Den = dx;
- Num = dx / 2;
- NumAdd = dy;
- NumPix = dx;
- }
- else {
- IncX2 = 0;
- IncY1 = 0;
- Den = dy;
- Num = dy / 2;
- NumAdd = dx;
- NumPix = dy;
- }
-
- NumPix = Math.round(Q.LastPx + NumPix);
-
- var i = Q.LastPx;
- for (; i < NumPix; i++) {
- Num += NumAdd;
- if (Num >= Den) {
- Num -= Den;
- x += IncX1;
- y += IncY1;
- }
- x += IncX2;
- y += IncY2;
- }
- Q.LastPx = NumPix;
-}
-
-function CalcCross(V0, V1) {
- var Cross = new Array();
- Cross[0] = V0[1]*V1[2] - V0[2]*V1[1];
- Cross[1] = V0[2]*V1[0] - V0[0]*V1[2];
- Cross[2] = V0[0]*V1[1] - V0[1]*V1[0];
- return Cross;
-}
-
-function CalcNormal(V0, V1, V2) {
- var A = new Array(); var B = new Array();
- for (var i = 0; i < 3; i++) {
- A[i] = V0[i] - V1[i];
- B[i] = V2[i] - V1[i];
- }
- A = CalcCross(A, B);
- var Length = Math.sqrt(A[0]*A[0] + A[1]*A[1] + A[2]*A[2]);
- for (var i = 0; i < 3; i++) A[i] = A[i] / Length;
- A[3] = 1;
- return A;
-}
-
-function CreateP(X,Y,Z) {
- this.V = [X,Y,Z,1];
-}
-
-// multiplies two matrices
-function MMulti(M1, M2) {
- var M = [[],[],[],[]];
- var i = 0;
- var j = 0;
- for (; i < 4; i++) {
- j = 0;
- for (; j < 4; j++) M[i][j] = M1[i][0] * M2[0][j] + M1[i][1] * M2[1][j] + M1[i][2] * M2[2][j] + M1[i][3] * M2[3][j];
- }
- return M;
-}
-
-//multiplies matrix with vector
-function VMulti(M, V) {
- var Vect = new Array();
- var i = 0;
- for (;i < 4; i++) Vect[i] = M[i][0] * V[0] + M[i][1] * V[1] + M[i][2] * V[2] + M[i][3] * V[3];
- return Vect;
-}
-
-function VMulti2(M, V) {
- var Vect = new Array();
- var i = 0;
- for (;i < 3; i++) Vect[i] = M[i][0] * V[0] + M[i][1] * V[1] + M[i][2] * V[2];
- return Vect;
-}
-
-// add to matrices
-function MAdd(M1, M2) {
- var M = [[],[],[],[]];
- var i = 0;
- var j = 0;
- for (; i < 4; i++) {
- j = 0;
- for (; j < 4; j++) M[i][j] = M1[i][j] + M2[i][j];
- }
- return M;
-}
-
-function Translate(M, Dx, Dy, Dz) {
- var T = [
- [1,0,0,Dx],
- [0,1,0,Dy],
- [0,0,1,Dz],
- [0,0,0,1]
- ];
- return MMulti(T, M);
-}
-
-function RotateX(M, Phi) {
- var a = Phi;
- a *= Math.PI / 180;
- var Cos = Math.cos(a);
- var Sin = Math.sin(a);
- var R = [
- [1,0,0,0],
- [0,Cos,-Sin,0],
- [0,Sin,Cos,0],
- [0,0,0,1]
- ];
- return MMulti(R, M);
-}
-
-function RotateY(M, Phi) {
- var a = Phi;
- a *= Math.PI / 180;
- var Cos = Math.cos(a);
- var Sin = Math.sin(a);
- var R = [
- [Cos,0,Sin,0],
- [0,1,0,0],
- [-Sin,0,Cos,0],
- [0,0,0,1]
- ];
- return MMulti(R, M);
-}
-
-function RotateZ(M, Phi) {
- var a = Phi;
- a *= Math.PI / 180;
- var Cos = Math.cos(a);
- var Sin = Math.sin(a);
- var R = [
- [Cos,-Sin,0,0],
- [Sin,Cos,0,0],
- [0,0,1,0],
- [0,0,0,1]
- ];
- return MMulti(R, M);
-}
-
-function DrawQube() {
- // calc current normals
- var CurN = new Array();
- var i = 5;
- Q.LastPx = 0;
- for (; i > -1; i--) CurN[i] = VMulti2(MQube, Q.Normal[i]);
- if (CurN[0][2] < 0) {
- if (!Q.Line[0]) { DrawLine(Q[0], Q[1]); Q.Line[0] = true; };
- if (!Q.Line[1]) { DrawLine(Q[1], Q[2]); Q.Line[1] = true; };
- if (!Q.Line[2]) { DrawLine(Q[2], Q[3]); Q.Line[2] = true; };
- if (!Q.Line[3]) { DrawLine(Q[3], Q[0]); Q.Line[3] = true; };
- }
- if (CurN[1][2] < 0) {
- if (!Q.Line[2]) { DrawLine(Q[3], Q[2]); Q.Line[2] = true; };
- if (!Q.Line[9]) { DrawLine(Q[2], Q[6]); Q.Line[9] = true; };
- if (!Q.Line[6]) { DrawLine(Q[6], Q[7]); Q.Line[6] = true; };
- if (!Q.Line[10]) { DrawLine(Q[7], Q[3]); Q.Line[10] = true; };
- }
- if (CurN[2][2] < 0) {
- if (!Q.Line[4]) { DrawLine(Q[4], Q[5]); Q.Line[4] = true; };
- if (!Q.Line[5]) { DrawLine(Q[5], Q[6]); Q.Line[5] = true; };
- if (!Q.Line[6]) { DrawLine(Q[6], Q[7]); Q.Line[6] = true; };
- if (!Q.Line[7]) { DrawLine(Q[7], Q[4]); Q.Line[7] = true; };
- }
- if (CurN[3][2] < 0) {
- if (!Q.Line[4]) { DrawLine(Q[4], Q[5]); Q.Line[4] = true; };
- if (!Q.Line[8]) { DrawLine(Q[5], Q[1]); Q.Line[8] = true; };
- if (!Q.Line[0]) { DrawLine(Q[1], Q[0]); Q.Line[0] = true; };
- if (!Q.Line[11]) { DrawLine(Q[0], Q[4]); Q.Line[11] = true; };
- }
- if (CurN[4][2] < 0) {
- if (!Q.Line[11]) { DrawLine(Q[4], Q[0]); Q.Line[11] = true; };
- if (!Q.Line[3]) { DrawLine(Q[0], Q[3]); Q.Line[3] = true; };
- if (!Q.Line[10]) { DrawLine(Q[3], Q[7]); Q.Line[10] = true; };
- if (!Q.Line[7]) { DrawLine(Q[7], Q[4]); Q.Line[7] = true; };
- }
- if (CurN[5][2] < 0) {
- if (!Q.Line[8]) { DrawLine(Q[1], Q[5]); Q.Line[8] = true; };
- if (!Q.Line[5]) { DrawLine(Q[5], Q[6]); Q.Line[5] = true; };
- if (!Q.Line[9]) { DrawLine(Q[6], Q[2]); Q.Line[9] = true; };
- if (!Q.Line[1]) { DrawLine(Q[2], Q[1]); Q.Line[1] = true; };
- }
- Q.Line = [false,false,false,false,false,false,false,false,false,false,false,false];
- Q.LastPx = 0;
-}
-
-function Loop() {
- if (Testing.LoopCount > Testing.LoopMax) return;
- var TestingStr = String(Testing.LoopCount);
- while (TestingStr.length < 3) TestingStr = "0" + TestingStr;
- MTrans = Translate(I, -Q[8].V[0], -Q[8].V[1], -Q[8].V[2]);
- MTrans = RotateX(MTrans, 1);
- MTrans = RotateY(MTrans, 3);
- MTrans = RotateZ(MTrans, 5);
- MTrans = Translate(MTrans, Q[8].V[0], Q[8].V[1], Q[8].V[2]);
- MQube = MMulti(MTrans, MQube);
- var i = 8;
- for (; i > -1; i--) {
- Q[i].V = VMulti(MTrans, Q[i].V);
- }
- DrawQube();
- Testing.LoopCount++;
- Loop();
-}
-
-function Init(CubeSize) {
- // init/reset vars
- Origin.V = [150,150,20,1];
- Testing.LoopCount = 0;
- Testing.LoopMax = 50;
- Testing.TimeMax = 0;
- Testing.TimeAvg = 0;
- Testing.TimeMin = 0;
- Testing.TimeTemp = 0;
- Testing.TimeTotal = 0;
- Testing.Init = false;
-
- // transformation matrix
- MTrans = [
- [1,0,0,0],
- [0,1,0,0],
- [0,0,1,0],
- [0,0,0,1]
- ];
-
- // position information of qube
- MQube = [
- [1,0,0,0],
- [0,1,0,0],
- [0,0,1,0],
- [0,0,0,1]
- ];
-
- // entity matrix
- I = [
- [1,0,0,0],
- [0,1,0,0],
- [0,0,1,0],
- [0,0,0,1]
- ];
-
- // create qube
- Q[0] = new CreateP(-CubeSize,-CubeSize, CubeSize);
- Q[1] = new CreateP(-CubeSize, CubeSize, CubeSize);
- Q[2] = new CreateP( CubeSize, CubeSize, CubeSize);
- Q[3] = new CreateP( CubeSize,-CubeSize, CubeSize);
- Q[4] = new CreateP(-CubeSize,-CubeSize,-CubeSize);
- Q[5] = new CreateP(-CubeSize, CubeSize,-CubeSize);
- Q[6] = new CreateP( CubeSize, CubeSize,-CubeSize);
- Q[7] = new CreateP( CubeSize,-CubeSize,-CubeSize);
-
- // center of gravity
- Q[8] = new CreateP(0, 0, 0);
-
- // anti-clockwise edge check
- Q.Edge = [[0,1,2],[3,2,6],[7,6,5],[4,5,1],[4,0,3],[1,5,6]];
-
- // calculate squad normals
- Q.Normal = new Array();
- for (var i = 0; i < Q.Edge.length; i++) Q.Normal[i] = CalcNormal(Q[Q.Edge[i][0]].V, Q[Q.Edge[i][1]].V, Q[Q.Edge[i][2]].V);
-
- // line drawn ?
- Q.Line = [false,false,false,false,false,false,false,false,false,false,false,false];
-
- // create line pixels
- Q.NumPx = 9 * 2 * CubeSize;
- for (var i = 0; i < Q.NumPx; i++) CreateP(0,0,0);
-
- MTrans = Translate(MTrans, Origin.V[0], Origin.V[1], Origin.V[2]);
- MQube = MMulti(MTrans, MQube);
-
- var i = 0;
- for (; i < 9; i++) {
- Q[i].V = VMulti(MTrans, Q[i].V);
- }
- DrawQube();
- Testing.Init = true;
- Loop();
-}
-
-for ( var i = 20; i <= 160; i *= 2 ) {
- Init(i);
-}
-
-Q = null;
-MTrans = null;
-MQube = null;
-I = null;
-Origin = null;
-Testing = null;
-LoopTime = null;
-DisplArea = null;
diff --git a/SunSpider/tests/3d-morph.js b/SunSpider/tests/3d-morph.js
deleted file mode 100644
index d4238c0..0000000
--- a/SunSpider/tests/3d-morph.js
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-var loops = 15
-var nx = 120
-var nz = 120
-
-function morph(a, f) {
- var PI2nx = Math.PI * 8/nx
- var sin = Math.sin
- var f30 = -(50 * sin(f*Math.PI*2))
-
- for (var i = 0; i < nz; ++i) {
- for (var j = 0; j < nx; ++j) {
- a[3*(i*nx+j)+1] = sin((j-1) * PI2nx ) * -f30
- }
- }
-}
-
-
-var a = Array()
-for (var i=0; i < nx*nz*3; ++i)
- a[i] = 0
-
-for (var i = 0; i < loops; ++i) {
- morph(a, i/loops)
-}
-
-testOutput = 0;
-for (var i = 0; i < nx; i++)
- testOutput += a[3*(i*nx+i)+1];
-a = null;
diff --git a/SunSpider/tests/3d-raytrace.js b/SunSpider/tests/3d-raytrace.js
deleted file mode 100644
index e7b959e..0000000
--- a/SunSpider/tests/3d-raytrace.js
+++ /dev/null
@@ -1,441 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-function createVector(x,y,z) {
- return new Array(x,y,z);
-}
-
-function sqrLengthVector(self) {
- return self[0] * self[0] + self[1] * self[1] + self[2] * self[2];
-}
-
-function lengthVector(self) {
- return Math.sqrt(self[0] * self[0] + self[1] * self[1] + self[2] * self[2]);
-}
-
-function addVector(self, v) {
- self[0] += v[0];
- self[1] += v[1];
- self[2] += v[2];
- return self;
-}
-
-function subVector(self, v) {
- self[0] -= v[0];
- self[1] -= v[1];
- self[2] -= v[2];
- return self;
-}
-
-function scaleVector(self, scale) {
- self[0] *= scale;
- self[1] *= scale;
- self[2] *= scale;
- return self;
-}
-
-function normaliseVector(self) {
- var len = Math.sqrt(self[0] * self[0] + self[1] * self[1] + self[2] * self[2]);
- self[0] /= len;
- self[1] /= len;
- self[2] /= len;
- return self;
-}
-
-function add(v1, v2) {
- return new Array(v1[0] + v2[0], v1[1] + v2[1], v1[2] + v2[2]);
-}
-
-function sub(v1, v2) {
- return new Array(v1[0] - v2[0], v1[1] - v2[1], v1[2] - v2[2]);
-}
-
-function scalev(v1, v2) {
- return new Array(v1[0] * v2[0], v1[1] * v2[1], v1[2] * v2[2]);
-}
-
-function dot(v1, v2) {
- return v1[0] * v2[0] + v1[1] * v2[1] + v1[2] * v2[2];
-}
-
-function scale(v, scale) {
- return [v[0] * scale, v[1] * scale, v[2] * scale];
-}
-
-function cross(v1, v2) {
- return [v1[1] * v2[2] - v1[2] * v2[1],
- v1[2] * v2[0] - v1[0] * v2[2],
- v1[0] * v2[1] - v1[1] * v2[0]];
-
-}
-
-function normalise(v) {
- var len = lengthVector(v);
- return [v[0] / len, v[1] / len, v[2] / len];
-}
-
-function transformMatrix(self, v) {
- var vals = self;
- var x = vals[0] * v[0] + vals[1] * v[1] + vals[2] * v[2] + vals[3];
- var y = vals[4] * v[0] + vals[5] * v[1] + vals[6] * v[2] + vals[7];
- var z = vals[8] * v[0] + vals[9] * v[1] + vals[10] * v[2] + vals[11];
- return [x, y, z];
-}
-
-function invertMatrix(self) {
- var temp = new Array(16);
- var tx = -self[3];
- var ty = -self[7];
- var tz = -self[11];
- for (h = 0; h < 3; h++)
- for (v = 0; v < 3; v++)
- temp[h + v * 4] = self[v + h * 4];
- for (i = 0; i < 11; i++)
- self[i] = temp[i];
- self[3] = tx * self[0] + ty * self[1] + tz * self[2];
- self[7] = tx * self[4] + ty * self[5] + tz * self[6];
- self[11] = tx * self[8] + ty * self[9] + tz * self[10];
- return self;
-}
-
-
-// Triangle intersection using barycentric coord method
-function Triangle(p1, p2, p3) {
- var edge1 = sub(p3, p1);
- var edge2 = sub(p2, p1);
- var normal = cross(edge1, edge2);
- if (Math.abs(normal[0]) > Math.abs(normal[1]))
- if (Math.abs(normal[0]) > Math.abs(normal[2]))
- this.axis = 0;
- else
- this.axis = 2;
- else
- if (Math.abs(normal[1]) > Math.abs(normal[2]))
- this.axis = 1;
- else
- this.axis = 2;
- var u = (this.axis + 1) % 3;
- var v = (this.axis + 2) % 3;
- var u1 = edge1[u];
- var v1 = edge1[v];
-
- var u2 = edge2[u];
- var v2 = edge2[v];
- this.normal = normalise(normal);
- this.nu = normal[u] / normal[this.axis];
- this.nv = normal[v] / normal[this.axis];
- this.nd = dot(normal, p1) / normal[this.axis];
- var det = u1 * v2 - v1 * u2;
- this.eu = p1[u];
- this.ev = p1[v];
- this.nu1 = u1 / det;
- this.nv1 = -v1 / det;
- this.nu2 = v2 / det;
- this.nv2 = -u2 / det;
- this.material = [0.7, 0.7, 0.7];
-}
-
-Triangle.prototype.intersect = function(orig, dir, near, far) {
- var u = (this.axis + 1) % 3;
- var v = (this.axis + 2) % 3;
- var d = dir[this.axis] + this.nu * dir[u] + this.nv * dir[v];
- var t = (this.nd - orig[this.axis] - this.nu * orig[u] - this.nv * orig[v]) / d;
- if (t < near || t > far)
- return null;
- var Pu = orig[u] + t * dir[u] - this.eu;
- var Pv = orig[v] + t * dir[v] - this.ev;
- var a2 = Pv * this.nu1 + Pu * this.nv1;
- if (a2 < 0)
- return null;
- var a3 = Pu * this.nu2 + Pv * this.nv2;
- if (a3 < 0)
- return null;
-
- if ((a2 + a3) > 1)
- return null;
- return t;
-}
-
-function Scene(a_triangles) {
- this.triangles = a_triangles;
- this.lights = [];
- this.ambient = [0,0,0];
- this.background = [0.8,0.8,1];
-}
-var zero = new Array(0,0,0);
-
-Scene.prototype.intersect = function(origin, dir, near, far) {
- var closest = null;
- for (i = 0; i < this.triangles.length; i++) {
- var triangle = this.triangles[i];
- var d = triangle.intersect(origin, dir, near, far);
- if (d == null || d > far || d < near)
- continue;
- far = d;
- closest = triangle;
- }
-
- if (!closest)
- return [this.background[0],this.background[1],this.background[2]];
-
- var normal = closest.normal;
- var hit = add(origin, scale(dir, far));
- if (dot(dir, normal) > 0)
- normal = [-normal[0], -normal[1], -normal[2]];
-
- var colour = null;
- if (closest.shader) {
- colour = closest.shader(closest, hit, dir);
- } else {
- colour = closest.material;
- }
-
- // do reflection
- var reflected = null;
- if (colour.reflection > 0.001) {
- var reflection = addVector(scale(normal, -2*dot(dir, normal)), dir);
- reflected = this.intersect(hit, reflection, 0.0001, 1000000);
- if (colour.reflection >= 0.999999)
- return reflected;
- }
-
- var l = [this.ambient[0], this.ambient[1], this.ambient[2]];
- for (var i = 0; i < this.lights.length; i++) {
- var light = this.lights[i];
- var toLight = sub(light, hit);
- var distance = lengthVector(toLight);
- scaleVector(toLight, 1.0/distance);
- distance -= 0.0001;
- if (this.blocked(hit, toLight, distance))
- continue;
- var nl = dot(normal, toLight);
- if (nl > 0)
- addVector(l, scale(light.colour, nl));
- }
- l = scalev(l, colour);
- if (reflected) {
- l = addVector(scaleVector(l, 1 - colour.reflection), scaleVector(reflected, colour.reflection));
- }
- return l;
-}
-
-Scene.prototype.blocked = function(O, D, far) {
- var near = 0.0001;
- var closest = null;
- for (i = 0; i < this.triangles.length; i++) {
- var triangle = this.triangles[i];
- var d = triangle.intersect(O, D, near, far);
- if (d == null || d > far || d < near)
- continue;
- return true;
- }
-
- return false;
-}
-
-
-// this camera code is from notes i made ages ago, it is from *somewhere* -- i cannot remember where
-// that somewhere is
-function Camera(origin, lookat, up) {
- var zaxis = normaliseVector(subVector(lookat, origin));
- var xaxis = normaliseVector(cross(up, zaxis));
- var yaxis = normaliseVector(cross(xaxis, subVector([0,0,0], zaxis)));
- var m = new Array(16);
- m[0] = xaxis[0]; m[1] = xaxis[1]; m[2] = xaxis[2];
- m[4] = yaxis[0]; m[5] = yaxis[1]; m[6] = yaxis[2];
- m[8] = zaxis[0]; m[9] = zaxis[1]; m[10] = zaxis[2];
- invertMatrix(m);
- m[3] = 0; m[7] = 0; m[11] = 0;
- this.origin = origin;
- this.directions = new Array(4);
- this.directions[0] = normalise([-0.7, 0.7, 1]);
- this.directions[1] = normalise([ 0.7, 0.7, 1]);
- this.directions[2] = normalise([ 0.7, -0.7, 1]);
- this.directions[3] = normalise([-0.7, -0.7, 1]);
- this.directions[0] = transformMatrix(m, this.directions[0]);
- this.directions[1] = transformMatrix(m, this.directions[1]);
- this.directions[2] = transformMatrix(m, this.directions[2]);
- this.directions[3] = transformMatrix(m, this.directions[3]);
-}
-
-Camera.prototype.generateRayPair = function(y) {
- rays = new Array(new Object(), new Object());
- rays[0].origin = this.origin;
- rays[1].origin = this.origin;
- rays[0].dir = addVector(scale(this.directions[0], y), scale(this.directions[3], 1 - y));
- rays[1].dir = addVector(scale(this.directions[1], y), scale(this.directions[2], 1 - y));
- return rays;
-}
-
-function renderRows(camera, scene, pixels, width, height, starty, stopy) {
- for (var y = starty; y < stopy; y++) {
- var rays = camera.generateRayPair(y / height);
- for (var x = 0; x < width; x++) {
- var xp = x / width;
- var origin = addVector(scale(rays[0].origin, xp), scale(rays[1].origin, 1 - xp));
- var dir = normaliseVector(addVector(scale(rays[0].dir, xp), scale(rays[1].dir, 1 - xp)));
- var l = scene.intersect(origin, dir);
- pixels[y][x] = l;
- }
- }
-}
-
-Camera.prototype.render = function(scene, pixels, width, height) {
- var cam = this;
- var row = 0;
- renderRows(cam, scene, pixels, width, height, 0, height);
-}
-
-
-
-function raytraceScene()
-{
- var startDate = new Date().getTime();
- var numTriangles = 2 * 6;
- var triangles = new Array();//numTriangles);
- var tfl = createVector(-10, 10, -10);
- var tfr = createVector( 10, 10, -10);
- var tbl = createVector(-10, 10, 10);
- var tbr = createVector( 10, 10, 10);
- var bfl = createVector(-10, -10, -10);
- var bfr = createVector( 10, -10, -10);
- var bbl = createVector(-10, -10, 10);
- var bbr = createVector( 10, -10, 10);
-
- // cube!!!
- // front
- var i = 0;
-
- triangles[i++] = new Triangle(tfl, tfr, bfr);
- triangles[i++] = new Triangle(tfl, bfr, bfl);
- // back
- triangles[i++] = new Triangle(tbl, tbr, bbr);
- triangles[i++] = new Triangle(tbl, bbr, bbl);
- // triangles[i-1].material = [0.7,0.2,0.2];
- // triangles[i-1].material.reflection = 0.8;
- // left
- triangles[i++] = new Triangle(tbl, tfl, bbl);
- // triangles[i-1].reflection = 0.6;
- triangles[i++] = new Triangle(tfl, bfl, bbl);
- // triangles[i-1].reflection = 0.6;
- // right
- triangles[i++] = new Triangle(tbr, tfr, bbr);
- triangles[i++] = new Triangle(tfr, bfr, bbr);
- // top
- triangles[i++] = new Triangle(tbl, tbr, tfr);
- triangles[i++] = new Triangle(tbl, tfr, tfl);
- // bottom
- triangles[i++] = new Triangle(bbl, bbr, bfr);
- triangles[i++] = new Triangle(bbl, bfr, bfl);
-
- //Floor!!!!
- var green = createVector(0.0, 0.4, 0.0);
- var grey = createVector(0.4, 0.4, 0.4);
- grey.reflection = 1.0;
- var floorShader = function(tri, pos, view) {
- var x = ((pos[0]/32) % 2 + 2) % 2;
- var z = ((pos[2]/32 + 0.3) % 2 + 2) % 2;
- if (x < 1 != z < 1) {
- //in the real world we use the fresnel term...
- // var angle = 1-dot(view, tri.normal);
- // angle *= angle;
- // angle *= angle;
- // angle *= angle;
- //grey.reflection = angle;
- return grey;
- } else
- return green;
- }
- var ffl = createVector(-1000, -30, -1000);
- var ffr = createVector( 1000, -30, -1000);
- var fbl = createVector(-1000, -30, 1000);
- var fbr = createVector( 1000, -30, 1000);
- triangles[i++] = new Triangle(fbl, fbr, ffr);
- triangles[i-1].shader = floorShader;
- triangles[i++] = new Triangle(fbl, ffr, ffl);
- triangles[i-1].shader = floorShader;
-
- var _scene = new Scene(triangles);
- _scene.lights[0] = createVector(20, 38, -22);
- _scene.lights[0].colour = createVector(0.7, 0.3, 0.3);
- _scene.lights[1] = createVector(-23, 40, 17);
- _scene.lights[1].colour = createVector(0.7, 0.3, 0.3);
- _scene.lights[2] = createVector(23, 20, 17);
- _scene.lights[2].colour = createVector(0.7, 0.7, 0.7);
- _scene.ambient = createVector(0.1, 0.1, 0.1);
- // _scene.background = createVector(0.7, 0.7, 1.0);
-
- var size = 30;
- var pixels = new Array();
- for (var y = 0; y < size; y++) {
- pixels[y] = new Array();
- for (var x = 0; x < size; x++) {
- pixels[y][x] = 0;
- }
- }
-
- var _camera = new Camera(createVector(-40, 40, 40), createVector(0, 0, 0), createVector(0, 1, 0));
- _camera.render(_scene, pixels, size, size);
-
- return pixels;
-}
-
-function arrayToCanvasCommands(pixels)
-{
- var s = '<canvas id="renderCanvas" width="30px" height="30px"></canvas><scr' + 'ipt>\nvar pixels = [';
- var size = 30;
- for (var y = 0; y < size; y++) {
- s += "[";
- for (var x = 0; x < size; x++) {
- s += "[" + pixels[y][x] + "],";
- }
- s+= "],";
- }
- s += '];\n var canvas = document.getElementById("renderCanvas").getContext("2d");\n\
-\n\
-\n\
- var size = 30;\n\
- canvas.fillStyle = "red";\n\
- canvas.fillRect(0, 0, size, size);\n\
- canvas.scale(1, -1);\n\
- canvas.translate(0, -size);\n\
-\n\
- if (!canvas.setFillColor)\n\
- canvas.setFillColor = function(r, g, b, a) {\n\
- this.fillStyle = "rgb("+[Math.floor(r * 255), Math.floor(g * 255), Math.floor(b * 255)]+")";\n\
- }\n\
-\n\
-for (var y = 0; y < size; y++) {\n\
- for (var x = 0; x < size; x++) {\n\
- var l = pixels[y][x];\n\
- canvas.setFillColor(l[0], l[1], l[2], 1);\n\
- canvas.fillRect(x, y, 1, 1);\n\
- }\n\
-}</scr' + 'ipt>';
-
- return s;
-}
-
-testOutput = arrayToCanvasCommands(raytraceScene());
diff --git a/SunSpider/tests/LIST b/SunSpider/tests/LIST
deleted file mode 100644
index 34cfac4..0000000
--- a/SunSpider/tests/LIST
+++ /dev/null
@@ -1,26 +0,0 @@
-3d-cube
-3d-morph
-3d-raytrace
-access-binary-trees
-access-fannkuch
-access-nbody
-access-nsieve
-bitops-3bit-bits-in-byte
-bitops-bits-in-byte
-bitops-bitwise-and
-bitops-nsieve-bits
-controlflow-recursive
-crypto-aes
-crypto-md5
-crypto-sha1
-date-format-tofte
-date-format-xparb
-math-cordic
-math-partial-sums
-math-spectral-norm
-regexp-dna
-string-base64
-string-fasta
-string-tagcloud
-string-unpack-code
-string-validate-input
diff --git a/SunSpider/tests/LIST-UBENCH b/SunSpider/tests/LIST-UBENCH
deleted file mode 100644
index e573bb4..0000000
--- a/SunSpider/tests/LIST-UBENCH
+++ /dev/null
@@ -1,7 +0,0 @@
-ubench/function-closure
-ubench/function-empty
-ubench/function-missing-args
-ubench/function-sum
-ubench/loop-empty-resolve
-ubench/loop-empty
-ubench/loop-sum
diff --git a/SunSpider/tests/LIST-V8 b/SunSpider/tests/LIST-V8
deleted file mode 100644
index 90c211e..0000000
--- a/SunSpider/tests/LIST-V8
+++ /dev/null
@@ -1,5 +0,0 @@
-v8-crypto
-v8-deltablue
-v8-earley-boyer
-v8-raytrace
-v8-richards
diff --git a/SunSpider/tests/access-binary-trees.js b/SunSpider/tests/access-binary-trees.js
deleted file mode 100644
index 2f24e7d..0000000
--- a/SunSpider/tests/access-binary-trees.js
+++ /dev/null
@@ -1,50 +0,0 @@
-/* The Great Computer Language Shootout
- http://shootout.alioth.debian.org/
- contributed by Isaac Gouy */
-
-function TreeNode(left,right,item){
- this.left = left;
- this.right = right;
- this.item = item;
-}
-
-TreeNode.prototype.itemCheck = function(){
- if (this.left==null) return this.item;
- else return this.item + this.left.itemCheck() - this.right.itemCheck();
-}
-
-function bottomUpTree(item,depth){
- if (depth>0){
- return new TreeNode(
- bottomUpTree(2*item-1, depth-1)
- ,bottomUpTree(2*item, depth-1)
- ,item
- );
- }
- else {
- return new TreeNode(null,null,item);
- }
-}
-
-var ret;
-
-for ( var n = 4; n <= 7; n += 1 ) {
- var minDepth = 4;
- var maxDepth = Math.max(minDepth + 2, n);
- var stretchDepth = maxDepth + 1;
-
- var check = bottomUpTree(0,stretchDepth).itemCheck();
-
- var longLivedTree = bottomUpTree(0,maxDepth);
- for (var depth=minDepth; depth<=maxDepth; depth+=2){
- var iterations = 1 << (maxDepth - depth + minDepth);
-
- check = 0;
- for (var i=1; i<=iterations; i++){
- check += bottomUpTree(i,depth).itemCheck();
- check += bottomUpTree(-i,depth).itemCheck();
- }
- }
-
- ret = longLivedTree.itemCheck();
-}
diff --git a/SunSpider/tests/access-fannkuch.js b/SunSpider/tests/access-fannkuch.js
deleted file mode 100644
index 1ea87b4..0000000
--- a/SunSpider/tests/access-fannkuch.js
+++ /dev/null
@@ -1,66 +0,0 @@
-/* The Great Computer Language Shootout
- http://shootout.alioth.debian.org/
- contributed by Isaac Gouy */
-
-function fannkuch(n) {
- var check = 0;
- var perm = Array(n);
- var perm1 = Array(n);
- var count = Array(n);
- var maxPerm = Array(n);
- var maxFlipsCount = 0;
- var m = n - 1;
-
- for (var i = 0; i < n; i++) perm1[i] = i;
- var r = n;
-
- while (true) {
- // write-out the first 30 permutations
- if (check < 30){
- var s = "";
- for(var i=0; i<n; i++) s += (perm1[i]+1).toString();
- check++;
- }
-
- while (r != 1) { count[r - 1] = r; r--; }
- if (!(perm1[0] == 0 || perm1[m] == m)) {
- for (var i = 0; i < n; i++) perm[i] = perm1[i];
-
- var flipsCount = 0;
- var k;
-
- while (!((k = perm[0]) == 0)) {
- var k2 = (k + 1) >> 1;
- for (var i = 0; i < k2; i++) {
- var temp = perm[i]; perm[i] = perm[k - i]; perm[k - i] = temp;
- }
- flipsCount++;
- }
-
- if (flipsCount > maxFlipsCount) {
- maxFlipsCount = flipsCount;
- for (var i = 0; i < n; i++) maxPerm[i] = perm1[i];
- }
- }
-
- while (true) {
- if (r == n) return maxFlipsCount;
- var perm0 = perm1[0];
- var i = 0;
- while (i < r) {
- var j = i + 1;
- perm1[i] = perm1[j];
- i = j;
- }
- perm1[r] = perm0;
-
- count[r] = count[r] - 1;
- if (count[r] > 0) break;
- r++;
- }
- }
-}
-
-var n = 8;
-var ret = fannkuch(n);
-
diff --git a/SunSpider/tests/access-nbody.js b/SunSpider/tests/access-nbody.js
deleted file mode 100644
index f0d080d..0000000
--- a/SunSpider/tests/access-nbody.js
+++ /dev/null
@@ -1,169 +0,0 @@
-/* The Great Computer Language Shootout
- http://shootout.alioth.debian.org/
- contributed by Isaac Gouy */
-
-var PI = 3.141592653589793;
-var SOLAR_MASS = 4 * PI * PI;
-var DAYS_PER_YEAR = 365.24;
-
-function Body(x,y,z,vx,vy,vz,mass){
- this.x = x;
- this.y = y;
- this.z = z;
- this.vx = vx;
- this.vy = vy;
- this.vz = vz;
- this.mass = mass;
-}
-
-Body.prototype.offsetMomentum = function(px,py,pz) {
- this.vx = -px / SOLAR_MASS;
- this.vy = -py / SOLAR_MASS;
- this.vz = -pz / SOLAR_MASS;
- return this;
-}
-
-function Jupiter(){
- return new Body(
- 4.84143144246472090e+00,
- -1.16032004402742839e+00,
- -1.03622044471123109e-01,
- 1.66007664274403694e-03 * DAYS_PER_YEAR,
- 7.69901118419740425e-03 * DAYS_PER_YEAR,
- -6.90460016972063023e-05 * DAYS_PER_YEAR,
- 9.54791938424326609e-04 * SOLAR_MASS
- );
-}
-
-function Saturn(){
- return new Body(
- 8.34336671824457987e+00,
- 4.12479856412430479e+00,
- -4.03523417114321381e-01,
- -2.76742510726862411e-03 * DAYS_PER_YEAR,
- 4.99852801234917238e-03 * DAYS_PER_YEAR,
- 2.30417297573763929e-05 * DAYS_PER_YEAR,
- 2.85885980666130812e-04 * SOLAR_MASS
- );
-}
-
-function Uranus(){
- return new Body(
- 1.28943695621391310e+01,
- -1.51111514016986312e+01,
- -2.23307578892655734e-01,
- 2.96460137564761618e-03 * DAYS_PER_YEAR,
- 2.37847173959480950e-03 * DAYS_PER_YEAR,
- -2.96589568540237556e-05 * DAYS_PER_YEAR,
- 4.36624404335156298e-05 * SOLAR_MASS
- );
-}
-
-function Neptune(){
- return new Body(
- 1.53796971148509165e+01,
- -2.59193146099879641e+01,
- 1.79258772950371181e-01,
- 2.68067772490389322e-03 * DAYS_PER_YEAR,
- 1.62824170038242295e-03 * DAYS_PER_YEAR,
- -9.51592254519715870e-05 * DAYS_PER_YEAR,
- 5.15138902046611451e-05 * SOLAR_MASS
- );
-}
-
-function Sun(){
- return new Body(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, SOLAR_MASS);
-}
-
-
-function NBodySystem(bodies){
- this.bodies = bodies;
- var px = 0.0;
- var py = 0.0;
- var pz = 0.0;
- var size = this.bodies.length;
- for (var i=0; i<size; i++){
- var b = this.bodies[i];
- var m = b.mass;
- px += b.vx * m;
- py += b.vy * m;
- pz += b.vz * m;
- }
- this.bodies[0].offsetMomentum(px,py,pz);
-}
-
-NBodySystem.prototype.advance = function(dt){
- var dx, dy, dz, distance, mag;
- var size = this.bodies.length;
-
- for (var i=0; i<size; i++) {
- var bodyi = this.bodies[i];
- for (var j=i+1; j<size; j++) {
- var bodyj = this.bodies[j];
- dx = bodyi.x - bodyj.x;
- dy = bodyi.y - bodyj.y;
- dz = bodyi.z - bodyj.z;
-
- distance = Math.sqrt(dx*dx + dy*dy + dz*dz);
- mag = dt / (distance * distance * distance);
-
- bodyi.vx -= dx * bodyj.mass * mag;
- bodyi.vy -= dy * bodyj.mass * mag;
- bodyi.vz -= dz * bodyj.mass * mag;
-
- bodyj.vx += dx * bodyi.mass * mag;
- bodyj.vy += dy * bodyi.mass * mag;
- bodyj.vz += dz * bodyi.mass * mag;
- }
- }
-
- for (var i=0; i<size; i++) {
- var body = this.bodies[i];
- body.x += dt * body.vx;
- body.y += dt * body.vy;
- body.z += dt * body.vz;
- }
-}
-
-NBodySystem.prototype.energy = function(){
- var dx, dy, dz, distance;
- var e = 0.0;
- var size = this.bodies.length;
-
- for (var i=0; i<size; i++) {
- var bodyi = this.bodies[i];
-
- e += 0.5 * bodyi.mass *
- ( bodyi.vx * bodyi.vx
- + bodyi.vy * bodyi.vy
- + bodyi.vz * bodyi.vz );
-
- for (var j=i+1; j<size; j++) {
- var bodyj = this.bodies[j];
- dx = bodyi.x - bodyj.x;
- dy = bodyi.y - bodyj.y;
- dz = bodyi.z - bodyj.z;
-
- distance = Math.sqrt(dx*dx + dy*dy + dz*dz);
- e -= (bodyi.mass * bodyj.mass) / distance;
- }
- }
- return e;
-}
-
-var ret;
-
-for ( var n = 3; n <= 24; n *= 2 ) {
- (function(){
- var bodies = new NBodySystem( Array(
- Sun(),Jupiter(),Saturn(),Uranus(),Neptune()
- ));
- var max = n * 100;
-
- ret = bodies.energy();
- for (var i=0; i<max; i++){
- bodies.advance(0.01);
- }
- ret = bodies.energy();
- })();
-}
diff --git a/SunSpider/tests/access-nsieve.js b/SunSpider/tests/access-nsieve.js
deleted file mode 100644
index 70fdf1a..0000000
--- a/SunSpider/tests/access-nsieve.js
+++ /dev/null
@@ -1,38 +0,0 @@
-// The Great Computer Language Shootout
-// http://shootout.alioth.debian.org/
-//
-// modified by Isaac Gouy
-
-function pad(number,width){
- var s = number.toString();
- var prefixWidth = width - s.length;
- if (prefixWidth>0){
- for (var i=1; i<=prefixWidth; i++) s = " " + s;
- }
- return s;
-}
-
-function nsieve(m, isPrime){
- var i, k, count;
-
- for (i=2; i<=m; i++) { isPrime[i] = true; }
- count = 0;
-
- for (i=2; i<=m; i++){
- if (isPrime[i]) {
- for (k=i+i; k<=m; k+=i) isPrime[k] = false;
- count++;
- }
- }
- return count;
-}
-
-function sieve() {
- for (var i = 1; i <= 3; i++ ) {
- var m = (1<<i)*10000;
- var flags = Array(m+1);
- nsieve(m, flags);
- }
-}
-
-sieve();
diff --git a/SunSpider/tests/bitops-3bit-bits-in-byte.js b/SunSpider/tests/bitops-3bit-bits-in-byte.js
deleted file mode 100644
index 1d85406..0000000
--- a/SunSpider/tests/bitops-3bit-bits-in-byte.js
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2004 by Arthur Langereis (arthur_ext at domain xfinitegames, tld com
-
-// 1 op = 6 ANDs, 3 SHRs, 3 SHLs, 4 assigns, 2 ADDs
-// O(1)
-function fast3bitlookup(b) {
-var c, bi3b = 0xE994; // 0b1110 1001 1001 0100; // 3 2 2 1 2 1 1 0
-c = 3 & (bi3b >> ((b << 1) & 14));
-c += 3 & (bi3b >> ((b >> 2) & 14));
-c += 3 & (bi3b >> ((b >> 5) & 6));
-return c;
-
-/*
-lir4,0xE994; 9 instructions, no memory access, minimal register dependence, 6 shifts, 2 adds, 1 inline assign
-rlwinmr5,r3,1,28,30
-rlwinmr6,r3,30,28,30
-rlwinmr7,r3,27,29,30
-rlwnmr8,r4,r5,30,31
-rlwnmr9,r4,r6,30,31
-rlwnmr10,r4,r7,30,31
-addr3,r8,r9
-addr3,r3,r10
-*/
-}
-
-
-function TimeFunc(func) {
-var x, y, t;
-for(var x=0; x<500; x++)
-for(var y=0; y<256; y++) func(y);
-}
-
-TimeFunc(fast3bitlookup);
diff --git a/SunSpider/tests/bitops-bits-in-byte.js b/SunSpider/tests/bitops-bits-in-byte.js
deleted file mode 100644
index 9a3acd4..0000000
--- a/SunSpider/tests/bitops-bits-in-byte.js
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2004 by Arthur Langereis (arthur_ext at domain xfinitegames, tld com)
-
-
-// 1 op = 2 assigns, 16 compare/branches, 8 ANDs, (0-8) ADDs, 8 SHLs
-// O(n)
-function bitsinbyte(b) {
-var m = 1, c = 0;
-while(m<0x100) {
-if(b & m) c++;
-m <<= 1;
-}
-return c;
-}
-
-function TimeFunc(func) {
-var x, y, t;
-for(var x=0; x<350; x++)
-for(var y=0; y<256; y++) func(y);
-}
-
-TimeFunc(bitsinbyte);
diff --git a/SunSpider/tests/bitops-bitwise-and.js b/SunSpider/tests/bitops-bitwise-and.js
deleted file mode 100644
index 7c80e69..0000000
--- a/SunSpider/tests/bitops-bitwise-and.js
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-bitwiseAndValue = 4294967296;
-for (var i = 0; i < 600000; i++)
- bitwiseAndValue = bitwiseAndValue & i;
diff --git a/SunSpider/tests/bitops-nsieve-bits.js b/SunSpider/tests/bitops-nsieve-bits.js
deleted file mode 100644
index 6ef0ddb..0000000
--- a/SunSpider/tests/bitops-nsieve-bits.js
+++ /dev/null
@@ -1,32 +0,0 @@
-// The Great Computer Language Shootout
-// http://shootout.alioth.debian.org
-//
-// Contributed by Ian Osgood
-
-function pad(n,width) {
- var s = n.toString();
- while (s.length < width) s = ' ' + s;
- return s;
-}
-
-function primes(isPrime, n) {
- var i, count = 0, m = 10000<<n, size = m+31>>5;
-
- for (i=0; i<size; i++) isPrime[i] = 0xffffffff;
-
- for (i=2; i<m; i++)
- if (isPrime[i>>5] & 1<<(i&31)) {
- for (var j=i+i; j<m; j+=i)
- isPrime[j>>5] &= ~(1<<(j&31));
- count++;
- }
-}
-
-function sieve() {
- for (var i = 4; i <= 4; i++) {
- var isPrime = new Array((10000<<i)+31>>5);
- primes(isPrime, i);
- }
-}
-
-sieve();
diff --git a/SunSpider/tests/controlflow-recursive.js b/SunSpider/tests/controlflow-recursive.js
deleted file mode 100644
index fcfe1c4..0000000
--- a/SunSpider/tests/controlflow-recursive.js
+++ /dev/null
@@ -1,25 +0,0 @@
-// The Computer Language Shootout
-// http://shootout.alioth.debian.org/
-// contributed by Isaac Gouy
-
-function ack(m,n){
- if (m==0) { return n+1; }
- if (n==0) { return ack(m-1,1); }
- return ack(m-1, ack(m,n-1) );
-}
-
-function fib(n) {
- if (n < 2){ return 1; }
- return fib(n-2) + fib(n-1);
-}
-
-function tak(x,y,z) {
- if (y >= x) return z;
- return tak(tak(x-1,y,z), tak(y-1,z,x), tak(z-1,x,y));
-}
-
-for ( var i = 3; i <= 5; i++ ) {
- ack(3,i);
- fib(17.0+i);
- tak(3*i+3,2*i+2,i+1);
-}
diff --git a/SunSpider/tests/crypto-aes.js b/SunSpider/tests/crypto-aes.js
deleted file mode 100644
index 93a5969..0000000
--- a/SunSpider/tests/crypto-aes.js
+++ /dev/null
@@ -1,422 +0,0 @@
-/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
-/*
- * AES Cipher function: encrypt 'input' with Rijndael algorithm
- *
- * takes byte-array 'input' (16 bytes)
- * 2D byte-array key schedule 'w' (Nr+1 x Nb bytes)
- *
- * applies Nr rounds (10/12/14) using key schedule w for 'add round key' stage
- *
- * returns byte-array encrypted value (16 bytes)
- */
-function Cipher(input, w) { // main Cipher function [§5.1]
- var Nb = 4; // block size (in words): no of columns in state (fixed at 4 for AES)
- var Nr = w.length/Nb - 1; // no of rounds: 10/12/14 for 128/192/256-bit keys
-
- var state = [[],[],[],[]]; // initialise 4xNb byte-array 'state' with input [§3.4]
- for (var i=0; i<4*Nb; i++) state[i%4][Math.floor(i/4)] = input[i];
-
- state = AddRoundKey(state, w, 0, Nb);
-
- for (var round=1; round<Nr; round++) {
- state = SubBytes(state, Nb);
- state = ShiftRows(state, Nb);
- state = MixColumns(state, Nb);
- state = AddRoundKey(state, w, round, Nb);
- }
-
- state = SubBytes(state, Nb);
- state = ShiftRows(state, Nb);
- state = AddRoundKey(state, w, Nr, Nb);
-
- var output = new Array(4*Nb); // convert state to 1-d array before returning [§3.4]
- for (var i=0; i<4*Nb; i++) output[i] = state[i%4][Math.floor(i/4)];
- return output;
-}
-
-
-function SubBytes(s, Nb) { // apply SBox to state S [§5.1.1]
- for (var r=0; r<4; r++) {
- for (var c=0; c<Nb; c++) s[r][c] = Sbox[s[r][c]];
- }
- return s;
-}
-
-
-function ShiftRows(s, Nb) { // shift row r of state S left by r bytes [§5.1.2]
- var t = new Array(4);
- for (var r=1; r<4; r++) {
- for (var c=0; c<4; c++) t[c] = s[r][(c+r)%Nb]; // shift into temp copy
- for (var c=0; c<4; c++) s[r][c] = t[c]; // and copy back
- } // note that this will work for Nb=4,5,6, but not 7,8 (always 4 for AES):
- return s; // see fp.gladman.plus.com/cryptography_technology/rijndael/aes.spec.311.pdf
-}
-
-
-function MixColumns(s, Nb) { // combine bytes of each col of state S [§5.1.3]
- for (var c=0; c<4; c++) {
- var a = new Array(4); // 'a' is a copy of the current column from 's'
- var b = new Array(4); // 'b' is a•{02} in GF(2^8)
- for (var i=0; i<4; i++) {
- a[i] = s[i][c];
- b[i] = s[i][c]&0x80 ? s[i][c]<<1 ^ 0x011b : s[i][c]<<1;
- }
- // a[n] ^ b[n] is a•{03} in GF(2^8)
- s[0][c] = b[0] ^ a[1] ^ b[1] ^ a[2] ^ a[3]; // 2*a0 + 3*a1 + a2 + a3
- s[1][c] = a[0] ^ b[1] ^ a[2] ^ b[2] ^ a[3]; // a0 * 2*a1 + 3*a2 + a3
- s[2][c] = a[0] ^ a[1] ^ b[2] ^ a[3] ^ b[3]; // a0 + a1 + 2*a2 + 3*a3
- s[3][c] = a[0] ^ b[0] ^ a[1] ^ a[2] ^ b[3]; // 3*a0 + a1 + a2 + 2*a3
- }
- return s;
-}
-
-
-function AddRoundKey(state, w, rnd, Nb) { // xor Round Key into state S [§5.1.4]
- for (var r=0; r<4; r++) {
- for (var c=0; c<Nb; c++) state[r][c] ^= w[rnd*4+c][r];
- }
- return state;
-}
-
-
-function KeyExpansion(key) { // generate Key Schedule (byte-array Nr+1 x Nb) from Key [§5.2]
- var Nb = 4; // block size (in words): no of columns in state (fixed at 4 for AES)
- var Nk = key.length/4 // key length (in words): 4/6/8 for 128/192/256-bit keys
- var Nr = Nk + 6; // no of rounds: 10/12/14 for 128/192/256-bit keys
-
- var w = new Array(Nb*(Nr+1));
- var temp = new Array(4);
-
- for (var i=0; i<Nk; i++) {
- var r = [key[4*i], key[4*i+1], key[4*i+2], key[4*i+3]];
- w[i] = r;
- }
-
- for (var i=Nk; i<(Nb*(Nr+1)); i++) {
- w[i] = new Array(4);
- for (var t=0; t<4; t++) temp[t] = w[i-1][t];
- if (i % Nk == 0) {
- temp = SubWord(RotWord(temp));
- for (var t=0; t<4; t++) temp[t] ^= Rcon[i/Nk][t];
- } else if (Nk > 6 && i%Nk == 4) {
- temp = SubWord(temp);
- }
- for (var t=0; t<4; t++) w[i][t] = w[i-Nk][t] ^ temp[t];
- }
-
- return w;
-}
-
-function SubWord(w) { // apply SBox to 4-byte word w
- for (var i=0; i<4; i++) w[i] = Sbox[w[i]];
- return w;
-}
-
-function RotWord(w) { // rotate 4-byte word w left by one byte
- w[4] = w[0];
- for (var i=0; i<4; i++) w[i] = w[i+1];
- return w;
-}
-
-
-// Sbox is pre-computed multiplicative inverse in GF(2^8) used in SubBytes and KeyExpansion [§5.1.1]
-var Sbox = [0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5,0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76,
- 0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0,0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0,
- 0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc,0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15,
- 0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a,0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75,
- 0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0,0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84,
- 0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b,0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf,
- 0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85,0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8,
- 0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5,0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2,
- 0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17,0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73,
- 0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88,0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb,
- 0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c,0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79,
- 0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9,0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08,
- 0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6,0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a,
- 0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e,0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e,
- 0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94,0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf,
- 0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68,0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16];
-
-// Rcon is Round Constant used for the Key Expansion [1st col is 2^(r-1) in GF(2^8)] [§5.2]
-var Rcon = [ [0x00, 0x00, 0x00, 0x00],
- [0x01, 0x00, 0x00, 0x00],
- [0x02, 0x00, 0x00, 0x00],
- [0x04, 0x00, 0x00, 0x00],
- [0x08, 0x00, 0x00, 0x00],
- [0x10, 0x00, 0x00, 0x00],
- [0x20, 0x00, 0x00, 0x00],
- [0x40, 0x00, 0x00, 0x00],
- [0x80, 0x00, 0x00, 0x00],
- [0x1b, 0x00, 0x00, 0x00],
- [0x36, 0x00, 0x00, 0x00] ];
-
-
-/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
-/*
- * Use AES to encrypt 'plaintext' with 'password' using 'nBits' key, in 'Counter' mode of operation
- * - see http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf
- * for each block
- * - outputblock = cipher(counter, key)
- * - cipherblock = plaintext xor outputblock
- */
-function AESEncryptCtr(plaintext, password, nBits) {
- if (!(nBits==128 || nBits==192 || nBits==256)) return ''; // standard allows 128/192/256 bit keys
-
- // for this example script, generate the key by applying Cipher to 1st 16/24/32 chars of password;
- // for real-world applications, a more secure approach would be to hash the password e.g. with SHA-1
- var nBytes = nBits/8; // no bytes in key
- var pwBytes = new Array(nBytes);
- for (var i=0; i<nBytes; i++) pwBytes[i] = password.charCodeAt(i) & 0xff;
- var key = Cipher(pwBytes, KeyExpansion(pwBytes));
- key = key.concat(key.slice(0, nBytes-16)); // key is now 16/24/32 bytes long
-
- // initialise counter block (NIST SP800-38A §B.2): millisecond time-stamp for nonce in 1st 8 bytes,
- // block counter in 2nd 8 bytes
- var blockSize = 16; // block size fixed at 16 bytes / 128 bits (Nb=4) for AES
- var counterBlock = new Array(blockSize); // block size fixed at 16 bytes / 128 bits (Nb=4) for AES
- var nonce = (new Date()).getTime(); // milliseconds since 1-Jan-1970
-
- // encode nonce in two stages to cater for JavaScript 32-bit limit on bitwise ops
- for (var i=0; i<4; i++) counterBlock[i] = (nonce >>> i*8) & 0xff;
- for (var i=0; i<4; i++) counterBlock[i+4] = (nonce/0x100000000 >>> i*8) & 0xff;
-
- // generate key schedule - an expansion of the key into distinct Key Rounds for each round
- var keySchedule = KeyExpansion(key);
-
- var blockCount = Math.ceil(plaintext.length/blockSize);
- var ciphertext = new Array(blockCount); // ciphertext as array of strings
-
- for (var b=0; b<blockCount; b++) {
- // set counter (block #) in last 8 bytes of counter block (leaving nonce in 1st 8 bytes)
- // again done in two stages for 32-bit ops
- for (var c=0; c<4; c++) counterBlock[15-c] = (b >>> c*8) & 0xff;
- for (var c=0; c<4; c++) counterBlock[15-c-4] = (b/0x100000000 >>> c*8)
-
- var cipherCntr = Cipher(counterBlock, keySchedule); // -- encrypt counter block --
-
- // calculate length of final block:
- var blockLength = b<blockCount-1 ? blockSize : (plaintext.length-1)%blockSize+1;
-
- var ct = '';
- for (var i=0; i<blockLength; i++) { // -- xor plaintext with ciphered counter byte-by-byte --
- var plaintextByte = plaintext.charCodeAt(b*blockSize+i);
- var cipherByte = plaintextByte ^ cipherCntr[i];
- ct += String.fromCharCode(cipherByte);
- }
- // ct is now ciphertext for this block
-
- ciphertext[b] = escCtrlChars(ct); // escape troublesome characters in ciphertext
- }
-
- // convert the nonce to a string to go on the front of the ciphertext
- var ctrTxt = '';
- for (var i=0; i<8; i++) ctrTxt += String.fromCharCode(counterBlock[i]);
- ctrTxt = escCtrlChars(ctrTxt);
-
- // use '-' to separate blocks, use Array.join to concatenate arrays of strings for efficiency
- return ctrTxt + '-' + ciphertext.join('-');
-}
-
-
-/*
- * Use AES to decrypt 'ciphertext' with 'password' using 'nBits' key, in Counter mode of operation
- *
- * for each block
- * - outputblock = cipher(counter, key)
- * - cipherblock = plaintext xor outputblock
- */
-function AESDecryptCtr(ciphertext, password, nBits) {
- if (!(nBits==128 || nBits==192 || nBits==256)) return ''; // standard allows 128/192/256 bit keys
-
- var nBytes = nBits/8; // no bytes in key
- var pwBytes = new Array(nBytes);
- for (var i=0; i<nBytes; i++) pwBytes[i] = password.charCodeAt(i) & 0xff;
- var pwKeySchedule = KeyExpansion(pwBytes);
- var key = Cipher(pwBytes, pwKeySchedule);
- key = key.concat(key.slice(0, nBytes-16)); // key is now 16/24/32 bytes long
-
- var keySchedule = KeyExpansion(key);
-
- ciphertext = ciphertext.split('-'); // split ciphertext into array of block-length strings
-
- // recover nonce from 1st element of ciphertext
- var blockSize = 16; // block size fixed at 16 bytes / 128 bits (Nb=4) for AES
- var counterBlock = new Array(blockSize);
- var ctrTxt = unescCtrlChars(ciphertext[0]);
- for (var i=0; i<8; i++) counterBlock[i] = ctrTxt.charCodeAt(i);
-
- var plaintext = new Array(ciphertext.length-1);
-
- for (var b=1; b<ciphertext.length; b++) {
- // set counter (block #) in last 8 bytes of counter block (leaving nonce in 1st 8 bytes)
- for (var c=0; c<4; c++) counterBlock[15-c] = ((b-1) >>> c*8) & 0xff;
- for (var c=0; c<4; c++) counterBlock[15-c-4] = ((b/0x100000000-1) >>> c*8) & 0xff;
-
- var cipherCntr = Cipher(counterBlock, keySchedule); // encrypt counter block
-
- ciphertext[b] = unescCtrlChars(ciphertext[b]);
-
- var pt = '';
- for (var i=0; i<ciphertext[b].length; i++) {
- // -- xor plaintext with ciphered counter byte-by-byte --
- var ciphertextByte = ciphertext[b].charCodeAt(i);
- var plaintextByte = ciphertextByte ^ cipherCntr[i];
- pt += String.fromCharCode(plaintextByte);
- }
- // pt is now plaintext for this block
-
- plaintext[b-1] = pt; // b-1 'cos no initial nonce block in plaintext
- }
-
- return plaintext.join('');
-}
-
-/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
-function escCtrlChars(str) { // escape control chars which might cause problems handling ciphertext
- return str.replace(/[\0\t\n\v\f\r\xa0'"!-]/g, function(c) { return '!' + c.charCodeAt(0) + '!'; });
-} // \xa0 to cater for bug in Firefox; include '-' to leave it free for use as a block marker
-
-function unescCtrlChars(str) { // unescape potentially problematic control characters
- return str.replace(/!\d\d?\d?!/g, function(c) { return String.fromCharCode(c.slice(1,-1)); });
-}
-/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
-/*
- * if escCtrlChars()/unescCtrlChars() still gives problems, use encodeBase64()/decodeBase64() instead
- */
-var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
-
-function encodeBase64(str) { // http://tools.ietf.org/html/rfc4648
- var o1, o2, o3, h1, h2, h3, h4, bits, i=0, enc='';
-
- str = encodeUTF8(str); // encode multi-byte chars into UTF-8 for byte-array
-
- do { // pack three octets into four hexets
- o1 = str.charCodeAt(i++);
- o2 = str.charCodeAt(i++);
- o3 = str.charCodeAt(i++);
-
- bits = o1<<16 | o2<<8 | o3;
-
- h1 = bits>>18 & 0x3f;
- h2 = bits>>12 & 0x3f;
- h3 = bits>>6 & 0x3f;
- h4 = bits & 0x3f;
-
- // end of string? index to '=' in b64
- if (isNaN(o3)) h4 = 64;
- if (isNaN(o2)) h3 = 64;
-
- // use hexets to index into b64, and append result to encoded string
- enc += b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
- } while (i < str.length);
-
- return enc;
-}
-
-function decodeBase64(str) {
- var o1, o2, o3, h1, h2, h3, h4, bits, i=0, enc='';
-
- do { // unpack four hexets into three octets using index points in b64
- h1 = b64.indexOf(str.charAt(i++));
- h2 = b64.indexOf(str.charAt(i++));
- h3 = b64.indexOf(str.charAt(i++));
- h4 = b64.indexOf(str.charAt(i++));
-
- bits = h1<<18 | h2<<12 | h3<<6 | h4;
-
- o1 = bits>>16 & 0xff;
- o2 = bits>>8 & 0xff;
- o3 = bits & 0xff;
-
- if (h3 == 64) enc += String.fromCharCode(o1);
- else if (h4 == 64) enc += String.fromCharCode(o1, o2);
- else enc += String.fromCharCode(o1, o2, o3);
- } while (i < str.length);
-
- return decodeUTF8(enc); // decode UTF-8 byte-array back to Unicode
-}
-
-function encodeUTF8(str) { // encode multi-byte string into utf-8 multiple single-byte characters
- str = str.replace(
- /[\u0080-\u07ff]/g, // U+0080 - U+07FF = 2-byte chars
- function(c) {
- var cc = c.charCodeAt(0);
- return String.fromCharCode(0xc0 | cc>>6, 0x80 | cc&0x3f); }
- );
- str = str.replace(
- /[\u0800-\uffff]/g, // U+0800 - U+FFFF = 3-byte chars
- function(c) {
- var cc = c.charCodeAt(0);
- return String.fromCharCode(0xe0 | cc>>12, 0x80 | cc>>6&0x3F, 0x80 | cc&0x3f); }
- );
- return str;
-}
-
-function decodeUTF8(str) { // decode utf-8 encoded string back into multi-byte characters
- str = str.replace(
- /[\u00c0-\u00df][\u0080-\u00bf]/g, // 2-byte chars
- function(c) {
- var cc = (c.charCodeAt(0)&0x1f)<<6 | c.charCodeAt(1)&0x3f;
- return String.fromCharCode(cc); }
- );
- str = str.replace(
- /[\u00e0-\u00ef][\u0080-\u00bf][\u0080-\u00bf]/g, // 3-byte chars
- function(c) {
- var cc = (c.charCodeAt(0)&0x0f)<<12 | (c.charCodeAt(1)&0x3f<<6) | c.charCodeAt(2)&0x3f;
- return String.fromCharCode(cc); }
- );
- return str;
-}
-
-
-function byteArrayToHexStr(b) { // convert byte array to hex string for displaying test vectors
- var s = '';
- for (var i=0; i<b.length; i++) s += b[i].toString(16) + ' ';
- return s;
-}
-
-/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-
-
-var plainText = "ROMEO: But, soft! what light through yonder window breaks?\n\
-It is the east, and Juliet is the sun.\n\
-Arise, fair sun, and kill the envious moon,\n\
-Who is already sick and pale with grief,\n\
-That thou her maid art far more fair than she:\n\
-Be not her maid, since she is envious;\n\
-Her vestal livery is but sick and green\n\
-And none but fools do wear it; cast it off.\n\
-It is my lady, O, it is my love!\n\
-O, that she knew she were!\n\
-She speaks yet she says nothing: what of that?\n\
-Her eye discourses; I will answer it.\n\
-I am too bold, 'tis not to me she speaks:\n\
-Two of the fairest stars in all the heaven,\n\
-Having some business, do entreat her eyes\n\
-To twinkle in their spheres till they return.\n\
-What if her eyes were there, they in her head?\n\
-The brightness of her cheek would shame those stars,\n\
-As daylight doth a lamp; her eyes in heaven\n\
-Would through the airy region stream so bright\n\
-That birds would sing and think it were not night.\n\
-See, how she leans her cheek upon her hand!\n\
-O, that I were a glove upon that hand,\n\
-That I might touch that cheek!\n\
-JULIET: Ay me!\n\
-ROMEO: She speaks:\n\
-O, speak again, bright angel! for thou art\n\
-As glorious to this night, being o'er my head\n\
-As is a winged messenger of heaven\n\
-Unto the white-upturned wondering eyes\n\
-Of mortals that fall back to gaze on him\n\
-When he bestrides the lazy-pacing clouds\n\
-And sails upon the bosom of the air.";
-
-var password = "O Romeo, Romeo! wherefore art thou Romeo?";
-
-var cipherText = AESEncryptCtr(plainText, password, 256);
-var decryptedText = AESDecryptCtr(cipherText, password, 256);
diff --git a/SunSpider/tests/crypto-md5.js b/SunSpider/tests/crypto-md5.js
deleted file mode 100644
index cc7a896..0000000
--- a/SunSpider/tests/crypto-md5.js
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
- * Digest Algorithm, as defined in RFC 1321.
- * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
- * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
- * Distributed under the BSD License
- * See http://pajhome.org.uk/crypt/md5 for more info.
- */
-
-/*
- * Configurable variables. You may need to tweak these to be compatible with
- * the server-side, but the defaults work in most cases.
- */
-var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
-var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */
-var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */
-
-/*
- * These are the functions you'll usually want to call
- * They take string arguments and return either hex or base-64 encoded strings
- */
-function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
-function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}
-function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));}
-function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }
-function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }
-function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }
-
-/*
- * Perform a simple self-test to see if the VM is working
- */
-function md5_vm_test()
-{
- return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
-}
-
-/*
- * Calculate the MD5 of an array of little-endian words, and a bit length
- */
-function core_md5(x, len)
-{
- /* append padding */
- x[len >> 5] |= 0x80 << ((len) % 32);
- x[(((len + 64) >>> 9) << 4) + 14] = len;
-
- var a = 1732584193;
- var b = -271733879;
- var c = -1732584194;
- var d = 271733878;
-
- for(var i = 0; i < x.length; i += 16)
- {
- var olda = a;
- var oldb = b;
- var oldc = c;
- var oldd = d;
-
- a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
- d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
- c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
- b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
- a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
- d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
- c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
- b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
- a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
- d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
- c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
- b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
- a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
- d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
- c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
- b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
-
- a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
- d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
- c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
- b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
- a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
- d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
- c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
- b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
- a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
- d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
- c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
- b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
- a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
- d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
- c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
- b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
-
- a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
- d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
- c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
- b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
- a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
- d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
- c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
- b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
- a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
- d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
- c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
- b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
- a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
- d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
- c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
- b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
-
- a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
- d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
- c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
- b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
- a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
- d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
- c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
- b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
- a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
- d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
- c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
- b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
- a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
- d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
- c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
- b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
-
- a = safe_add(a, olda);
- b = safe_add(b, oldb);
- c = safe_add(c, oldc);
- d = safe_add(d, oldd);
- }
- return Array(a, b, c, d);
-
-}
-
-/*
- * These functions implement the four basic operations the algorithm uses.
- */
-function md5_cmn(q, a, b, x, s, t)
-{
- return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
-}
-function md5_ff(a, b, c, d, x, s, t)
-{
- return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
-}
-function md5_gg(a, b, c, d, x, s, t)
-{
- return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
-}
-function md5_hh(a, b, c, d, x, s, t)
-{
- return md5_cmn(b ^ c ^ d, a, b, x, s, t);
-}
-function md5_ii(a, b, c, d, x, s, t)
-{
- return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
-}
-
-/*
- * Calculate the HMAC-MD5, of a key and some data
- */
-function core_hmac_md5(key, data)
-{
- var bkey = str2binl(key);
- if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);
-
- var ipad = Array(16), opad = Array(16);
- for(var i = 0; i < 16; i++)
- {
- ipad[i] = bkey[i] ^ 0x36363636;
- opad[i] = bkey[i] ^ 0x5C5C5C5C;
- }
-
- var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
- return core_md5(opad.concat(hash), 512 + 128);
-}
-
-/*
- * Add integers, wrapping at 2^32. This uses 16-bit operations internally
- * to work around bugs in some JS interpreters.
- */
-function safe_add(x, y)
-{
- var lsw = (x & 0xFFFF) + (y & 0xFFFF);
- var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
- return (msw << 16) | (lsw & 0xFFFF);
-}
-
-/*
- * Bitwise rotate a 32-bit number to the left.
- */
-function bit_rol(num, cnt)
-{
- return (num << cnt) | (num >>> (32 - cnt));
-}
-
-/*
- * Convert a string to an array of little-endian words
- * If chrsz is ASCII, characters >255 have their hi-byte silently ignored.
- */
-function str2binl(str)
-{
- var bin = Array();
- var mask = (1 << chrsz) - 1;
- for(var i = 0; i < str.length * chrsz; i += chrsz)
- bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);
- return bin;
-}
-
-/*
- * Convert an array of little-endian words to a string
- */
-function binl2str(bin)
-{
- var str = "";
- var mask = (1 << chrsz) - 1;
- for(var i = 0; i < bin.length * 32; i += chrsz)
- str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);
- return str;
-}
-
-/*
- * Convert an array of little-endian words to a hex string.
- */
-function binl2hex(binarray)
-{
- var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
- var str = "";
- for(var i = 0; i < binarray.length * 4; i++)
- {
- str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
- hex_tab.charAt((binarray[i>>2] >> ((i%4)*8 )) & 0xF);
- }
- return str;
-}
-
-/*
- * Convert an array of little-endian words to a base-64 string
- */
-function binl2b64(binarray)
-{
- var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
- var str = "";
- for(var i = 0; i < binarray.length * 4; i += 3)
- {
- var triplet = (((binarray[i >> 2] >> 8 * ( i %4)) & 0xFF) << 16)
- | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )
- | ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);
- for(var j = 0; j < 4; j++)
- {
- if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
- else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
- }
- }
- return str;
-}
-
-var plainText = "Rebellious subjects, enemies to peace,\n\
-Profaners of this neighbour-stained steel,--\n\
-Will they not hear? What, ho! you men, you beasts,\n\
-That quench the fire of your pernicious rage\n\
-With purple fountains issuing from your veins,\n\
-On pain of torture, from those bloody hands\n\
-Throw your mistemper'd weapons to the ground,\n\
-And hear the sentence of your moved prince.\n\
-Three civil brawls, bred of an airy word,\n\
-By thee, old Capulet, and Montague,\n\
-Have thrice disturb'd the quiet of our streets,\n\
-And made Verona's ancient citizens\n\
-Cast by their grave beseeming ornaments,\n\
-To wield old partisans, in hands as old,\n\
-Canker'd with peace, to part your canker'd hate:\n\
-If ever you disturb our streets again,\n\
-Your lives shall pay the forfeit of the peace.\n\
-For this time, all the rest depart away:\n\
-You Capulet; shall go along with me:\n\
-And, Montague, come you this afternoon,\n\
-To know our further pleasure in this case,\n\
-To old Free-town, our common judgment-place.\n\
-Once more, on pain of death, all men depart."
-
-for (var i = 0; i <4; i++) {
- plainText += plainText;
-}
-
-var md5Output = hex_md5(plainText);
diff --git a/SunSpider/tests/crypto-sha1.js b/SunSpider/tests/crypto-sha1.js
deleted file mode 100644
index ca8d901..0000000
--- a/SunSpider/tests/crypto-sha1.js
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
- * in FIPS PUB 180-1
- * Version 2.1a Copyright Paul Johnston 2000 - 2002.
- * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
- * Distributed under the BSD License
- * See http://pajhome.org.uk/crypt/md5 for details.
- */
-
-/*
- * Configurable variables. You may need to tweak these to be compatible with
- * the server-side, but the defaults work in most cases.
- */
-var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
-var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */
-var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */
-
-/*
- * These are the functions you'll usually want to call
- * They take string arguments and return either hex or base-64 encoded strings
- */
-function hex_sha1(s){return binb2hex(core_sha1(str2binb(s),s.length * chrsz));}
-function b64_sha1(s){return binb2b64(core_sha1(str2binb(s),s.length * chrsz));}
-function str_sha1(s){return binb2str(core_sha1(str2binb(s),s.length * chrsz));}
-function hex_hmac_sha1(key, data){ return binb2hex(core_hmac_sha1(key, data));}
-function b64_hmac_sha1(key, data){ return binb2b64(core_hmac_sha1(key, data));}
-function str_hmac_sha1(key, data){ return binb2str(core_hmac_sha1(key, data));}
-
-/*
- * Perform a simple self-test to see if the VM is working
- */
-function sha1_vm_test()
-{
- return hex_sha1("abc") == "a9993e364706816aba3e25717850c26c9cd0d89d";
-}
-
-/*
- * Calculate the SHA-1 of an array of big-endian words, and a bit length
- */
-function core_sha1(x, len)
-{
- /* append padding */
- x[len >> 5] |= 0x80 << (24 - len % 32);
- x[((len + 64 >> 9) << 4) + 15] = len;
-
- var w = Array(80);
- var a = 1732584193;
- var b = -271733879;
- var c = -1732584194;
- var d = 271733878;
- var e = -1009589776;
-
- for(var i = 0; i < x.length; i += 16)
- {
- var olda = a;
- var oldb = b;
- var oldc = c;
- var oldd = d;
- var olde = e;
-
- for(var j = 0; j < 80; j++)
- {
- if(j < 16) w[j] = x[i + j];
- else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1);
- var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)),
- safe_add(safe_add(e, w[j]), sha1_kt(j)));
- e = d;
- d = c;
- c = rol(b, 30);
- b = a;
- a = t;
- }
-
- a = safe_add(a, olda);
- b = safe_add(b, oldb);
- c = safe_add(c, oldc);
- d = safe_add(d, oldd);
- e = safe_add(e, olde);
- }
- return Array(a, b, c, d, e);
-
-}
-
-/*
- * Perform the appropriate triplet combination function for the current
- * iteration
- */
-function sha1_ft(t, b, c, d)
-{
- if(t < 20) return (b & c) | ((~b) & d);
- if(t < 40) return b ^ c ^ d;
- if(t < 60) return (b & c) | (b & d) | (c & d);
- return b ^ c ^ d;
-}
-
-/*
- * Determine the appropriate additive constant for the current iteration
- */
-function sha1_kt(t)
-{
- return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 :
- (t < 60) ? -1894007588 : -899497514;
-}
-
-/*
- * Calculate the HMAC-SHA1 of a key and some data
- */
-function core_hmac_sha1(key, data)
-{
- var bkey = str2binb(key);
- if(bkey.length > 16) bkey = core_sha1(bkey, key.length * chrsz);
-
- var ipad = Array(16), opad = Array(16);
- for(var i = 0; i < 16; i++)
- {
- ipad[i] = bkey[i] ^ 0x36363636;
- opad[i] = bkey[i] ^ 0x5C5C5C5C;
- }
-
- var hash = core_sha1(ipad.concat(str2binb(data)), 512 + data.length * chrsz);
- return core_sha1(opad.concat(hash), 512 + 160);
-}
-
-/*
- * Add integers, wrapping at 2^32. This uses 16-bit operations internally
- * to work around bugs in some JS interpreters.
- */
-function safe_add(x, y)
-{
- var lsw = (x & 0xFFFF) + (y & 0xFFFF);
- var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
- return (msw << 16) | (lsw & 0xFFFF);
-}
-
-/*
- * Bitwise rotate a 32-bit number to the left.
- */
-function rol(num, cnt)
-{
- return (num << cnt) | (num >>> (32 - cnt));
-}
-
-/*
- * Convert an 8-bit or 16-bit string to an array of big-endian words
- * In 8-bit function, characters >255 have their hi-byte silently ignored.
- */
-function str2binb(str)
-{
- var bin = Array();
- var mask = (1 << chrsz) - 1;
- for(var i = 0; i < str.length * chrsz; i += chrsz)
- bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (32 - chrsz - i%32);
- return bin;
-}
-
-/*
- * Convert an array of big-endian words to a string
- */
-function binb2str(bin)
-{
- var str = "";
- var mask = (1 << chrsz) - 1;
- for(var i = 0; i < bin.length * 32; i += chrsz)
- str += String.fromCharCode((bin[i>>5] >>> (32 - chrsz - i%32)) & mask);
- return str;
-}
-
-/*
- * Convert an array of big-endian words to a hex string.
- */
-function binb2hex(binarray)
-{
- var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
- var str = "";
- for(var i = 0; i < binarray.length * 4; i++)
- {
- str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) +
- hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8 )) & 0xF);
- }
- return str;
-}
-
-/*
- * Convert an array of big-endian words to a base-64 string
- */
-function binb2b64(binarray)
-{
- var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
- var str = "";
- for(var i = 0; i < binarray.length * 4; i += 3)
- {
- var triplet = (((binarray[i >> 2] >> 8 * (3 - i %4)) & 0xFF) << 16)
- | (((binarray[i+1 >> 2] >> 8 * (3 - (i+1)%4)) & 0xFF) << 8 )
- | ((binarray[i+2 >> 2] >> 8 * (3 - (i+2)%4)) & 0xFF);
- for(var j = 0; j < 4; j++)
- {
- if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
- else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
- }
- }
- return str;
-}
-
-
-var plainText = "Two households, both alike in dignity,\n\
-In fair Verona, where we lay our scene,\n\
-From ancient grudge break to new mutiny,\n\
-Where civil blood makes civil hands unclean.\n\
-From forth the fatal loins of these two foes\n\
-A pair of star-cross'd lovers take their life;\n\
-Whole misadventured piteous overthrows\n\
-Do with their death bury their parents' strife.\n\
-The fearful passage of their death-mark'd love,\n\
-And the continuance of their parents' rage,\n\
-Which, but their children's end, nought could remove,\n\
-Is now the two hours' traffic of our stage;\n\
-The which if you with patient ears attend,\n\
-What here shall miss, our toil shall strive to mend.";
-
-for (var i = 0; i <4; i++) {
- plainText += plainText;
-}
-
-var sha1Output = hex_sha1(plainText);
diff --git a/SunSpider/tests/date-format-tofte.js b/SunSpider/tests/date-format-tofte.js
deleted file mode 100644
index 66e2cef..0000000
--- a/SunSpider/tests/date-format-tofte.js
+++ /dev/null
@@ -1,299 +0,0 @@
-function arrayExists(array, x) {
- for (var i = 0; i < array.length; i++) {
- if (array[i] == x) return true;
- }
- return false;
-}
-
-Date.prototype.formatDate = function (input,time) {
- // formatDate :
- // a PHP date like function, for formatting date strings
- // See: http://www.php.net/date
- //
- // input : format string
- // time : epoch time (seconds, and optional)
- //
- // if time is not passed, formatting is based on
- // the current "this" date object's set time.
- //
- // supported:
- // a, A, B, d, D, F, g, G, h, H, i, j, l (lowercase L), L,
- // m, M, n, O, r, s, S, t, U, w, W, y, Y, z
- //
- // unsupported:
- // I (capital i), T, Z
-
- var switches = ["a", "A", "B", "d", "D", "F", "g", "G", "h", "H",
- "i", "j", "l", "L", "m", "M", "n", "O", "r", "s",
- "S", "t", "U", "w", "W", "y", "Y", "z"];
- var daysLong = ["Sunday", "Monday", "Tuesday", "Wednesday",
- "Thursday", "Friday", "Saturday"];
- var daysShort = ["Sun", "Mon", "Tue", "Wed",
- "Thu", "Fri", "Sat"];
- var monthsShort = ["Jan", "Feb", "Mar", "Apr",
- "May", "Jun", "Jul", "Aug", "Sep",
- "Oct", "Nov", "Dec"];
- var monthsLong = ["January", "February", "March", "April",
- "May", "June", "July", "August", "September",
- "October", "November", "December"];
- var daysSuffix = ["st", "nd", "rd", "th", "th", "th", "th", // 1st - 7th
- "th", "th", "th", "th", "th", "th", "th", // 8th - 14th
- "th", "th", "th", "th", "th", "th", "st", // 15th - 21st
- "nd", "rd", "th", "th", "th", "th", "th", // 22nd - 28th
- "th", "th", "st"]; // 29th - 31st
-
- function a() {
- // Lowercase Ante meridiem and Post meridiem
- return self.getHours() > 11? "pm" : "am";
- }
- function A() {
- // Uppercase Ante meridiem and Post meridiem
- return self.getHours() > 11? "PM" : "AM";
- }
-
- function B(){
- // Swatch internet time. code simply grabbed from ppk,
- // since I was feeling lazy:
- // http://www.xs4all.nl/~ppk/js/beat.html
- var off = (self.getTimezoneOffset() + 60)*60;
- var theSeconds = (self.getHours() * 3600) +
- (self.getMinutes() * 60) +
- self.getSeconds() + off;
- var beat = Math.floor(theSeconds/86.4);
- if (beat > 1000) beat -= 1000;
- if (beat < 0) beat += 1000;
- if ((""+beat).length == 1) beat = "00"+beat;
- if ((""+beat).length == 2) beat = "0"+beat;
- return beat;
- }
-
- function d() {
- // Day of the month, 2 digits with leading zeros
- return new String(self.getDate()).length == 1?
- "0"+self.getDate() : self.getDate();
- }
- function D() {
- // A textual representation of a day, three letters
- return daysShort[self.getDay()];
- }
- function F() {
- // A full textual representation of a month
- return monthsLong[self.getMonth()];
- }
- function g() {
- // 12-hour format of an hour without leading zeros
- return self.getHours() > 12? self.getHours()-12 : self.getHours();
- }
- function G() {
- // 24-hour format of an hour without leading zeros
- return self.getHours();
- }
- function h() {
- // 12-hour format of an hour with leading zeros
- if (self.getHours() > 12) {
- var s = new String(self.getHours()-12);
- return s.length == 1?
- "0"+ (self.getHours()-12) : self.getHours()-12;
- } else {
- var s = new String(self.getHours());
- return s.length == 1?
- "0"+self.getHours() : self.getHours();
- }
- }
- function H() {
- // 24-hour format of an hour with leading zeros
- return new String(self.getHours()).length == 1?
- "0"+self.getHours() : self.getHours();
- }
- function i() {
- // Minutes with leading zeros
- return new String(self.getMinutes()).length == 1?
- "0"+self.getMinutes() : self.getMinutes();
- }
- function j() {
- // Day of the month without leading zeros
- return self.getDate();
- }
- function l() {
- // A full textual representation of the day of the week
- return daysLong[self.getDay()];
- }
- function L() {
- // leap year or not. 1 if leap year, 0 if not.
- // the logic should match iso's 8601 standard.
- var y_ = Y();
- if (
- (y_ % 4 == 0 && y_ % 100 != 0) ||
- (y_ % 4 == 0 && y_ % 100 == 0 && y_ % 400 == 0)
- ) {
- return 1;
- } else {
- return 0;
- }
- }
- function m() {
- // Numeric representation of a month, with leading zeros
- return self.getMonth() < 9?
- "0"+(self.getMonth()+1) :
- self.getMonth()+1;
- }
- function M() {
- // A short textual representation of a month, three letters
- return monthsShort[self.getMonth()];
- }
- function n() {
- // Numeric representation of a month, without leading zeros
- return self.getMonth()+1;
- }
- function O() {
- // Difference to Greenwich time (GMT) in hours
- var os = Math.abs(self.getTimezoneOffset());
- var h = ""+Math.floor(os/60);
- var m = ""+(os%60);
- h.length == 1? h = "0"+h:1;
- m.length == 1? m = "0"+m:1;
- return self.getTimezoneOffset() < 0 ? "+"+h+m : "-"+h+m;
- }
- function r() {
- // RFC 822 formatted date
- var r; // result
- // Thu , 21 Dec 2000
- r = D() + ", " + j() + " " + M() + " " + Y() +
- // 16 : 01 : 07 +0200
- " " + H() + ":" + i() + ":" + s() + " " + O();
- return r;
- }
- function S() {
- // English ordinal suffix for the day of the month, 2 characters
- return daysSuffix[self.getDate()-1];
- }
- function s() {
- // Seconds, with leading zeros
- return new String(self.getSeconds()).length == 1?
- "0"+self.getSeconds() : self.getSeconds();
- }
- function t() {
-
- // thanks to Matt Bannon for some much needed code-fixes here!
- var daysinmonths = [null,31,28,31,30,31,30,31,31,30,31,30,31];
- if (L()==1 && n()==2) return 29; // leap day
- return daysinmonths[n()];
- }
- function U() {
- // Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)
- return Math.round(self.getTime()/1000);
- }
- function W() {
- // Weeknumber, as per ISO specification:
- // http://www.cl.cam.ac.uk/~mgk25/iso-time.html
-
- // if the day is three days before newyears eve,
- // there's a chance it's "week 1" of next year.
- // here we check for that.
- var beforeNY = 364+L() - z();
- var afterNY = z();
- var weekday = w()!=0?w()-1:6; // makes sunday (0), into 6.
- if (beforeNY <= 2 && weekday <= 2-beforeNY) {
- return 1;
- }
- // similarly, if the day is within threedays of newyears
- // there's a chance it belongs in the old year.
- var ny = new Date("January 1 " + Y() + " 00:00:00");
- var nyDay = ny.getDay()!=0?ny.getDay()-1:6;
- if (
- (afterNY <= 2) &&
- (nyDay >=4) &&
- (afterNY >= (6-nyDay))
- ) {
- // Since I'm not sure we can just always return 53,
- // i call the function here again, using the last day
- // of the previous year, as the date, and then just
- // return that week.
- var prevNY = new Date("December 31 " + (Y()-1) + " 00:00:00");
- return prevNY.formatDate("W");
- }
-
- // week 1, is the week that has the first thursday in it.
- // note that this value is not zero index.
- if (nyDay <= 3) {
- // first day of the year fell on a thursday, or earlier.
- return 1 + Math.floor( ( z() + nyDay ) / 7 );
- } else {
- // first day of the year fell on a friday, or later.
- return 1 + Math.floor( ( z() - ( 7 - nyDay ) ) / 7 );
- }
- }
- function w() {
- // Numeric representation of the day of the week
- return self.getDay();
- }
-
- function Y() {
- // A full numeric representation of a year, 4 digits
-
- // we first check, if getFullYear is supported. if it
- // is, we just use that. ppks code is nice, but wont
- // work with dates outside 1900-2038, or something like that
- if (self.getFullYear) {
- var newDate = new Date("January 1 2001 00:00:00 +0000");
- var x = newDate .getFullYear();
- if (x == 2001) {
- // i trust the method now
- return self.getFullYear();
- }
- }
- // else, do this:
- // codes thanks to ppk:
- // http://www.xs4all.nl/~ppk/js/introdate.html
- var x = self.getYear();
- var y = x % 100;
- y += (y < 38) ? 2000 : 1900;
- return y;
- }
- function y() {
- // A two-digit representation of a year
- var y = Y()+"";
- return y.substring(y.length-2,y.length);
- }
- function z() {
- // The day of the year, zero indexed! 0 through 366
- var t = new Date("January 1 " + Y() + " 00:00:00");
- var diff = self.getTime() - t.getTime();
- return Math.floor(diff/1000/60/60/24);
- }
-
- var self = this;
- if (time) {
- // save time
- var prevTime = self.getTime();
- self.setTime(time);
- }
-
- var ia = input.split("");
- var ij = 0;
- while (ia[ij]) {
- if (ia[ij] == "\\") {
- // this is our way of allowing users to escape stuff
- ia.splice(ij,1);
- } else {
- if (arrayExists(switches,ia[ij])) {
- ia[ij] = eval(ia[ij] + "()");
- }
- }
- ij++;
- }
- // reset time, back to what it was
- if (prevTime) {
- self.setTime(prevTime);
- }
- return ia.join("");
-}
-
-var date = new Date("1/1/2007 1:11:11");
-
-for (i = 0; i < 500; ++i) {
- var shortFormat = date.formatDate("Y-m-d");
- var longFormat = date.formatDate("l, F d, Y g:i:s A");
- date.setTime(date.getTime() + 84266956);
-}
-
diff --git a/SunSpider/tests/date-format-xparb.js b/SunSpider/tests/date-format-xparb.js
deleted file mode 100644
index 1f09556..0000000
--- a/SunSpider/tests/date-format-xparb.js
+++ /dev/null
@@ -1,417 +0,0 @@
-/*
- * Copyright (C) 2004 Baron Schwartz <baron at sequent dot org>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published by the
- * Free Software Foundation, version 2.1.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- */
-
-Date.parseFunctions = {count:0};
-Date.parseRegexes = [];
-Date.formatFunctions = {count:0};
-
-Date.prototype.dateFormat = function(format) {
- if (Date.formatFunctions[format] == null) {
- Date.createNewFormat(format);
- }
- var func = Date.formatFunctions[format];
- return this[func]();
-}
-
-Date.createNewFormat = function(format) {
- var funcName = "format" + Date.formatFunctions.count++;
- Date.formatFunctions[format] = funcName;
- var code = "Date.prototype." + funcName + " = function(){return ";
- var special = false;
- var ch = '';
- for (var i = 0; i < format.length; ++i) {
- ch = format.charAt(i);
- if (!special && ch == "\\") {
- special = true;
- }
- else if (special) {
- special = false;
- code += "'" + String.escape(ch) + "' + ";
- }
- else {
- code += Date.getFormatCode(ch);
- }
- }
- eval(code.substring(0, code.length - 3) + ";}");
-}
-
-Date.getFormatCode = function(character) {
- switch (character) {
- case "d":
- return "String.leftPad(this.getDate(), 2, '0') + ";
- case "D":
- return "Date.dayNames[this.getDay()].substring(0, 3) + ";
- case "j":
- return "this.getDate() + ";
- case "l":
- return "Date.dayNames[this.getDay()] + ";
- case "S":
- return "this.getSuffix() + ";
- case "w":
- return "this.getDay() + ";
- case "z":
- return "this.getDayOfYear() + ";
- case "W":
- return "this.getWeekOfYear() + ";
- case "F":
- return "Date.monthNames[this.getMonth()] + ";
- case "m":
- return "String.leftPad(this.getMonth() + 1, 2, '0') + ";
- case "M":
- return "Date.monthNames[this.getMonth()].substring(0, 3) + ";
- case "n":
- return "(this.getMonth() + 1) + ";
- case "t":
- return "this.getDaysInMonth() + ";
- case "L":
- return "(this.isLeapYear() ? 1 : 0) + ";
- case "Y":
- return "this.getFullYear() + ";
- case "y":
- return "('' + this.getFullYear()).substring(2, 4) + ";
- case "a":
- return "(this.getHours() < 12 ? 'am' : 'pm') + ";
- case "A":
- return "(this.getHours() < 12 ? 'AM' : 'PM') + ";
- case "g":
- return "((this.getHours() %12) ? this.getHours() % 12 : 12) + ";
- case "G":
- return "this.getHours() + ";
- case "h":
- return "String.leftPad((this.getHours() %12) ? this.getHours() % 12 : 12, 2, '0') + ";
- case "H":
- return "String.leftPad(this.getHours(), 2, '0') + ";
- case "i":
- return "String.leftPad(this.getMinutes(), 2, '0') + ";
- case "s":
- return "String.leftPad(this.getSeconds(), 2, '0') + ";
- case "O":
- return "this.getGMTOffset() + ";
- case "T":
- return "this.getTimezone() + ";
- case "Z":
- return "(this.getTimezoneOffset() * -60) + ";
- default:
- return "'" + String.escape(character) + "' + ";
- }
-}
-
-Date.parseDate = function(input, format) {
- if (Date.parseFunctions[format] == null) {
- Date.createParser(format);
- }
- var func = Date.parseFunctions[format];
- return Date[func](input);
-}
-
-Date.createParser = function(format) {
- var funcName = "parse" + Date.parseFunctions.count++;
- var regexNum = Date.parseRegexes.length;
- var currentGroup = 1;
- Date.parseFunctions[format] = funcName;
-
- var code = "Date." + funcName + " = function(input){\n"
- + "var y = -1, m = -1, d = -1, h = -1, i = -1, s = -1;\n"
- + "var d = new Date();\n"
- + "y = d.getFullYear();\n"
- + "m = d.getMonth();\n"
- + "d = d.getDate();\n"
- + "var results = input.match(Date.parseRegexes[" + regexNum + "]);\n"
- + "if (results && results.length > 0) {"
- var regex = "";
-
- var special = false;
- var ch = '';
- for (var i = 0; i < format.length; ++i) {
- ch = format.charAt(i);
- if (!special && ch == "\\") {
- special = true;
- }
- else if (special) {
- special = false;
- regex += String.escape(ch);
- }
- else {
- obj = Date.formatCodeToRegex(ch, currentGroup);
- currentGroup += obj.g;
- regex += obj.s;
- if (obj.g && obj.c) {
- code += obj.c;
- }
- }
- }
-
- code += "if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n"
- + "{return new Date(y, m, d, h, i, s);}\n"
- + "else if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n"
- + "{return new Date(y, m, d, h, i);}\n"
- + "else if (y > 0 && m >= 0 && d > 0 && h >= 0)\n"
- + "{return new Date(y, m, d, h);}\n"
- + "else if (y > 0 && m >= 0 && d > 0)\n"
- + "{return new Date(y, m, d);}\n"
- + "else if (y > 0 && m >= 0)\n"
- + "{return new Date(y, m);}\n"
- + "else if (y > 0)\n"
- + "{return new Date(y);}\n"
- + "}return null;}";
-
- Date.parseRegexes[regexNum] = new RegExp("^" + regex + "$");
- eval(code);
-}
-
-Date.formatCodeToRegex = function(character, currentGroup) {
- switch (character) {
- case "D":
- return {g:0,
- c:null,
- s:"(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)"};
- case "j":
- case "d":
- return {g:1,
- c:"d = parseInt(results[" + currentGroup + "], 10);\n",
- s:"(\\d{1,2})"};
- case "l":
- return {g:0,
- c:null,
- s:"(?:" + Date.dayNames.join("|") + ")"};
- case "S":
- return {g:0,
- c:null,
- s:"(?:st|nd|rd|th)"};
- case "w":
- return {g:0,
- c:null,
- s:"\\d"};
- case "z":
- return {g:0,
- c:null,
- s:"(?:\\d{1,3})"};
- case "W":
- return {g:0,
- c:null,
- s:"(?:\\d{2})"};
- case "F":
- return {g:1,
- c:"m = parseInt(Date.monthNumbers[results[" + currentGroup + "].substring(0, 3)], 10);\n",
- s:"(" + Date.monthNames.join("|") + ")"};
- case "M":
- return {g:1,
- c:"m = parseInt(Date.monthNumbers[results[" + currentGroup + "]], 10);\n",
- s:"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)"};
- case "n":
- case "m":
- return {g:1,
- c:"m = parseInt(results[" + currentGroup + "], 10) - 1;\n",
- s:"(\\d{1,2})"};
- case "t":
- return {g:0,
- c:null,
- s:"\\d{1,2}"};
- case "L":
- return {g:0,
- c:null,
- s:"(?:1|0)"};
- case "Y":
- return {g:1,
- c:"y = parseInt(results[" + currentGroup + "], 10);\n",
- s:"(\\d{4})"};
- case "y":
- return {g:1,
- c:"var ty = parseInt(results[" + currentGroup + "], 10);\n"
- + "y = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",
- s:"(\\d{1,2})"};
- case "a":
- return {g:1,
- c:"if (results[" + currentGroup + "] == 'am') {\n"
- + "if (h == 12) { h = 0; }\n"
- + "} else { if (h < 12) { h += 12; }}",
- s:"(am|pm)"};
- case "A":
- return {g:1,
- c:"if (results[" + currentGroup + "] == 'AM') {\n"
- + "if (h == 12) { h = 0; }\n"
- + "} else { if (h < 12) { h += 12; }}",
- s:"(AM|PM)"};
- case "g":
- case "G":
- case "h":
- case "H":
- return {g:1,
- c:"h = parseInt(results[" + currentGroup + "], 10);\n",
- s:"(\\d{1,2})"};
- case "i":
- return {g:1,
- c:"i = parseInt(results[" + currentGroup + "], 10);\n",
- s:"(\\d{2})"};
- case "s":
- return {g:1,
- c:"s = parseInt(results[" + currentGroup + "], 10);\n",
- s:"(\\d{2})"};
- case "O":
- return {g:0,
- c:null,
- s:"[+-]\\d{4}"};
- case "T":
- return {g:0,
- c:null,
- s:"[A-Z]{3}"};
- case "Z":
- return {g:0,
- c:null,
- s:"[+-]\\d{1,5}"};
- default:
- return {g:0,
- c:null,
- s:String.escape(character)};
- }
-}
-
-Date.prototype.getTimezone = function() {
- return this.toString().replace(
- /^.*? ([A-Z]{3}) [0-9]{4}.*$/, "$1").replace(
- /^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/, "$1$2$3");
-}
-
-Date.prototype.getGMTOffset = function() {
- return (this.getTimezoneOffset() > 0 ? "-" : "+")
- + String.leftPad(Math.floor(this.getTimezoneOffset() / 60), 2, "0")
- + String.leftPad(this.getTimezoneOffset() % 60, 2, "0");
-}
-
-Date.prototype.getDayOfYear = function() {
- var num = 0;
- Date.daysInMonth[1] = this.isLeapYear() ? 29 : 28;
- for (var i = 0; i < this.getMonth(); ++i) {
- num += Date.daysInMonth[i];
- }
- return num + this.getDate() - 1;
-}
-
-Date.prototype.getWeekOfYear = function() {
- // Skip to Thursday of this week
- var now = this.getDayOfYear() + (4 - this.getDay());
- // Find the first Thursday of the year
- var jan1 = new Date(this.getFullYear(), 0, 1);
- var then = (7 - jan1.getDay() + 4);
- document.write(then);
- return String.leftPad(((now - then) / 7) + 1, 2, "0");
-}
-
-Date.prototype.isLeapYear = function() {
- var year = this.getFullYear();
- return ((year & 3) == 0 && (year % 100 || (year % 400 == 0 && year)));
-}
-
-Date.prototype.getFirstDayOfMonth = function() {
- var day = (this.getDay() - (this.getDate() - 1)) % 7;
- return (day < 0) ? (day + 7) : day;
-}
-
-Date.prototype.getLastDayOfMonth = function() {
- var day = (this.getDay() + (Date.daysInMonth[this.getMonth()] - this.getDate())) % 7;
- return (day < 0) ? (day + 7) : day;
-}
-
-Date.prototype.getDaysInMonth = function() {
- Date.daysInMonth[1] = this.isLeapYear() ? 29 : 28;
- return Date.daysInMonth[this.getMonth()];
-}
-
-Date.prototype.getSuffix = function() {
- switch (this.getDate()) {
- case 1:
- case 21:
- case 31:
- return "st";
- case 2:
- case 22:
- return "nd";
- case 3:
- case 23:
- return "rd";
- default:
- return "th";
- }
-}
-
-String.escape = function(string) {
- return string.replace(/('|\\)/g, "\\$1");
-}
-
-String.leftPad = function (val, size, ch) {
- var result = new String(val);
- if (ch == null) {
- ch = " ";
- }
- while (result.length < size) {
- result = ch + result;
- }
- return result;
-}
-
-Date.daysInMonth = [31,28,31,30,31,30,31,31,30,31,30,31];
-Date.monthNames =
- ["January",
- "February",
- "March",
- "April",
- "May",
- "June",
- "July",
- "August",
- "September",
- "October",
- "November",
- "December"];
-Date.dayNames =
- ["Sunday",
- "Monday",
- "Tuesday",
- "Wednesday",
- "Thursday",
- "Friday",
- "Saturday"];
-Date.y2kYear = 50;
-Date.monthNumbers = {
- Jan:0,
- Feb:1,
- Mar:2,
- Apr:3,
- May:4,
- Jun:5,
- Jul:6,
- Aug:7,
- Sep:8,
- Oct:9,
- Nov:10,
- Dec:11};
-Date.patterns = {
- ISO8601LongPattern:"Y-m-d H:i:s",
- ISO8601ShortPattern:"Y-m-d",
- ShortDatePattern: "n/j/Y",
- LongDatePattern: "l, F d, Y",
- FullDateTimePattern: "l, F d, Y g:i:s A",
- MonthDayPattern: "F d",
- ShortTimePattern: "g:i A",
- LongTimePattern: "g:i:s A",
- SortableDateTimePattern: "Y-m-d\\TH:i:s",
- UniversalSortableDateTimePattern: "Y-m-d H:i:sO",
- YearMonthPattern: "F, Y"};
-
-var date = new Date("1/1/2007 1:11:11");
-
-for (i = 0; i < 4000; ++i) {
- var shortFormat = date.dateFormat("Y-m-d");
- var longFormat = date.dateFormat("l, F d, Y g:i:s A");
- date.setTime(date.getTime() + 84266956);
-}
diff --git a/SunSpider/tests/math-cordic.js b/SunSpider/tests/math-cordic.js
deleted file mode 100644
index 4d3833b..0000000
--- a/SunSpider/tests/math-cordic.js
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (C) Rich Moore. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY CONTRIBUTORS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/////. Start CORDIC
-
-var AG_CONST = 0.6072529350;
-
-function FIXED(X)
-{
- return X * 65536.0;
-}
-
-function FLOAT(X)
-{
- return X / 65536.0;
-}
-
-function DEG2RAD(X)
-{
- return 0.017453 * (X);
-}
-
-var Angles = [
- FIXED(45.0), FIXED(26.565), FIXED(14.0362), FIXED(7.12502),
- FIXED(3.57633), FIXED(1.78991), FIXED(0.895174), FIXED(0.447614),
- FIXED(0.223811), FIXED(0.111906), FIXED(0.055953),
- FIXED(0.027977)
- ];
-
-
-function cordicsincos() {
- var X;
- var Y;
- var TargetAngle;
- var CurrAngle;
- var Step;
-
- X = FIXED(AG_CONST); /* AG_CONST * cos(0) */
- Y = 0; /* AG_CONST * sin(0) */
-
- TargetAngle = FIXED(28.027);
- CurrAngle = 0;
- for (Step = 0; Step < 12; Step++) {
- var NewX;
- if (TargetAngle > CurrAngle) {
- NewX = X - (Y >> Step);
- Y = (X >> Step) + Y;
- X = NewX;
- CurrAngle += Angles[Step];
- } else {
- NewX = X + (Y >> Step);
- Y = -(X >> Step) + Y;
- X = NewX;
- CurrAngle -= Angles[Step];
- }
- }
-}
-
-///// End CORDIC
-
-function cordic( runs ) {
- var start = new Date();
-
- for ( var i = 0 ; i < runs ; i++ ) {
- cordicsincos();
- }
-
- var end = new Date();
-
- return end.getTime() - start.getTime();
-}
-
-cordic(25000);
diff --git a/SunSpider/tests/math-partial-sums.js b/SunSpider/tests/math-partial-sums.js
deleted file mode 100644
index d082d79..0000000
--- a/SunSpider/tests/math-partial-sums.js
+++ /dev/null
@@ -1,33 +0,0 @@
-// The Computer Language Shootout
-// http://shootout.alioth.debian.org/
-// contributed by Isaac Gouy
-
-function partial(n){
- var a1 = a2 = a3 = a4 = a5 = a6 = a7 = a8 = a9 = 0.0;
- var twothirds = 2.0/3.0;
- var alt = -1.0;
- var k2 = k3 = sk = ck = 0.0;
-
- for (var k = 1; k <= n; k++){
- k2 = k*k;
- k3 = k2*k;
- sk = Math.sin(k);
- ck = Math.cos(k);
- alt = -alt;
-
- a1 += Math.pow(twothirds,k-1);
- a2 += Math.pow(k,-0.5);
- a3 += 1.0/(k*(k+1.0));
- a4 += 1.0/(k3 * sk*sk);
- a5 += 1.0/(k3 * ck*ck);
- a6 += 1.0/k;
- a7 += 1.0/k2;
- a8 += alt/k;
- a9 += alt/(2*k -1);
- }
-}
-
-for (var i = 1024; i <= 16384; i *= 2) {
- partial(i);
-}
-
diff --git a/SunSpider/tests/math-spectral-norm.js b/SunSpider/tests/math-spectral-norm.js
deleted file mode 100644
index 8139ef3..0000000
--- a/SunSpider/tests/math-spectral-norm.js
+++ /dev/null
@@ -1,51 +0,0 @@
-// The Great Computer Language Shootout
-// http://shootout.alioth.debian.org/
-//
-// contributed by Ian Osgood
-
-function A(i,j) {
- return 1/((i+j)*(i+j+1)/2+i+1);
-}
-
-function Au(u,v) {
- for (var i=0; i<u.length; ++i) {
- var t = 0;
- for (var j=0; j<u.length; ++j)
- t += A(i,j) * u[j];
- v[i] = t;
- }
-}
-
-function Atu(u,v) {
- for (var i=0; i<u.length; ++i) {
- var t = 0;
- for (var j=0; j<u.length; ++j)
- t += A(j,i) * u[j];
- v[i] = t;
- }
-}
-
-function AtAu(u,v,w) {
- Au(u,w);
- Atu(w,v);
-}
-
-function spectralnorm(n) {
- var i, u=[], v=[], w=[], vv=0, vBv=0;
- for (i=0; i<n; ++i) {
- u[i] = 1; v[i] = w[i] = 0;
- }
- for (i=0; i<10; ++i) {
- AtAu(u,v,w);
- AtAu(v,u,w);
- }
- for (i=0; i<n; ++i) {
- vBv += u[i]*v[i];
- vv += v[i]*v[i];
- }
- return Math.sqrt(vBv/vv);
-}
-
-for (var i = 6; i <= 48; i *= 2) {
- spectralnorm(i);
-}
diff --git a/SunSpider/tests/regexp-dna.js b/SunSpider/tests/regexp-dna.js
deleted file mode 100644
index b500e68..0000000
--- a/SunSpider/tests/regexp-dna.js
+++ /dev/null
@@ -1,1712 +0,0 @@
-// The Computer Language Shootout
-// http://shootout.alioth.debian.org/
-//
-// contributed by Jesse Millikan
-// Base on the Ruby version by jose fco. gonzalez
-
-var l;
-var dnaInput = ">ONE Homo sapiens alu\n\
-GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGA\n\
-TCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACT\n\
-AAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAG\n\
-GCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCG\n\
-CCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGT\n\
-GGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCA\n\
-GGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAA\n\
-TTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAG\n\
-AATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCA\n\
-GCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGT\n\
-AATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACC\n\
-AGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTG\n\
-GTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACC\n\
-CGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAG\n\
-AGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTT\n\
-TGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACA\n\
-TGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCT\n\
-GTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGG\n\
-TTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGT\n\
-CTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGG\n\
-CGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCG\n\
-TCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTA\n\
-CTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCG\n\
-AGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCG\n\
-GGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACC\n\
-TGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAA\n\
-TACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGA\n\
-GGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACT\n\
-GCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTC\n\
-ACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGT\n\
-TCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGC\n\
-CGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCG\n\
-CTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTG\n\
-GGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCC\n\
-CAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCT\n\
-GGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGC\n\
-GCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGA\n\
-GGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGA\n\
-GACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGA\n\
-GGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTG\n\
-AAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAAT\n\
-CCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCA\n\
-GTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAA\n\
-AAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGC\n\
-GGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCT\n\
-ACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGG\n\
-GAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATC\n\
-GCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGC\n\
-GGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGG\n\
-TCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAA\n\
-AAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAG\n\
-GAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACT\n\
-CCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCC\n\
-TGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAG\n\
-ACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGC\n\
-GTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGA\n\
-ACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGA\n\
-CAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCA\n\
-CTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCA\n\
-ACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCG\n\
-CCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGG\n\
-AGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTC\n\
-CGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCG\n\
-AGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACC\n\
-CCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAG\n\
-CTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAG\n\
-CCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGG\n\
-CCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATC\n\
-ACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAA\n\
-AAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGC\n\
-TGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCC\n\
-ACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGG\n\
-CTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGG\n\
-AGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATT\n\
-AGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAA\n\
-TCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGC\n\
-CTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAA\n\
-TCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAG\n\
-CCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGT\n\
-GGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCG\n\
-GGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAG\n\
-CGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTG\n\
-GGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATG\n\
-GTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGT\n\
-AATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTT\n\
-GCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCT\n\
-CAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCG\n\
-GGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTC\n\
-TCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACT\n\
-CGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAG\n\
-ATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGG\n\
-CGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTG\n\
-AGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATA\n\
-CAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGG\n\
-CAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGC\n\
-ACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCAC\n\
-GCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTC\n\
-GAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCG\n\
-GGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCT\n\
-TGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGG\n\
-CGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCA\n\
-GCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGG\n\
-CCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGC\n\
-GCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGG\n\
-CGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGA\n\
-CTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGG\n\
-CCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAA\n\
-ACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCC\n\
-CAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGT\n\
-GAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAA\n\
-AGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGG\n\
-ATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTAC\n\
-TAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGA\n\
-GGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGC\n\
-GCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGG\n\
-TGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTC\n\
-AGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAA\n\
-ATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGA\n\
-GAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC\n\
-AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTG\n\
-TAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGAC\n\
-CAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGT\n\
-GGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAAC\n\
-CCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACA\n\
-GAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACT\n\
-TTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAAC\n\
-ATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCC\n\
-TGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAG\n\
-GTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCG\n\
-TCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAG\n\
-GCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCC\n\
-GTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCT\n\
-ACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCC\n\
-GAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCC\n\
-GGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCAC\n\
-CTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAA\n\
-ATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTG\n\
-AGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCAC\n\
-TGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCT\n\
-CACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAG\n\
-TTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAG\n\
-CCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATC\n\
-GCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCT\n\
-GGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATC\n\
-CCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCC\n\
-TGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGG\n\
-CGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG\n\
-AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCG\n\
-AGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGG\n\
-AGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGT\n\
-GAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAA\n\
-TCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGC\n\
-AGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCA\n\
-AAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGG\n\
-CGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTC\n\
-TACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCG\n\
-GGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGAT\n\
-CGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCG\n\
-CGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAG\n\
-GTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACA\n\
-AAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCA\n\
-GGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCAC\n\
-TCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGC\n\
-CTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGA\n\
-GACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGG\n\
-CGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTG\n\
-AACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCG\n\
-ACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGC\n\
-ACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCC\n\
-AACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGC\n\
-GCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCG\n\
-GAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACT\n\
-CCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCC\n\
-GAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAAC\n\
-CCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA\n\
-GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGA\n\
-GCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAG\n\
-GCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGAT\n\
-CACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTA\n\
-AAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGG\n\
-CTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGC\n\
-CACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTG\n\
-GCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAG\n\
-GAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAAT\n\
-TAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGA\n\
-ATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAG\n\
-CCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTA\n\
-ATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCA\n\
-GCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGG\n\
-TGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCC\n\
-GGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGA\n\
-GCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTT\n\
-GGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACAT\n\
-GGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTG\n\
-TAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGT\n\
-TGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTC\n\
-TCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGC\n\
-GGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGT\n\
-CTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTAC\n\
-TCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGA\n\
-GATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGG\n\
-GCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCT\n\
-GAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAAT\n\
-ACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAG\n\
-GCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTG\n\
-CACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCA\n\
-CGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTT\n\
-CGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCC\n\
-GGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGC\n\
-TTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGG\n\
-GCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCC\n\
-AGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTG\n\
-GCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCG\n\
-CGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAG\n\
-GCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAG\n\
-ACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAG\n\
-GCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGA\n\
-AACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATC\n\
-CCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAG\n\
-TGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAA\n\
-AAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCG\n\
-GATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTA\n\
-CTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGG\n\
-AGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCG\n\
-CGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCG\n\
-GTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGT\n\
-CAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAA\n\
-AATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGG\n\
-AGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTC\n\
-CAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCT\n\
-GTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGA\n\
-CCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCG\n\
-TGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAA\n\
-CCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGAC\n\
-AGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCAC\n\
-TTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAA\n\
-CATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGC\n\
-CTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGA\n\
-GGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCC\n\
-GTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGA\n\
-GGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCC\n\
-CGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGC\n\
-TACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGC\n\
-CGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGC\n\
-CGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCA\n\
-CCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAA\n\
-AATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCT\n\
-GAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCA\n\
-CTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGC\n\
-TCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGA\n\
-GTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTA\n\
-GCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAAT\n\
-CGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCC\n\
-TGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAAT\n\
-CCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGC\n\
-CTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTG\n\
-GCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGG\n\
-GAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGC\n\
-GAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGG\n\
-GAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGG\n\
-TGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTA\n\
-ATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTG\n\
-CAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTC\n\
-AAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGG\n\
-GCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCT\n\
-CTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTC\n\
-GGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGA\n\
-TCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGC\n\
-GCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGA\n\
-GGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATAC\n\
-AAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGC\n\
-AGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCA\n\
-CTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACG\n\
-CCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCG\n\
-AGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGG\n\
-GCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTT\n\
-GAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGC\n\
-GACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAG\n\
-CACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGC\n\
-CAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCG\n\
-CGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGC\n\
-GGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGAC\n\
-TCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGC\n\
-CGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAA\n\
-CCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCC\n\
-AGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTG\n\
-AGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA\n\
-GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGA\n\
-TCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACT\n\
-AAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAG\n\
-GCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCG\n\
-CCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGT\n\
-GGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCA\n\
-GGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAA\n\
-TTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAG\n\
-AATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCA\n\
-GCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGT\n\
-AATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACC\n\
-AGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTG\n\
-GTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACC\n\
-CGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAG\n\
-AGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTT\n\
-TGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACA\n\
-TGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCT\n\
-GTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGG\n\
-TTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGT\n\
-CTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGG\n\
-CGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCG\n\
-TCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTA\n\
-CTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCG\n\
-AGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCG\n\
-GGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACC\n\
-TGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAA\n\
-TACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGA\n\
-GGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACT\n\
-GCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTC\n\
-ACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGT\n\
-TCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGC\n\
-CGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCG\n\
-CTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTG\n\
-GGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCC\n\
-CAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCT\n\
-GGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGC\n\
-GCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGA\n\
-GGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGA\n\
-GACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGA\n\
-GGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTG\n\
-AAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAAT\n\
-CCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCA\n\
-GTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAA\n\
-AAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGC\n\
-GGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCT\n\
-ACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGG\n\
-GAGGCTGAGGCAGGAGAATC\n\
->TWO IUB ambiguity codes\n\
-cttBtatcatatgctaKggNcataaaSatgtaaaDcDRtBggDtctttataattcBgtcg\n\
-tactDtDagcctatttSVHtHttKtgtHMaSattgWaHKHttttagacatWatgtRgaaa\n\
-NtactMcSMtYtcMgRtacttctWBacgaaatatagScDtttgaagacacatagtVgYgt\n\
-cattHWtMMWcStgttaggKtSgaYaaccWStcgBttgcgaMttBYatcWtgacaYcaga\n\
-gtaBDtRacttttcWatMttDBcatWtatcttactaBgaYtcttgttttttttYaaScYa\n\
-HgtgttNtSatcMtcVaaaStccRcctDaataataStcYtRDSaMtDttgttSagtRRca\n\
-tttHatSttMtWgtcgtatSSagactYaaattcaMtWatttaSgYttaRgKaRtccactt\n\
-tattRggaMcDaWaWagttttgacatgttctacaaaRaatataataaMttcgDacgaSSt\n\
-acaStYRctVaNMtMgtaggcKatcttttattaaaaagVWaHKYagtttttatttaacct\n\
-tacgtVtcVaattVMBcttaMtttaStgacttagattWWacVtgWYagWVRctDattBYt\n\
-gtttaagaagattattgacVatMaacattVctgtBSgaVtgWWggaKHaatKWcBScSWa\n\
-accRVacacaaactaccScattRatatKVtactatatttHttaagtttSKtRtacaaagt\n\
-RDttcaaaaWgcacatWaDgtDKacgaacaattacaRNWaatHtttStgttattaaMtgt\n\
-tgDcgtMgcatBtgcttcgcgaDWgagctgcgaggggVtaaScNatttacttaatgacag\n\
-cccccacatYScaMgtaggtYaNgttctgaMaacNaMRaacaaacaKctacatagYWctg\n\
-ttWaaataaaataRattagHacacaagcgKatacBttRttaagtatttccgatctHSaat\n\
-actcNttMaagtattMtgRtgaMgcataatHcMtaBSaRattagttgatHtMttaaKagg\n\
-YtaaBataSaVatactWtataVWgKgttaaaacagtgcgRatatacatVtHRtVYataSa\n\
-KtWaStVcNKHKttactatccctcatgWHatWaRcttactaggatctataDtDHBttata\n\
-aaaHgtacVtagaYttYaKcctattcttcttaataNDaaggaaaDYgcggctaaWSctBa\n\
-aNtgctggMBaKctaMVKagBaactaWaDaMaccYVtNtaHtVWtKgRtcaaNtYaNacg\n\
-gtttNattgVtttctgtBaWgtaattcaagtcaVWtactNggattctttaYtaaagccgc\n\
-tcttagHVggaYtgtNcDaVagctctctKgacgtatagYcctRYHDtgBattDaaDgccK\n\
-tcHaaStttMcctagtattgcRgWBaVatHaaaataYtgtttagMDMRtaataaggatMt\n\
-ttctWgtNtgtgaaaaMaatatRtttMtDgHHtgtcattttcWattRSHcVagaagtacg\n\
-ggtaKVattKYagactNaatgtttgKMMgYNtcccgSKttctaStatatNVataYHgtNa\n\
-BKRgNacaactgatttcctttaNcgatttctctataScaHtataRagtcRVttacDSDtt\n\
-aRtSatacHgtSKacYagttMHtWataggatgactNtatSaNctataVtttRNKtgRacc\n\
-tttYtatgttactttttcctttaaacatacaHactMacacggtWataMtBVacRaSaatc\n\
-cgtaBVttccagccBcttaRKtgtgcctttttRtgtcagcRttKtaaacKtaaatctcac\n\
-aattgcaNtSBaaccgggttattaaBcKatDagttactcttcattVtttHaaggctKKga\n\
-tacatcBggScagtVcacattttgaHaDSgHatRMaHWggtatatRgccDttcgtatcga\n\
-aacaHtaagttaRatgaVacttagattVKtaaYttaaatcaNatccRttRRaMScNaaaD\n\
-gttVHWgtcHaaHgacVaWtgttScactaagSgttatcttagggDtaccagWattWtRtg\n\
-ttHWHacgattBtgVcaYatcggttgagKcWtKKcaVtgaYgWctgYggVctgtHgaNcV\n\
-taBtWaaYatcDRaaRtSctgaHaYRttagatMatgcatttNattaDttaattgttctaa\n\
-ccctcccctagaWBtttHtBccttagaVaatMcBHagaVcWcagBVttcBtaYMccagat\n\
-gaaaaHctctaacgttagNWRtcggattNatcRaNHttcagtKttttgWatWttcSaNgg\n\
-gaWtactKKMaacatKatacNattgctWtatctaVgagctatgtRaHtYcWcttagccaa\n\
-tYttWttaWSSttaHcaaaaagVacVgtaVaRMgattaVcDactttcHHggHRtgNcctt\n\
-tYatcatKgctcctctatVcaaaaKaaaagtatatctgMtWtaaaacaStttMtcgactt\n\
-taSatcgDataaactaaacaagtaaVctaggaSccaatMVtaaSKNVattttgHccatca\n\
-cBVctgcaVatVttRtactgtVcaattHgtaaattaaattttYtatattaaRSgYtgBag\n\
-aHSBDgtagcacRHtYcBgtcacttacactaYcgctWtattgSHtSatcataaatataHt\n\
-cgtYaaMNgBaatttaRgaMaatatttBtttaaaHHKaatctgatWatYaacttMctctt\n\
-ttVctagctDaaagtaVaKaKRtaacBgtatccaaccactHHaagaagaaggaNaaatBW\n\
-attccgStaMSaMatBttgcatgRSacgttVVtaaDMtcSgVatWcaSatcttttVatag\n\
-ttactttacgatcaccNtaDVgSRcgVcgtgaacgaNtaNatatagtHtMgtHcMtagaa\n\
-attBgtataRaaaacaYKgtRccYtatgaagtaataKgtaaMttgaaRVatgcagaKStc\n\
-tHNaaatctBBtcttaYaBWHgtVtgacagcaRcataWctcaBcYacYgatDgtDHccta\n\
-aagacYRcaggattHaYgtKtaatgcVcaataMYacccatatcacgWDBtgaatcBaata\n\
-cKcttRaRtgatgaBDacggtaattaaYtataStgVHDtDctgactcaaatKtacaatgc\n\
-gYatBtRaDatHaactgtttatatDttttaaaKVccYcaaccNcBcgHaaVcattHctcg\n\
-attaaatBtatgcaaaaatYMctSactHatacgaWacattacMBgHttcgaatVaaaaca\n\
-BatatVtctgaaaaWtctRacgBMaatSgRgtgtcgactatcRtattaScctaStagKga\n\
-DcWgtYtDDWKRgRtHatRtggtcgaHgggcgtattaMgtcagccaBggWVcWctVaaat\n\
-tcgNaatcKWagcNaHtgaaaSaaagctcYctttRVtaaaatNtataaccKtaRgtttaM\n\
-tgtKaBtRtNaggaSattHatatWactcagtgtactaKctatttgRYYatKatgtccgtR\n\
-tttttatttaatatVgKtttgtatgtNtataRatWYNgtRtHggtaaKaYtKSDcatcKg\n\
-taaYatcSRctaVtSMWtVtRWHatttagataDtVggacagVcgKWagBgatBtaaagNc\n\
-aRtagcataBggactaacacRctKgttaatcctHgDgttKHHagttgttaatgHBtatHc\n\
-DaagtVaBaRccctVgtgDtacRHSctaagagcggWYaBtSaKtHBtaaactYacgNKBa\n\
-VYgtaacttagtVttcttaatgtBtatMtMtttaattaatBWccatRtttcatagVgMMt\n\
-agctStKctaMactacDNYgKYHgaWcgaHgagattacVgtttgtRaSttaWaVgataat\n\
-gtgtYtaStattattMtNgWtgttKaccaatagNYttattcgtatHcWtctaaaNVYKKt\n\
-tWtggcDtcgaagtNcagatacgcattaagaccWctgcagcttggNSgaNcHggatgtVt\n\
-catNtRaaBNcHVagagaaBtaaSggDaatWaatRccaVgggStctDaacataKttKatt\n\
-tggacYtattcSatcttagcaatgaVBMcttDattctYaaRgatgcattttNgVHtKcYR\n\
-aatRKctgtaaacRatVSagctgtWacBtKVatctgttttKcgtctaaDcaagtatcSat\n\
-aWVgcKKataWaYttcccSaatgaaaacccWgcRctWatNcWtBRttYaattataaNgac\n\
-acaatagtttVNtataNaYtaatRaVWKtBatKagtaatataDaNaaaaataMtaagaaS\n\
-tccBcaatNgaataWtHaNactgtcDtRcYaaVaaaaaDgtttRatctatgHtgttKtga\n\
-aNSgatactttcgagWaaatctKaaDaRttgtggKKagcDgataaattgSaacWaVtaNM\n\
-acKtcaDaaatttctRaaVcagNacaScRBatatctRatcctaNatWgRtcDcSaWSgtt\n\
-RtKaRtMtKaatgttBHcYaaBtgatSgaSWaScMgatNtctcctatttctYtatMatMt\n\
-RRtSaattaMtagaaaaStcgVgRttSVaScagtgDtttatcatcatacRcatatDctta\n\
-tcatVRtttataaHtattcYtcaaaatactttgVctagtaaYttagatagtSYacKaaac\n\
-gaaKtaaatagataatSatatgaaatSgKtaatVtttatcctgKHaatHattagaaccgt\n\
-YaaHactRcggSBNgtgctaaBagBttgtRttaaattYtVRaaaattgtaatVatttctc\n\
-ttcatgBcVgtgKgaHaaatattYatagWacNctgaaMcgaattStagWaSgtaaKagtt\n\
-ttaagaDgatKcctgtaHtcatggKttVDatcaaggtYcgccagNgtgcVttttagagat\n\
-gctaccacggggtNttttaSHaNtatNcctcatSaaVgtactgBHtagcaYggYVKNgta\n\
-KBcRttgaWatgaatVtagtcgattYgatgtaatttacDacSctgctaaaStttaWMagD\n\
-aaatcaVYctccgggcgaVtaaWtStaKMgDtttcaaMtVgBaatccagNaaatcYRMBg\n\
-gttWtaaScKttMWtYataRaDBMaDataatHBcacDaaKDactaMgagttDattaHatH\n\
-taYatDtattDcRNStgaatattSDttggtattaaNSYacttcDMgYgBatWtaMagact\n\
-VWttctttgYMaYaacRgHWaattgRtaagcattctMKVStatactacHVtatgatcBtV\n\
-NataaBttYtSttacKgggWgYDtgaVtYgatDaacattYgatggtRDaVDttNactaSa\n\
-MtgNttaacaaSaBStcDctaccacagacgcaHatMataWKYtaYattMcaMtgSttDag\n\
-cHacgatcaHttYaKHggagttccgatYcaatgatRaVRcaagatcagtatggScctata\n\
-ttaNtagcgacgtgKaaWaactSgagtMYtcttccaKtStaacggMtaagNttattatcg\n\
-tctaRcactctctDtaacWYtgaYaSaagaWtNtatttRacatgNaatgttattgWDDcN\n\
-aHcctgaaHacSgaataaRaataMHttatMtgaSDSKatatHHaNtacagtccaYatWtc\n\
-actaactatKDacSaStcggataHgYatagKtaatKagStaNgtatactatggRHacttg\n\
-tattatgtDVagDVaRctacMYattDgtttYgtctatggtKaRSttRccRtaaccttaga\n\
-gRatagSaaMaacgcaNtatgaaatcaRaagataatagatactcHaaYKBctccaagaRa\n\
-BaStNagataggcgaatgaMtagaatgtcaKttaaatgtaWcaBttaatRcggtgNcaca\n\
-aKtttScRtWtgcatagtttWYaagBttDKgcctttatMggNttattBtctagVtacata\n\
-aaYttacacaaRttcYtWttgHcaYYtaMgBaBatctNgcDtNttacgacDcgataaSat\n\
-YaSttWtcctatKaatgcagHaVaacgctgcatDtgttaSataaaaYSNttatagtaNYt\n\
-aDaaaNtggggacttaBggcHgcgtNtaaMcctggtVtaKcgNacNtatVaSWctWtgaW\n\
-cggNaBagctctgaYataMgaagatBSttctatacttgtgtKtaattttRagtDtacata\n\
-tatatgatNHVgBMtKtaKaNttDHaagatactHaccHtcatttaaagttVaMcNgHata\n\
-tKtaNtgYMccttatcaaNagctggacStttcNtggcaVtattactHaSttatgNMVatt\n\
-MMDtMactattattgWMSgtHBttStStgatatRaDaagattttctatMtaaaaaggtac\n\
-taaVttaSacNaatactgMttgacHaHRttgMacaaaatagttaatatWKRgacDgaRta\n\
-tatttattatcYttaWtgtBRtWatgHaaattHataagtVaDtWaVaWtgStcgtMSgaS\n\
-RgMKtaaataVacataatgtaSaatttagtcgaaHtaKaatgcacatcggRaggSKctDc\n\
-agtcSttcccStYtccRtctctYtcaaKcgagtaMttttcRaYDttgttatctaatcata\n\
-NctctgctatcaMatactataggDaHaaSttMtaDtcNatataattctMcStaaBYtaNa\n\
-gatgtaatHagagSttgWHVcttatKaYgDctcttggtgttMcRaVgSgggtagacaata\n\
-aDtaattSaDaNaHaBctattgNtaccaaRgaVtKNtaaYggHtaKKgHcatctWtctDt\n\
-ttctttggSDtNtaStagttataaacaattgcaBaBWggHgcaaaBtYgctaatgaaatW\n\
-cDcttHtcMtWWattBHatcatcaaatctKMagtDNatttWaBtHaaaNgMttaaStagt\n\
-tctctaatDtcRVaYttgttMtRtgtcaSaaYVgSWDRtaatagctcagDgcWWaaaBaa\n\
-RaBctgVgggNgDWStNaNBKcBctaaKtttDcttBaaggBttgaccatgaaaNgttttt\n\
-tttatctatgttataccaaDRaaSagtaVtDtcaWatBtacattaWacttaSgtattggD\n\
-gKaaatScaattacgWcagKHaaccaYcRcaRttaDttRtttHgaHVggcttBaRgtccc\n\
-tDatKaVtKtcRgYtaKttacgtatBtStaagcaattaagaRgBagSaattccSWYttta\n\
-ttVaataNctgHgttaaNBgcVYgtRtcccagWNaaaacaDNaBcaaaaRVtcWMgBagM\n\
-tttattacgDacttBtactatcattggaaatVccggttRttcatagttVYcatYaSHaHc\n\
-ttaaagcNWaHataaaRWtctVtRYtagHtaaaYMataHYtNBctNtKaatattStgaMc\n\
-BtRgctaKtgcScSttDgYatcVtggaaKtaagatWccHccgKYctaNNctacaWctttt\n\
-gcRtgtVcgaKttcMRHgctaHtVaataaDtatgKDcttatBtDttggNtacttttMtga\n\
-acRattaaNagaactcaaaBBVtcDtcgaStaDctgaaaSgttMaDtcgttcaccaaaag\n\
-gWtcKcgSMtcDtatgtttStaaBtatagDcatYatWtaaaBacaKgcaDatgRggaaYc\n\
-taRtccagattDaWtttggacBaVcHtHtaacDacYgtaatataMagaatgHMatcttat\n\
-acgtatttttatattacHactgttataMgStYaattYaccaattgagtcaaattaYtgta\n\
-tcatgMcaDcgggtcttDtKgcatgWRtataatatRacacNRBttcHtBgcRttgtgcgt\n\
-catacMtttBctatctBaatcattMttMYgattaaVYatgDaatVagtattDacaacDMa\n\
-tcMtHcccataagatgBggaccattVWtRtSacatgctcaaggggYtttDtaaNgNtaaB\n\
-atggaatgtctRtaBgBtcNYatatNRtagaacMgagSaSDDSaDcctRagtVWSHtVSR\n\
-ggaacaBVaccgtttaStagaacaMtactccagtttVctaaRaaHttNcttagcaattta\n\
-ttaatRtaaaatctaacDaBttggSagagctacHtaaRWgattcaaBtctRtSHaNtgta\n\
-cattVcaHaNaagtataccacaWtaRtaaVKgMYaWgttaKggKMtKcgWatcaDatYtK\n\
-SttgtacgaccNctSaattcDcatcttcaaaDKttacHtggttHggRRaRcaWacaMtBW\n\
-VHSHgaaMcKattgtaRWttScNattBBatYtaNRgcggaagacHSaattRtttcYgacc\n\
-BRccMacccKgatgaacttcgDgHcaaaaaRtatatDtatYVtttttHgSHaSaatagct\n\
-NYtaHYaVYttattNtttgaaaYtaKttWtctaNtgagaaaNctNDctaaHgttagDcRt\n\
-tatagccBaacgcaRBtRctRtggtaMYYttWtgataatcgaataattattataVaaaaa\n\
-ttacNRVYcaaMacNatRttcKatMctgaagactaattataaYgcKcaSYaatMNctcaa\n\
-cgtgatttttBacNtgatDccaattattKWWcattttatatatgatBcDtaaaagttgaa\n\
-VtaHtaHHtBtataRBgtgDtaataMttRtDgDcttattNtggtctatctaaBcatctaR\n\
-atgNacWtaatgaagtcMNaacNgHttatactaWgcNtaStaRgttaaHacccgaYStac\n\
-aaaatWggaYaWgaattattcMaactcBKaaaRVNcaNRDcYcgaBctKaacaaaaaSgc\n\
-tccYBBHYaVagaatagaaaacagYtctVccaMtcgtttVatcaatttDRtgWctagtac\n\
-RttMctgtDctttcKtWttttataaatgVttgBKtgtKWDaWagMtaaagaaattDVtag\n\
-gttacatcatttatgtcgMHaVcttaBtVRtcgtaYgBRHatttHgaBcKaYWaatcNSc\n\
-tagtaaaaatttacaatcactSWacgtaatgKttWattagttttNaggtctcaagtcact\n\
-attcttctaagKggaataMgtttcataagataaaaatagattatDgcBVHWgaBKttDgc\n\
-atRHaagcaYcRaattattatgtMatatattgHDtcaDtcaaaHctStattaatHaccga\n\
-cNattgatatattttgtgtDtRatagSacaMtcRtcattcccgacacSattgttKaWatt\n\
-NHcaacttccgtttSRtgtctgDcgctcaaMagVtBctBMcMcWtgtaacgactctcttR\n\
-ggRKSttgYtYatDccagttDgaKccacgVatWcataVaaagaataMgtgataaKYaaat\n\
-cHDaacgataYctRtcYatcgcaMgtNttaBttttgatttaRtStgcaacaaaataccVg\n\
-aaDgtVgDcStctatatttattaaaaRKDatagaaagaKaaYYcaYSgKStctccSttac\n\
-agtcNactttDVttagaaagMHttRaNcSaRaMgBttattggtttaRMggatggcKDgWR\n\
-tNaataataWKKacttcKWaaagNaBttaBatMHtccattaacttccccYtcBcYRtaga\n\
-ttaagctaaYBDttaNtgaaaccHcaRMtKtaaHMcNBttaNaNcVcgVttWNtDaBatg\n\
-ataaVtcWKcttRggWatcattgaRagHgaattNtatttctctattaattaatgaDaaMa\n\
-tacgttgggcHaYVaaNaDDttHtcaaHtcVVDgBVagcMacgtgttaaBRNtatRtcag\n\
-taagaggtttaagacaVaaggttaWatctccgtVtaDtcDatttccVatgtacNtttccg\n\
-tHttatKgScBatgtVgHtYcWagcaKtaMYaaHgtaattaSaHcgcagtWNaatNccNN\n\
-YcacgVaagaRacttctcattcccRtgtgtaattagcSttaaStWaMtctNNcSMacatt\n\
-ataaactaDgtatWgtagtttaagaaaattgtagtNagtcaataaatttgatMMYactaa\n\
-tatcggBWDtVcYttcDHtVttatacYaRgaMaacaStaatcRttttVtagaDtcacWat\n\
-ttWtgaaaagaaagNRacDtttStVatBaDNtaactatatcBSMcccaSttccggaMatg\n\
-attaaWatKMaBaBatttgataNctgttKtVaagtcagScgaaaDggaWgtgttttKtWt\n\
-atttHaatgtagttcactaaKMagttSYBtKtaYgaactcagagRtatagtVtatcaaaW\n\
-YagcgNtaDagtacNSaaYDgatBgtcgataacYDtaaactacagWDcYKaagtttatta\n\
-gcatcgagttKcatDaattgattatDtcagRtWSKtcgNtMaaaaacaMttKcaWcaaSV\n\
-MaaaccagMVtaMaDtMaHaBgaacataBBVtaatVYaNSWcSgNtDNaaKacacBttta\n\
-tKtgtttcaaHaMctcagtaacgtcgYtactDcgcctaNgagagcYgatattttaaattt\n\
-ccattttacatttDaaRctattttWctttacgtDatYtttcagacgcaaVttagtaaKaa\n\
-aRtgVtccataBggacttatttgtttaWNtgttVWtaWNVDaattgtatttBaagcBtaa\n\
-BttaaVatcHcaVgacattccNggtcgacKttaaaRtagRtctWagaYggtgMtataatM\n\
-tgaaRttattttgWcttNtDRRgMDKacagaaaaggaaaRStcccagtYccVattaNaaK\n\
-StNWtgacaVtagaagcttSaaDtcacaacgDYacWDYtgtttKatcVtgcMaDaSKStV\n\
-cgtagaaWaKaagtttcHaHgMgMtctataagBtKaaaKKcactggagRRttaagaBaaN\n\
-atVVcgRcKSttDaactagtSttSattgttgaaRYatggttVttaataaHttccaagDtg\n\
-atNWtaagHtgcYtaactRgcaatgMgtgtRaatRaNaacHKtagactactggaatttcg\n\
-ccataacgMctRgatgttaccctaHgtgWaYcactcacYaattcttaBtgacttaaacct\n\
-gYgaWatgBttcttVttcgttWttMcNYgtaaaatctYgMgaaattacNgaHgaacDVVM\n\
-tttggtHtctaaRgtacagacgHtVtaBMNBgattagcttaRcttacaHcRctgttcaaD\n\
-BggttKaacatgKtttYataVaNattccgMcgcgtagtRaVVaattaKaatggttRgaMc\n\
-agtatcWBttNtHagctaatctagaaNaaacaYBctatcgcVctBtgcaaagDgttVtga\n\
-HtactSNYtaaNccatgtgDacgaVtDcgKaRtacDcttgctaagggcagMDagggtBWR\n\
-tttSgccttttttaacgtcHctaVtVDtagatcaNMaVtcVacatHctDWNaataRgcgt\n\
-aVHaggtaaaaSgtttMtattDgBtctgatSgtRagagYtctSaKWaataMgattRKtaa\n\
-catttYcgtaacacattRWtBtcggtaaatMtaaacBatttctKagtcDtttgcBtKYYB\n\
-aKttctVttgttaDtgattttcttccacttgSaaacggaaaNDaattcYNNaWcgaaYat\n\
-tttMgcBtcatRtgtaaagatgaWtgaccaYBHgaatagataVVtHtttVgYBtMctaMt\n\
-cctgaDcYttgtccaaaRNtacagcMctKaaaggatttacatgtttaaWSaYaKttBtag\n\
-DacactagctMtttNaKtctttcNcSattNacttggaacaatDagtattRtgSHaataat\n\
-gccVgacccgatactatccctgtRctttgagaSgatcatatcgDcagWaaHSgctYYWta\n\
-tHttggttctttatVattatcgactaagtgtagcatVgtgHMtttgtttcgttaKattcM\n\
-atttgtttWcaaStNatgtHcaaaDtaagBaKBtRgaBgDtSagtatMtaacYaatYtVc\n\
-KatgtgcaacVaaaatactKcRgtaYtgtNgBBNcKtcttaccttKgaRaYcaNKtactt\n\
-tgagSBtgtRagaNgcaaaNcacagtVtttHWatgttaNatBgtttaatNgVtctgaata\n\
-tcaRtattcttttttttRaaKcRStctcggDgKagattaMaaaKtcaHacttaataataK\n\
-taRgDtKVBttttcgtKaggHHcatgttagHggttNctcgtatKKagVagRaaaggaaBt\n\
-NatttVKcRttaHctaHtcaaatgtaggHccaBataNaNaggttgcWaatctgatYcaaa\n\
-HaatWtaVgaaBttagtaagaKKtaaaKtRHatMaDBtBctagcatWtatttgWttVaaa\n\
-ScMNattRactttgtYtttaaaagtaagtMtaMaSttMBtatgaBtttaKtgaatgagYg\n\
-tNNacMtcNRacMMHcttWtgtRtctttaacaacattattcYaMagBaacYttMatcttK\n\
-cRMtgMNccattaRttNatHaHNaSaaHMacacaVaatacaKaSttHatattMtVatWga\n\
-ttttttaYctttKttHgScWaacgHtttcaVaaMgaacagNatcgttaacaaaaagtaca\n\
-HBNaattgttKtcttVttaaBtctgctacgBgcWtttcaggacacatMgacatcccagcg\n\
-gMgaVKaBattgacttaatgacacacaaaaaatRKaaBctacgtRaDcgtagcVBaacDS\n\
-BHaaaaSacatatacagacRNatcttNaaVtaaaataHattagtaaaaSWccgtatWatg\n\
-gDttaactattgcccatcttHaSgYataBttBaactattBtcHtgatcaataSttaBtat\n\
-KSHYttWggtcYtttBttaataccRgVatStaHaKagaatNtagRMNgtcttYaaSaact\n\
-cagDSgagaaYtMttDtMRVgWKWtgMaKtKaDttttgactatacataatcNtatNaHat\n\
-tVagacgYgatatatttttgtStWaaatctWaMgagaRttRatacgStgattcttaagaD\n\
-taWccaaatRcagcagaaNKagtaaDggcgccBtYtagSBMtactaaataMataBSacRM\n\
-gDgattMMgtcHtcaYDtRaDaacggttDaggcMtttatgttaNctaattaVacgaaMMt\n\
-aatDccSgtattgaRtWWaccaccgagtactMcgVNgctDctaMScatagcgtcaactat\n\
-acRacgHRttgctatttaatgaattataYKttgtaagWgtYttgcHgMtaMattWaWVta\n\
-RgcttgYgttBHtYataSccStBtgtagMgtDtggcVaaSBaatagDttgBgtctttctc\n\
-attttaNagtHKtaMWcYactVcgcgtatMVtttRacVagDaatcttgctBBcRDgcaac\n\
-KttgatSKtYtagBMagaRtcgBattHcBWcaactgatttaatttWDccatttatcgagS\n\
-KaWttataHactaHMttaatHtggaHtHagaatgtKtaaRactgtttMatacgatcaagD\n\
-gatKaDctataMggtHDtggHacctttRtatcttYattttgacttgaaSaataaatYcgB\n\
-aaaaccgNatVBttMacHaKaataagtatKgtcaagactcttaHttcggaattgttDtct\n\
-aaccHttttWaaatgaaatataaaWattccYDtKtaaaacggtgaggWVtctattagtga\n\
-ctattaagtMgtttaagcatttgSgaaatatccHaaggMaaaattttcWtatKctagDtY\n\
-tMcctagagHcactttactatacaaacattaacttaHatcVMYattYgVgtMttaaRtga\n\
-aataaDatcaHgtHHatKcDYaatcttMtNcgatYatgSaMaNtcttKcWataScKggta\n\
-tcttacgcttWaaagNatgMgHtctttNtaacVtgttcMaaRatccggggactcMtttaY\n\
-MtcWRgNctgNccKatcttgYDcMgattNYaRagatHaaHgKctcataRDttacatBatc\n\
-cattgDWttatttaWgtcggagaaaaatacaatacSNtgggtttccttacSMaagBatta\n\
-caMaNcactMttatgaRBacYcYtcaaaWtagctSaacttWgDMHgaggatgBVgcHaDt\n\
-ggaactttggtcNatNgtaKaBcccaNtaagttBaacagtatacDYttcctNgWgcgSMc\n\
-acatStctHatgRcNcgtacacaatRttMggaNKKggataaaSaYcMVcMgtaMaHtgat\n\
-tYMatYcggtcttcctHtcDccgtgRatcattgcgccgatatMaaYaataaYSggatagc\n\
-gcBtNtaaaScaKgttBgagVagttaKagagtatVaactaSacWactSaKatWccaKaaa\n\
-atBKgaaKtDMattttgtaaatcRctMatcaaMagMttDgVatggMaaWgttcgaWatga\n\
-aatttgRtYtattaWHKcRgctacatKttctaccaaHttRatctaYattaaWatVNccat\n\
-NgagtcKttKataStRaatatattcctRWatDctVagttYDgSBaatYgttttgtVaatt\n\
-taatagcagMatRaacttBctattgtMagagattaaactaMatVtHtaaatctRgaaaaa\n\
-aaatttWacaacaYccYDSaattMatgaccKtaBKWBattgtcaagcHKaagttMMtaat\n\
-ttcKcMagNaaKagattggMagaggtaatttYacatcWaaDgatMgKHacMacgcVaaca\n\
-DtaDatatYggttBcgtatgWgaSatttgtagaHYRVacaRtctHaaRtatgaactaata\n\
-tctSSBgggaaHMWtcaagatKgagtDaSatagttgattVRatNtctMtcSaagaSHaat\n\
-aNataataRaaRgattctttaataaagWaRHcYgcatgtWRcttgaaggaMcaataBRaa\n\
-ccagStaaacNtttcaatataYtaatatgHaDgcStcWttaacctaRgtYaRtataKtgM\n\
-ttttatgactaaaatttacYatcccRWtttHRtattaaatgtttatatttgttYaatMca\n\
-RcSVaaDatcgtaYMcatgtagacatgaaattgRtcaaYaaYtRBatKacttataccaNa\n\
-aattVaBtctggacaagKaaYaaatatWtMtatcYaaVNtcgHaactBaagKcHgtctac\n\
-aatWtaDtSgtaHcataHtactgataNctRgttMtDcDttatHtcgtacatcccaggStt\n\
-aBgtcacacWtccNMcNatMVaVgtccDYStatMaccDatggYaRKaaagataRatttHK\n\
-tSaaatDgataaacttaHgttgVBtcttVttHgDacgaKatgtatatNYataactctSat\n\
-atatattgcHRRYttStggaactHgttttYtttaWtatMcttttctatctDtagVHYgMR\n\
-BgtHttcctaatYRttKtaagatggaVRataKDctaMtKBNtMtHNtWtttYcVtattMc\n\
-gRaacMcctNSctcatttaaagDcaHtYccSgatgcaatYaaaaDcttcgtaWtaattct\n\
-cgttttScttggtaatctttYgtctaactKataHacctMctcttacHtKataacacagcN\n\
-RatgKatttttSaaatRYcgDttaMRcgaaattactMtgcgtaagcgttatBtttttaat\n\
-taagtNacatHgttcRgacKcBBtVgatKttcgaBaatactDRgtRtgaNacWtcacYtt\n\
-aaKcgttctHaKttaNaMgWgWaggtctRgaKgWttSttBtDcNtgtttacaaatYcDRt\n\
-gVtgcctattcNtctaaaDMNttttNtggctgagaVctDaacVtWccaagtaacacaNct\n\
-gaScattccDHcVBatcgatgtMtaatBgHaatDctMYgagaatgYWKcctaatNaStHa\n\
-aaKccgHgcgtYaaYtattgtStgtgcaaRtattaKatattagaWVtcaMtBagttatta\n\
-gNaWHcVgcaattttDcMtgtaRHVYtHtctgtaaaaHVtMKacatcgNaatttMatatg\n\
-ttgttactagWYtaRacgataKagYNKcattataNaRtgaacKaYgcaaYYacaNccHat\n\
-MatDcNgtHttRaWttagaaDcaaaaaatagggtKDtStaDaRtaVtHWKNtgtattVct\n\
-SVgRgataDaRaWataBgaagaaKtaataaYgDcaStaNgtaDaaggtattHaRaWMYaY\n\
-aWtggttHYgagVtgtgcttttcaaDKcagVcgttagacNaaWtagtaataDttctggtt\n\
-VcatcataaagtgKaaaNaMtaBBaattaatWaattgctHaVKaSgDaaVKaHtatatat\n\
-HatcatSBagNgHtatcHYMHgttDgtaHtBttWatcgtttaRaattgStKgSKNWKatc\n\
-agDtctcagatttctRtYtBatBgHHtKaWtgYBgacVVWaKtacKcDttKMaKaVcggt\n\
-gttataagaataaHaatattagtataatMHgttYgaRttagtaRtcaaVatacggtcMcg\n\
-agtaaRttacWgactKRYataaaagSattYaWgagatYagKagatgSaagKgttaatMgg\n\
-tataatgttWYttatgagaaacctNVataatHcccKtDctcctaatactggctHggaSag\n\
-gRtKHaWaattcgSatMatttagaggcYtctaMcgctcataSatatgRagacNaaDagga\n\
-VBagaYttKtacNaKgtSYtagttggaWcatcWttaatctatgaVtcgtgtMtatcaYcg\n\
-tRccaaYgDctgcMgtgtWgacWtgataacacgcgctBtgttaKtYDtatDcatcagKaV\n\
-MctaatcttgVcaaRgcRMtDcgattaHttcaNatgaatMtactacVgtRgatggaWttt\n\
-actaaKatgagSaaKggtaNtactVaYtaaKRagaacccacaMtaaMtKtatBcttgtaa\n\
-WBtMctaataaVcDaaYtcRHBtcgttNtaaHatttBNgRStVDattBatVtaagttaYa\n\
-tVattaagaBcacggtSgtVtatttaRattgatgtaHDKgcaatattKtggcctatgaWD\n\
-KRYcggattgRctatNgatacaatMNttctgtcRBYRaaaHctNYattcHtaWcaattct\n\
-BtMKtVgYataatMgYtcagcttMDataVtggRtKtgaatgccNcRttcaMtRgattaac\n\
-attRcagcctHtWMtgtDRagaKaBtgDttYaaaaKatKgatctVaaYaacWcgcatagB\n\
-VtaNtRtYRaggBaaBtgKgttacataagagcatgtRattccacttaccatRaaatgWgD\n\
-aMHaYVgVtaSctatcgKaatatattaDgacccYagtgtaYNaaatKcagtBRgagtcca\n\
-tgKgaaaccBgaagBtgSttWtacgatWHaYatcgatttRaaNRgcaNaKVacaNtDgat\n\
-tgHVaatcDaagcgtatgcNttaDataatcSataaKcaataaHWataBtttatBtcaKtK\n\
-tatagttaDgSaYctacaRatNtaWctSaatatttYaKaKtaccWtatcRagacttaYtt\n\
-VcKgSDcgagaagatccHtaattctSttatggtKYgtMaHagVaBRatttctgtRgtcta\n\
-tgggtaHKgtHacHtSYacgtacacHatacKaaBaVaccaDtatcSaataaHaagagaat\n\
-ScagactataaRttagcaaVcaHataKgDacatWccccaagcaBgagWatctaYttgaaa\n\
-tctVNcYtttWagHcgcgcDcVaaatgttKcHtNtcaatagtgtNRaactttttcaatgg\n\
-WgBcgDtgVgtttctacMtaaataaaRggaaacWaHttaRtNtgctaaRRtVBctYtVta\n\
-tDcattDtgaccYatagatYRKatNYKttNgcctagtaWtgaactaMVaacctgaStttc\n\
-tgaKVtaaVaRKDttVtVctaDNtataaaDtccccaagtWtcgatcactDgYaBcatcct\n\
-MtVtacDaaBtYtMaKNatNtcaNacgDatYcatcgcaRatWBgaacWttKttagYtaat\n\
-tcggttgSWttttDWctttacYtatatWtcatDtMgtBttgRtVDggttaacYtacgtac\n\
-atgaattgaaWcttMStaDgtatattgaDtcRBcattSgaaVBRgagccaaKtttcDgcg\n\
-aSMtatgWattaKttWtgDBMaggBBttBaatWttRtgcNtHcgttttHtKtcWtagHSt\n\
-aacagttgatatBtaWSaWggtaataaMttaKacDaatactcBttcaatatHttcBaaSa\n\
-aatYggtaRtatNtHcaatcaHtagVtgtattataNggaMtcttHtNagctaaaggtaga\n\
-YctMattNaMVNtcKtactBKcaHHcBttaSagaKacataYgctaKaYgttYcgacWVtt\n\
-WtSagcaacatcccHaccKtcttaacgaKttcacKtNtacHtatatRtaaatacactaBt\n\
-ttgaHaRttggttWtatYagcatYDatcggagagcWBataagRtacctataRKgtBgatg\n\
-aDatataSttagBaHtaatNtaDWcWtgtaattacagKttcNtMagtattaNgtctcgtc\n\
-ctcttBaHaKcKccgtRcaaYagSattaagtKataDatatatagtcDtaacaWHcaKttD\n\
-gaaRcgtgYttgtcatatNtatttttatggccHtgDtYHtWgttatYaacaattcaWtat\n\
-NgctcaaaSttRgctaatcaaatNatcgtttaBtNNVtgttataagcaaagattBacgtD\n\
-atttNatttaaaDcBgtaSKgacgtagataatttcHMVNttgttBtDtgtaWKaaRMcKM\n\
-tHtaVtagataWctccNNaSWtVaHatctcMgggDgtNHtDaDttatatVWttgttattt\n\
-aacctttcacaaggaSaDcggttttttatatVtctgVtaacaStDVaKactaMtttaSNa\n\
-gtgaaattaNacttSKctattcctctaSagKcaVttaagNaVcttaVaaRNaHaaHttat\n\
-gtHttgtgatMccaggtaDcgaccgtWgtWMtttaHcRtattgScctatttKtaaccaag\n\
-tYagaHgtWcHaatgccKNRtttagtMYSgaDatctgtgaWDtccMNcgHgcaaacNDaa\n\
-aRaStDWtcaaaaHKtaNBctagBtgtattaactaattttVctagaatggcWSatMaccc\n\
-ttHttaSgSgtgMRcatRVKtatctgaaaccDNatYgaaVHNgatMgHRtacttaaaRta\n\
-tStRtDtatDttYatattHggaBcttHgcgattgaKcKtttcRataMtcgaVttWacatN\n\
-catacctRataDDatVaWNcggttgaHtgtMacVtttaBHtgagVttMaataattatgtt\n\
-cttagtttgtgcDtSatttgBtcaacHattaaBagVWcgcaSYttMgcttacYKtVtatc\n\
-aYaKctgBatgcgggcYcaaaaacgNtctagKBtattatctttKtaVttatagtaYtRag\n\
-NtaYataaVtgaatatcHgcaaRataHtacacatgtaNtgtcgYatWMatttgaactacR\n\
-ctaWtWtatacaatctBatatgYtaagtatgtgtatSttactVatcttYtaBcKgRaSgg\n\
-RaaaaatgcagtaaaWgtaRgcgataatcBaataccgtatttttccatcNHtatWYgatH\n\
-SaaaDHttgctgtccHtggggcctaataatttttctatattYWtcattBtgBRcVttaVM\n\
-RSgctaatMagtYtttaaaaatBRtcBttcaaVtaacagctccSaaSttKNtHtKYcagc\n\
-agaaaccccRtttttaaDcDtaStatccaagcgctHtatcttaDRYgatDHtWcaaaBcW\n\
-gKWHttHataagHacgMNKttMKHccaYcatMVaacgttaKgYcaVaaBtacgcaacttt\n\
-MctaaHaatgtBatgagaSatgtatgSRgHgWaVWgataaatatttccKagVgataattW\n\
-aHNcYggaaatgctHtKtaDtctaaagtMaatVDVactWtSaaWaaMtaHtaSKtcBRaN\n\
-cttStggtBttacNagcatagRgtKtgcgaacaacBcgKaatgataagatgaaaattgta\n\
-ctgcgggtccHHWHaaNacaBttNKtKtcaaBatatgctaHNgtKcDWgtttatNgVDHg\n\
-accaacWctKaaggHttgaRgYaatHcaBacaatgagcaaattactgtaVaaYaDtagat\n\
-tgagNKggtggtgKtWKaatacagDRtatRaMRtgattDggtcaaYRtatttNtagaDtc\n\
-acaaSDctDtataatcgtactaHttatacaatYaacaaHttHatHtgcgatRRttNgcat\n\
-SVtacWWgaaggagtatVMaVaaattScDDKNcaYBYaDatHgtctatBagcaacaagaa\n\
-tgagaaRcataaKNaRtBDatcaaacgcattttttaaBtcSgtacaRggatgtMNaattg\n\
-gatatWtgagtattaaaVctgcaYMtatgatttttYgaHtgtcttaagWBttHttgtctt\n\
-attDtcgtatWtataataSgctaHagcDVcNtaatcaagtaBDaWaDgtttagYctaNcc\n\
-DtaKtaHcttaataacccaRKtacaVaatNgcWRaMgaattatgaBaaagattVYaHMDc\n\
-aDHtcRcgYtcttaaaWaaaVKgatacRtttRRKYgaatacaWVacVcRtatMacaBtac\n\
-tggMataaattttHggNagSctacHgtBagcgtcgtgattNtttgatSaaggMttctttc\n\
-ttNtYNagBtaaacaaatttMgaccttacataattgYtcgacBtVMctgStgMDtagtaR\n\
-ctHtatgttcatatVRNWataDKatWcgaaaaagttaaaagcacgHNacgtaatctttMR\n\
-tgacttttDacctataaacgaaatatgattagaactccSYtaBctttaataacWgaaaYa\n\
-tagatgWttcatKtNgatttttcaagHtaYgaaRaDaagtaggagcttatVtagtctttc\n\
-attaaaatcgKtattaRttacagVaDatgcatVgattgggtctttHVtagKaaRBtaHta\n\
-aggccccaaaaKatggtttaMWgtBtaaacttcactttKHtcgatctccctaYaBacMgt\n\
-cttBaBaNgcgaaacaatctagtHccHtKttcRtRVttccVctttcatacYagMVtMcag\n\
-aMaaacaataBctgYtaatRaaagattaaccatVRatHtaRagcgcaBcgDttStttttc\n\
-VtttaDtKgcaaWaaaaatSccMcVatgtKgtaKgcgatatgtagtSaaaDttatacaaa\n\
-catYaRRcVRHctKtcgacKttaaVctaDaatgttMggRcWaacttttHaDaKaDaBctg\n\
-taggcgtttaHBccatccattcNHtDaYtaataMttacggctNVaacDattgatatttta\n\
-cVttSaattacaaRtataNDgacVtgaacataVRttttaDtcaaacataYDBtttaatBa\n\
-DtttYDaDaMccMttNBttatatgagaaMgaNtattHccNataattcaHagtgaaggDga\n\
-tgtatatatgYatgaStcataaBStWacgtcccataRMaaDattggttaaattcMKtctM\n\
-acaBSactcggaatDDgatDgcWctaacaccgggaVcacWKVacggtaNatatacctMta\n\
-tgatagtgcaKagggVaDtgtaacttggagtcKatatcgMcttRaMagcattaBRaStct\n\
-YSggaHYtacaactMBaagDcaBDRaaacMYacaHaattagcattaaaHgcgctaaggSc\n\
-cKtgaaKtNaBtatDDcKBSaVtgatVYaagVtctSgMctacgttaacWaaattctSgtD\n\
-actaaStaaattgcagBBRVctaatatacctNttMcRggctttMttagacRaHcaBaacV\n\
-KgaataHttttMgYgattcYaNRgttMgcVaaacaVVcDHaatttgKtMYgtatBtVVct\n\
-WgVtatHtacaaHttcacgatagcagtaaNattBatatatttcVgaDagcggttMaagtc\n\
-ScHagaaatgcYNggcgtttttMtStggtRatctacttaaatVVtBacttHNttttaRca\n\
-aatcacagHgagagtMgatcSWaNRacagDtatactaaDKaSRtgattctccatSaaRtt\n\
-aaYctacacNtaRtaactggatgaccYtacactttaattaattgattYgttcagDtNKtt\n\
-agDttaaaaaaaBtttaaNaYWKMBaaaacVcBMtatWtgBatatgaacVtattMtYatM\n\
-NYDKNcKgDttDaVtaaaatgggatttctgtaaatWtctcWgtVVagtcgRgacttcccc\n\
-taDcacagcRcagagtgtWSatgtacatgttaaSttgtaaHcgatgggMagtgaacttat\n\
-RtttaVcaccaWaMgtactaatSSaHtcMgaaYtatcgaaggYgggcgtgaNDtgttMNg\n\
-aNDMtaattcgVttttaacatgVatgtWVMatatcaKgaaattcaBcctccWcttgaaWH\n\
-tWgHtcgNWgaRgctcBgSgaattgcaaHtgattgtgNagtDttHHgBttaaWcaaWagc\n\
-aSaHHtaaaVctRaaMagtaDaatHtDMtcVaWMtagSagcttHSattaacaaagtRacM\n\
-tRtctgttagcMtcaBatVKtKtKacgagaSNatSactgtatatcBctgagVtYactgta\n\
-aattaaaggcYgDHgtaacatSRDatMMccHatKgttaacgactKtgKagtcttcaaHRV\n\
-tccttKgtSataatttacaactggatDNgaacttcaRtVaagDcaWatcBctctHYatHa\n\
-DaaatttagYatSatccaWtttagaaatVaacBatHcatcgtacaatatcgcNYRcaata\n\
-YaRaYtgattVttgaatgaVaactcRcaNStgtgtattMtgaggtNttBaDRcgaaaagc\n\
-tNgBcWaWgtSaDcVtgVaatMKBtttcgtttctaaHctaaagYactgMtatBDtcStga\n\
-ccgtSDattYaataHctgggaYYttcggttaWaatctggtRagWMaDagtaacBccacta\n\
-cgHWMKaatgatWatcctgHcaBaSctVtcMtgtDttacctaVgatYcWaDRaaaaRtag\n\
-atcgaMagtggaRaWctctgMgcWttaagKBRtaaDaaWtctgtaagYMttactaHtaat\n\
-cttcataacggcacBtSgcgttNHtgtHccatgttttaaagtatcgaKtMttVcataYBB\n\
-aKtaMVaVgtattNDSataHcagtWMtaggtaSaaKgttgBtVtttgttatcatKcgHac\n\
-acRtctHatNVagSBgatgHtgaRaSgttRcctaacaaattDNttgacctaaYtBgaaaa\n\
-tagttattactcttttgatgtNNtVtgtatMgtcttRttcatttgatgacacttcHSaaa\n\
-ccaWWDtWagtaRDDVNacVaRatgttBccttaatHtgtaaacStcVNtcacaSRttcYa\n\
-gacagaMMttttgMcNttBcgWBtactgVtaRttctccaaYHBtaaagaBattaYacgat\n\
-ttacatctgtaaMKaRYtttttactaaVatWgctBtttDVttctggcDaHaggDaagtcg\n\
-aWcaagtagtWttHtgKtVataStccaMcWcaagataagatcactctHatgtcYgaKcat\n\
-cagatactaagNSStHcctRRNtattgtccttagttagMVgtatagactaactctVcaat\n\
-MctgtttgtgttgccttatWgtaBVtttctggMcaaKgDWtcgtaaYStgSactatttHg\n\
-atctgKagtagBtVacRaagRtMctatgggcaaaKaaaatacttcHctaRtgtDcttDat\n\
-taggaaatttcYHaRaaBttaatggcacKtgctHVcaDcaaaVDaaaVcgMttgtNagcg\n\
-taDWgtcgttaatDgKgagcSatatcSHtagtagttggtgtHaWtaHKtatagctgtVga\n\
-ttaBVaatgaataagtaatVatSttaHctttKtttgtagttaccttaatcgtagtcctgB\n\
-cgactatttVcMacHaaaggaatgDatggKtaHtgStatattaaSagctWcctccRtata\n\
-BaDYcgttgcNaagaggatRaaaYtaWgNtSMcaatttactaacatttaaWttHtatBat\n\
-tgtcgacaatNgattgcNgtMaaaKaBDattHacttggtRtttaYaacgVactBtaBaKt\n\
-gBttatgVttgtVttcaatcWcNctDBaaBgaDHacBttattNtgtDtatttVSaaacag\n\
-gatgcRatSgtaSaNtgBatagttcHBgcBBaaattaHgtDattatDaKaatBaaYaaMa\n\
-ataaataKtttYtagtBgMatNcatgtttgaNagtgttgtgKaNaSagtttgaSMaYBca\n\
-aaacDStagttVacaaaaactaaWttBaagtctgtgcgtMgtaattctcctacctcaNtt\n\
-taaccaaaaVtBcacataacaccccBcWMtatVtggaatgaWtcaaWaaaaaaaaWtDta\n\
-atatRcctDWtcctaccMtVVatKttaWaaKaaatataaagScHBagaggBaSMtaWaVt\n\
-atattactSaaaKNaactatNatccttgaYctattcaaaVgatttYHcRagattttaSat\n\
-aggttattcVtaaagaKgtattattKtRttNcggcRgtgtgtWYtaacHgKatKgatYta\n\
-cYagDtWcHBDctctgRaYKaYagcactKcacSaRtBttttBHKcMtNtcBatttatttt\n\
-tgSatVgaaagaWtcDtagDatatgMacaacRgatatatgtttgtKtNRaatatNatgYc\n\
-aHtgHataacKtgagtagtaacYttaNccaaatHcacaacaVDtagtaYtccagcattNt\n\
-acKtBtactaaagaBatVtKaaHBctgStgtBgtatgaSNtgDataaccctgtagcaBgt\n\
-gatcttaDataStgaMaccaSBBgWagtacKcgattgaDgNNaaaacacagtSatBacKD\n\
-gcgtataBKcatacactaSaatYtYcDaactHttcatRtttaatcaattataRtttgtaa\n\
-gMcgNttcatcBtYBagtNWNMtSHcattcRctttttRWgaKacKttgggagBcgttcgc\n\
-MaWHtaatactgtctctatttataVgtttaBScttttaBMaNaatMacactYtBMggtHa\n\
-cMagtaRtctgcatttaHtcaaaatttgagKtgNtactBacaHtcgtatttctMaSRagc\n\
-agttaatgtNtaaattgagagWcKtaNttagVtacgatttgaatttcgRtgtWcVatcgt\n\
-taaDVctgtttBWgaccagaaagtcSgtVtatagaBccttttcctaaattgHtatcggRa\n\
-ttttcaaggcYSKaagWaWtRactaaaacccBatMtttBaatYtaagaactSttcgaaSc\n\
-aatagtattgaccaagtgttttctaacatgtttNVaatcaaagagaaaNattaaRtttta\n\
-VaaaccgcaggNMtatattVctcaagaggaacgBgtttaacaagttcKcYaatatactaa\n\
-ccBaaaSggttcNtattctagttRtBacgScVctcaatttaatYtaaaaaaatgSaatga\n\
-tagaMBRatgRcMcgttgaWHtcaVYgaatYtaatctttYttatRaWtctgBtDcgatNa\n\
-tcKaBaDgatgtaNatWKctccgatattaacattNaaacDatgBgttctgtDtaaaMggt\n\
-gaBaSHataacgccSctaBtttaRBtcNHcDatcDcctagagtcRtaBgWttDRVHagat\n\
-tYatgtatcWtaHtttYcattWtaaagtctNgtStggRNcgcggagSSaaagaaaatYcH\n\
-DtcgctttaatgYcKBVSgtattRaYBaDaaatBgtatgaHtaaRaRgcaSWNtagatHa\n\
-acttNctBtcaccatctMcatattccaSatttgcgaDagDgtatYtaaaVDtaagtttWV\n\
-aagtagYatRttaagDcNgacKBcScagHtattatcDaDactaaaaaYgHttBcgaDttg\n\
-gataaaKSRcBMaBcgaBSttcWtgNBatRaccgattcatttataacggHVtaattcaca\n\
-agagVttaaRaatVVRKcgWtVgacctgDgYaaHaWtctttcacMagggatVgactagMa\n\
-aataKaaNWagKatagNaaWtaaaatttgaattttatttgctaaVgaHatBatcaaBWcB\n\
-gttcMatcgBaaNgttcgSNaggSaRtttgHtRtattaNttcDcatSaVttttcgaaaaa\n\
-ttgHatctaRaggSaNatMDaaatDcacgattttagaHgHaWtYgattaatHNSttatMS\n\
-gggNtcKtYatRggtttgtMWVtttaYtagcagBagHaYagttatatggtBacYcattaR\n\
-SataBatMtttaaatctHcaaaSaaaagttNSaaWcWRccRtKaagtBWtcaaattSttM\n\
-tattggaaaccttaacgttBtWatttatatWcDaatagattcctScacctaagggRaaYt\n\
-aNaatgVtBcttaaBaacaMVaaattatStYgRcctgtactatcMcVKatttcgSgatRH\n\
-MaaaHtagtaaHtVgcaaataatatcgKKtgccaatBNgaaWcVttgagttaKatagttc\n\
-aggKDatDtattgaKaVcaKtaataDataataHSaHcattagttaatRVYcNaHtaRcaa\n\
-ggtNHcgtcaaccaBaaagYtHWaaaRcKgaYaaDttgcWYtataRgaatatgtYtgcKt\n\
-aNttWacatYHctRaDtYtattcBttttatcSataYaYgttWaRagcacHMgtttHtYtt\n\
-YaatcggtatStttcgtRSattaaDaKMaatatactaNBaWgctacacYtgaYVgtgHta\n\
-aaRaaRgHtagtWattataaaSDaaWtgMattatcgaaaagtaYRSaWtSgNtBgagcRY\n\
-aMDtactaacttaWgtatctagacaagNtattHggataatYttYatcataDcgHgttBtt\n\
-ctttVttgccgaaWtaaaacgKgtatctaaaaaNtccDtaDatBMaMggaatNKtatBaa\n\
-atVtccRaHtaSacataHattgtttKVYattcataVaattWtcgtgMttcttKtgtctaa\n\
-cVtatctatatBRataactcgKatStatattcatHHRttKtccaacgtgggtgRgtgaMt\n\
-attattggctatcgtgacMtRcBDtcttgtactaatRHttttaagatcgVMDStattatY\n\
-BtttDttgtBtNttgRcMtYtgBacHaWaBaatDKctaagtgaaactaatgRaaKgatcc\n\
-aagNaaaatattaggWNtaagtatacttttKcgtcggSYtcttgRctataYcttatataa\n\
-agtatattaatttataVaacacaDHatctatttttKYVatHRactttaBHccaWagtact\n\
-BtcacgaVgcgttRtttttttSVgtSagtBaaattctgaHgactcttgMcattttagVta\n\
-agaattHctHtcaDaaNtaacRggWatagttcgtSttgaDatcNgNagctagDgatcNtt\n\
-KgttgtaDtctttRaaYStRatDtgMggactSttaDtagSaVtBDttgtDgccatcacaM\n\
-attaaaMtNacaVcgSWcVaaDatcaHaatgaattaMtatccVtctBtaattgtWattat\n\
-BRcWcaatgNNtactWYtDaKttaaatcactcagtRaaRgatggtKgcgccaaHgaggat\n\
-StattYcaNMtcaBttacttatgagDaNtaMgaaWtgtttcttctaHtMNgttatctaWW\n\
-atMtBtaaatagDVatgtBYtatcggcttaagacMRtaHScgatatYgRDtcattatSDa\n\
-HggaaataNgaWSRRaaaBaatagBattaDctttgHWNttacaataaaaaaatacggttt\n\
-gHgVtaHtWMttNtBtctagtMcgKMgHgYtataHaNagWtcaacYattaataYRgtaWK\n\
-gaBctataaccgatttaHaNBRaRaMtccggtNgacMtctcatttgcaattcWgMactta\n\
-caaDaaNtactWatVtttagccttMaatcagVaagtctVaaDaBtattaattaYtNaYtg\n\
-gattaKtaKctYaMtattYgatattataatKtVgDcttatatNBtcgttgtStttttMag\n\
-aggttaHYSttcKgtcKtDNtataagttataagSgttatDtRttattgttttSNggRtca\n\
-aKMNatgaatattgtBWtaMacctgggYgaSgaagYataagattacgagaatBtggtRcV\n\
-HtgYggaDgaYaKagWagctatagacgaaHgtWaNgacttHRatVaWacKYtgRVNgVcS\n\
-gRWctacatcKSactctgWYtBggtataagcttNRttVtgRcaWaaatDMatYattaact\n\
-ttcgaagRatSctgccttgcRKaccHtttSNVagtagHagBagttagaccaRtataBcca\n\
-taatSHatRtcHagacBWatagcaMtacaRtgtgaaBatctKRtScttccaNaatcNgta\n\
-atatWtcaMgactctBtWtaaNactHaaaaRctcgcatggctMcaaNtcagaaaaacaca\n\
-gtggggWttRttagtaagaVctVMtcgaatcttcMaaaHcaHBttcgattatgtcaDagc\n\
-YRtBtYcgacMgtDcagcgaNgttaataatagcagKYYtcgtaBtYctMaRtaRtDagaa\n\
-aacacatgYaBttgattattcgaaNttBctSataaMataWRgaHtttccgtDgaYtatgg\n\
-tDgHKgMtatttVtMtVagttaRatMattRagataaccctKctMtSttgaHagtcStcta\n\
-tttccSagatgttccacgaggYNttHRacgattcDatatDcataaaatBBttatcgaHtN\n\
-HaaatatDNaggctgaNcaaggagttBttMgRagVatBcRtaWgatgBtSgaKtcgHttt\n\
-gaatcaaDaHttcSBgHcagtVaaSttDcagccgttNBtgttHagYtattctttRWaaVt\n\
-SttcatatKaaRaaaNacaVtVctMtSDtDtRHRcgtaatgctcttaaatSacacaatcg\n\
-HattcaWcttaaaatHaaatcNctWttaNMcMtaKctVtcctaagYgatgatcYaaaRac\n\
-tctaRDaYagtaacgtDgaggaaatctcaaacatcaScttcKttNtaccatNtaNataca\n\
-tttHaaDHgcaDatMWaaBttcRggctMaagctVYcacgatcaDttatYtaatcKatWat\n\
-caatVYtNagatttgattgaYttttYgacttVtcKaRagaaaHVgDtaMatKYagagttN\n\
-atWttaccNtYtcDWgSatgaRgtMatgKtcgacaagWtacttaagtcgKtgatccttNc\n\
-ttatagMatHVggtagcgHctatagccctYttggtaattKNaacgaaYatatVctaataM\n\
-aaaYtgVtcKaYtaataacagaatHcacVagatYWHttagaaSMaatWtYtgtaaagNaa\n\
-acaVgaWtcacNWgataNttcaSagctMDaRttgNactaccgataMaaatgtttattDtc\n\
-aagacgctDHYYatggttcaagccNctccttcMctttagacBtaaWtaWVHggaaaaNat\n\
-ttaDtDtgctaaHHtMtatNtMtagtcatttgcaaaRatacagRHtatDNtgtDgaatVg\n\
-tVNtcaaatYBMaaaagcaKgtgatgatMgWWMaHttttMgMagatDtataaattaacca\n\
-actMtacataaattgRataatacgBtKtaataattRgtatDagDtcRDacctatRcagag\n\
-cSHatNtcaScNtttggacNtaaggaccgtgKNttgttNcttgaaRgYgRtNtcagttBc\n\
-ttttcHtKtgcttYaaNgYagtaaatgaatggWaMattBHtatctatSgtcYtgcHtaat\n\
-tHgaaMtHcagaaSatggtatgccaHBtYtcNattWtgtNgctttaggtttgtWatNtgH\n\
-tgcDttactttttttgcNtactKtWRaVcttcatagtgSNKaNccgaataaBttataata\n\
-YtSagctttaaatSttggctaaKSaatRccgWHgagDttaaatcatgagMtcgagtVtaD\n\
-ggaBtatttgDacataaacgtagYRagBWtgDStKDgatgaagttcattatttaKWcata\n\
-aatWRgatataRgttRacaaNKttNtKagaaYaStaactScattattaacgatttaaatg\n\
-DtaattagatHgaYataaactatggggatVHtgccgtNgatNYcaStRtagaccacWcaM\n\
-tatRagHgVactYtWHtcttcatgatWgagaKggagtatgaWtDtVtNaNtcgYYgtaaa\n\
-ctttaDtBactagtaDctatagtaatatttatatataacgHaaaRagKattSagttYtSt\n\
->THREE Homo sapiens frequency\n\
-agagagacgatgaaaattaatcgtcaatacgctggcgaacactgagggggacccaatgct\n\
-cttctcggtctaaaaaggaatgtgtcagaaattggtcagttcaaaagtagaccggatctt\n\
-tgcggagaacaattcacggaacgtagcgttgggaaatatcctttctaccacacatcggat\n\
-tttcgccctctcccattatttattgtgttctcacatagaattattgtttagacatccctc\n\
-gttgtatggagagttgcccgagcgtaaaggcataatccatataccgccgggtgagtgacc\n\
-tgaaattgtttttagttgggatttcgctatggattagcttacacgaagagattctaatgg\n\
-tactataggataattataatgctgcgtggcgcagtacaccgttacaaacgtcgttcgcat\n\
-atgtggctaacacggtgaaaatacctacatcgtatttgcaatttcggtcgtttcatagag\n\
-cgcattgaattactcaaaaattatatatgttgattatttgattagactgcgtggaaagaa\n\
-ggggtactcaagccatttgtaaaagctgcatctcgcttaagtttgagagcttacattagt\n\
-ctatttcagtcttctaggaaatgtctgtgtgagtggttgtcgtccataggtcactggcat\n\
-atgcgattcatgacatgctaaactaagaaagtagattactattaccggcatgcctaatgc\n\
-gattgcactgctatgaaggtgcggacgtcgcgcccatgtagccctgataataccaatact\n\
-tacatttggtcagcaattctgacattatacctagcacccataaatttactcagacttgag\n\
-gacaggctcttggagtcgatcttctgtttgtatgcatgtgatcatatagatgaataagcg\n\
-atgcgactagttagggcatagtatagatctgtgtatacagttcagctgaacgtccgcgag\n\
-tggaagtacagctgagatctatcctaaaatgcaaccatatcgttcacacatgatatgaac\n\
-ccagggggaaacattgagttcagttaaattggcagcgaatcccccaagaagaaggcggag\n\
-tgacgttgaacgggcttatggtttttcagtacttcctccgtataagttgagcgaaatgta\n\
-aacagaataatcgttgtgttaacaacattaaaatcgcggaatatgatgagaatacacagt\n\
-gtgagcatttcacttgtaaaatatctttggtagaacttactttgctttaaatatgttaaa\n\
-ccgatctaataatctacaaaacggtagattttgcctagcacattgcgtccttctctattc\n\
-agatagaggcaatactcagaaggttttatccaaagcactgtgttgactaacctaagtttt\n\
-agtctaataatcatgattgattataggtgccgtggactacatgactcgtccacaaataat\n\
-acttagcagatcagcaattggccaagcacccgacttttatttaatggttgtgcaatagtc\n\
-cagattcgtattcgggactctttcaaataatagtttcctggcatctaagtaagaaaagct\n\
-cataaggaagcgatattatgacacgctcttccgccgctgttttgaaacttgagtattgct\n\
-cgtccgaaattgagggtcacttcaaaatttactgagaagacgaagatcgactaaagttaa\n\
-aatgctagtccacagttggtcaagttgaattcatccacgagttatatagctattttaatt\n\
-tatagtcgagtgtacaaaaaacatccacaataagatttatcttagaataacaacccccgt\n\
-atcatcgaaatcctccgttatggcctgactcctcgagcttatagcatttgtgctggcgct\n\
-cttgccaggaacttgctcgcgaggtggtgacgagtgagatgatcagtttcattatgatga\n\
-tacgattttatcgcgactagttaatcatcatagcaagtaaaatttgaattatgtcattat\n\
-catgctccattaacaggttatttaattgatactgacgaaattttttcacaatgggttttc\n\
-tagaatttaatatcagtaattgaagccttcataggggtcctactagtatcctacacgacg\n\
-caggtccgcagtatcctggagggacgtgttactgattaaaagggtcaaaggaatgaaggc\n\
-tcacaatgttacctgcttcaccatagtgagccgatgagttttacattagtactaaatccc\n\
-aaatcatactttacgatgaggcttgctagcgctaaagagaatacatacaccaccacatag\n\
-aattgttagcgatgatatcaaatagactcctggaagtgtcagggggaaactgttcaatat\n\
-ttcgtccacaggactgaccaggcatggaaaagactgacgttggaaactataccatctcac\n\
-gcccgacgcttcactaattgatgatccaaaaaatatagcccggattcctgattagcaaag\n\
-ggttcacagagaaagatattatcgacgtatatcccaaaaaacagacgtaatgtgcatctt\n\
-cgaatcgggatgaatacttgtatcataaaaatgtgacctctagtatacaggttaatgtta\n\
-gtgatacacaatactcgtgggccatgggttctcaaataaaatgtaatattgcgtcgatca\n\
-ctcacccacgtatttggtctaattatgttttatttagtgacaatccaatagataaccggt\n\
-cctattaagggctatatttttagcgaccacgcgtttaaacaaaggattgtatgtagatgg\n\
-taccagtttaattgccagtgggcaatcctaagcaaaatgagattctatcctaaagtttgg\n\
-gcttgatataagatttcggatgtatgggttttataatcgttggagagctcaatcatgagc\n\
-taatacatggatttcgctacctcaccgagagaccttgcatgaagaattctaaccaaaagt\n\
-ttaataggccggattggattgagttaattaagaccttgttcagtcatagtaaaaaccctt\n\
-aaattttaccgattgacaaagtgagcagtcgcaataccctatgcgaaacgcctcgatagt\n\
-gactaggtatacaaggtttttgagttcctttgaaatagttaactaatttaaaattaatta\n\
-acgacatggaaatcacagaacctaatgctttgtaggagttatttatgctgtttactgcct\n\
-ctacaaccctaataaagcagtcctaagaatgaaacgcatcttttagttcagaaagtggta\n\
-tccagggtggtcaatttaataaattcaacatcgggtctcaggatattcggtcatataatt\n\
-tattaagggctcttcgagtcttactctgagtgaaattggaaacagtcatccttttcgttg\n\
-tgaggcatcttacaccgctatcgatatacaatgcattccaccgcggtgtcccgtacacaa\n\
-ggaaacttgttaccttggggatataagaaaactcacacgtctcattattaaactgagtac\n\
-aatttttgcacgagaaagtaatgcaatacaatatgatgaaagccagctaatgaaaaggga\n\
-tggaacgcacctcggatctgttgcactggattaaaatccgattatttttaaaaatattca\n\
-gtgctagagcatatcaggtctacttttttatctggtatgtaaagcccacggagcgatagt\n\
-gagatccttacgactcaacgaaaagttataacataactcccgttagccaaagcccaatcc\n\
-cgattactgccctaccctaacgtctgccatctaaatatcgaacttgttatgatcaatgtg\n\
-actacctcccaccctttccccttcatttgttccactggggataagctagcgttttcagaa\n\
-tcaatgcaataagaatagccaattgtctcacttcatcagagctcttggcaattccaggcg\n\
-ctacgtggttctggaatatattcatttttcaaatagtaatacgtttagtgttgctattgt\n\
-ctacacgtttggatattacgttatgtgagcggacatcaatagttgtctaactctttagta\n\
-agccagagatagcactcttagcgaatggataccatcttccataagtttagttaatagtcc\n\
-gaaacaactgcttcgagcatatttgaacctccttgtaggcaaatagcctcttcaaagcaa\n\
-tcttactaatagatagagtttgttttaagggactactagaaatgggacaatcttaatagt\n\
-atgacctaaactgacatttaaagatatatccaggtggcaagcataaagatcattgcgcca\n\
-cctccaccgtgggattacttatcagtcgatatcctatatgctaagtttgcgacggcagaa\n\
-tacaaactaagctgagttgatgctaaccttacctatgataccccattggaccggttaaca\n\
-gccctacttattccaaataaaagaacttttatgctgtagaagctattatagtgatgcctg\n\
-gtaacttcagtatattaaaatgacacacatacgccatatagagctcctggaactttgaat\n\
-aatgagcgaacttcgaagttgaagagcaagaaaccatatgtcacggttgcctaaagcccg\n\
-gtaaccagacatgtgctatcattgatcattatcgaggttttcataaccttgacccattat\n\
-cggctgtgcgcggacaagtacttaaatcactagtttcttcacctgcttatcggtaagaaa\n\
-taaggttggcaaagaatcgcataagacggacgtagagccgcagcgttgtgcgagtccagg\n\
-tgcatgcgcagcaataggattttaaattttgttccatttttaatttagccgtaaggatgt\n\
-ccgtaaatgattgaaaattggattcaatctttgggcctatgctactggaacctgatcgac\n\
-aaaatttcaaacatacgttaactccgaaagaccgtatttttgcggctagaatagtcagtc\n\
-gcttggagccatataccttaccacttaaacgacgtgctcctgtagttgaaatataaacag\n\
-aacacaaagactaccgatcatatcaactgaagatctttgtaactttgaggcgaagcaccc\n\
-tcttcgagacaactaagagtaaagtaccgggcgccgcaaggagtcgattgggaccctaaa\n\
-tcttgacgaattgctaagaggctcagagctaccactgtaatttctctagagcccataata\n\
-aatgaacgatacatccgtaggtagcacctaagggattataatggaagccaaatgcagtta\n\
-ataatattatatactggcgtacacgattcgacggatctctcacatagtgattcacgaccc\n\
-ccccctttgattgacacagcgtcagcattttgcaagaacgatcttctgcatagggtgcgc\n\
-caccgtaaggatgacgtcgaagctacaactgggtataatttaccatgcttccctgatgct\n\
-gagtgcaatacactaagaatgagtttttaccccatatcaccagtatttgttctgttattg\n\
-cgaagaaatggctatgctgagttggcgactaaagtcacccatcctttttattaggtaacc\n\
-ccctcccttaaactaactgatttgctggagctgccctgcatacatatactttatcattta\n\
-tggacgtccgtgacgcttattatccaccatagtcgatatgctacacggattcattaatgg\n\
-atcgtaggagtttaagttatatttactaagatcggtctcggctactatcccgccttaccc\n\
-ggcgctatttacggccatttttaatatattgacggtaattattcctatggtttcgaccgc\n\
-acgtccttggacaagaaagaatggcaaaaaaaatgtaaaagaaaaaaaatattgagtccc\n\
-taccatcatataaaaaatatgtgatgagtaacttgacgaaatgttagtggttattaaaga\n\
-ctatctattacaccttttgttttctgtcgtagtatattaaagtctagaagccttacagga\n\
-aaatcagggttatacagccgatactccgcagcatgaatcatcgaggaggtgtcctaccat\n\
-cgcgccttgtaatcttgtctgtgtatactgtatttagaccttttatacaaagtaaatatc\n\
-tcggctttatgtgattgggaggggcctactcaaacatgatgacttgacctaataatcact\n\
-gtgcgggcgtcttatgactagctattccttgaaatccaccaccaaatggttaatatgtaa\n\
-aaactttgacgatgaaacaaggtgaatgtgtagttactttgtgtaattagctgcgtcgag\n\
-cattgcttgtaaaaccgtcaatcgcacacgttacttccataaaatttctacgaatacacc\n\
-cttcttaaaaaaaacgtaggaattcacgagtttaacaaacgataactgtataaagtggaa\n\
-gtccgaagaaagcagatgcccgaactactcgaagatgtttcgttttcttaaccatagggg\n\
-cttcttaatggcccactacgcacattttgttcaagcccgagagggacatccccattacgg\n\
-gagtattactaaaactgttccgtaatacgttcagcaagggatgaaaaaggccactgctca\n\
-agttattgacgtgggagtattacatcggaagcctgaatcccacactatgatggtctgtac\n\
-aggcctagggactgcgtctagacggtattaccggcttctaatcatacgatcgtgagtctt\n\
-aacgggaagtaaggctcacacctaccccaaaccatttatctatgtaagtataaaattgtg\n\
-cgtaagtgttcaaagtggacaataaagacgtggcaaaaacccccgcacataagccgcttt\n\
-agatttcacaaataccaatgcggttaaaaacatccttgagtcgtacatacaccatactcg\n\
-cgttaaacggatataacagaagataataaatccggatgtggagtcggtgtaactatagaa\n\
-agccaagtgaaataatgcttaccagtcatttagctatacggctttcatttcatgtcaaga\n\
-gggtggagtttgacctgtacagttgatatatcaccgatacttagaactcacctaaagcta\n\
-aaattgctcgcagcgtgtaatccgcatattacaaacaatagatgggattcattatacata\n\
-agacacgatgatctgctttttcaggttgcgagatgttgcctatcgtcaatcgagtcctgc\n\
-cttacaccacttaaacaaaagtattgacagggaacctattttcgaggtattatatagtcc\n\
-agcttgaatatcaatttgacagttaacctagtgaaaatcagtaagaggaaatacgccaca\n\
-ttctccagtgaaattctacgggttatcgtctagtccaactatcaattataactcacgaga\n\
-tataagtaaattctcgtacttggcctgatttttattatactttggatccttagtaaacag\n\
-gaagggagaaaccttcaacgaaaaacactggattttgttttactctcaaagctcttatat\n\
-gacggaaataccctgtcaagtcttaactttattactagactaatgaaatgggcttggggt\n\
-ggccagaatcatagtacaatttagcggatacactattcggactttcctatcggctgtctg\n\
-gttggataagtatggggactaataggctagacatacctatacttaaactatacaggcgtc\n\
-atctatctctgcaactttggagttccctgatgttctcccgccctttgggttcacatcttc\n\
-tataccgacacccctaataacgattagtttgtgggttagagtaaattaatacggttaata\n\
-ttaatgtatcgttgaaaagctggtgtcgccaataaggtaaccggctaggcagagtatatg\n\
-tcacgaagtataactaccctaatgataagctgtaggaataaaattaatgctgtctctaag\n\
-cgaagagatatttccgactctgttttaatgacgaatctcattacttctgacttgcaaatg\n\
-ttcaatatggcacggtttcacggcacctttgtgacgcatataatgaacttagaagattat\n\
-aacgacggaactttatatgataatccgttacgattaaagaatctgttaaatatcataatg\n\
-gcattcagttctagaccgtgcatcatggtaaacttactttctctgcatggcgacatacat\n\
-ttcgctattcaaattcgcgtgtggttacacccactcgcacctttggaatattaagagaag\n\
-atgatcagaaaatccattcgctcaatttttctgacgtacgtctaatttatcctaggagac\n\
-aaatcgttttatgtctctcacatttttgaagaaaggttcgagagacaatactcaggtcct\n\
-gaactgctagaagatactcggtggagcgtggcaacaatgaaaaactcgtgacataaatga\n\
-atgatacttttccaagttcagttaagtgaatatgtttaacatacccggcttttcgatctt\n\
-aagctgacgctggacgtgcgagtaatgtcagtctcttacatacactagtgactccaagtt\n\
-tcgtcaaaaacgccccctcccttctcgagcccactcacgctatgtattgacgcgaacttg\n\
-ttcgggatcagacttttcaggagttcggtcgcgtgtccctatgtgctaatatataagtta\n\
-gatcgcattagatgctaatctgaatacttatagacgaccttcaacgagaacgggtaccac\n\
-cttgaggctagagttaggtgtgaaacgacaggtagggacatataaaatttgagtgcggct\n\
-ttagttaagggtttaattacctactcaaacatcacgctcgcgcccttcgtacgtaatcga\n\
-ccatctagaggctaaggggactgtactaggtagtgattaatgatatcctagacgcacgtg\n\
-ccttagatcttcagactctgatggtccgcgatcaccgtaattgtagtcctccaactcgat\n\
-cactttgttggcgtcaaagaaattacgatatctaaatacttataatacaataaccaagga\n\
-tgagaatgactcatcgcgttggagttatattgcttgaagttctatggaatgaaagcacgt\n\
-tatctgccgtcccaatatctccagtgagctaattcattggacggtccactttgatcaatc\n\
-cccgaggagatgttcggacactttagtctgtaacacttagcgttgagaccacgaacaatt\n\
-gattactcagtcttgaaggtgttttccaaagttcattttaaataagactacgataggcct\n\
-ttcctattgatataaactacccggctctgttgttcgtgtgagtcgtacttctctgtgttt\n\
-ttctgattatagcaagattcgattcttagtgtaaacagcgatttttatttgacccgtcaa\n\
-tgagaagcgcataggatctaagcaaaattatcaagttgtgccacaaggtaagatctttcc\n\
-agttattgcaggtaggatgtatcccacgttgatagtatgaggtctgacgtcaactgtcta\n\
-ggagagttgaccgcgtgcgggtacaccggatttgcatcgatgttgagaacgcagaactcc\n\
-cactgtcgtggcggcgttcctgatatttagcaagaggcgttgataaagccctcatcatct\n\
-agatctcgacctcatctgccctcttgctccatcattttctacacagactactttcctatc\n\
-tacgttagtataattgctttctatcttagtatcatttagagcttctccgtcaacaggttc\n\
-gtgctattaaagttagtacgaaagggacaacttgtagcaacgcatttaatcggttttcga\n\
-ctacttcgcacaaaatcagataaagaagtttgtcattctattagacattgaattgcgcaa\n\
-ttgacttgtaccacttatgatcgaacactgaatcaagactgtgattaactaaaatagaca\n\
-agccactatatcaactaataaaaacgcccctggtggtcgaacatagttgactacaggata\n\
-attaattggactggagccattacattctctacaatcgtatcacttcccaagtagacaact\n\
-ttgaccttgtagtttcatgtacaaaaaaatgctttcgcaggagcacattggtagttcaat\n\
-agtttcatgggaacctcttgagccgtcttctgtgggtgtgttcggatagtaggtactgat\n\
-aaagtcgtgtcgctttcgatgagagggaattcaccggaaaacaccttggttaacaggata\n\
-gtctatgtaaacttcgagacatgtttaagagttaccagcttaatccacggtgctctacta\n\
-gtatcatcagctgtcttgcctcgcctagaaatatgcattctatcgttatcctatcaacgg\n\
-ttgccgtactgagcagccttattgtggaagagtaatatataaatgtagtcttgtctttac\n\
-gaagcagacgtaagtaataatgacttggaataccaaaactaaacatagtggattatcata\n\
-ctcaagaactctccagataaataacagtttttacgatacgtcaccaatgagcttaaagat\n\
-taggatcctcaaaactgatacaaacgctaattcatttgttattggatccagtatcagtta\n\
-aactgaatggagtgaagattgtagaatgttgttctggcctcgcatggggtctaggtgata\n\
-tacaatttctcatacttacacggtagtggaaatctgattctagcttcgtagctgactata\n\
-ctcaaggaaccactgctcaaggtaggagactagttccgaccctacagtcaaagtggccga\n\
-agcttaaactatagactagttgttaaatgctgatttcaagatatcatctatatacagttt\n\
-ggacaattatgtgtgcgaaactaaaattcatgctattcagatggatttcacttatgcctt\n\
-agaaacagatattgcccgagctcaatcaacagttttagccggaaacaatcgaagcatagg\n\
-gacaatgtatcttttcctaaattgccatgtgcagatttctgagtgtcacgaagcgcataa\n\
-tagaatcttgtgttgcctcaactcgttgaaaagtttaaaacaatcgcagcagtctttttg\n\
-gggtctactgtgtgtttgcaaaataactgaaagaaacgcttgaacaactctgaagtagct\n\
-cgagtactcattaaagtgtaacacattagtgaatatcggccaatgaaccaaacgcttccc\n\
-ggtacgctatctctctcatcgggaggcgatgtgcaggttatctacgaaagcatcccttta\n\
-cgttgagagtgtcgatgcatgaacctcattgtaacaatagcccagcaaattctcatacgt\n\
-gcctcagggtccgggcgtactcctccatggaagggcgcgcatctagtgttataccaactc\n\
-gctttttaactactatgctgtagttctacaggcatagtggccagtattttctaacttctc\n\
-tggatagatgctctcactcctcatccatcacggcttcagtttacgtcttacttgcttgtt\n\
-cagcaacggatggaggcattaagtatcttcactgttccctaaaattgctgttcaatatca\n\
-aagtaaggacgatacagggaaagctcaagcacactcattgaatactgccccagttgcaac\n\
-ctcacttaatctgacaaaaataatgactactctaagtgttgcggaagcagtctcttccac\n\
-gagcttgtctgtatcacttcgtataggcatgtaactcgatagacacgaacaccgagtgag\n\
-aaactatattcttgcttccgtgtgtgtgacaccaggtaattgatgcggatataagctgga\n\
-gatcactcacgcccacacaaggcgctgctacctctttattccaatgtgtaagaatttgct\n\
-aacttcatttctagaccgcagctttgcggtcataatttcacggtacggacccttgggtta\n\
-gagacttgataacacacttcgcagtttccaccgcgcacatgttttagtggcttctaacat\n\
-agaatttttgttgtgacataaagagtgcgtgggagacttgcccgaccgttaagccataat\n\
-caattgaaagccccgtgagtcacatctaattggttgtactgcgcatttagctatccttta\n\
-gctgactcgaagagattcgattcctaatataggttaattagatggctgccgcgcgaagta\n\
-aaacgtgaaaaacgtagtgcgcagatctgcataactcgcgcttaattacttatgagtagt\n\
-tccaagttcgctacgttatgagagagattggaattaagcaaatatgttttatggtgattt\n\
-tgggatgagaaggactgctaagtacggctactaaacaaatttctaaaaccgccatctacc\n\
-ttatcttggagacatttaagttgtatatgtcactagtctagcttttgtctgtgggacgcg\n\
-ttctcggaatgagggaaatgcaagagccgattcatcaaatgcttatctaagaaagtagtg\n\
-gactattacaccaagcacgaatgccagggaactgctttcttgctcaggacctcgcgacaa\n\
-ggtaccccgcataagtcctagaattacatttggtcagcaatgctgacatttgaccgtgaa\n\
-aacataattttaatcagaaggcagctcacccgcttgctctagatcttatctttgtatgaa\n\
-tgtcagaatttactgcaatatccgttccgaatagtgagggcttagtatagttctctgtat\n\
-acaggtcacatcaaactccccctgtcctagtacagctctgagctttaattaattgcatac\n\
-atttccttcaatcatcagatgaaaacaccgcgaatcatgctcttctcgtatagggcaaga\n\
-gaagcaacaaacaactagcccgactcacgttcatccgccgtatccttgttcagttcttac\n\
-tccgtattaggtcagcgaaatctaatcagaataatcggtcgcgtatcaaaattaaaatcc\n\
-cgcttgaggttgacaattaaaacgctgagcagttatcggctattagatagtggggtgaaa\n\
-gtaattggctggaattatgttaaaacgtgatattaagctaaaatacgctacttgttgccg\n\
-acctaattcagtcattcgatattcagttagagccaagaataacaagcttgtataaattga\n\
-acggggtgcactaaacgatgtgttactctaatattcagcttggagtatacctgaaggcga\n\
-attcatgtatcggccaataataagacgttgaagatcacaatttggactagcaaaagaagg\n\
-tgatttatgcgtggggattgagtccactgtacgagtacggtctctggaaaattataggtt\n\
-cagggaatataaggaagtaaagataattaccaagagatttttggtatcgctatgacccag\n\
-aggtgttctaacgtctgttttgatccgcagaatttctgcctcaatgcatatttgacggac\n\
-ttgaactagagcctctaaagttaaatggcgacgcaactgttcctaaacttcaattattac\n\
-tactctttttttcctagggtattgtagaggccagtggacaaaataaatcaaatttaagat\n\
-gtttcggacattaacatcccccgtagcatagaaatcatcagttatccaatctctcatcga\n\
-gcttttacaatttctgctggcgctatggacagcatatgccgcgagacctccgcaagactc\n\
-acttgatcactgtaagtatcttcattagaggttagagcctatagttaagctgctgaccta\n\
-gtaaaattggtattttctaattttattgctcaagttaaaggttagtgaagggataatgac\n\
-gttatttttgaacaatgggttgtattcaattttatatcacgaatggaacccttcattccc\n\
-ggcataatactagacgacacgaacaagctccgatctatcagccaggcacgtgttaaggtt\n\
-taattccggcaaaccaatgaagcatcaaaaggtgacctgatgcaacttagggtcacgatg\n\
-agtttttcaggactacttattacctattaataagttaacatgagccttcataccccgtaa\n\
-gacaatacatactccaccaattagaattctgagccatcttatctttttgtatcatcgaag\n\
-ggtatggccgaataggttaattagttactcctaacgtctctacaggcatgcatttgacgc\n\
-accttcgaaaatagtcaatctctcgccacacgcgtctagtatgcagcatcaaaaatatag\n\
-tccacggtttccggattaccaaacgcggcaaagagaaacattgtatcgacggagataact\n\
-taatacagaaggaaggggcatcttcgaatacggatgaataattctatctgtttattctga\n\
-catcttgttttcaggttaatcttacgcattcaaatgacgcctgccccatgcgtgcgcaat\n\
-tattttctaatattgacgagagcaatctcactccttttgggtctatttatgttttattga\n\
-ggcacaagcctatacagaacaggtactattaaggccgtgagtgtgagactcaaaccgtgg\n\
-aaacaaaggatgggttgttcttggtacaagttttagtgcatgtgggcaatccttaccaaa\n\
-atcagatgctatccttaactttgggctgcatttaagatggcggttggaggcctgtgagaa\n\
-tcctgcgtgtcatctttaatgaccgaattcatccatgtagattcagatcacacactcatt\n\
-ccttgatgttgtctaaacaaaagttgttgtggacgcattggagggagttaagtaacaact\n\
-tgggatcgcatacttataaaaattatatgttaaactttcacaaacgctgaagtccaaagt\n\
-aactagcccaaacgcctcgagagtcactaggtattaatggtgtttgagttcctgtgaaat\n\
-agtgttcgaaggtaaaatttatgtaccaaatcgaaagaacacttaataaggcttgcttgc\n\
-acggaggtatgatgtttactgactctacaaccctaattttccagtacgtacattcattcc\n\
-aataggttagttctcaaagtgctatacaggctcctcaattgatgatatgcttcagccgct\n\
-ctatggatattagctcattttatttaggaagcccgcttagaggcttactatgagggaaat\n\
-gccaaaatgtcatacttttcggtgtgtcccatatgacaccgctttacatagaatttgaat\n\
-taaaacgcgctctcccgttcactaccatacttggtaccgtgcgcatattacatatagata\n\
-taggatcattttttaaagctgtactaggtttgatcgacaatcttatgctatactatatga\n\
-tgtaaccctcataatcaataccgatcgtacgatcctagcataggtggcaagcgattttat\n\
-gccgattattgtgttaaatagtctgtgagtgtgattatcagggctacgttggtagagggg\n\
-ttgtatagacctcgcacacattgtgacatacttaacaatatacgaaaactgatataataa\n\
-atccccttacccaaacaccaatcccgttgaatcaactaccataacgtctcccatataaat\n\
-tgcctacttgtttgcataaatctgaatacataacaccattgcaccttcttgtgttccaat\n\
-cccgttaagattgccttgtcagatgatatgcaagaacaatagcatttgctagcaattatt\n\
-aacagctcttcgaattgcctccacataacgcgggagggtatattttaatttggcaaatac\n\
-taagtactgttggcgtcatatgctattaacggttggatattaagttatgtcagccgtaag\n\
-caagagtgggcgaaatattttgttacccagtgagagcactcttagagtttggatacaata\n\
-ggccatatgttgacttaagaggacgtaactacgccgtacaccattgttcaaccgacttct\n\
-tggcaaatagaatcgtattagcaatcttaagaatagagacacgttcgtgttagggtatac\n\
-tacaaatccgaaaatcttaagaggatcacctaaactgaaatttatacatatttcaacgtg\n\
-gatagatttaacataattcagccacctccaacctgggagtaattttcagtagatttacta\n\
-gatgattagtggcccaacgcacttgactatataagatctggggatcctaacctgacctat\n\
-gagacaaaattggaaacgttaacagcccttatgtgtacaaagaaaagtaagttgttgctg\n\
-ttcaacagatgatagtcatgacgcgtaacttcactatagtaaattgaaacaaatacgcaa\n\
-tttagacagaatggtacggtcatgaatgacagtaattcgaagtgctagaccaacttaaaa\n\
-taggtaaacgtgcccgaaaccccccttaacagaaagctgctatcatggtgcagtatcgac\n\
-gtgttcagaaacttgtaacttttgagcaggtccgagcacatggaagtatatcacgtgttt\n\
-ctgaaccggcttatccctaagatatatccgtcgcaaactttcgatttagtcccacgtaga\n\
-gcccaagcgttgtgcgactccacgtgcatgcccagaaatacgagtttaaatttggttaca\n\
-tggttaattttgaccgaagcatcgcactttatgattgataattggattcaatatgtcgcc\n\
-ctatgcgaatgcaacatgatccacaatttggctataagacgtttaatccgtatcacactt\n\
-tgtttgcggctagtatagtaacgcccgtgcaccaagagtcagtaacaattataagtactc\n\
-cgcaggtacttcaaatataaaaactaatcaaacacgacccatatgatcatctgaagatat\n\
-ttggaactttctcgacaaccaccctcgtactcaatacttacactaatcgacaggcacacg\n\
-caacgtgtacagtcgcaccatattgagtcaagatttgcttagtggcgatgagcgtacacg\n\
-cttatttctctagtcacaattagttatctacgagacatcacgagggagcaaataagcgat\n\
-gttatggctacacataggcacgtatgaatatgatataagccagttaaacagtcgaaccat\n\
-cgagcaaattctcatgcaccaacccacacgttgaggcacaaagagtaagctgtttgaatg\n\
-taacttcttctgctgagcgggccccaacgtaaggatcaactagaagagaaaactcggtat\n\
-tagtttaaatgcgtcacggagcatgagtgcatttcactaagaatgtctgtgtaaccaata\n\
-taacatctatttgttatctgattgcctacttatggctttgcggtcgtggcgactaatgtc\n\
-tccaatccttttgaggtcggtaccaactccctttaaattacgctgtgcaggctcatgcac\n\
-tgcatacatatacggtagcaggtagggacctcacgcacccttattataatcaatagtagt\n\
-tatcagtcaacgaggcaggaatgctgaggtcgaggtgttggtatattttctatgtgccgt\n\
-ctaggcgactatcacgcattaccaggcgagatttaagccaattttgaatatagtcaacgt\n\
-aatttttactatgggttccaccgaaacgccttgcacaactaagaatcccataaaatatcg\n\
-atatcaaataaaagattgtgtcaataccttcatatatattttttcggttgactaacgtga\n\
-actaaggttaggggttttgtatgtctatataggaaacagtttcttttctgtcctacttta\n\
-gtaaagtcttcaagccttactccaaaatcacggtgattaagccgttactcagcagcatga\n\
-ttctgcctgctcgggtcctaaaatccagccttgtaagagtcgctgtgtattagctaggga\n\
-gacctttgttaaaaaggatatatcgcggcgggatgtgagtgcgtggcgcatactcaatct\n\
-tcagctcgtgtcattataatatctctcccccacgcttttcactagatatgccgtgtaagc\n\
-aaacaccttatgcttaatttcgaaaatattggtacttgaaaaaagctgtaggggtactta\n\
-atgtctggtaggagatcaggagagaattgagtgtaaaaccgtaaagccctcacctgactt\n\
-catgtaaatggcttagaagactccatgatttaataaatactacgaaggaaagactggatc\n\
-taaagataactctagtaaggccaactcccttcaatgctgttgccagttataatccaagag\n\
-ctgtccttttctgaaccatagcggcttctgaagcgaactagaagcaaagttggttctagc\n\
-cagacagccacataccctgtacgggtgtattactaaaactggtccggtattagttcacca\n\
-agggaggaattaggcaaaggatctaggtatgcaagtcggagtattacatccctaccctga\n\
-atccatcaataggttcctctgtactggccttcgcaatgagtattcaaggttgtacagccg\n\
-tataataataagatagtgactatgaacgggaagtaacccgctcaccttccccaaaacatt\n\
-gttatatctaagtattaaagtctgccgtagtgttaatactcgaaaataaacaactggcaa\n\
-attacaccgcacttaagccgcttttgatttatatttttccaatgcgcttttaaaaataat\n\
-tcagtcctacatactaattaagacccttaaacggagatatcacaagttaagttttaacca\n\
-tctcgactaggtggaactatagatacccaactcaatttatcattacctgtaatgttccta\n\
-gaaggattgcatttcatgtcaagacggtggagtttcacagcgaaacttcagtgtgaacag\n\
-attctgagaaatcacctaaacctattagtcagagcacccggttagaaccagttgtcaaaa\n\
-aatagagcggttgcatgagacagaagtaacgatgagatccgttgtaacgttgagacatct\n\
-ggcctatcgtcaatacagtcctcccttaaaaatatttttaaatactaggcaaacccaaca\n\
-taggttagtcctatgtgatacgccacatggtatatcattttgtaacgttacctagggata\n\
-atcaggaagtggaattacgcaaaagtagacagtgaaatgcttagggttatagtctagtcc\n\
-aaagataaaggataaagcacgtcagagaactatattagccgaatgggaatcattgttagg\n\
-agactgtggatcatgtctaaaaagcaacgcagaaacagtcatcgaaaaaatctcgttttt\n\
-gtttgaatctaaaagagctttgatgaccgatagtacctgtatactagttactgtattacg\n\
-tgtctaatgatttcggattggggtccccagaatcagacgtcattgtagacgattcaagtt\n\
-taccaatttaatttcccagctctccttggagaactatcgccaataattgcagtcactttc\n\
-cttttctgaaacgataaagccgtcagagttctctgcaacgttggacttacctgaggttct\n\
-aacccactttcggttctaatagtagttaacgacacaacgaataacctttactgtggggct\n\
-ttcacgatattttttcgcttattattaatggttacgtcataagctggtgtccaaattaag\n\
-gttaccggcttcgcagagtagttgtatccaagtataacttccctaatcataagatcgagg\n\
-tagaaaattaatgctgtctctaaccgaacagatatgtcccactatgtggtatggacgttg\n\
-ctaattacttctgaagggaaattggtcattatggatacgtgtctaccatcaggtcggacg\n\
-cagatatggttctgtcttcagttgatccaccgttctttataggataataactgacgatta\n\
-aagattatggtaaatagattaagccaattctcttcttgtcagtgaagcatccttaactga\n\
-cttgctctgcagcccctcatacatttagctattcaaagtaccggctcgtttcaaactctc\n\
-ccacctttggaagaggttgtcaacttgataagtatatcatttacagcattttttcggacg\n\
-tacctctaatgtttcattgcagaaaattagttttttctatcgcacattttgcaagtaacg\n\
-ttagagacacaattatctgcgaatgaactgctagatctgacgaccgggagcctcgcaaat\n\
-atcaaaaaagactgacatatatcaaggagtcgttgacaagtgctggtaagtcaattggtt\n\
-tatctgtcccggcgtttcgatcttaagctgaccatgcacggcagagtaatgtcactctcg\n\
-ttcttacaagtctgtctccaagggtcggcaaaaaagacccctccattctcgagcccactc\n\
-acgatatgtagggacgacaacttgtgcggcttatgaattgtctggactgcgggcgagggt\n\
-ccatatctccgaagttagaagggacatacctttagatgataagatcaattcttattgacg\n\
-aaattcatccacaacggggaacaacttcaccctagacttacgtctgaaaagacacctagc\n\
-gtcttataaaaggtcagtgccccgtttcgtaaggctggaattacctacgcaaacttaaac\n\
-ctcgcgcccttccttacgtatcgacaagatagaggctatcgcgaatgtactacggaggca\n\
-tgaatcatatactagaaccaagtgcctgtgatattaacaagatgatccgacgcgagcacc\n\
-gtaattctaggcataaaactccagcaatttgggggccgaaaacaaatgacgttagctaat\n\
-taattatatgacatgatcaaaggaggtcaatcacgcatcgagttcgacgtatattcattg\n\
-aacttcgtgcgtttgaaagaaacttttatgaaggcaaaattgatcctgtctcctatttca\n\
-tgcgtacctcctagttgataattccccgagcagtggttaggacacttttgtcggtatcaa\n\
-gttccggtctcaaaacgtaaaattctgtaatctgtatggatggtctgtgaattagttaat\n\
-ttttatgaagtcgtcgagacgcagttcctattgatttattctaaacggagatgtgcttcg\n\
-tgggactcggaagtagatctgtgtttatgattattgctactttagatgctgactgttaac\n\
-tccgtgttgtttttcaaccgtatatcacaaccgaattggatagaacctatagtttcaagt\n\
-tctgccacaaggtatcatatttacagttagtgctggttgcttctttcaaacgtggtgagt\n\
-ttgtgctatcacgtcaacggtagagctcagtggaccgagtgcgcgttcaaccctgttcca\n\
-gagagggtgtgatagcacatataccacgctcgtcgaggcgttcatgatagtttgcaagag\n\
-ccggtgttaaacacatattattattgttatccaactaatcggacctatgcataaagcatt\n\
-gtctaaacagaataattgcctatatacggtagttttagtgatttatatcttagtatcagt\n\
-tagagcttcgaactcttcaggttcctcatatttaacgttcttcgaaagcgaaaacttcta\n\
-caaacgaatgtaagcggttttccaagtagtacctataaatcacagaaagatctgtctcag\n\
-tatagttgaaatggtattcagctagtgacgtgtaccaattatcatagttcactcaagcaa\n\
-gacgctcattaacgaatatagacaagacactatatcatataataaaaaagaacatggtgc\n\
-tcgaacatagttgaattcaccatattgaaggggaatgctgacatgtaattcgctactaga\n\
-cgatcaattccctacttgtcaaagttgaactggtacgttcttggaattaaatatgattgc\n\
-gctggaccaaattgcgacttcttgagtttcagggcaaacgattgagccggaggatgtccg\n\
-tctcttacctttcttgcttatgataaacgacggtccctgtacatcactgggaattctcag\n\
-caaaaataattgggtaaatcgagactcgatgtattcggccacaaaggtgttagacgttaa\n\
-agattattcaacggggcgataataggatcataaccggtatgcaagcgcattgaaagagcc\n\
-atgagatccttatccgataaacgctgcacggtatgtgcagccttattgtcgatcacgaat\n\
-ttataaatgtagtctgggctgtaagttgaagacctaagttataatgaagtgcaataccaa\n\
-atcgattcatagtggattatcagactcaagatatctcctgataaattacagttgttaaga\n\
-tacggataaaatgagatttaagattagcagcctctaatctgtttcaatcccgttggaatg\n\
-tggtatgcgatcaaggttaagttaaaatcaagcctgtcttcagtcttgattcttgttctg\n\
-ccatcgcatgcggtctacgtgagttaatatgtagcttacgttctagcttgtgctaatctg\n\
-agtatagattcgtagaggaatattatcaagcttccacgcctcaacgtacgtgtattggtc\n\
-acacaagacactaaaagtggaagtagcgtaaactatagtctagttgttaaatgctcagtt\n\
-cttgttatattcgatatactcttggctaatttatgtctgagtatataaaattaatgatat\n\
-taacttgcatttcacggatcccttagaaaaagattttgaccgagcgcattataaacggtt\n\
-acaccgaatcaatagaagcatacccaatagctttctttgaatttattgcctgcgcaactt\n\
-ggctgactctctagatccgaataattctatatggtcgtgacgaaactagttcattactgt\n\
-ttaaaatgccaacatgtcttttgggccgataatggctctttgcaaaattactcaatgata\n\
-cgattgatcaaagcggtagttgctagtggtagcatgtaagtctatcaaatgtctgattat\n\
-ccgaaaatcttccaaaagagtccacgtaccatatctatctcatagcgacgcgaggggaac\n\
-cttatctaactatcattccatttaccgggtgactctcgatgcaggatccgattgggataa\n\
-attgcccagaaatggctcattcctgactaagggtaaggccgttctcagcaagggaacccc\n\
-gcgaatctaggcttataccatctagattgttaactacttgcctgtagttctacagccata\n\
-ctggacagttgtttctaaatgatcgggattcatgctagcactcctctgaatgcaccgcgt\n\
-aagtttaactattacgtccgtgggcagataaggatggaggctgtatgtatcttaactgtt\n\
-acctaatatggctggtaattatcaaagtaaggaccttaatgccatagcgctagcaatcgc\n\
-tttgtatactgaccatgtgccaacctctcttaatctgtaaaatataatgtcttagctaac\n\
-tgtggacgatcatgtctctgcctagagcttcgctgtatcaattcctatagccagcgtact\n\
-agtgacacaacaacaccgtgtgagaaaagatattagtccttacgtctgtctctctacagc\n\
-ttattgatgaggattgaacatggacatatagctccccctcaaaagcagatgctacctctt\n\
-tattccattctcgaacatttgccgaacttaatttcgacaaacctgaggtcacgtcttaat\n\
-ttatcggtaacgtcacgtccctttgagactggataaatatattaccaggggccaacgagc\n\
-aattgttggaggcgcttctataatacaaggtgtcttgtcaaagaaagacggcgtgcgtct\n\
-cgtgcaactcacttaaccaatattaatgtgaaacccccctctctcacatcttatgcggtg\n\
-tactgccctggtacatttcctgtacaggactccaacagtgtagattcctaagatagctgt\n\
-tggagttgcctcacgccagatcgaaaaactgaataaactagtgagctgagctgcagaaat\n\
-accgcttaattacttatgactagttcaaagggacctacgtgatgtcagacattgcaagga\n\
-agaaattaggtttgtgcgtcattttggctggactagcactccttacttcccctactattc\n\
-aaatgtcgtaaacagcatgagacaggatcgtgctgacatttaaggtctattgggaacgag\n\
-gctacctttggtcgcgcgctcgcgttctccgaatgaccgaaatgcatgagcacagtatgc\n\
-aattgcttatagatctaaggtctggtcgttgaaaccaagcacgtaggcctgggaaatcag\n\
-ttcttcctcagcaactacacaaaagcgtccaagcattagtacttgtagtaaatgtccgaa\n\
-cctatgcgctcatttgaaagtcaaaaaatatttttaagcagtaggcacctaacccgattc\n\
-ctctacttagtagctttctttgattctcagaattgactgcaatatcactgcacaattctg\n\
-tgccattactagacttctctgtattaacgtctcatcttactaacactcgcctaggacaca\n\
-tctgagagtgaagtatttcaatacatttactgaaatcttcagttctaaaatccccgaata\n\
-aggctcttatcggtttggccaacacaagaaaaaaacttcttgcaccactcaccttcatac\n\
-gcaggagcctggggaacttagtaataactatttcggcagacaaagcttataacaagttgc\n\
-cggcgcgtataatatttaaaagaccccttgagctgctcaattaaaacgctcacctggtat\n\
-aggctattagatagtgccgtcttagtaaggggcgggaattatcggataaactgatatttt\n\
-gataaaataaccgacttgttcacgacataagtcactaaggagattttatctttctccaaa\n\
-gtatatcttccttggataatttcaaagcgctgcaatttaagttctgttactagtttatgc\n\
-tgctgggaggtgaccggaaggcgtagtaatctagaggcaaattataagaagttcatcata\n\
-tcattttcgactacaaaaacaaggtgttgtatgccggcgcattgtgtaaactggacgagt\n\
-accctagatggaaaattatacgttaagccaagatttcgatgtaatgataattacctacac\n\
-atttttgctatccataggaacaagagctgttctataggctcgtggcatacgaacatttgc\n\
-tgccgctatgaatattggaagctcttcaactacagactctattcttaattgccgtcgaaa\n\
-atgggccgaatcggctattattaatactcggtttttccgaggggattgttgtcgacagtc\n\
-gtaattattattaatattgatgttggtgaggtcatttaaatacaaccttgcagacaatga\n\
-ataagggatccaatctctcatactccttttacaattgctcatgcccctatgcaaacctta\n\
-tgccgccacacctccgcaactctctcttctgaactgtaagtagcttcattactggtttga\n\
-gactatactgaagctgatgacattctaaaatggctattttcgaatgtgattcataatgtt\n\
-tatcgtttgggatggcagaatcacgttatttttgatatagcccgggtattctattgtata\n\
-gaacgtatgctacaagtcattccccgaagaagactagaagtaaacaacatgcgaccatcg\n\
-ttaagccacgcaaggctgtagctttatttcccgataacctatcttccataaatagcggac\n\
-agcaggatactgacgctcaacatcagtggttatggtctaatttttaacttttaataaggt\n\
-aacttcagcaggcatacacagtaactctttaatttataatcaaattagaagtctgacact\n\
-tcttatatttttctatcatccaacgcgatcgcccattagcttattgtgttactaataacg\n\
-tatctaaaccaatccttttcaagctactgcctatattgtcaatatatacaaacaacagga\n\
-tagtaggctgcttaaaaaatattgtcaaccgtgtacgctttacaatacccggaaatcaca\n\
-aactttgtagacaacgagtgaaatttatacactacgaagggccagcgtacaagacccatg\n\
-aattaggcgatatgtttattctgacatattggtttatccttaatctgtcgctgtaaaatg\n\
-aagccgcccccatccctgcgaattttttttcgaagattcacgactgaaatataaatacgt\n\
-ttggctatatttatgttggagggaggcaatagcctttactgttaaccgaagatttagcca\n\
-gtgagtgtgacactaaaacactggaataaatgcaggcgttcttctgggtaaaaggtttag\n\
-tcaatctcgcctataagttcatatagctctggatataattatctggcccatgcatttatc\n\
-atggcgcttggtgccctgtgtgaagccggcctctcatattgaaggtccgaagtattccat\n\
-gtacattaagatcactctctcattcatgcatcttggcttaacaaatctggttgtccaagc\n\
-tttccaggcacgtatggtacaaattcggatcgaatacttataaaaatgatatgttaaact\n\
-gtctaaaacgctcatctacaaagtaaagtgcactaaccaatagagtctcaagaccgtgta\n\
-atgctggtgcactgaatgtgtaatacggttagaagggattagttatgttacaaatccatt\n\
-gaaaacttaagaagcattgcgtgctcggagggtgcatcttttatcaagagactaacatta\n\
-ttttcaacgacgtacatgctttacaatagggtacttatcaaacgccgagaaacgcgccta\n\
-tagtgatgttatgattatgacccgatatccattggaccgaattttatgtaggttcccagc\n\
-gtactcgcgtaatatctcggtattgccataatgtaatacttgtcggtctctcccagatga\n\
-aaaagcgttacagagtatttcaatgaaaaacagcgcgcaacgtcaatacctttaggggta\n\
-acggccgctgatttcatatagatatacgataagttggtatagctctactaggtggcatcc\n\
-acaatcgttgcatttactatagctggttacaatcataatctataccgttccttacatact\n\
-accatagcgggatagcgtttttttgccgttgattgggtttaagaggatgtcagtctcatt\n\
-atatccgattcggtgggagagccgttgttttcaaatcgcacactttgtgacataatgtac\n\
-aagataacaaaactgatataagatataaactgtcaatatcaccttgacacttgaatcaaa\n\
-gtaaattaactcgcaaatataatttgactaattgggtgcagatttctcaattaataaaaa\n\
-aatggcaccggatgggcttacaagccccttatcattcacttgtatcatgatttccaagaa\n\
-caatagaatttgctagcaagtatgaacagagattcgaattgcatccacagtacgccggag\n\
-cgtttattttaatgtggatatgacgatgtactgttggcggcatttgctagtaaccggtcc\n\
-ttatttacgtagcgcacacgtaagcatgtctgggagaaatatggtggtacaatctcagag\n\
-aaagattacagtttggtttaaataggacttatcgggtcggaagtggaacttaataagcag\n\
-tacacaattgggcaacagacgtcttgcctattacaataggattacaatgcgttagatttc\n\
-agacacgttcgtgtttggctattcgtcaattccctaaatagttagacgatcaactattat\n\
-caaagtgattctttgttcatcctccattcatgtaacagatggcacactacgcataacgcc\n\
-gaggaattttaacgagatttaagagagcagttcgggcacaacccacttgactttataaca\n\
-gctcggcagcataaacggtaatatgtgacaaatttccaaacgttataagaacgtatgtgt\n\
-acttagaaaactaagtggttcatgttcaacagatgtgacgcagcaagcctaacttatcta\n\
-ttggttttgctataaaagaacaaagttacacagaatcctaagggcttgtttcacacttat\n\
-gcctagtgcttcaccatcttaaaatagcgaaaccggcacgaatcaaaccttaaaacaatg\n\
-cgcagatattggtgatggtgactccgggtatgataatggtaactgttgaccagcgcccac\n\
-ctcatcgaagtatagaaagtggttaggataaggatgagaccgaacttatttccggccata\n\
-actttagattttctacctagtacacaacatcagggcggacacgaaaccgccatcacatca\n\
-tataccaggtttaatttgcttaatgggggaagtgtcaacgaaccttcgaactttagcagg\n\
-catatggccattatatatggccccagagcagaatgctacagcagacaaaatttggattta\n\
-tgtagtttaatacctatcaaacttggtgtgaccatacttgtctaacgacagtgcacaaag\n\
-tgtaagttacaattattactactcagcagcttctgcaatgataaaatcttatcatacacg\n\
-tcacatatgataatatctacttagggggaacgggctccacaacctacatagtactcaata\n\
-cttacactattcgacaggcacaccaaacctgtacagtcccaaaagattgagtcaactttg\n\
-cagtactgcagatcacagtaatagcttagttagcgagtcaaaattagttttctacgagac\n\
-tgcacgaccgtgcaaatttccgatgtgttggctacaaatagcaacgtatgaatttgtttg\n\
-aagccacgtaaactgtacaaccttagagataagtctcaggctactaaaaacacgttgtgg\n\
-cactaacaggatcatggttgattcttacttattcggctgaccggcccaataagtaacctt\n\
-caactagaacagaataatcgggagtagtttaattcagtcaaggtgcaggtctcattgtaa\n\
-ctaacaagctctgtgtaaccaagttaaaatcgttttcttagcggattccctacttatgga\n\
-tttgagctcgtccacaatattcgatacaagaagtttgtggtccgtaacaacgaaatttta\n\
-attacgctgtgcagcctcatccaaggaattaatagaaggttgatggtaggctccgaacgc\n\
-tccatgattataatcaagtggactgtgcagtaaacgaggaaggtatcctgacgtcgtggt\n\
-gttcgtttttgttatttgtgccctatacgagtagataaaccatgaacagcacagtgtgaa\n\
-cccatggttgattttaggctaccttatttttaatttccgttacacagaaacgaattccac\n\
-aactaacatgccattaatttttcgatatcttataaaagatggtcgaaattcattcattta\n\
-ttttttttcggttctcgaaagtcaactaagctgtcgcgttttgtttctctttagaggtaa\n\
-aagtggctttgatctcctacgtttggatactagtcaaccattactccatttgatccgtga\n\
-gtatcacctgtctaacatccagcattatgactcctcggcgaagaaaagacacacttctta\n\
-gagtcgatgtgtattagctagggacacagttgtttaatacgatagtgagcccagggaggg\n\
-cagtgcgtcccccagtagatttattcagctagtgtaagtataagatatctcacccacgag\n\
-gttcaagtgatatgcagtcttagaataatacttatcctgaatttcgatattatgggtact\n\
-tcaataatccgctagcgctactttatgtctcgttggacagcaggacacatggcagtctta\n\
-aacactaaagacatcacctgaatgaatgtaatgggattacaagaatcaatgaggtattat\n\
-atacgacgtaggaaactctggatatatacagtaatctagttacgccatcgcacttcattc\n\
-ctctggaaacttagaagacatcagctgtacgtggaggaaccagacccccgtatgtagcca\n\
-aatagaaccaaagttgcttatacaaacacacccaatgacaatggaccgctggagttcgta\n\
-aactcggaacgtagtactgcacaaacccagcatttagcaataggagctacgtatgcaact\n\
-cccacgtggtaataccttcaagctatcaatatataggtgcctagctaatcgcattcgcaa\n\
-gcagtattcaagcttgtaaaccagtataataattacagaggctctatgaaacccaacttt\n\
-ccagctaaaagtcccaattaaatggttatttcgtacttttaaagtcgcccgttctgttat\n\
-tacgcgaattgattctactccaaaattaaacacaaattatcaaccgtttcatttatattt\n\
-gtcaatgcagctgtttaaaataaggctctactaaattataattaagacacttattaccag\n\
-atttctctagttaagtttgaaccagctcgactaccgcgaaagatacattcccttctctat\n\
-ttttcagttcatctatgggtcagagaagcattgaatttattctattcaccctcgtcgttc\n\
-acagcgaatcgtcagtgtgatcagtgtatgagaaatatcctaaaccgtttagtcagacca\n\
-cacgcttagaacaagtggtctaaaaagactgccctggaaggagtaagaagtatacagctg\n\
-atccggtgtatccttcagtcatctgccctatactaattacacgacgcaaggaaaaatagg\n\
-tttattttctaggcaaacccttcataggtgactccgatgtgttacgaatcatgcttgaga\n\
-atgtgctatcgttaccgacggataataacgatctccaatgaaccaaatgtagaatgtcta\n\
-ttgattacccttttactattcgacttagagataggagatagaacctcagtgtactttttt\n\
-agccgaatgggaatctttgggaggtgaatggccataaggtcgtaaatccaaccctcttaa\n\
-agtcttccatattatatcgttgttcgtggaatcgataacagatttgttgacccatagtaa\n\
-atgtatactagtttatgttgtaagtgtagattgttttccgattgccgtccaaactttatg\n\
-tcgtaattgtagaccagtaaagttgaccaaggtaagtgcccagcgatcctgcgagatcga\n\
-tcgccaatttttccagtcactgtaagtgtaggtttagataaagccgtatgagttatatca\n\
-taagggcctcggaaagcagcttcgaaccaaagttcccttataatagtagtttaactataa\n\
-aagtatatactggtctgtcgccctttcacgatttgttttaccggtttatgaagcgttacg\n\
-tcattagagcggctccaatttaaggttaacggcttccatgtgtagttgtatacaaggata\n\
-acttaaagtatctgttcagcgagctagttaagttatcctcgatagaacacaactcagagg\n\
-tcccaagatcgggtttgcaacttgctaatttattctcaaggcaaattgggaattatcgat\n\
-acctgtataccataaggtcgctcgatgtgatgcttatgtcttctggtgatcctaccttag\n\
-ttagtgctgattaacggaacattaatgtttatcgttttgagatttagccaattctctgat\n\
-tctaactcaagatgccttatctgacgtgctatgcagcccctaagtattttacattgtaat\n\
-aggacacgctcctttaaaactcgccaaaaggtcgttgtggttctctactggttaactata\n\
-taatttacagctttgttgagctagttcctctttggtttaagtcctcaatattagttggtt\n\
-cgagcgataagttggctagttaccttagtcactatattagatccgaatgttatgcttcat\n\
-ctgaagaccgccaccctccaaaatttcttttaagactcacttattgcaaggtgtaggtga\n\
-attcggctcgtttctcaagtggtgtatctgtacacgagtttccatattttcatcaacagc\n\
-caccgcacacttatgtcactctaggtattaaaagtcgctctacaaggggacgcaattaag\n\
-aaacagacatgctagtcaaaaataaacatagcgaggcaccactaattcggccgcttatca\n\
-atgggatgctctgcgcgagacgcgccagagctcagtagttagttcggacatacatttact\n\
-tcagatgatcaattagttttctacaaatgcttactctaccccgaaaaaagtcaccagact\n\
-cttacgtctctttagtatccttccgtcttatataaggtcagtcccccgtttcggtaccct\n\
-ggaatttactaagaataatgaaacagcccccaaggacgtacgtttacaaatgatagacca\n\
-gatcgcctagcttattccgacgcatgttgcatagaattgaaccaacggaatgtgagagta\n\
-actagatgagccgaccacagcacccgtttgcgtcgcagaatacgcctgatagttcggcca\n\
-cgaaatcatatgtcctttgagtattaagtatttgtaatgatcaatcgagctcaagcaagc\n\
-ttacacttcctcggatattcagggaacttagtgcctttgaaagatacgttgatcaacgaa\n\
-aaattgataatggctcatatggaatgcctacctcatagtgctgaattaacacagcactgc\n\
-ggacctaacttttcgaggtttcaagttcacgtctcaaaacctaataggctggaatatgta\n\
-gggatcctcggtgaatttgtgattgggtttgttgtagtactgaccaagtgaatattcttt\n\
-ttttctaaaagcagatctgctgccgggcactacgaaggagatctctgtgtatcattattg\n\
-cttcttgacatgatgactcttaaatcactgtgggtgtgcaaaacgatagcacaacccaat\n\
-tcgatagtacatattgttgatacttcgcactaaaccgttcatatttaaaggttgtgctcc\n\
-ttccttcgttaaatactggtgacttggtcctatctactattagctagacctctggggaac\n\
-cacgcccccgtaaaacctgtgcaagagagggggtcatacatcttagacatcgcgcctcca\n\
-ccagggaagcattgggtgattgaccaggtgtgtaacaaatatgattattcttatactaat\n\
-attagcaaagatgcataatgatttgtattaaatgtataattgaattgataagggtctttt\n\
-agtcagtgatagagtagtataaggtagacattagaactcttaaccggacgcagatttttc\n\
-ggtcttagtaagccaattagtcgacaaaacaaggtaagagcggttactagtagtacctat\n\
-aatgcactgaatcttcggtcgaagtatagttctaatgctatgcagattgtgacggcgaca\n\
-aatgttcagacttatatcatgaaacaagctcttgtaagtattgacaaatgaaaagattga\n\
-atatttttaaatacaaaatgcgcctacttattaggggaattaaccagattgaaggccaat\n\
-cctcacatgtaatgagataatagacgataaatgaaattcttgtaatagttgaactgctac\n\
-gtgatgggtattatatatgattgagatcctccaattgccgacgtcttgtcttgatgccca\n\
-aaagattgtcaacgaggagctccctcgcgtacctgtcgtccgtatcataaacgacgcgac\n\
-atgtacagcactccgaagtataagcaataataatgcgggtaatccagactagatcttttc\n\
-ggactcaatgcggtttcacggtaaacatgattaataccggagagtagtcgagcttatcag\n\
-cgatgcaagcgaattcattgtgccaggagatacgttgcagataaaaccggcaacgtatgt\n\
-caacaagttttggcgatctcgttgtttgtattcgacgaggcgcgggaacttcaagaacta\n\
-tcgtatattcaagtccattaccttttagtttcagactggtggagctgactaaagttatat\n\
-catcattttgtacactggtttagttaacgataatttcagatttaacatgaccagacgata\n\
-atcgctgtatatccagttggaatgtggtttgccagaaaggttaacttataatcaagcctc\n\
-tcttcagtcttgattcgtcgtatcccatccattgcgctatacctcagtgtatttggagct\n\
-gtagttataccgtgtgctaagatcagtagacatgacgagagcaatattatctaccttaca\n\
-agcatcaacggacgtctagtcggaacaaaagactctaaaactcgaacttcaggttaatat\n\
-actatagttctgtattcagcagttattcttatattcgatattatcttgcctattggatgt\n\
-ctgactttagtatattaatcatagtatctgccatgtaaaggtgccagtactaaatctgtt\n\
-tcacagtgcgaattataaacggttacaaccattaaagacaacaagaccctatagctttat\n\
-ttgaattttgtcaatgcgcaacttggagctcgcgatacatcccaattagtctatagggtc\n\
-gggacgattctacggcatttctggttataatgacaacatggattgtggcccgagaatcgc\n\
-tctttcattaattaagcaatcattacagtcttataagcgctacttccgagtggtagcagg\n\
-taactcgatataaggtcgcatgagccgaatagcttaaaaaacaggccaccgaacattgat\n\
-agagaataccgaccacagcgcaacctttgattactttcattaaattgtacggctcactcg\n\
-acatcaagcttaagattgcgataatgtgaactcaaatggatcagtactgaagaaccgtaa\n\
-cccacttcgcagaaagcgtacccagagaagatacgctgttacaatatacagggtgaaatt\n\
-attgcctgttcttcgtaaccatttcgccaaacttggttagaaatgatagccattcatgat\n\
-agaaataagctgaatgataccagtatctttaactatgtagtcagggggaagataacgatg\n\
-gtccatgtatgtttctgatatgtgacagtattggccgcgtaatttgctaacgaagctact\n\
-taatgcctttgagcttcatatagatttctttaatcaaaatcggcaaaaagatagtatgag\n\
-ctataatatatgctagtagagaactctggaccatcatctatatgaatactgattcgagcg\n\
-tgcaattactttagcctgcgtactactgactctacaaaacactctgagataagtttgtag\n\
-tcagtaagtcgctctctataaaccttttggatgaccattgtacagccacttatagatccc\n\
-aataaatagcacaggagacagagtttttcaatgctcgatcatttgccgatagtattttcg\n\
-tctaacctcagggcacctattatttgatacctaacctaacggccctttcacaatggagaa\n\
-atatatgacatcgggacaaacacaaatggtgggtggccaggagatatgacatggtggcgt\n\
-ctctaagaaacacggactccctctaggcaaactcacgtaaccaattttaatgtcaaacaa\n\
-aacgctcgaaaagattttgccgtgtaatgacctggtacattgactggtcaggaatacatc\n\
-actgtagttgccgtagtgtcctgttggtgttccatcaagacacatcgtataacgcaattt\n\
-acgacggacatcagatcaagttatacagattatttaagtatcacgtgtgcattgggacat\n\
-aagggatctcacacatgccttggaacatttttgctttgtgccgctttttcgctgcactac\n\
-caatccttacttaccagtatattcaaaggtcgttaacagaatgagaaaggttagggctct\n\
-aagttatcgtcgattgggatagacgagacatttgcgagcgccctccacggatacgaatct\n\
-cccatatcaatgtgaactggatgctatgcagtttagttcttacgtctcctagtggtaaaa\n\
-atcaaagtagcactcgcatagcagttattcagaacctaatacacaaaaccgtcaaacatt\n\
-ttctaattctaggtatgggccgatcataggagctaaggtgaaactcataaatgttttgtt\n\
-agatctagcatcctaaaaagatgcatatactgagtagctggcgtgcattctctcaattgt\n\
-atcctttttaactgaactagtcggtcccatttcgtgactgagatctattaaccgataaga\n\
-ttaataacactcgcattcgtatcagctcagagtgaagtttttcaataatttgactgatat\n\
-attaacttctaaaataaccctttaagcctcggatccgtttcccaatcacatcaaaaattc\n\
-ttattccaactatctacggattaacaacgtgcatggggatcgtagtaagaacttgttccg\n\
-atcactttgagtatatcaagttgacggcccggttattattgaatagaaacattcacctgc\n\
-taaattaaataccgcacatcggatacccgatttcagagggccgtcttactaagggcaggc\n\
-tttgttcggtttaactgagatgttcattattttacagtatgcttcaactaatatgtaacg\n\
-aaggacagtggatctgtctccatagtagatcttcagtcgtgaatttcataccgctcctat\n\
-ttaagttcgcgttcgagttgttgatcatggcacgtgaaagcaacccctagtattctagac\n\
-gaaaattttttctagttcatctgataatttgccaattcaaaaacaaccgctggtttcccg\n\
-gcgcattctctaaaatggaagtcgaacctagagccattatttgtcggtaacccatgagtt\n\
-ccttcttttcagaagttaatacactgtggtcctatacagaggaaaaacagcggttatata\n\
-cgatcgtggcataacaacattggatcaagatagcaatttggctacctattctaattctca\n\
-ctagattcggtattccactacaatatcggcagattaggattggatgaataatcggtgttt\n\
-aagtccggttgcgtctccaatctcctaatttttattaatattgatcttggtgacctattg\n\
-taaataaaaacttcaagactttgaataacggtgaaaagatagaagactcatttgaaaatg\n\
-gatcatccacagatccaaacattagcaagacactaatccccaactagctattctgatcgc\n\
-gatcgtgctgcagtactcctgtcacaatagtctgttcatgatctaattctttttgggctt\n\
-tgttcgatggtgattcagaatctttatccggtcgcttccctgtagctactttgtggggat\n\
-attgcccggggattatagggttgagatcgtttcctaaaagtatttaaaccaagtagactt\n\
-caactaaactacatcagaacatcgtgaagacaccatacgcggtacctttatttaccgata\n\
-acatttcttcaagaaataccggtaagcagcataatgaccctaaacagctcggggtatcgt\n\
-cgtagttttaaattttatttaggttactgctcaaggaataaaaactaactatttaattta\n\
-taataatattacaaggctcacactgattagatttgtctataagacttcgcgatcccccat\n\
-taccggattgtcttaagaataaactagataaaccatgcattttctagataaggcctttag\n\
-tctaattagatacaaaaaacacgatagttgcatccttaatttattgtgtcaaacctggaa\n\
-ccttttaattacccgcaaatcactttatgtcgagactacctctgaaatttattatctacc\n\
-taccgcatgaggacttgaaccatcttgtaggagttatgtttattagctaagattcgttta\n\
-tcctgtagcggtccatgtatattcaacaagcaaaaagcactcagaattgtttttagttga\n\
-gtcaagactgatatataaataagtttccctagttttttcgtggtgggacgatattgaatt\n\
-gaatcttaaccgaagagtttcccactctgtcgcacaataatacacgccaatatttccagc\n\
-cctgcttatgccttaatcggttactcaatctcccattgaagttcattttgatctgcatag\n\
-aagtttcgggcccagccttttttctgccaccttcctccaagctctgtagacgcactctaa\n\
-gattgatgctcacatgtattaattctacattaacataaatatataagtcatgcatcttcg\n\
-agtaaaatatctggttctccaacatgtcctggcacgtatcgttataatgcccatacatgt\n\
-agtattaaaatgattgggttaactggatattaagatcatcgaaattgtaaagtcaaatta\n\
-acaatactgtctcaagaccgtgtattcctcgtgctcggaagggctattacgcttacttcc\n\
-gttttggtatcttaatatgactttcaaaaattaagttgcagtgagtcctacctgcgtgca\n\
-tcggttagcaagagtataaaagttgtttaaacgaactacttgctttacaataccggtcgt\n\
-atatatcgccgtgaatccagaagattgtcttctttggattatcaaccgagatcctgtgga\n\
-ccgatgttttgggaccttcacagaggactccaggtagagctcgcttttgcattaatctaa\n\
-gaattgtacctctctaaaagatctaaaacagtgaatgtgtatttcatggaaaaacacaga\n\
-gaaacgtaaattactttaggccgaaaggcacatgagttattatacatatacgagatggtg\n\
-gtatacatcgaattcggggcatacactatagttgcattgtatttagctgctttaaataat\n\
-atgatattaccttccttacataagacattaccggcataccctggttttcaacttgtgggg\n\
-ctttttgacgatcgcactctcatttgatccgagtagggcggtgacccctgcttttcaaat\n\
-acaaaaatttcgctatgaaggtaatagattacttttcgctgttatgatagaaacggtaaa\n\
-tttaaaattgaaacttctagaaaagtaaagtaacgagaaatgattttgtgaataatgcgg\n\
-tcatgattgcgcaagtaagaaaaaaaggcaaaaggatgcgcggaatagaaacttatcagt\n\
-cacgggtatcttgatttcattcttcttgtcaattgccgacataggatgaaatcagattcc\n\
-aatgcaatacacagtaacccccacccttgattgtaatgtcgatttgaagttgtacgcgtc\n\
-gacgaagtggatagtatacgggccttttgtacggtgcgatcaactatgaatctcggcgag\n\
-ttagatggtcgtacaatctcacacatagaggtcacttgcctgtaatgacgaattttcggc\n\
-taggtactcgaactttattagaagtaaaaatgtgggcaaaagaaggattccattttacaa\n\
-gacgattacaatgagttacatgtctctcaacgtagtctttccctagtagtctttgaacta\n\
-tttaggtactccagaaaattttagcaaagggtttctgtgtgaatccgccattcatgttta\n\
-tgatggaacaataagaataacgccctcgtatgttatcgacagtgaagtcagcagttcggc\n\
-caaaaacatattcaatttagtacagatccccagaagttaagctaagtgctctaaaatggc\n\
-ctaaacggttatcaaagtaggtctaattactatactaacgggtgcatcgtaataactgct\n\
-gtcgatgcaacactatatgatagtgtcgttttgctatatatgtacaatgtgacaaagaag\n\
-ccttagcgattcttgcaaacttaggacttcggattctcaatcttaaatgtccgaaaacgc\n\
-aaagattcaaaaatttaatctatgagcagatatgcctgatggtgactacgcgtatgttaa\n\
-ggctaaatgttgacaaccgcacacataatcgaactattgatagtcgggagcataaccagg\n\
-tgaacgtactttgttcacgacatttattgacatgttctaaatacgtctcaaaatcacggc\n\
-gcactagaaaacgcaatcaaatcattgtcctggtttaagggccgtaatgccggtagtgtc\n\
-aaacttcatgagaactttagctggcttttggccagtatttagggaccaagagcactagcc\n\
-ttaagctgaatattttgccatttatctactgttataactttaaaacttggtggcaccaga\n\
-cttgtcgatacacacgcatcaatctgtaacgtaaaaggtttactaagaacaagcgtagga\n\
-attgagtttatattatatttaaactaaaagatgatattagcttctgagggcgatagggct\n\
-ccaaatcataaagaggaatatattattacacgattagaaacccacaacatacctcgaatc\n\
-gcccaaaagtttgacgaaacttggcagtactccacatctcagtaatacagttgggagagt\n\
-ctcaaatgttgttttattactcaatgaaccaccctcataatttcactgctgttccattaa\n\
-atttgcaaacgatcatttgctttgaagaaacgtaaaatcgacaaaattacagataagtag\n\
-atgcataataaaaaaaactgctcgctataacacgatcatcgtgcattcttacttaggagc\n\
-atcacccgcacaataacgtaccttaaactacaacactattagaccgagtactgtaattca\n\
-cgaaagctcaagctcgcattgtaaagaacttgctctctcgtaaaatgtgataatagtttg\n\
-cggagaggattcaattattttccattgcacctactccactagattcgataaaagaaggtg\n\
-gtcctcccttaaaaagaaatgttaagtaacatcggaaccataagcaaagcatgtaagtga\n\
-accgtcatccttccctaagaaacataaaggtttttaataatgtcgactgtgaactataac\n\
-tgcatcctttcctgacctactccggttccttgttgttatttctgaacgagaccagtagat\n\
-aaacaatgtaaaccacagtgggtaccaatggtgcatgtgacgctaccgttgttttaagtg\n\
-cccgtacaaacataagaagtcataatcttacttgaaattaattttgccttttattttttt\n\
-tcaggctcgaaattaatgatttgttttttttgaccttctagttacgctaatatgcggtcg\n\
-cctgtggtttctattgagtcctataacgggatgggatctaatacgtttggttactagtaa\n\
-acaaggtataaatttgataccggagtatcaactgtataacatcaagctttatgactcata\n\
-cgcgaagtaatgacacaaggctttcaggagatcgcgagtacagagccactaaggggtgta\n\
-ttacgatagtgacaccaccgagcgcactcactccccaagtagatttatgatcctacgcta\n\
-agtattagatatataaccaaagaggttctagtcagtgcaactcttagaataataattagc\n\
-cggttttgcctttttaggcctaatgcaatattcagctagcccttatgtatctcgcgttcc\n\
-acagcaccactcatggcacgcgtttaaactaatcaaatataatctatgaatgttatgcca\n\
-gtacttgaataaatcaggttttttataagtccttgcatactctcgttatatactgttaga\n\
-gtcttaccccatagaaattctttcatctgcaaacttagaagaattctcagctacggggag\n\
-cataaagtccccaggatgttgacaaatacaacaaatgtggcttatacaaacactccatat\n\
-gaaaatcgaaccctcgtggtagttttagccgaaccttgtacggataaatccctccatttt\n\
-ccaatagcagatacctatcctactacctcgtggtattaaattaaagcttgaaatatagag\n\
-ctgcatagcttatccaattcccaagcacgagtctaccgtcgtaaccacgatttgatttac\n\
-agacgctagagcaaacccatctttaaacatataagtaaaaattaaagggtgagtgcgtac\n\
-gtgtttactagcaacttcgcttattaagacaattgtttataagccataattaaaaacata\n\
-tgttcaacaggttcattgatatttgtaattgcacaggtttttaataaggatctacgtaag\n\
-tataatgaacaaactttttaccagagttatattctgtactttgaaaatgctcctctaccg\n\
-ccttagagactttcaattagattttttgcagttaatctatgcgtaagtgaaccatgcaag\n\
-ggatgcgattcaaccgcctcgtgctaaccctatcgtctgtctcataactgtaggtctaat\n\
-ataattttcagttttcgaacacataaccctttgaaaatctgctatttaatgtctcacctg\n\
-catgcactatcttctatactgctcagaacggctatacgtcactatgctccaagtgacgat\n\
-ttaaacgaagcaaggaataataggtttattttagtgcaaaacaattaagtgcggactacg\n\
-tgctctttacaataagccttgtgattgggctataggttaagtcccatattaacgatctcc\n\
-aatgtacaaaatcgacaatcgctttgcattacccggttactagtcgaattacagatagct\n\
-gttagatactcactctaattttggacaacaatcccaatcttggggtcgtctatcgcctga\n\
-agctcgtaaatccttccatcttaaacgattacatattatagacttgttcggggtagagat\n\
-atcacagttgtgcaaacattgtaaatcgatactagtttatgttggtagtctagttgcttt\n\
-taccattccccgaaaaacttgatctactatttcgacaacagtaaacttgaactaggtaag\n\
-tgaaaacagagaatgcctcatagtgccactatttgtccactatatgtaagtgtagcttta\n\
-cataatccactatgactgagatcattacggcctaggaaagcagcgtagaaaaaaagggcc\n\
-cggatattacgactgtaactataaaactagttactggtagcgcgccatgtatagatttgt\n\
-tttaccggttgtggttgcgttaacgaatttcagccgcgaaaattgatccgttaaccagtc\n\
-catctcgacttctataaaacgataaagtaaagttgatgttcagcctccttcttatggttg\n\
-catcgagagtacactactcagtgggaaatagatcggggttcctacttcagattgtattat\n\
-ctaggcaattgccgattgtgccatacctggataaaataagctacctacatgtgatgctta\n\
-tctattatcgtcatactaccttagggtgtcctgttgaacgctacattaatctttagccgt\n\
-ttgagatgttccaatggataggagtctaacgcatgatgaagtttaggaaggcagagcatc\n\
-ccactaagtatgtgacagtgtatttcgaaacgagacgttataaatagaaaaaaggtcctt\n\
-ctggttctattctgctgaactattgaatggaaagattggttgacctacgtactatttgct\n\
-tgaagtcatcaatttgacggggtgagagacatatggtgcatactttacggactctatatt\n\
-ttagatcagaagcttagcagtcttctctacaccccctcacgacataattgcttttaagaa\n\
-tctatgtttgattcctctacgggaattcggatccgttcgcatgtgcggtttatctaaacc\n\
-aggggacatatgttcagctaaagcatacgaacactttgctaactagacgtatgtatagta\n\
-gctataaatcccgacgatatttacaaaaagaaatgagactcaaatatatacatagcgacc\n\
-ctacacttattcgcaccctgatctaggcgatcctagcacccacacccgaaagtgagcact\n\
-agtgtcttccgtattaaatttactgcagttgagattttagttgtctactaaggattactc\n\
-taacccgtaataaggatcaagactcggtactagctttactatcattccctatgtgttttc\n\
-ctaactcacaagggtacgtaccagcctatgtaattacaataatgataaagacacaaagga\n\
-agtaactttacaaatgagtctccagttacactagcttagtccctcccatcttgctttgaa\n\
-gtctaaatacgcaatctctgaggatatacagcagaagaacactcataacgttggagtcca\n\
-agaattagactcatagggcccccaacatttaatatgtactgtgagtttgaaggtgttcta\n\
-ttgttaattcctgctcttgatacatgacacgtactccgtgtttaaggcttcggactgact\n\
-ttctttcataagttgagcaacgaaaatttcagaatcgataagttggattcactaactaat\n\
-acggctgattgaaaactccactccggacctatatggtcgacctttatacgtaaccgatat\n\
-aaaacttataggctggtatatcgagccttcctagcgcaatttcggatggggtttcttcta\n\
-ctactcaacaacggaatagtctttgtttagtaaaccagagctcaggacgcccaatacgta\n\
-ggagagcgctgtggagcatgtgtcattatggactggagcactcttaaatcactctgcgtg\n\
-tgctaaacgatagatcataacatgtcctgagtaaattttcttgatacgtcgcaatatacc\n\
-gttattagttaaacgttctcatccgtcatgcgtgaaatacggctgtcgtgctcagatata\n\
-ctattagcgactcatctcgcctaacacgcacacgtataaactcggaatgactgccgctct\n\
-tacatattagaaatacagactacaccacggaagcattgggtcattctcaaccgctgtata\n\
-aaagatgattagtcttataataagattaccaaagaggcagaatcatgggtagtaaatcta\n\
-ttattcaagtgattaccgtcgtgtaggcagggagtgaggacgagatggtactcaggacaa\n\
-atattaaccggacgaagtggtttacgtcgtactttcactattagtagtaaatacaaggta\n\
-acaccggggaatagtactaaatataatgatatctatcttcgggagaacgagtcgtctatt\n\
-gctttgaacattctcaaggcgtaaaatgtgctgacttatagcatgatacaaccgattgtt\n\
-acttttgtctattcaaaagattgaatagttttttatacaaaagccgcatacttatgacgg\n\
-ctagtatacagtttcatcccctagcatcaatgctatggacagtattgaacttataggaaa\n\
-ttcttctaatagggcaaatccgtcgtgatgcctattttttttcagtcacatcctcaaatg\n\
-gcactagtattgtcgggatcccattaacaggctcaaccacgagctcacgcgaggacatgt\n\
-agtccgtatctttaacgaagcgacagcgacagaactcccatggataaccaattataaggc\n\
-ccgtaatcctctagacatcgtttaccaataaatccgctttctccgtaatcatgttgaata\n\
-ccccagagtagtccagatgataaccgatgaaacacaagtctttctcaatgcacttacggt\n\
-gaacttattaccgccaacgtagctcatcaaggttgcgacatctagttgtgtgtttgcgac\n\
-gagcccagcgaacttcatcaactttcgtatattcaacgccttgtaattttactttaagac\n\
-gcctggtgatgtagattcttagataatcagtttgttatcggctgtactttaccataattt\n\
-cacaggtttcaggtcaagaagattatagctgtatatacagttccatgctcggtgcacaga\n\
-aacgtgatcggataataatcaatcgcttatgtcgtctttaggcgtatccaatacatgccc\n\
-cgataccgcagtgtatttcgacatgtaggtataccgtcgcatttgagctcgagtcaggac\n\
-gtcagctagattagattccttaatagaatataccgacctctagtccgaactaaactatag\n\
-ataacgccaacttcaggttaattgtctagtcgtctgtttgcagatgggattcttagatga\n\
-gtgagtatcggccatattggttcgagcactttagtttttgatgcataggatatgcaatgt\n\
-atagctgaaagtactttatctgtttcaaactcacattgattaaaccggtaaacctttaaa\n\
-gactacaagaaaatattcagtgagggcaattttgtcaatcacaatcttccagctagagat\n\
-acttcacaatttgtcttgaggctacgcaacattagacggattttcgcgttttattgaaat\n\
-aatcgaggggcccaagagtatccatagttcattttgtaagatttctttacaggcttatta\n\
-cagcttcttcagactcctacatgcttacgagttatatgctagcatgtgaacaatagatta\n\
-atatacaggaaaacgtacattgagagagatgaccctacacagcgcaaccgttgagtactt\n\
-tcattaaagggtaacgctctcgagacagcatccttaagatggccttattgtcaaatcatt\n\
-tgcagaagtacgcaagatccctaaccaacgtagaagaatccctacaaacacatgagacgc\n\
-ggtgaaaatagacagggtgttagtattcaatcttcggagtatcaatttcgccaatcttgg\n\
-tgagaaagcataccctttcttcagagaaagaagatcaatcataacactatctttaacgag\n\
-gtacgcacgcgcatcattacctgcctccatggatctttaggatagcggaaagtattggca\n\
-gcgtattgtgatttcgttcctactttatcaatttcacattcatatacatgtcttttatca\n\
-aaatcgccaataagataggatgagctatattagatgctagtagagttcgcgccaacatca\n\
-tcgataggaatactcaggacagcgtgataggacttttcaatccctaatactctctataat\n\
-tataactctctcttaagtttggaggcagtaacgcgctctatataatcagtttgctgcacc\n\
-attcttcagcctctgatacatacaaataaattccacagcagtaagagggtttaattgaga\n\
-catcttgggaacttaggattttactctaacatcaccgaaacgattattggataccgtacc\n\
-taaacgaactttctcaaggcagtaatataggacatccgcaataacacaaatgctgcctcc\n\
-ccaggagttatgtcttcctggaggctatatcttacacccactcactataggcaaactaaa\n\
-gtttaaatgttgattgtctaaaaaaaagatagataagagttggccggcgtagcacatgcg\n\
-aaagtgaatcgtaagctataattctctggacttgaagttctgtcctgttcctctgcaaga\n\
-aacaaacttcctttaaagctatttacgacgcacatctcagcaagttataaacatgttgga\n\
-agtttctagtcggaattcccaaagaacggatctatctaatgcattcctacatttttcctg\n\
-tctgccgatggtgccatcctattcaaagaatttcttaaaagtagattaaatgggactttt\n\
-aacaatgagtaaccttacgcctctaagggttcctcgagtgccatacaccagtcaggtccg\n\
-agccacatacacggagaacattctaacatagcattctcaactcgatcatttgcaggttac\n\
-ttctttcctatcctagtgctaaaaatcatacttgcaatcccatagcacggattaagaacc\n\
-taagaaacaattcagtaaaacatgttcgaattcttggtatgggaacatcattgcagctat\n\
-ggtctaacgcattaatgtttgggtacatcttccatcatataaacaggaagagtctgacga\n\
-cagggagtgcttgcgatcatgtctatcattgtgaaatcaaattgtagctcacatgtcgtc\n\
-tatgagagcgtgtatccgataagatttagaaaaatagaagtcgtataagatctcactgaa\n\
-cttttgaatgaatgtgaagcatatatgatctgctttaataaaactttatccataggatac\n\
-gtttccaaatcaattcaataattattagtcaaaatagataaggatgaacaacctgaaggc\n\
-cgatcggacgtagaaagtggtcccatcactttgagttgatattgttgaaccacacgttat\n\
-tatggttttcaaacagtctcaggatattgtatatacagataatccgataccagttgtctg\n\
-acgcccctcttacgtaccccaccctttgtgacgtttaaagcagttgttcagtattttaaa\n\
-ctaggcggcaactaatttggaaagaagcacagtggatatgtctaaattcttgttattcag\n\
-gcctgaatttaatacaccgcatagttaacttcgcggtagagttgttcatcatgcctcctc\n\
-taagctaccacttctatgatacaccaatagttgttctacggaatctgataattggccaag\n\
-tcataaacttccgctgcgttcaacccccttgctcgaatatccaactcgaaaagacagcct\n\
-tttggtgtccggaacaaatcagttacttcttttctgatgttaattctctgtggtcagata\n\
-cagaccaaaaactccgcggatttaccatcctccaagaacaaatttgcatcaacatagcat\n\
-tttggctacatattctaagtctcaatagtttaggttttcaactacattatcccaacatta\n\
-ggattggaggaataatagctgggtaagtccccttgcgtctacaatcgactattttttatg\n\
-aatatgcttctgccgcacctatggttattaaaaaagtcatgactttgaagaaccctgaaa\n\
-agatagatgaatcaggtgtaatggcagcagccaaagagcatataattagcaacactctaa\n\
-gaacattatagatatgatgatagcgatcgtcatgatgttatccggtcacaatagtagctt\n\
-catcagctaattcgttttgccagtggtgacttgcgctggaagaatcgttatacggtccct\n\
-tccctcttgatacggtgggggcttattcaaccgcgtggattgggttgtcatacttgcatt\n\
-aaacgatgtaaaccatctagtagtcaactatactaaatcacaaaatagtgatcaatacat\n\
-acccgcttcatggttttaaccatttaattgattaaagatattccgctaagaaccattatc\n\
-tacctaaactgatcgccgtatcctagtagtttgaaatttgatgtaccgtaatgatcaacg\n\
-aagtaaaacgttatattgtatgtagaataataggtcttggagctaaatgatgtgattggt\n\
-agtgaagacttacccttacaactttaccggtttctcggaagaatatactagagaatcaat\n\
-gcatgggctacataagcactttagtctaatgagataaaaaatacacgagtcttccatcat\n\
-gaattttttgtcgaaaaactcgaacctggtaatttaaaccatatatctttatgtcgtcaa\n\
-taactctcatatgttttatataacttcccaatcacgacttgtaactgcttgttcgactga\n\
-gctgtttgagctatgaggccgggatccggttgagctacatctatttgctacaagaaaaat\n\
-gaaagcacatttgttgggagttctggctacactcatagagaaataagtggcccgagtggg\n\
-tgcggcctgcctccatattcaagtgtatcttaaaccaagtggttccaacgctcgcgctaa\n\
-agaattaaagcctttatttcctccacggagtagcccgtaatccggttcgaaagagaccat\n\
-tgaagttaattttcatatccagtgaagtttaggcacaagcatgtgttctgccacatgcct\n\
-caaagcgctcttcaaccaagatatgattcatcctaacttcgatgaatgcgtctgtaacat\n\
-aaatatagaaggaatgattcggcgagttaattttcgccttctccaacatggcatccctac\n\
-gttcgttataaggaccatacatgtaggttttaaaggtttgcggttaatcgatatttacat\n\
-catagaaattctatagtcaaatttacaagactctagatactcactcgttgcagccggcta\n\
-ggaagcgctttgtaccttacttcccttttcgttgcgtaatatgaatttcatatagtaagt\n\
-tcaaggcactcatacctccgtgaagagggtagatagactattaaagttgtttaatagtac\n\
-gtattgatggaaatgacccgtaggagatttaccactcaatccacaagattcgctgctgtg\n\
-cattatcaaaacagtgcatgtcgaaacatgggttgggtccttcaaacacgaatccaggta\n\
-gagatacctttgcaattttt\n";
-
-dnaInput = dnaInput + dnaInput + dnaInput;
-
-var ilen, clen,
- seqs = [
- /agggtaaa|tttaccct/ig,
- /[cgt]gggtaaa|tttaccc[acg]/ig,
- /a[act]ggtaaa|tttacc[agt]t/ig,
- /ag[act]gtaaa|tttac[agt]ct/ig,
- /agg[act]taaa|ttta[agt]cct/ig,
- /aggg[acg]aaa|ttt[cgt]ccct/ig,
- /agggt[cgt]aa|tt[acg]accct/ig,
- /agggta[cgt]a|t[acg]taccct/ig,
- /agggtaa[cgt]|[acg]ttaccct/ig],
- subs = {
- B: '(c|g|t)', D: '(a|g|t)', H: '(a|c|t)', K: '(g|t)',
- M: '(a|c)', N: '(a|c|g|t)', R: '(a|g)', S: '(c|t)',
- V: '(a|c|g)', W: '(a|t)', Y: '(c|t)' }
-
-ilen = dnaInput.length;
-
-// There is no in-place substitution
-dnaInput = dnaInput.replace(/>.*\n|\n/g,"")
-clen = dnaInput.length
-
-var dnaOutputString;
-
-for(i in seqs)
- dnaOutputString += seqs[i].source + " " + (dnaInput.match(seqs[i]) || []).length + "\n";
- // match returns null if no matches, so replace with empty
-
-for(k in subs)
- dnaInput = dnaInput.replace(k, subs[k]) // FIXME: Would like this to be a global substitution in a future version of SunSpider.
- // search string, replacement string, flags
diff --git a/SunSpider/tests/string-base64.js b/SunSpider/tests/string-base64.js
deleted file mode 100644
index c9f3a7b..0000000
--- a/SunSpider/tests/string-base64.js
+++ /dev/null
@@ -1,135 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is Mozilla XML-RPC Client component.
- *
- * The Initial Developer of the Original Code is
- * Digital Creations 2, Inc.
- * Portions created by the Initial Developer are Copyright (C) 2000
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- * Martijn Pieters <mj@digicool.com> (original author)
- * Samuel Sieb <samuel@sieb.net>
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-// From: http://lxr.mozilla.org/mozilla/source/extensions/xml-rpc/src/nsXmlRpcClient.js#956
-
-/* Convert data (an array of integers) to a Base64 string. */
-var toBase64Table = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
-var base64Pad = '=';
-
-function toBase64(data) {
- var result = '';
- var length = data.length;
- var i;
- // Convert every three bytes to 4 ascii characters.
- for (i = 0; i < (length - 2); i += 3) {
- result += toBase64Table[data[i] >> 2];
- result += toBase64Table[((data[i] & 0x03) << 4) + (data[i+1] >> 4)];
- result += toBase64Table[((data[i+1] & 0x0f) << 2) + (data[i+2] >> 6)];
- result += toBase64Table[data[i+2] & 0x3f];
- }
-
- // Convert the remaining 1 or 2 bytes, pad out to 4 characters.
- if (length%3) {
- i = length - (length%3);
- result += toBase64Table[data[i] >> 2];
- if ((length%3) == 2) {
- result += toBase64Table[((data[i] & 0x03) << 4) + (data[i+1] >> 4)];
- result += toBase64Table[(data[i+1] & 0x0f) << 2];
- result += base64Pad;
- } else {
- result += toBase64Table[(data[i] & 0x03) << 4];
- result += base64Pad + base64Pad;
- }
- }
-
- return result;
-}
-
-/* Convert Base64 data to a string */
-var toBinaryTable = [
- -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
- -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
- -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,62, -1,-1,-1,63,
- 52,53,54,55, 56,57,58,59, 60,61,-1,-1, -1, 0,-1,-1,
- -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11,12,13,14,
- 15,16,17,18, 19,20,21,22, 23,24,25,-1, -1,-1,-1,-1,
- -1,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40,
- 41,42,43,44, 45,46,47,48, 49,50,51,-1, -1,-1,-1,-1
-];
-
-function base64ToString(data) {
- var result = '';
- var leftbits = 0; // number of bits decoded, but yet to be appended
- var leftdata = 0; // bits decoded, but yet to be appended
-
- // Convert one by one.
- for (var i = 0; i < data.length; i++) {
- var c = toBinaryTable[data.charCodeAt(i) & 0x7f];
- var padding = (data[i] == base64Pad);
- // Skip illegal characters and whitespace
- if (c == -1) continue;
-
- // Collect data into leftdata, update bitcount
- leftdata = (leftdata << 6) | c;
- leftbits += 6;
-
- // If we have 8 or more bits, append 8 bits to the result
- if (leftbits >= 8) {
- leftbits -= 8;
- // Append if not padding.
- if (!padding)
- result += String.fromCharCode((leftdata >> leftbits) & 0xff);
- leftdata &= (1 << leftbits) - 1;
- }
- }
-
- // If there are any bits left, the base64 string was corrupted
- if (leftbits)
- throw Components.Exception('Corrupted base64 string');
-
- return result;
-}
-
-var str = "";
-
-for ( var i = 0; i < 8192; i++ )
- str += String.fromCharCode( (25 * Math.random()) + 97 );
-
-for ( var i = 8192; i <= 16384; i *= 2 ) {
-
- var base64;
-
- base64 = toBase64(str);
- base64ToString(base64);
-
- // Double the string
- str += str;
-}
-
-toBinaryTable = null;
diff --git a/SunSpider/tests/string-fasta.js b/SunSpider/tests/string-fasta.js
deleted file mode 100644
index 14a81f3..0000000
--- a/SunSpider/tests/string-fasta.js
+++ /dev/null
@@ -1,85 +0,0 @@
-// The Great Computer Language Shootout
-// http://shootout.alioth.debian.org
-//
-// Contributed by Ian Osgood
-
-var last = 42, A = 3877, C = 29573, M = 139968;
-
-function rand(max) {
- last = (last * A + C) % M;
- return max * last / M;
-}
-
-var ALU =
- "GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGG" +
- "GAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGA" +
- "CCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAAT" +
- "ACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA" +
- "GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG" +
- "AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC" +
- "AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA";
-
-var IUB = {
- a:0.27, c:0.12, g:0.12, t:0.27,
- B:0.02, D:0.02, H:0.02, K:0.02,
- M:0.02, N:0.02, R:0.02, S:0.02,
- V:0.02, W:0.02, Y:0.02
-}
-
-var HomoSap = {
- a: 0.3029549426680,
- c: 0.1979883004921,
- g: 0.1975473066391,
- t: 0.3015094502008
-}
-
-function makeCumulative(table) {
- var last = null;
- for (var c in table) {
- if (last) table[c] += table[last];
- last = c;
- }
-}
-
-function fastaRepeat(n, seq) {
- var seqi = 0, lenOut = 60;
- while (n>0) {
- if (n<lenOut) lenOut = n;
- if (seqi + lenOut < seq.length) {
- ret = seq.substring(seqi, seqi+lenOut);
- seqi += lenOut;
- } else {
- var s = seq.substring(seqi);
- seqi = lenOut - s.length;
- ret = s + seq.substring(0, seqi);
- }
- n -= lenOut;
- }
-}
-
-function fastaRandom(n, table) {
- var line = new Array(60);
- makeCumulative(table);
- while (n>0) {
- if (n<line.length) line = new Array(n);
- for (var i=0; i<line.length; i++) {
- var r = rand(1);
- for (var c in table) {
- if (r < table[c]) {
- line[i] = c;
- break;
- }
- }
- }
- ret = line.join('');
- n -= line.length;
- }
-}
-
-var ret;
-
-var count = 7;
-ret = fastaRepeat(2*count*100000, ALU);
-ret = fastaRandom(3*count*1000, IUB);
-ret = fastaRandom(5*count*1000, HomoSap);
-
diff --git a/SunSpider/tests/string-tagcloud.js b/SunSpider/tests/string-tagcloud.js
deleted file mode 100644
index d3e5a1f..0000000
--- a/SunSpider/tests/string-tagcloud.js
+++ /dev/null
@@ -1,265 +0,0 @@
-
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- Portions from:
- json.js
- 2007-10-10
-
- Public Domain
-*/
-
-// This test parses a JSON string giving tag names and popularity, and
-// generates html markup for a "tagcloud" view.
-
-if (!Object.prototype.toJSONString) {
-
- Array.prototype.toJSONString = function (w) {
- var a = [], // The array holding the partial texts.
- i, // Loop counter.
- l = this.length,
- v; // The value to be stringified.
-
- for (i = 0; i < l; i += 1) {
- v = this[i];
- switch (typeof v) {
- case 'object':
-
- if (v && typeof v.toJSONString === 'function') {
- a.push(v.toJSONString(w));
- } else {
- a.push('null');
- }
- break;
-
- case 'string':
- case 'number':
- case 'boolean':
- a.push(v.toJSONString());
- break;
- default:
- a.push('null');
- }
- }
-
- return '[' + a.join(',') + ']';
- };
-
-
- Boolean.prototype.toJSONString = function () {
- return String(this);
- };
-
-
- Date.prototype.toJSONString = function () {
-
- function f(n) {
-
- return n < 10 ? '0' + n : n;
- }
-
- return '"' + this.getUTCFullYear() + '-' +
- f(this.getUTCMonth() + 1) + '-' +
- f(this.getUTCDate()) + 'T' +
- f(this.getUTCHours()) + ':' +
- f(this.getUTCMinutes()) + ':' +
- f(this.getUTCSeconds()) + 'Z"';
- };
-
-
- Number.prototype.toJSONString = function () {
-
- return isFinite(this) ? String(this) : 'null';
- };
-
-
- Object.prototype.toJSONString = function (w) {
- var a = [], // The array holding the partial texts.
- k, // The current key.
- i, // The loop counter.
- v; // The current value.
-
- if (w) {
- for (i = 0; i < w.length; i += 1) {
- k = w[i];
- if (typeof k === 'string') {
- v = this[k];
- switch (typeof v) {
- case 'object':
-
- if (v) {
- if (typeof v.toJSONString === 'function') {
- a.push(k.toJSONString() + ':' +
- v.toJSONString(w));
- }
- } else {
- a.push(k.toJSONString() + ':null');
- }
- break;
-
- case 'string':
- case 'number':
- case 'boolean':
- a.push(k.toJSONString() + ':' + v.toJSONString());
-
- }
- }
- }
- } else {
-
- for (k in this) {
- if (typeof k === 'string' &&
- Object.prototype.hasOwnProperty.apply(this, [k])) {
- v = this[k];
- switch (typeof v) {
- case 'object':
-
- if (v) {
- if (typeof v.toJSONString === 'function') {
- a.push(k.toJSONString() + ':' +
- v.toJSONString());
- }
- } else {
- a.push(k.toJSONString() + ':null');
- }
- break;
-
- case 'string':
- case 'number':
- case 'boolean':
- a.push(k.toJSONString() + ':' + v.toJSONString());
-
- }
- }
- }
- }
-
- return '{' + a.join(',') + '}';
- };
-
-
- (function (s) {
-
- var m = {
- '\b': '\\b',
- '\t': '\\t',
- '\n': '\\n',
- '\f': '\\f',
- '\r': '\\r',
- '"' : '\\"',
- '\\': '\\\\'
- };
-
-
- s.parseJSON = function (filter) {
- var j;
-
- function walk(k, v) {
- var i, n;
- if (v && typeof v === 'object') {
- for (i in v) {
- if (Object.prototype.hasOwnProperty.apply(v, [i])) {
- n = walk(i, v[i]);
- if (n !== undefined) {
- v[i] = n;
- }
- }
- }
- }
- return filter(k, v);
- }
-
- if (/^[\],:{}\s]*$/.test(this.replace(/\\./g, '@').
- replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(:?[eE][+\-]?\d+)?/g, ']').
- replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
-
- j = eval('(' + this + ')');
-
- return typeof filter === 'function' ? walk('', j) : j;
- }
-
- throw new SyntaxError('parseJSON');
- };
-
-
- s.toJSONString = function () {
-
- if (/["\\\x00-\x1f]/.test(this)) {
- return '"' + this.replace(/[\x00-\x1f\\"]/g, function (a) {
- var c = m[a];
- if (c) {
- return c;
- }
- c = a.charCodeAt();
- return '\\u00' + Math.floor(c / 16).toString(16) +
- (c % 16).toString(16);
- }) + '"';
- }
- return '"' + this + '"';
- };
- })(String.prototype);
-}
-
-var tagInfoJSON = '[\n {\n \"tag\": "titillation",\n \"popularity\": 4294967296\n },\n {\n \"tag\": "foamless",\n \"popularity\": 1257718401\n },\n {\n \"tag\": "snarler",\n \"popularity\": 613166183\n },\n {\n \"tag\": "multangularness",\n \"popularity\": 368304452\n },\n {\n \"tag\": "Fesapo unventurous",\n \"popularity\": 248026512\n },\n {\n \"tag\": "esthesioblast",\n \"popularity\": 179556755\n },\n {\n \"tag\": "echeneidoid",\n \"popularity\": 136641578\n },\n {\n \"tag\": "embryoctony",\n \"popularity\": 107852576\n },\n {\n \"tag\": "undilatory",\n \"popularity\": 87537981\n },\n {\n \"tag\": "predisregard",\n \"popularity\": 72630939\n },\n {\n \"tag\": "allergenic",\n \"popularity\": 61345190\n },\n {\n \"tag\": "uncloudy",\n \"popularity\": 52580571\n },\n {\n \"tag\": "unforeseeably",\n \"popularity\": 45628109\n },\n {\n \"tag\": "sturniform",\n \"popularity\": 40013489\n },\n {\n \"tag\": "anesthetize",\n \"popularity\": 35409226\n },\n {\n \"tag\": "ametabolia",\n \"popularity\": 31583050\n },\n {\n \"tag\": "angiopathy",\n \"popularity\": 28366350\n },\n {\n \"tag\": "sultanaship",\n \"popularity\": 25634218\n },\n {\n \"tag\": "Frenchwise",\n \"popularity\": 23292461\n },\n {\n \"tag\": "cerviconasal",\n \"popularity\": 21268909\n },\n {\n \"tag\": "mercurialness",\n \"popularity\": 19507481\n },\n {\n \"tag\": "glutelin venditate",\n \"popularity\": 17964042\n },\n {\n \"tag\": "acred overblack",\n \"popularity\": 16603454\n },\n {\n \"tag\": "Atik",\n \"popularity\": 15397451\n },\n {\n \"tag\": "puncturer",\n \"popularity\": 14323077\n },\n {\n \"tag\": "pukatea",\n \"popularity\": 13361525\n },\n {\n \"tag\": "suberize",\n \"popularity\": 12497261\n },\n {\n \"tag\": "Godfrey",\n \"popularity\": 11717365\n },\n {\n \"tag\": "tetraptote",\n \"popularity\": 11011011\n },\n {\n \"tag\": "lucidness",\n \"popularity\": 10369074\n },\n {\n \"tag\": "tartness",\n \"popularity\": 9783815\n },\n {\n \"tag\": "axfetch",\n \"popularity\": 9248634\n },\n {\n \"tag\": "preacquittal",\n \"popularity\": 8757877\n },\n {\n \"tag\": "matris",\n \"popularity\": 8306671\n },\n {\n \"tag\": "hyphenate",\n \"popularity\": 7890801\n },\n {\n \"tag\": "semifabulous",\n \"popularity\": 7506606\n },\n {\n \"tag\": "oppressiveness",\n \"popularity\": 7150890\n },\n {\n \"tag\": "Protococcales",\n \"popularity\": 6820856\n },\n {\n \"tag\": "unpreventive",\n \"popularity\": 6514045\n },\n {\n \"tag\": "Cordia",\n \"popularity\": 6228289\n },\n {\n \"tag\": "Wakamba leaflike",\n \"popularity\": 5961668\n },\n {\n \"tag\": "dacryoma",\n \"popularity\": 5712480\n },\n {\n \"tag\": "inguinal",\n \"popularity\": 5479211\n },\n {\n \"tag\": "responseless",\n \"popularity\": 5260507\n },\n {\n \"tag\": "supplementarily",\n \"popularity\": 5055158\n },\n {\n \"tag\": "emu",\n \"popularity\": 4862079\n },\n {\n \"tag\": "countermeet",\n \"popularity\": 4680292\n },\n {\n \"tag\": "purrer",\n \"popularity\": 4508918\n },\n {\n \"tag\": "Corallinaceae",\n \"popularity\": 4347162\n },\n {\n \"tag\": "speculum",\n \"popularity\": 4194304\n },\n {\n \"tag\": "crimpness",\n \"popularity\": 4049690\n },\n {\n \"tag\": "antidetonant",\n \"popularity\": 3912727\n },\n {\n \"tag\": "topeewallah",\n \"popularity\": 3782875\n },\n {\n \"tag\": "fidalgo ballant",\n \"popularity\": 3659640\n },\n {\n \"tag\": "utriculose",\n \"popularity\": 3542572\n },\n {\n \"tag\": "testata",\n \"popularity\": 3431259\n },\n {\n \"tag\": "beltmaking",\n \"popularity\": 3325322\n },\n {\n \"tag\": "necrotype",\n \"popularity\": 3224413\n },\n {\n \"tag\": "ovistic",\n \"popularity\": 3128215\n },\n {\n \"tag\": "swindlership",\n \"popularity\": 3036431\n },\n {\n \"tag\": "augustal",\n \"popularity\": 2948792\n },\n {\n \"tag\": "Titoist",\n \"popularity\": 2865047\n },\n {\n \"tag\": "trisoctahedral",\n \"popularity\": 2784963\n },\n {\n \"tag\": "sequestrator",\n \"popularity\": 2708327\n },\n {\n \"tag\": "sideburns",\n \"popularity\": 2634939\n },\n {\n \"tag\": "paraphrasia",\n \"popularity\": 2564616\n },\n {\n \"tag\": "graminology unbay",\n \"popularity\": 2497185\n },\n {\n \"tag\": "acaridomatium emargination",\n \"popularity\": 2432487\n },\n {\n \"tag\": "roofward",\n \"popularity\": 2370373\n },\n {\n \"tag\": "lauder",\n \"popularity\": 2310705\n },\n {\n \"tag\": "subjunctive",\n \"popularity\": 2253354\n },\n {\n \"tag\": "subelongate",\n \"popularity\": 2198199\n },\n {\n \"tag\": "guacimo",\n \"popularity\": 2145128\n },\n {\n \"tag\": "cockade",\n \"popularity\": 2094033\n },\n {\n \"tag\": "misgauge",\n \"popularity\": 2044818\n },\n {\n \"tag\": "unexpensive",\n \"popularity\": 1997388\n },\n {\n \"tag\": "chebel",\n \"popularity\": 1951657\n },\n {\n \"tag\": "unpursuing",\n \"popularity\": 1907543\n },\n {\n \"tag\": "kilobar",\n \"popularity\": 1864969\n },\n {\n \"tag\": "obsecration",\n \"popularity\": 1823863\n },\n {\n \"tag\": "nacarine",\n \"popularity\": 1784157\n },\n {\n \"tag\": "spirituosity",\n \"popularity\": 1745787\n },\n {\n \"tag\": "movableness deity",\n \"popularity\": 1708692\n },\n {\n \"tag\": "exostracism",\n \"popularity\": 1672816\n },\n {\n \"tag\": "archipterygium",\n \"popularity\": 1638104\n },\n {\n \"tag\": "monostrophic",\n \"popularity\": 1604506\n },\n {\n \"tag\": "gynecide",\n \"popularity\": 1571974\n },\n {\n \"tag\": "gladden",\n \"popularity\": 1540462\n },\n {\n \"tag\": "throughbred",\n \"popularity\": 1509927\n },\n {\n \"tag\": "groper",\n \"popularity\": 1480329\n },\n {\n \"tag\": "Xenosaurus",\n \"popularity\": 1451628\n },\n {\n \"tag\": "photoetcher",\n \"popularity\": 1423788\n },\n {\n \"tag\": "glucosid",\n \"popularity\": 1396775\n },\n {\n \"tag\": "Galtonian",\n \"popularity\": 1370555\n },\n {\n \"tag\": "mesosporic",\n \"popularity\": 1345097\n },\n {\n \"tag\": "theody",\n \"popularity\": 1320370\n },\n {\n \"tag\": "zaffer",\n \"popularity\": 1296348\n },\n {\n \"tag\": "probiology",\n \"popularity\": 1273003\n },\n {\n \"tag\": "rhizomic",\n \"popularity\": 1250308\n },\n {\n \"tag\": "superphosphate",\n \"popularity\": 1228240\n },\n {\n \"tag\": "Hippolytan",\n \"popularity\": 1206776\n },\n {\n \"tag\": "garget",\n \"popularity\": 1185892\n },\n {\n \"tag\": "diploplacula",\n \"popularity\": 1165568\n },\n {\n \"tag\": "orohydrographical",\n \"popularity\": 1145785\n },\n {\n \"tag\": "enhypostatize",\n \"popularity\": 1126521\n },\n {\n \"tag\": "polisman",\n \"popularity\": 1107759\n },\n {\n \"tag\": "acetometer",\n \"popularity\": 1089482\n },\n {\n \"tag\": "unsnatched",\n \"popularity\": 1071672\n },\n {\n \"tag\": "yabber",\n \"popularity\": 1054313\n },\n {\n \"tag\": "demiwolf",\n \"popularity\": 1037390\n },\n {\n \"tag\": "chromascope",\n \"popularity\": 1020888\n },\n {\n \"tag\": "seamanship",\n \"popularity\": 1004794\n },\n {\n \"tag\": "nonfenestrated",\n \"popularity\": 989092\n },\n {\n \"tag\": "hydrophytism",\n \"popularity\": 973771\n },\n {\n \"tag\": "dotter",\n \"popularity\": 958819\n },\n {\n \"tag\": "thermoperiodism",\n \"popularity\": 944222\n },\n {\n \"tag\": "unlawyerlike",\n \"popularity\": 929970\n },\n {\n \"tag\": "enantiomeride citywards",\n \"popularity\": 916052\n },\n {\n \"tag\": "unmetallurgical",\n \"popularity\": 902456\n },\n {\n \"tag\": "prickled",\n \"popularity\": 889174\n },\n {\n \"tag\": "strangerwise manioc",\n \"popularity\": 876195\n },\n {\n \"tag\": "incisorial",\n \"popularity\": 863510\n },\n {\n \"tag\": "irrationalize",\n \"popularity\": 851110\n },\n {\n \"tag\": "nasology",\n \"popularity\": 838987\n },\n {\n \"tag\": "fatuism",\n \"popularity\": 827131\n },\n {\n \"tag\": "Huk",\n \"popularity\": 815535\n },\n {\n \"tag\": "properispomenon",\n \"popularity\": 804192\n },\n {\n \"tag\": "unpummelled",\n \"popularity\": 793094\n },\n {\n \"tag\": "technographically",\n \"popularity\": 782233\n },\n {\n \"tag\": "underfurnish",\n \"popularity\": 771603\n },\n {\n \"tag\": "sinter",\n \"popularity\": 761198\n },\n {\n \"tag\": "lateroanterior",\n \"popularity\": 751010\n },\n {\n \"tag\": "nonpersonification",\n \"popularity\": 741034\n },\n {\n \"tag\": "Sitophilus",\n \"popularity\": 731264\n },\n {\n \"tag\": "unstudded overexerted",\n \"popularity\": 721694\n },\n {\n \"tag\": "tracheation",\n \"popularity\": 712318\n },\n {\n \"tag\": "thirteenth begloze",\n \"popularity\": 703131\n },\n {\n \"tag\": "bespice",\n \"popularity\": 694129\n },\n {\n \"tag\": "doppia",\n \"popularity\": 685305\n },\n {\n \"tag\": "unadorned",\n \"popularity\": 676656\n },\n {\n \"tag\": "dovelet engraff",\n \"popularity\": 668176\n },\n {\n \"tag\": "diphyozooid",\n \"popularity\": 659862\n },\n {\n \"tag\": "mure",\n \"popularity\": 651708\n },\n {\n \"tag\": "Tripitaka",\n \"popularity\": 643710\n },\n {\n \"tag\": "Billjim",\n \"popularity\": 635865\n },\n {\n \"tag\": "pyramidical",\n \"popularity\": 628169\n },\n {\n \"tag\": "circumlocutionist",\n \"popularity\": 620617\n },\n {\n \"tag\": "slapstick",\n \"popularity\": 613207\n },\n {\n \"tag\": "preobedience",\n \"popularity\": 605934\n },\n {\n \"tag\": "unfriarlike",\n \"popularity\": 598795\n },\n {\n \"tag\": "microchromosome",\n \"popularity\": 591786\n },\n {\n \"tag\": "Orphicism",\n \"popularity\": 584905\n },\n {\n \"tag\": "peel",\n \"popularity\": 578149\n },\n {\n \"tag\": "obediential",\n \"popularity\": 571514\n },\n {\n \"tag\": "Peripatidea",\n \"popularity\": 564997\n },\n {\n \"tag\": "undoubtful",\n \"popularity\": 558596\n },\n {\n \"tag\": "lodgeable",\n \"popularity\": 552307\n },\n {\n \"tag\": "pustulated woodchat",\n \"popularity\": 546129\n },\n {\n \"tag\": "antepast",\n \"popularity\": 540057\n },\n {\n \"tag\": "sagittoid matrimoniously",\n \"popularity\": 534091\n },\n {\n \"tag\": "Albizzia",\n \"popularity\": 528228\n },\n {\n \"tag\": "Elateridae unnewness",\n \"popularity\": 522464\n },\n {\n \"tag\": "convertingness",\n \"popularity\": 516798\n },\n {\n \"tag\": "Pelew",\n \"popularity\": 511228\n },\n {\n \"tag\": "recapitulation",\n \"popularity\": 505751\n },\n {\n \"tag\": "shack",\n \"popularity\": 500365\n },\n {\n \"tag\": "unmellowed",\n \"popularity\": 495069\n },\n {\n \"tag\": "pavis capering",\n \"popularity\": 489859\n },\n {\n \"tag\": "fanfare",\n \"popularity\": 484735\n },\n {\n \"tag\": "sole",\n \"popularity\": 479695\n },\n {\n \"tag\": "subarcuate",\n \"popularity\": 474735\n },\n {\n \"tag\": "multivious",\n \"popularity\": 469856\n },\n {\n \"tag\": "squandermania",\n \"popularity\": 465054\n },\n {\n \"tag\": "scintle",\n \"popularity\": 460329\n },\n {\n \"tag\": "hash chirognomic",\n \"popularity\": 455679\n },\n {\n \"tag\": "linseed",\n \"popularity\": 451101\n },\n {\n \"tag\": "redoubtable",\n \"popularity\": 446596\n },\n {\n \"tag\": "poachy reimpact",\n \"popularity\": 442160\n },\n {\n \"tag\": "limestone",\n \"popularity\": 437792\n },\n {\n \"tag\": "serranid",\n \"popularity\": 433492\n },\n {\n \"tag\": "pohna",\n \"popularity\": 429258\n },\n {\n \"tag\": "warwolf",\n \"popularity\": 425088\n },\n {\n \"tag\": "ruthenous",\n \"popularity\": 420981\n },\n {\n \"tag\": "dover",\n \"popularity\": 416935\n },\n {\n \"tag\": "deuteroalbumose",\n \"popularity\": 412950\n },\n {\n \"tag\": "pseudoprophetic",\n \"popularity\": 409025\n },\n {\n \"tag\": "dissoluteness",\n \"popularity\": 405157\n },\n {\n \"tag\": "preinvention",\n \"popularity\": 401347\n },\n {\n \"tag\": "swagbellied",\n \"popularity\": 397592\n },\n {\n \"tag\": "Ophidia",\n \"popularity\": 393892\n },\n {\n \"tag\": "equanimity",\n \"popularity\": 390245\n },\n {\n \"tag\": "troutful",\n \"popularity\": 386651\n },\n {\n \"tag\": "uke",\n \"popularity\": 383108\n },\n {\n \"tag\": "preacquaint",\n \"popularity\": 379616\n },\n {\n \"tag\": "shoq",\n \"popularity\": 376174\n },\n {\n \"tag\": "yox",\n \"popularity\": 372780\n },\n {\n \"tag\": "unelemental",\n \"popularity\": 369434\n },\n {\n \"tag\": "Yavapai",\n \"popularity\": 366134\n },\n {\n \"tag\": "joulean",\n \"popularity\": 362880\n },\n {\n \"tag\": "dracontine",\n \"popularity\": 359672\n },\n {\n \"tag\": "hardmouth",\n \"popularity\": 356507\n },\n {\n \"tag\": "sylvanize",\n \"popularity\": 353386\n },\n {\n \"tag\": "intraparenchymatous meadowbur",\n \"popularity\": 350308\n },\n {\n \"tag\": "uncharily",\n \"popularity\": 347271\n },\n {\n \"tag\": "redtab flexibly",\n \"popularity\": 344275\n },\n {\n \"tag\": "centervelic",\n \"popularity\": 341319\n },\n {\n \"tag\": "unravellable",\n \"popularity\": 338403\n },\n {\n \"tag\": "infortunately",\n \"popularity\": 335526\n },\n {\n \"tag\": "cannel",\n \"popularity\": 332687\n },\n {\n \"tag\": "oxyblepsia",\n \"popularity\": 329885\n },\n {\n \"tag\": "Damon",\n \"popularity\": 327120\n },\n {\n \"tag\": "etherin",\n \"popularity\": 324391\n },\n {\n \"tag\": "luminal",\n \"popularity\": 321697\n },\n {\n \"tag\": "interrogatorily presbyte",\n \"popularity\": 319038\n },\n {\n \"tag\": "hemiclastic",\n \"popularity\": 316414\n },\n {\n \"tag\": "poh flush",\n \"popularity\": 313823\n },\n {\n \"tag\": "Psoroptes",\n \"popularity\": 311265\n },\n {\n \"tag\": "dispirit",\n \"popularity\": 308740\n },\n {\n \"tag\": "nashgab",\n \"popularity\": 306246\n },\n {\n \"tag\": "Aphidiinae",\n \"popularity\": 303784\n },\n {\n \"tag\": "rhapsody nonconstruction",\n \"popularity\": 301353\n },\n {\n \"tag\": "Osmond",\n \"popularity\": 298952\n },\n {\n \"tag\": "Leonis",\n \"popularity\": 296581\n },\n {\n \"tag\": "Lemnian",\n \"popularity\": 294239\n },\n {\n \"tag\": "acetonic gnathonic",\n \"popularity\": 291926\n },\n {\n \"tag\": "surculus",\n \"popularity\": 289641\n },\n {\n \"tag\": "diagonally",\n \"popularity\": 287384\n },\n {\n \"tag\": "counterpenalty",\n \"popularity\": 285154\n },\n {\n \"tag\": "Eugenie",\n \"popularity\": 282952\n },\n {\n \"tag\": "hornbook",\n \"popularity\": 280776\n },\n {\n \"tag\": "miscoin",\n \"popularity\": 278626\n },\n {\n \"tag\": "admi",\n \"popularity\": 276501\n },\n {\n \"tag\": "Tarmac",\n \"popularity\": 274402\n },\n {\n \"tag\": "inexplicable",\n \"popularity\": 272328\n },\n {\n \"tag\": "rascallion",\n \"popularity\": 270278\n },\n {\n \"tag\": "dusterman",\n \"popularity\": 268252\n },\n {\n \"tag\": "osteostomous unhoroscopic",\n \"popularity\": 266250\n },\n {\n \"tag\": "spinibulbar",\n \"popularity\": 264271\n },\n {\n \"tag\": "phototelegraphically",\n \"popularity\": 262315\n },\n {\n \"tag\": "Manihot",\n \"popularity\": 260381\n },\n {\n \"tag\": "neighborhood",\n \"popularity\": 258470\n },\n {\n \"tag\": "Vincetoxicum",\n \"popularity\": 256581\n },\n {\n \"tag\": "khirka",\n \"popularity\": 254713\n },\n {\n \"tag\": "conscriptive",\n \"popularity\": 252866\n },\n {\n \"tag\": "synechthran",\n \"popularity\": 251040\n },\n {\n \"tag\": "Guttiferales",\n \"popularity\": 249235\n },\n {\n \"tag\": "roomful",\n \"popularity\": 247450\n },\n {\n \"tag\": "germinal",\n \"popularity\": 245685\n },\n {\n \"tag\": "untraitorous",\n \"popularity\": 243939\n },\n {\n \"tag\": "nondissenting",\n \"popularity\": 242213\n },\n {\n \"tag\": "amotion",\n \"popularity\": 240506\n },\n {\n \"tag\": "badious",\n \"popularity\": 238817\n },\n {\n \"tag\": "sumpit",\n \"popularity\": 237147\n },\n {\n \"tag\": "ectozoic",\n \"popularity\": 235496\n },\n {\n \"tag\": "elvet",\n \"popularity\": 233862\n },\n {\n \"tag\": "underclerk",\n \"popularity\": 232246\n },\n {\n \"tag\": "reticency",\n \"popularity\": 230647\n },\n {\n \"tag\": "neutroclusion",\n \"popularity\": 229065\n },\n {\n \"tag\": "unbelieving",\n \"popularity\": 227500\n },\n {\n \"tag\": "histogenetic",\n \"popularity\": 225952\n },\n {\n \"tag\": "dermamyiasis",\n \"popularity\": 224421\n },\n {\n \"tag\": "telenergy",\n \"popularity\": 222905\n },\n {\n \"tag\": "axiomatic",\n \"popularity\": 221406\n },\n {\n \"tag\": "undominoed",\n \"popularity\": 219922\n },\n {\n \"tag\": "periosteoma",\n \"popularity\": 218454\n },\n {\n \"tag\": "justiciaryship",\n \"popularity\": 217001\n },\n {\n \"tag\": "autoluminescence",\n \"popularity\": 215563\n },\n {\n \"tag\": "osmous",\n \"popularity\": 214140\n },\n {\n \"tag\": "borgh",\n \"popularity\": 212731\n },\n {\n \"tag\": "bedebt",\n \"popularity\": 211337\n },\n {\n \"tag\": "considerableness adenoidism",\n \"popularity\": 209957\n },\n {\n \"tag\": "sailorizing",\n \"popularity\": 208592\n },\n {\n \"tag\": "Montauk",\n \"popularity\": 207240\n },\n {\n \"tag\": "Bridget",\n \"popularity\": 205901\n },\n {\n \"tag\": "Gekkota",\n \"popularity\": 204577\n },\n {\n \"tag\": "subcorymbose",\n \"popularity\": 203265\n },\n {\n \"tag\": "undersap",\n \"popularity\": 201967\n },\n {\n \"tag\": "poikilothermic",\n \"popularity\": 200681\n },\n {\n \"tag\": "enneatical",\n \"popularity\": 199409\n },\n {\n \"tag\": "martinetism",\n \"popularity\": 198148\n },\n {\n \"tag\": "sustanedly",\n \"popularity\": 196901\n },\n {\n \"tag\": "declaration",\n \"popularity\": 195665\n },\n {\n \"tag\": "myringoplasty",\n \"popularity\": 194442\n },\n {\n \"tag\": "Ginkgo",\n \"popularity\": 193230\n },\n {\n \"tag\": "unrecurrent",\n \"popularity\": 192031\n },\n {\n \"tag\": "proprecedent",\n \"popularity\": 190843\n },\n {\n \"tag\": "roadman",\n \"popularity\": 189666\n },\n {\n \"tag\": "elemin",\n \"popularity\": 188501\n },\n {\n \"tag\": "maggot",\n \"popularity\": 187347\n },\n {\n \"tag\": "alitrunk",\n \"popularity\": 186204\n },\n {\n \"tag\": "introspection",\n \"popularity\": 185071\n },\n {\n \"tag\": "batiker",\n \"popularity\": 183950\n },\n {\n \"tag\": "backhatch oversettle",\n \"popularity\": 182839\n },\n {\n \"tag\": "thresherman",\n \"popularity\": 181738\n },\n {\n \"tag\": "protemperance",\n \"popularity\": 180648\n },\n {\n \"tag\": "undern",\n \"popularity\": 179568\n },\n {\n \"tag\": "tweeg",\n \"popularity\": 178498\n },\n {\n \"tag\": "crosspath",\n \"popularity\": 177438\n },\n {\n \"tag\": "Tangaridae",\n \"popularity\": 176388\n },\n {\n \"tag\": "scrutation",\n \"popularity\": 175348\n },\n {\n \"tag\": "piecemaker",\n \"popularity\": 174317\n },\n {\n \"tag\": "paster",\n \"popularity\": 173296\n },\n {\n \"tag\": "unpretendingness",\n \"popularity\": 172284\n },\n {\n \"tag\": "inframundane",\n \"popularity\": 171281\n },\n {\n \"tag\": "kiblah",\n \"popularity\": 170287\n },\n {\n \"tag\": "playwrighting",\n \"popularity\": 169302\n },\n {\n \"tag\": "gonepoiesis snowslip",\n \"popularity\": 168326\n },\n {\n \"tag\": "hoodwise",\n \"popularity\": 167359\n },\n {\n \"tag\": "postseason",\n \"popularity\": 166401\n },\n {\n \"tag\": "equivocality",\n \"popularity\": 165451\n },\n {\n \"tag\": "Opiliaceae nuclease",\n \"popularity\": 164509\n },\n {\n \"tag\": "sextipara",\n \"popularity\": 163576\n },\n {\n \"tag\": "weeper",\n \"popularity\": 162651\n },\n {\n \"tag\": "frambesia",\n \"popularity\": 161735\n },\n {\n \"tag\": "answerable",\n \"popularity\": 160826\n },\n {\n \"tag\": "Trichosporum",\n \"popularity\": 159925\n },\n {\n \"tag\": "cajuputol",\n \"popularity\": 159033\n },\n {\n \"tag\": "pleomorphous",\n \"popularity\": 158148\n },\n {\n \"tag\": "aculeolate",\n \"popularity\": 157270\n },\n {\n \"tag\": "wherever",\n \"popularity\": 156400\n },\n {\n \"tag\": "collapse",\n \"popularity\": 155538\n },\n {\n \"tag\": "porky",\n \"popularity\": 154683\n },\n {\n \"tag\": "perule",\n \"popularity\": 153836\n },\n {\n \"tag\": "Nevada",\n \"popularity\": 152996\n },\n {\n \"tag\": "conalbumin",\n \"popularity\": 152162\n },\n {\n \"tag\": "tsunami",\n \"popularity\": 151336\n },\n {\n \"tag\": "Gulf",\n \"popularity\": 150517\n },\n {\n \"tag\": "hertz",\n \"popularity\": 149705\n },\n {\n \"tag\": "limmock",\n \"popularity\": 148900\n },\n {\n \"tag\": "Tartarize",\n \"popularity\": 148101\n },\n {\n \"tag\": "entosphenoid",\n \"popularity\": 147310\n },\n {\n \"tag\": "ibis",\n \"popularity\": 146524\n },\n {\n \"tag\": "unyeaned",\n \"popularity\": 145746\n },\n {\n \"tag\": "tritural",\n \"popularity\": 144973\n },\n {\n \"tag\": "hundredary",\n \"popularity\": 144207\n },\n {\n \"tag\": "stolonlike",\n \"popularity\": 143448\n },\n {\n \"tag\": "chorister",\n \"popularity\": 142694\n },\n {\n \"tag\": "mismove",\n \"popularity\": 141947\n },\n {\n \"tag\": "Andine",\n \"popularity\": 141206\n },\n {\n \"tag\": "Annette proneur escribe",\n \"popularity\": 140471\n },\n {\n \"tag\": "exoperidium",\n \"popularity\": 139742\n },\n {\n \"tag\": "disedge",\n \"popularity\": 139019\n },\n {\n \"tag\": "hypochloruria",\n \"popularity\": 138302\n },\n {\n \"tag\": "prepupa",\n \"popularity\": 137590\n },\n {\n \"tag\": "assent",\n \"popularity\": 136884\n },\n {\n \"tag\": "hydrazobenzene",\n \"popularity\": 136184\n },\n {\n \"tag\": "emballonurid",\n \"popularity\": 135489\n },\n {\n \"tag\": "roselle",\n \"popularity\": 134800\n },\n {\n \"tag\": "unifiedly",\n \"popularity\": 134117\n },\n {\n \"tag\": "clang",\n \"popularity\": 133439\n },\n {\n \"tag\": "acetolytic",\n \"popularity\": 132766\n },\n {\n \"tag\": "cladodont",\n \"popularity\": 132098\n },\n {\n \"tag\": "recoast",\n \"popularity\": 131436\n },\n {\n \"tag\": "celebrated tydie Eocarboniferous",\n \"popularity\": 130779\n },\n {\n \"tag\": "superconsciousness",\n \"popularity\": 130127\n },\n {\n \"tag\": "soberness",\n \"popularity\": 129480\n },\n {\n \"tag\": "panoramist",\n \"popularity\": 128838\n },\n {\n \"tag\": "Orbitolina",\n \"popularity\": 128201\n },\n {\n \"tag\": "overlewd",\n \"popularity\": 127569\n },\n {\n \"tag\": "demiquaver",\n \"popularity\": 126942\n },\n {\n \"tag\": "kamelaukion",\n \"popularity\": 126319\n },\n {\n \"tag\": "flancard",\n \"popularity\": 125702\n },\n {\n \"tag\": "tricuspid",\n \"popularity\": 125089\n },\n {\n \"tag\": "bepelt",\n \"popularity\": 124480\n },\n {\n \"tag\": "decuplet",\n \"popularity\": 123877\n },\n {\n \"tag\": "Rockies",\n \"popularity\": 123278\n },\n {\n \"tag\": "unforgeability",\n \"popularity\": 122683\n },\n {\n \"tag\": "mocha",\n \"popularity\": 122093\n },\n {\n \"tag\": "scrunge",\n \"popularity\": 121507\n },\n {\n \"tag\": "delighter",\n \"popularity\": 120926\n },\n {\n \"tag\": "willey Microtinae",\n \"popularity\": 120349\n },\n {\n \"tag\": "unhuntable",\n \"popularity\": 119777\n },\n {\n \"tag\": "historically",\n \"popularity\": 119208\n },\n {\n \"tag\": "vicegerentship",\n \"popularity\": 118644\n },\n {\n \"tag\": "hemangiosarcoma",\n \"popularity\": 118084\n },\n {\n \"tag\": "harpago",\n \"popularity\": 117528\n },\n {\n \"tag\": "unionoid",\n \"popularity\": 116976\n },\n {\n \"tag\": "wiseman",\n \"popularity\": 116429\n },\n {\n \"tag\": "diclinism",\n \"popularity\": 115885\n },\n {\n \"tag\": "Maud",\n \"popularity\": 115345\n },\n {\n \"tag\": "scaphocephalism",\n \"popularity\": 114809\n },\n {\n \"tag\": "obtenebration",\n \"popularity\": 114277\n },\n {\n \"tag\": "cymar predreadnought",\n \"popularity\": 113749\n },\n {\n \"tag\": "discommend",\n \"popularity\": 113225\n },\n {\n \"tag\": "crude",\n \"popularity\": 112704\n },\n {\n \"tag\": "upflash",\n \"popularity\": 112187\n },\n {\n \"tag\": "saltimbank",\n \"popularity\": 111674\n },\n {\n \"tag\": "posthysterical",\n \"popularity\": 111165\n },\n {\n \"tag\": "trample",\n \"popularity\": 110659\n },\n {\n \"tag\": "ungirthed",\n \"popularity\": 110157\n },\n {\n \"tag\": "unshakable",\n \"popularity\": 109658\n },\n {\n \"tag\": "hepatocystic",\n \"popularity\": 109163\n },\n {\n \"tag\": "psammophyte",\n \"popularity\": 108671\n },\n {\n \"tag\": "millionfold",\n \"popularity\": 108183\n },\n {\n \"tag\": "outtaste",\n \"popularity\": 107698\n },\n {\n \"tag\": "poppycockish",\n \"popularity\": 107217\n },\n {\n \"tag\": "viduine",\n \"popularity\": 106739\n },\n {\n \"tag\": "pleasureman",\n \"popularity\": 106264\n },\n {\n \"tag\": "cholesterolemia",\n \"popularity\": 105792\n },\n {\n \"tag\": "hostlerwife",\n \"popularity\": 105324\n },\n {\n \"tag\": "figure undergrass",\n \"popularity\": 104859\n },\n {\n \"tag\": "bedrape",\n \"popularity\": 104398\n },\n {\n \"tag\": "nuttishness",\n \"popularity\": 103939\n },\n {\n \"tag\": "fow",\n \"popularity\": 103484\n },\n {\n \"tag\": "rachianesthesia",\n \"popularity\": 103031\n },\n {\n \"tag\": "recruitable",\n \"popularity\": 102582\n },\n {\n \"tag\": "semianatomical Oenotheraceae",\n \"popularity\": 102136\n },\n {\n \"tag\": "extracapsular",\n \"popularity\": 101693\n },\n {\n \"tag\": "unsigneted",\n \"popularity\": 101253\n },\n {\n \"tag\": "fissural",\n \"popularity\": 100816\n },\n {\n \"tag\": "ayous",\n \"popularity\": 100381\n },\n {\n \"tag\": "crestfallenness odontograph",\n \"popularity\": 99950\n },\n {\n \"tag\": "monopodium",\n \"popularity\": 99522\n },\n {\n \"tag\": "germfree",\n \"popularity\": 99096\n },\n {\n \"tag\": "dauphin",\n \"popularity\": 98673\n },\n {\n \"tag\": "nonagesimal",\n \"popularity\": 98254\n },\n {\n \"tag\": "waterchat",\n \"popularity\": 97836\n },\n {\n \"tag\": "Entelodon",\n \"popularity\": 97422\n },\n {\n \"tag\": "semischolastic",\n \"popularity\": 97010\n },\n {\n \"tag\": "somata",\n \"popularity\": 96602\n },\n {\n \"tag\": "expositorily",\n \"popularity\": 96195\n },\n {\n \"tag\": "bass",\n \"popularity\": 95792\n },\n {\n \"tag\": "calorimetry",\n \"popularity\": 95391\n },\n {\n \"tag\": "entireness",\n \"popularity\": 94993\n },\n {\n \"tag\": "ratline soppiness",\n \"popularity\": 94597\n },\n {\n \"tag\": "shor",\n \"popularity\": 94204\n },\n {\n \"tag\": "coprecipitation",\n \"popularity\": 93813\n },\n {\n \"tag\": "unblushingly",\n \"popularity\": 93425\n },\n {\n \"tag\": "macarize",\n \"popularity\": 93040\n },\n {\n \"tag\": "scruplesomeness",\n \"popularity\": 92657\n },\n {\n \"tag\": "offsaddle",\n \"popularity\": 92276\n },\n {\n \"tag\": "hypertragical",\n \"popularity\": 91898\n },\n {\n \"tag\": "uncassock loined",\n \"popularity\": 91522\n },\n {\n \"tag\": "interlobate",\n \"popularity\": 91149\n },\n {\n \"tag\": "releasor orrisroot stoloniferously",\n \"popularity\": 90778\n },\n {\n \"tag\": "elementoid",\n \"popularity\": 90410\n },\n {\n \"tag\": "Lentilla",\n \"popularity\": 90043\n },\n {\n \"tag\": "distressing",\n \"popularity\": 89679\n },\n {\n \"tag\": "hydrodrome",\n \"popularity\": 89318\n },\n {\n \"tag\": "Jeannette",\n \"popularity\": 88958\n },\n {\n \"tag\": "Kuli",\n \"popularity\": 88601\n },\n {\n \"tag\": "taxinomist",\n \"popularity\": 88246\n },\n {\n \"tag\": "southwestwardly",\n \"popularity\": 87894\n },\n {\n \"tag\": "polyparia",\n \"popularity\": 87543\n },\n {\n \"tag\": "exmeridian",\n \"popularity\": 87195\n },\n {\n \"tag\": "splenius regimentaled",\n \"popularity\": 86849\n },\n {\n \"tag\": "Sphaeropsidaceae",\n \"popularity\": 86505\n },\n {\n \"tag\": "unbegun",\n \"popularity\": 86163\n },\n {\n \"tag\": "something",\n \"popularity\": 85823\n },\n {\n \"tag\": "contaminable nonexpulsion",\n \"popularity\": 85486\n },\n {\n \"tag\": "douser",\n \"popularity\": 85150\n },\n {\n \"tag\": "prostrike",\n \"popularity\": 84817\n },\n {\n \"tag\": "worky",\n \"popularity\": 84485\n },\n {\n \"tag\": "folliful",\n \"popularity\": 84156\n },\n {\n \"tag\": "prioracy",\n \"popularity\": 83828\n },\n {\n \"tag\": "undermentioned",\n \"popularity\": 83503\n },\n {\n \"tag\": "Judaica",\n \"popularity\": 83179\n },\n {\n \"tag\": "multifarious",\n \"popularity\": 82858\n },\n {\n \"tag\": "poogye",\n \"popularity\": 82538\n },\n {\n \"tag\": "Sparganium",\n \"popularity\": 82221\n },\n {\n \"tag\": "thurrock",\n \"popularity\": 81905\n },\n {\n \"tag\": "outblush",\n \"popularity\": 81591\n },\n {\n \"tag\": "Strophanthus supraordination",\n \"popularity\": 81279\n },\n {\n \"tag\": "gingerroot",\n \"popularity\": 80969\n },\n {\n \"tag\": "unconscient",\n \"popularity\": 80661\n },\n {\n \"tag\": "unconstitutionally",\n \"popularity\": 80354\n },\n {\n \"tag\": "plaguily",\n \"popularity\": 80050\n },\n {\n \"tag\": "waterily equatorwards",\n \"popularity\": 79747\n },\n {\n \"tag\": "nondeposition",\n \"popularity\": 79446\n },\n {\n \"tag\": "dronishly",\n \"popularity\": 79147\n },\n {\n \"tag\": "gateado",\n \"popularity\": 78849\n },\n {\n \"tag\": "dislink",\n \"popularity\": 78553\n },\n {\n \"tag\": "Joceline",\n \"popularity\": 78259\n },\n {\n \"tag\": "amphiboliferous",\n \"popularity\": 77967\n },\n {\n \"tag\": "bushrope",\n \"popularity\": 77676\n },\n {\n \"tag\": "plumicorn sulphosalicylic",\n \"popularity\": 77387\n },\n {\n \"tag\": "nonefficiency",\n \"popularity\": 77100\n },\n {\n \"tag\": "hieroscopy",\n \"popularity\": 76815\n },\n {\n \"tag\": "causativeness",\n \"popularity\": 76531\n },\n {\n \"tag\": "swird paleoeremology",\n \"popularity\": 76249\n },\n {\n \"tag\": "camphoric",\n \"popularity\": 75968\n },\n {\n \"tag\": "retaining",\n \"popularity\": 75689\n },\n {\n \"tag\": "thyreoprotein",\n \"popularity\": 75411\n },\n {\n \"tag\": "carbona",\n \"popularity\": 75136\n },\n {\n \"tag\": "protectively",\n \"popularity\": 74861\n },\n {\n \"tag\": "mosasaur",\n \"popularity\": 74589\n },\n {\n \"tag\": "reciprocator",\n \"popularity\": 74317\n },\n {\n \"tag\": "detentive",\n \"popularity\": 74048\n },\n {\n \"tag\": "supravital",\n \"popularity\": 73780\n },\n {\n \"tag\": "Vespertilionidae",\n \"popularity\": 73513\n },\n {\n \"tag\": "parka",\n \"popularity\": 73248\n },\n {\n \"tag\": "pickaway",\n \"popularity\": 72984\n },\n {\n \"tag\": "oleaceous",\n \"popularity\": 72722\n },\n {\n \"tag\": "anticogitative",\n \"popularity\": 72462\n },\n {\n \"tag\": "woe",\n \"popularity\": 72203\n },\n {\n \"tag\": "skeuomorph",\n \"popularity\": 71945\n },\n {\n \"tag\": "helpmeet",\n \"popularity\": 71689\n },\n {\n \"tag\": "Hexactinellida brickmaking",\n \"popularity\": 71434\n },\n {\n \"tag\": "resink",\n \"popularity\": 71180\n },\n {\n \"tag\": "diluter",\n \"popularity\": 70928\n },\n {\n \"tag\": "micromicron",\n \"popularity\": 70677\n },\n {\n \"tag\": "parentage",\n \"popularity\": 70428\n },\n {\n \"tag\": "galactorrhoea",\n \"popularity\": 70180\n },\n {\n \"tag\": "gey",\n \"popularity\": 69934\n },\n {\n \"tag\": "gesticulatory",\n \"popularity\": 69689\n },\n {\n \"tag\": "wergil",\n \"popularity\": 69445\n },\n {\n \"tag\": "Lecanora",\n \"popularity\": 69202\n },\n {\n \"tag\": "malanders karst",\n \"popularity\": 68961\n },\n {\n \"tag\": "vibetoite",\n \"popularity\": 68721\n },\n {\n \"tag\": "unrequitedness",\n \"popularity\": 68483\n },\n {\n \"tag\": "outwash",\n \"popularity\": 68245\n },\n {\n \"tag\": "unsacred",\n \"popularity\": 68009\n },\n {\n \"tag\": "unabetted dividend",\n \"popularity\": 67775\n },\n {\n \"tag\": "untraveling",\n \"popularity\": 67541\n },\n {\n \"tag\": "thermobattery",\n \"popularity\": 67309\n },\n {\n \"tag\": "polypragmist",\n \"popularity\": 67078\n },\n {\n \"tag\": "irrefutableness",\n \"popularity\": 66848\n },\n {\n \"tag\": "remiges",\n \"popularity\": 66620\n },\n {\n \"tag\": "implode",\n \"popularity\": 66393\n },\n {\n \"tag\": "superfluousness",\n \"popularity\": 66166\n },\n {\n \"tag\": "croakily unalleviated",\n \"popularity\": 65942\n },\n {\n \"tag\": "edicule",\n \"popularity\": 65718\n },\n {\n \"tag\": "entophytous",\n \"popularity\": 65495\n },\n {\n \"tag\": "benefactorship Toryish",\n \"popularity\": 65274\n },\n {\n \"tag\": "pseudoamateurish",\n \"popularity\": 65054\n },\n {\n \"tag\": "flueless Iguanodontoidea snipnose",\n \"popularity\": 64835\n },\n {\n \"tag\": "zealotical Zamicrus interpole",\n \"popularity\": 64617\n },\n {\n \"tag\": "whereabout",\n \"popularity\": 64401\n },\n {\n \"tag\": "benzazide",\n \"popularity\": 64185\n },\n {\n \"tag\": "pokeweed",\n \"popularity\": 63971\n },\n {\n \"tag\": "calamitoid",\n \"popularity\": 63757\n },\n {\n \"tag\": "sporozoal",\n \"popularity\": 63545\n },\n {\n \"tag\": "physcioid Welshwoman",\n \"popularity\": 63334\n },\n {\n \"tag\": "wanting",\n \"popularity\": 63124\n },\n {\n \"tag\": "unencumbering",\n \"popularity\": 62915\n },\n {\n \"tag\": "Tupi",\n \"popularity\": 62707\n },\n {\n \"tag\": "potbank",\n \"popularity\": 62501\n },\n {\n \"tag\": "bulked",\n \"popularity\": 62295\n },\n {\n \"tag\": "uparise",\n \"popularity\": 62090\n },\n {\n \"tag\": "Sudra",\n \"popularity\": 61887\n },\n {\n \"tag\": "hyperscrupulosity",\n \"popularity\": 61684\n },\n {\n \"tag\": "subterraneously unmaid",\n \"popularity\": 61483\n },\n {\n \"tag\": "poisonousness",\n \"popularity\": 61282\n },\n {\n \"tag\": "phare",\n \"popularity\": 61083\n },\n {\n \"tag\": "dicynodont",\n \"popularity\": 60884\n },\n {\n \"tag\": "chewer",\n \"popularity\": 60687\n },\n {\n \"tag\": "uliginous",\n \"popularity\": 60490\n },\n {\n \"tag\": "tinman",\n \"popularity\": 60295\n },\n {\n \"tag\": "coconut",\n \"popularity\": 60100\n },\n {\n \"tag\": "phryganeoid",\n \"popularity\": 59907\n },\n {\n \"tag\": "bismillah",\n \"popularity\": 59714\n },\n {\n \"tag\": "tautomeric",\n \"popularity\": 59523\n },\n {\n \"tag\": "jerquer",\n \"popularity\": 59332\n },\n {\n \"tag\": "Dryopithecinae",\n \"popularity\": 59143\n },\n {\n \"tag\": "ghizite",\n \"popularity\": 58954\n },\n {\n \"tag\": "unliveable",\n \"popularity\": 58766\n },\n {\n \"tag\": "craftsmaster",\n \"popularity\": 58579\n },\n {\n \"tag\": "semiscenic",\n \"popularity\": 58394\n },\n {\n \"tag\": "danaid",\n \"popularity\": 58209\n },\n {\n \"tag\": "flawful",\n \"popularity\": 58025\n },\n {\n \"tag\": "risibleness",\n \"popularity\": 57841\n },\n {\n \"tag\": "Muscovite",\n \"popularity\": 57659\n },\n {\n \"tag\": "snaringly",\n \"popularity\": 57478\n },\n {\n \"tag\": "brilliantwise",\n \"popularity\": 57297\n },\n {\n \"tag\": "plebeity",\n \"popularity\": 57118\n },\n {\n \"tag\": "historicalness",\n \"popularity\": 56939\n },\n {\n \"tag\": "piecemeal",\n \"popularity\": 56761\n },\n {\n \"tag\": "maxillipedary",\n \"popularity\": 56584\n },\n {\n \"tag\": "Hypenantron",\n \"popularity\": 56408\n },\n {\n \"tag\": "quaintness avigate",\n \"popularity\": 56233\n },\n {\n \"tag\": "ave",\n \"popularity\": 56059\n },\n {\n \"tag\": "mediaevally",\n \"popularity\": 55885\n },\n {\n \"tag\": "brucite",\n \"popularity\": 55712\n },\n {\n \"tag\": "Schwendenerian",\n \"popularity\": 55541\n },\n {\n \"tag\": "julole",\n \"popularity\": 55370\n },\n {\n \"tag\": "palaeolith",\n \"popularity\": 55199\n },\n {\n \"tag\": "cotyledonary",\n \"popularity\": 55030\n },\n {\n \"tag\": "rond",\n \"popularity\": 54861\n },\n {\n \"tag\": "boomster tassoo",\n \"popularity\": 54694\n },\n {\n \"tag\": "cattishly",\n \"popularity\": 54527\n },\n {\n \"tag\": "tonguefence",\n \"popularity\": 54360\n },\n {\n \"tag\": "hexastylar triskele",\n \"popularity\": 54195\n },\n {\n \"tag\": "ariot",\n \"popularity\": 54030\n },\n {\n \"tag\": "intarsist",\n \"popularity\": 53867\n },\n {\n \"tag\": "Oscines",\n \"popularity\": 53704\n },\n {\n \"tag\": "Spaniolize",\n \"popularity\": 53541\n },\n {\n \"tag\": "smellfungus",\n \"popularity\": 53380\n },\n {\n \"tag\": "redisplay",\n \"popularity\": 53219\n },\n {\n \"tag\": "phosphene",\n \"popularity\": 53059\n },\n {\n \"tag\": "phycomycete",\n \"popularity\": 52900\n },\n {\n \"tag\": "prophetic",\n \"popularity\": 52741\n },\n {\n \"tag\": "overtrustful",\n \"popularity\": 52584\n },\n {\n \"tag\": "pinitol",\n \"popularity\": 52427\n },\n {\n \"tag\": "asthmatic",\n \"popularity\": 52270\n },\n {\n \"tag\": "convulsive",\n \"popularity\": 52115\n },\n {\n \"tag\": "draughtswoman",\n \"popularity\": 51960\n },\n {\n \"tag\": "unetymologizable",\n \"popularity\": 51806\n },\n {\n \"tag\": "centrarchoid",\n \"popularity\": 51652\n },\n {\n \"tag\": "mesioincisal",\n \"popularity\": 51500\n },\n {\n \"tag\": "transbaikal",\n \"popularity\": 51348\n },\n {\n \"tag\": "silveriness",\n \"popularity\": 51196\n },\n {\n \"tag\": "costotomy",\n \"popularity\": 51046\n },\n {\n \"tag\": "caracore",\n \"popularity\": 50896\n },\n {\n \"tag\": "depotentiation",\n \"popularity\": 50747\n },\n {\n \"tag\": "glossoepiglottidean",\n \"popularity\": 50598\n },\n {\n \"tag\": "upswell",\n \"popularity\": 50450\n },\n {\n \"tag\": "flecnodal",\n \"popularity\": 50303\n },\n {\n \"tag\": "coventrate",\n \"popularity\": 50157\n },\n {\n \"tag\": "duchesse",\n \"popularity\": 50011\n },\n {\n \"tag\": "excisemanship trophied",\n \"popularity\": 49866\n },\n {\n \"tag\": "cytinaceous",\n \"popularity\": 49721\n },\n {\n \"tag\": "assuringly",\n \"popularity\": 49577\n },\n {\n \"tag\": "unconducted upliftitis",\n \"popularity\": 49434\n },\n {\n \"tag\": "rachicentesis",\n \"popularity\": 49292\n },\n {\n \"tag\": "antiangular",\n \"popularity\": 49150\n },\n {\n \"tag\": "advisal",\n \"popularity\": 49008\n },\n {\n \"tag\": "birdcatcher",\n \"popularity\": 48868\n },\n {\n \"tag\": "secularistic",\n \"popularity\": 48728\n },\n {\n \"tag\": "grandeeism superinformal",\n \"popularity\": 48588\n },\n {\n \"tag\": "unapprehension",\n \"popularity\": 48449\n },\n {\n \"tag\": "excipulum",\n \"popularity\": 48311\n },\n {\n \"tag\": "decimole",\n \"popularity\": 48174\n },\n {\n \"tag\": "semidrachm",\n \"popularity\": 48037\n },\n {\n \"tag\": "uvulotome",\n \"popularity\": 47901\n },\n {\n \"tag\": "Lemaneaceae",\n \"popularity\": 47765\n },\n {\n \"tag\": "corrade",\n \"popularity\": 47630\n },\n {\n \"tag\": "Kuroshio",\n \"popularity\": 47495\n },\n {\n \"tag\": "Araliophyllum",\n \"popularity\": 47361\n },\n {\n \"tag\": "victoriousness cardiosphygmograph",\n \"popularity\": 47228\n },\n {\n \"tag\": "reinvent",\n \"popularity\": 47095\n },\n {\n \"tag\": "Macrotolagus",\n \"popularity\": 46963\n },\n {\n \"tag\": "strenuousness",\n \"popularity\": 46831\n },\n {\n \"tag\": "deviability",\n \"popularity\": 46700\n },\n {\n \"tag\": "phyllospondylous",\n \"popularity\": 46570\n },\n {\n \"tag\": "bisect rudderhole",\n \"popularity\": 46440\n },\n {\n \"tag\": "crownwork",\n \"popularity\": 46311\n },\n {\n \"tag\": "Ascalabota",\n \"popularity\": 46182\n },\n {\n \"tag\": "prostatomyomectomy",\n \"popularity\": 46054\n },\n {\n \"tag\": "neurosyphilis",\n \"popularity\": 45926\n },\n {\n \"tag\": "tabloid scraplet",\n \"popularity\": 45799\n },\n {\n \"tag\": "nonmedullated servility",\n \"popularity\": 45673\n },\n {\n \"tag\": "melopoeic practicalization",\n \"popularity\": 45547\n },\n {\n \"tag\": "nonrhythmic",\n \"popularity\": 45421\n },\n {\n \"tag\": "deplorer",\n \"popularity\": 45296\n },\n {\n \"tag\": "Ophion",\n \"popularity\": 45172\n },\n {\n \"tag\": "subprioress",\n \"popularity\": 45048\n },\n {\n \"tag\": "semiregular",\n \"popularity\": 44925\n },\n {\n \"tag\": "praelection",\n \"popularity\": 44802\n },\n {\n \"tag\": "discinct",\n \"popularity\": 44680\n },\n {\n \"tag\": "preplace",\n \"popularity\": 44558\n },\n {\n \"tag\": "paternoster",\n \"popularity\": 44437\n },\n {\n \"tag\": "suboccipital",\n \"popularity\": 44316\n },\n {\n \"tag\": "Teutophil",\n \"popularity\": 44196\n },\n {\n \"tag\": "tracheole",\n \"popularity\": 44076\n },\n {\n \"tag\": "subsmile",\n \"popularity\": 43957\n },\n {\n \"tag\": "nonapostatizing",\n \"popularity\": 43839\n },\n {\n \"tag\": "cleidotomy",\n \"popularity\": 43720\n },\n {\n \"tag\": "hingle",\n \"popularity\": 43603\n },\n {\n \"tag\": "jocoque",\n \"popularity\": 43486\n },\n {\n \"tag\": "trundler notidanian",\n \"popularity\": 43369\n },\n {\n \"tag\": "strangling misdaub",\n \"popularity\": 43253\n },\n {\n \"tag\": "noncancellable",\n \"popularity\": 43137\n },\n {\n \"tag\": "lavabo",\n \"popularity\": 43022\n },\n {\n \"tag\": "lanterloo",\n \"popularity\": 42907\n },\n {\n \"tag\": "uncitizenly",\n \"popularity\": 42793\n },\n {\n \"tag\": "autoturning",\n \"popularity\": 42679\n },\n {\n \"tag\": "Haganah",\n \"popularity\": 42566\n },\n {\n \"tag\": "Glecoma",\n \"popularity\": 42453\n },\n {\n \"tag\": "membered",\n \"popularity\": 42341\n },\n {\n \"tag\": "consuetudinal",\n \"popularity\": 42229\n },\n {\n \"tag\": "gatehouse",\n \"popularity\": 42117\n },\n {\n \"tag\": "tetherball",\n \"popularity\": 42006\n },\n {\n \"tag\": "counterrevolutionist numismatical",\n \"popularity\": 41896\n },\n {\n \"tag\": "pagehood plateiasmus",\n \"popularity\": 41786\n },\n {\n \"tag\": "pelterer",\n \"popularity\": 41676\n },\n {\n \"tag\": "splenemphraxis",\n \"popularity\": 41567\n },\n {\n \"tag\": "Crypturidae",\n \"popularity\": 41458\n },\n {\n \"tag\": "caboodle",\n \"popularity\": 41350\n },\n {\n \"tag\": "Filaria",\n \"popularity\": 41242\n },\n {\n \"tag\": "noninvincibility",\n \"popularity\": 41135\n },\n {\n \"tag\": "preadvertisement",\n \"popularity\": 41028\n },\n {\n \"tag\": "bathrobe",\n \"popularity\": 40921\n },\n {\n \"tag\": "nitrifier",\n \"popularity\": 40815\n },\n {\n \"tag\": "furthermore",\n \"popularity\": 40709\n },\n {\n \"tag\": "recrate",\n \"popularity\": 40604\n },\n {\n \"tag\": "inexist",\n \"popularity\": 40499\n },\n {\n \"tag\": "Mocoan",\n \"popularity\": 40395\n },\n {\n \"tag\": "forint",\n \"popularity\": 40291\n },\n {\n \"tag\": "cardiomyoliposis",\n \"popularity\": 40187\n },\n {\n \"tag\": "channeling",\n \"popularity\": 40084\n },\n {\n \"tag\": "quebrachine",\n \"popularity\": 39981\n },\n {\n \"tag\": "magistery",\n \"popularity\": 39879\n },\n {\n \"tag\": "koko",\n \"popularity\": 39777\n },\n {\n \"tag\": "nobilify",\n \"popularity\": 39676\n },\n {\n \"tag\": "articulate taprooted",\n \"popularity\": 39575\n },\n {\n \"tag\": "cardiotonic Nicaragua",\n \"popularity\": 39474\n },\n {\n \"tag\": "assertiveness",\n \"popularity\": 39374\n },\n {\n \"tag\": "springtail",\n \"popularity\": 39274\n },\n {\n \"tag\": "spontoon",\n \"popularity\": 39174\n },\n {\n \"tag\": "plesiobiosis",\n \"popularity\": 39075\n },\n {\n \"tag\": "rooinek",\n \"popularity\": 38976\n },\n {\n \"tag\": "hairif falsehood",\n \"popularity\": 38878\n },\n {\n \"tag\": "synodally",\n \"popularity\": 38780\n },\n {\n \"tag\": "biodynamics",\n \"popularity\": 38683\n },\n {\n \"tag\": "trickling",\n \"popularity\": 38585\n },\n {\n \"tag\": "oxfly daystar",\n \"popularity\": 38489\n },\n {\n \"tag\": "epicycloidal",\n \"popularity\": 38392\n },\n {\n \"tag\": "shorthand",\n \"popularity\": 38296\n },\n {\n \"tag\": "herpolhode",\n \"popularity\": 38201\n },\n {\n \"tag\": "polysynthesism",\n \"popularity\": 38105\n },\n {\n \"tag\": "cany",\n \"popularity\": 38010\n },\n {\n \"tag\": "sideage",\n \"popularity\": 37916\n },\n {\n \"tag\": "strainableness",\n \"popularity\": 37822\n },\n {\n \"tag\": "superformidable",\n \"popularity\": 37728\n },\n {\n \"tag\": "slendang",\n \"popularity\": 37634\n },\n {\n \"tag\": "impropriation",\n \"popularity\": 37541\n },\n {\n \"tag\": "ficklehearted",\n \"popularity\": 37449\n },\n {\n \"tag\": "wintrify",\n \"popularity\": 37356\n },\n {\n \"tag\": "geomorphogenist",\n \"popularity\": 37264\n },\n {\n \"tag\": "smuggleable",\n \"popularity\": 37173\n },\n {\n \"tag\": "delapsion",\n \"popularity\": 37081\n },\n {\n \"tag\": "projective",\n \"popularity\": 36990\n },\n {\n \"tag\": "unglue exfoliation",\n \"popularity\": 36900\n },\n {\n \"tag\": "Acerae",\n \"popularity\": 36810\n },\n {\n \"tag\": "unstaged",\n \"popularity\": 36720\n },\n {\n \"tag\": "ranal",\n \"popularity\": 36630\n },\n {\n \"tag\": "worrier",\n \"popularity\": 36541\n },\n {\n \"tag\": "unhid",\n \"popularity\": 36452\n },\n {\n \"tag\": "adequation",\n \"popularity\": 36363\n },\n {\n \"tag\": "strongylid Sokotri",\n \"popularity\": 36275\n },\n {\n \"tag\": "fumingly",\n \"popularity\": 36187\n },\n {\n \"tag\": "gynosporangium phaenogenetic",\n \"popularity\": 36100\n },\n {\n \"tag\": "uniunguiculate",\n \"popularity\": 36012\n },\n {\n \"tag\": "prudelike",\n \"popularity\": 35926\n },\n {\n \"tag\": "seminomata",\n \"popularity\": 35839\n },\n {\n \"tag\": "trinklet",\n \"popularity\": 35753\n },\n {\n \"tag\": "risorial",\n \"popularity\": 35667\n },\n {\n \"tag\": "pericardiocentesis",\n \"popularity\": 35581\n },\n {\n \"tag\": "filmist",\n \"popularity\": 35496\n },\n {\n \"tag\": "Nana",\n \"popularity\": 35411\n },\n {\n \"tag\": "cynipoid",\n \"popularity\": 35326\n },\n {\n \"tag\": "cteniform",\n \"popularity\": 35242\n },\n {\n \"tag\": "semiflex",\n \"popularity\": 35158\n },\n {\n \"tag\": "solstitially",\n \"popularity\": 35074\n },\n {\n \"tag\": "Algarsife",\n \"popularity\": 34991\n },\n {\n \"tag\": "noncriminal",\n \"popularity\": 34908\n },\n {\n \"tag\": "compassion",\n \"popularity\": 34825\n },\n {\n \"tag\": "Buddhic",\n \"popularity\": 34743\n },\n {\n \"tag\": "vellicative dactylically hotfoot",\n \"popularity\": 34661\n },\n {\n \"tag\": "chicory",\n \"popularity\": 34579\n },\n {\n \"tag\": "transperitoneally",\n \"popularity\": 34497\n },\n {\n \"tag\": "pennae",\n \"popularity\": 34416\n },\n {\n \"tag\": "Flamandize",\n \"popularity\": 34335\n },\n {\n \"tag\": "underviewer",\n \"popularity\": 34254\n },\n {\n \"tag\": "assoil",\n \"popularity\": 34174\n },\n {\n \"tag\": "saccharobacillus",\n \"popularity\": 34094\n },\n {\n \"tag\": "biacetylene",\n \"popularity\": 34014\n },\n {\n \"tag\": "mouchardism",\n \"popularity\": 33935\n },\n {\n \"tag\": "anisomeric",\n \"popularity\": 33856\n },\n {\n \"tag\": "digestive",\n \"popularity\": 33777\n },\n {\n \"tag\": "darlingly",\n \"popularity\": 33698\n },\n {\n \"tag\": "liman",\n \"popularity\": 33620\n },\n {\n \"tag\": "soldanrie",\n \"popularity\": 33542\n },\n {\n \"tag\": "sully",\n \"popularity\": 33464\n },\n {\n \"tag\": "brightsmith",\n \"popularity\": 33387\n },\n {\n \"tag\": "inwrap antiliturgist ureterocervical",\n \"popularity\": 33309\n },\n {\n \"tag\": "discommodity",\n \"popularity\": 33232\n },\n {\n \"tag\": "typical aggrandizer",\n \"popularity\": 33156\n },\n {\n \"tag\": "xenogeny",\n \"popularity\": 33079\n },\n {\n \"tag\": "uncountrified",\n \"popularity\": 33003\n },\n {\n \"tag\": "Podarge",\n \"popularity\": 32928\n },\n {\n \"tag\": "uninterviewed",\n \"popularity\": 32852\n },\n {\n \"tag\": "underprior",\n \"popularity\": 32777\n },\n {\n \"tag\": "leiomyomatous",\n \"popularity\": 32702\n },\n {\n \"tag\": "postdysenteric",\n \"popularity\": 32627\n },\n {\n \"tag\": "Fusicladium",\n \"popularity\": 32553\n },\n {\n \"tag\": "Dulcinea",\n \"popularity\": 32478\n },\n {\n \"tag\": "interspersion",\n \"popularity\": 32404\n },\n {\n \"tag\": "preobligate",\n \"popularity\": 32331\n },\n {\n \"tag\": "subaggregate",\n \"popularity\": 32257\n },\n {\n \"tag\": "grammarianism",\n \"popularity\": 32184\n },\n {\n \"tag\": "palikar",\n \"popularity\": 32111\n },\n {\n \"tag\": "facileness",\n \"popularity\": 32039\n },\n {\n \"tag\": "deuterofibrinose",\n \"popularity\": 31966\n },\n {\n \"tag\": "pseudesthesia",\n \"popularity\": 31894\n },\n {\n \"tag\": "sedimentary",\n \"popularity\": 31822\n },\n {\n \"tag\": "typewrite",\n \"popularity\": 31751\n },\n {\n \"tag\": "immemorable",\n \"popularity\": 31679\n },\n {\n \"tag\": "Myrtus",\n \"popularity\": 31608\n },\n {\n \"tag\": "hauchecornite",\n \"popularity\": 31537\n },\n {\n \"tag\": "galleylike",\n \"popularity\": 31467\n },\n {\n \"tag\": "thimber",\n \"popularity\": 31396\n },\n {\n \"tag\": "Hegelianism",\n \"popularity\": 31326\n },\n {\n \"tag\": "strig",\n \"popularity\": 31256\n },\n {\n \"tag\": "skyre",\n \"popularity\": 31187\n },\n {\n \"tag\": "eupepticism",\n \"popularity\": 31117\n },\n {\n \"tag\": "eponymism",\n \"popularity\": 31048\n },\n {\n \"tag\": "flunkeyhood",\n \"popularity\": 30979\n },\n {\n \"tag\": "Abama",\n \"popularity\": 30911\n },\n {\n \"tag\": "adiadochokinesis",\n \"popularity\": 30842\n },\n {\n \"tag\": "spendthrifty",\n \"popularity\": 30774\n },\n {\n \"tag\": "chalcedony",\n \"popularity\": 30706\n },\n {\n \"tag\": "authorism",\n \"popularity\": 30638\n },\n {\n \"tag\": "nasturtium",\n \"popularity\": 30571\n },\n {\n \"tag\": "Acanthocereus",\n \"popularity\": 30504\n },\n {\n \"tag\": "uncollapsible",\n \"popularity\": 30437\n },\n {\n \"tag\": "excursionist",\n \"popularity\": 30370\n },\n {\n \"tag\": "fogbow",\n \"popularity\": 30303\n },\n {\n \"tag\": "overlie",\n \"popularity\": 30237\n },\n {\n \"tag\": "velours",\n \"popularity\": 30171\n },\n {\n \"tag\": "zoodendria madrigal stagbush",\n \"popularity\": 30105\n },\n {\n \"tag\": "imi",\n \"popularity\": 30039\n },\n {\n \"tag\": "cojudge",\n \"popularity\": 29974\n },\n {\n \"tag\": "depurate argal",\n \"popularity\": 29909\n },\n {\n \"tag\": "unrecognition",\n \"popularity\": 29844\n },\n {\n \"tag\": "paunchful",\n \"popularity\": 29779\n },\n {\n \"tag\": "invalued",\n \"popularity\": 29714\n },\n {\n \"tag\": "probang",\n \"popularity\": 29650\n },\n {\n \"tag\": "chetvert",\n \"popularity\": 29586\n },\n {\n \"tag\": "enactable",\n \"popularity\": 29522\n },\n {\n \"tag\": "detoxicate adhibit",\n \"popularity\": 29458\n },\n {\n \"tag\": "kullaite",\n \"popularity\": 29395\n },\n {\n \"tag\": "undazzling",\n \"popularity\": 29332\n },\n {\n \"tag\": "excalation",\n \"popularity\": 29269\n },\n {\n \"tag\": "sievings",\n \"popularity\": 29206\n },\n {\n \"tag\": "disenthral",\n \"popularity\": 29143\n },\n {\n \"tag\": "disinterestedly",\n \"popularity\": 29081\n },\n {\n \"tag\": "stanner",\n \"popularity\": 29018\n },\n {\n \"tag\": "recapitulative",\n \"popularity\": 28956\n },\n {\n \"tag\": "objectivist",\n \"popularity\": 28895\n },\n {\n \"tag\": "hypermetropia",\n \"popularity\": 28833\n },\n {\n \"tag\": "incumbency",\n \"popularity\": 28772\n },\n {\n \"tag\": "protegee",\n \"popularity\": 28711\n },\n {\n \"tag\": "zealotic",\n \"popularity\": 28650\n },\n {\n \"tag\": "predebit",\n \"popularity\": 28589\n },\n {\n \"tag\": "cupolar",\n \"popularity\": 28528\n },\n {\n \"tag\": "unattributed",\n \"popularity\": 28468\n },\n {\n \"tag\": "louisine",\n \"popularity\": 28408\n },\n {\n \"tag\": "illustrate",\n \"popularity\": 28348\n },\n {\n \"tag\": "inofficiousness",\n \"popularity\": 28288\n },\n {\n \"tag\": "Americawards",\n \"popularity\": 28228\n },\n {\n \"tag\": "foreflap",\n \"popularity\": 28169\n },\n {\n \"tag\": "eruditeness",\n \"popularity\": 28110\n },\n {\n \"tag\": "copiopsia",\n \"popularity\": 28051\n },\n {\n \"tag\": "sporuliferous",\n \"popularity\": 27992\n },\n {\n \"tag\": "muttering",\n \"popularity\": 27934\n },\n {\n \"tag\": "prepsychology adrip",\n \"popularity\": 27875\n },\n {\n \"tag\": "unfriendly",\n \"popularity\": 27817\n },\n {\n \"tag\": "sulphanilic",\n \"popularity\": 27759\n },\n {\n \"tag\": "Coelococcus",\n \"popularity\": 27701\n },\n {\n \"tag\": "undoubtfulness",\n \"popularity\": 27643\n },\n {\n \"tag\": "flaringly",\n \"popularity\": 27586\n },\n {\n \"tag\": "unordain",\n \"popularity\": 27529\n },\n {\n \"tag\": "fratchety",\n \"popularity\": 27472\n },\n {\n \"tag\": "decadentism dolefully",\n \"popularity\": 27415\n },\n {\n \"tag\": "synthronus",\n \"popularity\": 27358\n },\n {\n \"tag\": "maiid",\n \"popularity\": 27301\n },\n {\n \"tag\": "rhinobyon",\n \"popularity\": 27245\n },\n {\n \"tag\": "Didynamia",\n \"popularity\": 27189\n },\n {\n \"tag\": "millionairedom",\n \"popularity\": 27133\n },\n {\n \"tag\": "mulierine",\n \"popularity\": 27077\n },\n {\n \"tag\": "Mayo",\n \"popularity\": 27021\n },\n {\n \"tag\": "perceivedness",\n \"popularity\": 26966\n },\n {\n \"tag\": "unadoration",\n \"popularity\": 26911\n },\n {\n \"tag\": "regraft",\n \"popularity\": 26856\n },\n {\n \"tag\": "witch",\n \"popularity\": 26801\n },\n {\n \"tag\": "ungrow",\n \"popularity\": 26746\n },\n {\n \"tag\": "glossopharyngeus",\n \"popularity\": 26691\n },\n {\n \"tag\": "unstirrable",\n \"popularity\": 26637\n },\n {\n \"tag\": "synodsman",\n \"popularity\": 26583\n },\n {\n \"tag\": "placentalian",\n \"popularity\": 26529\n },\n {\n \"tag\": "corpulently",\n \"popularity\": 26475\n },\n {\n \"tag\": "photochromoscope",\n \"popularity\": 26421\n },\n {\n \"tag\": "indusiate retinasphaltum chokestrap",\n \"popularity\": 26368\n },\n {\n \"tag\": "murdrum",\n \"popularity\": 26314\n },\n {\n \"tag\": "belatedness",\n \"popularity\": 26261\n },\n {\n \"tag\": "Cochin",\n \"popularity\": 26208\n },\n {\n \"tag\": "Leonist",\n \"popularity\": 26155\n },\n {\n \"tag\": "keeker confined",\n \"popularity\": 26102\n },\n {\n \"tag\": "unintellectual",\n \"popularity\": 26050\n },\n {\n \"tag\": "nymphaline bait",\n \"popularity\": 25997\n },\n {\n \"tag\": "sarcosporidiosis",\n \"popularity\": 25945\n },\n {\n \"tag\": "catawamptiously",\n \"popularity\": 25893\n },\n {\n \"tag\": "outshame",\n \"popularity\": 25841\n },\n {\n \"tag\": "animalism",\n \"popularity\": 25790\n },\n {\n \"tag\": "epithalamial",\n \"popularity\": 25738\n },\n {\n \"tag\": "ganner",\n \"popularity\": 25687\n },\n {\n \"tag\": "desilicify",\n \"popularity\": 25635\n },\n {\n \"tag\": "dandyism",\n \"popularity\": 25584\n },\n {\n \"tag\": "hyleg",\n \"popularity\": 25533\n },\n {\n \"tag\": "photophysical",\n \"popularity\": 25483\n },\n {\n \"tag\": "underload",\n \"popularity\": 25432\n },\n {\n \"tag\": "unintrusive",\n \"popularity\": 25382\n },\n {\n \"tag\": "succinamic",\n \"popularity\": 25331\n },\n {\n \"tag\": "matchy",\n \"popularity\": 25281\n },\n {\n \"tag\": "concordal",\n \"popularity\": 25231\n },\n {\n \"tag\": "exteriority",\n \"popularity\": 25181\n },\n {\n \"tag\": "sterculiad",\n \"popularity\": 25132\n },\n {\n \"tag\": "sulfoxylic",\n \"popularity\": 25082\n },\n {\n \"tag\": "oversubscription",\n \"popularity\": 25033\n },\n {\n \"tag\": "chiasmic",\n \"popularity\": 24984\n },\n {\n \"tag\": "pseudoparthenogenesis",\n \"popularity\": 24935\n },\n {\n \"tag\": "indorse",\n \"popularity\": 24886\n },\n {\n \"tag\": "Krishnaite",\n \"popularity\": 24837\n },\n {\n \"tag\": "calcinize",\n \"popularity\": 24788\n },\n {\n \"tag\": "rhodium",\n \"popularity\": 24740\n },\n {\n \"tag\": "tragopan",\n \"popularity\": 24692\n },\n {\n \"tag\": "overwhelmingly",\n \"popularity\": 24643\n },\n {\n \"tag\": "procidence accorporate",\n \"popularity\": 24595\n },\n {\n \"tag\": "polemize speelless",\n \"popularity\": 24548\n },\n {\n \"tag\": "radiocarpal goran",\n \"popularity\": 24500\n },\n {\n \"tag\": "counteroffer Pelodytes",\n \"popularity\": 24452\n },\n {\n \"tag\": "lionhearted",\n \"popularity\": 24405\n },\n {\n \"tag\": "paramastoid",\n \"popularity\": 24358\n },\n {\n \"tag\": "murine",\n \"popularity\": 24310\n },\n {\n \"tag\": "woodbined",\n \"popularity\": 24263\n },\n {\n \"tag\": "packthread",\n \"popularity\": 24217\n },\n {\n \"tag\": "citreous",\n \"popularity\": 24170\n },\n {\n \"tag\": "unfallaciously",\n \"popularity\": 24123\n },\n {\n \"tag\": "tentwork reincarnadine",\n \"popularity\": 24077\n },\n {\n \"tag\": "verminousness",\n \"popularity\": 24030\n },\n {\n \"tag\": "sillometer",\n \"popularity\": 23984\n },\n {\n \"tag\": "jointy",\n \"popularity\": 23938\n },\n {\n \"tag\": "streptolysin",\n \"popularity\": 23892\n },\n {\n \"tag\": "Florentinism",\n \"popularity\": 23847\n },\n {\n \"tag\": "monosomatous",\n \"popularity\": 23801\n },\n {\n \"tag\": "capsulociliary",\n \"popularity\": 23756\n },\n {\n \"tag\": "organum",\n \"popularity\": 23710\n },\n {\n \"tag\": "overtly",\n \"popularity\": 23665\n },\n {\n \"tag\": "ophthalmoscopical",\n \"popularity\": 23620\n },\n {\n \"tag\": "supposititiously",\n \"popularity\": 23575\n },\n {\n \"tag\": "radiochemistry",\n \"popularity\": 23530\n },\n {\n \"tag\": "flaxtail",\n \"popularity\": 23486\n },\n {\n \"tag\": "pretympanic",\n \"popularity\": 23441\n },\n {\n \"tag\": "auscultation",\n \"popularity\": 23397\n },\n {\n \"tag\": "hairdresser",\n \"popularity\": 23352\n },\n {\n \"tag\": "chaffless",\n \"popularity\": 23308\n },\n {\n \"tag\": "polioencephalitis",\n \"popularity\": 23264\n },\n {\n \"tag\": "axolotl",\n \"popularity\": 23220\n },\n {\n \"tag\": "smous",\n \"popularity\": 23177\n },\n {\n \"tag\": "morgen disenamour toothed",\n \"popularity\": 23133\n },\n {\n \"tag\": "chaiseless",\n \"popularity\": 23089\n },\n {\n \"tag\": "frugally",\n \"popularity\": 23046\n },\n {\n \"tag\": "combustive antievolutionist cinenegative",\n \"popularity\": 23003\n },\n {\n \"tag\": "malacolite",\n \"popularity\": 22960\n },\n {\n \"tag\": "borne",\n \"popularity\": 22917\n },\n {\n \"tag\": "mercaptole",\n \"popularity\": 22874\n },\n {\n \"tag\": "judicatory",\n \"popularity\": 22831\n },\n {\n \"tag\": "noctivagation",\n \"popularity\": 22789\n },\n {\n \"tag\": "synthete",\n \"popularity\": 22746\n },\n {\n \"tag\": "tomboyism",\n \"popularity\": 22704\n },\n {\n \"tag\": "serranoid",\n \"popularity\": 22661\n },\n {\n \"tag\": "impostorism",\n \"popularity\": 22619\n },\n {\n \"tag\": "flagellosis Talitha",\n \"popularity\": 22577\n },\n {\n \"tag\": "pseudoviscous",\n \"popularity\": 22535\n },\n {\n \"tag\": "Galleriidae",\n \"popularity\": 22494\n },\n {\n \"tag\": "undulation didelph Comintern",\n \"popularity\": 22452\n },\n {\n \"tag\": "triangulopyramidal",\n \"popularity\": 22411\n },\n {\n \"tag\": "middlings",\n \"popularity\": 22369\n },\n {\n \"tag\": "piperazin",\n \"popularity\": 22328\n },\n {\n \"tag\": "endostitis",\n \"popularity\": 22287\n },\n {\n \"tag\": "swordlike",\n \"popularity\": 22246\n },\n {\n \"tag\": "forthwith",\n \"popularity\": 22205\n },\n {\n \"tag\": "menaceful",\n \"popularity\": 22164\n },\n {\n \"tag\": "explantation defective",\n \"popularity\": 22123\n },\n {\n \"tag\": "arrear",\n \"popularity\": 22083\n },\n {\n \"tag\": "engraft",\n \"popularity\": 22042\n },\n {\n \"tag\": "revolunteer",\n \"popularity\": 22002\n },\n {\n \"tag\": "foliaceous",\n \"popularity\": 21962\n },\n {\n \"tag\": "pseudograph",\n \"popularity\": 21922\n },\n {\n \"tag\": "maenaite",\n \"popularity\": 21882\n },\n {\n \"tag\": "interfinger",\n \"popularity\": 21842\n },\n {\n \"tag\": "macroscopically",\n \"popularity\": 21802\n },\n {\n \"tag\": "bluewood",\n \"popularity\": 21762\n },\n {\n \"tag\": "chikara",\n \"popularity\": 21723\n },\n {\n \"tag\": "reprehension diazeuxis nickelous",\n \"popularity\": 21683\n },\n {\n \"tag\": "vacuation",\n \"popularity\": 21644\n },\n {\n \"tag\": "Sartish",\n \"popularity\": 21605\n },\n {\n \"tag\": "pseudogyny",\n \"popularity\": 21566\n },\n {\n \"tag\": "friedcake",\n \"popularity\": 21527\n },\n {\n \"tag\": "thraw",\n \"popularity\": 21488\n },\n {\n \"tag\": "bifid",\n \"popularity\": 21449\n },\n {\n \"tag\": "truthlessly",\n \"popularity\": 21411\n },\n {\n \"tag\": "lungy",\n \"popularity\": 21372\n },\n {\n \"tag\": "fluoborite",\n \"popularity\": 21334\n },\n {\n \"tag\": "anthropolithic",\n \"popularity\": 21295\n },\n {\n \"tag\": "coachee straw",\n \"popularity\": 21257\n },\n {\n \"tag\": "dehorner Grecize",\n \"popularity\": 21219\n },\n {\n \"tag\": "spondylopyosis",\n \"popularity\": 21181\n },\n {\n \"tag\": "institutionary",\n \"popularity\": 21143\n },\n {\n \"tag\": "agentry",\n \"popularity\": 21105\n },\n {\n \"tag\": "musing bietle",\n \"popularity\": 21068\n },\n {\n \"tag\": "cormophyte",\n \"popularity\": 21030\n },\n {\n \"tag\": "semielliptic",\n \"popularity\": 20993\n },\n {\n \"tag\": "ependytes",\n \"popularity\": 20955\n },\n {\n \"tag\": "coachmaster",\n \"popularity\": 20918\n },\n {\n \"tag\": "overexuberant",\n \"popularity\": 20881\n },\n {\n \"tag\": "selectable",\n \"popularity\": 20844\n },\n {\n \"tag\": "saclike",\n \"popularity\": 20807\n },\n {\n \"tag\": "mullion",\n \"popularity\": 20770\n },\n {\n \"tag\": "pantheonize prevalency",\n \"popularity\": 20733\n },\n {\n \"tag\": "trophosperm",\n \"popularity\": 20697\n },\n {\n \"tag\": "paraphrasist",\n \"popularity\": 20660\n },\n {\n \"tag\": "undercarry",\n \"popularity\": 20624\n },\n {\n \"tag\": "thallogenic",\n \"popularity\": 20587\n },\n {\n \"tag\": "bulgy forbid",\n \"popularity\": 20551\n },\n {\n \"tag\": "proliquor gratulatory",\n \"popularity\": 20515\n },\n {\n \"tag\": "booker",\n \"popularity\": 20479\n },\n {\n \"tag\": "wizen",\n \"popularity\": 20443\n },\n {\n \"tag\": "synchondrosially",\n \"popularity\": 20407\n },\n {\n \"tag\": "herbless",\n \"popularity\": 20371\n },\n {\n \"tag\": "arfvedsonite",\n \"popularity\": 20336\n },\n {\n \"tag\": "Neuroptera",\n \"popularity\": 20300\n },\n {\n \"tag\": "fingerstone",\n \"popularity\": 20265\n },\n {\n \"tag\": "Odontoglossae",\n \"popularity\": 20229\n },\n {\n \"tag\": "transmigrator",\n \"popularity\": 20194\n },\n {\n \"tag\": "Dehaites",\n \"popularity\": 20159\n },\n {\n \"tag\": "Molinist",\n \"popularity\": 20124\n },\n {\n \"tag\": "novelistic",\n \"popularity\": 20089\n },\n {\n \"tag\": "astelic",\n \"popularity\": 20054\n },\n {\n \"tag\": "pyelometry",\n \"popularity\": 20019\n },\n {\n \"tag\": "pigmentation",\n \"popularity\": 19984\n },\n {\n \"tag\": "epinaos",\n \"popularity\": 19950\n },\n {\n \"tag\": "outdare",\n \"popularity\": 19915\n },\n {\n \"tag\": "Funje philaristocracy",\n \"popularity\": 19881\n },\n {\n \"tag\": "keddah",\n \"popularity\": 19846\n },\n {\n \"tag\": "axoidean",\n \"popularity\": 19812\n },\n {\n \"tag\": "ovule",\n \"popularity\": 19778\n },\n {\n \"tag\": "solidify",\n \"popularity\": 19744\n },\n {\n \"tag\": "noncelestial",\n \"popularity\": 19710\n },\n {\n \"tag\": "overmultiplication",\n \"popularity\": 19676\n },\n {\n \"tag\": "hexatetrahedron",\n \"popularity\": 19642\n },\n {\n \"tag\": "pliciform",\n \"popularity\": 19609\n },\n {\n \"tag\": "zimbalon",\n \"popularity\": 19575\n },\n {\n \"tag\": "annexational",\n \"popularity\": 19542\n },\n {\n \"tag\": "eurhodol",\n \"popularity\": 19508\n },\n {\n \"tag\": "yark",\n \"popularity\": 19475\n },\n {\n \"tag\": "illegality nitroalizarin",\n \"popularity\": 19442\n },\n {\n \"tag\": "quadratum",\n \"popularity\": 19409\n },\n {\n \"tag\": "saccharine",\n \"popularity\": 19376\n },\n {\n \"tag\": "unemploy",\n \"popularity\": 19343\n },\n {\n \"tag\": "uniclinal unipotent",\n \"popularity\": 19310\n },\n {\n \"tag\": "turbo",\n \"popularity\": 19277\n },\n {\n \"tag\": "sybarism",\n \"popularity\": 19244\n },\n {\n \"tag\": "motacilline",\n \"popularity\": 19212\n },\n {\n \"tag\": "weaselly",\n \"popularity\": 19179\n },\n {\n \"tag\": "plastid",\n \"popularity\": 19147\n },\n {\n \"tag\": "wasting",\n \"popularity\": 19114\n },\n {\n \"tag\": "begrime fluting",\n \"popularity\": 19082\n },\n {\n \"tag\": "Nephilinae",\n \"popularity\": 19050\n },\n {\n \"tag\": "disregardance",\n \"popularity\": 19018\n },\n {\n \"tag\": "Shakerlike",\n \"popularity\": 18986\n },\n {\n \"tag\": "uniped",\n \"popularity\": 18954\n },\n {\n \"tag\": "knap",\n \"popularity\": 18922\n },\n {\n \"tag\": "electivism undergardener",\n \"popularity\": 18890\n },\n {\n \"tag\": "hulverheaded",\n \"popularity\": 18858\n },\n {\n \"tag\": "unruptured",\n \"popularity\": 18827\n },\n {\n \"tag\": "solemnize credently",\n \"popularity\": 18795\n },\n {\n \"tag\": "pentastomoid possessingly",\n \"popularity\": 18764\n },\n {\n \"tag\": "octose",\n \"popularity\": 18733\n },\n {\n \"tag\": "psithurism indefensibility",\n \"popularity\": 18701\n },\n {\n \"tag\": "torrentuous cyanometer subcrenate",\n \"popularity\": 18670\n },\n {\n \"tag\": "photoplaywright tapaculo",\n \"popularity\": 18639\n },\n {\n \"tag\": "univalence",\n \"popularity\": 18608\n },\n {\n \"tag\": "Porthetria",\n \"popularity\": 18577\n },\n {\n \"tag\": "funambulo",\n \"popularity\": 18546\n },\n {\n \"tag\": "pedion",\n \"popularity\": 18515\n },\n {\n \"tag\": "horticulturally",\n \"popularity\": 18485\n },\n {\n \"tag\": "marennin",\n \"popularity\": 18454\n },\n {\n \"tag\": "horselaugh",\n \"popularity\": 18423\n },\n {\n \"tag\": "semiexecutive",\n \"popularity\": 18393\n },\n {\n \"tag\": "Monopteridae",\n \"popularity\": 18363\n },\n {\n \"tag\": "commonable",\n \"popularity\": 18332\n },\n {\n \"tag\": "dreariment",\n \"popularity\": 18302\n },\n {\n \"tag\": "disbud",\n \"popularity\": 18272\n },\n {\n \"tag\": "monocled",\n \"popularity\": 18242\n },\n {\n \"tag\": "hurlbarrow",\n \"popularity\": 18212\n },\n {\n \"tag\": "opiateproof",\n \"popularity\": 18182\n },\n {\n \"tag\": "Fahrenheit",\n \"popularity\": 18152\n },\n {\n \"tag\": "writhed",\n \"popularity\": 18122\n },\n {\n \"tag\": "Volstead",\n \"popularity\": 18093\n },\n {\n \"tag\": "yesternight",\n \"popularity\": 18063\n },\n {\n \"tag\": "readmittance",\n \"popularity\": 18033\n },\n {\n \"tag\": "reiterable",\n \"popularity\": 18004\n },\n {\n \"tag\": "triquetral",\n \"popularity\": 17975\n },\n {\n \"tag\": "guillotinement",\n \"popularity\": 17945\n },\n {\n \"tag\": "repermission",\n \"popularity\": 17916\n },\n {\n \"tag\": "assishly",\n \"popularity\": 17887\n },\n {\n \"tag\": "daidle",\n \"popularity\": 17858\n },\n {\n \"tag\": "prismatoid",\n \"popularity\": 17829\n },\n {\n \"tag\": "irreptitious",\n \"popularity\": 17800\n },\n {\n \"tag\": "sourdeline",\n \"popularity\": 17771\n },\n {\n \"tag\": "Austrian",\n \"popularity\": 17742\n },\n {\n \"tag\": "psychorrhagic",\n \"popularity\": 17713\n },\n {\n \"tag\": "Monumbo",\n \"popularity\": 17685\n },\n {\n \"tag\": "cloiochoanitic",\n \"popularity\": 17656\n },\n {\n \"tag\": "hant",\n \"popularity\": 17628\n },\n {\n \"tag\": "roily pulldown",\n \"popularity\": 17599\n },\n {\n \"tag\": "recongratulation",\n \"popularity\": 17571\n },\n {\n \"tag\": "Peking",\n \"popularity\": 17543\n },\n {\n \"tag\": "erdvark",\n \"popularity\": 17514\n },\n {\n \"tag\": "antimnemonic",\n \"popularity\": 17486\n },\n {\n \"tag\": "noncapillarity",\n \"popularity\": 17458\n },\n {\n \"tag\": "irrepressive",\n \"popularity\": 17430\n },\n {\n \"tag\": "Petromyzontes",\n \"popularity\": 17402\n },\n {\n \"tag\": "piscatorially",\n \"popularity\": 17374\n },\n {\n \"tag\": "cholesterosis",\n \"popularity\": 17346\n },\n {\n \"tag\": "denunciate",\n \"popularity\": 17319\n },\n {\n \"tag\": "unmetalled",\n \"popularity\": 17291\n },\n {\n \"tag\": "Tigris enruin",\n \"popularity\": 17263\n },\n {\n \"tag\": "anaspalin",\n \"popularity\": 17236\n },\n {\n \"tag\": "monodromy",\n \"popularity\": 17208\n },\n {\n \"tag\": "Canichanan",\n \"popularity\": 17181\n },\n {\n \"tag\": "mesolabe",\n \"popularity\": 17154\n },\n {\n \"tag\": "trichothallic overcunningness",\n \"popularity\": 17127\n },\n {\n \"tag\": "spinsterishly",\n \"popularity\": 17099\n },\n {\n \"tag\": "sensilla",\n \"popularity\": 17072\n },\n {\n \"tag\": "wifelkin",\n \"popularity\": 17045\n },\n {\n \"tag\": "suppositionless",\n \"popularity\": 17018\n },\n {\n \"tag\": "irksomeness",\n \"popularity\": 16991\n },\n {\n \"tag\": "sanbenito",\n \"popularity\": 16964\n },\n {\n \"tag\": "nonstatement",\n \"popularity\": 16938\n },\n {\n \"tag\": "phenoloid",\n \"popularity\": 16911\n },\n {\n \"tag\": "Steinberger",\n \"popularity\": 16884\n },\n {\n \"tag\": "replicated boom",\n \"popularity\": 16858\n },\n {\n \"tag\": "sciomachiology",\n \"popularity\": 16831\n },\n {\n \"tag\": "starwise",\n \"popularity\": 16805\n },\n {\n \"tag\": "prerich",\n \"popularity\": 16778\n },\n {\n \"tag\": "unspawned",\n \"popularity\": 16752\n },\n {\n \"tag\": "unindentable",\n \"popularity\": 16726\n },\n {\n \"tag\": "stromatic",\n \"popularity\": 16700\n },\n {\n \"tag\": "fetishize",\n \"popularity\": 16673\n },\n {\n \"tag\": "dihydroxy",\n \"popularity\": 16647\n },\n {\n \"tag\": "precaudal",\n \"popularity\": 16621\n },\n {\n \"tag\": "Madagascar",\n \"popularity\": 16595\n },\n {\n \"tag\": "repinement",\n \"popularity\": 16570\n },\n {\n \"tag\": "noncathedral wenzel",\n \"popularity\": 16544\n },\n {\n \"tag\": "corollike",\n \"popularity\": 16518\n },\n {\n \"tag\": "pubes unamortization",\n \"popularity\": 16492\n },\n {\n \"tag\": "brickcroft",\n \"popularity\": 16467\n },\n {\n \"tag\": "intertrabecular",\n \"popularity\": 16441\n },\n {\n \"tag\": "formulaic",\n \"popularity\": 16416\n },\n {\n \"tag\": "arienzo",\n \"popularity\": 16390\n },\n {\n \"tag\": "Mazzinian",\n \"popularity\": 16365\n },\n {\n \"tag\": "wallowishly",\n \"popularity\": 16339\n },\n {\n \"tag\": "sysselman",\n \"popularity\": 16314\n },\n {\n \"tag\": "seligmannite",\n \"popularity\": 16289\n },\n {\n \"tag\": "harlequinery",\n \"popularity\": 16264\n },\n {\n \"tag\": "zucchetto",\n \"popularity\": 16239\n },\n {\n \"tag\": "malonyl",\n \"popularity\": 16214\n },\n {\n \"tag\": "patwari",\n \"popularity\": 16189\n },\n {\n \"tag\": "neoholmia venturesomeness",\n \"popularity\": 16164\n },\n {\n \"tag\": "Dehwar",\n \"popularity\": 16139\n },\n {\n \"tag\": "fetiferous",\n \"popularity\": 16114\n },\n {\n \"tag\": "chromatophore",\n \"popularity\": 16090\n },\n {\n \"tag\": "reregistration",\n \"popularity\": 16065\n },\n {\n \"tag\": "alienor",\n \"popularity\": 16040\n },\n {\n \"tag\": "Hexagynia",\n \"popularity\": 16016\n },\n {\n \"tag\": "cerebrotonia",\n \"popularity\": 15991\n },\n {\n \"tag\": "deedbox",\n \"popularity\": 15967\n },\n {\n \"tag\": "staab",\n \"popularity\": 15943\n },\n {\n \"tag\": "uratemia",\n \"popularity\": 15918\n },\n {\n \"tag\": "flaunt",\n \"popularity\": 15894\n },\n {\n \"tag\": "bogy",\n \"popularity\": 15870\n },\n {\n \"tag\": "subcartilaginous",\n \"popularity\": 15846\n },\n {\n \"tag\": "protonephridial",\n \"popularity\": 15822\n },\n {\n \"tag\": "Boswellia",\n \"popularity\": 15798\n },\n {\n \"tag\": "relaxant untiaraed protoepiphyte",\n \"popularity\": 15774\n },\n {\n \"tag\": "nesslerization",\n \"popularity\": 15750\n },\n {\n \"tag\": "precession",\n \"popularity\": 15726\n },\n {\n \"tag\": "peat",\n \"popularity\": 15702\n },\n {\n \"tag\": "unbit",\n \"popularity\": 15678\n },\n {\n \"tag\": "snailish",\n \"popularity\": 15655\n },\n {\n \"tag\": "porismatical",\n \"popularity\": 15631\n },\n {\n \"tag\": "hooflike",\n \"popularity\": 15608\n },\n {\n \"tag\": "resuppose phene cranic",\n \"popularity\": 15584\n },\n {\n \"tag\": "peptonization kipskin",\n \"popularity\": 15561\n },\n {\n \"tag\": "birdstone",\n \"popularity\": 15537\n },\n {\n \"tag\": "empty inferoanterior",\n \"popularity\": 15514\n },\n {\n \"tag\": "androtauric",\n \"popularity\": 15491\n },\n {\n \"tag\": "triamide",\n \"popularity\": 15467\n },\n {\n \"tag\": "showmanry",\n \"popularity\": 15444\n },\n {\n \"tag\": "doing",\n \"popularity\": 15421\n },\n {\n \"tag\": "bouchaleen",\n \"popularity\": 15398\n },\n {\n \"tag\": "precollude",\n \"popularity\": 15375\n },\n {\n \"tag\": "finger",\n \"popularity\": 15352\n },\n {\n \"tag\": "limnetic intermessenger",\n \"popularity\": 15329\n },\n {\n \"tag\": "uncharitable picrotoxic",\n \"popularity\": 15306\n },\n {\n \"tag\": "nationalizer Phasmidae",\n \"popularity\": 15283\n },\n {\n \"tag\": "laughingstock",\n \"popularity\": 15261\n },\n {\n \"tag\": "nondeferential",\n \"popularity\": 15238\n },\n {\n \"tag\": "uproariously",\n \"popularity\": 15215\n },\n {\n \"tag\": "manzanilla",\n \"popularity\": 15193\n },\n {\n \"tag\": "khahoon",\n \"popularity\": 15170\n },\n {\n \"tag\": "olericulturally longshanks",\n \"popularity\": 15148\n },\n {\n \"tag\": "enthusiastically methionic",\n \"popularity\": 15125\n },\n {\n \"tag\": "pobs",\n \"popularity\": 15103\n },\n {\n \"tag\": "tricarpellate",\n \"popularity\": 15081\n },\n {\n \"tag\": "souterrain",\n \"popularity\": 15058\n },\n {\n \"tag\": "tethelin",\n \"popularity\": 15036\n },\n {\n \"tag\": "tartle",\n \"popularity\": 15014\n },\n {\n \"tag\": "tidelike",\n \"popularity\": 14992\n },\n {\n \"tag\": "cosmoramic",\n \"popularity\": 14970\n },\n {\n \"tag\": "pretardiness",\n \"popularity\": 14948\n },\n {\n \"tag\": "insoul",\n \"popularity\": 14926\n },\n {\n \"tag\": "anthroxan",\n \"popularity\": 14904\n },\n {\n \"tag\": "jilter",\n \"popularity\": 14882\n },\n {\n \"tag\": "pectinibranchian trematode",\n \"popularity\": 14860\n },\n {\n \"tag\": "Renaissancist",\n \"popularity\": 14838\n },\n {\n \"tag\": "imaginant",\n \"popularity\": 14817\n },\n {\n \"tag\": "supercensure",\n \"popularity\": 14795\n },\n {\n \"tag\": "festilogy",\n \"popularity\": 14773\n },\n {\n \"tag\": "regression",\n \"popularity\": 14752\n },\n {\n \"tag\": "mesobregmate languorously",\n \"popularity\": 14730\n },\n {\n \"tag\": "unsupernaturalized",\n \"popularity\": 14709\n },\n {\n \"tag\": "boobyish",\n \"popularity\": 14687\n },\n {\n \"tag\": "scopolamine",\n \"popularity\": 14666\n },\n {\n \"tag\": "reamputation unchristianly",\n \"popularity\": 14645\n },\n {\n \"tag\": "cuneatic",\n \"popularity\": 14623\n },\n {\n \"tag\": "heathberry",\n \"popularity\": 14602\n },\n {\n \"tag\": "hate",\n \"popularity\": 14581\n },\n {\n \"tag\": "redeemableness",\n \"popularity\": 14560\n },\n {\n \"tag\": "damasse",\n \"popularity\": 14539\n },\n {\n \"tag\": "thrillsome",\n \"popularity\": 14518\n },\n {\n \"tag\": "disseverment",\n \"popularity\": 14497\n },\n {\n \"tag\": "underbishopric Ostyak",\n \"popularity\": 14476\n },\n {\n \"tag\": "Exoascales",\n \"popularity\": 14455\n },\n {\n \"tag\": "soiled",\n \"popularity\": 14434\n },\n {\n \"tag\": "Cain",\n \"popularity\": 14413\n },\n {\n \"tag\": "mismanageable arenae",\n \"popularity\": 14392\n },\n {\n \"tag\": "manducate unhinderably",\n \"popularity\": 14372\n },\n {\n \"tag\": "peregrin",\n \"popularity\": 14351\n },\n {\n \"tag\": "musicianly",\n \"popularity\": 14330\n },\n {\n \"tag\": "aln",\n \"popularity\": 14310\n },\n {\n \"tag\": "intercentrum",\n \"popularity\": 14289\n },\n {\n \"tag\": "roothold",\n \"popularity\": 14269\n },\n {\n \"tag\": "jane aneurism",\n \"popularity\": 14248\n },\n {\n \"tag\": "insinuatively forefeel phytolatrous",\n \"popularity\": 14228\n },\n {\n \"tag\": "kanchil",\n \"popularity\": 14208\n },\n {\n \"tag\": "Austrophile",\n \"popularity\": 14187\n },\n {\n \"tag\": "unterrorized",\n \"popularity\": 14167\n },\n {\n \"tag\": "admeasure",\n \"popularity\": 14147\n },\n {\n \"tag\": "electrodissolution",\n \"popularity\": 14127\n },\n {\n \"tag\": "unweddedly",\n \"popularity\": 14107\n },\n {\n \"tag\": "unannoying",\n \"popularity\": 14087\n },\n {\n \"tag\": "uningenuous",\n \"popularity\": 14067\n },\n {\n \"tag\": "omnibenevolent",\n \"popularity\": 14047\n },\n {\n \"tag\": "commissure",\n \"popularity\": 14027\n },\n {\n \"tag\": "tellureted",\n \"popularity\": 14007\n },\n {\n \"tag\": "suffragan",\n \"popularity\": 13987\n },\n {\n \"tag\": "sphaeriaceous",\n \"popularity\": 13967\n },\n {\n \"tag\": "unfearing",\n \"popularity\": 13947\n },\n {\n \"tag\": "stentoriousness precounsellor",\n \"popularity\": 13928\n },\n {\n \"tag\": "haemaspectroscope",\n \"popularity\": 13908\n },\n {\n \"tag\": "teras",\n \"popularity\": 13888\n },\n {\n \"tag\": "pulicine",\n \"popularity\": 13869\n },\n {\n \"tag\": "colicystopyelitis",\n \"popularity\": 13849\n },\n {\n \"tag\": "Physalia",\n \"popularity\": 13830\n },\n {\n \"tag\": "Saxicolidae",\n \"popularity\": 13810\n },\n {\n \"tag\": "peritonital",\n \"popularity\": 13791\n },\n {\n \"tag\": "dysphotic",\n \"popularity\": 13771\n },\n {\n \"tag\": "unabandoned",\n \"popularity\": 13752\n },\n {\n \"tag\": "rashful",\n \"popularity\": 13733\n },\n {\n \"tag\": "goodyness Manobo",\n \"popularity\": 13714\n },\n {\n \"tag\": "glaring",\n \"popularity\": 13694\n },\n {\n \"tag\": "horrorful",\n \"popularity\": 13675\n },\n {\n \"tag\": "intercepting",\n \"popularity\": 13656\n },\n {\n \"tag\": "semifine",\n \"popularity\": 13637\n },\n {\n \"tag\": "Gaypoo",\n \"popularity\": 13618\n },\n {\n \"tag\": "Metrosideros",\n \"popularity\": 13599\n },\n {\n \"tag\": "thoracicolumbar",\n \"popularity\": 13580\n },\n {\n \"tag\": "unserried",\n \"popularity\": 13561\n },\n {\n \"tag\": "keeperess cauterization",\n \"popularity\": 13542\n },\n {\n \"tag\": "administrant",\n \"popularity\": 13523\n },\n {\n \"tag\": "unpropitiatedness",\n \"popularity\": 13505\n },\n {\n \"tag\": "pensileness",\n \"popularity\": 13486\n },\n {\n \"tag\": "quinaldic unreceivable",\n \"popularity\": 13467\n },\n {\n \"tag\": "Carnaria",\n \"popularity\": 13448\n },\n {\n \"tag\": "azothionium wurrus",\n \"popularity\": 13430\n },\n {\n \"tag\": "mistresshood",\n \"popularity\": 13411\n },\n {\n \"tag\": "Savara",\n \"popularity\": 13393\n },\n {\n \"tag\": "dasyurine",\n \"popularity\": 13374\n },\n {\n \"tag\": "superideal",\n \"popularity\": 13356\n },\n {\n \"tag\": "Parisianize",\n \"popularity\": 13337\n },\n {\n \"tag\": "underearth",\n \"popularity\": 13319\n },\n {\n \"tag\": "athrogenic",\n \"popularity\": 13301\n },\n {\n \"tag\": "communicate",\n \"popularity\": 13282\n },\n {\n \"tag\": "denervation enworthed",\n \"popularity\": 13264\n },\n {\n \"tag\": "subbromide",\n \"popularity\": 13246\n },\n {\n \"tag\": "stenocoriasis",\n \"popularity\": 13228\n },\n {\n \"tag\": "facetiousness",\n \"popularity\": 13209\n },\n {\n \"tag\": "twaddling",\n \"popularity\": 13191\n },\n {\n \"tag\": "tetartoconid",\n \"popularity\": 13173\n },\n {\n \"tag\": "audiophile",\n \"popularity\": 13155\n },\n {\n \"tag\": "fustigate",\n \"popularity\": 13137\n },\n {\n \"tag\": "Sorbian cacophonia",\n \"popularity\": 13119\n },\n {\n \"tag\": "fondish",\n \"popularity\": 13101\n },\n {\n \"tag\": "endomastoiditis",\n \"popularity\": 13084\n },\n {\n \"tag\": "sniptious",\n \"popularity\": 13066\n },\n {\n \"tag\": "glochidiate",\n \"popularity\": 13048\n },\n {\n \"tag\": "polycarboxylic",\n \"popularity\": 13030\n },\n {\n \"tag\": "stamp",\n \"popularity\": 13012\n },\n {\n \"tag\": "tritonymph endotoxoid",\n \"popularity\": 12995\n },\n {\n \"tag\": "wolfskin",\n \"popularity\": 12977\n },\n {\n \"tag\": "oncosimeter",\n \"popularity\": 12959\n },\n {\n \"tag\": "outward",\n \"popularity\": 12942\n },\n {\n \"tag\": "circumscribed",\n \"popularity\": 12924\n },\n {\n \"tag\": "autohemolytic",\n \"popularity\": 12907\n },\n {\n \"tag\": "isorhamnose",\n \"popularity\": 12889\n },\n {\n \"tag\": "monarchomachic",\n \"popularity\": 12872\n },\n {\n \"tag\": "phaenomenon",\n \"popularity\": 12855\n },\n {\n \"tag\": "angiopressure",\n \"popularity\": 12837\n },\n {\n \"tag\": "similarize",\n \"popularity\": 12820\n },\n {\n \"tag\": "unseeable",\n \"popularity\": 12803\n },\n {\n \"tag\": "Toryize",\n \"popularity\": 12785\n },\n {\n \"tag\": "fruitling",\n \"popularity\": 12768\n },\n {\n \"tag\": "axle",\n \"popularity\": 12751\n },\n {\n \"tag\": "priestal cocked",\n \"popularity\": 12734\n },\n {\n \"tag\": "serotoxin",\n \"popularity\": 12717\n },\n {\n \"tag\": "unmovably",\n \"popularity\": 12700\n },\n {\n \"tag\": "darbha",\n \"popularity\": 12683\n },\n {\n \"tag\": "Mongolize",\n \"popularity\": 12666\n },\n {\n \"tag\": "clusteringly",\n \"popularity\": 12649\n },\n {\n \"tag\": "tendence",\n \"popularity\": 12632\n },\n {\n \"tag\": "foziness",\n \"popularity\": 12615\n },\n {\n \"tag\": "brickkiln lithify",\n \"popularity\": 12598\n },\n {\n \"tag\": "unpriest",\n \"popularity\": 12581\n },\n {\n \"tag\": "convincer",\n \"popularity\": 12564\n },\n {\n \"tag\": "mornlike",\n \"popularity\": 12548\n },\n {\n \"tag\": "overaddiction ostentatiousness",\n \"popularity\": 12531\n },\n {\n \"tag\": "diffusively moccasin pendom",\n \"popularity\": 12514\n },\n {\n \"tag\": "boose",\n \"popularity\": 12498\n },\n {\n \"tag\": "myonosus",\n \"popularity\": 12481\n },\n {\n \"tag\": "handsome",\n \"popularity\": 12464\n },\n {\n \"tag\": "paroxysmic",\n \"popularity\": 12448\n },\n {\n \"tag\": "Ulidian",\n \"popularity\": 12431\n },\n {\n \"tag\": "heartache",\n \"popularity\": 12415\n },\n {\n \"tag\": "torporize",\n \"popularity\": 12398\n },\n {\n \"tag\": "hippish",\n \"popularity\": 12382\n },\n {\n \"tag\": "stigmal militation",\n \"popularity\": 12366\n },\n {\n \"tag\": "matmaker",\n \"popularity\": 12349\n },\n {\n \"tag\": "marantaceous bivoluminous",\n \"popularity\": 12333\n },\n {\n \"tag\": "Uraniidae",\n \"popularity\": 12317\n },\n {\n \"tag\": "risper",\n \"popularity\": 12301\n },\n {\n \"tag\": "tintinnabulation",\n \"popularity\": 12284\n },\n {\n \"tag\": "tributorian",\n \"popularity\": 12268\n },\n {\n \"tag\": "ashamedly",\n \"popularity\": 12252\n },\n {\n \"tag\": "Macrourus",\n \"popularity\": 12236\n },\n {\n \"tag\": "Chora",\n \"popularity\": 12220\n },\n {\n \"tag\": "caul",\n \"popularity\": 12204\n },\n {\n \"tag\": "exsector",\n \"popularity\": 12188\n },\n {\n \"tag\": "acutish",\n \"popularity\": 12172\n },\n {\n \"tag\": "amphichrome",\n \"popularity\": 12156\n },\n {\n \"tag\": "guarder",\n \"popularity\": 12140\n },\n {\n \"tag\": "sculpturally",\n \"popularity\": 12124\n },\n {\n \"tag\": "benightmare",\n \"popularity\": 12108\n },\n {\n \"tag\": "chucky",\n \"popularity\": 12093\n },\n {\n \"tag\": "Venetian",\n \"popularity\": 12077\n },\n {\n \"tag\": "autotheater",\n \"popularity\": 12061\n },\n {\n \"tag\": "planarioid",\n \"popularity\": 12045\n },\n {\n \"tag\": "handkerchiefful",\n \"popularity\": 12030\n },\n {\n \"tag\": "fuliginousness potentize",\n \"popularity\": 12014\n },\n {\n \"tag\": "pantheum",\n \"popularity\": 11998\n },\n {\n \"tag\": "heavyweight",\n \"popularity\": 11983\n },\n {\n \"tag\": "unbrick",\n \"popularity\": 11967\n },\n {\n \"tag\": "duomachy",\n \"popularity\": 11952\n },\n {\n \"tag\": "polyphyodont",\n \"popularity\": 11936\n },\n {\n \"tag\": "hibernacle",\n \"popularity\": 11921\n },\n {\n \"tag\": "undistend",\n \"popularity\": 11905\n },\n {\n \"tag\": "hystericky",\n \"popularity\": 11890\n },\n {\n \"tag\": "paleolimnology",\n \"popularity\": 11875\n },\n {\n \"tag\": "cedarware",\n \"popularity\": 11859\n },\n {\n \"tag\": "overwrested",\n \"popularity\": 11844\n },\n {\n \"tag\": "Syriacism",\n \"popularity\": 11829\n },\n {\n \"tag\": "pretan",\n \"popularity\": 11813\n },\n {\n \"tag\": "formant",\n \"popularity\": 11798\n },\n {\n \"tag\": "pharmacopoeist Fedia",\n \"popularity\": 11783\n },\n {\n \"tag\": "exorcist eerisome",\n \"popularity\": 11768\n },\n {\n \"tag\": "separation",\n \"popularity\": 11753\n },\n {\n \"tag\": "infancy",\n \"popularity\": 11738\n },\n {\n \"tag\": "ecrasite",\n \"popularity\": 11723\n },\n {\n \"tag\": "propolize",\n \"popularity\": 11708\n },\n {\n \"tag\": "uncram phyllin",\n \"popularity\": 11693\n },\n {\n \"tag\": "thymopathy",\n \"popularity\": 11678\n },\n {\n \"tag\": "omniscient",\n \"popularity\": 11663\n },\n {\n \"tag\": "coussinet hazer",\n \"popularity\": 11648\n },\n {\n \"tag\": "contributiveness",\n \"popularity\": 11633\n },\n {\n \"tag\": "septifluous",\n \"popularity\": 11618\n },\n {\n \"tag\": "halfness",\n \"popularity\": 11603\n },\n {\n \"tag\": "tocher",\n \"popularity\": 11589\n },\n {\n \"tag\": "monotonist",\n \"popularity\": 11574\n },\n {\n \"tag\": "headchair",\n \"popularity\": 11559\n },\n {\n \"tag\": "everywhence",\n \"popularity\": 11544\n },\n {\n \"tag\": "gerate",\n \"popularity\": 11530\n },\n {\n \"tag\": "unrepellent",\n \"popularity\": 11515\n },\n {\n \"tag\": "inidoneous",\n \"popularity\": 11500\n },\n {\n \"tag\": "Rifi",\n \"popularity\": 11486\n },\n {\n \"tag\": "unstop",\n \"popularity\": 11471\n },\n {\n \"tag\": "conformer",\n \"popularity\": 11457\n },\n {\n \"tag\": "vivisectionally",\n \"popularity\": 11442\n },\n {\n \"tag\": "nonfinishing",\n \"popularity\": 11428\n },\n {\n \"tag\": "tyranness",\n \"popularity\": 11413\n },\n {\n \"tag\": "shepherdage havoc",\n \"popularity\": 11399\n },\n {\n \"tag\": "coronale",\n \"popularity\": 11385\n },\n {\n \"tag\": "airmarker",\n \"popularity\": 11370\n },\n {\n \"tag\": "subpanel",\n \"popularity\": 11356\n },\n {\n \"tag\": "conciliation",\n \"popularity\": 11342\n },\n {\n \"tag\": "supergun",\n \"popularity\": 11327\n },\n {\n \"tag\": "photoheliography",\n \"popularity\": 11313\n },\n {\n \"tag\": "cacosmia",\n \"popularity\": 11299\n },\n {\n \"tag\": "caressant",\n \"popularity\": 11285\n },\n {\n \"tag\": "swivet",\n \"popularity\": 11270\n },\n {\n \"tag\": "coddler",\n \"popularity\": 11256\n },\n {\n \"tag\": "rakehellish",\n \"popularity\": 11242\n },\n {\n \"tag\": "recohabitation",\n \"popularity\": 11228\n },\n {\n \"tag\": "postillator",\n \"popularity\": 11214\n },\n {\n \"tag\": "receipt",\n \"popularity\": 11200\n },\n {\n \"tag\": "nonconformistical",\n \"popularity\": 11186\n },\n {\n \"tag\": "unglorified",\n \"popularity\": 11172\n },\n {\n \"tag\": "unordinariness",\n \"popularity\": 11158\n },\n {\n \"tag\": "tetrahydroxy",\n \"popularity\": 11144\n },\n {\n \"tag\": "haploperistomic corporeity",\n \"popularity\": 11130\n },\n {\n \"tag\": "varical",\n \"popularity\": 11117\n },\n {\n \"tag\": "pilferment",\n \"popularity\": 11103\n },\n {\n \"tag\": "reverentially playcraft",\n \"popularity\": 11089\n },\n {\n \"tag\": "unretentive",\n \"popularity\": 11075\n },\n {\n \"tag\": "readiness",\n \"popularity\": 11061\n },\n {\n \"tag\": "thermomagnetism",\n \"popularity\": 11048\n },\n {\n \"tag\": "spotless",\n \"popularity\": 11034\n },\n {\n \"tag\": "semishrubby",\n \"popularity\": 11020\n },\n {\n \"tag\": "metrotomy",\n \"popularity\": 11007\n },\n {\n \"tag\": "hocker",\n \"popularity\": 10993\n },\n {\n \"tag\": "anecdotal",\n \"popularity\": 10979\n },\n {\n \"tag\": "tetrabelodont",\n \"popularity\": 10966\n },\n {\n \"tag\": "Ramillied",\n \"popularity\": 10952\n },\n {\n \"tag\": "sympatheticism",\n \"popularity\": 10939\n },\n {\n \"tag\": "kiskatom",\n \"popularity\": 10925\n },\n {\n \"tag\": "concyclically",\n \"popularity\": 10912\n },\n {\n \"tag\": "tunicless",\n \"popularity\": 10899\n },\n {\n \"tag\": "formalistic",\n \"popularity\": 10885\n },\n {\n \"tag\": "thermacogenesis",\n \"popularity\": 10872\n },\n {\n \"tag\": "multimotored",\n \"popularity\": 10858\n },\n {\n \"tag\": "inversive",\n \"popularity\": 10845\n },\n {\n \"tag\": "Jatki",\n \"popularity\": 10832\n },\n {\n \"tag\": "highest",\n \"popularity\": 10818\n },\n {\n \"tag\": "rubidic",\n \"popularity\": 10805\n },\n {\n \"tag\": "acranial",\n \"popularity\": 10792\n },\n {\n \"tag\": "pulvinulus",\n \"popularity\": 10779\n },\n {\n \"tag\": "nattiness",\n \"popularity\": 10766\n },\n {\n \"tag\": "antisimoniacal",\n \"popularity\": 10752\n },\n {\n \"tag\": "tetanize",\n \"popularity\": 10739\n },\n {\n \"tag\": "spectrophobia",\n \"popularity\": 10726\n },\n {\n \"tag\": "monopolitical",\n \"popularity\": 10713\n },\n {\n \"tag\": "teallite",\n \"popularity\": 10700\n },\n {\n \"tag\": "alicyclic interpellator",\n \"popularity\": 10687\n },\n {\n \"tag\": "nonsynthesized",\n \"popularity\": 10674\n },\n {\n \"tag\": "wheelwrighting",\n \"popularity\": 10661\n },\n {\n \"tag\": "pelliculate",\n \"popularity\": 10648\n },\n {\n \"tag\": "Euphyllopoda",\n \"popularity\": 10635\n },\n {\n \"tag\": "graver",\n \"popularity\": 10622\n },\n {\n \"tag\": "automorph",\n \"popularity\": 10609\n },\n {\n \"tag\": "underhanded",\n \"popularity\": 10597\n },\n {\n \"tag\": "causal",\n \"popularity\": 10584\n },\n {\n \"tag\": "odoom",\n \"popularity\": 10571\n },\n {\n \"tag\": "apodictical",\n \"popularity\": 10558\n },\n {\n \"tag\": "foundery",\n \"popularity\": 10545\n },\n {\n \"tag\": "unneighbored",\n \"popularity\": 10533\n },\n {\n \"tag\": "woolshearing",\n \"popularity\": 10520\n },\n {\n \"tag\": "boschveld",\n \"popularity\": 10507\n },\n {\n \"tag\": "unhardened lipopod",\n \"popularity\": 10495\n },\n {\n \"tag\": "unenriching",\n \"popularity\": 10482\n },\n {\n \"tag\": "spak",\n \"popularity\": 10469\n },\n {\n \"tag\": "yogasana",\n \"popularity\": 10457\n },\n {\n \"tag\": "depoetize",\n \"popularity\": 10444\n },\n {\n \"tag\": "parousiamania",\n \"popularity\": 10432\n },\n {\n \"tag\": "longlegs",\n \"popularity\": 10419\n },\n {\n \"tag\": "gelatinizability",\n \"popularity\": 10407\n },\n {\n \"tag\": "edeology",\n \"popularity\": 10394\n },\n {\n \"tag\": "sodwork",\n \"popularity\": 10382\n },\n {\n \"tag\": "somnambule",\n \"popularity\": 10369\n },\n {\n \"tag\": "antiquing",\n \"popularity\": 10357\n },\n {\n \"tag\": "intaker",\n \"popularity\": 10344\n },\n {\n \"tag\": "Gerberia",\n \"popularity\": 10332\n },\n {\n \"tag\": "preadmit",\n \"popularity\": 10320\n },\n {\n \"tag\": "bullhorn",\n \"popularity\": 10307\n },\n {\n \"tag\": "sororal",\n \"popularity\": 10295\n },\n {\n \"tag\": "phaeophyceous",\n \"popularity\": 10283\n },\n {\n \"tag\": "omphalopsychite",\n \"popularity\": 10271\n },\n {\n \"tag\": "substantious",\n \"popularity\": 10258\n },\n {\n \"tag\": "undemonstratively",\n \"popularity\": 10246\n },\n {\n \"tag\": "corallike blackit",\n \"popularity\": 10234\n },\n {\n \"tag\": "amoebous",\n \"popularity\": 10222\n },\n {\n \"tag\": "Polypodium",\n \"popularity\": 10210\n },\n {\n \"tag\": "blodite",\n \"popularity\": 10198\n },\n {\n \"tag\": "hordarian",\n \"popularity\": 10186\n },\n {\n \"tag\": "nonmoral",\n \"popularity\": 10174\n },\n {\n \"tag\": "dredgeful",\n \"popularity\": 10162\n },\n {\n \"tag\": "nourishingly",\n \"popularity\": 10150\n },\n {\n \"tag\": "seamy",\n \"popularity\": 10138\n },\n {\n \"tag\": "vara",\n \"popularity\": 10126\n },\n {\n \"tag\": "incorruptibleness",\n \"popularity\": 10114\n },\n {\n \"tag\": "manipulator",\n \"popularity\": 10102\n },\n {\n \"tag\": "chromodiascope uncountably",\n \"popularity\": 10090\n },\n {\n \"tag\": "typhemia",\n \"popularity\": 10078\n },\n {\n \"tag\": "Smalcaldic",\n \"popularity\": 10066\n },\n {\n \"tag\": "precontrive",\n \"popularity\": 10054\n },\n {\n \"tag\": "sowarry",\n \"popularity\": 10042\n },\n {\n \"tag\": "monopodic",\n \"popularity\": 10031\n },\n {\n \"tag\": "recodify",\n \"popularity\": 10019\n },\n {\n \"tag\": "phosphowolframic rimple",\n \"popularity\": 10007\n },\n {\n \"tag\": "triconch",\n \"popularity\": 9995\n },\n {\n \"tag\": "pycnodontoid",\n \"popularity\": 9984\n },\n {\n \"tag\": "bradyspermatism",\n \"popularity\": 9972\n },\n {\n \"tag\": "extensionist",\n \"popularity\": 9960\n },\n {\n \"tag\": "characterize",\n \"popularity\": 9949\n },\n {\n \"tag\": "anatreptic proteolytic",\n \"popularity\": 9937\n },\n {\n \"tag\": "waterboard",\n \"popularity\": 9925\n },\n {\n \"tag\": "allopathically",\n \"popularity\": 9914\n },\n {\n \"tag\": "arithmetician",\n \"popularity\": 9902\n },\n {\n \"tag\": "subsist",\n \"popularity\": 9891\n },\n {\n \"tag\": "Islamitish",\n \"popularity\": 9879\n },\n {\n \"tag\": "biddy",\n \"popularity\": 9868\n },\n {\n \"tag\": "reverberation",\n \"popularity\": 9856\n },\n {\n \"tag\": "Zaporogue",\n \"popularity\": 9845\n },\n {\n \"tag\": "soapberry",\n \"popularity\": 9833\n },\n {\n \"tag\": "physiognomics",\n \"popularity\": 9822\n },\n {\n \"tag\": "hospitalization",\n \"popularity\": 9810\n },\n {\n \"tag\": "dissembler",\n \"popularity\": 9799\n },\n {\n \"tag\": "festinate",\n \"popularity\": 9788\n },\n {\n \"tag\": "angiectopia",\n \"popularity\": 9776\n },\n {\n \"tag\": "Pulicidae",\n \"popularity\": 9765\n },\n {\n \"tag\": "beslimer",\n \"popularity\": 9754\n },\n {\n \"tag\": "nontreaty",\n \"popularity\": 9743\n },\n {\n \"tag\": "unhaggled",\n \"popularity\": 9731\n },\n {\n \"tag\": "catfall",\n \"popularity\": 9720\n },\n {\n \"tag\": "stola",\n \"popularity\": 9709\n },\n {\n \"tag\": "pataco",\n \"popularity\": 9698\n },\n {\n \"tag\": "ontologistic",\n \"popularity\": 9686\n },\n {\n \"tag\": "aerosphere",\n \"popularity\": 9675\n },\n {\n \"tag\": "deobstruent",\n \"popularity\": 9664\n },\n {\n \"tag\": "threepence",\n \"popularity\": 9653\n },\n {\n \"tag\": "cyprinoid",\n \"popularity\": 9642\n },\n {\n \"tag\": "overbank",\n \"popularity\": 9631\n },\n {\n \"tag\": "prostyle",\n \"popularity\": 9620\n },\n {\n \"tag\": "photoactivation",\n \"popularity\": 9609\n },\n {\n \"tag\": "homothetic",\n \"popularity\": 9598\n },\n {\n \"tag\": "roguedom",\n \"popularity\": 9587\n },\n {\n \"tag\": "underschool",\n \"popularity\": 9576\n },\n {\n \"tag\": "tractility",\n \"popularity\": 9565\n },\n {\n \"tag\": "gardenin",\n \"popularity\": 9554\n },\n {\n \"tag\": "Micromastictora",\n \"popularity\": 9543\n },\n {\n \"tag\": "gossypine",\n \"popularity\": 9532\n },\n {\n \"tag\": "amylodyspepsia",\n \"popularity\": 9521\n },\n {\n \"tag\": "Luciana",\n \"popularity\": 9510\n },\n {\n \"tag\": "meetly nonfisherman",\n \"popularity\": 9500\n },\n {\n \"tag\": "backhanded",\n \"popularity\": 9489\n },\n {\n \"tag\": "decrustation",\n \"popularity\": 9478\n },\n {\n \"tag\": "pinrail",\n \"popularity\": 9467\n },\n {\n \"tag\": "Mahori",\n \"popularity\": 9456\n },\n {\n \"tag\": "unsizable",\n \"popularity\": 9446\n },\n {\n \"tag\": "disawa",\n \"popularity\": 9435\n },\n {\n \"tag\": "launderability inconsidered",\n \"popularity\": 9424\n },\n {\n \"tag\": "unclassical",\n \"popularity\": 9414\n },\n {\n \"tag\": "inobtrusiveness",\n \"popularity\": 9403\n },\n {\n \"tag\": "sialogenous",\n \"popularity\": 9392\n },\n {\n \"tag\": "sulphonamide",\n \"popularity\": 9382\n },\n {\n \"tag\": "diluvion",\n \"popularity\": 9371\n },\n {\n \"tag\": "deuteranope",\n \"popularity\": 9361\n },\n {\n \"tag\": "addition",\n \"popularity\": 9350\n },\n {\n \"tag\": "bockeret",\n \"popularity\": 9339\n },\n {\n \"tag\": "unidentified",\n \"popularity\": 9329\n },\n {\n \"tag\": "caryatic",\n \"popularity\": 9318\n },\n {\n \"tag\": "misattribution",\n \"popularity\": 9308\n },\n {\n \"tag\": "outray",\n \"popularity\": 9297\n },\n {\n \"tag\": "areometrical",\n \"popularity\": 9287\n },\n {\n \"tag\": "antilogism",\n \"popularity\": 9277\n },\n {\n \"tag\": "inadjustable",\n \"popularity\": 9266\n },\n {\n \"tag\": "byssus",\n \"popularity\": 9256\n },\n {\n \"tag\": "trun",\n \"popularity\": 9245\n },\n {\n \"tag\": "thereology",\n \"popularity\": 9235\n },\n {\n \"tag\": "extort",\n \"popularity\": 9225\n },\n {\n \"tag\": "bumpkin",\n \"popularity\": 9214\n },\n {\n \"tag\": "sulphobenzide",\n \"popularity\": 9204\n },\n {\n \"tag\": "hydrogeology",\n \"popularity\": 9194\n },\n {\n \"tag\": "nidulariaceous",\n \"popularity\": 9183\n },\n {\n \"tag\": "propodiale",\n \"popularity\": 9173\n },\n {\n \"tag\": "fierily",\n \"popularity\": 9163\n },\n {\n \"tag\": "aerotonometry",\n \"popularity\": 9153\n },\n {\n \"tag\": "pelobatid oversuperstitious",\n \"popularity\": 9142\n },\n {\n \"tag\": "restringent",\n \"popularity\": 9132\n },\n {\n \"tag\": "tetrapodic",\n \"popularity\": 9122\n },\n {\n \"tag\": "heroicness Vendidad",\n \"popularity\": 9112\n },\n {\n \"tag\": "Sphingurus",\n \"popularity\": 9102\n },\n {\n \"tag\": "sclerote",\n \"popularity\": 9092\n },\n {\n \"tag\": "unkeyed",\n \"popularity\": 9082\n },\n {\n \"tag\": "superparliamentary",\n \"popularity\": 9072\n },\n {\n \"tag\": "hetericism",\n \"popularity\": 9061\n },\n {\n \"tag\": "hucklebone",\n \"popularity\": 9051\n },\n {\n \"tag\": "yojan",\n \"popularity\": 9041\n },\n {\n \"tag\": "bossed",\n \"popularity\": 9031\n },\n {\n \"tag\": "spiderwork",\n \"popularity\": 9021\n },\n {\n \"tag\": "millfeed dullery",\n \"popularity\": 9011\n },\n {\n \"tag\": "adnoun",\n \"popularity\": 9001\n },\n {\n \"tag\": "mesometric",\n \"popularity\": 8992\n },\n {\n \"tag\": "doublehandedness",\n \"popularity\": 8982\n },\n {\n \"tag\": "suppurant",\n \"popularity\": 8972\n },\n {\n \"tag\": "Berlinize",\n \"popularity\": 8962\n },\n {\n \"tag\": "sontag",\n \"popularity\": 8952\n },\n {\n \"tag\": "biplane",\n \"popularity\": 8942\n },\n {\n \"tag\": "insula",\n \"popularity\": 8932\n },\n {\n \"tag\": "unbrand",\n \"popularity\": 8922\n },\n {\n \"tag\": "Basilosaurus",\n \"popularity\": 8913\n },\n {\n \"tag\": "prenomination",\n \"popularity\": 8903\n },\n {\n \"tag\": "untextual",\n \"popularity\": 8893\n },\n {\n \"tag\": "coleslaw",\n \"popularity\": 8883\n },\n {\n \"tag\": "langsyne",\n \"popularity\": 8874\n },\n {\n \"tag\": "impede",\n \"popularity\": 8864\n },\n {\n \"tag\": "irrigator",\n \"popularity\": 8854\n },\n {\n \"tag\": "deflocculation",\n \"popularity\": 8844\n },\n {\n \"tag\": "narghile",\n \"popularity\": 8835\n },\n {\n \"tag\": "unguardedly ebenaceous",\n \"popularity\": 8825\n },\n {\n \"tag\": "conversantly subocular",\n \"popularity\": 8815\n },\n {\n \"tag\": "hydroponic",\n \"popularity\": 8806\n },\n {\n \"tag\": "anthropopsychism",\n \"popularity\": 8796\n },\n {\n \"tag\": "panoptic",\n \"popularity\": 8787\n },\n {\n \"tag\": "insufferable",\n \"popularity\": 8777\n },\n {\n \"tag\": "salema",\n \"popularity\": 8768\n },\n {\n \"tag\": "Myriapoda",\n \"popularity\": 8758\n },\n {\n \"tag\": "regarrison",\n \"popularity\": 8748\n },\n {\n \"tag\": "overlearned",\n \"popularity\": 8739\n },\n {\n \"tag\": "ultraroyalist conventical bureaucratical",\n \"popularity\": 8729\n },\n {\n \"tag\": "epicaridan",\n \"popularity\": 8720\n },\n {\n \"tag\": "poetastress",\n \"popularity\": 8711\n },\n {\n \"tag\": "monophthalmus",\n \"popularity\": 8701\n },\n {\n \"tag\": "simnel",\n \"popularity\": 8692\n },\n {\n \"tag\": "compotor",\n \"popularity\": 8682\n },\n {\n \"tag\": "hydrolase",\n \"popularity\": 8673\n },\n {\n \"tag\": "attemptless",\n \"popularity\": 8663\n },\n {\n \"tag\": "visceroptosis",\n \"popularity\": 8654\n },\n {\n \"tag\": "unpreparedly",\n \"popularity\": 8645\n },\n {\n \"tag\": "mastage",\n \"popularity\": 8635\n },\n {\n \"tag\": "preinfluence",\n \"popularity\": 8626\n },\n {\n \"tag\": "Siwan",\n \"popularity\": 8617\n },\n {\n \"tag\": "ceratotheca belvedere",\n \"popularity\": 8607\n },\n {\n \"tag\": "disenablement",\n \"popularity\": 8598\n },\n {\n \"tag\": "nine",\n \"popularity\": 8589\n },\n {\n \"tag\": "spellingdown abridgment",\n \"popularity\": 8580\n },\n {\n \"tag\": "twilightless",\n \"popularity\": 8571\n },\n {\n \"tag\": "overflow",\n \"popularity\": 8561\n },\n {\n \"tag\": "mismeasurement",\n \"popularity\": 8552\n },\n {\n \"tag\": "nawabship",\n \"popularity\": 8543\n },\n {\n \"tag\": "Phrynosoma",\n \"popularity\": 8534\n },\n {\n \"tag\": "unanticipatingly",\n \"popularity\": 8525\n },\n {\n \"tag\": "blankite",\n \"popularity\": 8516\n },\n {\n \"tag\": "role",\n \"popularity\": 8506\n },\n {\n \"tag\": "peperine edelweiss",\n \"popularity\": 8497\n },\n {\n \"tag\": "unhysterical",\n \"popularity\": 8488\n },\n {\n \"tag\": "attentiveness",\n \"popularity\": 8479\n },\n {\n \"tag\": "scintillant",\n \"popularity\": 8470\n },\n {\n \"tag\": "stenostomatous",\n \"popularity\": 8461\n },\n {\n \"tag\": "pectinite",\n \"popularity\": 8452\n },\n {\n \"tag\": "herring",\n \"popularity\": 8443\n },\n {\n \"tag\": "interroom",\n \"popularity\": 8434\n },\n {\n \"tag\": "laccol",\n \"popularity\": 8425\n },\n {\n \"tag\": "unpartably kylite",\n \"popularity\": 8416\n },\n {\n \"tag\": "spirivalve",\n \"popularity\": 8407\n },\n {\n \"tag\": "hoosegow",\n \"popularity\": 8398\n },\n {\n \"tag\": "doat",\n \"popularity\": 8389\n },\n {\n \"tag\": "amphibian",\n \"popularity\": 8380\n },\n {\n \"tag\": "exposit",\n \"popularity\": 8371\n },\n {\n \"tag\": "canopy",\n \"popularity\": 8363\n },\n {\n \"tag\": "houndlike",\n \"popularity\": 8354\n },\n {\n \"tag\": "spikebill",\n \"popularity\": 8345\n },\n {\n \"tag\": "wiseacre pyrotechnic",\n \"popularity\": 8336\n },\n {\n \"tag\": "confessingly woodman",\n \"popularity\": 8327\n },\n {\n \"tag\": "overside",\n \"popularity\": 8318\n },\n {\n \"tag\": "oftwhiles",\n \"popularity\": 8310\n },\n {\n \"tag\": "Musophagidae",\n \"popularity\": 8301\n },\n {\n \"tag\": "slumberer",\n \"popularity\": 8292\n },\n {\n \"tag\": "leiotrichy",\n \"popularity\": 8283\n },\n {\n \"tag\": "Mantispidae",\n \"popularity\": 8275\n },\n {\n \"tag\": "perceptually",\n \"popularity\": 8266\n },\n {\n \"tag\": "biller",\n \"popularity\": 8257\n },\n {\n \"tag\": "eudaemonical",\n \"popularity\": 8249\n },\n {\n \"tag\": "underfiend",\n \"popularity\": 8240\n },\n {\n \"tag\": "impartible",\n \"popularity\": 8231\n },\n {\n \"tag\": "saxicavous",\n \"popularity\": 8223\n },\n {\n \"tag\": "yapster",\n \"popularity\": 8214\n },\n {\n \"tag\": "aliseptal",\n \"popularity\": 8205\n },\n {\n \"tag\": "omniparient",\n \"popularity\": 8197\n },\n {\n \"tag\": "nishiki",\n \"popularity\": 8188\n },\n {\n \"tag\": "yuzluk",\n \"popularity\": 8180\n },\n {\n \"tag\": "solderer",\n \"popularity\": 8171\n },\n {\n \"tag\": "Pinna",\n \"popularity\": 8162\n },\n {\n \"tag\": "reinterfere",\n \"popularity\": 8154\n },\n {\n \"tag\": "superepic",\n \"popularity\": 8145\n },\n {\n \"tag\": "ronquil",\n \"popularity\": 8137\n },\n {\n \"tag\": "bratstvo",\n \"popularity\": 8128\n },\n {\n \"tag\": "Thea",\n \"popularity\": 8120\n },\n {\n \"tag\": "hermaphroditical",\n \"popularity\": 8111\n },\n {\n \"tag\": "enlief",\n \"popularity\": 8103\n },\n {\n \"tag\": "Jesuate",\n \"popularity\": 8095\n },\n {\n \"tag\": "gaysome",\n \"popularity\": 8086\n },\n {\n \"tag\": "iliohypogastric",\n \"popularity\": 8078\n },\n {\n \"tag\": "regardance",\n \"popularity\": 8069\n },\n {\n \"tag\": "cumulately",\n \"popularity\": 8061\n },\n {\n \"tag\": "haustorial nucleolocentrosome",\n \"popularity\": 8053\n },\n {\n \"tag\": "cosmocrat",\n \"popularity\": 8044\n },\n {\n \"tag\": "onyxitis",\n \"popularity\": 8036\n },\n {\n \"tag\": "Cabinda",\n \"popularity\": 8028\n },\n {\n \"tag\": "coresort",\n \"popularity\": 8019\n },\n {\n \"tag\": "drusy preformant",\n \"popularity\": 8011\n },\n {\n \"tag\": "piningly",\n \"popularity\": 8003\n },\n {\n \"tag\": "bootlessly",\n \"popularity\": 7994\n },\n {\n \"tag\": "talari",\n \"popularity\": 7986\n },\n {\n \"tag\": "amidoacetal",\n \"popularity\": 7978\n },\n {\n \"tag\": "pschent",\n \"popularity\": 7970\n },\n {\n \"tag\": "consumptional scarer titivate",\n \"popularity\": 7962\n },\n {\n \"tag\": "Anserinae",\n \"popularity\": 7953\n },\n {\n \"tag\": "flaunter",\n \"popularity\": 7945\n },\n {\n \"tag\": "reindeer",\n \"popularity\": 7937\n },\n {\n \"tag\": "disparage",\n \"popularity\": 7929\n },\n {\n \"tag\": "superheat",\n \"popularity\": 7921\n },\n {\n \"tag\": "Chromatium",\n \"popularity\": 7912\n },\n {\n \"tag\": "Tina",\n \"popularity\": 7904\n },\n {\n \"tag\": "rededicatory",\n \"popularity\": 7896\n },\n {\n \"tag\": "nontransient",\n \"popularity\": 7888\n },\n {\n \"tag\": "Phocaean brinkless",\n \"popularity\": 7880\n },\n {\n \"tag\": "ventriculose",\n \"popularity\": 7872\n },\n {\n \"tag\": "upplough",\n \"popularity\": 7864\n },\n {\n \"tag\": "succorless",\n \"popularity\": 7856\n },\n {\n \"tag\": "hayrake",\n \"popularity\": 7848\n },\n {\n \"tag\": "merriness amorphia",\n \"popularity\": 7840\n },\n {\n \"tag\": "merycism",\n \"popularity\": 7832\n },\n {\n \"tag\": "checkrow",\n \"popularity\": 7824\n },\n {\n \"tag\": "scry",\n \"popularity\": 7816\n },\n {\n \"tag\": "obvolve",\n \"popularity\": 7808\n },\n {\n \"tag\": "orchard",\n \"popularity\": 7800\n },\n {\n \"tag\": "isomerize",\n \"popularity\": 7792\n },\n {\n \"tag\": "competitrix",\n \"popularity\": 7784\n },\n {\n \"tag\": "unbannered",\n \"popularity\": 7776\n },\n {\n \"tag\": "undoctrined",\n \"popularity\": 7768\n },\n {\n \"tag\": "theologian",\n \"popularity\": 7760\n },\n {\n \"tag\": "nebby",\n \"popularity\": 7752\n },\n {\n \"tag\": "Cardiazol",\n \"popularity\": 7745\n },\n {\n \"tag\": "phagedenic",\n \"popularity\": 7737\n },\n {\n \"tag\": "nostalgic",\n \"popularity\": 7729\n },\n {\n \"tag\": "orthodoxy",\n \"popularity\": 7721\n },\n {\n \"tag\": "oversanguine",\n \"popularity\": 7713\n },\n {\n \"tag\": "lish",\n \"popularity\": 7705\n },\n {\n \"tag\": "ketogenic",\n \"popularity\": 7698\n },\n {\n \"tag\": "syndicalize",\n \"popularity\": 7690\n },\n {\n \"tag\": "leeftail",\n \"popularity\": 7682\n },\n {\n \"tag\": "bulbomedullary",\n \"popularity\": 7674\n },\n {\n \"tag\": "reletter",\n \"popularity\": 7667\n },\n {\n \"tag\": "bitterly",\n \"popularity\": 7659\n },\n {\n \"tag\": "participatory",\n \"popularity\": 7651\n },\n {\n \"tag\": "baldberry",\n \"popularity\": 7643\n },\n {\n \"tag\": "prowaterpower",\n \"popularity\": 7636\n },\n {\n \"tag\": "lexicographical",\n \"popularity\": 7628\n },\n {\n \"tag\": "Anisodactyli",\n \"popularity\": 7620\n },\n {\n \"tag\": "amphipodous",\n \"popularity\": 7613\n },\n {\n \"tag\": "triglandular",\n \"popularity\": 7605\n },\n {\n \"tag\": "xanthopsin",\n \"popularity\": 7597\n },\n {\n \"tag\": "indefinitude",\n \"popularity\": 7590\n },\n {\n \"tag\": "bookworm",\n \"popularity\": 7582\n },\n {\n \"tag\": "suffocative",\n \"popularity\": 7574\n },\n {\n \"tag\": "uncongested tyrant",\n \"popularity\": 7567\n },\n {\n \"tag\": "alow harmoniously Pamir",\n \"popularity\": 7559\n },\n {\n \"tag\": "monander",\n \"popularity\": 7552\n },\n {\n \"tag\": "bagatelle",\n \"popularity\": 7544\n },\n {\n \"tag\": "membranology",\n \"popularity\": 7537\n },\n {\n \"tag\": "parturifacient",\n \"popularity\": 7529\n },\n {\n \"tag\": "excitovascular",\n \"popularity\": 7522\n },\n {\n \"tag\": "homopolar",\n \"popularity\": 7514\n },\n {\n \"tag\": "phobiac",\n \"popularity\": 7507\n },\n {\n \"tag\": "clype",\n \"popularity\": 7499\n },\n {\n \"tag\": "unsubversive",\n \"popularity\": 7492\n },\n {\n \"tag\": "bostrychoidal scorpionwort",\n \"popularity\": 7484\n },\n {\n \"tag\": "biliteralism",\n \"popularity\": 7477\n },\n {\n \"tag\": "dentatocostate",\n \"popularity\": 7469\n },\n {\n \"tag\": "Pici",\n \"popularity\": 7462\n },\n {\n \"tag\": "sideritic",\n \"popularity\": 7454\n },\n {\n \"tag\": "syntaxis",\n \"popularity\": 7447\n },\n {\n \"tag\": "ingest",\n \"popularity\": 7440\n },\n {\n \"tag\": "rigmarolish",\n \"popularity\": 7432\n },\n {\n \"tag\": "ocreaceous",\n \"popularity\": 7425\n },\n {\n \"tag\": "hyperbrachyskelic",\n \"popularity\": 7418\n },\n {\n \"tag\": "basophobia",\n \"popularity\": 7410\n },\n {\n \"tag\": "substantialness",\n \"popularity\": 7403\n },\n {\n \"tag\": "agglutinoid",\n \"popularity\": 7396\n },\n {\n \"tag\": "longleaf",\n \"popularity\": 7388\n },\n {\n \"tag\": "electroengraving",\n \"popularity\": 7381\n },\n {\n \"tag\": "laparoenterotomy",\n \"popularity\": 7374\n },\n {\n \"tag\": "oxalylurea",\n \"popularity\": 7366\n },\n {\n \"tag\": "unattaintedly",\n \"popularity\": 7359\n },\n {\n \"tag\": "pennystone",\n \"popularity\": 7352\n },\n {\n \"tag\": "Plumbaginaceae",\n \"popularity\": 7345\n },\n {\n \"tag\": "horntip",\n \"popularity\": 7337\n },\n {\n \"tag\": "begrudge",\n \"popularity\": 7330\n },\n {\n \"tag\": "bechignoned",\n \"popularity\": 7323\n },\n {\n \"tag\": "hologonidium",\n \"popularity\": 7316\n },\n {\n \"tag\": "Pulian",\n \"popularity\": 7309\n },\n {\n \"tag\": "gratulation",\n \"popularity\": 7301\n },\n {\n \"tag\": "Sebright",\n \"popularity\": 7294\n },\n {\n \"tag\": "coinstantaneous emotionally",\n \"popularity\": 7287\n },\n {\n \"tag\": "thoracostracan",\n \"popularity\": 7280\n },\n {\n \"tag\": "saurodont",\n \"popularity\": 7273\n },\n {\n \"tag\": "coseat",\n \"popularity\": 7266\n },\n {\n \"tag\": "irascibility",\n \"popularity\": 7259\n },\n {\n \"tag\": "occlude",\n \"popularity\": 7251\n },\n {\n \"tag\": "metallurgist",\n \"popularity\": 7244\n },\n {\n \"tag\": "extraviolet",\n \"popularity\": 7237\n },\n {\n \"tag\": "clinic",\n \"popularity\": 7230\n },\n {\n \"tag\": "skater",\n \"popularity\": 7223\n },\n {\n \"tag\": "linguistic",\n \"popularity\": 7216\n },\n {\n \"tag\": "attacheship",\n \"popularity\": 7209\n },\n {\n \"tag\": "Rachianectes",\n \"popularity\": 7202\n },\n {\n \"tag\": "foliolose",\n \"popularity\": 7195\n },\n {\n \"tag\": "claudetite",\n \"popularity\": 7188\n },\n {\n \"tag\": "aphidian scratching",\n \"popularity\": 7181\n },\n {\n \"tag\": "Carida",\n \"popularity\": 7174\n },\n {\n \"tag\": "tiepin polymicroscope",\n \"popularity\": 7167\n },\n {\n \"tag\": "telpherage",\n \"popularity\": 7160\n },\n {\n \"tag\": "meek",\n \"popularity\": 7153\n },\n {\n \"tag\": "swiftness",\n \"popularity\": 7146\n },\n {\n \"tag\": "gentes",\n \"popularity\": 7139\n },\n {\n \"tag\": "uncommemorated",\n \"popularity\": 7132\n },\n {\n \"tag\": "Lazarus",\n \"popularity\": 7125\n },\n {\n \"tag\": "redivive",\n \"popularity\": 7119\n },\n {\n \"tag\": "nonfebrile",\n \"popularity\": 7112\n },\n {\n \"tag\": "nymphet",\n \"popularity\": 7105\n },\n {\n \"tag\": "areologically",\n \"popularity\": 7098\n },\n {\n \"tag\": "undonkey",\n \"popularity\": 7091\n },\n {\n \"tag\": "projecting",\n \"popularity\": 7084\n },\n {\n \"tag\": "pinnigrade",\n \"popularity\": 7077\n },\n {\n \"tag\": "butylation",\n \"popularity\": 7071\n },\n {\n \"tag\": "philologistic lenticle",\n \"popularity\": 7064\n },\n {\n \"tag\": "nooky",\n \"popularity\": 7057\n },\n {\n \"tag\": "incestuousness",\n \"popularity\": 7050\n },\n {\n \"tag\": "palingenetically",\n \"popularity\": 7043\n },\n {\n \"tag\": "mitochondria",\n \"popularity\": 7037\n },\n {\n \"tag\": "truthify",\n \"popularity\": 7030\n },\n {\n \"tag\": "titanyl",\n \"popularity\": 7023\n },\n {\n \"tag\": "bestride",\n \"popularity\": 7016\n },\n {\n \"tag\": "chende",\n \"popularity\": 7010\n },\n {\n \"tag\": "Chaucerian monophote",\n \"popularity\": 7003\n },\n {\n \"tag\": "cutback",\n \"popularity\": 6996\n },\n {\n \"tag\": "unpatiently",\n \"popularity\": 6989\n },\n {\n \"tag\": "subvitreous",\n \"popularity\": 6983\n },\n {\n \"tag\": "organizable",\n \"popularity\": 6976\n },\n {\n \"tag\": "anniverse uncomprehensible",\n \"popularity\": 6969\n },\n {\n \"tag\": "hyalescence",\n \"popularity\": 6963\n },\n {\n \"tag\": "amniochorial",\n \"popularity\": 6956\n },\n {\n \"tag\": "Corybantian",\n \"popularity\": 6949\n },\n {\n \"tag\": "genocide Scaphitidae",\n \"popularity\": 6943\n },\n {\n \"tag\": "accordionist",\n \"popularity\": 6936\n },\n {\n \"tag\": "becheck",\n \"popularity\": 6930\n },\n {\n \"tag\": "overproduce",\n \"popularity\": 6923\n },\n {\n \"tag\": "unmaniac frijolillo",\n \"popularity\": 6916\n },\n {\n \"tag\": "multisulcated",\n \"popularity\": 6910\n },\n {\n \"tag\": "wennebergite",\n \"popularity\": 6903\n },\n {\n \"tag\": "tautousious mowth",\n \"popularity\": 6897\n },\n {\n \"tag\": "marigold",\n \"popularity\": 6890\n },\n {\n \"tag\": "affray",\n \"popularity\": 6884\n },\n {\n \"tag\": "nonidolatrous",\n \"popularity\": 6877\n },\n {\n \"tag\": "aphrasia",\n \"popularity\": 6871\n },\n {\n \"tag\": "muddlingly",\n \"popularity\": 6864\n },\n {\n \"tag\": "clear",\n \"popularity\": 6858\n },\n {\n \"tag\": "Clitoria",\n \"popularity\": 6851\n },\n {\n \"tag\": "apportionment underwaist",\n \"popularity\": 6845\n },\n {\n \"tag\": "kodakist",\n \"popularity\": 6838\n },\n {\n \"tag\": "Momotidae",\n \"popularity\": 6832\n },\n {\n \"tag\": "cryptovalency",\n \"popularity\": 6825\n },\n {\n \"tag\": "floe",\n \"popularity\": 6819\n },\n {\n \"tag\": "aphagia",\n \"popularity\": 6812\n },\n {\n \"tag\": "brontograph",\n \"popularity\": 6806\n },\n {\n \"tag\": "tubulous",\n \"popularity\": 6799\n },\n {\n \"tag\": "unhorse",\n \"popularity\": 6793\n },\n {\n \"tag\": "chlordane",\n \"popularity\": 6787\n },\n {\n \"tag\": "colloquy brochan",\n \"popularity\": 6780\n },\n {\n \"tag\": "sloosh",\n \"popularity\": 6774\n },\n {\n \"tag\": "battered",\n \"popularity\": 6767\n },\n {\n \"tag\": "monocularity pluriguttulate",\n \"popularity\": 6761\n },\n {\n \"tag\": "chiastoneury",\n \"popularity\": 6755\n },\n {\n \"tag\": "Sanguinaria",\n \"popularity\": 6748\n },\n {\n \"tag\": "confessionary",\n \"popularity\": 6742\n },\n {\n \"tag\": "enzymic",\n \"popularity\": 6736\n },\n {\n \"tag\": "cord",\n \"popularity\": 6729\n },\n {\n \"tag\": "oviducal",\n \"popularity\": 6723\n },\n {\n \"tag\": "crozzle outsea",\n \"popularity\": 6717\n },\n {\n \"tag\": "balladical",\n \"popularity\": 6710\n },\n {\n \"tag\": "uncollectibleness",\n \"popularity\": 6704\n },\n {\n \"tag\": "predorsal",\n \"popularity\": 6698\n },\n {\n \"tag\": "reauthenticate",\n \"popularity\": 6692\n },\n {\n \"tag\": "ravissant",\n \"popularity\": 6685\n },\n {\n \"tag\": "advantageousness",\n \"popularity\": 6679\n },\n {\n \"tag\": "rung",\n \"popularity\": 6673\n },\n {\n \"tag\": "duncedom",\n \"popularity\": 6667\n },\n {\n \"tag\": "hematolite",\n \"popularity\": 6660\n },\n {\n \"tag\": "thisness",\n \"popularity\": 6654\n },\n {\n \"tag\": "mapau",\n \"popularity\": 6648\n },\n {\n \"tag\": "Hecatic",\n \"popularity\": 6642\n },\n {\n \"tag\": "meningoencephalocele",\n \"popularity\": 6636\n },\n {\n \"tag\": "confection sorra",\n \"popularity\": 6630\n },\n {\n \"tag\": "unsedate",\n \"popularity\": 6623\n },\n {\n \"tag\": "meningocerebritis",\n \"popularity\": 6617\n },\n {\n \"tag\": "biopsychological",\n \"popularity\": 6611\n },\n {\n \"tag\": "clavicithern",\n \"popularity\": 6605\n },\n {\n \"tag\": "resun",\n \"popularity\": 6599\n },\n {\n \"tag\": "bayamo",\n \"popularity\": 6593\n },\n {\n \"tag\": "seeableness",\n \"popularity\": 6587\n },\n {\n \"tag\": "hypsidolichocephalism",\n \"popularity\": 6581\n },\n {\n \"tag\": "salivous",\n \"popularity\": 6574\n },\n {\n \"tag\": "neumatize",\n \"popularity\": 6568\n },\n {\n \"tag\": "stree",\n \"popularity\": 6562\n },\n {\n \"tag\": "markshot",\n \"popularity\": 6556\n },\n {\n \"tag\": "phraseologically",\n \"popularity\": 6550\n },\n {\n \"tag\": "yealing",\n \"popularity\": 6544\n },\n {\n \"tag\": "puggy",\n \"popularity\": 6538\n },\n {\n \"tag\": "sexadecimal",\n \"popularity\": 6532\n },\n {\n \"tag\": "unofficerlike",\n \"popularity\": 6526\n },\n {\n \"tag\": "curiosa",\n \"popularity\": 6520\n },\n {\n \"tag\": "pedomotor",\n \"popularity\": 6514\n },\n {\n \"tag\": "astrally",\n \"popularity\": 6508\n },\n {\n \"tag\": "prosomatic",\n \"popularity\": 6502\n },\n {\n \"tag\": "bulletheaded",\n \"popularity\": 6496\n },\n {\n \"tag\": "fortuned",\n \"popularity\": 6490\n },\n {\n \"tag\": "pixy",\n \"popularity\": 6484\n },\n {\n \"tag\": "protectrix",\n \"popularity\": 6478\n },\n {\n \"tag\": "arthritical",\n \"popularity\": 6472\n },\n {\n \"tag\": "coction",\n \"popularity\": 6466\n },\n {\n \"tag\": "Anthropos",\n \"popularity\": 6460\n },\n {\n \"tag\": "runer",\n \"popularity\": 6454\n },\n {\n \"tag\": "prenotify",\n \"popularity\": 6449\n },\n {\n \"tag\": "microspheric gastroparalysis",\n \"popularity\": 6443\n },\n {\n \"tag\": "Jovicentrical",\n \"popularity\": 6437\n },\n {\n \"tag\": "ceratopsid",\n \"popularity\": 6431\n },\n {\n \"tag\": "Theodoric",\n \"popularity\": 6425\n },\n {\n \"tag\": "Pactolus",\n \"popularity\": 6419\n },\n {\n \"tag\": "spawning",\n \"popularity\": 6413\n },\n {\n \"tag\": "nonconfidential",\n \"popularity\": 6407\n },\n {\n \"tag\": "halotrichite infumate",\n \"popularity\": 6402\n },\n {\n \"tag\": "undiscriminatingly",\n \"popularity\": 6396\n },\n {\n \"tag\": "unexasperated",\n \"popularity\": 6390\n },\n {\n \"tag\": "isoeugenol",\n \"popularity\": 6384\n },\n {\n \"tag\": "pressboard",\n \"popularity\": 6378\n },\n {\n \"tag\": "unshrew",\n \"popularity\": 6372\n },\n {\n \"tag\": "huffingly",\n \"popularity\": 6367\n },\n {\n \"tag\": "wagaun",\n \"popularity\": 6361\n },\n {\n \"tag\": "squirt Philistine",\n \"popularity\": 6355\n },\n {\n \"tag\": "kryptic",\n \"popularity\": 6349\n },\n {\n \"tag\": "paraform",\n \"popularity\": 6344\n },\n {\n \"tag\": "preverify",\n \"popularity\": 6338\n },\n {\n \"tag\": "dalar",\n \"popularity\": 6332\n },\n {\n \"tag\": "interdictor appraisingly",\n \"popularity\": 6326\n },\n {\n \"tag\": "chipped",\n \"popularity\": 6321\n },\n {\n \"tag\": "Pteropoda",\n \"popularity\": 6315\n },\n {\n \"tag\": "Bohairic",\n \"popularity\": 6309\n },\n {\n \"tag\": "felting",\n \"popularity\": 6303\n },\n {\n \"tag\": "compurgatorial",\n \"popularity\": 6298\n },\n {\n \"tag\": "unclead",\n \"popularity\": 6292\n },\n {\n \"tag\": "stockish",\n \"popularity\": 6286\n },\n {\n \"tag\": "mulligatawny",\n \"popularity\": 6281\n },\n {\n \"tag\": "Monotheletism",\n \"popularity\": 6275\n },\n {\n \"tag\": "lutanist",\n \"popularity\": 6269\n },\n {\n \"tag\": "gluttonize",\n \"popularity\": 6264\n },\n {\n \"tag\": "hackneyed",\n \"popularity\": 6258\n },\n {\n \"tag\": "yield",\n \"popularity\": 6253\n },\n {\n \"tag\": "sulphonamido",\n \"popularity\": 6247\n },\n {\n \"tag\": "granulative",\n \"popularity\": 6241\n },\n {\n \"tag\": "swingy",\n \"popularity\": 6236\n },\n {\n \"tag\": "Desmidiales",\n \"popularity\": 6230\n },\n {\n \"tag\": "tootlish",\n \"popularity\": 6224\n },\n {\n \"tag\": "unsatisfiedly",\n \"popularity\": 6219\n },\n {\n \"tag\": "burucha",\n \"popularity\": 6213\n },\n {\n \"tag\": "premeditatingly",\n \"popularity\": 6208\n },\n {\n \"tag\": "cowrie",\n \"popularity\": 6202\n },\n {\n \"tag\": "pleurolysis",\n \"popularity\": 6197\n },\n {\n \"tag\": "nationalist",\n \"popularity\": 6191\n },\n {\n \"tag\": "Pholadacea",\n \"popularity\": 6186\n },\n {\n \"tag\": "anakrousis",\n \"popularity\": 6180\n },\n {\n \"tag\": "proctorial",\n \"popularity\": 6175\n },\n {\n \"tag\": "cavillation",\n \"popularity\": 6169\n },\n {\n \"tag\": "cervicobregmatic",\n \"popularity\": 6163\n },\n {\n \"tag\": "interspecific",\n \"popularity\": 6158\n },\n {\n \"tag\": "Teutonity",\n \"popularity\": 6152\n },\n {\n \"tag\": "snakeholing",\n \"popularity\": 6147\n },\n {\n \"tag\": "balcony",\n \"popularity\": 6142\n },\n {\n \"tag\": "latchless",\n \"popularity\": 6136\n },\n {\n \"tag\": "Mithraea",\n \"popularity\": 6131\n },\n {\n \"tag\": "pseudepigraph",\n \"popularity\": 6125\n },\n {\n \"tag\": "flosser",\n \"popularity\": 6120\n },\n {\n \"tag\": "kotyle",\n \"popularity\": 6114\n },\n {\n \"tag\": "outdo",\n \"popularity\": 6109\n },\n {\n \"tag\": "interclerical",\n \"popularity\": 6103\n },\n {\n \"tag\": "aurar",\n \"popularity\": 6098\n },\n {\n \"tag\": "apophyseal",\n \"popularity\": 6093\n },\n {\n \"tag\": "Miro",\n \"popularity\": 6087\n },\n {\n \"tag\": "Priscillian",\n \"popularity\": 6082\n },\n {\n \"tag\": "alluvia",\n \"popularity\": 6076\n },\n {\n \"tag\": "exordize",\n \"popularity\": 6071\n },\n {\n \"tag\": "breakage",\n \"popularity\": 6066\n },\n {\n \"tag\": "unclosable",\n \"popularity\": 6060\n },\n {\n \"tag\": "monocondylous",\n \"popularity\": 6055\n },\n {\n \"tag\": "dyarchy",\n \"popularity\": 6050\n },\n {\n \"tag\": "subchelate",\n \"popularity\": 6044\n },\n {\n \"tag\": "hearsay",\n \"popularity\": 6039\n },\n {\n \"tag\": "prestigiously",\n \"popularity\": 6034\n },\n {\n \"tag\": "unimuscular",\n \"popularity\": 6028\n },\n {\n \"tag\": "lingwort",\n \"popularity\": 6023\n },\n {\n \"tag\": "jealous",\n \"popularity\": 6018\n },\n {\n \"tag\": "artilleryman",\n \"popularity\": 6012\n },\n {\n \"tag\": "phantasmagorially",\n \"popularity\": 6007\n },\n {\n \"tag\": "stagnum",\n \"popularity\": 6002\n },\n {\n \"tag\": "organotropism shatteringly",\n \"popularity\": 5997\n },\n {\n \"tag\": "Mytilus Hebraist",\n \"popularity\": 5991\n },\n {\n \"tag\": "returf",\n \"popularity\": 5986\n },\n {\n \"tag\": "townfolk",\n \"popularity\": 5981\n },\n {\n \"tag\": "propitiative",\n \"popularity\": 5976\n },\n {\n \"tag\": "Anita unsullied",\n \"popularity\": 5970\n },\n {\n \"tag\": "bandoleered",\n \"popularity\": 5965\n },\n {\n \"tag\": "cubby",\n \"popularity\": 5960\n },\n {\n \"tag\": "Hexanchus",\n \"popularity\": 5955\n },\n {\n \"tag\": "circuminsular",\n \"popularity\": 5949\n },\n {\n \"tag\": "chamberletted eumycete",\n \"popularity\": 5944\n },\n {\n \"tag\": "secure",\n \"popularity\": 5939\n },\n {\n \"tag\": "Edwardean",\n \"popularity\": 5934\n },\n {\n \"tag\": "strenth",\n \"popularity\": 5929\n },\n {\n \"tag\": "exhaustless",\n \"popularity\": 5923\n },\n {\n \"tag\": "electioneerer",\n \"popularity\": 5918\n },\n {\n \"tag\": "estoile",\n \"popularity\": 5913\n },\n {\n \"tag\": "redden",\n \"popularity\": 5908\n },\n {\n \"tag\": "solicitee",\n \"popularity\": 5903\n },\n {\n \"tag\": "nonpatented",\n \"popularity\": 5898\n },\n {\n \"tag\": "lemming",\n \"popularity\": 5893\n },\n {\n \"tag\": "marled subalate",\n \"popularity\": 5887\n },\n {\n \"tag\": "premial horizonward",\n \"popularity\": 5882\n },\n {\n \"tag\": "nonrefueling",\n \"popularity\": 5877\n },\n {\n \"tag\": "rupturewort",\n \"popularity\": 5872\n },\n {\n \"tag\": "unfed",\n \"popularity\": 5867\n },\n {\n \"tag\": "empanelment",\n \"popularity\": 5862\n },\n {\n \"tag\": "isoosmosis",\n \"popularity\": 5857\n },\n {\n \"tag\": "jipijapa",\n \"popularity\": 5852\n },\n {\n \"tag\": "Fiji",\n \"popularity\": 5847\n },\n {\n \"tag\": "interferant",\n \"popularity\": 5842\n },\n {\n \"tag\": "reconstitution",\n \"popularity\": 5837\n },\n {\n \"tag\": "dockyardman",\n \"popularity\": 5832\n },\n {\n \"tag\": "dolichopodous",\n \"popularity\": 5826\n },\n {\n \"tag\": "whiteworm",\n \"popularity\": 5821\n },\n {\n \"tag\": "atheistically",\n \"popularity\": 5816\n },\n {\n \"tag\": "nonconcern",\n \"popularity\": 5811\n },\n {\n \"tag\": "scarabaeidoid",\n \"popularity\": 5806\n },\n {\n \"tag\": "triumviri",\n \"popularity\": 5801\n },\n {\n \"tag\": "rakit",\n \"popularity\": 5796\n },\n {\n \"tag\": "leecheater",\n \"popularity\": 5791\n },\n {\n \"tag\": "Arthrostraca",\n \"popularity\": 5786\n },\n {\n \"tag\": "upknit",\n \"popularity\": 5781\n },\n {\n \"tag\": "tymbalon",\n \"popularity\": 5776\n },\n {\n \"tag\": "inventurous",\n \"popularity\": 5771\n },\n {\n \"tag\": "perradiate",\n \"popularity\": 5766\n },\n {\n \"tag\": "seer",\n \"popularity\": 5762\n },\n {\n \"tag\": "Auricularia",\n \"popularity\": 5757\n },\n {\n \"tag\": "wettish exclusivity",\n \"popularity\": 5752\n },\n {\n \"tag\": "arteriosympathectomy",\n \"popularity\": 5747\n },\n {\n \"tag\": "tunlike",\n \"popularity\": 5742\n },\n {\n \"tag\": "cephalocercal",\n \"popularity\": 5737\n },\n {\n \"tag\": "meaninglessness",\n \"popularity\": 5732\n },\n {\n \"tag\": "fountful",\n \"popularity\": 5727\n },\n {\n \"tag\": "appraisement",\n \"popularity\": 5722\n },\n {\n \"tag\": "geniculated",\n \"popularity\": 5717\n },\n {\n \"tag\": "rotator",\n \"popularity\": 5712\n },\n {\n \"tag\": "foremarch biography",\n \"popularity\": 5707\n },\n {\n \"tag\": "arid",\n \"popularity\": 5703\n },\n {\n \"tag\": "inapprehensible",\n \"popularity\": 5698\n },\n {\n \"tag\": "chlorosulphonic",\n \"popularity\": 5693\n },\n {\n \"tag\": "braguette",\n \"popularity\": 5688\n },\n {\n \"tag\": "panophthalmitis",\n \"popularity\": 5683\n },\n {\n \"tag\": "pro objurgatorily",\n \"popularity\": 5678\n },\n {\n \"tag\": "zooplasty",\n \"popularity\": 5673\n },\n {\n \"tag\": "Terebratulidae",\n \"popularity\": 5669\n },\n {\n \"tag\": "Mahran",\n \"popularity\": 5664\n },\n {\n \"tag\": "anthologize merocele",\n \"popularity\": 5659\n },\n {\n \"tag\": "firecracker chiropractic",\n \"popularity\": 5654\n },\n {\n \"tag\": "tenorist",\n \"popularity\": 5649\n },\n {\n \"tag\": "amphitene",\n \"popularity\": 5645\n },\n {\n \"tag\": "silverbush toadstone",\n \"popularity\": 5640\n },\n {\n \"tag\": "entozoological",\n \"popularity\": 5635\n },\n {\n \"tag\": "trustlessness",\n \"popularity\": 5630\n },\n {\n \"tag\": "reassay",\n \"popularity\": 5625\n },\n {\n \"tag\": "chrysalides",\n \"popularity\": 5621\n },\n {\n \"tag\": "truncation",\n \"popularity\": 5616\n },\n {\n \"tag\": "unwavered mausoleal",\n \"popularity\": 5611\n },\n {\n \"tag\": "unserrated",\n \"popularity\": 5606\n },\n {\n \"tag\": "frampler",\n \"popularity\": 5602\n },\n {\n \"tag\": "celestial",\n \"popularity\": 5597\n },\n {\n \"tag\": "depreter",\n \"popularity\": 5592\n },\n {\n \"tag\": "retaliate",\n \"popularity\": 5588\n },\n {\n \"tag\": "decempunctate",\n \"popularity\": 5583\n },\n {\n \"tag\": "submitter",\n \"popularity\": 5578\n },\n {\n \"tag\": "phenothiazine",\n \"popularity\": 5573\n },\n {\n \"tag\": "hobbledehoyish",\n \"popularity\": 5569\n },\n {\n \"tag\": "erraticness",\n \"popularity\": 5564\n },\n {\n \"tag\": "ovariodysneuria",\n \"popularity\": 5559\n },\n {\n \"tag\": "puja",\n \"popularity\": 5555\n },\n {\n \"tag\": "cesspool",\n \"popularity\": 5550\n },\n {\n \"tag\": "sonation",\n \"popularity\": 5545\n },\n {\n \"tag\": "moggan",\n \"popularity\": 5541\n },\n {\n \"tag\": "overjutting",\n \"popularity\": 5536\n },\n {\n \"tag\": "cohobate",\n \"popularity\": 5531\n },\n {\n \"tag\": "Distoma",\n \"popularity\": 5527\n },\n {\n \"tag\": "Plectognathi",\n \"popularity\": 5522\n },\n {\n \"tag\": "dumple caliphate",\n \"popularity\": 5517\n },\n {\n \"tag\": "shiko",\n \"popularity\": 5513\n },\n {\n \"tag\": "downness",\n \"popularity\": 5508\n },\n {\n \"tag\": "whippletree",\n \"popularity\": 5504\n },\n {\n \"tag\": "nymphaeum",\n \"popularity\": 5499\n },\n {\n \"tag\": "there trest",\n \"popularity\": 5494\n },\n {\n \"tag\": "psychrometer",\n \"popularity\": 5490\n },\n {\n \"tag\": "pyelograph",\n \"popularity\": 5485\n },\n {\n \"tag\": "unsalvable",\n \"popularity\": 5481\n },\n {\n \"tag\": "bescreen",\n \"popularity\": 5476\n },\n {\n \"tag\": "cushy",\n \"popularity\": 5471\n },\n {\n \"tag\": "plicatolobate",\n \"popularity\": 5467\n },\n {\n \"tag\": "lakie",\n \"popularity\": 5462\n },\n {\n \"tag\": "anthropodeoxycholic",\n \"popularity\": 5458\n },\n {\n \"tag\": "resatisfaction",\n \"popularity\": 5453\n },\n {\n \"tag\": "unravelment unaccidental",\n \"popularity\": 5449\n },\n {\n \"tag\": "telewriter monogeneous",\n \"popularity\": 5444\n },\n {\n \"tag\": "unsabred",\n \"popularity\": 5440\n },\n {\n \"tag\": "startlingly",\n \"popularity\": 5435\n },\n {\n \"tag\": "Aralia",\n \"popularity\": 5431\n },\n {\n \"tag\": "alamonti",\n \"popularity\": 5426\n },\n {\n \"tag\": "Franklinization",\n \"popularity\": 5422\n },\n {\n \"tag\": "parliament",\n \"popularity\": 5417\n },\n {\n \"tag\": "schoolkeeper",\n \"popularity\": 5413\n },\n {\n \"tag\": "nonsociety",\n \"popularity\": 5408\n },\n {\n \"tag\": "parenthetic",\n \"popularity\": 5404\n },\n {\n \"tag\": "stog",\n \"popularity\": 5399\n },\n {\n \"tag\": "Pristipomidae",\n \"popularity\": 5395\n },\n {\n \"tag\": "exocarp",\n \"popularity\": 5390\n },\n {\n \"tag\": "monaxonial",\n \"popularity\": 5386\n },\n {\n \"tag\": "tramroad",\n \"popularity\": 5381\n },\n {\n \"tag\": "hookah",\n \"popularity\": 5377\n },\n {\n \"tag\": "saccharonic",\n \"popularity\": 5372\n },\n {\n \"tag\": "perimetrium",\n \"popularity\": 5368\n },\n {\n \"tag\": "libelluloid",\n \"popularity\": 5364\n },\n {\n \"tag\": "overrunningly",\n \"popularity\": 5359\n },\n {\n \"tag\": "untwister",\n \"popularity\": 5355\n },\n {\n \"tag\": "ninnyhammer",\n \"popularity\": 5350\n },\n {\n \"tag\": "metranate",\n \"popularity\": 5346\n },\n {\n \"tag\": "sarcoblast",\n \"popularity\": 5341\n },\n {\n \"tag\": "porkish",\n \"popularity\": 5337\n },\n {\n \"tag\": "chauvinistic",\n \"popularity\": 5333\n },\n {\n \"tag\": "sexagesimal",\n \"popularity\": 5328\n },\n {\n \"tag\": "hematogenic",\n \"popularity\": 5324\n },\n {\n \"tag\": "selfpreservatory",\n \"popularity\": 5320\n },\n {\n \"tag\": "myelauxe",\n \"popularity\": 5315\n },\n {\n \"tag\": "triply",\n \"popularity\": 5311\n },\n {\n \"tag\": "metaphysicous",\n \"popularity\": 5306\n },\n {\n \"tag\": "vitrinoid",\n \"popularity\": 5302\n },\n {\n \"tag\": "glabellae",\n \"popularity\": 5298\n },\n {\n \"tag\": "moonlighter",\n \"popularity\": 5293\n },\n {\n \"tag\": "monotheistically epexegetical",\n \"popularity\": 5289\n },\n {\n \"tag\": "pseudolateral",\n \"popularity\": 5285\n },\n {\n \"tag\": "heptamethylene",\n \"popularity\": 5280\n },\n {\n \"tag\": "salvadora",\n \"popularity\": 5276\n },\n {\n \"tag\": "unjovial diphenylthiourea",\n \"popularity\": 5272\n },\n {\n \"tag\": "thievishness",\n \"popularity\": 5268\n },\n {\n \"tag\": "unridable",\n \"popularity\": 5263\n },\n {\n \"tag\": "underhandedly",\n \"popularity\": 5259\n },\n {\n \"tag\": "fungiform",\n \"popularity\": 5255\n },\n {\n \"tag\": "scruffle",\n \"popularity\": 5250\n },\n {\n \"tag\": "preindisposition",\n \"popularity\": 5246\n },\n {\n \"tag\": "Amadis",\n \"popularity\": 5242\n },\n {\n \"tag\": "Culex",\n \"popularity\": 5238\n },\n {\n \"tag\": "churning",\n \"popularity\": 5233\n },\n {\n \"tag\": "imperite",\n \"popularity\": 5229\n },\n {\n \"tag\": "levorotation",\n \"popularity\": 5225\n },\n {\n \"tag\": "barbate",\n \"popularity\": 5221\n },\n {\n \"tag\": "knotwort",\n \"popularity\": 5216\n },\n {\n \"tag\": "gypsiferous",\n \"popularity\": 5212\n },\n {\n \"tag\": "tourmalinic",\n \"popularity\": 5208\n },\n {\n \"tag\": "helleboric",\n \"popularity\": 5204\n },\n {\n \"tag\": "pneumograph",\n \"popularity\": 5199\n },\n {\n \"tag\": "Peltigeraceae",\n \"popularity\": 5195\n },\n {\n \"tag\": "busine",\n \"popularity\": 5191\n },\n {\n \"tag\": "Ailuridae",\n \"popularity\": 5187\n },\n {\n \"tag\": "azotate",\n \"popularity\": 5183\n },\n {\n \"tag\": "unlikable",\n \"popularity\": 5178\n },\n {\n \"tag\": "sloyd",\n \"popularity\": 5174\n },\n {\n \"tag\": "biblioclasm",\n \"popularity\": 5170\n },\n {\n \"tag\": "Seres",\n \"popularity\": 5166\n },\n {\n \"tag\": "unaccurateness",\n \"popularity\": 5162\n },\n {\n \"tag\": "scrollwise",\n \"popularity\": 5157\n },\n {\n \"tag\": "flandowser",\n \"popularity\": 5153\n },\n {\n \"tag\": "unblackened",\n \"popularity\": 5149\n },\n {\n \"tag\": "schistosternia",\n \"popularity\": 5145\n },\n {\n \"tag\": "fuse",\n \"popularity\": 5141\n },\n {\n \"tag\": "narthecal",\n \"popularity\": 5137\n },\n {\n \"tag\": "Cueva",\n \"popularity\": 5133\n },\n {\n \"tag\": "appositeness",\n \"popularity\": 5128\n },\n {\n \"tag\": "proindustrial",\n \"popularity\": 5124\n },\n {\n \"tag\": "dermatorrhoea",\n \"popularity\": 5120\n },\n {\n \"tag\": "oxyurous tendential",\n \"popularity\": 5116\n },\n {\n \"tag\": "isopurpurin",\n \"popularity\": 5112\n },\n {\n \"tag\": "impose",\n \"popularity\": 5108\n },\n {\n \"tag\": "wordsmanship",\n \"popularity\": 5104\n },\n {\n \"tag\": "saturator",\n \"popularity\": 5100\n },\n {\n \"tag\": "Nordicity",\n \"popularity\": 5096\n },\n {\n \"tag\": "interaccuse",\n \"popularity\": 5092\n },\n {\n \"tag\": "acridinic",\n \"popularity\": 5087\n },\n {\n \"tag\": "scholion",\n \"popularity\": 5083\n },\n {\n \"tag\": "pseudoaconitine",\n \"popularity\": 5079\n },\n {\n \"tag\": "doctorial",\n \"popularity\": 5075\n },\n {\n \"tag\": "Etchimin",\n \"popularity\": 5071\n },\n {\n \"tag\": "oliviform",\n \"popularity\": 5067\n },\n {\n \"tag\": "Pele",\n \"popularity\": 5063\n },\n {\n \"tag\": "Chiromantis Progymnasium",\n \"popularity\": 5059\n },\n {\n \"tag\": "toxosis",\n \"popularity\": 5055\n },\n {\n \"tag\": "spadilla",\n \"popularity\": 5051\n },\n {\n \"tag\": "Actinopterygii",\n \"popularity\": 5047\n },\n {\n \"tag\": "untiring",\n \"popularity\": 5043\n },\n {\n \"tag\": "butyral",\n \"popularity\": 5039\n },\n {\n \"tag\": "Gymnoderinae",\n \"popularity\": 5035\n },\n {\n \"tag\": "testudo",\n \"popularity\": 5031\n },\n {\n \"tag\": "frigorify",\n \"popularity\": 5027\n },\n {\n \"tag\": "aliency",\n \"popularity\": 5023\n },\n {\n \"tag\": "jargon",\n \"popularity\": 5019\n },\n {\n \"tag\": "counterservice",\n \"popularity\": 5015\n },\n {\n \"tag\": "isostrychnine",\n \"popularity\": 5011\n },\n {\n \"tag\": "tellership",\n \"popularity\": 5007\n },\n {\n \"tag\": "miscegenetic",\n \"popularity\": 5003\n },\n {\n \"tag\": "sorcer",\n \"popularity\": 4999\n },\n {\n \"tag\": "tilewright",\n \"popularity\": 4995\n },\n {\n \"tag\": "cyanoplastid",\n \"popularity\": 4991\n },\n {\n \"tag\": "fluxionally",\n \"popularity\": 4987\n },\n {\n \"tag\": "proudhearted",\n \"popularity\": 4983\n },\n {\n \"tag\": "blithely",\n \"popularity\": 4979\n },\n {\n \"tag\": "jestproof",\n \"popularity\": 4975\n },\n {\n \"tag\": "jestwise",\n \"popularity\": 4971\n },\n {\n \"tag\": "nonassimilable",\n \"popularity\": 4967\n },\n {\n \"tag\": "compurgation",\n \"popularity\": 4964\n },\n {\n \"tag\": "unhate",\n \"popularity\": 4960\n },\n {\n \"tag\": "haplodonty",\n \"popularity\": 4956\n },\n {\n \"tag\": "cardholder",\n \"popularity\": 4952\n },\n {\n \"tag\": "rainlight megohmmeter overstout",\n \"popularity\": 4948\n },\n {\n \"tag\": "itchless",\n \"popularity\": 4944\n },\n {\n \"tag\": "begiggle",\n \"popularity\": 4940\n },\n {\n \"tag\": "chromatosphere",\n \"popularity\": 4936\n },\n {\n \"tag\": "typicality",\n \"popularity\": 4932\n },\n {\n \"tag\": "overgrown",\n \"popularity\": 4928\n },\n {\n \"tag\": "envolume",\n \"popularity\": 4925\n },\n {\n \"tag\": "pachycholia",\n \"popularity\": 4921\n },\n {\n \"tag\": "passageable",\n \"popularity\": 4917\n },\n {\n \"tag\": "pathopoiesis",\n \"popularity\": 4913\n },\n {\n \"tag\": "overbreak",\n \"popularity\": 4909\n },\n {\n \"tag\": "satyric",\n \"popularity\": 4905\n },\n {\n \"tag\": "unaudited",\n \"popularity\": 4901\n },\n {\n \"tag\": "whimble",\n \"popularity\": 4898\n },\n {\n \"tag\": "pressureless",\n \"popularity\": 4894\n },\n {\n \"tag\": "Selene",\n \"popularity\": 4890\n },\n {\n \"tag\": "slithery",\n \"popularity\": 4886\n },\n {\n \"tag\": "nondisfigurement",\n \"popularity\": 4882\n },\n {\n \"tag\": "overdelicious",\n \"popularity\": 4878\n },\n {\n \"tag\": "Perca",\n \"popularity\": 4875\n },\n {\n \"tag\": "Palladium",\n \"popularity\": 4871\n },\n {\n \"tag\": "insagacity",\n \"popularity\": 4867\n },\n {\n \"tag\": "peristoma",\n \"popularity\": 4863\n },\n {\n \"tag\": "uncreativeness",\n \"popularity\": 4859\n },\n {\n \"tag\": "incomparability surfboarding",\n \"popularity\": 4856\n },\n {\n \"tag\": "bacillar",\n \"popularity\": 4852\n },\n {\n \"tag\": "ulcerative",\n \"popularity\": 4848\n },\n {\n \"tag\": "stychomythia",\n \"popularity\": 4844\n },\n {\n \"tag\": "sesma somatics nonentry",\n \"popularity\": 4840\n },\n {\n \"tag\": "unsepulchred",\n \"popularity\": 4837\n },\n {\n \"tag\": "cephalanthium",\n \"popularity\": 4833\n },\n {\n \"tag\": "Asiaticization",\n \"popularity\": 4829\n },\n {\n \"tag\": "killeen",\n \"popularity\": 4825\n },\n {\n \"tag\": "Pseudococcus",\n \"popularity\": 4822\n },\n {\n \"tag\": "untractable",\n \"popularity\": 4818\n },\n {\n \"tag\": "apolegamic",\n \"popularity\": 4814\n },\n {\n \"tag\": "hyperpnea",\n \"popularity\": 4810\n },\n {\n \"tag\": "martyrolatry",\n \"popularity\": 4807\n },\n {\n \"tag\": "Sarmatic",\n \"popularity\": 4803\n },\n {\n \"tag\": "nonsurface",\n \"popularity\": 4799\n },\n {\n \"tag\": "adjoined",\n \"popularity\": 4796\n },\n {\n \"tag\": "vasiform",\n \"popularity\": 4792\n },\n {\n \"tag\": "tastelessness",\n \"popularity\": 4788\n },\n {\n \"tag\": "rumbo",\n \"popularity\": 4784\n },\n {\n \"tag\": "subdititious",\n \"popularity\": 4781\n },\n {\n \"tag\": "reparticipation",\n \"popularity\": 4777\n },\n {\n \"tag\": "Yorkshireism",\n \"popularity\": 4773\n },\n {\n \"tag\": "outcrow",\n \"popularity\": 4770\n },\n {\n \"tag\": "casserole",\n \"popularity\": 4766\n },\n {\n \"tag\": "semideltaic",\n \"popularity\": 4762\n },\n {\n \"tag\": "freemason",\n \"popularity\": 4759\n },\n {\n \"tag\": "catkin",\n \"popularity\": 4755\n },\n {\n \"tag\": "conscient",\n \"popularity\": 4751\n },\n {\n \"tag\": "reliably",\n \"popularity\": 4748\n },\n {\n \"tag\": "Telembi",\n \"popularity\": 4744\n },\n {\n \"tag\": "hide",\n \"popularity\": 4740\n },\n {\n \"tag\": "social",\n \"popularity\": 4737\n },\n {\n \"tag\": "ichneutic",\n \"popularity\": 4733\n },\n {\n \"tag\": "polypotome blouse pentagrammatic",\n \"popularity\": 4729\n },\n {\n \"tag\": "airdrome pesthole",\n \"popularity\": 4726\n },\n {\n \"tag\": "unportended",\n \"popularity\": 4722\n },\n {\n \"tag\": "sheerly",\n \"popularity\": 4719\n },\n {\n \"tag\": "acardiac",\n \"popularity\": 4715\n },\n {\n \"tag\": "fetor",\n \"popularity\": 4711\n },\n {\n \"tag\": "storax",\n \"popularity\": 4708\n },\n {\n \"tag\": "syndactylic",\n \"popularity\": 4704\n },\n {\n \"tag\": "otiatrics",\n \"popularity\": 4700\n },\n {\n \"tag\": "range",\n \"popularity\": 4697\n },\n {\n \"tag\": "branchway",\n \"popularity\": 4693\n },\n {\n \"tag\": "beatific",\n \"popularity\": 4690\n },\n {\n \"tag\": "Rugosa",\n \"popularity\": 4686\n },\n {\n \"tag\": "rafty",\n \"popularity\": 4682\n },\n {\n \"tag\": "gapy",\n \"popularity\": 4679\n },\n {\n \"tag\": "heterocercal",\n \"popularity\": 4675\n },\n {\n \"tag\": "actinopterygious",\n \"popularity\": 4672\n },\n {\n \"tag\": "glauconite",\n \"popularity\": 4668\n },\n {\n \"tag\": "limbless priest",\n \"popularity\": 4665\n },\n {\n \"tag\": "chrysene",\n \"popularity\": 4661\n },\n {\n \"tag\": "isentropic",\n \"popularity\": 4658\n },\n {\n \"tag\": "lairdess",\n \"popularity\": 4654\n },\n {\n \"tag\": "butterhead choliambic",\n \"popularity\": 4650\n },\n {\n \"tag\": "hexaseme",\n \"popularity\": 4647\n },\n {\n \"tag\": "treeify",\n \"popularity\": 4643\n },\n {\n \"tag\": "coronetted fructify",\n \"popularity\": 4640\n },\n {\n \"tag\": "admiralty",\n \"popularity\": 4636\n },\n {\n \"tag\": "Flosculariidae",\n \"popularity\": 4633\n },\n {\n \"tag\": "limaceous",\n \"popularity\": 4629\n },\n {\n \"tag\": "subterconscious",\n \"popularity\": 4626\n },\n {\n \"tag\": "stayless",\n \"popularity\": 4622\n },\n {\n \"tag\": "psha",\n \"popularity\": 4619\n },\n {\n \"tag\": "Mediterraneanize",\n \"popularity\": 4615\n },\n {\n \"tag\": "impenetrably",\n \"popularity\": 4612\n },\n {\n \"tag\": "Myrmeleonidae",\n \"popularity\": 4608\n },\n {\n \"tag\": "germander",\n \"popularity\": 4605\n },\n {\n \"tag\": "Buri",\n \"popularity\": 4601\n },\n {\n \"tag\": "papyrotamia",\n \"popularity\": 4598\n },\n {\n \"tag\": "Toxylon",\n \"popularity\": 4594\n },\n {\n \"tag\": "batatilla",\n \"popularity\": 4591\n },\n {\n \"tag\": "fabella assumer",\n \"popularity\": 4587\n },\n {\n \"tag\": "macromethod",\n \"popularity\": 4584\n },\n {\n \"tag\": "Blechnum",\n \"popularity\": 4580\n },\n {\n \"tag\": "pantography",\n \"popularity\": 4577\n },\n {\n \"tag\": "seminovel",\n \"popularity\": 4574\n },\n {\n \"tag\": "disembarrassment",\n \"popularity\": 4570\n },\n {\n \"tag\": "bushmaking",\n \"popularity\": 4567\n },\n {\n \"tag\": "neurosis",\n \"popularity\": 4563\n },\n {\n \"tag\": "Animalia",\n \"popularity\": 4560\n },\n {\n \"tag\": "Bernice",\n \"popularity\": 4556\n },\n {\n \"tag\": "wisen",\n \"popularity\": 4553\n },\n {\n \"tag\": "subhymenium",\n \"popularity\": 4549\n },\n {\n \"tag\": "esophagomycosis",\n \"popularity\": 4546\n },\n {\n \"tag\": "wireworks",\n \"popularity\": 4543\n },\n {\n \"tag\": "Sabellidae",\n \"popularity\": 4539\n },\n {\n \"tag\": "fustianish",\n \"popularity\": 4536\n },\n {\n \"tag\": "professively",\n \"popularity\": 4532\n },\n {\n \"tag\": "overcorruptly",\n \"popularity\": 4529\n },\n {\n \"tag\": "overcreep",\n \"popularity\": 4526\n },\n {\n \"tag\": "Castilloa",\n \"popularity\": 4522\n },\n {\n \"tag\": "forelady Georgie",\n \"popularity\": 4519\n },\n {\n \"tag\": "outsider",\n \"popularity\": 4515\n },\n {\n \"tag\": "Enukki",\n \"popularity\": 4512\n },\n {\n \"tag\": "gypsy",\n \"popularity\": 4509\n },\n {\n \"tag\": "Passamaquoddy",\n \"popularity\": 4505\n },\n {\n \"tag\": "reposit",\n \"popularity\": 4502\n },\n {\n \"tag\": "overtenderness",\n \"popularity\": 4499\n },\n {\n \"tag\": "keratome",\n \"popularity\": 4495\n },\n {\n \"tag\": "interclavicular hypermonosyllable Susanna",\n \"popularity\": 4492\n },\n {\n \"tag\": "mispropose",\n \"popularity\": 4489\n },\n {\n \"tag\": "Membranipora",\n \"popularity\": 4485\n },\n {\n \"tag\": "lampad",\n \"popularity\": 4482\n },\n {\n \"tag\": "header",\n \"popularity\": 4479\n },\n {\n \"tag\": "triseriate",\n \"popularity\": 4475\n },\n {\n \"tag\": "distrainment",\n \"popularity\": 4472\n },\n {\n \"tag\": "staphyloplastic",\n \"popularity\": 4469\n },\n {\n \"tag\": "outscour",\n \"popularity\": 4465\n },\n {\n \"tag\": "tallowmaking",\n \"popularity\": 4462\n },\n {\n \"tag\": "plugger",\n \"popularity\": 4459\n },\n {\n \"tag\": "fashionize",\n \"popularity\": 4455\n },\n {\n \"tag\": "puzzle",\n \"popularity\": 4452\n },\n {\n \"tag\": "imbrue",\n \"popularity\": 4449\n },\n {\n \"tag\": "osteoblast",\n \"popularity\": 4445\n },\n {\n \"tag\": "Hydrocores",\n \"popularity\": 4442\n },\n {\n \"tag\": "Lutra",\n \"popularity\": 4439\n },\n {\n \"tag\": "upridge scarfy",\n \"popularity\": 4435\n },\n {\n \"tag\": "ancon taffle",\n \"popularity\": 4432\n },\n {\n \"tag\": "impest",\n \"popularity\": 4429\n },\n {\n \"tag\": "uncollatedness",\n \"popularity\": 4426\n },\n {\n \"tag\": "hypersensitize",\n \"popularity\": 4422\n },\n {\n \"tag\": "autographically",\n \"popularity\": 4419\n },\n {\n \"tag\": "louther",\n \"popularity\": 4416\n },\n {\n \"tag\": "Ollie",\n \"popularity\": 4413\n },\n {\n \"tag\": "recompensate",\n \"popularity\": 4409\n },\n {\n \"tag\": "Shan",\n \"popularity\": 4406\n },\n {\n \"tag\": "brachycnemic",\n \"popularity\": 4403\n },\n {\n \"tag\": "Carinatae",\n \"popularity\": 4399\n },\n {\n \"tag\": "geotherm",\n \"popularity\": 4396\n },\n {\n \"tag\": "sawback",\n \"popularity\": 4393\n },\n {\n \"tag\": "Novatianist",\n \"popularity\": 4390\n },\n {\n \"tag\": "reapproach",\n \"popularity\": 4387\n },\n {\n \"tag\": "myelopoietic",\n \"popularity\": 4383\n },\n {\n \"tag\": "cyanin",\n \"popularity\": 4380\n },\n {\n \"tag\": "unsmutted",\n \"popularity\": 4377\n },\n {\n \"tag\": "nonpapist",\n \"popularity\": 4374\n },\n {\n \"tag\": "transbaikalian",\n \"popularity\": 4370\n },\n {\n \"tag\": "connately",\n \"popularity\": 4367\n },\n {\n \"tag\": "tenderize iterance",\n \"popularity\": 4364\n },\n {\n \"tag\": "hydrostatical",\n \"popularity\": 4361\n },\n {\n \"tag\": "unflag",\n \"popularity\": 4358\n },\n {\n \"tag\": "translate",\n \"popularity\": 4354\n },\n {\n \"tag\": "Scorzonera",\n \"popularity\": 4351\n },\n {\n \"tag\": "uncomforted",\n \"popularity\": 4348\n },\n {\n \"tag\": "risser varied",\n \"popularity\": 4345\n },\n {\n \"tag\": "plumbate",\n \"popularity\": 4342\n },\n {\n \"tag\": "Usneaceae",\n \"popularity\": 4338\n },\n {\n \"tag\": "fohat",\n \"popularity\": 4335\n },\n {\n \"tag\": "slagging",\n \"popularity\": 4332\n },\n {\n \"tag\": "superserious",\n \"popularity\": 4329\n },\n {\n \"tag\": "theocracy",\n \"popularity\": 4326\n },\n {\n \"tag\": "valonia",\n \"popularity\": 4323\n },\n {\n \"tag\": "Sapindales",\n \"popularity\": 4319\n },\n {\n \"tag\": "palaeozoologist",\n \"popularity\": 4316\n },\n {\n \"tag\": "yalb",\n \"popularity\": 4313\n },\n {\n \"tag\": "unviewed",\n \"popularity\": 4310\n },\n {\n \"tag\": "polyarteritis",\n \"popularity\": 4307\n },\n {\n \"tag\": "vectorial",\n \"popularity\": 4304\n },\n {\n \"tag\": "skimpingly",\n \"popularity\": 4301\n },\n {\n \"tag\": "athort",\n \"popularity\": 4297\n },\n {\n \"tag\": "tribofluorescence",\n \"popularity\": 4294\n },\n {\n \"tag\": "benzonitrol",\n \"popularity\": 4291\n },\n {\n \"tag\": "swiller subobtuse subjacency",\n \"popularity\": 4288\n },\n {\n \"tag\": "uncompassed",\n \"popularity\": 4285\n },\n {\n \"tag\": "cacochymia",\n \"popularity\": 4282\n },\n {\n \"tag\": "commensalist butadiene",\n \"popularity\": 4279\n },\n {\n \"tag\": "culpable",\n \"popularity\": 4276\n },\n {\n \"tag\": "contributive",\n \"popularity\": 4273\n },\n {\n \"tag\": "attemperately",\n \"popularity\": 4269\n },\n {\n \"tag\": "spelt",\n \"popularity\": 4266\n },\n {\n \"tag\": "exoneration",\n \"popularity\": 4263\n },\n {\n \"tag\": "antivivisectionist",\n \"popularity\": 4260\n },\n {\n \"tag\": "granitification",\n \"popularity\": 4257\n },\n {\n \"tag\": "palladize",\n \"popularity\": 4254\n },\n {\n \"tag\": "marksmanship",\n \"popularity\": 4251\n },\n {\n \"tag\": "bullydom",\n \"popularity\": 4248\n },\n {\n \"tag\": "spirality",\n \"popularity\": 4245\n },\n {\n \"tag\": "caliginous",\n \"popularity\": 4242\n },\n {\n \"tag\": "reportedly",\n \"popularity\": 4239\n },\n {\n \"tag\": "polyad",\n \"popularity\": 4236\n },\n {\n \"tag\": "arthroempyesis",\n \"popularity\": 4233\n },\n {\n \"tag\": "semibay facultatively",\n \"popularity\": 4229\n },\n {\n \"tag\": "metastatically",\n \"popularity\": 4226\n },\n {\n \"tag\": "prophetically",\n \"popularity\": 4223\n },\n {\n \"tag\": "Linguatula elapid",\n \"popularity\": 4220\n },\n {\n \"tag\": "pyknatom",\n \"popularity\": 4217\n },\n {\n \"tag\": "centimeter",\n \"popularity\": 4214\n },\n {\n \"tag\": "mensurate",\n \"popularity\": 4211\n },\n {\n \"tag\": "migraine",\n \"popularity\": 4208\n },\n {\n \"tag\": "pentagamist",\n \"popularity\": 4205\n },\n {\n \"tag\": "querken",\n \"popularity\": 4202\n },\n {\n \"tag\": "ambulance",\n \"popularity\": 4199\n },\n {\n \"tag\": "Stokavian",\n \"popularity\": 4196\n },\n {\n \"tag\": "malvasian",\n \"popularity\": 4193\n },\n {\n \"tag\": "uncouthsome",\n \"popularity\": 4190\n },\n {\n \"tag\": "readable",\n \"popularity\": 4187\n },\n {\n \"tag\": "enlodge",\n \"popularity\": 4184\n },\n {\n \"tag\": "plasterwise Appendiculariidae perspectograph",\n \"popularity\": 4181\n },\n {\n \"tag\": "inkweed",\n \"popularity\": 4178\n },\n {\n \"tag\": "streep",\n \"popularity\": 4175\n },\n {\n \"tag\": "diadelphian cultured",\n \"popularity\": 4172\n },\n {\n \"tag\": "hymenopterous",\n \"popularity\": 4169\n },\n {\n \"tag\": "unexorableness",\n \"popularity\": 4166\n },\n {\n \"tag\": "cascaron",\n \"popularity\": 4163\n },\n {\n \"tag\": "undaintiness",\n \"popularity\": 4160\n },\n {\n \"tag\": "Curtana",\n \"popularity\": 4157\n },\n {\n \"tag\": "scurvied",\n \"popularity\": 4154\n },\n {\n \"tag\": "molluscoidal",\n \"popularity\": 4151\n },\n {\n \"tag\": "yurt",\n \"popularity\": 4148\n },\n {\n \"tag\": "deciduitis",\n \"popularity\": 4145\n },\n {\n \"tag\": "creephole",\n \"popularity\": 4142\n },\n {\n \"tag\": "quatrefeuille",\n \"popularity\": 4139\n },\n {\n \"tag\": "bicapitate adenomatome",\n \"popularity\": 4136\n },\n {\n \"tag\": "damassin",\n \"popularity\": 4134\n },\n {\n \"tag\": "planching",\n \"popularity\": 4131\n },\n {\n \"tag\": "dashedly inferential",\n \"popularity\": 4128\n },\n {\n \"tag\": "lobe",\n \"popularity\": 4125\n },\n {\n \"tag\": "Hyrachyus",\n \"popularity\": 4122\n },\n {\n \"tag\": "knab",\n \"popularity\": 4119\n },\n {\n \"tag\": "discohexaster",\n \"popularity\": 4116\n },\n {\n \"tag\": "malign",\n \"popularity\": 4113\n },\n {\n \"tag\": "pedagoguism",\n \"popularity\": 4110\n },\n {\n \"tag\": "shrubbery",\n \"popularity\": 4107\n },\n {\n \"tag\": "undershrub",\n \"popularity\": 4104\n },\n {\n \"tag\": "bureaucrat",\n \"popularity\": 4101\n },\n {\n \"tag\": "pantaleon",\n \"popularity\": 4098\n },\n {\n \"tag\": "mesoventral",\n \"popularity\": 4096\n }]';
-
-var log2 = Math.log(2);
-var tagInfo = tagInfoJSON.parseJSON(function(a, b) { if (a == "popularity") { return Math.log(b) / log2; } else {return b; } });
-
-function makeTagCloud(tagInfo)
-{
- var output = '<div class="tagCloud" style="width: 100%">';
-
- tagInfo.sort(function(a, b) { if (a.tag < b.tag) { return -1; } else if (a.tag == b.tag) { return 0; } else return 1; });
-
- for (var i = 0; i < tagInfo.length; i++) {
- var tag = tagInfo[i].tag;
-
- var validates = true;
- for (var j = 0; j < tag.length; j++) {
- var ch = tag.charCodeAt(j);
- if (ch < 0x20 || ch >= 0x7f) {
- validates = false;
- break;
- }
- }
-
- if (!validates)
- continue;
-
- var url = "http://example.com/tag/" + tag.replace(" ", "").toLowerCase();
- var popularity = tagInfo[i].popularity;
- var color = 'rgb(' + Math.floor(255 * (popularity - 12) / 20) + ', 0, 255)';
- output += ' <a href="' + url + '" style="font-size: ' + popularity + 'px; color: ' + color + '">' + tag + '</a> \n';
- }
-
- output += '</div>';
- output.replace(" ", "&nbsp;");
-
- return output;
-}
-
-var tagcloud = makeTagCloud(tagInfo);
-tagInfo = null;
diff --git a/SunSpider/tests/string-unpack-code.js b/SunSpider/tests/string-unpack-code.js
deleted file mode 100644
index e6330f1..0000000
--- a/SunSpider/tests/string-unpack-code.js
+++ /dev/null
@@ -1,68 +0,0 @@
-// This test case unpacks the compressed code for the MochiKit,
-// jQuery, Dojo and Prototype JavaScript libraries.
-
-/***
- MochiKit.MochiKit 1.3.1 : PACKED VERSION
- THIS FILE IS AUTOMATICALLY GENERATED. If creating patches, please
- diff against the source tree, not this file.
-
- See <http://mochikit.com/> for documentation, downloads, license, etc.
-
- (c) 2005 Bob Ippolito. All rights Reserved.
-***/
-
-for (var i = 0; i < 2; i++) {
-
-var decompressedMochiKit = function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('if(H(1q)!="L"){1q.2X("B.J")}if(H(B)=="L"){B={}}if(H(B.J)=="L"){B.J={}}B.J.1Y="1.3.1";B.J.1r="B.J";B.J.2l=G(7V,vR){if(7V===O){7V={}}R(u i=1;i<M.K;i++){u o=M[i];if(H(o)!="L"&&o!==O){R(u k in o){7V[k]=o[k]}}}F 7V};B.J.2l(B.J,{1K:G(){F"["+D.1r+" "+D.1Y+"]"},1l:G(){F D.1K()},4f:G(n){if(M.K===0){n=1}F G(){F n++}},4L:G(mw){u me=M.2U;if(M.K==1){me.1U=mw;F Y me()}},bg:G(vQ){u X=[];u m=B.J;u aw=m.1R(O,M);1M(aw.K){u o=aw.2P();if(o&&H(o)=="3n"&&H(o.K)=="2y"){R(u i=o.K-1;i>=0;i--){aw.e9(o[i])}}N{X.1c(o)}}F X},1R:G(7U,1i,av){if(!av){av=0}if(1i){u l=1i.K;if(H(l)!="2y"){if(H(B.15)!="L"){1i=B.15.2G(1i);l=1i.K}N{14 Y 3p("au 2E an at-as 3W B.15 2E ar")}}if(!7U){7U=[]}R(u i=av;i<l;i++){7U.1c(1i[i])}}F 7U},8Z:G(5g,1i){if(5g===O){5g={}}R(u i=1;i<M.K;i++){u o=M[i];if(H(o)!="L"&&o!==O){R(u k in o){u v=o[k];if(H(5g[k])=="3n"&&H(v)=="3n"){M.2U(5g[k],v)}N{5g[k]=v}}}}F 5g},lO:G(6c,1i){if(6c===O){6c={}}R(u i=1;i<M.K;i++){u o=M[i];R(u k in o){if(!(k in 6c)){6c[k]=o[k]}}}F 6c},lN:G(1i){u fj=[];R(u mv in 1i){fj.1c(mv)}F fj},lM:G(1i){u fh=[];u e;R(u fi in 1i){u v;1f{v=1i[fi]}1e(e){2V}fh.1c([fi,v])}F fh},jq:G(fg,ff,fe){fe.1U=Y B.J.5a(fg.1r+"."+ff);fg[ff]=fe},4i:{7L:G(a){F!!a},vP:G(a){F!a},eE:G(a){F a},2E:G(a){F~a},vO:G(a){F-a},vN:G(a,b){F a+b},vM:G(a,b){F a-b},4u:G(a,b){F a/b},vL:G(a,b){F a%b},vK:G(a,b){F a*b},3W:G(a,b){F a&b},or:G(a,b){F a|b},vJ:G(a,b){F a^b},vI:G(a,b){F a<<b},vH:G(a,b){F a>>b},vG:G(a,b){F a>>>b},eq:G(a,b){F a==b},ne:G(a,b){F a!=b},gt:G(a,b){F a>b},ge:G(a,b){F a>=b},lt:G(a,b){F a<b},le:G(a,b){F a<=b},vF:G(a,b){F B.J.2f(a,b)===0},vE:G(a,b){F B.J.2f(a,b)!==0},vD:G(a,b){F B.J.2f(a,b)==1},vC:G(a,b){F B.J.2f(a,b)!=-1},vB:G(a,b){F B.J.2f(a,b)==-1},vA:G(a,b){F B.J.2f(a,b)!=1},vz:G(a,b){F a&&b},vy:G(a,b){F a||b},vx:G(a,b){F b in a}},24:G(mu){F G(){F D[mu].1w(D,M)}},lL:G(mt){F G(a9){F a9[mt]}},66:G(){u fd={};R(u i=0;i<M.K;i++){u 6b=M[i];fd[6b]=6b}F G(){R(u i=0;i<M.K;i++){if(!(H(M[i])in fd)){F 1m}}F 1h}},lJ:G(){R(u i=0;i<M.K;i++){if(M[i]!==O){F 1m}}F 1h},lK:G(){R(u i=0;i<M.K;i++){u o=M[i];if(!(H(o)=="L"||o===O)){F 1m}}F 1h},lI:G(1i){F!B.J.7e.1w(D,M)},7e:G(1i){R(u i=0;i<M.K;i++){u o=M[i];if(!(o&&o.K)){F 1m}}F 1h},3A:G(){R(u i=0;i<M.K;i++){u o=M[i];u 6b=H(o);if((6b!="3n"&&!(6b=="G"&&H(o.vw)=="G"))||o===O||H(o.K)!="2y"){F 1m}}F 1h},eN:G(){R(u i=0;i<M.K;i++){u o=M[i];if(H(o)!="3n"||o===O||H(o.9P)!="G"){F 1m}}F 1h},lH:G(fn){if(fn===O){F B.J.1R(O,M,1)}u fc=[];R(u i=1;i<M.K;i++){fc.1c(fn(M[i]))}F fc},2r:G(fn,1g){u m=B.J;u 6a=B.15;u fb=m.3A;if(M.K<=2){if(!fb(1g)){if(6a){1g=6a.2G(1g);if(fn===O){F 1g}}N{14 Y 3p("au 2E an at-as 3W B.15 2E ar")}}if(fn===O){F m.1R(O,1g)}u 69=[];R(u i=0;i<1g.K;i++){69.1c(fn(1g[i]))}F 69}N{if(fn===O){fn=7o}u 7T=O;R(i=1;i<M.K;i++){if(!fb(M[i])){if(6a){F 6a.2G(6a.4c.1w(O,M))}N{14 Y 3p("au 2E an at-as 3W B.15 2E ar")}}u l=M[i].K;if(7T===O||7T>l){7T=l}}69=[];R(i=0;i<7T;i++){u fa=[];R(u j=1;j<M.K;j++){fa.1c(M[j][i])}69.1c(fn.1w(D,fa))}F 69}},lG:G(fn){u f9=[];if(fn===O){fn=B.J.4i.7L}R(u i=1;i<M.K;i++){u o=M[i];if(fn(o)){f9.1c(o)}}F f9},47:G(fn,1g,7S){u aq=[];u m=B.J;if(!m.3A(1g)){if(B.15){1g=B.15.2G(1g)}N{14 Y 3p("au 2E an at-as 3W B.15 2E ar")}}if(fn===O){fn=m.4i.7L}if(H(7o.1U.47)=="G"){F 7o.1U.47.cz(1g,fn,7S)}N{if(H(7S)=="L"||7S===O){R(u i=0;i<1g.K;i++){u o=1g[i];if(fn(o)){aq.1c(o)}}}N{R(i=0;i<1g.K;i++){o=1g[i];if(fn.cz(7S,o)){aq.1c(o)}}}}F aq},mq:G(7R){F G(){hd(M.K){3j 0:F 7R();3j 1:F 7R(M[0]);3j 2:F 7R(M[0],M[1]);3j 3:F 7R(M[0],M[1],M[2])}u f8=[];R(u i=0;i<M.K;i++){f8.1c("M["+i+"]")}F dB("(1A("+f8.2b(",")+"))")}},lv:G(mr,ms){u m=B.J;F m.1O.1w(D,m.1R([ms,mr],M,2))},1O:G(3c,4o){if(H(3c)=="1n"){3c=4o[3c]}u ao=3c.f5;u 5f=3c.am;u f6=3c.f7;u m=B.J;if(H(3c)=="G"&&H(3c.1w)=="L"){3c=m.mq(3c)}if(H(ao)!="G"){ao=3c}if(H(4o)!="L"){f6=4o}if(H(5f)=="L"){5f=[]}N{5f=5f.9T()}m.1R(5f,M,2);u 7Q=G(){u ap=M;u me=M.2U;if(me.am.K>0){ap=m.2o(me.am,ap)}u 4o=me.f7;if(!4o){4o=D}F me.f5.1w(4o,ap)};7Q.f7=f6;7Q.f5=ao;7Q.am=5f;F 7Q},lF:G(7P){u mp=B.J.1O;R(u k in 7P){u f4=7P[k];if(H(f4)=="G"){7P[k]=mp(f4,7P)}}},5u:G(mo,mn,ml,mk){B.J.ae.5M(mo,mn,ml,mk)},mj:{"5L":1h,"1n":1h,"2y":1h},2f:G(a,b){if(a==b){F 0}u f3=(H(a)=="L"||a===O);u f2=(H(b)=="L"||b===O);if(f3&&f2){F 0}N{if(f3){F-1}N{if(f2){F 1}}}u m=B.J;u f1=m.mj;if(!(H(a)in f1&&H(b)in f1)){1f{F m.ae.3C(a,b)}1e(e){if(e!=m.4d){14 e}}}if(a<b){F-1}N{if(a>b){F 1}}u f0=m.U;14 Y 3p(f0(a)+" 3W "+f0(b)+" 9v 2E be vv")},eM:G(a,b){F B.J.2f(a.9P(),b.9P())},eL:G(a,b){u mi=B.J.2f;u 7O=a.K;u al=0;if(7O>b.K){al=1;7O=b.K}N{if(7O<b.K){al=-1}}R(u i=0;i<7O;i++){u 4j=mi(a[i],b[i]);if(4j){F 4j}}F al},7M:G(mh,mg,mf,md){B.J.ad.5M(mh,mg,mf,md)},U:G(o){if(H(o)=="L"){F"L"}N{if(o===O){F"O"}}1f{if(H(o.1K)=="G"){F o.1K()}N{if(H(o.U)=="G"&&o.U!=M.2U){F o.U()}}F B.J.ad.3C(o)}1e(e){if(H(o.1r)=="1n"&&(o.1l==cZ.1U.1l||o.1l==vu.1U.1l)){F o.1r}}1f{u eZ=(o+"")}1e(e){F"["+H(o)+"]"}if(H(o)=="G"){o=eZ.23(/^\\s+/,"");u 5n=o.2A("{");if(5n!=-1){o=o.3H(0,5n)+"{...}"}}F eZ},eK:G(o){u m=B.J;F"["+m.2r(m.U,o).2b(", ")+"]"},ac:G(o){F("\\""+o.23(/(["\\\\])/g,"\\\\$1")+"\\"").23(/[\\f]/g,"\\\\f").23(/[\\b]/g,"\\\\b").23(/[\\n]/g,"\\\\n").23(/[\\t]/g,"\\\\t").23(/[\\r]/g,"\\\\r")},eJ:G(o){F o+""},ly:G(mc,mb,ma,m9){B.J.ab.5M(mc,mb,ma,m9)},lx:G(){F dB("("+M[0]+")")},lz:G(o){u 5e=H(o);if(5e=="L"){F"L"}N{if(5e=="2y"||5e=="5L"){F o+""}N{if(o===O){F"O"}}}u m=B.J;u eY=m.ac;if(5e=="1n"){F eY(o)}u me=M.2U;u 3S;if(H(o.m8)=="G"){3S=o.m8();if(o!==3S){F me(3S)}}if(H(o.m7)=="G"){3S=o.m7();if(o!==3S){F me(3S)}}if(5e!="G"&&H(o.K)=="2y"){u X=[];R(u i=0;i<o.K;i++){u 2i=me(o[i]);if(H(2i)!="1n"){2i="L"}X.1c(2i)}F"["+X.2b(", ")+"]"}1f{3S=m.ab.3C(o);F me(3S)}1e(e){if(e!=m.4d){14 e}}if(5e=="G"){F O}X=[];R(u k in o){u ak;if(H(k)=="2y"){ak="\\""+k+"\\""}N{if(H(k)=="1n"){ak=eY(k)}N{2V}}2i=me(o[k]);if(H(2i)!="1n"){2V}X.1c(ak+":"+2i)}F"{"+X.2b(", ")+"}"},lE:G(a,b){F(B.J.2f(a,b)===0)},lD:G(eX,4n){if(eX.K!=4n.K){F 1m}F(B.J.2f(eX,4n)===0)},2o:G(){u eW=[];u m6=B.J.1R;R(u i=0;i<M.K;i++){m6(eW,M[i])}F eW},eR:G(2h){u m=B.J;u eU=m.2f;if(M.K==1){F G(a,b){F eU(a[2h],b[2h])}}u eV=m.1R(O,M);F G(a,b){u aj=0;R(u i=0;(aj===0)&&(i<eV.K);i++){u 2h=eV[i];aj=eU(a[2h],b[2h])}F aj}},lC:G(2h){u m5=B.J.eR.1w(D,M);F G(a,b){F m5(b,a)}},2z:G(m4){u m=B.J;F m.1O.1w(D,m.1R([m4,L],M,1))},67:G(m0,1g){if(1g.K===0){F O}u ai=1g[0];u m3=B.J.2f;R(u i=1;i<1g.K;i++){u o=1g[i];if(m3(o,ai)==m0){ai=o}}F ai},lB:G(){F B.J.67(1,M)},lA:G(){F B.J.67(-1,M)},bi:G(1g,lY,lZ,3B){if(H(3B)=="L"||3B===O){3B=1g.K}R(u i=(lZ||0);i<3B;i++){if(1g[i]===lY){F i}}F-1},eO:G(1g,lW,lX,3B){if(H(3B)=="L"||3B===O){3B=1g.K}u 4j=B.J.2f;R(u i=(lX||0);i<3B;i++){if(4j(1g[i],lW)===0){F i}}F-1},d4:G(1j,lV){u ah=[1j];u lU=B.J.1R;1M(ah.K){u X=lV(ah.2P());if(X){lU(ah,X)}}},3f:G(ag){u 2w=ag.1r;if(H(2w)=="L"){2w=""}N{2w=2w+"."}R(u 1b in ag){u o=ag[1b];if(H(o)=="G"&&H(o.1r)=="L"){1f{o.1r=2w+1b}1e(e){}}}},dw:G(3s,68){if(H(B.S)!="L"&&M.K==1&&(H(3s)=="1n"||(H(3s.3T)!="L"&&3s.3T>0))){u kv=B.S.d5(3s);3s=kv[0];68=kv[1]}N{if(M.K==1){u o=3s;3s=[];68=[];R(u k in o){u v=o[k];if(H(v)!="G"){3s.1c(k);68.1c(v)}}}}u W=[];u lT=28.2a(3s.K,68.K);u eT=B.J.af;R(u i=0;i<lT;i++){v=68[i];if(H(v)!="L"&&v!==O){W.1c(eT(3s[i])+"="+eT(v))}}F W.2b("&")},lw:G(lS,lQ){u 7N=lS.23(/\\+/g,"%20").2R("&");u o={};u 5d;if(H(lR)!="L"){5d=lR}N{5d=vt}if(lQ){R(u i=0;i<7N.K;i++){u 2n=7N[i].2R("=");u 1b=5d(2n[0]);u 4n=o[1b];if(!(4n 2C 7o)){4n=[];o[1b]=4n}4n.1c(5d(2n[1]))}}N{R(i=0;i<7N.K;i++){2n=7N[i].2R("=");o[5d(2n[0])]=5d(2n[1])}}F o}});B.J.4a=G(){D.4m=[]};B.J.4a.1U={5M:G(1b,eS,3y,lP){if(lP){D.4m.e9([1b,eS,3y])}N{D.4m.1c([1b,eS,3y])}},3C:G(){R(u i=0;i<D.4m.K;i++){u 2n=D.4m[i];if(2n[1].1w(D,M)){F 2n[2].1w(D,M)}}14 B.J.4d},vs:G(1b){R(u i=0;i<D.4m.K;i++){u 2n=D.4m[i];if(2n[0]==1b){D.4m.4y(i,1);F 1h}}F 1m}};B.J.1z=["4f","4L","1R","2l","8Z","lO","lN","lM","5a","4i","24","lL","66","lo","ln","lK","lJ","lI","7e","3A","eN","lH","2r","lG","47","1O","lF","4d","4a","5u","2f","7M","U","lE","lD","2o","eR","lC","2z","lm","67","lp","eI","lB","lA","d4","ll","af","dw","lz","ly","lx","lw","eO","bi","bg","lv"];B.J.1W=["3f","ae","ad","ab","eM","eL","eK","ac","eJ"];B.J.2Y=G(lu,eP){if(H(B.eQ)=="L"){B.eQ=(B.3d||(H(1x)=="L"&&H(1q)=="L"))}if(!B.eQ){F}u 1p=eP.2k[":1p"];R(u i=0;i<1p.K;i++){lu[1p[i]]=eP[1p[i]]}};B.J.2d=G(){u m=D;m.vr=m.24;m.vq=m.eO;if(H(ls)!="L"){m.af=G(lr){F ls(lr).23(/\\\'/g,"%27")}}N{m.af=G(lq){F vp(lq).23(/\\+/g,"%2B").23(/\\"/g,"%22").W.23(/\\\'/g,"%27")}}m.5a=G(1b){D.43=1b;D.1b=1b};m.5a.1U=Y 2x();m.2l(m.5a.1U,{U:G(){if(D.43&&D.43!=D.1b){F D.1b+"("+m.U(D.43)+")"}N{F D.1b+"()"}},1l:m.24("U")});m.4d=Y m.5a("B.J.4d");m.lp=m.2z(m.67,1);m.eI=m.2z(m.67,-1);m.lo=m.66("G");m.ln=m.66("L");m.lm=m.2z(m.2l,O);m.ll=m.2z(m.2r,O);m.ae=Y m.4a();m.5u("vo",m.eN,m.eM);m.5u("ej",m.3A,m.eL);m.ad=Y m.4a();m.7M("ej",m.3A,m.eK);m.7M("1n",m.66("1n"),m.ac);m.7M("vn",m.66("2y","5L"),m.eJ);m.ab=Y m.4a();u 1p=m.2o(m.1z,m.1W);m.2k={":3e":m.2o(m.1W),":1p":1p};m.3f(D)};B.J.2d();if(!B.3d){2f=B.J.2f}B.J.2Y(D,B.J);if(H(1q)!="L"){1q.2X("B.15");1q.2M("B.J")}if(H(1x)!="L"){1x.26("B.J",[])}1f{if(H(B.J)=="L"){14""}}1e(e){14"B.15 3F on B.J!"}if(H(B.15)=="L"){B.15={}}B.15.1r="B.15";B.15.1Y="1.3.1";B.J.2l(B.15,{1K:G(){F"["+D.1r+" "+D.1Y+"]"},1l:G(){F D.1K()},9W:G(1b,lk,lj,lh){B.15.9Y.5M(1b,lk,lj,lh)},1Q:G(3R,lg){u I=B.15;if(M.K==2){F I.9Z(G(a){F a!=lg},3R)}if(H(3R.1a)=="G"){F 3R}N{if(H(3R.1Q)=="G"){F 3R.1Q()}}1f{F I.9Y.3C(3R)}1e(e){u m=B.J;if(e==m.4d){e=Y 3p(H(3R)+": "+m.U(3R)+" is 2E vm")}14 e}},eu:G(n){if(!n){n=0}u m=B.J;F{U:G(){F"eu("+n+")"},1l:m.24("U"),1a:m.4f(n)}},et:G(p){u I=B.15;u m=B.J;u 1g=[];u lf=I.1Q(p);F{U:G(){F"et(...)"},1l:m.24("U"),1a:G(){1f{u W=lf.1a();1g.1c(W);F W}1e(e){if(e!=I.25){14 e}if(1g.K===0){D.1a=G(){14 I.25}}N{u i=-1;D.1a=G(){i=(i+1)%1g.K;F 1g[i]}}F D.1a()}}}},7b:G(Q,n){u m=B.J;if(H(n)=="L"){F{U:G(){F"7b("+m.U(Q)+")"},1l:m.24("U"),1a:G(){F Q}}}F{U:G(){F"7b("+m.U(Q)+", "+n+")"},1l:m.24("U"),1a:G(){if(n<=0){14 B.15.25}n-=1;F Q}}},1a:G(ld){F ld.1a()},es:G(p,q){u m=B.J;u 1a=B.15.1a;u lc=m.2r(1Q,M);F{U:G(){F"es(...)"},1l:m.24("U"),1a:G(){F m.2r(1a,lc)}}},a1:G(3b,1V){u m=B.J;1V=B.15.1Q(1V);if(3b===O){3b=m.4i.7L}F{U:G(){F"a1(...)"},1l:m.24("U"),1a:G(){1M(1h){u W=1V.1a();if(3b(W)){F W}}F L}}},a0:G(3b,1V){u m=B.J;1V=B.15.1Q(1V);if(3b===O){3b=m.4i.7L}F{U:G(){F"a0(...)"},1l:m.24("U"),1a:G(){1M(1h){u W=1V.1a();if(!3b(W)){F W}}F L}}},er:G(1V){u I=B.15;u m=B.J;1V=I.1Q(1V);u 5c=0;u 2J=0;u 3a=1;u i=-1;if(M.K==2){2J=M[1]}N{if(M.K==3){5c=M[1];2J=M[2]}N{5c=M[1];2J=M[2];3a=M[3]}}F{U:G(){F"er("+["...",5c,2J,3a].2b(", ")+")"},1l:m.24("U"),1a:G(){u W;1M(i<5c){W=1V.1a();i++}if(5c>=2J){14 I.25}5c+=3a;F W}}},4c:G(aa,p,q){u m=B.J;u I=B.15;u lb=m.2r(I.1Q,m.1R(O,M,1));u 2r=m.2r;u 1a=I.1a;F{U:G(){F"4c(...)"},1l:m.24("U"),1a:G(){F aa.1w(D,2r(1a,lb))}}},ep:G(aa,1V,I){1V=B.15.1Q(1V);u m=B.J;F{U:G(){F"ep(...)"},1l:m.24("U"),1a:G(){F aa.1w(I,1V.1a())}}},55:G(p,q){u I=B.15;u m=B.J;if(M.K==1){F I.1Q(M[0])}u 64=m.2r(I.1Q,M);F{U:G(){F"55(...)"},1l:m.24("U"),1a:G(){1M(64.K>1){1f{F 64[0].1a()}1e(e){if(e!=I.25){14 e}64.2P()}}if(64.K==1){u a9=64.2P();D.1a=m.1O("1a",a9);F D.1a()}14 I.25}}},9Z:G(3b,1V){u I=B.15;1V=I.1Q(1V);F{U:G(){F"9Z(...)"},1l:B.J.24("U"),1a:G(){u W=1V.1a();if(!3b(W)){D.1a=G(){14 I.25};D.1a()}F W}}},eo:G(3b,1V){1V=B.15.1Q(1V);u m=B.J;u 1O=m.1O;F{"U":G(){F"eo(...)"},"1l":m.24("U"),"1a":G(){1M(1h){u W=1V.1a();if(!3b(W)){2K}}D.1a=1O("1a",1V);F W}}},a7:G(63,2u,la){2u.62[63]=-1;u m=B.J;u l9=m.eI;F{U:G(){F"en("+63+", ...)"},1l:m.24("U"),1a:G(){u W;u i=2u.62[63];if(i==2u.29){W=la.1a();2u.a8.1c(W);2u.29+=1;2u.62[63]+=1}N{W=2u.a8[i-2u.2a];2u.62[63]+=1;if(i==2u.2a&&l9(2u.62)!=2u.2a){2u.2a+=1;2u.a8.2P()}}F W}}},en:G(a6,n){u W=[];u 2u={"62":[],"a8":[],"29":-1,"2a":-1};if(M.K==1){n=2}u I=B.15;a6=I.1Q(a6);u a7=I.a7;R(u i=0;i<n;i++){W.1c(a7(i,2u,a6))}F W},2G:G(4l){u m=B.J;if(H(4l.9T)=="G"){F 4l.9T()}N{if(m.3A(4l)){F m.2o(4l)}}u I=B.15;4l=I.1Q(4l);u W=[];1f{1M(1h){W.1c(4l.1a())}}1e(e){if(e!=I.25){14 e}F W}F L},7H:G(fn,7K,l8){u i=0;u x=l8;u I=B.15;7K=I.1Q(7K);if(M.K<3){1f{x=7K.1a()}1e(e){if(e==I.25){e=Y 3p("7H() of vl vk vj no vi 3m")}14 e}i++}1f{1M(1h){x=fn(x,7K.1a())}}1e(e){if(e!=I.25){14 e}}F x},7I:G(){u 4k=0;u 2J=0;u 3a=1;if(M.K==1){2J=M[0]}N{if(M.K==2){4k=M[0];2J=M[1]}N{if(M.K==3){4k=M[0];2J=M[1];3a=M[2]}N{14 Y 3p("7I() vh 1, 2, or 3 M!")}}}if(3a===0){14 Y 3p("7I() 3a 5p 2E be 0")}F{1a:G(){if((3a>0&&4k>=2J)||(3a<0&&4k<=2J)){14 B.15.25}u W=4k;4k+=3a;F W},U:G(){F"7I("+[4k,2J,3a].2b(", ")+")"},1l:B.J.24("U")}},l0:G(a5,l7){u x=l7||0;u I=B.15;a5=I.1Q(a5);1f{1M(1h){x+=a5.1a()}}1e(e){if(e!=I.25){14 e}}F x},em:G(a4){u I=B.15;a4=I.1Q(a4);1f{1M(1h){a4.1a()}}1e(e){if(e!=I.25){14 e}}},9a:G(7J,1A,I){u m=B.J;if(M.K>2){1A=m.1O(1A,I)}if(m.3A(7J)){1f{R(u i=0;i<7J.K;i++){1A(7J[i])}}1e(e){if(e!=B.15.25){14 e}}}N{I=B.15;I.em(I.4c(1A,7J))}},kZ:G(l6,1A){u I=B.15;1f{I.a0(1A,l6).1a();F 1m}1e(e){if(e!=I.25){14 e}F 1h}},kY:G(l5,4j){u W=B.15.2G(l5);if(M.K==1){4j=B.J.2f}W.iz(4j);F W},kX:G(l4){u W=B.15.2G(l4);W.vg();F W},kW:G(l3,1A){u I=B.15;1f{I.a1(1A,l3).1a();F 1h}1e(e){if(e!=I.25){14 e}F 1m}},kV:G(1g,5b){if(B.J.3A(5b)){R(u i=0;i<5b.K;i++){1g.1c(5b[i])}}N{u I=B.15;5b=I.1Q(5b);1f{1M(1h){1g.1c(5b.1a())}}1e(e){if(e!=I.25){14 e}}}F 1g},ek:G(a3,eH){u m=B.J;u I=B.15;if(M.K<2){eH=m.4i.eE}a3=I.1Q(a3);u pk=L;u k=L;u v;G eF(){v=a3.1a();k=eH(v)}G l2(){u 7j=v;v=L;F 7j}u eG=1h;F{U:G(){F"ek(...)"},1a:G(){1M(k==pk){eF();if(eG){eG=1m;2K}}pk=k;F[k,{1a:G(){if(v==L){eF()}if(k!=pk){14 I.25}F l2()}}]}}},kU:G(a2,eD){u m=B.J;u I=B.15;if(M.K<2){eD=m.4i.eE}a2=I.1Q(a2);u ey=[];u eA=1h;u ez;1M(1h){1f{u eB=a2.1a();u 2h=eD(eB)}1e(e){if(e==I.25){2K}14 e}if(eA||2h!=ez){u eC=[];ey.1c([2h,eC])}eC.1c(eB);eA=1m;ez=2h}F ey},9X:G(ex){u i=0;F{U:G(){F"9X(...)"},1l:B.J.24("U"),1a:G(){if(i>=ex.K){14 B.15.25}F ex[i++]}}},eh:G(ew){F(ew&&H(ew.ei)=="G")},9V:G(l1){F{U:G(){F"9V(...)"},1l:B.J.24("U"),1a:G(){u W=l1.ei();if(W===O||W===L){14 B.15.25}F W}}}});B.15.1W=["9Y","9X","eh","9V",];B.15.1z=["25","9W","1Q","eu","et","7b","1a","es","a1","a0","er","4c","ep","55","9Z","eo","en","2G","7H","7I","l0","em","9a","kZ","kY","kX","kW","kV","ek","kU"];B.15.2d=G(){u m=B.J;D.25=Y m.5a("25");D.9Y=Y m.4a();D.9W("ej",m.3A,D.9X);D.9W("ei",D.eh,D.9V);D.2k={":3e":D.1z,":1p":m.2o(D.1z,D.1W)};m.3f(D)};B.15.2d();if(!B.3d){7H=B.15.7H}B.J.2Y(D,B.15);if(H(1q)!="L"){1q.2X("B.1H");1q.2M("B.J")}if(H(1x)!="L"){1x.26("B.J",[])}1f{if(H(B.J)=="L"){14""}}1e(e){14"B.1H 3F on B.J!"}if(H(B.1H)=="L"){B.1H={}}B.1H.1r="B.1H";B.1H.1Y="1.3.1";B.1H.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.1H.1l=G(){F D.1K()};B.1H.1z=["5C","49","7A","kR","2L","5Z","kG","ch","kE","kC"];B.1H.1W=["ef","e8","e7"];B.1H.49=G(1P,kT,3z){D.1P=1P;D.3N=kT;D.3z=3z;D.vf=Y 3Q()};B.1H.49.1U={U:G(){u m=B.J;F"49("+m.2r(m.U,[D.1P,D.3N,D.3z]).2b(", ")+")"},1l:B.J.24("U")};B.J.2l(B.1H,{ef:G(7F){u I=B.1H;if(H(7F)=="1n"){7F=I.5C[7F]}F G(1t){u 7G=1t.3N;if(H(7G)=="1n"){7G=I.5C[7G]}F 7G>=7F}},e8:G(){u kS=B.1H.49;R(u i=0;i<M.K;i++){if(!(M[i]2C kS)){F 1m}}F 1h},e7:G(a,b){F B.J.2f([a.3N,a.3z],[b.3N,b.3z])},kR:G(1t){cq("1P: "+1t.1P+"\\ve: "+1t.3N+"\\vd: "+1t.3z.2b(" "))}});B.1H.7A=G(7E){D.4f=0;if(H(7E)=="L"||7E===O){7E=-1}D.ec=7E;D.4h=[];D.7C={};D.e5=1m};B.1H.7A.1U={vc:G(){D.4h.4y(0,D.4h.K)},kK:G(1t){if(H(2O)!="L"&&2O.eg&&2O.eg.5Z){2O.eg.5Z(1t)}N{if(H(7h)!="L"&&7h.kQ){7h.kQ(1t)}N{if(H(5X)=="G"){5X(1t)}}}},kL:G(1t){R(u k in D.7C){u 2n=D.7C[k];if(2n.kO!=k||(2n[0]&&!2n[0](1t))){2V}2n[1](1t)}},hE:G(ee,7D,kP){if(H(7D)=="1n"){7D=B.1H.ef(7D)}u ed=[7D,kP];ed.kO=ee;D.7C[ee]=ed},c9:G(kN){gi D.7C[kN]},kH:G(kM,vb){u 1t=Y B.1H.49(D.4f,kM,B.J.1R(O,M,1));D.4h.1c(1t);D.kL(1t);if(D.e5){D.kK(1t.3N+": "+1t.3z.2b(" "))}D.4f+=1;1M(D.ec>=0&&D.4h.K>D.ec){D.4h.2P()}},c8:G(9U){u ea=0;if(!(H(9U)=="L"||9U===O)){ea=28.29(0,D.4h.K-9U)}F D.4h.9T(ea)},kJ:G(7B){if(H(7B)=="L"||7B===O){7B=30}u 9S=D.c8(7B);if(9S.K){u 1g=2r(G(m){F"\\n ["+m.1P+"] "+m.3N+": "+m.3z.2b(" ")},9S);1g.e9("va "+9S.K+" v9:");F 1g.2b("")}F""},v8:G(kI){if(H(B.1I)=="L"){cq(D.kJ())}N{B.1I.bY(kI||1m)}}};B.1H.2d=G(){D.5C={8M:40,8L:50,8K:30,8J:20,8I:10};u m=B.J;m.5u("49",D.e8,D.e7);u 61=m.2z;u e6=D.7A;u 60=e6.1U.kH;m.2l(D.7A.1U,{kF:61(60,"8I"),5Z:61(60,"8J"),dE:61(60,"8M"),kD:61(60,"8L"),kB:61(60,"8K")});u I=D;u 5Y=G(1b){F G(){I.2L[1b].1w(I.2L,M)}};D.5Z=5Y("5Z");D.kG=5Y("dE");D.ch=5Y("kF");D.kE=5Y("kD");D.kC=5Y("kB");D.2L=Y e6();D.2L.e5=1h;D.2k={":3e":D.1z,":1p":m.2o(D.1z,D.1W)};m.3f(D)};if(H(5X)=="L"&&H(2v)!="L"&&2v.kA&&H(kz)!="L"){5X=G(){5X.3G=M;u ev=2v.kA("v7");ev.v6("5X",1m,1h);kz(ev)}}B.1H.2d();B.J.2Y(D,B.1H);if(H(1q)!="L"){1q.2X("B.1D")}if(H(B)=="L"){B={}}if(H(B.1D)=="L"){B.1D={}}B.1D.1r="B.1D";B.1D.1Y="1.3.1";B.1D.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.1D.1l=G(){F D.1K()};B.1D.ks=G(1y){1y=1y+"";if(H(1y)!="1n"||1y.K===0){F O}u 7z=1y.2R("-");if(7z.K===0){F O}F Y 3Q(7z[0],7z[1]-1,7z[2])};B.1D.ky=/(\\d{4,})(?:-(\\d{1,2})(?:-(\\d{1,2})(?:[T ](\\d{1,2}):(\\d{1,2})(?::(\\d{1,2})(?:\\.(\\d+))?)?(?:(Z)|([+-])(\\d{1,2})(?::(\\d{1,2}))?)?)?)?)?/;B.1D.kr=G(1y){1y=1y+"";if(H(1y)!="1n"||1y.K===0){F O}u X=1y.3C(B.1D.ky);if(H(X)=="L"||X===O){F O}u 5W,7y,7x,9R,2a,9Q,7w;5W=3w(X[1],10);if(H(X[2])=="L"||X[2]===""){F Y 3Q(5W)}7y=3w(X[2],10)-1;7x=3w(X[3],10);if(H(X[4])=="L"||X[4]===""){F Y 3Q(5W,7y,7x)}9R=3w(X[4],10);2a=3w(X[5],10);9Q=(H(X[6])!="L"&&X[6]!=="")?3w(X[6],10):0;if(H(X[7])!="L"&&X[7]!==""){7w=28.ha(c5*4M("0."+X[7]))}N{7w=0}if((H(X[8])=="L"||X[8]==="")&&(H(X[9])=="L"||X[9]==="")){F Y 3Q(5W,7y,7x,9R,2a,9Q,7w)}u 58;if(H(X[9])!="L"&&X[9]!==""){58=3w(X[10],10)*v5;if(H(X[11])!="L"&&X[11]!==""){58+=3w(X[11],10)*kw}if(X[9]=="-"){58=-58}}N{58=0}F Y 3Q(3Q.v4(5W,7y,7x,9R,2a,9Q,7w)-58)};B.1D.dY=G(2g,kx){if(H(2g)=="L"||2g===O){F O}u hh=2g.v3();u mm=2g.v2();u ss=2g.v1();u 1g=[((kx&&(hh<10))?"0"+hh:hh),((mm<10)?"0"+mm:mm),((ss<10)?"0"+ss:ss)];F 1g.2b(":")};B.1D.kq=G(2g,7v){if(H(2g)=="L"||2g===O){F O}u ku=7v?"T":" ";u kt=7v?"Z":"";if(7v){2g=Y 3Q(2g.9P()+(2g.v0()*kw))}F B.1D.dX(2g)+ku+B.1D.dY(2g,7v)+kt};B.1D.dX=G(2g){if(H(2g)=="L"||2g===O){F O}u e4=B.1D.e3;F[2g.dZ(),e4(2g.e1()+1),e4(2g.e0())].2b("-")};B.1D.kp=G(d){d=d+"";if(H(d)!="1n"||d.K===0){F O}u a=d.2R("/");F Y 3Q(a[2],a[0]-1,a[1])};B.1D.e3=G(n){F(n>9)?n:"0"+n};B.1D.ko=G(d){if(H(d)=="L"||d===O){F O}u e2=B.1D.e3;F[e2(d.e1()+1),e2(d.e0()),d.dZ()].2b("/")};B.1D.kn=G(d){if(H(d)=="L"||d===O){F O}F[d.e1()+1,d.e0(),d.dZ()].2b("/")};B.1D.1z=["ks","kr","dY","kq","dX","kp","ko","kn"];B.1D.1W=[];B.1D.2k={":3e":B.1D.1z,":1p":B.1D.1z};B.1D.2d=G(){u 2w=D.1r+".";R(u k in D){u o=D[k];if(H(o)=="G"&&H(o.1r)=="L"){1f{o.1r=2w+k}1e(e){}}}};B.1D.2d();if(H(B.J)!="L"){B.J.2Y(D,B.1D)}N{(G(km,dW){if((H(1x)=="L"&&H(1q)=="L")||(H(B.3d)=="5L"&&B.3d)){u 1p=dW.2k[":1p"];R(u i=0;i<1p.K;i++){km[1p[i]]=dW[1p[i]]}}})(D,B.1D)}if(H(1q)!="L"){1q.2X("B.1s")}if(H(B)=="L"){B={}}if(H(B.1s)=="L"){B.1s={}}B.1s.1r="B.1s";B.1s.1Y="1.3.1";B.1s.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.1s.1l=G(){F D.1K()};B.1s.ke=G(kl,kk,kj,ki,kh,dV,kg,9N,kf){F G(1P){1P=4M(1P);if(H(1P)=="L"||1P===O||k8(1P)){F kl}u 9L=kk;u 9K=kj;if(1P<0){1P=-1P}N{9L=9L.23(/-/,"")}u me=M.2U;u 9M=B.1s.dJ(ki);if(kh){1P=1P*3k;9K=9M.9y+9K}1P=B.1s.dK(1P,dV);u 9O=1P.2R(/\\./);u 3r=9O[0];u 3P=(9O.K==1)?"":9O[1];u X="";1M(3r.K<kg){3r="0"+3r}if(9N){1M(3r.K>9N){u i=3r.K-9N;X=9M.9A+3r.2W(i,3r.K)+X;3r=3r.2W(0,i)}}X=3r+X;if(dV>0){1M(3P.K<kf){3P=3P+"0"}X=X+9M.9z+3P}F 9L+X+9K}};B.1s.k5=G(9J,9H,9G){if(H(9H)=="L"){9H=""}u 3q=9J.3C(/((?:[0#]+,)?[0#]+)(?:\\.([0#]+))?(%)?/);if(!3q){14 3p("uZ uY")}u 7u=9J.3H(0,3q.c6);u kd=9J.3H(3q.c6+3q[0].K);if(7u.uX(/-/)==-1){7u=7u+"-"}u 9I=3q[1];u 3P=(H(3q[2])=="1n"&&3q[2]!="")?3q[2]:"";u kc=(H(3q[3])=="1n"&&3q[3]!="");u dU=9I.2R(/,/);u 9F;if(H(9G)=="L"){9G="dG"}if(dU.K==1){9F=O}N{9F=dU[1].K}u ka=9I.K-9I.23(/0/g,"").K;u k9=3P.K-3P.23(/0/g,"").K;u kb=3P.K;u W=B.1s.ke(9H,7u,kd,9G,kc,kb,ka,9F,k9);u m=B.J;if(m){u fn=M.2U;u 3G=m.2o(M);W.U=G(){F[I.1r,"(",2r(m.U,3G).2b(", "),")"].2b("")}}F W};B.1s.dJ=G(4g){if(H(4g)=="L"||4g===O){4g="dG"}if(H(4g)=="1n"){u W=B.1s.5V[4g];if(H(W)=="1n"){W=M.2U(W);B.1s.5V[4g]=W}F W}N{F 4g}};B.1s.k4=G(dT,9E){if(9E){u X=dT/9E;if(!k8(X)){F B.1s.9B(dT/9E)}}F"0"};B.1s.9B=G(dS){u dR=(dS<0?"-":"");u s=28.8B(28.uW(dS)*3k).1l();if(s=="0"){F s}if(s.K<3){1M(s.3Z(s.K-1)=="0"){s=s.2W(0,s.K-1)}F dR+"0."+s}u 5E=dR+s.2W(0,s.K-2);u 7t=s.2W(s.K-2,s.K);if(7t=="uV"){F 5E}N{if(7t.3Z(1)=="0"){F 5E+"."+7t.3Z(0)}N{F 5E+"."+7t}}};B.1s.dI=G(1y,dQ){1y=1y+"";if(H(1y)!="1n"){F O}if(!dQ){F 1y.23(/^\\s+/,"")}N{F 1y.23(Y 8V("^["+dQ+"]+"),"")}};B.1s.dH=G(1y,dP){1y=1y+"";if(H(1y)!="1n"){F O}if(!dP){F 1y.23(/\\s+$/,"")}N{F 1y.23(Y 8V("["+dP+"]+$"),"")}};B.1s.k2=G(1y,dO){u I=B.1s;F I.dH(I.dI(1y,dO),dO)};B.1s.dL=G(9D,9C){9D=28.8B(9D*28.dN(10,9C));u X=(9D*28.dN(10,-9C)).6I(9C);if(X.3Z(0)=="."){X="0"+X}F X};B.1s.dK=G(k7,dM){F B.1s.dL(k7+0.5*28.dN(10,-dM),dM)};B.1s.k3=G(k6){F B.1s.9B(3k*k6)+"%"};B.1s.1z=["dL","dK","k5","dJ","k4","9B","k3","dI","dH","k2"];B.1s.5V={k1:{9A:",",9z:".",9y:"%"},uU:{9A:".",9z:",",9y:"%"},uT:{9A:" ",9z:",",9y:"%"},"dG":"k1"};B.1s.1W=[];B.1s.2k={":1p":B.1s.1z,":3e":B.1s.1z};B.1s.2d=G(){u 2w=D.1r+".";u k,v,o;R(k in D.5V){o=D.5V[k];if(H(o)=="3n"){o.U=G(){F D.1r};o.1r=2w+"5V."+k}}R(k in D){o=D[k];if(H(o)=="G"&&H(o.1r)=="L"){1f{o.1r=2w+k}1e(e){}}}};B.1s.2d();if(H(B.J)!="L"){B.J.2Y(D,B.1s)}N{(G(k0,dF){if((H(1x)=="L"&&H(1q)=="L")||(H(B.3d)=="5L"&&B.3d)){u 1p=dF.2k[":1p"];R(u i=0;i<1p.K;i++){k0[1p[i]]=dF[1p[i]]}}})(D,B.1s)}if(H(1q)!="L"){1q.2X("B.1k");1q.2M("B.J")}if(H(1x)!="L"){1x.26("B.J",[])}1f{if(H(B.J)=="L"){14""}}1e(e){14"B.1k 3F on B.J!"}if(H(B.1k)=="L"){B.1k={}}B.1k.1r="B.1k";B.1k.1Y="1.3.1";B.1k.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.1k.1l=G(){F D.1K()};B.1k.2t=G(jZ){D.55=[];D.id=D.7n();D.2H=-1;D.54=0;D.53=[O,O];D.7m=jZ;D.7l=1m;D.7r=1m};B.1k.2t.1U={U:G(){u 7s;if(D.2H==-1){7s="uS"}N{if(D.2H===0){7s="uR"}N{7s="dE"}}F"2t("+D.id+", "+7s+")"},1l:B.J.24("U"),7n:B.J.4f(),jY:G(){u I=B.1k;if(D.2H==-1){if(D.7m){D.7m(D)}N{D.7l=1h}if(D.2H==-1){D.52(Y I.di(D))}}N{if((D.2H===0)&&(D.53[0]2C I.2t)){D.53[0].jY()}}},jQ:G(){D.54++},jX:G(){D.54--;if((D.54===0)&&(D.2H>=0)){D.9u()}},jR:G(X){D.9x(X);D.jX()},9x:G(X){D.2H=((X 2C 2x)?1:0);D.53[D.2H]=X;D.9u()},dD:G(){if(D.2H!=-1){if(!D.7l){14 Y B.1k.dj(D)}D.7l=1m;F}},3o:G(X){D.dD();if(X 2C B.1k.2t){14 Y 2x("2t jW 9v aB be 7r if jV jU jT jS of a 3o")}D.9x(X)},52:G(X){D.dD();u I=B.1k;if(X 2C I.2t){14 Y 2x("2t jW 9v aB be 7r if jV jU jT jS of a 3o")}if(!(X 2C 2x)){X=Y I.9p(X)}D.9x(X)},jP:G(fn){if(M.K>1){fn=B.J.2z.1w(O,M)}F D.9w(fn,fn)},5Q:G(fn){if(M.K>1){fn=B.J.2z.1w(O,M)}F D.9w(fn,O)},jA:G(fn){if(M.K>1){fn=B.J.2z.1w(O,M)}F D.9w(O,fn)},9w:G(cb,eb){if(D.7r){14 Y 2x("uQ uP 9v 2E be re-uO")}D.55.1c([cb,eb]);if(D.2H>=0){D.9u()}F D},9u:G(){u dC=D.55;u 56=D.2H;u X=D.53[56];u I=D;u cb=O;1M(dC.K>0&&D.54===0){u 2n=dC.2P();u f=2n[56];if(f===O){2V}1f{X=f(X);56=((X 2C 2x)?1:0);if(X 2C B.1k.2t){cb=G(X){I.jR(X)};D.jQ()}}1e(3O){56=1;if(!(3O 2C 2x)){3O=Y B.1k.9p(3O)}X=3O}}D.2H=56;D.53[56]=X;if(cb&&D.54){X.jP(cb);X.7r=1h}}};B.J.2l(B.1k,{dk:G(){F dB("("+M[0].jN+")")},dp:G(uN){u d=Y B.1k.2t();d.3o.1w(d,M);F d},9q:G(uM){u d=Y B.1k.2t();d.52.1w(d,M);F d},do:G(){u I=M.2U;if(!I.7q){u dy=[G(){F Y 7q()},G(){F Y dA("jO.dz")},G(){F Y dA("uL.dz")},G(){F Y dA("jO.dz.4.0")},G(){14 Y B.1k.dh("uK uJ 2E uI 7q")}];R(u i=0;i<dy.K;i++){u 1A=dy[i];1f{I.7q=1A;F 1A()}1e(e){}}}F I.7q()},dx:G(){},jK:G(d){if(D.uH==4){1f{D.5T=O}1e(e){1f{D.5T=B.1k.dx}1e(e){}}u 5U=O;1f{5U=D.jm;if(!5U&&B.J.7e(D.jN)){5U=jM}}1e(e){}if(5U==hQ||5U==jM){d.3o(D)}N{u 3O=Y B.1k.dg(D,"uG uF");if(3O.2y){d.52(3O)}N{d.52(3O)}}}},jL:G(2s){1f{2s.5T=O}1e(e){1f{2s.5T=B.1k.dx}1e(e){}}2s.uE()},dl:G(2s,7p){if(H(7p)=="L"||7p===O){7p=""}u m=B.J;u I=B.1k;u d=Y I.2t(m.2z(I.jL,2s));1f{2s.5T=m.1O(I.jK,2s,d);2s.uD(7p)}1e(e){1f{2s.5T=O}1e(uC){}d.52(e)}F d},dn:G(5F){u I=B.1k;u 2s=I.do();if(M.K>1){u m=B.J;u qs=m.dw.1w(O,m.1R(O,M,1));if(qs){5F+="?"+qs}}2s.cp("uB",5F,1h);F I.dl(2s)},jv:G(5F){u I=B.1k;u d=I.dn.1w(I,M);d=d.5Q(I.dk);F d},dm:G(jJ,dv){u d=Y B.1k.2t();u m=B.J;if(H(dv)!="L"){d.5Q(G(){F dv})}u jI=uA(m.1O("3o",d),28.8B(jJ*c5));d.7m=G(){1f{uz(jI)}1e(e){}};F d},ju:G(jH,1A){u m=B.J;u jG=m.2z.1w(m,m.1R(O,M,1));F B.1k.dm(jH).5Q(G(X){F jG()})}});B.1k.5O=G(){D.5S=[];D.4e=1m;D.id=D.7n()};B.1k.5O.1U={bX:B.1k.5O,uy:G(){d=Y B.1k.2t();if(D.4e){D.5S.1c(d)}N{D.4e=1h;d.3o(D)}F d},jF:G(){if(!D.4e){14 3p("ux to jF an jE 5O")}D.4e=1m;if(D.5S.K>0){D.4e=1h;D.5S.2P().3o(D)}},7n:B.J.4f(),U:G(){u 9t;if(D.4e){9t="4e, "+D.5S.K+" 5S"}N{9t="jE"}F"5O("+D.id+", "+9t+")"},1l:B.J.24("U")};B.1k.7i=G(2G,du,jC,jB,jD){D.2G=2G;D.9r=Y 7o(D.2G.K);D.55=[];D.id=D.7n();D.2H=-1;D.54=0;D.53=[O,O];D.7m=jD;D.7l=1m;if(D.2G.K===0&&!du){D.3o(D.9r)}D.dr=0;D.jz=du;D.jy=jC;D.jx=jB;u 9s=0;B.J.2r(B.J.1O(G(d){d.5Q(B.J.1O(D.dt,D),9s,1h);d.jA(B.J.1O(D.dt,D),9s,1m);9s+=1},D),D.2G)};B.J.2l(B.1k.7i.1U,B.1k.2t.1U);B.J.2l(B.1k.7i.1U,{dt:G(ds,7k,5R){D.9r[ds]=[7k,5R];D.dr+=1;if(D.2H!==0){if(7k&&D.jz){D.3o([ds,5R])}N{if(!7k&&D.jy){D.52(5R)}N{if(D.dr==D.2G.K){D.3o(D.9r)}}}}if(!7k&&D.jx){5R=O}F 5R}});B.1k.jt=G(jw){u d=Y B.1k.7i(jw,1m,1h,1m);d.5Q(G(dq){u 7j=[];R(u i=0;i<dq.K;i++){7j.1c(dq[i][1])}F 7j});F d};B.1k.jr=G(1A){u I=B.1k;u 5P;1f{u r=1A.1w(O,B.J.1R([],M,1));if(r 2C I.2t){5P=r}N{if(r 2C 2x){5P=I.9q(r)}N{5P=I.dp(r)}}}1e(e){5P=I.9q(e)}F 5P};B.1k.1z=["dj","di","dh","9p","dg","2t","dp","9q","do","dn","jv","dm","ju","dl","5O","7i","jt","jr"];B.1k.1W=["dk"];B.1k.2d=G(){u m=B.J;u ne=m.2z(m.jq,D);ne("dj",G(jp){D.jo=jp});ne("di",G(jn){D.jo=jn});ne("dh",G(1t){D.43=1t});ne("9p",G(1t){D.43=1t});ne("dg",G(2s,1t){D.2s=2s;D.43=1t;1f{D.2y=2s.jm}1e(e){}});D.2k={":3e":D.1z,":1p":m.2o(D.1z,D.1W)};m.3f(D)};B.1k.2d();B.J.2Y(D,B.1k);if(H(1q)!="L"){1q.2X("B.S");1q.2M("B.15")}if(H(1x)!="L"){1x.26("B.15",[])}1f{if(H(B.15)=="L"){14""}}1e(e){14"B.S 3F on B.15!"}if(H(B.S)=="L"){B.S={}}B.S.1r="B.S";B.S.1Y="1.3.1";B.S.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.S.1l=G(){F D.1K()};B.S.1z=["d5","cr","b9","95","94","j3","9k","cX","cw","iT","iV","4X","9j","iQ","hS","cs","ia","i9","i8","i7","i6","i5","i4","hV","i3","i2","i1","cu","hW","ct","i0","hZ","hY","hX","P","io","il","ik","ij","cm","ih","ii","ig","ie","ic","cv","8d","A","6m","ib","1E","$","4q","aH","cO","cN","iM","5G","iK","9d","9e","iH","iD","9c","iB","cG","97","hU","hT","iw","jh","jb","j6","j5","jk","jl"];B.S.1W=["9b"];B.S.5N=G(w,h){D.w=w;D.h=h};B.S.5N.1U.U=G(){u U=B.J.U;F"{w: "+U(D.w)+", h: "+U(D.h)+"}"};B.S.5t=G(x,y){D.x=x;D.y=y};B.S.5t.1U.U=G(){u U=B.J.U;F"{x: "+U(D.x)+", y: "+U(D.y)+"}"};B.S.5t.1U.1l=G(){F D.U()};B.J.2l(B.S,{jl:G(Q,o){Q=B.S.1E(Q);B.S.4X(Q,{"1T":{"9o":o,"-hL-9o":o,"-uw-9o":o,"47":" uv(9o="+(o*3k)+")"}})},jk:G(){u d=Y B.S.5N();u w=B.S.3X;u b=B.S.1Z.5s;if(w.jj){d.w=w.jj;d.h=w.uu}N{if(b.dd.9n){d.w=b.dd.9n;d.h=b.dd.ji}N{if(b&&b.9n){d.w=b.9n;d.h=b.ji}}}F d},jh:G(Q){u I=B.S;if(H(Q.w)=="2y"||H(Q.h)=="2y"){F Y I.5N(Q.w||0,Q.h||0)}Q=I.1E(Q);if(!Q){F L}if(I.4q(Q,"3u")!="98"){F Y I.5N(Q.jg||0,Q.ci||0)}u s=Q.1T;u je=s.dc;u jf=s.6P;s.dc="fR";s.6P="j8";s.3u="";u jd=Q.jg;u jc=Q.ci;s.3u="98";s.6P=jf;s.dc=je;F Y I.5N(jd,jc)},jb:G(Q,4Z){u I=B.S;Q=I.1E(Q);if(!Q){F L}u c=Y I.5t(0,0);if(Q.x&&Q.y){c.x+=Q.x||0;c.y+=Q.y||0;F c}N{if(Q.3t===O||I.4q(Q,"3u")=="98"){F L}}u 51=O;u 2j=O;u d=B.S.1Z;u de=d.7Z;u b=d.5s;if(Q.ja){51=Q.ja();c.x+=51.2I+(de.6y||b.6y)-(de.8q||b.8q);c.y+=51.3D+(de.4C||b.4C)-(de.8p||b.8p)}N{if(d.j9){51=d.j9(Q);c.x+=51.x;c.y+=51.y}N{if(Q.8g){c.x+=Q.db;c.y+=Q.da;2j=Q.8g;if(2j!=Q){1M(2j){c.x+=2j.db;c.y+=2j.da;2j=2j.8g}}u ua=ut.us.8G();if((H(7h)!="L"&&4M(7h.ur())<9)||(ua.2A("uq")!=-1&&I.4q(Q,"6P")=="j8")){c.x-=b.db;c.y-=b.da}}}}if(H(4Z)!="L"){4Z=M.2U(4Z);if(4Z){c.x-=(4Z.x||0);c.y-=(4Z.y||0)}}if(Q.3t){2j=Q.3t}N{2j=O}1M(2j&&2j.j7!="uo"&&2j.j7!="co"){c.x-=2j.6y;c.y-=2j.4C;if(2j.3t){2j=2j.3t}N{2j=O}}F c},j6:G(Q,d9,7g){Q=B.S.1E(Q);if(H(7g)=="L"){7g="px"}B.S.4X(Q,{"1T":{"5A":d9.w+7g,"3V":d9.h+7g}})},j5:G(Q,d8,7f){Q=B.S.1E(Q);if(H(7f)=="L"){7f="px"}B.S.4X(Q,{"1T":{"2I":d8.x+7f,"3D":d8.y+7f}})},cr:G(){F B.S.3X},b9:G(){F B.S.1Z},95:G(2m,1A){u I=B.S;u d6=I.1Z;u d7=I.un;u W;1f{I.3X=2m;I.1Z=2m.2v;W=1A()}1e(e){I.3X=d7;I.1Z=d6;14 e}I.3X=d7;I.1Z=d6;F W},d5:G(Q){u 7d=[];u 7c=[];u m=B.J;u I=B.S;if(H(Q)=="L"||Q===O){Q=I.1Z}N{Q=I.1E(Q)}m.d4(Q,G(Q){u 1b=Q.1b;if(m.7e(1b)){u 4Y=Q.cD;if(4Y=="cv"&&(Q.1J=="um"||Q.1J=="uk")&&!Q.ip){F O}if(4Y=="ct"){if(Q.j4>=0){u 9m=Q.1S[Q.j4];7d.1c(1b);7c.1c((9m.3m)?9m.3m:9m.7X);F O}7d.1c(1b);7c.1c("");F O}if(4Y=="cu"||4Y=="P"||4Y=="8d"||4Y=="6m"){F Q.5h}7d.1c(1b);7c.1c(Q.3m||"");F O}F Q.5h});F[7d,7c]},94:G(1N,1A){u I=B.S;u d3=I.1Z;u W;1f{I.1Z=1N;W=1A()}1e(e){I.1Z=d3;14 e}I.1Z=d3;F W},j3:G(1b,j2,3y,j1){B.S.9b.5M(1b,j2,3y,j1)},9k:G(1j,7a){u im=B.15;u I=B.S;u 1Q=im.1Q;u iY=im.7b;u 4c=im.4c;u iX=I.9b;u iZ=I.9k;u iW=B.J.4d;1M(1h){if(H(1j)=="L"||1j===O){F O}if(H(1j.3T)!="L"&&1j.3T>0){F 1j}if(H(1j)=="2y"||H(1j)=="5L"){1j=1j.1l()}if(H(1j)=="1n"){F I.1Z.4S(1j)}if(H(1j.j0)=="G"){1j=1j.j0(7a);2V}if(H(1j)=="G"){1j=1j(7a);2V}u 9l=O;1f{9l=1Q(1j)}1e(e){}if(9l){F 4c(iZ,9l,iY(7a))}1f{1j=iX.3C(1j,7a);2V}1e(e){if(e!=iW){14 e}}F I.1Z.4S(1j.1l())}F L},iV:G(1j,79,iU){u o={};o[79]=iU;1f{F B.S.4X(1j,o)}1e(e){}F O},iT:G(1j,79){u I=B.S;u d2=I.4U.99[79];1j=I.1E(1j);1f{if(d2){F 1j[d2]}F 1j.fm(79)}1e(e){}F O},4X:G(1j,5K){u Q=1j;u I=B.S;if(H(1j)=="1n"){Q=I.1E(1j)}if(5K){u d0=B.J.8Z;if(I.4U.6X){R(u k in 5K){u v=5K[k];if(H(v)=="3n"&&H(Q[k])=="3n"){d0(Q[k],v)}N{if(k.2W(0,2)=="on"){if(H(v)=="1n"){v=Y cZ(v)}Q[k]=v}N{Q.4p(k,v)}}}}N{u iS=I.4U.99;R(k in 5K){v=5K[k];u d1=iS[k];if(k=="1T"&&H(v)=="1n"){Q.1T.3x=v}N{if(H(d1)=="1n"){Q[d1]=v}N{if(H(Q[k])=="3n"&&H(v)=="3n"){d0(Q[k],v)}N{if(k.2W(0,2)=="on"){if(H(v)=="1n"){v=Y cZ(v)}Q[k]=v}N{Q.4p(k,v)}}}}}}}F Q},9j:G(1j){u Q=1j;u I=B.S;if(H(1j)=="1n"){Q=I.1E(1j)}u 78=[I.9k(B.J.1R(O,M,1),Q)];u iR=B.J.2o;1M(78.K){u n=78.2P();if(H(n)=="L"||n===O){}N{if(H(n.3T)=="2y"){Q.2c(n)}N{78=iR(n,78)}}}F Q},iQ:G(1j){u Q=1j;u I=B.S;if(H(1j)=="1n"){Q=I.1E(1j);M[0]=Q}u cY;1M((cY=Q.6n)){Q.6S(cY)}if(M.K<2){F Q}N{F I.9j.1w(D,M)}},cX:G(1b,4b){u Q;u I=B.S;u m=B.J;if(H(4b)=="1n"||H(4b)=="2y"){u 3G=m.1R([1b,O],M,1);F M.2U.1w(D,3G)}if(H(1b)=="1n"){if(4b&&"1b"in 4b&&!I.4U.6X){1b=("<"+1b+" 1b=\\""+I.9c(4b.1b)+"\\">")}Q=I.1Z.2S(1b)}N{Q=1b}if(4b){I.4X(Q,4b)}if(M.K<=2){F Q}N{u 3G=m.1R([Q],M,2);F I.9j.1w(D,3G)}},cw:G(){u m=B.J;F m.2z.1w(D,m.1R([B.S.cX],M))},cs:G(5J,1d){u I=B.S;5J=I.1E(5J);u cW=5J.3t;if(1d){1d=I.1E(1d);cW.uj(1d,5J)}N{cW.6S(5J)}F 1d},1E:G(id){u I=B.S;if(M.K==1){F((H(id)=="1n")?I.1Z.hN(id):id)}N{F B.J.2r(I.1E,M)}},4q:G(iP,cV,cU){if(M.K==2){cU=cV}u I=B.S;u el=I.1E(iP);u 77=I.1Z;if(!el||el==77){F L}if(el.iO){F el.iO[cV]}if(H(77.5k)=="L"){F L}if(77.5k===O){F L}u 9i=77.5k.g4(el,O);if(H(9i)=="L"||9i===O){F L}F 9i.6q(cU)},aH:G(76,9g,4W){u I=B.S;if(H(76)=="L"||76===O){76="*"}if(H(4W)=="L"||4W===O){4W=I.1Z}4W=I.1E(4W);u 9h=(4W.fr(76)||I.1Z.1p);if(H(9g)=="L"||9g===O){F B.J.1R(O,9h)}u cR=[];R(u i=0;i<9h.K;i++){u cS=9h[i];u cT=cS.3M.2R(" ");R(u j=0;j<cT.K;j++){if(cT[j]==9g){cR.1c(cS);2K}}}F cR},iN:G(5I,9f){u W=G(){u cQ=M.2U.5H;R(u i=0;i<cQ.K;i++){if(cQ[i].1w(D,M)===1m){2K}}if(9f){1f{D[5I]=O}1e(e){}}};W.5H=[];F W},cO:G(cP,5I,1A,9f){u I=B.S;u 4V=cP[5I];u 75=4V;if(!(H(4V)=="G"&&H(4V.5H)=="3n"&&4V.5H!==O)){75=I.iN(5I,9f);if(H(4V)=="G"){75.5H.1c(4V)}cP[5I]=75}75.5H.1c(1A)},cN:G(1A){u I=B.S;I.cO(I.3X,"gh",1A,1h)},iM:G(74){u I=B.S;I.cN(G(){74=I.1E(74);if(74){74.ui()}})},5G:G(iL,cM){u I=B.S;u 1i=I.1E(iL);if(I.4U.6X){1i.4p("iq",cM)}N{1i.4p("3M",cM)}},iK:G(cL){u I=B.S;R(u i=1;i<M.K;i++){u 1i=I.1E(M[i]);if(!I.9d(1i,cL)){I.9e(1i,cL)}}},9d:G(iJ,73){u I=B.S;u 1i=I.1E(iJ);u 2F=1i.3M;if(2F.K===0){I.5G(1i,73);F 1h}if(2F==73){F 1m}u cK=1i.3M.2R(" ");R(u i=0;i<cK.K;i++){if(cK[i]==73){F 1m}}I.5G(1i,2F+" "+73);F 1h},9e:G(iI,cJ){u I=B.S;u 1i=I.1E(iI);u 2F=1i.3M;if(2F.K===0){F 1m}if(2F==cJ){I.5G(1i,"");F 1h}u 72=1i.3M.2R(" ");R(u i=0;i<72.K;i++){if(72[i]==cJ){72.4y(i,1);I.5G(1i,72.2b(" "));F 1h}}F 1m},iH:G(iG,iF,iE){u 1i=B.S.1E(iG);u X=B.S.9e(1i,iF);if(X){B.S.9d(1i,iE)}F X},iD:G(iC,uh){u 1i=B.S.1E(iC);u cI=1i.3M.2R(" ");R(u i=1;i<M.K;i++){u cH=1m;R(u j=0;j<cI.K;j++){if(cI[j]==M[i]){cH=1h;2K}}if(!cH){F 1m}}F 1h},9c:G(s){F s.23(/&/g,"&ug;").23(/"/g,"&uf;").23(/</g,"&lt;").23(/>/g,"&gt;")},iB:G(2q){F B.S.cG(2q).2b("")},cG:G(2q,1g){if(H(1g)=="L"||1g===O){1g=[]}u 70=[2q];u I=B.S;u cB=I.9c;u iA=I.4U;1M(70.K){2q=70.hP();if(H(2q)=="1n"){1g.1c(2q)}N{if(2q.3T==1){1g.1c("<"+2q.cD.8G());u 71=[];u cF=iA(2q);R(u i=0;i<cF.K;i++){u a=cF[i];71.1c([" ",a.1b,"=\\"",cB(a.3m),"\\""])}71.iz();R(i=0;i<71.K;i++){u cE=71[i];R(u j=0;j<cE.K;j++){1g.1c(cE[j])}}if(2q.ue()){1g.1c(">");70.1c("</"+2q.cD.8G()+">");u cC=2q.5h;R(i=cC.K-1;i>=0;i--){70.1c(cC[i])}}N{1g.1c("/>")}}N{if(2q.3T==3){1g.1c(cB(2q.iv))}}}}F 1g},97:G(ix,cA){u m=B.J;u iy=m.1R(O,M,1);B.15.9a(m.47(O,m.2r(B.S.1E,iy)),G(cA){cA.1T.3u=ix})},iw:G(1j,iu){u W=[];(G(1j){u cn=1j.5h;if(cn){R(u i=0;i<cn.K;i++){M.2U.cz(D,cn[i])}}u cy=1j.iv;if(H(cy)=="1n"){W.1c(cy)}})(B.S.1E(1j));if(iu){F W}N{F W.2b("")}},2d:G(2m){u m=B.J;D.1Z=2v;D.3X=2m;D.9b=Y m.4a();u 6Z=D.1Z.2S("cj");u 2T;if(6Z&&6Z.6Y&&6Z.6Y.K>0){u it=m.47;2T=G(1j){F it(2T.ir,1j.6Y)};2T.cx={};B.15.9a(6Z.6Y,G(a){2T.cx[a.1b]=a.3m});2T.ir=G(a){F(2T.cx[a.1b]!=a.3m)};2T.6X=1m;2T.99={"iq":"3M","ip":"ud","uc":"ub","R":"u9"}}N{2T=G(1j){F 1j.6Y};2T.6X=1h;2T.99={}}D.4U=2T;u 1C=D.cw;D.io=1C("ul");D.il=1C("ol");D.ik=1C("li");D.ij=1C("td");D.cm=1C("tr");D.ii=1C("u8");D.ih=1C("u7");D.ig=1C("u6");D.ie=1C("u5");D.ic=1C("th");D.cv=1C("ck");D.8d=1C("cj");D.A=1C("a");D.6m=1C("4u");D.ib=1C("u4");D.ia=1C("2e");D.i9=1C("tt");D.i8=1C("4O");D.i7=1C("h1");D.i6=1C("h2");D.i5=1C("h3");D.i4=1C("br");D.i3=1C("hr");D.i2=1C("u3");D.i1=1C("u2");D.cu=1C("u1");D.P=1C("p");D.ct=1C("u0");D.i0=1C("hJ");D.hZ=1C("tZ");D.hY=1C("tY");D.hX=1C("tX");D.hW=1C("tW");D.hV=1C("tV");D.hU=m.2z(D.97,"98");D.hT=m.2z(D.97,"8c");D.hS=D.cs;D.$=D.1E;D.2k={":3e":D.1z,":1p":m.2o(D.1z,D.1W)};m.3f(D)}});B.S.2d(((H(2O)=="L")?D:2O));if(!B.3d){95=B.S.95;94=B.S.94}B.J.2Y(D,B.S);if(H(1q)!="L"){1q.2X("B.1I");1q.2M("B.1H");1q.2M("B.J")}if(H(1x)!="L"){1x.26("B.1H",[]);1x.26("B.J",[])}1f{if(H(B.J)=="L"||H(B.1H)=="L"){14""}}1e(e){14"B.1I 3F on B.J 3W B.1H!"}if(H(B.1I)=="L"){B.1I={}}B.1I.1r="B.1I";B.1I.1Y="1.3.1";B.1I.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.1I.1l=G(){F D.1K()};B.1I.bY=G(6W){u m=B.1I;6W=!(!6W);if(m.3l&&m.3l.8Q!=6W){m.3l.hA();m.3l=O}if(!m.3l||m.3l.8P){m.3l=Y m.1I(6W,B.1H.2L)}F m.3l};B.1I.1I=G(4R,6V){if(H(6V)=="L"||6V===O){6V=B.1H.2L}D.2L=6V;u tU=B.J.2l;u c3=B.J.8Z;u 1O=B.J.1O;u hM=B.J.4L;u 2m=2O;u 6U="tT";if(H(B.S)!="L"){2m=B.S.cr()}if(!4R){u 5F=2m.tS.tR.2R("?")[0].23(/[:\\/.><&]/g,"hR");u 1b=6U+"hR"+5F;u 5D=2m.cp("",1b,"tQ,tP,3V=hQ");if(!5D){cq("tO tN to cp tM 2O tL to hP-up tK.");F L}5D.2v.fl("<!tJ co tI \\"-//tH//tG co 4.0 tF//tE\\" "+"\\"fq://fp.tD.fo/cm/tC/tB.tA\\">"+"<hO><5E><8Y>[B.1I]</8Y></5E>"+"<5s></5s></hO>");5D.2v.hG();5D.2v.8Y+=" "+2m.2v.8Y;2m=5D}u 1N=2m.2v;D.1N=1N;u 21=1N.hN(6U);u c4=!!21;if(21&&H(21.5B)!="L"){21.5B.2L=D.2L;21.5B.6K();F 21.5B}if(c4){u cl;1M((cl=21.6n)){21.6S(cl)}}N{21=1N.2S("4u");21.id=6U}21.5B=D;u 8T=1N.2S("ck");u 8S=1N.2S("ck");u 6O=1N.2S("2e");u 6N=1N.2S("2e");u 6M=1N.2S("2e");u 6L=1N.2S("2e");u 3L=1N.2S("4u");u 42=1N.2S("4u");u 8U=6U+"tz";D.8N=hM(D.8N);u 4T=[];u 6R=O;u cf=G(1t){u 6T=1t.3N;if(H(6T)=="2y"){6T=B.1H.5C[6T]}F 6T};u cd=G(1t){F 1t.3z.2b(" ")};u ca=1O(G(1t){u 8W=cf(1t);u 7X=cd(1t);u c=D.8N[8W];u p=1N.2S("cj");p.3M="B-49 B-5C-"+8W;p.1T.3x="ty: 2N; 4F-8X: -hL-4O-3y; 4F-8X: -o-4O-3y; 4F-8X: 4O-3y; 4F-8X: 4O-tx; hK-3y: 2K-hK; 3y-hJ: tw; 3U: "+c;p.2c(1N.4S(8W+": "+7X));42.2c(p);42.2c(1N.2S("br"));if(3L.ci>3L.hI){3L.4C=0}N{3L.4C=3L.hI}},D);u hD=G(1t){4T[4T.K]=1t;ca(1t)};u hF=G(){u cg,ce;1f{cg=Y 8V(8T.3m);ce=Y 8V(8S.3m)}1e(e){ch("2x in 47 tv: "+e.43);F O}F G(1t){F(cg.hH(cf(1t))&&ce.hH(cd(1t)))}};u cc=G(){1M(42.6n){42.6S(42.6n)}};u hB=G(){4T=[];cc()};u bZ=1O(G(){if(D.8P){F}D.8P=1h;if(B.1I.3l==D){B.1I.3l=O}D.2L.c9(8U);21.5B=O;if(4R){21.3t.6S(21)}N{D.2m.hG()}},D);u c7=G(){cc();R(u i=0;i<4T.K;i++){u 1t=4T[i];if(6R===O||6R(1t)){ca(1t)}}};D.6K=G(){6R=hF();c7();D.2L.c9(8U);D.2L.hE(8U,6R,hD)};u c0=1O(G(){4T=D.2L.c8();c7()},D);u c2=1O(G(6Q){6Q=6Q||2O.6D;2h=6Q.6w||6Q.8t;if(2h==13){D.6K()}},D);u 31="3u: 8c; z-c6: c5; 2I: 2N; 6f: 2N; 6P: tu; 5A: 3k%; he-3U: 4F; c1: "+D.8O;if(4R){31+="; 3V: ts; 3E-3D: fO 8a 8y"}N{31+="; 3V: 3k%;"}21.1T.3x=31;if(!c4){1N.5s.2c(21)}31={"3x":"5A: 33%; 3u: 8Q; c1: "+D.8O};c3(8T,{"3m":"8L|8M|8K|8J|8I","hC":c2,"1T":31});21.2c(8T);c3(8S,{"3m":".*","hC":c2,"1T":31});21.2c(8S);31="5A: 8%; 3u:8Q; c1: "+D.8O;6O.2c(1N.4S("tq"));6O.8R=1O("6K",D);6O.1T.3x=31;21.2c(6O);6N.2c(1N.4S("tp"));6N.8R=c0;6N.1T.3x=31;21.2c(6N);6M.2c(1N.4S("tn"));6M.8R=hB;6M.1T.3x=31;21.2c(6M);6L.2c(1N.4S("tm"));6L.8R=bZ;6L.1T.3x=31;21.2c(6L);3L.1T.3x="fS: tk; 5A: 3k%";42.1T.3x="5A: 3k%; 3V: "+(4R?"tj":"3k%");3L.2c(42);21.2c(3L);D.6K();c0();if(4R){D.2m=L}N{D.2m=2m}D.8Q=4R;D.hA=bZ;D.8P=1m;F D};B.1I.1I.1U={"8O":"ti tg,tf-te","8N":{"8M":"1v","8L":"gU","8K":"1F","8J":"8y","8I":"bx"}};B.1I.1W=["1I"];B.1I.1z=["bY"];B.1I.2d=G(){D.2k={":3e":D.1z,":1p":B.J.2o(D.1z,D.1W)};B.J.3f(D);B.1I.3l=O};B.1I.2d();B.J.2Y(D,B.1I);if(H(1q)!="L"){1q.2X("B.V");1q.2M("B.J")}if(H(1x)!="L"){1x.26("B.J",[])}1f{if(H(B.J)=="L"){14""}}1e(e){14"B.V 3F on B.J"}if(H(B.V)=="L"){B.V={}}B.V.1r="B.V";B.V.1Y="1.3.1";B.V.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.V.1l=G(){F D.1K()};B.V.V=G(1v,hz,1F,6J){if(H(6J)=="L"||6J===O){6J=1}D.1B={r:1v,g:hz,b:1F,a:6J}};B.V.V.1U={bX:B.V.V,tc:G(hy){u 1B=D.1B;u m=B.V;F m.V.3Y(1B.r,1B.g,1B.b,hy)},tb:G(1o){u 1G=D.41();1G.h=1o;u m=B.V;F m.V.4H(1G)},ta:G(hx){u 1G=D.41();1G.s=hx;u m=B.V;F m.V.4H(1G)},t9:G(hw){u 1G=D.41();1G.l=hw;u m=B.V;F m.V.4H(1G)},t8:G(hv){u 1G=D.41();1G.l=28.29(1G.l-hv,0);u m=B.V;F m.V.4H(1G)},t7:G(hu){u 1G=D.41();1G.l=28.2a(1G.l+hu,1);u m=B.V;F m.V.4H(1G)},fJ:G(ht,5z){if(H(5z)=="L"||5z===O){5z=0.5}u sf=1-5z;u s=D.1B;u d=ht.1B;u df=5z;F B.V.V.3Y((s.r*sf)+(d.r*df),(s.g*sf)+(d.g*df),(s.b*sf)+(d.b*df),(s.a*sf)+(d.a*df))},h4:G(hs){u a=D.6r();u b=hs.6r();F B.J.2f([a.r,a.g,a.b,a.a],[b.r,b.g,b.b,b.a])},hq:G(){F D.41().b>0.5},t6:G(){F(!D.hq())},t5:G(){u c=D.41();u 2Z=B.V.6F;u W=D.ho;if(!W){u 5y=(2Z(c.h,bF).6I(0)+","+2Z(c.s,3k).hp(4)+"%"+","+2Z(c.l,3k).hp(4)+"%");u a=c.a;if(a>=1){a=1;W="1G("+5y+")"}N{if(a<=0){a=0}W="t4("+5y+","+a+")"}D.ho=W}F W},hl:G(){u c=D.1B;u 2Z=B.V.6F;u W=D.hn;if(!W){u 5y=(2Z(c.r,3h).6I(0)+","+2Z(c.g,3h).6I(0)+","+2Z(c.b,3h).6I(0));if(c.a!=1){W="t3("+5y+","+c.a+")"}N{W="1B("+5y+")"}D.hn=W}F W},6r:G(){F B.J.4L(D.1B)},t2:G(){u m=B.V;u c=D.1B;u 2Z=B.V.6F;u W=D.hm;if(!W){W=("#"+m.6E(2Z(c.r,3h))+m.6E(2Z(c.g,3h))+m.6E(2Z(c.b,3h)));D.hm=W}F W},t1:G(){u 2Q=D.2Q;u c=D.1B;if(H(2Q)=="L"||2Q===O){2Q=B.V.bA(D.1B);D.2Q=2Q}F B.J.4L(2Q)},41:G(){u 1G=D.1G;u c=D.1B;if(H(1G)=="L"||1G===O){1G=B.V.bC(D.1B);D.1G=1G}F B.J.4L(1G)},1l:G(){F D.hl()},U:G(){u c=D.1B;u hk=[c.r,c.g,c.b,c.a];F D.bX.1r+"("+hk.2b(", ")+")"}};B.J.2l(B.V.V,{3Y:G(1v,bW,1F,8H){u hj=B.V.V;if(M.K==1){u 1B=1v;1v=1B.r;bW=1B.g;1F=1B.b;if(H(1B.a)=="L"){8H=L}N{8H=1B.a}}F Y hj(1v,bW,1F,8H)},4H:G(1o,t0,sZ,sY){u m=B.V;F m.V.3Y(m.bB.1w(m,M))},sX:G(1o,sW,sV,sU){u m=B.V;F m.V.3Y(m.bz.1w(m,M))},hi:G(1b){u 8F=B.V.V;if(1b.3Z(0)=="\\""){1b=1b.3H(1,1b.K-2)}u bV=8F.by[1b.8G()];if(H(bV)=="1n"){F 8F.bT(bV)}N{if(1b=="aP"){F 8F.sT()}}F O},8f:G(4Q){u I=B.V.V;u bU=4Q.3H(0,3);if(bU=="1B"){F I.h9(4Q)}N{if(bU=="1G"){F I.h8(4Q)}N{if(4Q.3Z(0)=="#"){F I.bT(4Q)}}}F I.hi(4Q)},bT:G(4P){if(4P.3Z(0)=="#"){4P=4P.2W(1)}u 8E=[];u i,5x;if(4P.K==3){R(i=0;i<3;i++){5x=4P.3H(i,1);8E.1c(3w(5x+5x,16)/3h)}}N{R(i=0;i<6;i+=2){5x=4P.3H(i,2);8E.1c(3w(5x,16)/3h)}}u bS=B.V.V;F bS.3Y.1w(bS,8E)},bG:G(4O,hf,hg,4N){if(4N.2A(4O)===0){4N=4N.2W(4N.2A("(",3)+1,4N.K-1)}u bR=4N.2R(/\\s*,\\s*/);u bP=[];R(u i=0;i<bR.K;i++){u c=bR[i];u 2i;u bQ=c.2W(c.K-3);if(c.3Z(c.K-1)=="%"){2i=0.bE*4M(c.2W(0,c.K-1))}N{if(bQ=="sS"){2i=4M(c)/bF}N{if(bQ=="sR"){2i=4M(c)/(28.sQ*2)}N{2i=hg[i]*4M(c)}}}bP.1c(2i)}F D[hf].1w(D,bP)},bN:G(Q,sP,sO){u d=B.S;u 2F=B.V.V;R(Q=d.1E(Q);Q;Q=Q.3t){u bO=d.4q.1w(d,M);if(!bO){2V}u 8D=2F.8f(bO);if(!8D){2K}if(8D.6r().a>0){F 8D}}F O},ba:G(Q){u 2F=B.V.V;F 2F.bN(Q,"aZ","he-3U")||2F.sN()},sM:G(Q){u 2F=B.V.V;F 2F.bN(Q,"3U","3U")||2F.sL()},sK:G(){F B.J.4L(B.V.V.by)}});B.J.2l(B.V,{6F:G(v,8C){v*=8C;if(v<0){F 0}N{if(v>8C){F 8C}N{F v}}},hc:G(n1,n2,1o){if(1o>6){1o-=6}N{if(1o<0){1o+=6}}u 2i;if(1o<1){2i=n1+(n2-n1)*1o}N{if(1o<3){2i=n2}N{if(1o<4){2i=n1+(n2-n1)*(4-1o)}N{2i=n1}}}F 2i},bz:G(1o,5w,3i,bM){if(M.K==1){u 2Q=1o;1o=2Q.h;5w=2Q.s;3i=2Q.v;bM=2Q.a}u 1v;u 3K;u 1F;if(5w===0){1v=0;3K=0;1F=0}N{u i=28.8B(1o*6);u f=(1o*6)-i;u p=3i*(1-5w);u q=3i*(1-(5w*f));u t=3i*(1-(5w*(1-f)));hd(i){3j 1:1v=q;3K=3i;1F=p;2K;3j 2:1v=p;3K=3i;1F=t;2K;3j 3:1v=p;3K=q;1F=3i;2K;3j 4:1v=t;3K=p;1F=3i;2K;3j 5:1v=3i;3K=p;1F=q;2K;3j 6:3j 0:1v=3i;3K=t;1F=p;2K}}F{r:1v,g:3K,b:1F,a:bM}},bB:G(1o,5v,3v,bL){if(M.K==1){u 1G=1o;1o=1G.h;5v=1G.s;3v=1G.l;bL=1G.a}u 1v;u 8A;u 1F;if(5v===0){1v=3v;8A=3v;1F=3v}N{u m2;if(3v<=0.5){m2=3v*(1+5v)}N{m2=3v+5v-(3v*5v)}u m1=(2*3v)-m2;u f=B.V.hc;u h6=1o*6;1v=f(m1,m2,h6+2);8A=f(m1,m2,h6);1F=f(m1,m2,h6-2)}F{r:1v,g:8A,b:1F,a:bL}},bA:G(1v,4K,1F,bK){if(M.K==1){u 1B=1v;1v=1B.r;4K=1B.g;1F=1B.b;bK=1B.a}u 29=28.29(28.29(1v,4K),1F);u 2a=28.2a(28.2a(1v,4K),1F);u 1o;u 8z;u hb=29;if(2a==29){1o=0;8z=0}N{u 6H=(29-2a);8z=6H/29;if(1v==29){1o=(4K-1F)/6H}N{if(4K==29){1o=2+((1F-1v)/6H)}N{1o=4+((1v-4K)/6H)}}1o/=6;if(1o<0){1o+=1}if(1o>1){1o-=1}}F{h:1o,s:8z,v:hb,a:bK}},bC:G(1v,4J,1F,bI){if(M.K==1){u 1B=1v;1v=1B.r;4J=1B.g;1F=1B.b;bI=1B.a}u 29=28.29(1v,28.29(4J,1F));u 2a=28.2a(1v,28.2a(4J,1F));u 1o;u 6G;u bJ=(29+2a)/2;u 4I=29-2a;if(4I===0){1o=0;6G=0}N{if(bJ<=0.5){6G=4I/(29+2a)}N{6G=4I/(2-29-2a)}if(1v==29){1o=(4J-1F)/4I}N{if(4J==29){1o=2+((1F-1v)/4I)}N{1o=4+((1v-4J)/4I)}}1o/=6;if(1o<0){1o+=1}if(1o>1){1o-=1}}F{h:1o,s:6G,l:bJ,a:bI}},6E:G(1P){1P=28.ha(1P);u bH=1P.1l(16);if(1P<16){F"0"+bH}F bH},2d:G(){u m=B.J;D.V.h9=m.1O(D.V.bG,D.V,"1B","3Y",[1/3h,1/3h,1/3h,1]);D.V.h8=m.1O(D.V.bG,D.V,"1G","4H",[1/bF,0.bE,0.bE,1]);u 4G=1/3;u bD={8y:[0,0,0],1F:[0,0,1],gY:[0.6,0.4,0.2],gX:[0,1,1],sJ:[4G,4G,4G],gR:[0.5,0.5,0.5],bx:[0,1,0],sI:[2*4G,2*4G,2*4G],gN:[1,0,1],gL:[1,0.5,0],gK:[0.5,0,0.5],1v:[1,0,0],aP:[0,0,0,0],4F:[1,1,1],gI:[1,1,0]};u h7=G(1b,r,g,b,a){u W=D.3Y(r,g,b,a);D[1b]=G(){F W};F W};R(u k in bD){u 1b=k+"V";u h5=m.2o([h7,D.V,1b],bD[k]);D.V[1b]=m.1O.1w(O,h5)}u h0=G(){R(u i=0;i<M.K;i++){if(!(M[i]2C V)){F 1m}}F 1h};u gZ=G(a,b){F a.h4(b)};m.3f(D);m.5u(D.V.1r,h0,gZ);D.2k={":3e":D.1z,":1p":m.2o(D.1z,D.1W)}}});B.V.1z=["V"];B.V.1W=["6F","bC","bB","bA","bz","6E"];B.V.2d();B.J.2Y(D,B.V);B.V.V.by={sH:"#sG",sF:"#sE",sD:"#gW",sC:"#sB",sA:"#sz",sy:"#sx",sw:"#sv",8y:"#su",st:"#sr",1F:"#sq",sp:"#so",gY:"#sn",sm:"#sl",sk:"#sj",si:"#sh",sg:"#se",sd:"#sc",sb:"#sa",s9:"#s8",s7:"#s6",gX:"#gW",s5:"#s4",s3:"#s2",s1:"#s0",rZ:"#gV",rY:"#rX",rW:"#gV",rV:"#rU",rT:"#rS",rR:"#rQ",rP:"#rO",rN:"#rM",gU:"#rL",rK:"#rJ",rI:"#rH",rG:"#rF",rE:"#gT",rD:"#gT",rC:"#rB",rA:"#rz",ry:"#rx",rw:"#rv",ru:"#gS",rt:"#gS",rs:"#rr",rq:"#rp",ro:"#rn",rm:"#rl",rk:"#gM",rj:"#ri",rh:"#rg",rf:"#rd",rc:"#rb",gR:"#gQ",bx:"#ra",r9:"#r8",r7:"#gQ",r6:"#r5",r4:"#r3",r2:"#r1",r0:"#qZ",qY:"#qX",qW:"#qV",qU:"#qT",qS:"#qR",qQ:"#qP",qO:"#qN",qM:"#qL",qK:"#qJ",qI:"#qH",qG:"#qF",qE:"#gP",qD:"#qC",qB:"#gP",qA:"#qz",qy:"#qx",qw:"#qv",qu:"#qt",qr:"#gO",qq:"#gO",qp:"#qo",qn:"#qm",ql:"#qk",qj:"#qi",qh:"#qg",gN:"#gM",qf:"#qe",qd:"#qc",qb:"#qa",q9:"#q8",q7:"#q6",q5:"#q4",q3:"#q2",q1:"#q0",pZ:"#pY",pX:"#pW",pV:"#pU",pT:"#pS",pR:"#pQ",pP:"#pO",pN:"#pM",pL:"#pK",pJ:"#pI",pH:"#pG",pF:"#pE",gL:"#pD",pC:"#pB",pA:"#pz",py:"#pw",pv:"#pu",pt:"#ps",pr:"#pq",pp:"#po",pn:"#pm",pl:"#pj",pi:"#ph",pg:"#pf",pe:"#pd",gK:"#pc",1v:"#pb",pa:"#p9",p8:"#p7",p6:"#p5",p4:"#p3",p2:"#p1",p0:"#oZ",oY:"#oX",oW:"#oV",oU:"#oT",oS:"#oR",oQ:"#oP",oO:"#gJ",oN:"#gJ",oM:"#oL",oK:"#oJ",oI:"#oH",oG:"#oF",oE:"#oD",oC:"#oB",oA:"#oz",oy:"#ox",ow:"#ov",ou:"#ot",4F:"#os",oq:"#op",gI:"#oo",om:"#ok"};if(H(1q)!="L"){1q.2X("B.1u");1q.2M("B.J");1q.2M("B.S")}if(H(1x)!="L"){1x.26("B.J",[]);1x.26("B.S",[])}1f{if(H(B.J)=="L"){14""}}1e(e){14"B.1u 3F on B.J!"}1f{if(H(B.S)=="L"){14""}}1e(e){14"B.1u 3F on B.S!"}if(H(B.1u)=="L"){B.1u={}}B.1u.1r="B.1u";B.1u.1Y="1.3.1";B.1u.4x=[];B.1u.bq=G(1d,e){D.1L=e||2O.6D;D.gH=1d};B.J.2l(B.1u.bq.1U,{1K:G(){u U=B.J.U;u 1y="{6D(): "+U(D.6D())+", 1d(): "+U(D.1d())+", 1J(): "+U(D.1J())+", 8x(): "+U(D.8x())+", 4E(): "+"{8w: "+U(D.4E().8w)+", 8v: "+U(D.4E().8v)+", 8u: "+U(D.4E().8u)+", 2P: "+U(D.4E().2P)+", bw: "+U(D.4E().bw)+"}";if(D.1J()&&D.1J().2A("2h")===0){1y+=", 2h(): {3J: "+U(D.2h().3J)+", 1n: "+U(D.2h().1n)+"}"}if(D.1J()&&(D.1J().2A("3I")===0||D.1J().2A("gE")!=-1||D.1J()=="gD")){1y+=", 3I(): {4D: "+U(D.3I().4D)+", 6A: "+U(D.3I().6A);if(D.1J()!="gC"){1y+=", 2e: {2I: "+U(D.3I().2e.2I)+", 6v: "+U(D.3I().2e.6v)+", 3g: "+U(D.3I().2e.3g)+"}}"}N{1y+="}"}}if(D.1J()=="gG"||D.1J()=="gF"){1y+=", 6C(): "+U(D.6C())}1y+="}";F 1y},1l:G(){F D.1K()},1d:G(){F D.gH},6D:G(){F D.1L},1J:G(){F D.1L.1J||L},8x:G(){F D.1L.8x||D.1L.oj},6C:G(){if(D.1J()=="gG"){F(D.1L.6C||D.1L.aW)}N{if(D.1J()=="gF"){F(D.1L.6C||D.1L.oi)}}F L},4E:G(){u m={};m.8w=D.1L.oh;m.8v=D.1L.og;m.8u=D.1L.oe||1m;m.2P=D.1L.od;m.bw=m.8w||m.8v||m.2P||m.8u;F m},2h:G(){u k={};if(D.1J()&&D.1J().2A("2h")===0){if(D.1J()=="oc"||D.1J()=="ob"){k.3J=D.1L.8t;k.1n=(B.1u.5r[k.3J]||"oa");F k}N{if(D.1J()=="o9"){k.3J=0;k.1n="";if(H(D.1L.6B)!="L"&&D.1L.6B!==0&&!B.1u.bv[D.1L.6B]){k.3J=D.1L.6B;k.1n=bu.bt(k.3J)}N{if(D.1L.8t&&H(D.1L.6B)=="L"){k.3J=D.1L.8t;k.1n=bu.bt(k.3J)}}F k}}}F L},3I:G(){u m={};u e=D.1L;if(D.1J()&&(D.1J().2A("3I")===0||D.1J().2A("gE")!=-1||D.1J()=="gD")){m.6A=Y B.S.5t(0,0);if(e.6z||e.6x){m.6A.x=(!e.6z||e.6z<0)?0:e.6z;m.6A.y=(!e.6x||e.6x<0)?0:e.6x}m.4D=Y B.S.5t(0,0);if(e.8s||e.8r){m.4D.x=(!e.8s||e.8s<0)?0:e.8s;m.4D.y=(!e.8r||e.8r<0)?0:e.8r}N{u de=B.S.1Z.7Z;u b=B.S.1Z.5s;m.4D.x=e.6z+(de.6y||b.6y)-(de.8q||b.8q);m.4D.y=e.6x+(de.4C||b.4C)-(de.8p||b.8p)}if(D.1J()!="gC"){m.2e={};m.2e.2I=1m;m.2e.3g=1m;m.2e.6v=1m;if(e.6w){m.2e.2I=(e.6w==1);m.2e.6v=(e.6w==2);m.2e.3g=(e.6w==3)}N{m.2e.2I=!!(e.2e&1);m.2e.3g=!!(e.2e&2);m.2e.6v=!!(e.2e&4)}}F m}F L},2J:G(){D.8o();D.8n()},8o:G(){if(D.1L.8o){D.1L.8o()}N{D.1L.o8=1h}},8n:G(){if(D.1L.8n){D.1L.8n()}N{D.1L.o7=1m}}});B.1u.bv={3:"gz",o6:"gA",o5:"gy",o4:"gx",o3:"gw",o2:"gv",o1:"gu",o0:"gs",nZ:"gr",nY:"gq",nX:"gp",nW:"go"};R(i=gB;i<=nV;i++){B.1u.bv[i]="gk"+(i-gB+1)}B.1u.5r={8:"nU",9:"nT",12:"gA",13:"gz",16:"nS",17:"nR",18:"nQ",19:"nP",20:"nO",27:"nN",32:"nM",33:"gy",34:"gx",35:"gw",36:"gv",37:"gu",38:"gs",39:"gr",40:"gq",44:"nL",45:"gp",46:"go",59:"gn",91:"nK",92:"nJ",93:"nI",nH:"nG",nF:"nE",nD:"nC-gm",nB:"nA",nz:"ny",nx:"nw",nv:"nu",nt:"gn",ns:"nr",nq:"np",nn:"nm-gm",nl:"nk",nj:"ni",nh:"ng",nf:"nd",nc:"nb",na:"n9",n8:"n7"};R(u i=48;i<=57;i++){B.1u.5r[i]="gl"+(i-48)}R(i=65;i<=90;i++){B.1u.5r[i]="gl"+bu.bt(i)}R(i=96;i<=n6;i++){B.1u.5r[i]="n5"+(i-96)}R(i=gj;i<=n4;i++){B.1u.5r[i]="gk"+(i-gj+1)}B.J.2l(B.1u,{1K:G(){F"["+D.1r+" "+D.1Y+"]"},1l:G(){F D.1K()},g7:G(){u I=B.1u;u bs=I.4x;R(u i=0;i<bs.K;i++){I.6t(bs[i])}gi I.4x;1f{2O.gh=L}1e(e){}1f{2O.g8=L}1e(e){}},gb:G(1d,1A,1i,gg){u E=B.1u.bq;if(!gg){F B.J.1O(1A,1i)}1i=1i||1d;if(H(1A)=="1n"){F G(gf){1i[1A].1w(1i,[Y E(1d,gf)])}}N{F G(gd){1A.1w(1i,[Y E(1d,gd)])}}},6s:G(1d,2D,5q,4B){1d=B.S.1E(1d);u I=B.1u;if(H(2D)!="1n"){14 Y 2x("\'2D\' 5p be a 1n")}u 1i=O;u 1A=O;if(H(4B)!="L"){1i=5q;1A=4B;if(H(4B)=="1n"){if(H(5q[4B])!="G"){14 Y 2x("\'bp\' 5p be a G on \'gc\'")}}N{if(H(4B)!="G"){14 Y 2x("\'bp\' 5p be a G or 1n")}}}N{if(H(5q)!="G"){14 Y 2x("\'gc\' 5p be a G if \'bp\' is 2E n3")}N{1A=5q}}if(H(1i)=="L"||1i===O){1i=1d}u bm=!!(1d.bo||1d.bn);u 8m=I.gb(1d,1A,1i,bm);if(1d.bo){1d.bo(2D.3H(2),8m,1m)}N{if(1d.bn){1d.bn(2D,8m)}}u bk=[1d,2D,8m,bm,5q,4B];I.4x.1c(bk);F bk},6t:G(6u){if(!6u[3]){F}u 1d=6u[0];u 2D=6u[1];u bj=6u[2];if(1d.ga){1d.ga(2D.3H(2),bj,1m)}N{if(1d.g9){1d.g9(2D,bj)}N{14 Y 2x("\'1d\' 5p be a S n0")}}},8j:G(bh){u I=B.1u;u 5o=I.4x;u m=B.J;if(M.K>1){u 1d=B.S.1E(M[0]);u 2D=M[1];u 1i=M[2];u 1A=M[3];R(u i=5o.K-1;i>=0;i--){u o=5o[i];if(o[0]===1d&&o[1]===2D&&o[4]===1i&&o[5]===1A){I.6t(o);5o.4y(i,1);F 1h}}}N{u 5n=m.bi(5o,bh);if(5n>=0){I.6t(bh);5o.4y(5n,1);F 1h}}F 1m},8i:G(1d,2D){1d=B.S.1E(1d);u m=B.J;u 8l=m.bg(m.1R(O,M,1));u I=B.1u;u bd=I.6t;u 4z=I.4x;if(8l.K===0){R(u i=4z.K-1;i>=0;i--){u 4A=4z[i];if(4A[0]===1d){bd(4A);4z.4y(i,1)}}}N{u bf={};R(u i=0;i<8l.K;i++){bf[8l[i]]=1h}R(u i=4z.K-1;i>=0;i--){u 4A=4z[i];if(4A[0]===1d&&4A[1]in bf){bd(4A);4z.4y(i,1)}}}},8h:G(1d,2D){u bc=B.1u.4x;1d=B.S.1E(1d);u 3G=B.J.1R(O,M,2);u 5m=[];R(u i=0;i<bc.K;i++){u 8k=bc[i];if(8k[0]===1d&&8k[1]===2D){1f{8k[2].1w(1d,3G)}1e(e){5m.1c(e)}}}if(5m.K==1){14 5m[0]}N{if(5m.K>1){u e=Y 2x("mZ bb mY in mX \'2D\', mW bb mV");e.bb=5m;14 e}}}});B.1u.1W=[];B.1u.1z=["6s","8j","8h","8i"];B.1u.2d=G(2m){u m=B.J;D.1Z=2v;D.3X=2m;1f{D.6s(2O,"g8",D.g7)}1e(e){}D.2k={":3e":D.1z,":1p":m.2o(D.1z,D.1W)};m.3f(D)};B.1u.2d(D);if(!B.3d){6s=B.1u.6s;8j=B.1u.8j;8i=B.1u.8i;8h=B.1u.8h}B.J.2Y(D,B.1u);if(H(1q)!="L"){1q.2X("B.1X");1q.2M("B.J");1q.2M("B.S");1q.2M("B.V")}if(H(1x)!="L"){1x.26("B.J",[]);1x.26("B.S",[]);1x.26("B.V",[])}1f{if(H(B.J)=="L"||H(B.S)=="L"||H(B.V)=="L"){14""}}1e(e){14"B.1X 3F on B.J, B.S 3W B.V!"}if(H(B.1X)=="L"){B.1X={}}B.1X.1r="B.1X";B.1X.1Y="1.3.1";B.1X.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.1X.1l=G(){F D.1K()};B.1X.aI=G(e,g6){e=B.S.1E(e);D.fN(g6);if(D.1S.fL){e=D.g5(e)}u 4w=D.1S.3U;u C=B.V.V;if(D.1S.3U=="aW"){4w=C.ba(e)}N{if(!(4w 2C C)){4w=C.8f(4w)}}D.82=(4w.6r().a<=0);u 5l=D.1S.aV;if(D.1S.aV=="fM"){5l=C.ba(e.8g)}N{if(!(5l 2C C)){5l=C.8f(5l)}}D.g3(e,4w,5l)};B.1X.aI.1U={g5:G(e){u mU=e.3t;u 1N=B.S.b9();if(H(1N.5k)=="L"||1N.5k===O){F e}u 4v=1N.5k.g4(e,O);if(H(4v)=="L"||4v===O){F e}u b8=B.S.6m({"1T":{3u:"8c",mT:4v.6q("6p-3D"),85:4v.6q("6p-3g"),mS:4v.6q("6p-6f"),86:4v.6q("6p-2I"),6p:"2N"}});b8.6o=e.6o;e.6o="";e.2c(b8);F e},g3:G(e,b7,8e){if(D.1S.3E){D.g2(e,8e)}if(D.fy()){D.fX(e,b7,8e)}if(D.fx()){D.fV(e,b7,8e)}},g2:G(el,g1){u b6="6l 8a "+D.aQ(g1);u g0="3E-2I: "+b6;u fZ="3E-3g: "+b6;u fY="1T=\'"+g0+";"+fZ+"\'";el.6o="<4u "+fY+">"+el.6o+"</4u>"},fX:G(el,fW,b5){u b4=D.b1(b5);R(u i=0;i<D.1S.89;i++){b4.2c(D.b0(fW,b5,i,"3D"))}el.1T.mR=0;el.mQ(b4,el.6n)},fV:G(el,fU,b3){u b2=D.b1(b3);R(u i=(D.1S.89-1);i>=0;i--){b2.2c(D.b0(fU,b3,i,"6f"))}el.1T.mP=0;el.2c(b2)},b1:G(fT){u 2q=B.S;F 2q.6m({1T:{aZ:fT.1l()}})},b0:G(aY,fQ,n,aX){u 6k=B.S.8d();u 2p=6k.1T;2p.aZ=aY.1l();2p.3u="8c";2p.3V="6l";2p.fS="fR";2p.mO="6l";u 8b=D.aQ(aY,fQ);if(D.1S.3E&&n===0){2p.mN="8a";2p.mM="6l";2p.84="2N";2p.83="2N";2p.mL="2N";2p.3V="2N";2p.fP=8b.1l()}N{if(8b){2p.fP=8b.1l();2p.mK="8a";2p.mJ="2N 6l"}}if(!D.1S.4r&&(n==(D.1S.89-1))){2p.3V="fO"}D.fI(6k,n,aX);D.fG(6k,n,aX);F 6k},fN:G(fK){D.1S={6g:"1p",3U:"aW",aV:"fM",5j:1h,3E:1m,4r:1m,fL:1m};B.J.2l(D.1S,fK);D.1S.89=(D.1S.4r?2:4)},aL:G(){u 88=D.1S.6g;if(D.6h(88,"1p","3D")){F""}u aU=(88.2A("tl")!=-1);u aT=(88.2A("tr")!=-1);if(aU&&aT){F""}if(aU){F"2I"}if(aT){F"3g"}F""},aK:G(){u 87=D.1S.6g;if(D.6h(87,"1p","6f")){F""}u aS=(87.2A("bl")!=-1);u aR=(87.2A("br")!=-1);if(aS&&aR){F""}if(aS){F"2I"}if(aR){F"3g"}F""},aQ:G(aN,aO){if(aN=="aP"){F aO}N{if(D.1S.3E){F D.1S.3E}N{if(D.1S.5j){F aO.fJ(aN)}}}F""},fI:G(el,n,fH){u 6j=D.fE(n)+"px";u aM=(fH=="3D"?D.aL():D.aK());u 4t=el.1T;if(aM=="2I"){4t.86=6j;4t.85="2N"}N{if(aM=="3g"){4t.85=6j;4t.86="2N"}N{4t.86=6j;4t.85=6j}}},fG:G(el,n,fF){u 6i=D.fz(n)+"px";u aJ=(fF=="3D"?D.aL():D.aK());u 4s=el.1T;if(aJ=="2I"){4s.84=6i;4s.83="2N"}N{if(aJ=="3g"){4s.83=6i;4s.84="2N"}N{4s.84=6i;4s.83=6i}}},fE:G(n){if(D.82){F 0}u o=D.1S;if(o.4r&&o.5j){u fD=[1,0];F fD[n]}N{if(o.4r){u fC=[2,1];F fC[n]}N{if(o.5j){u fB=[3,2,1,0];F fB[n]}N{u fA=[5,3,2,1];F fA[n]}}}},fz:G(n){u o=D.1S;u 5i;if(o.4r&&(o.5j||D.82)){F 1}N{if(o.4r){5i=[1,0]}N{if(o.5j){5i=[2,1,1,1]}N{if(o.3E){5i=[0,2,0,0]}N{if(D.82){5i=[5,3,2,1]}N{F 0}}}}}F 5i[n]},6h:G(1y){R(u i=1;i<M.K;i++){if(1y.2A(M[i])!=-1){F 1h}}F 1m},fy:G(){F D.6h(D.1S.6g,"1p","3D","tl","tr")},fx:G(){F D.6h(D.1S.6g,"1p","6f","bl","br")},mI:G(el){F(el.5h.K==1&&el.5h[0].3T==3)}};B.1X.aF=G(e,fw){Y B.1X.aI(e,fw)};B.1X.fs=G(fv,fu,ft){u aG=B.S.aH(fv,fu);R(u i=0;i<aG.K;i++){B.1X.aF(aG[i],ft)}};B.1X.V=B.V.V;B.1X.mH=B.S.4q;B.1X.2d=G(){u m=B.J;m.3f(D);D.2k={":3e":D.1z,":1p":m.2o(D.1z,D.1W)}};B.1X.1z=["aF","fs"];B.1X.1W=[];B.1X.2d();B.J.2Y(D,B.1X);if(H(B)=="L"){B={}}if(H(B.B)=="L"){B.B={}}B.B.1r="B.B";B.B.1Y="1.3.1";B.B.1K=G(){F"["+D.1r+" "+D.1Y+"]"};B.B.1l=G(){F D.1K()};B.B.aA=["J","15","1H","1D","1s","1k","S","1I","V","1u","1X"];if(H(1x)!="L"||H(1q)!="L"){if(H(1q)!="L"){1q.2X("B.B");1q.2M("B.*")}if(H(1x)!="L"){1x.26("B.J",[]);1x.26("B.15",[]);1x.26("B.1H",[]);1x.26("B.1D",[]);1x.26("B.1s",[]);1x.26("B.1k",[]);1x.26("B.S",[]);1x.26("B.1I",[]);1x.26("B.V",[]);1x.26("B.1u",[]);1x.26("B.1X",[])}(G(){u 6e=B.J.1R;u I=B.B;u aE=I.aA;u aD=[];u aC=[];u 81={};u i,k,m,1p;R(i=0;i<aE.K;i++){m=B[aE[i]];6e(aD,m.1z);6e(aC,m.1W);R(k in m.2k){81[k]=6e(81[k],m.2k[k])}1p=m.2k[":1p"];if(!1p){1p=6e(O,m.1z,m.1W)}u j;R(j=0;j<1p.K;j++){k=1p[j];I[k]=m[k]}}I.1z=aD;I.1W=aC;I.2k=81}())}N{if(H(B.3d)=="L"){B.3d=1h}(G(){u 80=2v.fr("7W");u ay="fq://fp.mG.fo/mF/mE/mD.is.aB.mC";u 2w=O;u ax=O;u az={};u i;R(i=0;i<80.K;i++){u 1d=80[i].fm("1d");if(!1d){2V}az[1d]=1h;if(1d.3C(/B.js$/)){2w=1d.2W(0,1d.mB("B.js"));ax=80[i]}}if(2w===O){F}u 6d=B.B.aA;R(u i=0;i<6d.K;i++){if(B[6d[i]]){2V}u 7Y=2w+6d[i]+".js";if(7Y in az){2V}if(2v.7Z&&2v.7Z.mA==ay){u s=2v.mz(ay,"7W");s.4p("id","my"+2w+6d[i]);s.4p("1d",7Y);s.4p("1J","mx/x-fk");ax.3t.2c(s)}N{2v.fl("<7W 1d=\\""+7Y+"\\" 1J=\\"7X/fk\\"></7W>")}}})()}',62,1976,'||||||||||||||||||||||||||||||var|||||||MochiKit||this||return|function|typeof|self|Base|length|undefined|arguments|else|null||elem|for|DOM||repr|Color|rval|res|new||||||throw|Iter|||||next|name|push|src|catch|try|lst|true|obj|node|Async|toString|false|string|hue|all|dojo|NAME|Format|msg|Signal|red|apply|JSAN|str|EXPORT|func|rgb|_425|DateTime|getElement|blue|hsl|Logging|LoggingPane|type|__repr__|_event|while|doc|bind|num|iter|extend|options|style|prototype|seq|EXPORT_OK|Visual|VERSION|_document||_434||replace|forwardCall|StopIteration|use||Math|max|min|join|appendChild|__new__|button|compare|date|key|val|_329|EXPORT_TAGS|update|win|pair|concat|_596|dom|map|req|Deferred|sync|document|base|Error|number|partial|indexOf||instanceof|sig|not|cls|list|fired|left|stop|break|logger|require|0px|window|shift|hsv|split|createElement|_423|callee|continue|substring|provide|_exportSymbols|ccc||_464|||||||||step|pred|_51|__compat__|common|nameFunctions|right|255|_517|case|100|_loggingPane|value|object|callback|TypeError|_251|_246|_113|parentNode|display|_522|parseInt|cssText|wrap|info|isArrayLike|end|match|top|border|depends|args|substr|mouse|code|_519|_443|className|level|err|frac|Date|_135|_85|nodeType|color|height|and|_window|fromRGB|charAt||asHSL|_444|message||||filter||LogMessage|AdapterRegistry|_366|imap|NotFound|locked|counter|_262|_messages|operator|cmp|_165|_161|pairs|arr|_52|setAttribute|computedStyle|compact|_614|_610|div|_576|_572|_observers|splice|_565|_566|_555|scrollTop|page|modifier|white|_541|fromHSL|_539|_535|_528|clone|parseFloat|_505|pre|_499|_497|_427|createTextNode|_446|attributeArray|_388|_379|updateNodeAttributes|_341|_326||box|errback|results|paused|chain|_285||ofs||NamedError|_175|_147|_122|_83|_54|_17|childNodes|_619|blend|defaultView|_574|_569|idx|_562|must|_554|_specialKeys|body|Coordinates|registerComparator|_521|_516|hex|mid|_478|width|loggingPane|LogLevel|nwin|head|url|setElementClass|callStack|path|dest|_359|boolean|register|Dimensions|DeferredLock|_313|addCallback|_310|waiting|onreadystatechange|_290|LOCALE|year|printfire|_214|log|_213|_211|pos|_155|_153||typeMatcher|listMinMax|_114|_40|itr|typ|_19|_634|_625|bottom|corners|_hasString|_612|_608|_595|1px|DIV|firstChild|innerHTML|padding|getPropertyValue|asRGB|connect|_disconnect|_559|middle|which|clientY|scrollLeft|clientX|client|charCode|relatedTarget|event|toColorPart|clampColorComponent|_537|_534|toFixed|_468|buildAndApplyFilter|_442|_441|_440|_439|position|_463|_447|removeChild|_449|uid|_428|_426|compliant|attributes|_422|_409|_412|_400|_395|_390|_389|_377|_375|_363|attr|ctx|repeat|_340|_339|isNotEmpty|_335|_333|opera|DeferredList|ret|_309|silentlyCancelled|canceller|_nextId|Array|_293|XMLHttpRequest|chained|_281|tail|_252|_225|msec|day|month|iso|Logger|_208|listeners|_200|_198|_194|_196|reduce|range|_169|_162|truth|registerRepr|_121|_70|_58|_56|_47|_45|_41|_13|_1|script|text|uri|documentElement|_630|_629|isTransparent|borderRightWidth|borderLeftWidth|marginRight|marginLeft|_602|_599|numSlices|solid|_597|block|SPAN|_579|fromString|offsetParent|signal|disconnectAll|disconnect|_570|_563|_557|preventDefault|stopPropagation|clientTop|clientLeft|pageY|pageX|keyCode|meta|ctrl|alt|target|black|_532|_524|floor|_513|_512|_500|_495|toLowerCase|_487|DEBUG|INFO|WARNING|FATAL|ERROR|colorTable|logFont|closed|inline|onclick|_438|_437|_445|RegExp|_452|space|title|updatetree|||||withDocument|withWindow||setDisplayForElement|none|renames|forEach|domConverters|escapeHTML|addElementClass|removeElementClass|once|_378|_380|_376|appendChildNodes|coerceToDOM|_355|opt|clientWidth|opacity|GenericError|fail|resultList|_307|_301|_fire|can|addCallbacks|_resback|percent|decimal|separator|twoDigitFloat|_274|_273|_264|_257|_250|_249|_254|_248|_243|_242|fmt|_240|_245|getTime|sec|hour|_209|slice|_206|iterateNextIter|registerIteratorFactory|arrayLikeIter|iteratorRegistry|takewhile|ifilterfalse|ifilter|_181|_176|_168|_166|_159|_tee|deque|arg|fun|jsonRegistry|reprString|reprRegistry|comparatorRegistry|urlEncode|_110|_108|cur|_95|_87|_71|im_preargs||_53|_57|_46|present|like|array|Argument|_15|_12|_632|_631|_633|SUBMODULES|only|_628|_627|_626|roundElement|_624|getElementsByTagAndClassName|_RoundCorners|_613|_whichSideBottom|_whichSideTop|_609|_605|_606|transparent|_borderColor|_604|_603|_601|_600|bgColor|fromElement|_594|_592|backgroundColor|_createCornerSlice|_createCorner|_590|_589|_587|_586|_581|_578|_577|currentDocument|fromBackground|errors|_568|_564||sigs|flattenArguments|_561|findIdentical|_560|_558||_556|attachEvent|addEventListener|funcOrStr|Event||_548|fromCharCode|String|_specialMacKeys|any|green|_namedColors|hsvToRGB|rgbToHSV|hslToRGB|rgbToHSL|_542|01|360|_fromColorString|_540|_536|_538|_529|_523|_518|fromComputedStyle|_511|_507|_508|_506|_501|fromHexString|_498|_496|_486|__class__|createLoggingPane|_459|_461|font|_462|_430|_435|1000|index|_460|getMessages|removeListener|_451||_457|_450|infore|_448|_456|logDebug|offsetHeight|span|input|_436|TR||HTML|open|alert|currentWindow|swapDOM|SELECT|FORM|INPUT|createDOMFunc|ignoreAttr|_421|call|_417|_410|_415|nodeName|_414|_413|emitHTML|good|_406|_399|_397|_393|_392|addLoadEvent|addToCallStack|_387|_386|_381|_382|_383|_373|_372|_369|createDOM|_365|Function|_360|_362|_358|_344|nodeWalk|formContents|_337|_338|_334|_332|offsetTop|offsetLeft|visibility|parentElement|||XMLHttpRequestError|BrowserComplianceError|CancelledError|AlreadyCalledError|evalJSONRequest|sendXMLHttpRequest|wait|doSimpleXMLHttpRequest|getXMLHttpRequest|succeed|_312|finishedCount|_308|_cbDeferred|_303|_297|queryString|_nothing|_289|XMLHTTP|ActiveXObject|eval|_284|_check|error|_279|default|rstrip|lstrip|formatLocale|roundToFixed|truncToFixed|_276|pow|_272|_271|_270|sign|_265|_263|tmp|_238|_232|toISODate|toISOTime|getFullYear|getDate|getMonth|_230|_padTwo|_228|useNativeConsole|_212|compareLogMessage|isLogMessage|unshift|_207||maxSize|_202|_199|logLevelAtLeast|console|hasIterateNext|iterateNext|arrayLike|groupby||exhaust|tee|dropwhile|applymap||islice|izip|cycle|count||_189|_188|_183|_185|_184|_186|_187|_182|identity|fetch|_180|_177|listMin|reprNumber|reprArrayLike|compareArrayLike|compareDateLike|isDateLike|findValue|_128|__export__|keyComparator|_124|_118|_93|_94|_90|_88|_84|_77|_68|_67|_66|_65|_60|im_func|_55|im_self|_48|_44|_42|_39|_36|_33|_27|_26|_25|_22|_24|_20|javascript|write|getAttribute||org|www|http|getElementsByTagName|roundClass|_623|_622|_621|_620|_isBottomRounded|_isTopRounded|_borderSize|_618|_617|_616|_615|_marginSize|_611|_setBorder|_607|_setMargin|blendedColor|_598|__unstable__wrapElement|fromParent|_setOptions|2px|borderColor|_593|hidden|overflow|_591|_588|_roundBottomCorners|_585|_roundTopCorners|_584|_583|_582|_580|_renderBorder|_roundCornersImpl|getComputedStyle|_doWrap|_571|_unloadCache|onunload|detachEvent|removeEventListener|_listener|objOrFunc|_552||_551|_549|onload|delete|112|KEY_F|KEY_|MINUS|KEY_SEMICOLON|KEY_DELETE|KEY_INSERT|KEY_ARROW_DOWN|KEY_ARROW_RIGHT|KEY_ARROW_UP||KEY_ARROW_LEFT|KEY_HOME|KEY_END|KEY_PAGE_DOWN|KEY_PAGE_UP|KEY_ENTER|KEY_NUM_PAD_CLEAR|63236|mousemove|contextmenu|click|mouseout|mouseover|_src|yellow|708090|purple|orange|ff00ff|magenta|778899|d3d3d3|808080|gray|696969|2f4f4f|darkred|a9a9a9|00ffff|cyan|brown|_547|_546||||compareRGB|_545||_543|fromHSLString|fromRGBString|round|_533|_hslValue|switch|background|_503|_504||fromName|_488|col|toRGBString|_hexString|_rgbString|_hslString|toPrecision|isLight||_481|_477|_476|_475|_474|_473|_469|_466|closePane|_458|onkeypress|_454|addListener|_455|close|test|scrollHeight|option|word|moz|_431|getElementById|html|pop|200|_|removeElement|showElement|hideElement|CANVAS|STRONG|FIELDSET|LEGEND|OPTGROUP|OPTION|TEXTAREA|LABEL|HR|BR|H3|H2|H1|PRE|TT|BUTTON|IMG|TH||TABLE||TFOOT|THEAD|TBODY|TD|LI|OL|||UL|checked|class|ignoreAttrFilter||_424|_419|nodeValue|scrapeText|_416|_418|sort|_411|toHTML|_404|hasElementClass|_403|_402|_401|swapElementClass|_398|_394|toggleElementClass|_391|focusOnLoad|_newCallStack|currentStyle|_371|replaceChildNodes|_364|_361|getNodeAttribute|_357|setNodeAttribute|_354|_352|_350|_353|toDOM|_346|_345|registerDOMConverter|selectedIndex|setElementPosition|setElementDimensions|tagName|absolute|getBoxObjectFor|getBoundingClientRect|elementPosition|_325|_324|_322|_323|offsetWidth|elementDimensions|clientHeight|innerWidth|getViewportDimensions|setOpacity|status|_317|deferred|_316|_newNamedError|maybeDeferred||gatherResults|callLater|loadJSONDoc|_311|consumeErrors|fireOnOneErrback|fireOnOneCallback|addErrback|_305|_304|_306|unlocked|release|_300|_299|_298|_296|_xhr_onreadystatechange|_xhr_canceller|304|responseText|Msxml2|addBoth|_pause|_continue|result|the|are|they|instances|_unpause|cancel|_280|_278|en_US|strip|percentFormat|twoDigitAverage|numberFormatter|_277|_275|isNaN|_259|_258|_260|_255|_253|_numberFormatter|_241|_239|_237|_236|_235|_234|_233|_231|toAmericanDate|toPaddedAmericanDate|americanDate|toISOTimestamp|isoTimestamp|isoDate|foot|sep||60000|_221|_isoRegexp|dispatchEvent|createEvent|warning|logWarning|fatal|logFatal|debug|logError|baseLog|_210|getMessageText|logToConsole|dispatchListeners|_204|_203|ident|_201|postError|alertListener|_197|_192|groupby_as_array|iextend|some|reversed|sorted|every|sum|_190|eat|_174|_173|_172|_171|_167|_163|_158|_157|_151|_144|_141||_139|_136|_134||_133|_132|zip|merge|isUndefined|isCallable|listMax|_131|_130|encodeURIComponent||_127|method|parseQueryString|evalJSON|registerJSON|serializeJSON|objMin|objMax|reverseKeyComparator|arrayEqual|objEqual|bindMethods|xfilter|xmap|isEmpty|isNull|isUndefinedOrNull|itemgetter|items|keys|setdefault|_126|_120|decodeURIComponent|_119|len|_109|_107|_104|_105|_101|_102|_98|||_100|_97|_96|_91|json|__json__|_82|_81|_80|_79|_76||_75|_74|_73|_69|_primitives|_64|_63||_62|_61|_59|_wrapDumbFunction|_49|_50|_31|_30|_21|_7|application|MochiKit_|createElementNS|namespaceURI|lastIndexOf|xul|there|gatekeeper|keymaster|mozilla|getElementsComputedStyle|_hasSingleTextChild|borderWidth|borderStyle|borderBottomWidth|borderTopWidth|borderTopStyle|fontSize|paddingBottom|insertBefore|paddingTop|marginBottom|marginTop|_575|property|see|handling|thrown|Multiple|element|||given|123|KEY_NUM_PAD_|105|KEY_APOSTROPHE|222|KEY_RIGHT_SQUARE_BRACKET|221|KEY_REVERSE_SOLIDUS|220|KEY_LEFT_SQUARE_BRACKET||219|KEY_GRAVE_ACCENT|192|KEY_SOLIDUS|191|KEY_FULL_STOP|190|KEY_HYPHEN|189||KEY_COMMA|188|KEY_EQUALS_SIGN|187|186|KEY_SCROLL_LOCK|145|KEY_NUM_LOCK|144|KEY_NUM_PAD_SOLIDUS|111|KEY_NUM_PAD_FULL_STOP|110|KEY_NUM_PAD_HYPHEN|109|KEY_NUM_PAD_PLUS_SIGN|107|KEY_NUM_PAD_ASTERISK|106|KEY_SELECT|KEY_WINDOWS_RIGHT|KEY_WINDOWS_LEFT|KEY_PRINT_SCREEN|KEY_SPACEBAR|KEY_ESCAPE|KEY_CAPS_LOCK|KEY_PAUSE|KEY_ALT|KEY_CTRL|KEY_SHIFT|KEY_TAB|KEY_BACKSPACE|63242|63272|63302|63233|63235|63232|63234|63273|63275|63277|63276|63289|returnValue|cancelBubble|keypress|KEY_UNKNOWN|keyup|keydown|shiftKey|metaKey||ctrlKey|altKey|toElement|srcElement|9acd32||yellowgreen||ffff00|f5f5f5|whitesmoke||ffffff|f5deb3|wheat|ee82ee|violet|40e0d0|turquoise|ff6347|tomato|d8bfd8|thistle|008080|teal|d2b48c|tan|4682b4|steelblue|00ff7f|springgreen|fffafa|snow|slategrey|slategray|6a5acd|slateblue|87ceeb|skyblue|c0c0c0|silver|a0522d|sienna|fff5ee|seashell|2e8b57|seagreen|f4a460|sandybrown|fa8072|salmon|8b4513|saddlebrown|4169e1|royalblue|bc8f8f|rosybrown|ff0000|800080|b0e0e6|powderblue|dda0dd|plum|ffc0cb|pink|cd853f||peru|ffdab9|peachpuff|ffefd5|papayawhip|db7093|palevioletred|afeeee|paleturquoise|98fb98|palegreen|eee8aa||palegoldenrod|da70d6|orchid|ff4500|orangered|ffa500|6b8e23|olivedrab|808000|olive|fdf5e6|oldlace|000080|navy|ffdead|navajowhite|ffe4b5|moccasin|ffe4e1|mistyrose|f5fffa|mintcream|191970|midnightblue|c71585|mediumvioletred|48d1cc|mediumturquoise|00fa9a|mediumspringgreen|7b68ee|mediumslateblue|3cb371|mediumseagreen|9370db|mediumpurple|ba55d3|mediumorchid|0000cd|mediumblue|66cdaa|mediumaquamarine|800000|maroon|faf0e6|linen|32cd32|limegreen|00ff00|lime|ffffe0|lightyellow|b0c4de|lightsteelblue|lightslategrey|lightslategray||87cefa|lightskyblue|20b2aa|lightseagreen|ffa07a|lightsalmon|ffb6c1|lightpink|lightgrey|90ee90|lightgreen|lightgray|fafad2|lightgoldenrodyellow|e0ffff|lightcyan|f08080|lightcoral|add8e6|lightblue|fffacd|lemonchiffon|7cfc00|lawngreen|fff0f5|lavenderblush|e6e6fa|lavender|f0e68c|khaki|fffff0|ivory|4b0082|indigo|cd5c5c|indianred|ff69b4|hotpink|f0fff0|honeydew|grey|adff2f|greenyellow|008000|daa520|goldenrod|ffd700||gold|f8f8ff|ghostwhite|dcdcdc|gainsboro|fuchsia|228b22|forestgreen|fffaf0|floralwhite|b22222|firebrick|1e90ff|dodgerblue|dimgrey|dimgray|00bfff|deepskyblue|ff1493|deeppink|9400d3|darkviolet|00ced1|darkturquoise|darkslategrey|darkslategray|483d8b|darkslateblue|8fbc8f|darkseagreen|e9967a|darksalmon|8b0000|9932cc|darkorchid|ff8c00|darkorange|556b2f|darkolivegreen|8b008b|darkmagenta|bdb76b|darkkhaki|darkgrey|006400|darkgreen|darkgray|b8860b|darkgoldenrod|008b8b|darkcyan|00008b|darkblue|dc143c|crimson|fff8dc|cornsilk|6495ed|cornflowerblue|ff7f50|coral|d2691e||chocolate|7fff00|chartreuse|5f9ea0|cadetblue|deb887|burlywood|a52a2a|8a2be2|blueviolet|0000ff|ffebcd||blanchedalmond|000000|ffe4c4|bisque|f5f5dc|beige|f0ffff|azure|7fffd4|aquamarine|aqua|faebd7|antiquewhite|f0f8ff|aliceblue|lightGray|darkGray|namedColors|blackColor|fromText|whiteColor|_510|_509|PI|rad|deg|transparentColor|_494|_493|_492|fromHSV|_491|_490|_489|asHSV|toHexString|rgba|hsla|toHSLString|isDark|lighterColorWithLevel|darkerColorWithLevel|colorWithLightness|colorWithSaturation|colorWithHue|colorWithAlpha||serif|sans|Verdana||8pt|8em|auto||Close|Clear||Load|Filter||10em||fixed|regex|emergency|line|margin|_Listener|dtd|loose|html4|w3|EN|Transitional|DTD|W3C|PUBLIC|DOCTYPE|blocking|due|debugging|able|Not|resizable|dependent|href|location|_MochiKit_LoggingPane|_429|canvas|strong|fieldset|legend|optgroup|select|form|textarea|label|img|table|tfoot|thead|tbody|htmlFor||useMap|usemap|defaultChecked|hasChildNodes|quot|amp|_405|focus|replaceChild|checkbox||radio|_win|BODY||safari|version|userAgent|navigator|innerHeight|alpha|khtml|Tried|acquire|clearTimeout|setTimeout|GET|ignore|send|abort|failed|Request|readyState|support|does|Browser|Microsoft|_288|_287|used|Deferreds|Chained|success|unfired|fr_FR|de_DE|00|abs|search|pattern|Invalid|getTimezoneOffset|getSeconds|getMinutes|getHours|UTC|3600000|initEvent|Events|debuggingBookmarklet|MESSAGES|LAST|_205|clear|ninfo|nlevel|timestamp|reverse|takes|initial|with|sequence|empty|iterable|numbers|dateLike|escape|find|forward|unregister|unescape|Object|compared|item|contains|logor|logand|cle|clt|cge|cgt|cne|ceq|zrshift|rshift|lshift|xor|mul|mod|sub|add|neg|lognot|_9|_2'.split('|'),0,{})
-
-
-/*
- * jQuery 1.2.1 - New Wave Javascript
- *
- * Copyright (c) 2007 John Resig (jquery.com)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * $Date: 2007-09-16 23:42:06 -0400 (Sun, 16 Sep 2007) $
- * $Rev: 3353 $
- */
-
-var decompressedJQuery = function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(G(){9(1m E!="W")H w=E;H E=18.15=G(a,b){I 6 7u E?6.5N(a,b):1u E(a,b)};9(1m $!="W")H D=$;18.$=E;H u=/^[^<]*(<(.|\\s)+>)[^>]*$|^#(\\w+)$/;E.1b=E.3A={5N:G(c,a){c=c||U;9(1m c=="1M"){H m=u.2S(c);9(m&&(m[1]||!a)){9(m[1])c=E.4D([m[1]],a);J{H b=U.3S(m[3]);9(b)9(b.22!=m[3])I E().1Y(c);J{6[0]=b;6.K=1;I 6}J c=[]}}J I 1u E(a).1Y(c)}J 9(E.1n(c))I 1u E(U)[E.1b.2d?"2d":"39"](c);I 6.6v(c.1c==1B&&c||(c.4c||c.K&&c!=18&&!c.1y&&c[0]!=W&&c[0].1y)&&E.2h(c)||[c])},4c:"1.2.1",7Y:G(){I 6.K},K:0,21:G(a){I a==W?E.2h(6):6[a]},2o:G(a){H b=E(a);b.4Y=6;I b},6v:G(a){6.K=0;1B.3A.1a.16(6,a);I 6},N:G(a,b){I E.N(6,a,b)},4I:G(a){H b=-1;6.N(G(i){9(6==a)b=i});I b},1x:G(f,d,e){H c=f;9(f.1c==3X)9(d==W)I 6.K&&E[e||"1x"](6[0],f)||W;J{c={};c[f]=d}I 6.N(G(a){L(H b 1i c)E.1x(e?6.R:6,b,E.1e(6,c[b],e,a,b))})},17:G(b,a){I 6.1x(b,a,"3C")},2g:G(e){9(1m e!="5i"&&e!=S)I 6.4n().3g(U.6F(e));H t="";E.N(e||6,G(){E.N(6.3j,G(){9(6.1y!=8)t+=6.1y!=1?6.6x:E.1b.2g([6])})});I t},5m:G(b){9(6[0])E(b,6[0].3H).6u().3d(6[0]).1X(G(){H a=6;1W(a.1w)a=a.1w;I a}).3g(6);I 6},8m:G(a){I 6.N(G(){E(6).6q().5m(a)})},8d:G(a){I 6.N(G(){E(6).5m(a)})},3g:G(){I 6.3z(1q,Q,1,G(a){6.58(a)})},6j:G(){I 6.3z(1q,Q,-1,G(a){6.3d(a,6.1w)})},6g:G(){I 6.3z(1q,P,1,G(a){6.12.3d(a,6)})},50:G(){I 6.3z(1q,P,-1,G(a){6.12.3d(a,6.2q)})},2D:G(){I 6.4Y||E([])},1Y:G(t){H b=E.1X(6,G(a){I E.1Y(t,a)});I 6.2o(/[^+>] [^+>]/.14(t)||t.1g("..")>-1?E.4V(b):b)},6u:G(e){H f=6.1X(G(){I 6.67?E(6.67)[0]:6.4R(Q)});H d=f.1Y("*").4O().N(G(){9(6[F]!=W)6[F]=S});9(e===Q)6.1Y("*").4O().N(G(i){H c=E.M(6,"2P");L(H a 1i c)L(H b 1i c[a])E.1j.1f(d[i],a,c[a][b],c[a][b].M)});I f},1E:G(t){I 6.2o(E.1n(t)&&E.2W(6,G(b,a){I t.16(b,[a])})||E.3m(t,6))},5V:G(t){I 6.2o(t.1c==3X&&E.3m(t,6,Q)||E.2W(6,G(a){I(t.1c==1B||t.4c)?E.2A(a,t)<0:a!=t}))},1f:G(t){I 6.2o(E.1R(6.21(),t.1c==3X?E(t).21():t.K!=W&&(!t.11||E.11(t,"2Y"))?t:[t]))},3t:G(a){I a?E.3m(a,6).K>0:P},7c:G(a){I 6.3t("."+a)},3i:G(b){9(b==W){9(6.K){H c=6[0];9(E.11(c,"24")){H e=c.4Z,a=[],Y=c.Y,2G=c.O=="24-2G";9(e<0)I S;L(H i=2G?e:0,33=2G?e+1:Y.K;i<33;i++){H d=Y[i];9(d.26){H b=E.V.1h&&!d.9V["1Q"].9L?d.2g:d.1Q;9(2G)I b;a.1a(b)}}I a}J I 6[0].1Q.1p(/\\r/g,"")}}J I 6.N(G(){9(b.1c==1B&&/4k|5j/.14(6.O))6.2Q=(E.2A(6.1Q,b)>=0||E.2A(6.2H,b)>=0);J 9(E.11(6,"24")){H a=b.1c==1B?b:[b];E("9h",6).N(G(){6.26=(E.2A(6.1Q,a)>=0||E.2A(6.2g,a)>=0)});9(!a.K)6.4Z=-1}J 6.1Q=b})},4o:G(a){I a==W?(6.K?6[0].3O:S):6.4n().3g(a)},6H:G(a){I 6.50(a).28()},6E:G(i){I 6.2J(i,i+1)},2J:G(){I 6.2o(1B.3A.2J.16(6,1q))},1X:G(b){I 6.2o(E.1X(6,G(a,i){I b.2O(a,i,a)}))},4O:G(){I 6.1f(6.4Y)},3z:G(f,d,g,e){H c=6.K>1,a;I 6.N(G(){9(!a){a=E.4D(f,6.3H);9(g<0)a.8U()}H b=6;9(d&&E.11(6,"1I")&&E.11(a[0],"4m"))b=6.4l("1K")[0]||6.58(U.5B("1K"));E.N(a,G(){H a=c?6.4R(Q):6;9(!5A(0,a))e.2O(b,a)})})}};G 5A(i,b){H a=E.11(b,"1J");9(a){9(b.3k)E.3G({1d:b.3k,3e:P,1V:"1J"});J E.5f(b.2g||b.6s||b.3O||"");9(b.12)b.12.3b(b)}J 9(b.1y==1)E("1J",b).N(5A);I a}E.1k=E.1b.1k=G(){H c=1q[0]||{},a=1,2c=1q.K,5e=P;9(c.1c==8o){5e=c;c=1q[1]||{}}9(2c==1){c=6;a=0}H b;L(;a<2c;a++)9((b=1q[a])!=S)L(H i 1i b){9(c==b[i])6r;9(5e&&1m b[i]==\'5i\'&&c[i])E.1k(c[i],b[i]);J 9(b[i]!=W)c[i]=b[i]}I c};H F="15"+(1u 3D()).3B(),6p=0,5c={};E.1k({8a:G(a){18.$=D;9(a)18.15=w;I E},1n:G(a){I!!a&&1m a!="1M"&&!a.11&&a.1c!=1B&&/G/i.14(a+"")},4a:G(a){I a.2V&&!a.1G||a.37&&a.3H&&!a.3H.1G},5f:G(a){a=E.36(a);9(a){9(18.6l)18.6l(a);J 9(E.V.1N)18.56(a,0);J 3w.2O(18,a)}},11:G(b,a){I b.11&&b.11.27()==a.27()},1L:{},M:G(c,d,b){c=c==18?5c:c;H a=c[F];9(!a)a=c[F]=++6p;9(d&&!E.1L[a])E.1L[a]={};9(b!=W)E.1L[a][d]=b;I d?E.1L[a][d]:a},30:G(c,b){c=c==18?5c:c;H a=c[F];9(b){9(E.1L[a]){2E E.1L[a][b];b="";L(b 1i E.1L[a])1T;9(!b)E.30(c)}}J{2a{2E c[F]}29(e){9(c.53)c.53(F)}2E E.1L[a]}},N:G(a,b,c){9(c){9(a.K==W)L(H i 1i a)b.16(a[i],c);J L(H i=0,48=a.K;i<48;i++)9(b.16(a[i],c)===P)1T}J{9(a.K==W)L(H i 1i a)b.2O(a[i],i,a[i]);J L(H i=0,48=a.K,3i=a[0];i<48&&b.2O(3i,i,3i)!==P;3i=a[++i]){}}I a},1e:G(c,b,d,e,a){9(E.1n(b))b=b.2O(c,[e]);H f=/z-?4I|7T-?7Q|1r|69|7P-?1H/i;I b&&b.1c==4W&&d=="3C"&&!f.14(a)?b+"2T":b},1o:{1f:G(b,c){E.N((c||"").2l(/\\s+/),G(i,a){9(!E.1o.3K(b.1o,a))b.1o+=(b.1o?" ":"")+a})},28:G(b,c){b.1o=c!=W?E.2W(b.1o.2l(/\\s+/),G(a){I!E.1o.3K(c,a)}).66(" "):""},3K:G(t,c){I E.2A(c,(t.1o||t).3s().2l(/\\s+/))>-1}},2k:G(e,o,f){L(H i 1i o){e.R["3r"+i]=e.R[i];e.R[i]=o[i]}f.16(e,[]);L(H i 1i o)e.R[i]=e.R["3r"+i]},17:G(e,p){9(p=="1H"||p=="2N"){H b={},42,41,d=["7J","7I","7G","7F"];E.N(d,G(){b["7C"+6]=0;b["7B"+6+"5Z"]=0});E.2k(e,b,G(){9(E(e).3t(\':3R\')){42=e.7A;41=e.7w}J{e=E(e.4R(Q)).1Y(":4k").5W("2Q").2D().17({4C:"1P",2X:"4F",19:"2Z",7o:"0",1S:"0"}).5R(e.12)[0];H a=E.17(e.12,"2X")||"3V";9(a=="3V")e.12.R.2X="7g";42=e.7e;41=e.7b;9(a=="3V")e.12.R.2X="3V";e.12.3b(e)}});I p=="1H"?42:41}I E.3C(e,p)},3C:G(h,j,i){H g,2w=[],2k=[];G 3n(a){9(!E.V.1N)I P;H b=U.3o.3Z(a,S);I!b||b.4y("3n")==""}9(j=="1r"&&E.V.1h){g=E.1x(h.R,"1r");I g==""?"1":g}9(j.1t(/4u/i))j=y;9(!i&&h.R[j])g=h.R[j];J 9(U.3o&&U.3o.3Z){9(j.1t(/4u/i))j="4u";j=j.1p(/([A-Z])/g,"-$1").2p();H d=U.3o.3Z(h,S);9(d&&!3n(h))g=d.4y(j);J{L(H a=h;a&&3n(a);a=a.12)2w.4w(a);L(a=0;a<2w.K;a++)9(3n(2w[a])){2k[a]=2w[a].R.19;2w[a].R.19="2Z"}g=j=="19"&&2k[2w.K-1]!=S?"2s":U.3o.3Z(h,S).4y(j)||"";L(a=0;a<2k.K;a++)9(2k[a]!=S)2w[a].R.19=2k[a]}9(j=="1r"&&g=="")g="1"}J 9(h.3Q){H f=j.1p(/\\-(\\w)/g,G(m,c){I c.27()});g=h.3Q[j]||h.3Q[f];9(!/^\\d+(2T)?$/i.14(g)&&/^\\d/.14(g)){H k=h.R.1S;H e=h.4v.1S;h.4v.1S=h.3Q.1S;h.R.1S=g||0;g=h.R.71+"2T";h.R.1S=k;h.4v.1S=e}}I g},4D:G(a,e){H r=[];e=e||U;E.N(a,G(i,d){9(!d)I;9(d.1c==4W)d=d.3s();9(1m d=="1M"){d=d.1p(/(<(\\w+)[^>]*?)\\/>/g,G(m,a,b){I b.1t(/^(70|6Z|6Y|9Q|4t|9N|9K|3a|9G|9E)$/i)?m:a+"></"+b+">"});H s=E.36(d).2p(),1s=e.5B("1s"),2x=[];H c=!s.1g("<9y")&&[1,"<24>","</24>"]||!s.1g("<9w")&&[1,"<6T>","</6T>"]||s.1t(/^<(9u|1K|9t|9r|9p)/)&&[1,"<1I>","</1I>"]||!s.1g("<4m")&&[2,"<1I><1K>","</1K></1I>"]||(!s.1g("<9m")||!s.1g("<9k"))&&[3,"<1I><1K><4m>","</4m></1K></1I>"]||!s.1g("<6Y")&&[2,"<1I><1K></1K><6L>","</6L></1I>"]||E.V.1h&&[1,"1s<1s>","</1s>"]||[0,"",""];1s.3O=c[1]+d+c[2];1W(c[0]--)1s=1s.5p;9(E.V.1h){9(!s.1g("<1I")&&s.1g("<1K")<0)2x=1s.1w&&1s.1w.3j;J 9(c[1]=="<1I>"&&s.1g("<1K")<0)2x=1s.3j;L(H n=2x.K-1;n>=0;--n)9(E.11(2x[n],"1K")&&!2x[n].3j.K)2x[n].12.3b(2x[n]);9(/^\\s/.14(d))1s.3d(e.6F(d.1t(/^\\s*/)[0]),1s.1w)}d=E.2h(1s.3j)}9(0===d.K&&(!E.11(d,"2Y")&&!E.11(d,"24")))I;9(d[0]==W||E.11(d,"2Y")||d.Y)r.1a(d);J r=E.1R(r,d)});I r},1x:G(c,d,a){H e=E.4a(c)?{}:E.5o;9(d=="26"&&E.V.1N)c.12.4Z;9(e[d]){9(a!=W)c[e[d]]=a;I c[e[d]]}J 9(E.V.1h&&d=="R")I E.1x(c.R,"9e",a);J 9(a==W&&E.V.1h&&E.11(c,"2Y")&&(d=="9d"||d=="9a"))I c.97(d).6x;J 9(c.37){9(a!=W){9(d=="O"&&E.11(c,"4t")&&c.12)6G"O 94 93\'t 92 91";c.90(d,a)}9(E.V.1h&&/6C|3k/.14(d)&&!E.4a(c))I c.4p(d,2);I c.4p(d)}J{9(d=="1r"&&E.V.1h){9(a!=W){c.69=1;c.1E=(c.1E||"").1p(/6O\\([^)]*\\)/,"")+(3I(a).3s()=="8S"?"":"6O(1r="+a*6A+")")}I c.1E?(3I(c.1E.1t(/1r=([^)]*)/)[1])/6A).3s():""}d=d.1p(/-([a-z])/8Q,G(z,b){I b.27()});9(a!=W)c[d]=a;I c[d]}},36:G(t){I(t||"").1p(/^\\s+|\\s+$/g,"")},2h:G(a){H r=[];9(1m a!="8P")L(H i=0,2c=a.K;i<2c;i++)r.1a(a[i]);J r=a.2J(0);I r},2A:G(b,a){L(H i=0,2c=a.K;i<2c;i++)9(a[i]==b)I i;I-1},1R:G(a,b){9(E.V.1h){L(H i=0;b[i];i++)9(b[i].1y!=8)a.1a(b[i])}J L(H i=0;b[i];i++)a.1a(b[i]);I a},4V:G(b){H r=[],2f={};2a{L(H i=0,6y=b.K;i<6y;i++){H a=E.M(b[i]);9(!2f[a]){2f[a]=Q;r.1a(b[i])}}}29(e){r=b}I r},2W:G(b,a,c){9(1m a=="1M")a=3w("P||G(a,i){I "+a+"}");H d=[];L(H i=0,4g=b.K;i<4g;i++)9(!c&&a(b[i],i)||c&&!a(b[i],i))d.1a(b[i]);I d},1X:G(c,b){9(1m b=="1M")b=3w("P||G(a){I "+b+"}");H d=[];L(H i=0,4g=c.K;i<4g;i++){H a=b(c[i],i);9(a!==S&&a!=W){9(a.1c!=1B)a=[a];d=d.8M(a)}}I d}});H v=8K.8I.2p();E.V={4s:(v.1t(/.+(?:8F|8E|8C|8B)[\\/: ]([\\d.]+)/)||[])[1],1N:/6w/.14(v),34:/34/.14(v),1h:/1h/.14(v)&&!/34/.14(v),35:/35/.14(v)&&!/(8z|6w)/.14(v)};H y=E.V.1h?"4h":"5h";E.1k({5g:!E.V.1h||U.8y=="8x",4h:E.V.1h?"4h":"5h",5o:{"L":"8w","8v":"1o","4u":y,5h:y,4h:y,3O:"3O",1o:"1o",1Q:"1Q",3c:"3c",2Q:"2Q",8u:"8t",26:"26",8s:"8r"}});E.N({1D:"a.12",8q:"15.4e(a,\'12\')",8p:"15.2I(a,2,\'2q\')",8n:"15.2I(a,2,\'4d\')",8l:"15.4e(a,\'2q\')",8k:"15.4e(a,\'4d\')",8j:"15.5d(a.12.1w,a)",8i:"15.5d(a.1w)",6q:"15.11(a,\'8h\')?a.8f||a.8e.U:15.2h(a.3j)"},G(i,n){E.1b[i]=G(a){H b=E.1X(6,n);9(a&&1m a=="1M")b=E.3m(a,b);I 6.2o(E.4V(b))}});E.N({5R:"3g",8c:"6j",3d:"6g",8b:"50",89:"6H"},G(i,n){E.1b[i]=G(){H a=1q;I 6.N(G(){L(H j=0,2c=a.K;j<2c;j++)E(a[j])[n](6)})}});E.N({5W:G(a){E.1x(6,a,"");6.53(a)},88:G(c){E.1o.1f(6,c)},87:G(c){E.1o.28(6,c)},86:G(c){E.1o[E.1o.3K(6,c)?"28":"1f"](6,c)},28:G(a){9(!a||E.1E(a,[6]).r.K){E.30(6);6.12.3b(6)}},4n:G(){E("*",6).N(G(){E.30(6)});1W(6.1w)6.3b(6.1w)}},G(i,n){E.1b[i]=G(){I 6.N(n,1q)}});E.N(["85","5Z"],G(i,a){H n=a.2p();E.1b[n]=G(h){I 6[0]==18?E.V.1N&&3y["84"+a]||E.5g&&38.33(U.2V["5a"+a],U.1G["5a"+a])||U.1G["5a"+a]:6[0]==U?38.33(U.1G["6n"+a],U.1G["6m"+a]):h==W?(6.K?E.17(6[0],n):S):6.17(n,h.1c==3X?h:h+"2T")}});H C=E.V.1N&&3x(E.V.4s)<83?"(?:[\\\\w*57-]|\\\\\\\\.)":"(?:[\\\\w\\82-\\81*57-]|\\\\\\\\.)",6k=1u 47("^>\\\\s*("+C+"+)"),6i=1u 47("^("+C+"+)(#)("+C+"+)"),6h=1u 47("^([#.]?)("+C+"*)");E.1k({55:{"":"m[2]==\'*\'||15.11(a,m[2])","#":"a.4p(\'22\')==m[2]",":":{80:"i<m[3]-0",7Z:"i>m[3]-0",2I:"m[3]-0==i",6E:"m[3]-0==i",3v:"i==0",3u:"i==r.K-1",6f:"i%2==0",6e:"i%2","3v-46":"a.12.4l(\'*\')[0]==a","3u-46":"15.2I(a.12.5p,1,\'4d\')==a","7X-46":"!15.2I(a.12.5p,2,\'4d\')",1D:"a.1w",4n:"!a.1w",7W:"(a.6s||a.7V||15(a).2g()||\'\').1g(m[3])>=0",3R:\'"1P"!=a.O&&15.17(a,"19")!="2s"&&15.17(a,"4C")!="1P"\',1P:\'"1P"==a.O||15.17(a,"19")=="2s"||15.17(a,"4C")=="1P"\',7U:"!a.3c",3c:"a.3c",2Q:"a.2Q",26:"a.26||15.1x(a,\'26\')",2g:"\'2g\'==a.O",4k:"\'4k\'==a.O",5j:"\'5j\'==a.O",54:"\'54\'==a.O",52:"\'52\'==a.O",51:"\'51\'==a.O",6d:"\'6d\'==a.O",6c:"\'6c\'==a.O",2r:\'"2r"==a.O||15.11(a,"2r")\',4t:"/4t|24|6b|2r/i.14(a.11)",3K:"15.1Y(m[3],a).K",7S:"/h\\\\d/i.14(a.11)",7R:"15.2W(15.32,G(1b){I a==1b.T;}).K"}},6a:[/^(\\[) *@?([\\w-]+) *([!*$^~=]*) *(\'?"?)(.*?)\\4 *\\]/,/^(:)([\\w-]+)\\("?\'?(.*?(\\(.*?\\))?[^(]*?)"?\'?\\)/,1u 47("^([:.#]*)("+C+"+)")],3m:G(a,c,b){H d,2b=[];1W(a&&a!=d){d=a;H f=E.1E(a,c,b);a=f.t.1p(/^\\s*,\\s*/,"");2b=b?c=f.r:E.1R(2b,f.r)}I 2b},1Y:G(t,o){9(1m t!="1M")I[t];9(o&&!o.1y)o=S;o=o||U;H d=[o],2f=[],3u;1W(t&&3u!=t){H r=[];3u=t;t=E.36(t);H l=P;H g=6k;H m=g.2S(t);9(m){H p=m[1].27();L(H i=0;d[i];i++)L(H c=d[i].1w;c;c=c.2q)9(c.1y==1&&(p=="*"||c.11.27()==p.27()))r.1a(c);d=r;t=t.1p(g,"");9(t.1g(" ")==0)6r;l=Q}J{g=/^([>+~])\\s*(\\w*)/i;9((m=g.2S(t))!=S){r=[];H p=m[2],1R={};m=m[1];L(H j=0,31=d.K;j<31;j++){H n=m=="~"||m=="+"?d[j].2q:d[j].1w;L(;n;n=n.2q)9(n.1y==1){H h=E.M(n);9(m=="~"&&1R[h])1T;9(!p||n.11.27()==p.27()){9(m=="~")1R[h]=Q;r.1a(n)}9(m=="+")1T}}d=r;t=E.36(t.1p(g,""));l=Q}}9(t&&!l){9(!t.1g(",")){9(o==d[0])d.44();2f=E.1R(2f,d);r=d=[o];t=" "+t.68(1,t.K)}J{H k=6i;H m=k.2S(t);9(m){m=[0,m[2],m[3],m[1]]}J{k=6h;m=k.2S(t)}m[2]=m[2].1p(/\\\\/g,"");H f=d[d.K-1];9(m[1]=="#"&&f&&f.3S&&!E.4a(f)){H q=f.3S(m[2]);9((E.V.1h||E.V.34)&&q&&1m q.22=="1M"&&q.22!=m[2])q=E(\'[@22="\'+m[2]+\'"]\',f)[0];d=r=q&&(!m[3]||E.11(q,m[3]))?[q]:[]}J{L(H i=0;d[i];i++){H a=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];9(a=="*"&&d[i].11.2p()=="5i")a="3a";r=E.1R(r,d[i].4l(a))}9(m[1]==".")r=E.4X(r,m[2]);9(m[1]=="#"){H e=[];L(H i=0;r[i];i++)9(r[i].4p("22")==m[2]){e=[r[i]];1T}r=e}d=r}t=t.1p(k,"")}}9(t){H b=E.1E(t,r);d=r=b.r;t=E.36(b.t)}}9(t)d=[];9(d&&o==d[0])d.44();2f=E.1R(2f,d);I 2f},4X:G(r,m,a){m=" "+m+" ";H c=[];L(H i=0;r[i];i++){H b=(" "+r[i].1o+" ").1g(m)>=0;9(!a&&b||a&&!b)c.1a(r[i])}I c},1E:G(t,r,h){H d;1W(t&&t!=d){d=t;H p=E.6a,m;L(H i=0;p[i];i++){m=p[i].2S(t);9(m){t=t.7O(m[0].K);m[2]=m[2].1p(/\\\\/g,"");1T}}9(!m)1T;9(m[1]==":"&&m[2]=="5V")r=E.1E(m[3],r,Q).r;J 9(m[1]==".")r=E.4X(r,m[2],h);J 9(m[1]=="["){H g=[],O=m[3];L(H i=0,31=r.K;i<31;i++){H a=r[i],z=a[E.5o[m[2]]||m[2]];9(z==S||/6C|3k|26/.14(m[2]))z=E.1x(a,m[2])||\'\';9((O==""&&!!z||O=="="&&z==m[5]||O=="!="&&z!=m[5]||O=="^="&&z&&!z.1g(m[5])||O=="$="&&z.68(z.K-m[5].K)==m[5]||(O=="*="||O=="~=")&&z.1g(m[5])>=0)^h)g.1a(a)}r=g}J 9(m[1]==":"&&m[2]=="2I-46"){H e={},g=[],14=/(\\d*)n\\+?(\\d*)/.2S(m[3]=="6f"&&"2n"||m[3]=="6e"&&"2n+1"||!/\\D/.14(m[3])&&"n+"+m[3]||m[3]),3v=(14[1]||1)-0,d=14[2]-0;L(H i=0,31=r.K;i<31;i++){H j=r[i],12=j.12,22=E.M(12);9(!e[22]){H c=1;L(H n=12.1w;n;n=n.2q)9(n.1y==1)n.4U=c++;e[22]=Q}H b=P;9(3v==1){9(d==0||j.4U==d)b=Q}J 9((j.4U+d)%3v==0)b=Q;9(b^h)g.1a(j)}r=g}J{H f=E.55[m[1]];9(1m f!="1M")f=E.55[m[1]][m[2]];f=3w("P||G(a,i){I "+f+"}");r=E.2W(r,f,h)}}I{r:r,t:t}},4e:G(b,c){H d=[];H a=b[c];1W(a&&a!=U){9(a.1y==1)d.1a(a);a=a[c]}I d},2I:G(a,e,c,b){e=e||1;H d=0;L(;a;a=a[c])9(a.1y==1&&++d==e)1T;I a},5d:G(n,a){H r=[];L(;n;n=n.2q){9(n.1y==1&&(!a||n!=a))r.1a(n)}I r}});E.1j={1f:G(g,e,c,h){9(E.V.1h&&g.4j!=W)g=18;9(!c.2u)c.2u=6.2u++;9(h!=W){H d=c;c=G(){I d.16(6,1q)};c.M=h;c.2u=d.2u}H i=e.2l(".");e=i[0];c.O=i[1];H b=E.M(g,"2P")||E.M(g,"2P",{});H f=E.M(g,"2t",G(){H a;9(1m E=="W"||E.1j.4T)I a;a=E.1j.2t.16(g,1q);I a});H j=b[e];9(!j){j=b[e]={};9(g.4S)g.4S(e,f,P);J g.7N("43"+e,f)}j[c.2u]=c;6.1Z[e]=Q},2u:1,1Z:{},28:G(d,c,b){H e=E.M(d,"2P"),2L,4I;9(1m c=="1M"){H a=c.2l(".");c=a[0]}9(e){9(c&&c.O){b=c.4Q;c=c.O}9(!c){L(c 1i e)6.28(d,c)}J 9(e[c]){9(b)2E e[c][b.2u];J L(b 1i e[c])9(!a[1]||e[c][b].O==a[1])2E e[c][b];L(2L 1i e[c])1T;9(!2L){9(d.4P)d.4P(c,E.M(d,"2t"),P);J d.7M("43"+c,E.M(d,"2t"));2L=S;2E e[c]}}L(2L 1i e)1T;9(!2L){E.30(d,"2P");E.30(d,"2t")}}},1F:G(d,b,e,c,f){b=E.2h(b||[]);9(!e){9(6.1Z[d])E("*").1f([18,U]).1F(d,b)}J{H a,2L,1b=E.1n(e[d]||S),4N=!b[0]||!b[0].2M;9(4N)b.4w(6.4M({O:d,2m:e}));b[0].O=d;9(E.1n(E.M(e,"2t")))a=E.M(e,"2t").16(e,b);9(!1b&&e["43"+d]&&e["43"+d].16(e,b)===P)a=P;9(4N)b.44();9(f&&f.16(e,b)===P)a=P;9(1b&&c!==P&&a!==P&&!(E.11(e,\'a\')&&d=="4L")){6.4T=Q;e[d]()}6.4T=P}I a},2t:G(d){H a;d=E.1j.4M(d||18.1j||{});H b=d.O.2l(".");d.O=b[0];H c=E.M(6,"2P")&&E.M(6,"2P")[d.O],3q=1B.3A.2J.2O(1q,1);3q.4w(d);L(H j 1i c){3q[0].4Q=c[j];3q[0].M=c[j].M;9(!b[1]||c[j].O==b[1]){H e=c[j].16(6,3q);9(a!==P)a=e;9(e===P){d.2M();d.3p()}}}9(E.V.1h)d.2m=d.2M=d.3p=d.4Q=d.M=S;I a},4M:G(c){H a=c;c=E.1k({},a);c.2M=G(){9(a.2M)a.2M();a.7L=P};c.3p=G(){9(a.3p)a.3p();a.7K=Q};9(!c.2m&&c.65)c.2m=c.65;9(E.V.1N&&c.2m.1y==3)c.2m=a.2m.12;9(!c.4K&&c.4J)c.4K=c.4J==c.2m?c.7H:c.4J;9(c.64==S&&c.63!=S){H e=U.2V,b=U.1G;c.64=c.63+(e&&e.2R||b.2R||0);c.7E=c.7D+(e&&e.2B||b.2B||0)}9(!c.3Y&&(c.61||c.60))c.3Y=c.61||c.60;9(!c.5F&&c.5D)c.5F=c.5D;9(!c.3Y&&c.2r)c.3Y=(c.2r&1?1:(c.2r&2?3:(c.2r&4?2:0)));I c}};E.1b.1k({3W:G(c,a,b){I c=="5Y"?6.2G(c,a,b):6.N(G(){E.1j.1f(6,c,b||a,b&&a)})},2G:G(d,b,c){I 6.N(G(){E.1j.1f(6,d,G(a){E(6).5X(a);I(c||b).16(6,1q)},c&&b)})},5X:G(a,b){I 6.N(G(){E.1j.28(6,a,b)})},1F:G(c,a,b){I 6.N(G(){E.1j.1F(c,a,6,Q,b)})},7x:G(c,a,b){9(6[0])I E.1j.1F(c,a,6[0],P,b)},25:G(){H a=1q;I 6.4L(G(e){6.4H=0==6.4H?1:0;e.2M();I a[6.4H].16(6,[e])||P})},7v:G(f,g){G 4G(e){H p=e.4K;1W(p&&p!=6)2a{p=p.12}29(e){p=6};9(p==6)I P;I(e.O=="4x"?f:g).16(6,[e])}I 6.4x(4G).5U(4G)},2d:G(f){5T();9(E.3T)f.16(U,[E]);J E.3l.1a(G(){I f.16(6,[E])});I 6}});E.1k({3T:P,3l:[],2d:G(){9(!E.3T){E.3T=Q;9(E.3l){E.N(E.3l,G(){6.16(U)});E.3l=S}9(E.V.35||E.V.34)U.4P("5S",E.2d,P);9(!18.7t.K)E(18).39(G(){E("#4E").28()})}}});E.N(("7s,7r,39,7q,6n,5Y,4L,7p,"+"7n,7m,7l,4x,5U,7k,24,"+"51,7j,7i,7h,3U").2l(","),G(i,o){E.1b[o]=G(f){I f?6.3W(o,f):6.1F(o)}});H x=P;G 5T(){9(x)I;x=Q;9(E.V.35||E.V.34)U.4S("5S",E.2d,P);J 9(E.V.1h){U.7f("<7d"+"7y 22=4E 7z=Q "+"3k=//:><\\/1J>");H a=U.3S("4E");9(a)a.62=G(){9(6.2C!="1l")I;E.2d()};a=S}J 9(E.V.1N)E.4B=4j(G(){9(U.2C=="5Q"||U.2C=="1l"){4A(E.4B);E.4B=S;E.2d()}},10);E.1j.1f(18,"39",E.2d)}E.1b.1k({39:G(g,d,c){9(E.1n(g))I 6.3W("39",g);H e=g.1g(" ");9(e>=0){H i=g.2J(e,g.K);g=g.2J(0,e)}c=c||G(){};H f="4z";9(d)9(E.1n(d)){c=d;d=S}J{d=E.3a(d);f="5P"}H h=6;E.3G({1d:g,O:f,M:d,1l:G(a,b){9(b=="1C"||b=="5O")h.4o(i?E("<1s/>").3g(a.40.1p(/<1J(.|\\s)*?\\/1J>/g,"")).1Y(i):a.40);56(G(){h.N(c,[a.40,b,a])},13)}});I 6},7a:G(){I E.3a(6.5M())},5M:G(){I 6.1X(G(){I E.11(6,"2Y")?E.2h(6.79):6}).1E(G(){I 6.2H&&!6.3c&&(6.2Q||/24|6b/i.14(6.11)||/2g|1P|52/i.14(6.O))}).1X(G(i,c){H b=E(6).3i();I b==S?S:b.1c==1B?E.1X(b,G(a,i){I{2H:c.2H,1Q:a}}):{2H:c.2H,1Q:b}}).21()}});E.N("5L,5K,6t,5J,5I,5H".2l(","),G(i,o){E.1b[o]=G(f){I 6.3W(o,f)}});H B=(1u 3D).3B();E.1k({21:G(d,b,a,c){9(E.1n(b)){a=b;b=S}I E.3G({O:"4z",1d:d,M:b,1C:a,1V:c})},78:G(b,a){I E.21(b,S,a,"1J")},77:G(c,b,a){I E.21(c,b,a,"45")},76:G(d,b,a,c){9(E.1n(b)){a=b;b={}}I E.3G({O:"5P",1d:d,M:b,1C:a,1V:c})},75:G(a){E.1k(E.59,a)},59:{1Z:Q,O:"4z",2z:0,5G:"74/x-73-2Y-72",6o:Q,3e:Q,M:S},49:{},3G:G(s){H f,2y=/=(\\?|%3F)/g,1v,M;s=E.1k(Q,s,E.1k(Q,{},E.59,s));9(s.M&&s.6o&&1m s.M!="1M")s.M=E.3a(s.M);9(s.1V=="4b"){9(s.O.2p()=="21"){9(!s.1d.1t(2y))s.1d+=(s.1d.1t(/\\?/)?"&":"?")+(s.4b||"5E")+"=?"}J 9(!s.M||!s.M.1t(2y))s.M=(s.M?s.M+"&":"")+(s.4b||"5E")+"=?";s.1V="45"}9(s.1V=="45"&&(s.M&&s.M.1t(2y)||s.1d.1t(2y))){f="4b"+B++;9(s.M)s.M=s.M.1p(2y,"="+f);s.1d=s.1d.1p(2y,"="+f);s.1V="1J";18[f]=G(a){M=a;1C();1l();18[f]=W;2a{2E 18[f]}29(e){}}}9(s.1V=="1J"&&s.1L==S)s.1L=P;9(s.1L===P&&s.O.2p()=="21")s.1d+=(s.1d.1t(/\\?/)?"&":"?")+"57="+(1u 3D()).3B();9(s.M&&s.O.2p()=="21"){s.1d+=(s.1d.1t(/\\?/)?"&":"?")+s.M;s.M=S}9(s.1Z&&!E.5b++)E.1j.1F("5L");9(!s.1d.1g("8g")&&s.1V=="1J"){H h=U.4l("9U")[0];H g=U.5B("1J");g.3k=s.1d;9(!f&&(s.1C||s.1l)){H j=P;g.9R=g.62=G(){9(!j&&(!6.2C||6.2C=="5Q"||6.2C=="1l")){j=Q;1C();1l();h.3b(g)}}}h.58(g);I}H k=P;H i=18.6X?1u 6X("9P.9O"):1u 6W();i.9M(s.O,s.1d,s.3e);9(s.M)i.5C("9J-9I",s.5G);9(s.5y)i.5C("9H-5x-9F",E.49[s.1d]||"9D, 9C 9B 9A 5v:5v:5v 9z");i.5C("X-9x-9v","6W");9(s.6U)s.6U(i);9(s.1Z)E.1j.1F("5H",[i,s]);H c=G(a){9(!k&&i&&(i.2C==4||a=="2z")){k=Q;9(d){4A(d);d=S}1v=a=="2z"&&"2z"||!E.6S(i)&&"3U"||s.5y&&E.6R(i,s.1d)&&"5O"||"1C";9(1v=="1C"){2a{M=E.6Q(i,s.1V)}29(e){1v="5k"}}9(1v=="1C"){H b;2a{b=i.5s("6P-5x")}29(e){}9(s.5y&&b)E.49[s.1d]=b;9(!f)1C()}J E.5r(s,i,1v);1l();9(s.3e)i=S}};9(s.3e){H d=4j(c,13);9(s.2z>0)56(G(){9(i){i.9q();9(!k)c("2z")}},s.2z)}2a{i.9o(s.M)}29(e){E.5r(s,i,S,e)}9(!s.3e)c();I i;G 1C(){9(s.1C)s.1C(M,1v);9(s.1Z)E.1j.1F("5I",[i,s])}G 1l(){9(s.1l)s.1l(i,1v);9(s.1Z)E.1j.1F("6t",[i,s]);9(s.1Z&&!--E.5b)E.1j.1F("5K")}},5r:G(s,a,b,e){9(s.3U)s.3U(a,b,e);9(s.1Z)E.1j.1F("5J",[a,s,e])},5b:0,6S:G(r){2a{I!r.1v&&9n.9l=="54:"||(r.1v>=6N&&r.1v<9j)||r.1v==6M||E.V.1N&&r.1v==W}29(e){}I P},6R:G(a,c){2a{H b=a.5s("6P-5x");I a.1v==6M||b==E.49[c]||E.V.1N&&a.1v==W}29(e){}I P},6Q:G(r,b){H c=r.5s("9i-O");H d=b=="6K"||!b&&c&&c.1g("6K")>=0;H a=d?r.9g:r.40;9(d&&a.2V.37=="5k")6G"5k";9(b=="1J")E.5f(a);9(b=="45")a=3w("("+a+")");I a},3a:G(a){H s=[];9(a.1c==1B||a.4c)E.N(a,G(){s.1a(3f(6.2H)+"="+3f(6.1Q))});J L(H j 1i a)9(a[j]&&a[j].1c==1B)E.N(a[j],G(){s.1a(3f(j)+"="+3f(6))});J s.1a(3f(j)+"="+3f(a[j]));I s.66("&").1p(/%20/g,"+")}});E.1b.1k({1A:G(b,a){I b?6.1U({1H:"1A",2N:"1A",1r:"1A"},b,a):6.1E(":1P").N(G(){6.R.19=6.3h?6.3h:"";9(E.17(6,"19")=="2s")6.R.19="2Z"}).2D()},1z:G(b,a){I b?6.1U({1H:"1z",2N:"1z",1r:"1z"},b,a):6.1E(":3R").N(G(){6.3h=6.3h||E.17(6,"19");9(6.3h=="2s")6.3h="2Z";6.R.19="2s"}).2D()},6J:E.1b.25,25:G(a,b){I E.1n(a)&&E.1n(b)?6.6J(a,b):a?6.1U({1H:"25",2N:"25",1r:"25"},a,b):6.N(G(){E(6)[E(6).3t(":1P")?"1A":"1z"]()})},9c:G(b,a){I 6.1U({1H:"1A"},b,a)},9b:G(b,a){I 6.1U({1H:"1z"},b,a)},99:G(b,a){I 6.1U({1H:"25"},b,a)},98:G(b,a){I 6.1U({1r:"1A"},b,a)},96:G(b,a){I 6.1U({1r:"1z"},b,a)},95:G(c,a,b){I 6.1U({1r:a},c,b)},1U:G(k,i,h,g){H j=E.6D(i,h,g);I 6[j.3L===P?"N":"3L"](G(){j=E.1k({},j);H f=E(6).3t(":1P"),3y=6;L(H p 1i k){9(k[p]=="1z"&&f||k[p]=="1A"&&!f)I E.1n(j.1l)&&j.1l.16(6);9(p=="1H"||p=="2N"){j.19=E.17(6,"19");j.2U=6.R.2U}}9(j.2U!=S)6.R.2U="1P";j.3M=E.1k({},k);E.N(k,G(c,a){H e=1u E.2j(3y,j,c);9(/25|1A|1z/.14(a))e[a=="25"?f?"1A":"1z":a](k);J{H b=a.3s().1t(/^([+-]=)?([\\d+-.]+)(.*)$/),1O=e.2b(Q)||0;9(b){H d=3I(b[2]),2i=b[3]||"2T";9(2i!="2T"){3y.R[c]=(d||1)+2i;1O=((d||1)/e.2b(Q))*1O;3y.R[c]=1O+2i}9(b[1])d=((b[1]=="-="?-1:1)*d)+1O;e.3N(1O,d,2i)}J e.3N(1O,a,"")}});I Q})},3L:G(a,b){9(E.1n(a)){b=a;a="2j"}9(!a||(1m a=="1M"&&!b))I A(6[0],a);I 6.N(G(){9(b.1c==1B)A(6,a,b);J{A(6,a).1a(b);9(A(6,a).K==1)b.16(6)}})},9f:G(){H a=E.32;I 6.N(G(){L(H i=0;i<a.K;i++)9(a[i].T==6)a.6I(i--,1)}).5n()}});H A=G(b,c,a){9(!b)I;H q=E.M(b,c+"3L");9(!q||a)q=E.M(b,c+"3L",a?E.2h(a):[]);I q};E.1b.5n=G(a){a=a||"2j";I 6.N(G(){H q=A(6,a);q.44();9(q.K)q[0].16(6)})};E.1k({6D:G(b,a,c){H d=b&&b.1c==8Z?b:{1l:c||!c&&a||E.1n(b)&&b,2e:b,3J:c&&a||a&&a.1c!=8Y&&a};d.2e=(d.2e&&d.2e.1c==4W?d.2e:{8X:8W,8V:6N}[d.2e])||8T;d.3r=d.1l;d.1l=G(){E(6).5n();9(E.1n(d.3r))d.3r.16(6)};I d},3J:{6B:G(p,n,b,a){I b+a*p},5q:G(p,n,b,a){I((-38.9s(p*38.8R)/2)+0.5)*a+b}},32:[],2j:G(b,c,a){6.Y=c;6.T=b;6.1e=a;9(!c.3P)c.3P={}}});E.2j.3A={4r:G(){9(6.Y.2F)6.Y.2F.16(6.T,[6.2v,6]);(E.2j.2F[6.1e]||E.2j.2F.6z)(6);9(6.1e=="1H"||6.1e=="2N")6.T.R.19="2Z"},2b:G(a){9(6.T[6.1e]!=S&&6.T.R[6.1e]==S)I 6.T[6.1e];H r=3I(E.3C(6.T,6.1e,a));I r&&r>-8O?r:3I(E.17(6.T,6.1e))||0},3N:G(c,b,e){6.5u=(1u 3D()).3B();6.1O=c;6.2D=b;6.2i=e||6.2i||"2T";6.2v=6.1O;6.4q=6.4i=0;6.4r();H f=6;G t(){I f.2F()}t.T=6.T;E.32.1a(t);9(E.32.K==1){H d=4j(G(){H a=E.32;L(H i=0;i<a.K;i++)9(!a[i]())a.6I(i--,1);9(!a.K)4A(d)},13)}},1A:G(){6.Y.3P[6.1e]=E.1x(6.T.R,6.1e);6.Y.1A=Q;6.3N(0,6.2b());9(6.1e=="2N"||6.1e=="1H")6.T.R[6.1e]="8N";E(6.T).1A()},1z:G(){6.Y.3P[6.1e]=E.1x(6.T.R,6.1e);6.Y.1z=Q;6.3N(6.2b(),0)},2F:G(){H t=(1u 3D()).3B();9(t>6.Y.2e+6.5u){6.2v=6.2D;6.4q=6.4i=1;6.4r();6.Y.3M[6.1e]=Q;H a=Q;L(H i 1i 6.Y.3M)9(6.Y.3M[i]!==Q)a=P;9(a){9(6.Y.19!=S){6.T.R.2U=6.Y.2U;6.T.R.19=6.Y.19;9(E.17(6.T,"19")=="2s")6.T.R.19="2Z"}9(6.Y.1z)6.T.R.19="2s";9(6.Y.1z||6.Y.1A)L(H p 1i 6.Y.3M)E.1x(6.T.R,p,6.Y.3P[p])}9(a&&E.1n(6.Y.1l))6.Y.1l.16(6.T);I P}J{H n=t-6.5u;6.4i=n/6.Y.2e;6.4q=E.3J[6.Y.3J||(E.3J.5q?"5q":"6B")](6.4i,n,0,1,6.Y.2e);6.2v=6.1O+((6.2D-6.1O)*6.4q);6.4r()}I Q}};E.2j.2F={2R:G(a){a.T.2R=a.2v},2B:G(a){a.T.2B=a.2v},1r:G(a){E.1x(a.T.R,"1r",a.2v)},6z:G(a){a.T.R[a.1e]=a.2v+a.2i}};E.1b.6m=G(){H c=0,3E=0,T=6[0],5t;9(T)8L(E.V){H b=E.17(T,"2X")=="4F",1D=T.12,23=T.23,2K=T.3H,4f=1N&&3x(4s)<8J;9(T.6V){5w=T.6V();1f(5w.1S+38.33(2K.2V.2R,2K.1G.2R),5w.3E+38.33(2K.2V.2B,2K.1G.2B));9(1h){H d=E("4o").17("8H");d=(d=="8G"||E.5g&&3x(4s)>=7)&&2||d;1f(-d,-d)}}J{1f(T.5l,T.5z);1W(23){1f(23.5l,23.5z);9(35&&/^t[d|h]$/i.14(1D.37)||!4f)d(23);9(4f&&!b&&E.17(23,"2X")=="4F")b=Q;23=23.23}1W(1D.37&&!/^1G|4o$/i.14(1D.37)){9(!/^8D|1I-9S.*$/i.14(E.17(1D,"19")))1f(-1D.2R,-1D.2B);9(35&&E.17(1D,"2U")!="3R")d(1D);1D=1D.12}9(4f&&b)1f(-2K.1G.5l,-2K.1G.5z)}5t={3E:3E,1S:c}}I 5t;G d(a){1f(E.17(a,"9T"),E.17(a,"8A"))}G 1f(l,t){c+=3x(l)||0;3E+=3x(t)||0}}})();',62,616,'||||||this|||if|||||||||||||||||||||||||||||||||function|var|return|else|length|for|data|each|type|false|true|style|null|elem|document|browser|undefined||options|||nodeName|parentNode||test|jQuery|apply|css|window|display|push|fn|constructor|url|prop|add|indexOf|msie|in|event|extend|complete|typeof|isFunction|className|replace|arguments|opacity|div|match|new|status|firstChild|attr|nodeType|hide|show|Array|success|parent|filter|trigger|body|height|table|script|tbody|cache|string|safari|start|hidden|value|merge|left|break|animate|dataType|while|map|find|global||get|id|offsetParent|select|toggle|selected|toUpperCase|remove|catch|try|cur|al|ready|duration|done|text|makeArray|unit|fx|swap|split|target||pushStack|toLowerCase|nextSibling|button|none|handle|guid|now|stack|tb|jsre|timeout|inArray|scrollTop|readyState|end|delete|step|one|name|nth|slice|doc|ret|preventDefault|width|call|events|checked|scrollLeft|exec|px|overflow|documentElement|grep|position|form|block|removeData|rl|timers|max|opera|mozilla|trim|tagName|Math|load|param|removeChild|disabled|insertBefore|async|encodeURIComponent|append|oldblock|val|childNodes|src|readyList|multiFilter|color|defaultView|stopPropagation|args|old|toString|is|last|first|eval|parseInt|self|domManip|prototype|getTime|curCSS|Date|top||ajax|ownerDocument|parseFloat|easing|has|queue|curAnim|custom|innerHTML|orig|currentStyle|visible|getElementById|isReady|error|static|bind|String|which|getComputedStyle|responseText|oWidth|oHeight|on|shift|json|child|RegExp|ol|lastModified|isXMLDoc|jsonp|jquery|previousSibling|dir|safari2|el|styleFloat|state|setInterval|radio|getElementsByTagName|tr|empty|html|getAttribute|pos|update|version|input|float|runtimeStyle|unshift|mouseover|getPropertyValue|GET|clearInterval|safariTimer|visibility|clean|__ie_init|absolute|handleHover|lastToggle|index|fromElement|relatedTarget|click|fix|evt|andSelf|removeEventListener|handler|cloneNode|addEventListener|triggered|nodeIndex|unique|Number|classFilter|prevObject|selectedIndex|after|submit|password|removeAttribute|file|expr|setTimeout|_|appendChild|ajaxSettings|client|active|win|sibling|deep|globalEval|boxModel|cssFloat|object|checkbox|parsererror|offsetLeft|wrapAll|dequeue|props|lastChild|swing|handleError|getResponseHeader|results|startTime|00|box|Modified|ifModified|offsetTop|evalScript|createElement|setRequestHeader|ctrlKey|callback|metaKey|contentType|ajaxSend|ajaxSuccess|ajaxError|ajaxStop|ajaxStart|serializeArray|init|notmodified|POST|loaded|appendTo|DOMContentLoaded|bindReady|mouseout|not|removeAttr|unbind|unload|Width|keyCode|charCode|onreadystatechange|clientX|pageX|srcElement|join|outerHTML|substr|zoom|parse|textarea|reset|image|odd|even|before|quickClass|quickID|prepend|quickChild|execScript|offset|scroll|processData|uuid|contents|continue|textContent|ajaxComplete|clone|setArray|webkit|nodeValue|fl|_default|100|linear|href|speed|eq|createTextNode|throw|replaceWith|splice|_toggle|xml|colgroup|304|200|alpha|Last|httpData|httpNotModified|httpSuccess|fieldset|beforeSend|getBoundingClientRect|XMLHttpRequest|ActiveXObject|col|br|abbr|pixelLeft|urlencoded|www|application|ajaxSetup|post|getJSON|getScript|elements|serialize|clientWidth|hasClass|scr|clientHeight|write|relative|keyup|keypress|keydown|change|mousemove|mouseup|mousedown|right|dblclick|resize|focus|blur|frames|instanceof|hover|offsetWidth|triggerHandler|ipt|defer|offsetHeight|border|padding|clientY|pageY|Left|Right|toElement|Bottom|Top|cancelBubble|returnValue|detachEvent|attachEvent|substring|line|weight|animated|header|font|enabled|innerText|contains|only|size|gt|lt|uFFFF|u0128|417|inner|Height|toggleClass|removeClass|addClass|replaceAll|noConflict|insertAfter|prependTo|wrap|contentWindow|contentDocument|http|iframe|children|siblings|prevAll|nextAll|wrapInner|prev|Boolean|next|parents|maxLength|maxlength|readOnly|readonly|class|htmlFor|CSS1Compat|compatMode|compatible|borderTopWidth|ie|ra|inline|it|rv|medium|borderWidth|userAgent|522|navigator|with|concat|1px|10000|array|ig|PI|NaN|400|reverse|fast|600|slow|Function|Object|setAttribute|changed|be|can|property|fadeTo|fadeOut|getAttributeNode|fadeIn|slideToggle|method|slideUp|slideDown|action|cssText|stop|responseXML|option|content|300|th|protocol|td|location|send|cap|abort|colg|cos|tfoot|thead|With|leg|Requested|opt|GMT|1970|Jan|01|Thu|area|Since|hr|If|Type|Content|meta|specified|open|link|XMLHTTP|Microsoft|img|onload|row|borderLeftWidth|head|attributes'.split('|'),0,{});
-
-/*
- Copyright (c) 2004-2007, The Dojo Foundation
- All Rights Reserved.
-
- Licensed under the Academic Free License version 2.1 or above OR the
- modified BSD license. For more information on Dojo licensing, see:
-
- http://dojotoolkit.org/community/licensing.shtml
-*/
-
-/*
- This is a compiled version of Dojo, built for deployment and not for
- development. To get an editable version, please visit:
-
- http://dojotoolkit.org
-
- for documentation and information on getting the source.
-*/
-
-var decompressedDojo = function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('if(V z=="1k"){(B(){if(V D["1o"]=="1k"){D.1o={}}if((!D["1z"])||(!1z["ca"])){D.1z={}}A cn=["rA","rz","1K","ry","rx","9f","rw","rv","ru","rt","rs","rr","rq","ro","rn","rm"];A i=0,24;1s(24=cn[i++]){if(!1z[24]){1z[24]=B(){}}}if(V D["z"]=="1k"){D.z={}}z.1W=D;A d3={im:U,rl:U,rk:"",rj:"",ri:"",rh:K,rg:U};R(A 8z in d3){if(V 1o[8z]=="1k"){1o[8z]=d3[8z]}}A jK=["rf","rd","rc","rb"];A t;1s(t=jK.3a()){z["is"+t]=U}})();z.8h=1o.8h;z.cY={jJ:0,jI:9,jH:0,jG:"",jF:2V("$ra: r9 $".1f(/[0-9]+/)[0]),2i:B(){4G(z.cY){C jJ+"."+jI+"."+jH+jG+" ("+jF+")"}}};z.d1=B(jE,jD,1V){A 2h=1V||z.1W;R(A i=0,p;2h&&(p=jE[i]);i++){2h=(p in 2h?2h[p]:(jD?2h[p]={}:1k))}C 2h};z.88=B(jC,jA,jB){A d2=jC.1A("."),p=d2.8q(),M=z.d1(d2,K,jB);C(M&&p?(M[p]=jA):1k)};z.6q=B(jz,jy,jx){C z.d1(jz.1A("."),jy,jx)};z.r8=B(jw,M){C!!z.6q(jw,U,M)};z["3u"]=B(d0){C z.1W.3u?z.1W.3u(d0):3u(d0)};z.ia=B(jv,cZ,cX){A 8y="r7: "+jv;if(cZ){8y+=" "+cZ}if(cX){8y+=" -- r6 be r5 in cY: "+cX}1z.1K(8y)};z.r4=B(ju,cW){A cV="r3: "+ju+" -- r2 r1 4F r0 qZ qY.";if(cW){cV+=" "+cW}1z.1K(cV)};(B(){A cR={53:{},6p:0,1h:{},8k:{z:{1p:"z",1Z:"."},cU:{1p:"cU",1Z:"../qX/cU"},cT:{1p:"cT",1Z:"cT"}},cN:B(cS){A mp=D.8k;C jp(mp[cS]&&mp[cS].1Z)},jk:B(8x){A mp=D.8k;if(D.cN(8x)){C mp[8x].1Z}C 8x},8v:[],6t:U,56:[],8t:[],8u:U};R(A cQ in cR){z[cQ]=cR[cQ]}})();z.jg=B(8w,cP,cb){A 1g=(((8w.2s(0)=="/"||8w.1f(/^\\w+:/)))?"":D.51)+8w;if(1o.jt&&z.c8){1g+="?"+67(1o.jt).2f(/\\W+/g,"")}1u{C!cP?D.cO(1g,cb):D.jq(1g,cP,cb)}1y(e){1z.1K(e);C U}};z.cO=B(1g,cb){if(D.8v[1g]){C K}A 6u=D.iR(1g,K);if(!6u){C U}D.8v[1g]=K;D.8v.Y(1g);if(cb){6u="("+6u+")"}A jr=z["3u"](6u+"\\r\\n//@ qW="+1g);if(cb){cb(jr)}C K};z.jq=B(1g,jo,cb){A ok=U;1u{ok=D.cO(1g,cb)}1y(e){1z.1K("qV je ",1g," 4G 9f: ",e)}C jp(ok&&D.53[jo])};z.6m=B(){D.8u=K;D.6t=K;A 57=D.56;D.56=[];R(A x=0;x<57.G;x++){57[x]()}D.8u=U;if(z.6t&&z.6p==0&&D.56.G>0){z.8s()}};z.ck=B(){A 57=D.8t;1s(57.G){(57.8q())()}};z.qU=B(M,jn){A d=z;if(P.G==1){d.56.Y(M)}I{if(P.G>1){d.56.Y(B(){M[jn]()})}}if(d.6t&&d.6p==0&&!d.8u){d.8s()}};z.dW=B(M,jm){A d=z;if(P.G==1){d.8t.Y(M)}I{if(P.G>1){d.8t.Y(B(){M[jm]()})}}};z.iM=B(){if(D.6t){C}if(D.6p>0){1z.1K("qT qS in qR!");C}z.8s()};z.8s=B(){if(V 5c=="8b"||(1o["qQ"]&&z.2M)){5c("z.6m();",0)}I{z.6m()}};z.cF=B(jl){A 4v=jl.1A(".");R(A i=4v.G;i>0;i--){A 8r=4v.2w(0,i).22(".");if((i==1)&&!D.cN(8r)){4v[0]="../"+4v[0]}I{A cM=D.jk(8r);if(cM!=8r){4v.3S(0,i,cM);3f}}}C 4v};z.jj=U;z.8m=B(2T,qP,55){55=D.jj||55;A 54=D.53[2T];if(54){C 54}A cL=2T.1A(".");A 3L=D.cF(2T);A jh=((3L[0].2s(0)!="/")&&!3L[0].1f(/^\\w+:/));A ji=3L[3L.G-1];A 3m;if(ji=="*"){2T=cL.2w(0,-1).22(".");3L.8q();3m=3L.22("/")+"/"+(1o["qO"]||"qN")+".js";if(jh&&3m.2s(0)=="/"){3m=3m.2w(1)}}I{3m=3L.22("/")+".js";2T=cL.22(".")}A jf=(!55)?2T:L;A ok=D.jg(3m,jf);if((!ok)&&(!55)){2m S 1O("qM 3O 4E \'"+2T+"\'; 72 qL \'"+3m+"\'")}if((!55)&&(!D["qK"])){54=D.53[2T];if(!54){2m S 1O("qJ \'"+2T+"\' is 3O qI a8 je \'"+3m+"\'")}}C 54};z.8c=z.8m;z.1Q=B(cK){A cJ=cK+"";A 8p=cJ;A 6s=cK.1A(/\\./);if(6s[6s.G-1]=="*"){6s.8q();8p=6s.22(".")}A 8o=z.6q(8p,K);D.53[cJ]=8o;D.53[8p]=8o;C 8o};z.qH=B(8n){A jd=8n["qG"]||[];A cI=jd.3U(8n[z.j4]||8n["aY"]||[]);R(A x=0;x<cI.G;x++){A 8l=cI[x];if(8l.1P==4e){z.8m.14(z,8l)}I{z.8m(8l)}}};z.jb=B(jc,qF){if(jc===K){A cH=[];R(A i=1;i<P.G;i++){cH.Y(P[i])}z.8c.14(z,cH)}};z.qE=z.jb;z.io=B(cG,ja){D.8k[cG]={1p:cG,1Z:ja}};z.qD=B(qC,qB,qA,qz){z.8c("z.j9");z.j9.qy.14(z.qx,P)};(B(){A j7=S 9G("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?$");A j6=S 9G("^((([^:]+:)?([^@]+))@)?([^:]*)(:([0-9]+))?$");z.4r=B(){A n=L;A 1V=P;A 1g=1V[0];R(A i=1;i<1V.G;i++){if(!1V[i]){6c}A 1t=S z.4r(1V[i]+"");A 4u=S z.4r(1g+"");if((1t.28=="")&&(!1t.4t)&&(!1t.3l)&&(!1t.1r)){if(1t.52!=n){4u.52=1t.52}1t=4u}I{if(!1t.4t){1t.4t=4u.4t;if(!1t.3l){1t.3l=4u.3l;if(1t.28.2s(0)!="/"){A j8=4u.28.21(0,4u.28.31("/")+1)+1t.28;A 1X=j8.1A("/");R(A j=0;j<1X.G;j++){if(1X[j]=="."){if(j==1X.G-1){1X[j]=""}I{1X.3S(j,1);j--}}I{if(j>0&&!(j==1&&1X[0]=="")&&1X[j]==".."&&1X[j-1]!=".."){if(j==(1X.G-1)){1X.3S(j,1);1X[j-1]=""}I{1X.3S(j-1,2);j-=2}}}}1t.28=1X.22("/")}}}}1g="";if(1t.4t){1g+=1t.4t+":"}if(1t.3l){1g+="//"+1t.3l}1g+=1t.28;if(1t.1r){1g+="?"+1t.1r}if(1t.52){1g+="#"+1t.52}}D.1g=1g.2i();A r=D.1g.1f(j7);D.4t=r[2]||(r[1]?"":n);D.3l=r[4]||(r[3]?"":n);D.28=r[5];D.1r=r[7]||(r[6]?"":n);D.52=r[9]||(r[8]?"":n);if(D.3l!=n){r=D.3l.1f(j6);D.8X=r[3]||n;D.8W=r[4]||n;D.qw=r[5];D.qv=r[7]||n}};z.4r.1C.2i=B(){C D.1g}})();z.qu=B(j5,2E){A 2B=z.cF(j5).22("/");if(!2B){C L}if(2B.31("/")!=2B.G-1){2B+="/"}A cE=2B.T(":");if(2B.2s(0)!="/"&&(cE==-1||cE>2B.T("/"))){2B=z.51+2B}C S z.4r(2B,2E)};if(V 26!="1k"){z.c8=K;z.j4="qt";(B(){A d=z;if(1q&&1q.4I){A 8j=1q.4I("ak");A j3=/z(\\.qs)?\\.js([\\?\\.]|$)/i;R(A i=0;i<8j.G;i++){A 4X=8j[i].5t("4X");if(!4X){6c}A m=4X.1f(j3);if(m){if(!1o["51"]){1o["51"]=4X.21(0,m.hK)}A cD=8j[i].5t("1o");if(cD){A cC=3u("({ "+cD+" })");R(A x in cC){1o[x]=cC[x]}}3f}}}d.51=1o["51"];A n=cq;A 8i=n.iL;A 4Z=n.qr;A 6r=2k(4Z);d.2M=(8i.T("qq")>=0)?6r:0;d.6B=(4Z.T("qo")>=0)||(4Z.T("j2")>=0)?6r:0;d.3o=(4Z.T("j2")>=0)?6r:0;A j1=8i.T("qn");d.gu=d.7B=((j1>=0)&&(!d.6B))?6r:0;d.j0=0;d.1l=0;d.iV=0;1u{if(d.7B){d.j0=2k(8i.1A("qm/")[1].1A(" ")[0])}if((1q.gx)&&(!d.2M)){d.1l=2k(4Z.1A("qk ")[1].1A(";")[0])}}1y(e){}if(z.1l&&(26.8f.cu==="9q:")){1o.iT=K}d.iX=B(){A 2A;A qj;A cB=d.6q("cz.cy");if(cB){C cB}if(V iZ!="1k"){2A=S iZ()}I{if(d.1l){1u{2A=S 9j("qi.qh")}1y(e){}}I{if(cq.qg["8Z/x-iY"]){2A=1q.a9("8b");2A.cA("Z","8Z/x-iY");2A.cA("3n",0);2A.cA("58",0);2A.1c.gq="7C";1q.5K.4c(2A)}}}if(!2A){C L}z.88("cz.cy.qf",2A);C z.6q("cz.cy")};A iW=d.iX();if(iW){d.iV=K}A cm=1q["aX"];d.qe=(cm=="aW")||(cm=="gr")||(d.1l<6);d.8h=1o.8h||(d.1l?n.qd:n.qc).1M();d.qb=1z.1K;d.cx=["iU.8g","em.8g","iU.8g.4.0"];d.9b=B(){A 4s=L;A cv=L;if(!z.1l||!1o.iT){1u{4s=S qa()}1y(e){}}if(!4s){R(A i=0;i<3;++i){A cw=z.cx[i];1u{4s=S 9j(cw)}1y(e){cv=e}if(4s){z.cx=[cw];3f}}}if(!4s){2m S 1O("8g 3O q9: "+cv)}C 4s};d.8Y=B(iS){A 4Y=iS.3N||0;C((4Y>=q8)&&(4Y<q7))||(4Y==q6)||(4Y==q5)||(!4Y&&(8f.cu=="9q:"||8f.cu=="q4:"))};A cs=1q.4I("q3");A iQ=(cs&&cs.G>0);d.iR=B(1g,iP){A 3K=D.9b();if(!iQ&&z.4r){1g=(S z.4r(26.8f,1g)).2i()}3K.dL("dD",1g,U);1u{3K.dI(L);if(!d.8Y(3K)){A 1G=1O("q2 4F 4E "+1g+" 3N:"+3K.3N);1G.3N=3K.3N;1G.2G=3K.2G;2m 1G}}1y(e){if(iP){C L}2m e}C 3K.2G}})();z.iO=U;z.6o=B(e){z.iO=K;A cr=(e&&e.Z)?e.Z.1M():"4E";if(P.2O.iN||(cr!="q1"&&cr!="4E")){C}P.2O.iN=K;if(V z["8e"]!="1k"){dX(z.8e);63 z.8e}if(z.6p==0){z.iM()}};if(1q.66){if(z.2M||(z.7B&&(1o["q0"]===K))){1q.66("pZ",z.6o,L)}26.66("4E",z.6o,L)}if(/(pY|pX)/i.6Z(cq.iL)){z.8e=dN(B(){if(/6m|iJ/.6Z(1q.6F)){z.6o()}},10)}(B(){A 3g=26;A 8d=B(cp,fp){A iK=3g[cp]||B(){};3g[cp]=B(){fp.14(3g,P);iK.14(3g,P)}};if(z.1l){1q.fJ("<iI"+"iH pW 4X=\\"//:\\" "+"pV=\\"if(D.6F==\'iJ\'){z.6o();}\\">"+"</iI"+"iH>");A co=K;8d("iG",B(){3g.5c(B(){co=U},0)});8d("pU",B(){if(co){z.ck()}});1u{1q.pT.2P("v","pS:pR-pQ-pP:pO");1q.pN().pM("v\\\\:*","pL:2E(#aY#pK)")}1y(e){}}I{8d("iG",B(){z.ck()})}})();z.pJ=B(){};z.1e=26["1q"]||L;z.3E=B(){C z.1e.3E||z.1e.4I("3E")[0]};z.ch=B(iF,iE){z.1W=iF;z.1e=iE};z.cf=B(4q,6n,iD){if((6n)&&((V 4q=="3c")||(4q 1N 67))){4q=6n[4q]}C(6n?4q.14(6n,iD||[]):4q())};z.pI=B(cj,iC,iB,iA){A cg;A iz=z.1W;A iy=z.1e;1u{z.ch(cj,cj.1q);cg=z.cf(iC,iB,iA)}ir{z.ch(iz,iy)}C cg};z.pH=B(ix,iw,iv,iu){A ce;A ip=z.1e;1u{z.1e=ix;ce=z.cf(iw,iv,iu)}ir{z.1e=ip}C ce};if(1o["cd"]){R(A cc in 1o["cd"]){z.io(cc,1o["cd"][cc])}}}if(1o.im){if(!1z.ca){z.8c("z.pG.ca")}}}if(!z.1h["z.X.c9"]){z.1h["z.X.c9"]=K;z.1Q("z.X.c9");z.1R=B(it){C(V it=="3c"||it 1N 67)};z.2l=B(it){C(it&&it 1N 4e||V it=="6a"||((V z["1H"]!="1k")&&(it 1N z.1H)))};if(z.c8&&z.3o){z.1Y=B(it){if((V(it)=="B")&&(it=="[8b 1H]")){C U}C(V it=="B"||it 1N bI)}}I{z.1Y=B(it){C(V it=="B"||it 1N bI)}}z.ib=B(it){if(V it=="1k"){C U}C(it===L||V it=="8b"||z.2l(it)||z.1Y(it))};z.pF=B(it){A d=z;if((!it)||(V it=="1k")){C U}if(d.1R(it)){C U}if(d.1Y(it)){C U}if(d.2l(it)){C K}if((it.5w)&&(it.5w.1M()=="3R")){C U}if(pE(it.G)){C K}C U};z.pD=B(it){if(!it){C U}C!z.1Y(it)&&/\\{\\s*\\[il 5h\\]\\s*\\}/.6Z(67(it))};z.c7=B(M,4W){A 8a={};R(A x in 4W){if((V 8a[x]=="1k")||(8a[x]!=4W[x])){M[x]=4W[x]}}if(z.1l){A p=4W.2i;if((V(p)=="B")&&(p!=M.2i)&&(p!=8a.2i)&&(p!="\\pC 2i() {\\n [il 5h]\\n}\\n")){M.2i=4W.2i}}C M};z.1x=B(M,pB){R(A i=1,l=P.G;i<l;i++){z.c7(M,P[i])}C M};z.4M=B(c6,pA){R(A i=1,l=P.G;i<l;i++){z.c7(c6.1C,P[i])}C c6};z.ig=B(c5,89){A ij=z.4d(P,2);A ik=z.1R(89);C B(){A ih=z.4d(P);A f=(ik?(c5||z.1W)[89]:89);C(f)&&(f.14(c5||D,ij.3U(ih)))}};z.2p=B(2z,3k){if(P.G>2){C z.ig.14(z,P)}if(!3k){3k=2z;2z=L}if(z.1R(3k)){2z=2z||z.1W;if(!2z[3k]){2m(["z.2p: ie[\\"",3k,"\\"] is L (ie=\\"",2z,"\\")"].22(""))}C B(){C 2z[3k].14(2z,P||[])}}I{C(!2z?3k:B(){C 3k.14(2z,P||[])})}};z.6j=B(M,c3){B c4(){};c4.1C=M;A c2=S c4();if(c3){z.1x(c2,c3)}C c2};z.7X=B(pz){A Q=[L];C z.2p.14(z,Q.3U(z.4d(P)))};z.4d=B(M,ic){A Q=[];R(A x=ic||0;x<M.G;x++){Q.Y(M[x])}C Q};z.c1=B(o){if(!o){C o}if(z.2l(o)){A r=[];R(A i=0;i<o.G;++i){r.Y(z.c1(o[i]))}C r}I{if(z.ib(o)){if(o.2t&&o.a7){C o.a7(K)}I{A r=S o.1P();R(A i in o){if(!(i in r)||r[i]!=o[i]){r[i]=z.c1(o[i])}}C r}}}C o};z.7g=B(2H){C 2H.2f(/^\\s\\s*/,"").2f(/\\s\\s*$/,"")}}if(!z.1h["z.X.2r"]){z.1h["z.X.2r"]=K;z.1Q("z.X.2r");z.2r=B(6l,4p,3j){if(z.1Y(3j)||(P.G>3)){z.ia("z.2r: R 9P \'"+6l+"\' py pw B as \'1P\' pv pu of as a pt i3.","","1.0");A c=3j;3j=P[3]||{};3j.1P=c}A dd=P.2O,4V=L;if(z.2l(4p)){4V=4p;4p=4V.3a()}if(4V){R(A i=0,m;i<4V.G;i++){m=4V[i];if(!m){2m("ps #"+i+" 4F pr of "+6l+" is L. pq\'s pp a po pl is 3O 6m.")}4p=dd.6j(4p,m)}}A i9=(3j||0).1P,6k=dd.6j(4p),fn;R(A i in 3j){if(z.1Y(fn=3j[i])&&(!0[i])){fn.i4=i}}z.4M(6k,{4o:6l,bY:i9,bZ:L},3j||0);6k.1C.1P=6k;C z.88(6l,6k)};z.1x(z.2r,{6j:B(c0,i8){A bp=(c0||0).1C,mp=(i8||0).1C;A 2S=z.2r.i7();z.1x(2S,{84:bp,1x:mp});if(c0){2S.1C=z.6j(bp)}z.4M(2S,z.2r.i6,mp||0,{bY:L});2S.1C.1P=2S;2S.1C.4o=(bp||0).4o+"pk"+(mp||0).4o;z.88(2S.1C.4o,2S);C 2S},i7:B(){C B(){D.i5(P)}},i6:{i5:B(86){A c=86.2O,s=c.84,ct=s&&s.1P,m=c.1x,87=m&&m.1P,a=86,ii,fn;if(a[0]){if((fn=a[0]["bZ"])){a=fn.14(D,a)||a}}if(fn=c.1C.bZ){a=fn.14(D,a)||a}if(ct&&ct.14){ct.14(D,a)}if(87&&87.14){87.14(D,a)}if(ii=c.1C.bY){ii.14(D,86)}},bX:B(85){A c=D.1P,p,m;1s(c){p=c.84;m=c.1x;if(m==85||(m 1N 85.1P)){C p}if(m&&(m=m.bX(85))){C m}c=p&&p.1P}},6h:B(83,82,bW,6i){A p=bW,c,m,f;do{c=p.1P;m=c.1x;if(m&&(m=D.6h(83,82,m,6i))){C m}if((f=p[83])&&(6i==(f==82))){C p}p=c.84}1s(p);C!6i&&(p=D.bX(bW))&&D.6h(83,82,p,6i)},bU:B(2R,4U,bV){A a=P;if(!z.1R(a[0])){bV=4U;4U=2R;2R=4U.2O.i4}A c=4U.2O,p=D.1P.1C,a=bV||4U,fn,mp;if(D[2R]!=c||p[2R]==c){mp=D.6h(2R,c,p,K);if(!mp){2m(D.4o+": 1p i3 (\\""+2R+"\\") 4F bU pj 1f 2O (2r.js)")}p=D.6h(2R,c,mp,U)}fn=p&&p[2R];if(!fn){1z.1K(mp.4o+": no bU \\""+2R+"\\" ph pg (2r.js)");C}C fn.14(D,a)}}})}if(!z.1h["z.X.2c"]){z.1h["z.X.2c"]=K;z.1Q("z.X.2c");z.3i={i2:B(){C B(){A ap=4e.1C,c=P.2O,ls=c.2b,t=c.5V;A r=t&&t.14(D,P);R(A i in ls){if(!(i in ap)){ls[i].14(D,P)}}C r}},2P:B(6g,bT,i1){6g=6g||z.1W;A f=6g[bT];if(!f||!f.2b){A d=z.3i.i2();d.5V=f;d.2b=[];f=6g[bT]=d}C f.2b.Y(i1)},3J:B(i0,hZ,bS){A f=(i0||z.1W)[hZ];if(f&&f.2b&&bS--){63 f.2b[bS]}}};z.2c=B(M,pd,pc,pa,p9){A a=P,F=[],i=0;F.Y(z.1R(a[0])?L:a[i++],a[i++]);A a1=a[i+1];F.Y(z.1R(a1)||z.1Y(a1)?a[i++]:L,a[i++]);R(A l=a.G;i<l;i++){F.Y(a[i])}C z.by.14(D,F)};z.by=B(M,bR,hY,hX){A l=z.3i,h=l.2P(M,bR,z.2p(hY,hX));C[M,bR,h,l]};z.p8=B(6f){if(6f&&6f[0]!==1k){z.bv.14(D,6f);63 6f[0]}};z.bv=B(M,hV,hU,hW){hW.3J(M,hV,hU)};z.80={};z.p7=B(bQ,hT,hS){C[bQ,z.3i.2P(z.80,bQ,z.2p(hT,hS))]};z.p6=B(81){if(81){z.3i.3J(z.80,81[0],81[1])}};z.hQ=B(hR,F){A f=z.80[hR];(f)&&(f.14(D,F||[]))};z.p5=B(hP,M,bP){A pf=B(){z.hQ(hP,P)};C(bP)?z.2c(M,bP,pf):z.2c(M,pf)}}if(!z.1h["z.X.30"]){z.1h["z.X.30"]=K;z.1Q("z.X.30");z.30=B(hO){D.bM=[];D.id=D.hN();D.2y=-1;D.3M=0;D.4R=[L,L];D.bO=hO;D.7Z=U};z.4M(z.30,{hN:(B(){A n=1;C B(){C n++}})(),4C:B(){if(D.2y==-1){if(D.bO){D.bO(D)}I{D.7Z=K}if(D.2y==-1){A 1G=S 1O("30 p4");1G.dY="4C";D.5i(1G)}}I{if((D.2y==0)&&(D.4R[0]1N z.30)){D.4R[0].4C()}}},7V:B(1v){D.2y=((1v 1N 1O)?1:0);D.4R[D.2y]=1v;D.7U()},bN:B(){if(D.2y!=-1){if(!D.7Z){2m S 1O("p3 p2!")}D.7Z=U;C}},dM:B(1v){D.bN();D.7V(1v)},5i:B(1v){D.bN();if(!(1v 1N 1O)){1v=S 1O(1v)}D.7V(1v)},9e:B(cb,4T){A 6e=z.2p(cb,4T);if(P.G>2){6e=z.7X(6e,P,2)}C D.5k(6e,6e)},ef:B(cb,4T){A 7Y=z.2p(cb,4T);if(P.G>2){7Y=z.7X(7Y,P,2)}C D.5k(7Y,L)},ed:B(cb,4T){A 7W=z.2p(cb,4T);if(P.G>2){7W=z.7X(7W,P,2)}C D.5k(L,7W)},5k:B(cb,eb){D.bM.Y([cb,eb]);if(D.2y>=0){D.7U()}C D},7U:B(){A bL=D.bM;A 4n=D.2y;A 1v=D.4R[4n];A 4S=D;A cb=L;1s((bL.G>0)&&(D.3M==0)){A f=bL.3a()[4n];if(!f){6c}1u{1v=f(1v);4n=((1v 1N 1O)?1:0);if(1v 1N z.30){cb=B(1v){4S.7V(1v);4S.3M--;if((4S.3M==0)&&(4S.2y>=0)){4S.7U()}};D.3M++}}1y(1G){1z.1K(1G);4n=1;1v=1G}}D.2y=4n;D.4R[4n]=1v;if((cb)&&(D.3M)){1v.9e(cb)}}})}if(!z.1h["z.X.2e"]){z.1h["z.X.2e"]=K;z.1Q("z.X.2e");z.5m=B(2e){1u{C 3u("("+2e+")")}1y(e){1z.1K(e);C 2e}};z.bK=B(2H){C("\\""+2H.2f(/(["\\\\])/g,"\\\\$1")+"\\"").2f(/[\\f]/g,"\\\\f").2f(/[\\b]/g,"\\\\b").2f(/[\\n]/g,"\\\\n").2f(/[\\t]/g,"\\\\t").2f(/[\\r]/g,"\\\\r")};z.hM="\\t";z.eq=B(it,4l,4P){4P=4P||"";A 4k=(4l?4P+z.hM:"");A 6b=(4l?"\\n":"");A 4Q=V(it);if(4Q=="1k"){C"1k"}I{if((4Q=="4J")||(4Q=="p1")){C it+""}I{if(it===L){C"L"}}}if(4Q=="3c"){C z.bK(it)}A 6d=P.2O;A 4m;if(V it.hL=="B"){4m=it.hL();if(it!==4m){C 6d(4m,4l,4k)}}if(V it.2e=="B"){4m=it.2e();if(it!==4m){C 6d(4m,4l,4k)}}if(z.2l(it)){A 1v=[];R(A i=0;i<it.G;i++){A 1U=6d(it[i],4l,4k);if(V(1U)!="3c"){1U="1k"}1v.Y(6b+4k+1U)}C"["+1v.22(", ")+6b+4P+"]"}if(4Q=="B"){C L}A bJ=[];R(A 1i in it){A 7T;if(V(1i)=="4J"){7T="\\""+1i+"\\""}I{if(V(1i)=="3c"){7T=z.bK(1i)}I{6c}}1U=6d(it[1i],4l,4k);if(V(1U)!="3c"){6c}bJ.Y(6b+4k+7T+": "+1U)}C"{"+bJ.22(", ")+6b+4P+"}"}}if(!z.1h["z.X.6a"]){z.1h["z.X.6a"]=K;z.1Q("z.X.6a");(B(){A 69=B(Q,M,cb){C[(z.1R(Q)?Q.1A(""):Q),(M||z.1W),(z.1R(cb)?(S bI("1m","hK","6a",cb)):cb)]};z.1x(z,{T:B(bH,hH,hI,hJ){A i=0,2q=1,1d=bH.G;if(hJ){i=1d-1;2q=1d=-1}R(i=hI||i;i!=1d;i+=2q){if(bH[i]==hH){C i}}C-1},31:B(hG,hF,hE){C z.T(hG,hF,hE,K)},1n:B(Q,hD,M){if(!Q||!Q.G){C}A 1I=69(Q,M,hD);Q=1I[0];R(A i=0,l=1I[0].G;i<l;i++){1I[2].2d(1I[1],Q[i],i,Q)}},bE:B(bF,Q,hC,M){A 1I=69(Q,M,hC);Q=1I[0];R(A i=0,l=Q.G;i<l;i++){A bG=!!1I[2].2d(1I[1],Q[i],i,Q);if(bF^bG){C bG}}C bF},ah:B(Q,hB,hA){C D.bE(K,Q,hB,hA)},ag:B(Q,hz,hy){C D.bE(U,Q,hz,hy)},23:B(Q,7t,M){A 1I=69(Q,M,7t);Q=1I[0];A bD=((P[3])?(S P[3]()):[]);R(A i=0;i<Q.G;++i){bD.Y(1I[2].2d(1I[1],Q[i],i,Q))}C bD},3T:B(Q,hx,M){A 1I=69(Q,M,hx);Q=1I[0];A bC=[];R(A i=0;i<Q.G;i++){if(1I[2].2d(1I[1],Q[i],i,Q)){bC.Y(Q[i])}}C bC}})})()}if(!z.1h["z.X.1J"]){z.1h["z.X.1J"]=K;z.1Q("z.X.1J");z.1J=B(bB){if(bB){D.hw(bB)}};z.1J.hp={p0:[0,0,0],oZ:[60,60,60],oY:[2j,2j,2j],oX:[1T,1T,1T],oW:[2j,0,0],oV:[1T,0,0],oU:[2j,0,2j],oT:[1T,0,1T],oS:[0,2j,0],oR:[0,1T,0],oQ:[2j,2j,0],oP:[1T,1T,0],oO:[0,0,2j],oN:[0,0,1T],oM:[0,2j,2j],oL:[0,1T,1T]};z.4M(z.1J,{r:1T,g:1T,b:1T,a:1,bz:B(r,g,b,a){A t=D;t.r=r;t.g=g;t.b=b;t.a=a},hw:B(2Q){A d=z;if(d.1R(2Q)){d.hq(2Q,D)}I{if(d.2l(2Q)){d.7P(2Q,D)}I{D.bz(2Q.r,2Q.g,2Q.b,2Q.a);if(!(2Q 1N d.1J)){D.7Q()}}}C D},7Q:B(){C D},oK:B(){A t=D;C[t.r,t.g,t.b]},oJ:B(){A t=D;C[t.r,t.g,t.b,t.a]},oI:B(){A Q=z.23(["r","g","b"],B(x){A s=D[x].2i(16);C s.G<2?"0"+s:s},D);C"#"+Q.22("")},8F:B(hv){A t=D,7S=t.r+", "+t.g+", "+t.b;C(hv?"hs("+7S+", "+t.a:"7S("+7S)+")"},2i:B(){C D.8F(K)}});z.d8=B(bA,1d,hu,M){A d=z,t=M||S z.1J();d.1n(["r","g","b","a"],B(x){t[x]=bA[x]+(1d[x]-bA[x])*hu;if(x!="a"){t[x]=2Y.oH(t[x])}});C t.7Q()};z.ho=B(ht,M){A m=ht.1M().1f(/^hs?\\(([\\s\\.,0-9]+)\\)/);C m&&z.7P(m[1].1A(/\\s*,\\s*/),M)};z.hn=B(4j,M){A d=z,t=M||S d.1J(),7R=(4j.G==4)?4:8,hr=(1<<7R)-1;4j=2V("oG"+4j.3b(1));if(2L(4j)){C L}d.1n(["b","g","r"],B(x){A c=4j&hr;4j>>=7R;t[x]=7R==4?17*c:c});t.a=1;C t};z.7P=B(a,M){A t=M||S z.1J();t.bz(2V(a[0]),2V(a[1]),2V(a[2]),2V(a[3]));if(2L(t.a)){t.a=1}C t.7Q()};z.hq=B(2H,M){A a=z.1J.hp[2H];C a&&z.7P(a,M)||z.ho(2H,M)||z.hn(2H,M)}}if(!z.1h["z.X"]){z.1h["z.X"]=K;z.1Q("z.X")}if(!z.1h["z.X.5Z"]){z.1h["z.X.5Z"]=K;z.1Q("z.X.5Z");(B(){A 1j=z.b2={2P:B(E,68,fp){if(!E){C}68=1j.4O(68);fp=1j.7G(68,fp);E.66(68,fp,U);C fp},3J:B(E,hm,hl){(E)&&(E.oF(1j.4O(hm),hl,U))},4O:B(1p){C(1p.2w(0,2)=="on"?1p.2w(2):1p)},7G:B(1p,fp){C(1p!="4b"?fp:B(e){C fp.2d(D,1j.4i(e,D))})},4i:B(H,oE){4w(H.Z){2X"4b":1j.7K(H);3f}C H},7K:B(H){H.oD=(H.3h?67.oC(H.3h):"")}};z.oB=B(H,hk){C 1j.4i(H,hk)};z.gY=B(H){H.7J();H.7I()};A 7O=z.3i;z.by=B(M,bx,hh,hg,hi){A hj=M&&(M.2t||M.oA||M.66);A bw=!hj?0:(!hi?1:2),l=[z.3i,1j,7O][bw];A h=l.2P(M,bx,z.2p(hh,hg));C[M,bx,h,bw]};z.bv=B(M,he,hd,hf){([z.3i,1j,7O][hf]).3J(M,he,hd)};z.5W={oz:8,gV:9,oy:12,ox:13,ow:16,ov:17,ou:18,gG:19,ot:20,os:27,or:32,b5:33,b4:34,gE:35,gF:36,b7:37,b9:38,b6:39,b8:40,gD:45,8S:46,oq:47,oo:91,om:92,ol:93,oj:96,oi:97,oh:98,og:99,oe:6D,od:oc,ob:oa,o9:o8,o7:o6,o5:o4,o3:bi,o2:o1,o0:nZ,nY:nX,nW:nV,nU:bk,gS:nT,gR:nS,gQ:nR,gP:nQ,gO:nP,gN:nO,gM:nN,gL:nM,gK:nL,gJ:nK,gI:nJ,gH:nI,nH:nG,nF:nE,nD:nC,gB:nB,gC:nA};if(z.1l){bf=B(e,5h){1u{C(e.3I=5h)}1y(e){C 0}};A 61=z.3i;if(!1o.nz){7O=61=z.gy={b3:[],2P:B(64,bu,hc){64=64||z.1W;A f=64[bu];if(!f||!f.2b){A d=z.gz();d.5V=f&&(7M.Y(f)-1);d.2b=[];f=64[bu]=d}C f.2b.Y(7M.Y(hc)-1)},3J:B(hb,ha,7N){A f=(hb||z.1W)[ha],l=f&&f.2b;if(f&&l&&7N--){63 7M[l[7N]];63 l[7N]}}};A 7M=61.b3}z.1x(1j,{2P:B(E,62,fp){if(!E){C}62=1j.4O(62);if(62=="h3"){A kd=E.bs;if(!kd||!kd.2b||!kd.h9){1j.2P(E,"bs",1j.h4);E.bs.h9=K}}C 61.2P(E,62,1j.7G(fp))},3J:B(E,h8,h7){61.3J(E,1j.4O(h8),h7)},4O:B(7L){C(7L.2w(0,2)!="on"?"on"+7L:7L)},ny:B(){},4i:B(H,4N){if(!H){A w=(4N)&&((4N.aD||4N.1q||4N).nx)||26;H=w.5Z}if(!H){C(H)}H.5V=H.br;H.bh=(4N||H.br);H.nw=H.nv;H.nu=H.nr;A bq=H.br,1e=(bq&&bq.aD)||1q;A bn=((z.1l<6)||(1e["aX"]=="aW"))?1e.3E:1e.5K;A bm=z.aB();H.nq=H.np+z.aH(bn.5I||0)-bm.x;H.nn=H.nm+(bn.5G||0)-bm.y;if(H.Z=="fk"){H.h6=H.nl}if(H.Z=="fj"){H.h6=H.nk}H.7I=1j.bc;H.7J=1j.ba;C 1j.h5(H)},h5:B(H){4w(H.Z){2X"4b":A c=("3h"in H?H.3h:H.3I);if(c==10){c=0;H.3I=13}I{if(c==13||c==27){c=0}I{if(c==3){c=99}}}H.3h=c;1j.7K(H);3f}C H},gZ:{bi:42,bk:47,h2:59,nj:43,ni:44,nh:45,ng:46,nf:47,60:96,h1:91,nb:92,na:93,h0:39},h4:B(H){A kp=H.bh.h3;if(!kp||!kp.2b){C}A k=H.3I;A bj=(k!=13)&&(k!=32)&&(k!=27)&&(k<48||k>90)&&(k<96||k>bk)&&(k<h2||k>60)&&(k<h1||k>h0);if(bj||H.5Y){A c=(bj?0:k);if(H.5Y){if(k==3||k==13){C}I{if(c>95&&c<bi){c-=48}I{if((!H.5X)&&(c>=65&&c<=90)){c+=32}I{c=1j.gZ[c]||c}}}}A 2x=1j.7H(H,{Z:"4b",2x:K,3h:c});kp.2d(H.bh,2x);H.bg=2x.bg;H.bd=2x.bd;bf(H,2x.3I)}},bc:B(){D.bg=K},ba:B(){D.n9=D.3I;if(D.5Y){bf(D,0)}D.bd=U}});z.gY=B(H){H=H||26.5Z;1j.bc.2d(H);1j.ba.2d(H)}}1j.7H=B(H,gX){A 2x=z.1x({},H,gX);1j.7K(2x);2x.7J=B(){H.7J()};2x.7I=B(){H.7I()};C 2x};if(z.2M){z.1x(1j,{4i:B(H,n8){4w(H.Z){2X"4b":A c=H.n7;if(c==3){c=99}c=((c<41)&&(!H.5X)?0:c);if((H.5Y)&&(!H.5X)&&(c>=65)&&(c<=90)){c+=32}C 1j.7H(H,{3h:c})}C H}})}if(z.3o){z.1x(1j,{4i:B(H,n6){4w(H.Z){2X"4b":A c=H.3h,s=H.5X,k=H.3I;k=k||gA[H.gW]||0;if(H.gW=="n5"){c=0}I{if((H.5Y)&&(c>0)&&(c<27)){c+=96}I{if(c==z.5W.gU){c=z.5W.gV;s=K}I{c=(c>=32&&c<gT?c:0)}}}C 1j.7H(H,{3h:c,5X:s,3I:k})}C H}});z.1x(z.5W,{gU:25,b9:gT,b8:n4,b7:n3,b6:n2,gS:n1,gR:n0,gQ:mZ,gP:mY,gO:mX,gN:mW,gM:mV,gL:mU,gK:mT,gJ:mS,gI:mR,gH:mQ,gG:mP,8S:mO,gF:mN,gE:mM,b5:mL,b4:mK,gD:mJ,mI:mH,gC:mG,gB:mF});A dk=z.5W,gA={"mE":dk.b9,"mD":dk.b8,"mC":dk.b7,"mB":dk.b6,"mA":dk.b5,"mz":dk.b4}}})();if(z.1l){z.gz=B(){C B(){A ap=4e.1C,h=z.gy.b3,c=P.2O,ls=c.2b,t=h[c.5V];A r=t&&t.14(D,P);R(A i in ls){if(!(i in ap)){h[ls[i]].14(D,P)}}C r}};z.b2.7G=B(fp){A f=z.b2.4i;C B(e){C fp.2d(D,f(e,D))}}}}if(!z.1h["z.X.b1"]){z.1h["z.X.b1"]=K;z.1Q("z.X.b1");1u{1q.my("mx",U,K)}1y(e){}if(z.1l||z.2M){z.1D=B(id,1e){if(z.1R(id)){A b0=(1e||z.1e);A 11=b0.gv(id);if((11)&&(11.gw.id.1Z==id)){C 11}I{A 5U=b0.gx[id];if(!5U){C}if(!5U.G){C 5U}A i=0;1s(11=5U[i++]){if(11.gw.id.1Z==id){C 11}}}}I{C id}}}I{z.1D=B(id,1e){if(z.1R(id)){C(1e||z.1e).gv(id)}I{C id}}}(B(){A 5T=L;z.mw=B(E){E=z.1D(E);1u{if(!5T){5T=1q.a9("mv")}5T.4c(E.1L?E.1L.fs(E):E);5T.9L=""}1y(e){}};z.mu=B(E,7F){1u{E=z.1D(E);7F=z.1D(7F);1s(E){if(E===7F){C K}E=E.1L}}1y(e){}C U};z.mt=B(E,5S){E=z.1D(E);if(z.gu){E.1c.ms=(5S)?"dg":"7C"}I{if(z.6B){E.1c.mr=(5S)?"8K":"7C"}I{if(z.1l){E.gs=(5S)?"":"on";z.1r("*",E).1n(B(gt){gt.gs=(5S)?"":"on"})}}}};A 5R=B(E,4h){4h.1L.mq(E,4h);C K};A aZ=B(E,4h){A pn=4h.1L;if(4h==pn.fm){pn.4c(E)}I{C 5R(E,4h.71)}C K};z.5E=B(E,2a,3H){if((!E)||(!2a)||(V 3H=="1k")){C U}E=z.1D(E);2a=z.1D(2a);if(V 3H=="4J"){A cn=2a.3W;if(((3H==0)&&(cn.G==0))||(cn.G==3H)){2a.4c(E);C K}if(3H==0){C 5R(E,2a.5A)}C aZ(E,cn[3H-1])}4w(3H.1M()){2X"mo":C 5R(E,2a);2X"a8":C aZ(E,2a);2X"9M":if(2a.5A){C 5R(E,2a.5A)}I{2a.4c(E);C K}3f;aY:2a.4c(E);C K}};z.aP="5g-3G";if(z.1l){A aV=1q.aX;z.aP=(aV=="aW")||(aV=="gr")||(z.1l<6)?"g5-3G":"5g-3G"}A 1E,dv=1q.mn;if(z.3o){1E=B(E){A s=dv.3F(E,L);if(!s&&E.1c){E.1c.gq="";s=dv.3F(E,L)}C s||{}}}I{if(z.1l){1E=B(E){C E.gn}}I{1E=B(E){C dv.3F(E,L)}}}z.3F=1E;if(!z.1l){z.4g=B(mm,gp){C 2k(gp)||0}}I{z.4g=B(go,2N){if(!2N){C 0}if(2N=="ml"){C 4}if(2N.2w&&(2N.2w(-2)=="px")){C 2k(2N)}4G(go){A gm=1c.2g;A gl=aU.2g;aU.2g=gn.2g;1u{1c.2g=2N;2N=1c.mk}1y(e){2N=0}1c.2g=gm;aU.2g=gl}C 2N}}z.ge=(z.1l?B(E){1u{C(E.mj.mi.2W/6D)}1y(e){C 1}}:B(E){C z.3F(E).2W});z.gf=(z.1l?B(E,7D){if(7D==1){E.1c.7E=E.1c.7E.2f(/gk:[^;]*;/i,"");if(E.gj.1M()=="gi"){z.1r("> gh",E).1n(B(i){i.1c.7E=i.1c.7E.2f(/gk:[^;]*;/i,"")})}}I{A o="mh(mg="+(7D*6D)+")";E.1c.3T=o}if(E.gj.1M()=="gi"){z.1r("> gh",E).1n(B(i){i.1c.3T=o})}C 7D}:B(E,gg){C E.1c.2W=gg});A 5Q={3n:K,58:K,2g:K,5J:K};A gd=B(E,Z,5P){Z=Z.1M();if(5Q[Z]===K){C z.4g(E,5P)}I{if(5Q[Z]===U){C 5P}I{if((Z.T("mf")>=0)||(Z.T("md")>=0)||(Z.T("3n")>=0)||(Z.T("58")>=0)||(Z.T("5q")>=0)||(Z.T("mc")>=0)||(Z.T("ma")>=0)){5Q[Z]=K;C z.4g(E,5P)}I{5Q[Z]=U;C 5P}}}};z.1c=B(E,5O,aT){A n=z.1D(E),F=P.G,op=(5O=="2W");if(F==3){C op?z.gf(n,aT):n.1c[5O]=aT}if(F==2&&op){C z.ge(n)}A s=z.3F(n);C(F==1)?s:gd(n,5O,s[5O])};z.7A=B(n,gc){A s=gc||1E(n),px=z.4g,l=px(n,s.m9),t=px(n,s.m8);C{l:l,t:t,w:l+px(n,s.m7),h:t+px(n,s.m6)}};z.5N=B(n,gb){A ne="7C",px=z.4g,s=gb||1E(n),bl=(s.m5!=ne?px(n,s.m4):0),bt=(s.m3!=ne?px(n,s.m2):0);C{l:bl,t:bt,w:bl+(s.m1!=ne?px(n,s.m0):0),h:bt+(s.lZ!=ne?px(n,s.lY):0)}};z.aN=B(n,ga){A s=ga||1E(n),p=z.7A(n,s),b=z.5N(n,s);C{l:p.l+b.l,t:p.t+b.t,w:p.w+b.w,h:p.h+b.h}};z.aM=B(n,g9){A s=g9||1E(n),px=z.4g,l=px(n,s.lX),t=px(n,s.lW),r=px(n,s.lV),b=px(n,s.lU);if(z.3o&&(s.ax!="fU")){r=l}C{l:l,t:t,w:l+r,h:t+b}};z.au=B(E,g8){A s=g8||1E(E),me=z.aM(E,s);A l=E.fT-me.l,t=E.fS-me.t;if(z.7B){A aS=2k(s.2g),aR=2k(s.5J);if(!2L(aS)&&!2L(aR)){l=aS,t=aR}I{A p=E.1L;if(p&&p.1c){A aQ=1E(p);if(aQ.lT!="lS"){A be=z.5N(p,aQ);l+=be.l,t+=be.t}}}}I{if(z.2M){A p=E.1L;if(p){A be=z.5N(p);l-=be.l,t-=be.t}}}C{l:l,t:t,w:E.6v+me.w,h:E.8D+me.h}};z.aK=B(E,g7){A s=g7||1E(E),pe=z.7A(E,s),be=z.5N(E,s),w=E.aF,h;if(!w){w=E.6v,h=E.8D}I{h=E.lR,be.w=be.h=0}if(z.2M){pe.l+=be.l;pe.t+=be.t}C{l:pe.l,t:pe.t,w:w-pe.w-be.w,h:h-pe.h-be.h}};z.lQ=B(E,g6){A s=g6||1E(E),pe=z.7A(E,s),cb=z.aK(E,s);C{l:cb.l-pe.l,t:cb.t-pe.t,w:cb.w+pe.w,h:cb.h+pe.h}};z.aL=B(E,l,t,w,h,u){u=u||"px";4G(E.1c){if(!2L(l)){2g=l+u}if(!2L(t)){5J=t+u}if(w>=0){3n=w+u}if(h>=0){58=h+u}}};z.aO=B(E){A n=E.5w;C(z.aP=="g5-3G")||(n=="lP")||(n=="lO")};z.fX=B(E,7z,7y,g4){A bb=z.aO(E);if(bb){A pb=z.aN(E,g4);if(7z>=0){7z+=pb.w}if(7y>=0){7y+=pb.h}}z.aL(E,g3,g3,7z,7y)};z.fY=B(E,g1,g0,5M,5L,g2){A s=g2||z.3F(E);A bb=z.aO(E),pb=bb?fZ:z.aN(E,s),mb=z.aM(E,s);if(5M>=0){5M=2Y.5q(5M-pb.w-mb.w,0)}if(5L>=0){5L=2Y.5q(5L-pb.h-mb.h,0)}z.aL(E,g1,g0,5M,5L)};A fZ={l:0,t:0,w:0,h:0};z.lN=B(E,3G){A n=z.1D(E),s=1E(n),b=3G;C!b?z.au(n,s):z.fY(n,b.l,b.t,b.w,b.h,s)};z.lM=B(E,3G){A n=z.1D(E),s=1E(n),b=3G;C!b?z.aK(n,s):z.fX(n,b.w,b.h,s)};A 5H=B(E,1a){if(!(E=(E||0).1L)){C 0}A 1U,aJ=0,2h=z.3E();1s(E&&E.1c){if(1E(E).ax=="lL"){C 0}1U=E[1a];if(1U){aJ+=1U-0;if(E==2h){3f}}E=E.1L}C aJ};z.fQ=B(){A 2h=z.3E();A 3g=z.1W;A de=z.1e.5K;C{y:(3g.lK||de.5G||2h.5G||0),x:(3g.lJ||z.aH(de.5I)||2h.5I||0)}};z.aG=B(){C V z.aI=="1k"?(z.aI=z.3F(z.3E()).lI=="lH"):z.aI};z.aB=B(){A de=z.1e.5K;if(z.1l>=7){C{x:de.aC().2g,y:de.aC().5J}}I{C{x:z.aG()||26.am==26?de.fW:de.6v-de.aF-de.fW,y:de.lG}}};z.aH=B(aE){if(z.1l&&!z.aG()){A de=z.1e.5K;C aE+de.aF-de.lF}C aE};z.fP=B(E,aw){A ay=E.aD;A J={x:0,y:0};A 7w=U;A db=z.3E();if(z.1l){A aA=E.aC();A az=z.aB();J.x=aA.2g-az.x;J.y=aA.5J-az.y}I{if(ay["fV"]){A bo=ay.fV(E);J.x=bo.x-5H(E,"5I");J.y=bo.y-5H(E,"5G")}I{if(E["fR"]){7w=K;A 7x;if(z.3o&&(1E(E).ax=="fU")&&(E.1L==db)){7x=db}I{7x=db.1L}if(E.1L!=db){A nd=E;if(z.2M){nd=db}J.x-=5H(nd,"5I");J.y-=5H(nd,"5G")}A 4f=E;do{A n=4f["fT"];if(!z.2M||n>0){J.x+=2L(n)?0:n}A m=4f["fS"];J.y+=2L(m)?0:m;4f=4f.fR}1s((4f!=7x)&&4f)}I{if(E["x"]&&E["y"]){J.x+=2L(E.x)?0:E.x;J.y+=2L(E.y)?0:E.y}}}}if(7w||aw){A av=z.fQ();A m=7w?(!aw?-1:0):1;J.y+=m*av.y;J.x+=m*av.x}C J};z.af=B(E,fO){A n=z.1D(E),s=1E(n),mb=z.au(n,s);A at=z.fP(n,fO);mb.x=at.x;mb.y=at.y;C mb}})();z.fL=B(E,fN){C((" "+E.3A+" ").T(" "+fN+" ")>=0)};z.7s=B(E,ar){A 7v=E.3A;if((" "+7v+" ").T(" "+ar+" ")<0){E.3A=7v+(7v?" ":"")+ar}};z.7r=B(E,fM){A t=z.7g((" "+E.3A+" ").2f(" "+fM+" "," "));if(E.3A!=t){E.3A=t}};z.lE=B(E,aq,7u){if(V 7u=="1k"){7u=!z.fL(E,aq)}z[7u?"7s":"7r"](E,aq)}}if(!z.1h["z.X.1H"]){z.1h["z.X.1H"]=K;z.1Q("z.X.1H");(B(){A d=z;z.1H=B(){A F=P;if((F.G==1)&&(V F[0]=="4J")){D.G=eK(F[0])}I{if(F.G){d.1n(F,B(i){D.Y(i)},D)}}};z.1H.1C=S 4e;if(d.1l){A fK=B(al){C("A a2 = am."+al+"; "+"A ap = 4e.1C; "+"A ao = a2.1C; "+"R(A x in ao){ ap[x] = ao[x]; } "+"am."+al+" = 4e; ")};A fI=fK("z.1H");A aj=26.lD();aj.1q.fJ("<ak>"+fI+"</ak>");aj.lC(1,1,1,1)}z.4M(z.1H,{T:B(fH,fG){C d.T(D,fH,fG)},31:B(lB,lA){A aa=d.4d(P);aa.ae(D);C d.31.14(d,aa)},ah:B(fF,fE){C d.ah(D,fF,fE)},ag:B(fD,fC){C d.ag(D,fD,fC)},1n:B(fB,fA){d.1n(D,fB,fA);C D},23:B(7t,M){C d.23(D,7t,M,d.1H)},af:B(){C d.23(D,d.af)},1c:B(lz,ly){A aa=d.4d(P);aa.ae(D[0]);A s=d.1c.14(d,aa);C(P.G>1)?D:s},lx:B(lw,lv){A aa=d.4d(P);aa.ae(L);A s=D.23(B(i){aa[0]=i;C d.1c.14(d,aa)});C(P.G>1)?D:s},7s:B(fz){C D.1n(B(i){z.7s(i,fz)})},7r:B(fy){C D.1n(B(i){z.7r(i,fy)})},5E:B(fw,7q){A 1m=d.1r(fw)[0];7q=7q||"72";R(A x=0;x<D.G;x++){d.5E(D[x],1m,7q)}C D},2c:B(fv,fu,ft){D.1n(B(1m){d.2c(1m,fv,fu,ft)});C D},lu:B(ad){A ac=(ad)?d.9t(D,ad):D;ac.1n(B(1m){if(1m["1L"]){1m.1L.fs(1m)}});C ac},lt:B(fr,fq){A 1m=D[0];C d.1r(fr).1n(B(ai){d.5E(ai,1m,(fq||"72"))})},1r:B(7p){7p=7p||"";A J=S d.1H();D.1n(B(1m){d.1r(7p,1m).1n(B(ab){if(V ab!="1k"){J.Y(ab)}})});C J},3T:B(fo){A 5F=D;A 1V=P;A r=S d.1H();A rp=B(t){if(V t!="1k"){r.Y(t)}};if(d.1R(fo)){5F=d.9t(D,1V[0]);if(1V.G==1){C 5F}d.1n(d.3T(5F,1V[1],1V[2]),rp);C r}d.1n(d.3T(5F,1V[0],1V[1]),rp);C r},lr:B(7o,7n){A 1S=d.1e.a9("lq");if(d.1R(7o)){1S.9L=7o}I{1S.4c(7o)}A ct=((7n=="9M")||(7n=="a8"))?"fm":"5A";D.1n(B(1m){A 24=1S.a7(K);1s(24[ct]){d.5E(24[ct],1m,7n)}});C D},7m:B(fl,F){A a5=[];F=F||{};D.1n(B(1m){A a6={E:1m};d.1x(a6,F);a5.Y(d[fl](a6))});C d.fx.lp(a5)},8I:B(F){C D.7m("8I",F)},8H:B(F){C D.7m("8H",F)},6y:B(F){C D.7m("6y",F)}});z.1n(["fk","lo","fj","fi","ln","lm","ll","fi","lk","lj","4b"],B(H){A a4="on"+H;z.1H.1C[a4]=B(a,b){C D.2c(a4,a,b)}})})()}if(!z.1h["z.X.1r"]){z.1h["z.X.1r"]=K;z.1Q("z.X.1r");(B(){A d=z;A 2I=B(q){C[q.T("#"),q.T("."),q.T("["),q.T(":")]};A a0=B(a3,fh){A ql=a3.G;A i=2I(a3);A 1d=ql;R(A x=fh;x<i.G;x++){if(i[x]>=0){if(i[x]<1d){1d=i[x]}}}C(1d<0)?ql:1d};A 6X=B(7l){A i=2I(7l);if(i[0]!=-1){C 7l.21(i[0]+1,a0(7l,1))}I{C""}};A 5r=B(7k){A 5D;A i=2I(7k);if((i[0]==0)||(i[1]==0)){5D=0}I{5D=a0(7k,0)}C((5D>0)?7k.3b(0,5D).1M():"*")};A fg=B(Q){A J=-1;R(A x=0;x<Q.G;x++){A 1S=Q[x];if(1S>=0){if((1S>J)||(J==-1)){J=1S}}}C J};A 9H=B(7i){A i=2I(7i);if(-1==i[1]){C""}A di=i[1]+1;A 7j=fg(i.2w(2));if(di<7j){C 7i.21(di,7j)}I{if(-1==7j){C 7i.3b(di)}I{C""}}};A f3=[{1i:"|=",1f:B(15,fe){C"[5z(3U(\' \',@"+15+",\' \'), \' "+fe+"-\')]"}},{1i:"~=",1f:B(15,fd){C"[5z(3U(\' \',@"+15+",\' \'), \' "+fd+" \')]"}},{1i:"^=",1f:B(15,fb){C"[li-4G(@"+15+", \'"+fb+"\')]"}},{1i:"*=",1f:B(15,fa){C"[5z(@"+15+", \'"+fa+"\')]"}},{1i:"$=",1f:B(15,9Z){C"[21(@"+15+", 3c-G(@"+15+")-"+(9Z.G-1)+")=\'"+9Z+"\']"}},{1i:"!=",1f:B(15,f9){C"[3O(@"+15+"=\'"+f9+"\')]"}},{1i:"=",1f:B(15,f8){C"[@"+15+"=\'"+f8+"\']"}}];A 9C=B(9Y,3Z,f7,f6){A 49;A i=2I(3Z);if(i[2]>=0){A 4L=3Z.T("]",i[2]);A 29=3Z.21(i[2]+1,4L);1s(29&&29.G){if(29.2s(0)=="@"){29=29.2w(1)}49=L;R(A x=0;x<9Y.G;x++){A 1S=9Y[x];A 7h=29.T(1S.1i);if(7h>=0){A 15=29.21(0,7h);A 4a=29.21(7h+1S.1i.G);if((4a.2s(0)=="\\"")||(4a.2s(0)=="\'")){4a=4a.21(1,4a.G-1)}49=1S.1f(d.7g(15),d.7g(4a));3f}}if((!49)&&(29.G)){49=f7(29)}if(49){f6(49)}29=L;A 7f=3Z.T("[",4L);if(0<=7f){4L=3Z.T("]",7f);if(0<=4L){29=3Z.21(7f+1,4L)}}}}};A f0=B(f5){A 4K=".";A 7e=f5.1A(" ");1s(7e.G){A 2K=7e.3a();A 7d;if(2K==">"){7d="/";2K=7e.3a()}I{7d="//"}A f4=5r(2K);4K+=7d+f4;A id=6X(2K);if(id.G){4K+="[@id=\'"+id+"\'][1]"}A cn=9H(2K);if(cn.G){A 9X=" ";if(cn.2s(cn.G-1)=="*"){9X="";cn=cn.3b(0,cn.G-1)}4K+="[5z(3U(\' \',@9P,\' \'), \' "+cn+9X+"\')]"}9C(f3,2K,B(f2){C"[@"+f2+"]"},B(f1){4K+=f1})}C 4K};A 7a={};A eC=B(28){if(7a[28]){C 7a[28]}A 1e=d.1e;A 9W=f0(28);A 4H=B(9V){A J=[];A 7b;1u{7b=1e.9x(9W,9V,L,lh.lg,L)}1y(e){1z.1K("lf in le:",9W,"lc:",9V);1z.1K(e)}A 7c=7b.eZ();1s(7c){J.Y(7c);7c=7b.eZ()}C J};C 7a[28]=4H};A 5x={};A 9B={};A 3y=B(79,78){if(!79){C 78}if(!78){C 79}C B(){C 79.14(26,P)&&78.14(26,P)}};A 75=B(9U,3Y,5B,2J){A 2v=2J+1;A 76=(3Y.G==2v);A 2K=3Y[2J];if(2K==">"){A 77=9U.3W;if(!77.G){C}2v++;76=(3Y.G==2v);A 4H=6O(3Y[2J+1]);R(A x=0,11;x<77.G,11=77[x];x++){if(4H(11)){if(76){5B.Y(11)}I{75(11,3Y,5B,2v)}}}}A 5C=6U(2K)(9U);if(76){1s(5C.G){5B.Y(5C.3a())}}I{1s(5C.G){75(5C.3a(),3Y,5B,2v)}}};A eE=B(9T,eY){A J=[];A x=9T.G-1,11;1s(11=9T[x--]){75(11,eY,J,0)}C J};A 6O=B(3D){if(5x[3D]){C 5x[3D]}A ff=L;A 9S=5r(3D);if(9S!="*"){ff=3y(ff,B(N){C((N.2t==1)&&(9S==N.5w.1M()))})}A 9R=6X(3D);if(9R.G){ff=3y(ff,B(N){C((N.2t==1)&&(N.id==9R))})}if(2Y.5q.14(D,2I(3D).2w(1))>=0){ff=3y(ff,9z(3D))}C 5x[3D]=ff};A 5y=B(E){A pn=E.1L;A 9Q=pn.3W;A 2v=-1;A 3C=pn.5A;if(!3C){C 2v}A ci=E["eW"];A cl=pn["eX"];if(((V cl=="4J")&&(cl!=9Q.G))||(V ci!="4J")){pn["eX"]=9Q.G;A 2J=1;do{if(3C===E){2v=2J}if(3C.2t==1){3C["eW"]=2J;2J++}3C=3C.71}1s(3C)}I{2v=ci}C 2v};A lb=0;A 3X=B(N,15){A 74="";if(15=="9P"){C N.3A||74}if(15=="R"){C N.la||74}C N.5t(15,2)||74};A eH=[{1i:"|=",1f:B(15,9O){A eV=" "+9O+"-";C B(N){A ea=" "+(N.5t(15,2)||"");C((ea==9O)||(ea.T(eV)==0))}}},{1i:"^=",1f:B(15,eU){C B(N){C(3X(N,15).T(eU)==0)}}},{1i:"*=",1f:B(15,eT){C B(N){C(3X(N,15).T(eT)>=0)}}},{1i:"~=",1f:B(15,eS){A 9N=" "+eS+" ";C B(N){A ea=" "+3X(N,15)+" ";C(ea.T(9N)>=0)}}},{1i:"$=",1f:B(15,73){A 9N=" "+73;C B(N){A ea=" "+3X(N,15);C(ea.31(73)==(ea.G-73.G))}}},{1i:"!=",1f:B(15,eR){C B(N){C(3X(N,15)!=eR)}}},{1i:"=",1f:B(15,eQ){C B(N){C(3X(N,15)==eQ)}}}];A 9E=[{1i:"9M-9K",1f:B(1p,l9){C B(N){if(N.2t!=1){C U}A fc=N.eP;1s(fc&&(fc.2t!=1)){fc=fc.eP}C(!fc)}}},{1i:"72-9K",1f:B(1p,l8){C B(N){if(N.2t!=1){C U}A nc=N.71;1s(nc&&(nc.2t!=1)){nc=nc.71}C(!nc)}}},{1i:"l7",1f:B(1p,l6){C B(N){A cn=N.3W;A eO=N.3W.G;R(A x=eO-1;x>=0;x--){A nt=cn[x].2t;if((nt==1)||(nt==3)){C U}}C K}}},{1i:"5z",1f:B(1p,eN){C B(N){C(N.9L.T(eN)>=0)}}},{1i:"3O",1f:B(1p,eM){A eL=6O(eM);C B(N){C(!eL(N))}}},{1i:"l5-9K",1f:B(1p,2u){A pi=eK;if(2u=="l4"){C B(N){C(((5y(N))%2)==1)}}I{if((2u=="2n")||(2u=="l3")){C B(N){C((5y(N)%2)==0)}}I{if(2u.T("l2+")==0){A 70=pi(2u.3b(3));C B(N){C(N.1L.3W[70-1]===N)}}I{if((2u.T("n+")>0)&&(2u.G>3)){A 9J=2u.1A("n+",2);A eJ=pi(9J[0]);A 2J=pi(9J[1]);C B(N){C((5y(N)%eJ)==2J)}}I{if(2u.T("n")==-1){A 70=pi(2u);C B(N){C(5y(N)==70)}}}}}}}}];A 9z=B(3e){A 9I=(9B[3e]||5x[3e]);if(9I){C 9I}A ff=L;A i=2I(3e);if(i[0]>=0){A 24=5r(3e);if(24!="*"){ff=3y(ff,B(N){C(N.5w.1M()==24)})}}A 5u;A 3B=9H(3e);if(3B.G){A 9F=3B.2s(3B.G-1)=="*";if(9F){3B=3B.3b(0,3B.G-1)}A re=S 9G("(?:^|\\\\s)"+3B+(9F?".*":"")+"(?:\\\\s|$)");ff=3y(ff,B(N){C re.6Z(N.3A)})}if(i[3]>=0){A 3z=3e.3b(i[3]+1);A 9D="";A 5v=3z.T("(");A 6Y=3z.31(")");if((0<=5v)&&(0<=6Y)&&(6Y>5v)){9D=3z.21(5v+1,6Y);3z=3z.3b(0,5v)}5u=L;R(A x=0;x<9E.G;x++){A 1S=9E[x];if(1S.1i==3z){5u=1S.1f(3z,9D);3f}}if(5u){ff=3y(ff,5u)}}A eG=(d.1l)?B(5s){A eI=5s.1M();C B(N){C N[5s]||N[eI]}}:B(5s){C B(N){C(N&&N.5t&&N.l1(5s))}};9C(eH,3e,eG,B(eF){ff=3y(ff,eF)});if(!ff){ff=B(){C K}}C 9B[3e]=ff};A 6W={};A 6U=B(3d,1B){A 9A=6W[3d];if(9A){C 9A}A i=2I(3d);A id=6X(3d);if(i[0]==0){C 6W[3d]=B(1B){C[d.1D(id)]}}A 9y=9z(3d);A 5p;if(i[0]>=0){5p=B(1B){A 11=d.1D(id);if(9y(11)){C[11]}}}I{A 3V;A 24=5r(3d);if(2Y.5q.14(D,2I(3d))==-1){5p=B(1B){A J=[];A 11,x=0,3V=1B.4I(24);1s(11=3V[x++]){J.Y(11)}C J}}I{5p=B(1B){A J=[];A 11,x=0,3V=1B.4I(24);1s(11=3V[x++]){if(9y(11)){J.Y(11)}}C J}}}C 6W[3d]=5p};A l0={};A 5o={">":B(1B){A J=[];A 11,x=0,3V=1B.3W;1s(11=3V[x++]){if(11.2t==1){J.Y(11)}}C J}};A 9w=B(6V){if(0>6V.T(" ")){C 6U(6V)}A eD=B(1B){A 6S=6V.1A(" ");A 6T;if(6S[0]==">"){6T=[1B]}I{6T=6U(6S.3a())(1B)}C eE(6T,6S)};C eD};A 9v=((1q["9x"]&&!d.3o)?B(3x){A 6R=3x.1A(" ");if((1q["9x"])&&(3x.T(":")==-1)&&((K))){if(((6R.G>2)&&(3x.T(">")==-1))||(6R.G>3)||(3x.T("[")>=0)||((1==6R.G)&&(0<=3x.T(".")))){C eC(3x)}}C 9w(3x)}:9w);A ey=B(3w){if(5o[3w]){C 5o[3w]}if(0>3w.T(",")){C 5o[3w]=9v(3w)}I{A eB=3w.1A(/\\s*,\\s*/);A 4H=B(1B){A eA=0;A J=[];A 6Q;1s(6Q=eB[eA++]){J=J.3U(9v(6Q,6Q.T(" "))(1B))}C J};C 5o[3w]=4H}};A 5n=0;A ez=B(Q){A J=S d.1H();if(!Q){C J}if(Q[0]){J.Y(Q[0])}if(Q.G<2){C J}5n++;Q[0]["9u"]=5n;R(A x=1,11;11=Q[x];x++){if(Q[x]["9u"]!=5n){J.Y(11)}11["9u"]=5n}C J};d.1r=B(6P,1B){if(V 6P!="3c"){C S d.1H(6P)}if(V 1B=="3c"){1B=d.1D(1B)}C ez(ey(6P)(1B||d.1e))};d.9t=B(ex,9s){A 9r=S d.1H();A ff=(9s)?6O(9s):B(){C K};R(A x=0,11;11=ex[x];x++){if(ff(11)){9r.Y(11)}}C 9r}})()}if(!z.1h["z.X.1b"]){z.1h["z.X.1b"]=K;z.1Q("z.X.1b");z.6K=B(ew){A J={};A iq="kZ[Z!=9q][Z!=kY][Z!=et][Z!=kX][Z!=kW], kV, kU";z.1r(iq,ew).3T(B(E){C(!E.kT)}).1n(B(1m){A 3v=1m.1p;A Z=(1m.Z||"").1M();if((Z=="kS")||(Z=="kR")){if(1m.kQ){J[3v]=1m.1Z}}I{if(1m.kP){A ev=J[3v]=[];z.1r("kO[kN]",1m).1n(B(eu){ev.Y(eu.1Z)})}I{J[3v]=1m.1Z;if(Z=="et"){J[3v+".x"]=J[3v+".y"]=J[3v].x=J[3v].y=0}}}});C J};z.9h=B(23){A ec=kM;A J="";A es={};R(A x in 23){if(23[x]!=es[x]){if(z.2l(23[x])){R(A y=0;y<23[x].G;y++){J+=ec(x)+"="+ec(23[x][y])+"&"}}I{J+=ec(x)+"="+ec(23[x])+"&"}}}if((J.G)&&(J.2s(J.G-1)=="&")){J=J.3b(0,J.G-1)}C J};z.kL=B(er){C z.9h(z.6K(er))};z.kK=B(ep){C z.eq(z.6K(ep))};z.kJ=B(2H){A J={};A qp=2H.1A("&");A dc=kI;z.1n(qp,B(1m){if(1m.G){A 9p=1m.1A("=");A 1p=dc(9p.3a());A 1U=dc(9p.22("="));if(z.1R(J[1p])){J[1p]=[J[1p]]}if(z.2l(J[1p])){J[1p].Y(1U)}I{J[1p]=1U}}});C J};z.e1=U;z.e6={"9g":B(1b){C 1b.2G},"2e":B(1b){if(!1o.eo){1z.1K("kH kG kF a kE of 9g/2e-6M-9m"+" 4F kD kC kB kA 4G en kz"+" (ky 1o.eo=K 4F kx kw D kv)")}C z.5m(1b.2G)},"2e-6M-ku":B(1b){A 6N=1b.2G;A 9o=6N.T("/*");A 9n=6N.31("*/");if((9o==-1)||(9n==-1)){C z.5m(1b.2G)}C z.5m(6N.21(9o+2,9n))},"2e-6M-9m":B(1b){A 6L=1b.2G;A 9l=6L.T("/*");A 9k=6L.31("*/");if((9l==-1)||(9k==-1)){1z.1K("kt en ks\'t 6M 9m!");C""}C z.5m(6L.21(9l+2,9k))},"kr":B(1b){C z.3u(1b.2G)},"kq":B(1b){if(z.1l&&!1b.el){z.1n(["ko","em","kn","km"],B(i){1u{A 1e=S 9j(kl[i]+".kk");1e.kj=U;1e.ki(1b.2G);C 1e}1y(e){}})}I{C 1b.el}}};(B(){z.e5=B(F,ej,ei,eh){A 2F={};2F.F=F;A 6J=L;if(F.3R){A 3R=z.1D(F.3R);A 9i=3R.kh("kg");2F.2E=F.2E||(9i?9i.1Z:L);6J=z.6K(3R)}I{2F.2E=F.2E}A 5l=[{}];if(6J){5l.Y(6J)}if(F.5g){5l.Y(F.5g)}if(F.ek){5l.Y({"z.ek":S 5d().8O()})}2F.1r=z.9h(z.1x.14(L,5l));2F.9d=F.9d||"9g";A d=S z.30(ej);d.5k(ei,B(eg){C eh(eg,d)});A ld=F.4E;if(ld&&z.1Y(ld)){d.ef(B(ee){C ld.2d(F,ee,2F)})}A 1G=F.9f;if(1G&&z.1Y(1G)){d.ed(B(e9){C 1G.2d(F,e9,2F)})}A 6I=F.kf;if(6I&&z.1Y(6I)){d.9e(B(e8){C 6I.2d(F,e8,2F)})}d.1F=2F;C d};A e4=B(O){O.e0=K;A 1b=O.1F.1b;if(V 1b.e7=="B"){1b.e7()}};A e3=B(O){C z.e6[O.1F.9d](O.1F.1b)};A e2=B(9c,O){1z.1K(9c);C 9c};A 3Q=B(F){A O=z.e5(F,e4,e3,e2);O.1F.1b=z.9b(O.1F.F);C O};A 5j=L;A 3t=[];A 94=B(){A dZ=(S 5d()).dU();if(!z.e1){z.1n(3t,B(4D,6H){if(!4D){C}A O=4D.O;1u{if(!O||O.e0||!4D.dT(O)){3t.3S(6H,1);C}if(4D.dR(O)){3t.3S(6H,1);4D.dP(O)}I{if(O.9a){if(O.9a+(O.1F.F.6G||0)<dZ){3t.3S(6H,1);A 1G=S 1O("6G ke");1G.dY="6G";O.5i(1G);O.4C()}}}}1y(e){1z.1K(e);O.5i(S 1O("kc!"))}})}if(!3t.G){dX(5j);5j=L;C}};z.dV=B(){1u{z.1n(3t,B(i){i.O.4C()})}1y(e){}};if(z.1l){z.dW(z.dV)}z.dH=B(O,dS,dQ,dO){if(O.1F.F.6G){O.9a=(S 5d()).dU()}3t.Y({O:O,dT:dS,dR:dQ,dP:dO});if(!5j){5j=dN(94,50)}94()};A dJ="8Z/x-kb-3R-ka";A dG=B(O){C O.1F.1b.6F};A dF=B(O){C 4==O.1F.1b.6F};A dE=B(O){if(z.8Y(O.1F.1b)){O.dM(O)}I{O.5i(S 1O("k9 k8 k7 5h:"+O.1F.1b.3N))}};A 3P=B(Z,O){A 3s=O.1F;A F=3s.F;3s.1b.dL(Z,3s.2E,(F.k6!==K),(F.8X?F.8X:1k),(F.8W?F.8W:1k));if(F.6E){R(A 5f in F.6E){if(5f.1M()==="5g-Z"&&!F.8V){F.8V=F.6E[5f]}I{3s.1b.dK(5f,F.6E[5f])}}}3s.1b.dK("k5-k4",(F.8V||dJ));1u{3s.1b.dI(3s.1r)}1y(e){O.4C()}z.dH(O,dG,dF,dE);C O};z.8T=B(4B){if(4B.1r.G){4B.2E+=(4B.2E.T("?")==-1?"?":"&")+4B.1r;4B.1r=L}};z.k3=B(F){A O=3Q(F);z.8T(O.1F);C 3P("dD",O)};z.k2=B(F){C 3P("dC",3Q(F))};z.k1=B(F){A O=3Q(F);O.1F.1r=F.k0;C 3P("dC",O)};z.jZ=B(F){C 3P("dA",3Q(F))};z.jY=B(F){A O=3Q(F);A dB=O.1F;if(F["8U"]){dB.1r=F.8U;F.8U=L}C 3P("dA",O)};z.jX=B(F){A O=3Q(F);z.8T(O.1F);C 3P("8S",O)};z.dz=B(jW){2m S 1O("z.dz 3O jV jU")}})()}if(!z.1h["z.X.fx"]){z.1h["z.X.fx"]=K;z.1Q("z.X.fx");z.dx=B(dy,1d){D.1w=dy;D.1d=1d;D.4x=B(n){C((D.1d-D.1w)*n)+D.1w}};z.2r("z.d6",L,{1P:B(F){z.1x(D,F);if(z.2l(D.2C)){D.2C=S z.dx(D.2C[0],D.2C[1])}},2C:L,8Q:jT,5a:L,4z:0,dj:10,du:L,6x:L,dt:L,8B:L,dh:L,ds:L,dr:L,dm:L,2D:U,2Z:U,4A:L,8N:L,3r:L,2o:0,4y:0,3q:B(H,F){if(D[H]){D[H].14(D,F||[])}C D},5b:B(dw,8R){if(8R){5e(D.3r);D.2D=D.2Z=U;D.2o=0}I{if(D.2D&&!D.2Z){C D}}D.3q("6x");A d=dw||D.du;if(d>0){5c(z.2p(D,B(){D.5b(L,8R)}),d);C D}D.4A=S 5d().8O();if(D.2Z){D.4A-=D.8Q*D.2o}D.8N=D.4A+D.8Q;D.2D=K;D.2Z=U;A 8P=D.2C.4x(D.2o);if(!D.2o){if(!D.4y){D.4y=D.4z}D.3q("dt",[8P])}D.3q("ds",[8P]);D.8M();C D},jS:B(){5e(D.3r);if(!D.2D){C D}D.2Z=K;D.3q("dr",[D.2C.4x(D.2o)]);C D},jR:B(dq,dp){5e(D.3r);D.2D=D.2Z=K;D.2o=dq*6D;if(dp){D.5b()}C D},jQ:B(dn){if(!D.3r){C}5e(D.3r);if(dn){D.2o=1}D.3q("dm",[D.2C.4x(D.2o)]);D.2D=D.2Z=U;C D},3N:B(){if(D.2D){C D.2Z?"3M":"jP"}C"jO"},8M:B(){5e(D.3r);if(D.2D){A dl=S 5d().8O();A 2q=(dl-D.4A)/(D.8N-D.4A);if(2q>=1){2q=1}D.2o=2q;if(D.5a){2q=D.5a(2q)}D.3q("8B",[D.2C.4x(2q)]);if(2q<1){D.3r=5c(z.2p(D,"8M"),D.dj)}I{D.2D=U;if(D.4z>0){D.4z--;D.5b(L,K)}I{if(D.4z==-1){D.5b(L,K)}I{if(D.4y){D.4z=D.4y;D.4y=0}}}D.2o=0;D.3q("dh")}}C D}});(B(){A df=B(E){if(z.1l){A ns=E.1c;if(!ns.8L.G&&z.1c(E,"8L")=="dg"){ns.8L="1"}if(!ns.3n.G&&z.1c(E,"3n")=="8K"){ns.3n="8K"}}};z.6C=B(F){if(V F.1d=="1k"){2m S 1O("z.6C jN an 1d 1Z")}F.E=z.1D(F.E);A 3p=z.1x({6w:{}},F);A 8J=(3p.6w.2W={});8J.1w=(V 3p.1w=="1k")?B(){C 2V(z.1c(3p.E,"2W"))}:3p.1w;8J.1d=3p.1d;A 2U=z.6y(3p);z.2c(2U,"6x",L,B(){df(3p.E)});C 2U};z.8I=B(F){C z.6C(z.1x({1d:1},F))};z.8H=B(F){C z.6C(z.1x({1d:0},F))};if(z.6B&&!z.3o){z.8E=B(n){C 2k("0.5")+((2Y.da((n+2k("1.5"))*2Y.d9))/2)}}I{z.8E=B(n){C 0.5+((2Y.da((n+1.5)*2Y.d9))/2)}}A d4=B(6A){D.8G=6A;R(A p in 6A){A 1a=6A[p];if(1a.1w 1N z.1J){1a.d7=S z.1J()}}D.4x=B(r){A J={};R(A p in D.8G){A 1a=D.8G[p];A 6z=L;if(1a.1w 1N z.1J){6z=z.d8(1a.1w,1a.1d,r,1a.d7).8F()}I{if(!z.2l(1a.1w)){6z=((1a.1d-1a.1w)*r)+1a.1w+(p!="2W"?1a.jM||"px":"")}}J[p]=6z}C J}};z.6y=B(F){F.E=z.1D(F.E);if(!F.5a){F.5a=z.8E}A 2U=S z.d6(F);z.2c(2U,"6x",2U,B(){A pm={};R(A p in D.6w){A 1a=pm[p]=z.1x({},D.6w[p]);if(z.1Y(1a.1w)){1a.1w=1a.1w()}if(z.1Y(1a.1d)){1a.1d=1a.1d()}A d5=(p.1M().T("jL")>=0);B 8C(E,p){4w(p){2X"58":C E.8D;2X"3n":C E.6v}A v=z.1c(E,p);C(p=="2W")?2V(v):2k(v)};if(V 1a.1d=="1k"){1a.1d=8C(D.E,p)}I{if(V 1a.1w=="1k"){1a.1w=8C(D.E,p)}}if(d5){1a.1w=S z.1J(1a.1w);1a.1d=S z.1J(1a.1d)}I{1a.1w=(p=="2W")?2V(1a.1w):2k(1a.1w)}}D.2C=S d4(pm)});z.2c(2U,"8B",2U,B(8A){R(A s in 8A){z.1c(D.E,s,8A[s])}});C 2U}})()}',62,1711,'|||||||||||||||||||||||||||||||||||dojo|var|function|return|this|node|args|length|evt|else|ret|true|null|obj|elem|dfd|arguments|arr|for|new|indexOf|false|typeof||_base|push|type||te|||apply|attr|||||prop|xhr|style|end|doc|match|uri|_hasResource|key|del|undefined|isIE|item|forEach|djConfig|name|document|query|while|_66|try|res|start|mixin|catch|console|split|root|prototype|byId|gcs|ioArgs|err|NodeList|_p|Color|debug|parentNode|toLowerCase|instanceof|Error|constructor|provide|isString|ta|255|val|_a|global|_69|isFunction|value||substring|join|map|tn||window||path|_343|_220|_listeners|connect|call|json|replace|left|_b|toString|128|parseFloat|isArray|throw||_percent|hitch|step|declare|charAt|nodeType|_3c3|nidx|slice|faux|fired|_c4|_7e|loc|curve|_active|url|_44c|responseText|str|_312|idx|tqp|isNaN|isOpera|_22d|callee|add|_18b|_f8|_e2|_41|anim|Number|opacity|case|Math|_paused|Deferred|lastIndexOf|||||||||shift|substr|string|_3e7|_3ce|break|_w|charCode|_listener|_d5|_c5|authority|_49|width|isSafari|_49e|fire|_timer|_47b|_465|eval|_in|_40c|_409|_362|_3d9|className|_3d5|_386|_37a|body|getComputedStyle|box|_221|keyCode|remove|_8d|_46|paused|status|not|_478|_461|form|splice|filter|concat|tret|childNodes|_38b|_367|_33d||||||||||_340|_348|keypress|appendChild|_toArray|Array|_2b0|_toPixelValue|ref|_fixEvent|_19f|_14c|_14a|_150|_141|declaredClass|_d4|_99|_Url|_83|scheme|_67|_3d|switch|getValue|_startRepeatCount|repeat|_startTime|_47e|cancel|tif|load|to|with|tf|getElementsByTagName|number|_34c|_342|extend|_1e3|_normalizeEventName|_14b|_14e|results|self|cbfn|_f9|_d8|_b2|src|_88|dav||baseUrl|fragment|_loadedModules|_44|_43|_loaders|mll|height||easing|play|setTimeout|Date|clearTimeout|hdr|content|code|errback|_464|addCallbacks|_450|fromJson|_413|_3fc|_3ee|max|_31e|cond|getAttribute|_3d4|obi|tagName|_360|_381|contains|firstChild|_368|_372|_320|place|_2fa|scrollTop|_299|scrollLeft|top|documentElement|_288|_287|_getBorderExtents|_23f|_23d|_239|_218|_216|_211|eles|target|keys|shiftKey|ctrlKey|event|192|iel|_1db|delete|_1cf||addEventListener|String|_1af|_157|array|_14d|continue|_14f|_137|_11f|_106|_findMethod|has|_delegate|_dc|_d3|loaded|_9a|_loadInit|_inFlightCount|getObject|tv|_4f|_postLoad|_2d|offsetWidth|properties|beforeBegin|animateProperty|_4ad|_4a6|isKhtml|_fade|100|headers|readyState|timeout|_469|_457|_44d|formToObject|_441|comment|_43d|_36f|_419|tp|_40a|_406|_407|_373|_403|_3e6|_31b|cbi|test|_3c7|nextSibling|last|_3a1|_38e|_365|_36b|ecn|_364|_363|_356|_35e|_35f|_34f|_34d|_349|trim|tci|_328|_32b|_31f|_31c|_anim|_300|_2ff|_2f5|_2e7|removeClass|addClass|func|_2c4|cls|_2a9|_2ae|_280|_27f|_getPadExtents|isMoz|none|_233|cssText|_214|_fixCallback|_synthesizeEvent|stopPropagation|preventDefault|_setKeyChar|_1e1|ieh|_1d7|_1be|colorFromArray|sanitize|bits|rgb|_156|_fire|_resback|_13d|partial|_13a|silentlyCancelled|_topics|_127|_f1|_f0|superclass|_ec|_e3|mct|setObject|_bf|_b3|object|require|_92|_khtmlTimer|location|XMLHTTP|locale|dua|_71|_modulePrefixes|_55|_loadModule|_51|_50|_4e|pop|_3f|_callLoaded|_unloaders|_loadNotifying|_loadedUrls|_27|_24|_1d|_5|_4b7|onAnimate|getStyle|offsetHeight|_defaultEasing|toCss|_properties|fadeOut|fadeIn|_49f|auto|zoom|_cycle|_endTime|valueOf|_494|duration|_492|DELETE|_ioAddQueryToUrl|putData|contentType|password|user|_isDocumentOk|application|||||_466||||||startTime|_xhrObj|_45f|handleAs|addBoth|error|text|objectToQuery|_44f|ActiveXObject|_443|_442|filtered|_43f|_43e|_437|file|tnl|_41c|_filterQueryResult|_zipIdx|_408|_402|evaluate|_3ed|_380|fHit|_361|_33b|_3da|_3ab|_3d6|RegExp|_327|_3cf|_3c9|child|innerHTML|first|tval|_391|class|pnc|_37e|_37c|_375|_366|_35c|_35a|_353|_33c|_336|_314|||_315|_oe|_307|_309|cloneNode|after|createElement||_2f8|_2ef|_2ee|unshift|coords|some|every||_2cb|script|_2c9|parent||a2p||_2c3|_2bd||abs|_getMarginBox|_2b3|_2a6|position|_2a7|_2ac|_2ab|_getIeDocumentElementOffset|getBoundingClientRect|ownerDocument|_2a3|clientWidth|_isBodyLtr|_fixIeBiDiScrollLeft|_bodyLtr|_29d|_getContentBox|_setBox|_getMarginExtents|_getPadBorderExtents|_usesBorderBox|boxModel|pcs|st|sl|_240|runtimeStyle|_dcm|BackCompat|compatMode|default|_21b|_d|html|_event_listener|handlers|PAGE_DOWN|PAGE_UP|RIGHT_ARROW|LEFT_ARROW|DOWN_ARROW|UP_ARROW|_preventDefault||_stopPropagation|returnValue||_trySetKeyCode|cancelBubble|currentTarget|106|_1ee|111||_1e8|_1e7|||se|srcElement|onkeydown||_1d0|_disconnect|lid|_1c0|_connect|_set|_195|_185|_183|_17d|_everyOrSome|_16b|_172|_15b|Function|_154|_escapeString|_140|chain|_check|canceller|_12d|_124|_11a|_10d|_107|inherited|_fa|_f2|_findMixin|_constructor|preamble|_de|clone|tmp|_c7|TMP|_be|_ba|_mixin|isBrowser|lang|firebug||param|modulePaths|_a7|_fireCallback|_a0|setContext||_9c|unloaded||||_96|_93|navigator|_90|_89||protocol|_84|_86|_XMLHTTP_PROGIDS|gears|google|setAttribute|_80|_77|cfg|_6f|_getModuleSymbols|_5a|_58|_53|_4d|_4c|_45|_40|_moduleHasPrefix|_loadUri|_28|_26|_21|_22|tests|doh|_20|_1f|_1c|version|_1b|_19|_getProp|_11|_4|_4a5|_4b3|_Animation|tempColor|blendColors|PI|sin|||||_49a|normal|onEnd||rate||curr|onStop|_497||_496|pct|onPause|onPlay|onBegin|delay||_491|_Line|_48b|wrapForm|PUT|_487|POST|GET|_476|_474|_472|_ioWatch|send|_471|setRequestHeader|open|callback|setInterval|_470|resHandle|_46f|ioCheck|_46e|validCheck|getTime|_ioCancelAll|addOnUnload|clearInterval|dojoType|now|canceled|_blockAsync|_45e|_45c|_459|_ioSetArgs|_contentHandlers|abort|_458|_456||||addErrback|_454|addCallback|_452|_44b|_44a|_449|preventCache|responseXML|Microsoft|JSON|usePlainJson|_431|toJson|_430|_42d|image|opt|ria|_421|_41b|_40b|_zip|_410|_40d|_357|sqf|_374|_3e5|_3df|_38f|clc|pred|parseInt|ntf|_3bf|_3bc|cnl|previousSibling|_3a9|_3a6|_39c|_399|_396|_392|__cachedIndex|__cachedLength|_376|iterateNext|_34a|_355|_354|_32c|_350|_34b|_33f|_33e|_33a|_338|_334|_332||_330|_32e||_322|_316|mousemove|mouseout|mouseover|_305|lastChild||_2f9||_2f2|_2f1|removeChild|_2ec|_2eb|_2ea|_2e6||_2e4|_2e2|_2d6|_2d5|_2d4|_2d3|_2d2|_2d1|_2cd|_2cc|scs|write|_2c8|hasClass|_2c0|_2bb|_2b5|_abs|_docScroll|offsetParent|offsetTop|offsetLeft|absolute|getBoxObjectFor|clientLeft|_setContentSize|_setMarginBox|_28d|_286|_285|_289|NaN|_281|border|_272|_26b|_260|_258|_253|_24c|_246|_23a|_getOpacity|_setOpacity|_238|td|tr|nodeName|FILTER|_22f|_22e|currentStyle|_22c|_22b|display|QuirksMode|unselectable|_217|isMozilla|getElementById|attributes|all|_ie_listener|_getIeDispatcher|_1fd|NUM_LOCK|SCROLL_LOCK|INSERT|END|HOME|PAUSE|F12|F11|F10|F9|F8|F7|F6|F5|F4|F3|F2|F1|63232|SHIFT_TAB|TAB|keyIdentifier|_1f3|stopEvent|_punctMap|222|219|186|onkeypress|_stealthKeyDown|_fixKeys|relatedTarget|_1e0|_1df|_stealthKeydown|_1d6|_1d5|_1d1|_1ca|_1c9|_1cb|_1c2|_1c1|_1c3|_1c4|_1bc|_1b3|_1b2|colorFromHex|colorFromRgb|named|colorFromString|mask|rgba|_19c|_197|_192|setColor|_180|_178|_177|_175|_174|_16d|_166|_164|_163|_162|_15c|_15d|_15e|index|__json__|toJsonIndentStr|_nextId|_12f|_12b|publish|_128|_126|_125|_122|_121|_123|_11c|_11b|_10c|_10b|_108|getDispatcher|argument|nom|_construct|_core|_makeCtor|_df|_db|deprecated|isObject|_cc||scope||_hitchArgs|_c2||pre|_c1|native|isDebug||registerModulePath|_a8||finally|||_a6|_a5|_a4|_a3|_a2|_a1|_9f|_9e|_9d|_9b|_98|_97|onbeforeunload|ipt|scr|complete|_95|userAgent|_modulesLoaded|initialized|_initFired|_8c|_8a|_getText|_87|ieForceActiveXXhr|Msxml2|isGears|_81|_gearsObject|googlegears|GearsFactory|isFF|_7d|Safari|_72|_name|_6c|ire|ore|_68|i18n|_5b|requireIf|_56|_52|loading|_4a|_loadPath|_47|_48|_global_omit_module_check|_getModulePrefix|_3c|_3a|_37|_30|Boolean|_loadUriAndCheck|_2e||cacheBust|_1e|_1a|_17|_16|_15|_14|_f|_10|_e|_9|_8|revision|flag|patch|minor|major|_6|color|units|needs|stopped|playing|stop|gotoPercent|pause|1000|implemented|yet|_48a|xhrDelete|rawXhrPut|xhrPut|postData|rawXhrPost|xhrPost|xhrGet|Type|Content|sync|response|http|bad|urlencoded|www|_watchInFlightError||exceeded|handle|action|getAttributeNode|loadXML|async|XMLDOM|prefixes|MSXML3|MSXML|MSXML2||xml|javascript|wasn|your|optional|message|off|turn|use|endpoints|issues|security|potential|avoid|mimetype|using|consider|please|decodeURIComponent|queryToObject|formToJson|formToQuery|encodeURIComponent|selected|option|multiple|checked|checkbox|radio|disabled|textarea|select|button|reset|submit|input|_3fb|hasAttribute|0n|even|odd|nth|_3b5|empty|_3b1|_3ad|htmlFor|_38a|under||exprssion|failure|ANY_TYPE|XPathResult|starts|keyup|keydown|mouseup|mousedown|blur|click|combine|span|addContent||adopt|orphan|_2de|_2dd|styles|_2da|_2d9|_2cf|_2ce|show|createPopup|toggleClass|scrollWidth|clientTop|ltr|direction|pageXOffset|pageYOffset|fixed|contentBox|marginBox|BUTTON|TABLE|_getBorderBox|clientHeight|visible|overflow|marginBottom|marginRight|marginTop|marginLeft|borderBottomWidth|borderBottomStyle|borderRightWidth|borderRightStyle|borderTopWidth|borderTopStyle|borderLeftWidth|borderLeftStyle|paddingBottom|paddingRight|paddingTop|paddingLeft|offset||min|padding||margin|Opacity|Alpha|alpha|filters|pixelLeft|medium|_22a|defaultView|before||insertBefore|KhtmlUserSelect|MozUserSelect|setSelectable|isDescendant|div|_destroyElement|BackgroundImageCache|execCommand|PageDown|PageUp|Right|Left|Down|Up|63289|63249|63248|PRINT_SCREEN|63302|63277|63276|63275|63273|63272|63250|63247|63246|63245|63244|63243|63242|63241|63240|63239|63238|63237|63236|63235|63234|63233|Enter|_1f9|which|_1f6|bubbledKeyCode|221|220||||191|190|189|188|187|toElement|fromElement|clientY|pageY||clientX|pageX|offsetY|||layerY|offsetX|layerX|parentWindow|_nop|_allow_leaks|145|144|126|F15|125|F14|124|F13|123|122|121|120|119|118|117|116|115|114|113|112|NUMPAD_DIVIDE|110|NUMPAD_PERIOD|109|NUMPAD_MINUS|108|NUMPAD_ENTER|107|NUMPAD_PLUS|NUMPAD_MULTIPLY|105|NUMPAD_9|104|NUMPAD_8|103|NUMPAD_7|102|NUMPAD_6|101|NUMPAD_5|NUMPAD_4||NUMPAD_3|NUMPAD_2|NUMPAD_1|NUMPAD_0||SELECT|RIGHT_WINDOW||LEFT_WINDOW||HELP|SPACE|ESCAPE|CAPS_LOCK|ALT|CTRL|SHIFT|ENTER|CLEAR|BACKSPACE|attachEvent|fixEvent|fromCharCode|keyChar|_1b9|removeEventListener|0x|round|toHex|toRgba|toRgb|aqua|teal|blue|navy|yellow|olive|lime|green|fuchsia|purple|red|maroon|white|gray|silver|black|boolean|called|already|Cancelled|connectPublisher|unsubscribe|subscribe|disconnect|_113|_112||_111|_110|||found|was||must|_|module|||required|likely|It|declaration|Mixin|separate|instead|property|initializer||pass|_c9|_bb|_b7|nfunction|isAlien|isFinite|isArrayLike|_firebug|withDoc|withGlobal|_writeIncludes|VML|behavior|addRule|createStyleSheet|vml|com|microsoft|schemas|urn|namespaces|onunload|onreadystatechange|defer|khtml|WebKit|DOMContentLoaded|enableMozDomContentLoaded|domcontentloaded|Unable|base|chrome|1223|304|300|200|available|XMLHttpRequest|_println|language|userLanguage|isQuirks|factory|mimeTypes|Factory|Gears|_7f|MSIE||Firefox|Gecko|Konqueror||Opera|appVersion|xd|browser|moduleUrl|port|host|hostenv|_requireLocalization|_5f|_5e|_5d|_5c|requireLocalization|requireAfterIf|_57|common|platformRequire|defined|symbol|_isXDomain|tried|Could|__package__|packageFileName|_42|useXDomain|flight|still|files|addOnLoad|failed|sourceURL|util|notice|without|change|subject|APIs|EXPERIMENTAL|experimental|removed|will|DEPRECATED|exists|10315|Rev|Mobile|Spidermonkey|Rhino||Browser|delayMozLoadingFix|preventBackButtonFix|libraryScriptUri|baseRelativePath|baseScriptUri|allowQueryConfig|warn|trace|timeEnd||time|profileEnd|profile|log|info|groupEnd|group|dirxml|dir|count|assert'.split('|'),0,{});
-
-
-/*
-
-Prototype 1.5 rc0
- - Adapted from Ruby on Rails - http://dev.rubyonrails.org/browser/spinoffs/prototype/src
- - By Lunarmedia, 06 August, 2006
- - Available at (and packed with) JavascriptCompressor.com
-
-Please note this version is missing the selector.js component of the full Prototype library.
-You can get the compressed version of selector at JavascriptCompressor.com
-
-*/
-
-var decompressedPrototype = function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[(function(e){return d[e]})];e=(function(){return'\\w+'});c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('d T={4l:\'1.5.8P\',3E:\'(?:<3G.*?>)((\\n|\\r|.)*?)(?:<\\/3G>)\',2v:7(){},K:7(x){c x}};d 1b={17:7(){c 7(){6.1I.2n(6,N)}}};d 1e=z q();q.u=7(5d,O){G(d 1G 2M O){5d[1G]=O[1G]}c 5d};q.1U=7(U){1j{f(U==1v)c\'1v\';f(U==1L)c\'1L\';c U.1U?U.1U():U.2C()}1s(e){f(e 8R 9l)c\'...\';25 e}};7j.v.1d=7(){d 43=6,23=$A(N),U=23.8S();c 7(){c 43.2n(U,23.3s($A(N)))}};7j.v.8U=7(U){d 43=6;c 7(C){c 43.8V(U,C||1W.C)}};q.u(8Q.v,{8W:7(){d 4Z=6.2C(16);f(6<16)c\'0\'+4Z;c 4Z},5j:7(){c 6+1},8Y:7(o){$R(0,6,11).V(o);c 6}});d 6s={6j:7(){d 48;G(d i=0;i<N.t;i++){d 6L=N[i];1j{48=6L();1y}1s(e){}}c 48}};d 6Q=1b.17();6Q.v={1I:7(1a,1J){6.1a=1a;6.1J=1J;6.41=Y;6.2A()},2A:7(){5Z(6.2D.1d(6),6.1J*4z)},2D:7(){f(!6.41){1j{6.41=11;6.1a()}8Z{6.41=Y}}}};q.u(4b.v,{2T:7(1A,1z){d L=\'\',O=6,I;1z=N.90.52(1z);1H(O.t>0){f(I=O.I(1A)){L+=O.47(0,I.w);L+=(1z(I)||\'\').2C();O=O.47(I.w+I[0].t)}1D{L+=O,O=\'\'}}c L},92:7(1A,1z,3i){1z=6.2T.52(1z);3i=3i===1v?1:3i;c 6.2T(1A,7(I){f(--3i<0)c I[0];c 1z(I)})},93:7(1A,o){6.2T(1A,o);c 6},94:7(t,2S){t=t||30;2S=2S===1v?\'...\':2S;c 6.t>t?6.47(0,t-2S.t)+2S:6},9F:7(){c 6.2y(/^\\s+/,\'\').2y(/\\s+$/,\'\')},71:7(){c 6.2y(/<\\/?[^>]+>/7Y,\'\')},2Q:7(){c 6.2y(z 3O(T.3E,\'5P\'),\'\')},70:7(){d 6Y=z 3O(T.3E,\'5P\');d 5p=z 3O(T.3E,\'98\');c(6.I(6Y)||[]).1C(7(5o){c(5o.I(5p)||[\'\',\'\'])[1]})},3q:7(){c 6.70().1C(7(3G){c 4q(3G)})},9E:7(){d 1q=J.4Y(\'1q\');d 1Y=J.9D(6);1q.75(1Y);c 1q.3h},9c:7(){d 1q=J.4Y(\'1q\');1q.3h=6.71();c 1q.2z[0]?1q.2z[0].6q:\'\'},78:7(){d 7i=6.I(/^\\??(.*)$/)[1].3j(\'&\');c 7i.36({},7(5b,72){d 1i=72.3j(\'=\');5b[1i[0]]=1i[1];c 5b})},1Z:7(){c 6.3j(\'\')},3P:7(){d 2l=6.3j(\'-\');f(2l.t==1)c 2l[0];d 54=6.5g(\'-\')==0?2l[0].7e(0).3Y()+2l[0].7g(1):2l[0];G(d i=1,73=2l.t;i<73;i++){d s=2l[i];54+=s.7e(0).3Y()+s.7g(1)}c 54},1U:7(){c"\'"+6.2y(/\\\\/g,\'\\\\\\\\\').2y(/\'/g,\'\\\\\\\'\')+"\'"}});4b.v.2T.52=7(1z){f(2i 1z==\'7\')c 1z;d 2U=z 3n(1z);c 7(I){c 2U.7a(I)}};4b.v.9h=4b.v.78;d 3n=1b.17();3n.79=/(^|.|\\r|\\n)(#\\{(.*?)\\})/;3n.v={1I:7(2U,1A){6.2U=2U.2C();6.1A=1A||3n.79},7a:7(U){c 6.2U.2T(6.1A,7(I){d 53=I[1];f(53==\'\\\\\')c I[2];c 53+(U[I[3]]||\'\').2C()})}};d $1y=z q();d $49=z q();d 1p={V:7(o){d w=0;1j{6.2m(7(h){1j{o(h,w++)}1s(e){f(e!=$49)25 e}})}1s(e){f(e!=$1y)25 e}},9n:7(o){d L=11;6.V(7(h,w){L=L&&!!(o||T.K)(h,w);f(!L)25 $1y});c L},9o:7(o){d L=11;6.V(7(h,w){f(L=!!(o||T.K)(h,w))25 $1y});c L},3e:7(o){d P=[];6.V(7(h,w){P.W(o(h,w))});c P},7n:7(o){d L;6.V(7(h,w){f(o(h,w)){L=h;25 $1y}});c L},7o:7(o){d P=[];6.V(7(h,w){f(o(h,w))P.W(h)});c P},9p:7(1A,o){d P=[];6.V(7(h,w){d 7c=h.2C();f(7c.I(1A))P.W((o||T.K)(h,w))});c P},1M:7(U){d 51=Y;6.V(7(h){f(h==U){51=11;25 $1y}});c 51},36:7(45,o){6.V(7(h,w){45=o(45,h,w)});c 45},9q:7(1F){d 23=$A(N).47(1);c 6.3e(7(h){c h[1F].2n(h,23)})},9s:7(o){d L;6.V(7(h,w){h=(o||T.K)(h,w);f(L==1v||h>=L)L=h});c L},9u:7(o){d L;6.V(7(h,w){h=(o||T.K)(h,w);f(L==1v||h<L)L=h});c L},9v:7(o){d 50=[],58=[];6.V(7(h,w){((o||T.K)(h,w)?50:58).W(h)});c[50,58]},3r:7(1G){d P=[];6.V(7(h,w){P.W(h[1G])});c P},9x:7(o){d P=[];6.V(7(h,w){f(!o(h,w))P.W(h)});c P},9y:7(o){c 6.3e(7(h,w){c{h:h,59:o(h,w)}}).9z(7(18,3U){d a=18.59,b=3U.59;c a<b?-1:a>b?1:0}).3r(\'h\')},1Z:7(){c 6.3e(T.K)},9B:7(){d o=T.K,23=$A(N);f(2i 23.5e()==\'7\')o=23.9C();d 7l=[6].3s(23).1C($A);c 6.1C(7(h,w){c o(7l.3r(w))})},1U:7(){c\'#<1p:\'+6.1Z().1U()+\'>\'}};q.u(1p,{1C:1p.3e,5v:1p.7n,1k:1p.7o,8M:1p.1M,7p:1p.1Z});d $A=1E.7q=7(2R){f(!2R)c[];f(2R.1Z){c 2R.1Z()}1D{d P=[];G(d i=0;i<2R.t;i++)P.W(2R[i]);c P}};q.u(1E.v,1p);f(!1E.v.4d)1E.v.4d=1E.v.4m;q.u(1E.v,{2m:7(o){G(d i=0;i<6.t;i++)o(6[i])},5i:7(){6.t=0;c 6},7r:7(){c 6[0]},5e:7(){c 6[6.t-1]},7s:7(){c 6.1k(7(h){c h!=1v||h!=1L})},6J:7(){c 6.36([],7(6H,h){c 6H.3s(h&&h.5D==1E?h.6J():[h])})},5s:7(){d 4N=$A(N);c 6.1k(7(h){c!4N.1M(h)})},5g:7(U){G(d i=0;i<6.t;i++)f(6[i]==U)c i;c-1},4m:7(5h){c(5h!==Y?6:6.1Z()).4d()},1U:7(){c\'[\'+6.1C(q.1U).1N(\', \')+\']\'}});d 4h={2m:7(o){G(d 1O 2M 6){d h=6[1O];f(2i h==\'7\')49;d 1i=[1O,h];1i.1O=1O;1i.h=h;o(1i)}},7t:7(){c 6.3r(\'1O\')},4N:7(){c 6.3r(\'h\')},7u:7(2N){c $H(2N).36($H(6),7(4Q,1i){4Q[1i.1O]=1i.h;c 4Q})},7w:7(){c 6.1C(7(1i){c 1i.1C(4n).1N(\'=\')}).1N(\'&\')},1U:7(){c\'#<4h:{\'+6.1C(7(1i){c 1i.1C(q.1U).1N(\': \')}).1N(\', \')+\'}>\'}};7 $H(U){d 2N=q.u({},U||{});q.u(2N,1p);q.u(2N,4h);c 2N};3L=1b.17();q.u(3L.v,1p);q.u(3L.v,{1I:7(22,2x,2H){6.22=22;6.2x=2x;6.2H=2H},2m:7(o){d h=6.22;2q{o(h);h=h.5j()}1H(6.1M(h))},1M:7(h){f(h<6.22)c Y;f(6.2H)c h<6.2x;c h<=6.2x}});d $R=7(22,2x,2H){c z 3L(22,2x,2H)};d M={4w:7(){c 6s.6j(7(){c z 5C()},7(){c z 5n(\'7y.6d\')},7(){c z 5n(\'7z.6d\')})||Y},4s:0};M.2W={3b:[],2m:7(o){6.3b.2m(o)},69:7(4F){f(!6.1M(4F))6.3b.W(4F)},7A:7(5t){6.3b=6.3b.5s(5t)},3y:7(1a,26,E,2Z){6.V(7(3o){f(3o[1a]&&2i 3o[1a]==\'7\'){1j{3o[1a].2n(3o,[26,E,2Z])}1s(e){}}})}};q.u(M.2W,1p);M.2W.69({5G:7(){M.4s++},1B:7(){M.4s--}});M.44=7(){};M.44.v={4a:7(m){6.m={1F:\'4j\',4p:11,5H:\'5E/x-86-Q-7C\',28:\'\'};q.u(6.m,m||{})},3l:7(){c 6.E.32==1v||6.E.32==0||(6.E.32>=84&&6.E.32<7E)},7G:7(){c!6.3l()}};M.3t=1b.17();M.3t.5L=[\'7H\',\'80\',\'7I\',\'7J\',\'4t\'];M.3t.v=q.u(z M.44(),{1I:7(1l,m){6.E=M.4w();6.4a(m);6.26(1l)},26:7(1l){d 28=6.m.28||\'\';f(28.t>0)28+=\'&7K=\';1j{6.1l=1l;f(6.m.1F==\'7L\'&&28.t>0)6.1l+=(6.1l.I(/\\?/)?\'&\':\'?\')+28;M.2W.3y(\'5G\',6,6.E);6.E.7N(6.m.1F,6.1l,6.m.4p);f(6.m.4p){6.E.5T=6.5J.1d(6);2Y((7(){6.4r(1)}).1d(6),10)}6.5A();d 1c=6.m.5V?6.m.5V:28;6.E.7O(6.m.1F==\'4j\'?1c:1L)}1s(e){6.3p(e)}},5A:7(){d 1P=[\'X-7P-7Q\',\'5C\',\'X-T-4l\',T.4l,\'7R\',\'1Y/7m, 1Y/2e, 5E/5F, 1Y/5F, */*\'];f(6.m.1F==\'4j\'){1P.W(\'5Q-2g\',6.m.5H);f(6.E.7S)1P.W(\'7T\',\'7U\')}f(6.m.1P)1P.W.2n(1P,6.m.1P);G(d i=0;i<1P.t;i+=2)6.E.7V(1P[i],1P[i+1])},5J:7(){d 2F=6.E.2F;f(2F!=1)6.4r(6.E.2F)},4A:7(B){1j{c 6.E.7W(B)}1s(e){}},5M:7(){1j{c 4q(\'(\'+6.4A(\'X-7X\')+\')\')}1s(e){}},5R:7(){1j{c 4q(6.E.3F)}1s(e){6.3p(e)}},4r:7(2F){d C=M.3t.5L[2F];d E=6.E,2Z=6.5M();f(C==\'4t\'){1j{(6.m[\'2I\'+6.E.32]||6.m[\'2I\'+(6.3l()?\'81\':\'82\')]||T.2v)(E,2Z)}1s(e){6.3p(e)}f((6.4A(\'5Q-2g\')||\'\').I(/^1Y\\/7m/i))6.5R()}1j{(6.m[\'2I\'+C]||T.2v)(E,2Z);M.2W.3y(\'2I\'+C,6,E,2Z)}1s(e){6.3p(e)}f(C==\'4t\')6.E.5T=T.2v},3p:7(57){(6.m.5W||T.2v)(6,57);M.2W.3y(\'5W\',6,57)}});M.4C=1b.17();q.u(q.u(M.4C.v,M.3t.v),{1I:7(1w,1l,m){6.4x={3m:1w.3m?$(1w.3m):$(1w),3z:1w.3z?$(1w.3z):(1w.3m?1L:$(1w))};6.E=M.4w();6.4a(m);d 1B=6.m.1B||T.2v;6.m.1B=(7(E,U){6.5Y();1B(E,U)}).1d(6);6.26(1l)},5Y:7(){d 3A=6.3l()?6.4x.3m:6.4x.3z;d 3k=6.E.3F;f(!6.m.3q)3k=3k.2Q();f(3A){f(6.m.60){z 6.m.60(3A,3k)}1D{k.6h(3A,3k)}}f(6.3l()){f(6.1B)2Y(6.1B.1d(6),10)}}});M.61=1b.17();M.61.v=q.u(z M.44(),{1I:7(1w,1l,m){6.4a(m);6.1B=6.m.1B;6.1J=(6.m.1J||2);6.2s=(6.m.2s||1);6.4B={};6.1w=1w;6.1l=1l;6.22()},22:7(){6.m.1B=6.63.1d(6);6.2D()},7b:7(){6.4B.1B=1v;89(6.65);(6.1B||T.2v).2n(6,N)},63:7(26){f(6.m.2s){6.2s=(26.3F==6.64?6.2s*6.m.2s:1);6.64=26.3F}6.65=2Y(6.2D.1d(6),6.2s*6.1J*4z)},2D:7(){6.4B=z M.4C(6.1w,6.1l,6.m)}});7 $(){d P=[],4;G(d i=0;i<N.t;i++){4=N[i];f(2i 4==\'8c\')4=J.8d(4);P.W(k.u(4))}c P.t<2?P[0]:P};J.8f=7(1f,6a){d 6b=($(6a)||J.1c).4D(\'*\');c $A(6b).36([],7(12,4E){f(4E.1f.I(z 3O("(^|\\\\s)"+1f+"(\\\\s|$)")))12.W(k.u(4E));c 12})};f(!1W.k)d k=z q();k.u=7(4){f(!4)c;f(4X)c 4;f(!4.6e&&4.1h&&4!=1W){d 2a=k.3d,2r=k.u.2r;G(d 1G 2M 2a){d h=2a[1G];f(2i h==\'7\')4[1G]=2r.4W(h)}}4.6e=11;c 4};k.u.2r={4W:7(h){c 6[h]=6[h]||7(){c h.2n(1L,[6].3s($A(N)))}}};k.3d={4U:7(4){c $(4).l.2B!=\'3Q\'},6N:7(){G(d i=0;i<N.t;i++){d 4=$(N[i]);k[k.4U(4)?\'6f\':\'6w\'](4)}},6f:7(){G(d i=0;i<N.t;i++){d 4=$(N[i]);4.l.2B=\'3Q\'}},6w:7(){G(d i=0;i<N.t;i++){d 4=$(N[i]);4.l.2B=\'\'}},42:7(4){4=$(4);4.1X.8h(4)},6h:7(4,2e){$(4).3h=2e.2Q();2Y(7(){2e.3q()},10)},2y:7(4,2e){4=$(4);f(4.6k){4.6k=2e.2Q()}1D{d 1K=4.6R.6S();1K.56(4);4.1X.8i(1K.6T(2e.2Q()),4)}2Y(7(){2e.3q()},10)},8k:7(4){4=$(4);c 4.2k},3K:7(4){c z k.3S(4)},8l:7(4,1f){f(!(4=$(4)))c;c k.3K(4).1M(1f)},8m:7(4,1f){f(!(4=$(4)))c;c k.3K(4).7k(1f)},8n:7(4,1f){f(!(4=$(4)))c;c k.3K(4).42(1f)},8p:7(4){4=$(4);G(d i=0;i<4.2z.t;i++){d 3M=4.2z[i];f(3M.8q==3&&!/\\S/.4v(3M.6q))k.42(3M)}},8r:7(4){c $(4).3h.I(/^\\s*$/)},8s:7(4,3I){4=$(4),3I=$(3I);1H(4=4.1X)f(4==3I)c 11;c Y},6t:7(4){4=$(4);d x=4.x?4.x:4.2f,y=4.y?4.y:4.29;1W.6t(x,y)},1R:7(4,l){4=$(4);d h=4.l[l.3P()];f(!h){f(J.4J&&J.4J.6v){d 4L=J.4J.6v(4,1L);h=4L?4L.8v(l):1L}1D f(4.6x){h=4.6x[l.3P()]}}f(1W.6E&&[\'18\',\'1n\',\'3U\',\'6G\'].1M(l))f(k.1R(4,\'14\')==\'4G\')h=\'6y\';c h==\'6y\'?1L:h},8x:7(4,l){4=$(4);G(d B 2M l)4.l[B.3P()]=l[B]},8y:7(4){4=$(4);f(k.1R(4,\'2B\')!=\'3Q\')c{21:4.2p,24:4.2k};d 20=4.l;d 6B=20.4O;d 6A=20.14;20.4O=\'31\';20.14=\'2o\';20.2B=\'\';d 6C=4.6m;d 6D=4.6p;20.2B=\'3Q\';20.14=6A;20.4O=6B;c{21:6C,24:6D}},8z:7(4){4=$(4);d 4R=k.1R(4,\'14\');f(4R==\'4G\'||!4R){4.4T=11;4.l.14=\'3T\';f(1W.6E){4.l.1n=0;4.l.18=0}}},8A:7(4){4=$(4);f(4.4T){4.4T=1v;4.l.14=4.l.1n=4.l.18=4.l.6G=4.l.3U=\'\'}},8B:7(4){4=$(4);f(4.3c)c;4.3c=4.l.3V;f((k.1R(4,\'3V\')||\'4U\')!=\'31\')4.l.3V=\'31\'},8D:7(4){4=$(4);f(4.3c)c;4.l.3V=4.3c;4.3c=1v}};q.u(k,k.3d);d 4X=Y;f(!3W&&/3x|3w|3u/.4v(33.62)){d 3W={}};k.6K=7(2a){q.u(k.3d,2a||{});f(2i 3W!=\'1v\'){d 2a=k.3d,2r=k.u.2r;G(d 1G 2M 2a){d h=2a[1G];f(2i h==\'7\')3W.v[1G]=2r.4W(h)}4X=11}};k.6K();d 6M=z q();6M.2B=k.6N;1e.1g=7(3f){6.3f=3f};1e.1g.v={1I:7(4,2t){6.4=$(4);6.2t=2t.2Q();f(6.3f&&6.4.6O){1j{6.4.6O(6.3f,6.2t)}1s(e){d 1h=6.4.1h.2w();f(1h==\'4V\'||1h==\'8N\'){6.2X(6.6U())}1D{25 e}}}1D{6.1K=6.4.6R.6S();f(6.2V)6.2V();6.2X([6.1K.6T(6.2t)])}2Y(7(){2t.3q()},10)},6U:7(){d 1q=J.4Y(\'1q\');1q.3h=\'<6V><4V>\'+6.2t+\'</4V></6V>\';c $A(1q.2z[0].2z[0].2z)}};d 1g=z q();1g.6W=1b.17();1g.6W.v=q.u(z 1e.1g(\'96\'),{2V:7(){6.1K.97(6.4)},2X:7(2h){2h.V((7(2j){6.4.1X.55(2j,6.4)}).1d(6))}});1g.5m=1b.17();1g.5m.v=q.u(z 1e.1g(\'99\'),{2V:7(){6.1K.56(6.4);6.1K.74(11)},2X:7(2h){2h.4m(Y).V((7(2j){6.4.55(2j,6.4.9a)}).1d(6))}});1g.7h=1b.17();1g.7h.v=q.u(z 1e.1g(\'9d\'),{2V:7(){6.1K.56(6.4);6.1K.74(6.4)},2X:7(2h){2h.V((7(2j){6.4.75(2j)}).1d(6))}});1g.76=1b.17();1g.76.v=q.u(z 1e.1g(\'9i\'),{2V:7(){6.1K.9m(6.4)},2X:7(2h){2h.V((7(2j){6.4.1X.55(2j,6.4.9t)}).1d(6))}});k.3S=1b.17();k.3S.v={1I:7(4){6.4=$(4)},2m:7(o){6.4.1f.3j(/\\s+/).1k(7(B){c B.t>0}).2m(o)},5c:7(1f){6.4.1f=1f},7k:7(5a){f(6.1M(5a))c;6.5c(6.1Z().3s(5a).1N(\' \'))},42:7(4c){f(!6.1M(4c))c;6.5c(6.1k(7(1f){c 1f!=4c}).1N(\' \'))},2C:7(){c 6.1Z().1N(\' \')}};q.u(k.3S.v,1p);d 5I={5i:7(){G(d i=0;i<N.t;i++)$(N[i]).h=\'\'},4f:7(4){$(4).4f()},7v:7(){G(d i=0;i<N.t;i++)f($(N[i]).h==\'\')c Y;c 11},1k:7(4){$(4).1k()},5y:7(4){4=$(4);4.4f();f(4.1k)4.1k()}};d D={3a:7(Q){d 12=D.2L($(Q));d 4I=z 1E();G(d i=0;i<12.t;i++){d 4g=D.k.3a(12[i]);f(4g)4I.W(4g)}c 4I.1N(\'&\')},2L:7(Q){Q=$(Q);d 12=z 1E();G(d 1h 2M D.k.2E){d 4H=Q.4D(1h);G(d j=0;j<4H.t;j++)12.W(4H[j])}c 12},7x:7(Q,3N,B){Q=$(Q);d 3H=Q.4D(\'2u\');f(!3N&&!B)c 3H;d 4y=z 1E();G(d i=0;i<3H.t;i++){d 2u=3H[i];f((3N&&2u.2g!=3N)||(B&&2u.B!=B))49;4y.W(2u)}c 4y},7B:7(Q){d 12=D.2L(Q);G(d i=0;i<12.t;i++){d 4=12[i];4.7D();4.4o=\'11\'}},7F:7(Q){d 12=D.2L(Q);G(d i=0;i<12.t;i++){d 4=12[i];4.4o=\'\'}},5z:7(Q){c D.2L(Q).5v(7(4){c 4.2g!=\'31\'&&!4.4o&&[\'2u\',\'1k\',\'3J\'].1M(4.1h.2w())})},7M:7(Q){5I.5y(D.5z(Q))},5w:7(Q){$(Q).5w()}};D.k={3a:7(4){4=$(4);d 1F=4.1h.2w();d 1S=D.k.2E[1F](4);f(1S){d 1O=4n(1S[0]);f(1O.t==0)c;f(1S[1].5D!=1E)1S[1]=[1S[1]];c 1S[1].1C(7(h){c 1O+\'=\'+4n(h)}).1N(\'&\')}},1x:7(4){4=$(4);d 1F=4.1h.2w();d 1S=D.k.2E[1F](4);f(1S)c 1S[1]}};D.k.2E={2u:7(4){6c(4.2g.2w()){1r\'7Z\':1r\'31\':1r\'6l\':1r\'1Y\':c D.k.2E.3J(4);1r\'6g\':1r\'6i\':c D.k.2E.5O(4)}c Y},5O:7(4){f(4.83)c[4.B,4.h]},3J:7(4){c[4.B,4.h]},1k:7(4){c D.k.2E[4.2g==\'1k-6n\'?\'5S\':\'5X\'](4)},5S:7(4){d h=\'\',2b,w=4.85;f(w>=0){2b=4.m[w];h=2b.h||2b.1Y}c[4.B,h]},5X:7(4){d h=[];G(d i=0;i<4.t;i++){d 2b=4.m[i];f(2b.87)h.W(2b.h||2b.1Y)}c[4.B,h]}};d $F=D.k.1x;1e.3D=7(){};1e.3D.v={1I:7(4,1J,1a){6.1J=1J;6.4=$(4);6.1a=1a;6.2K=6.1x();6.2A()},2A:7(){5Z(6.2D.1d(6),6.1J*4z)},2D:7(){d h=6.1x();f(6.2K!=h){6.1a(6.4,h);6.2K=h}}};D.k.3C=1b.17();D.k.3C.v=q.u(z 1e.3D(),{1x:7(){c D.k.1x(6.4)}});D.3C=1b.17();D.3C.v=q.u(z 1e.3D(),{1x:7(){c D.3a(6.4)}});1e.2c=7(){};1e.2c.v={1I:7(4,1a){6.4=$(4);6.1a=1a;6.2K=6.1x();f(6.4.1h.2w()==\'Q\')6.67();1D 6.2A(6.4)},4K:7(){d h=6.1x();f(6.2K!=h){6.1a(6.4,h);6.2K=h}},67:7(){d 12=D.2L(6.4);G(d i=0;i<12.t;i++)6.2A(12[i])},2A:7(4){f(4.2g){6c(4.2g.2w()){1r\'6g\':1r\'6i\':1o.3B(4,\'8j\',6.4K.1d(6));1y;1r\'6l\':1r\'1Y\':1r\'3J\':1r\'1k-6n\':1r\'1k-8t\':1o.3B(4,\'8u\',6.4K.1d(6));1y}}}};D.k.2c=1b.17();D.k.2c.v=q.u(z 1e.2c(),{1x:7(){c D.k.1x(6.4)}});D.2c=1b.17();D.2c.v=q.u(z 1e.2c(),{1x:7(){c D.3a(6.4)}});f(!1W.1o){d 1o=z q()}q.u(1o,{8C:8,8F:9,8H:13,8I:27,8J:37,8L:38,8O:39,8T:40,8X:46,4:7(C){c C.Z||C.91},95:7(C){c(((C.6X)&&(C.6X==1))||((C.6Z)&&(C.6Z==1)))},9b:7(C){c C.9e||(C.9f+(J.3R.2G||J.1c.2G))},9g:7(C){c C.9j||(C.9k+(J.3R.2O||J.1c.2O))},7b:7(C){f(C.7d){C.7d();C.9r()}1D{C.48=Y;C.9w=11}},9A:7(C,1h){d 4=1o.4(C);1H(4.1X&&(!4.1h||(4.1h.3Y()!=1h.3Y())))4=4.1X;c 4},1T:Y,5u:7(4,B,1V,1u){f(!6.1T)6.1T=[];f(4.5f){6.1T.W([4,B,1V,1u]);4.5f(B,1V,1u)}1D f(4.4i){6.1T.W([4,B,1V,1u]);4.4i(\'2I\'+B,1V)}},66:7(){f(!1o.1T)c;G(d i=0;i<1o.1T.t;i++){1o.5N.2n(6,1o.1T[i]);1o.1T[i][0]=1L}1o.1T=Y},3B:7(4,B,1V,1u){d 4=$(4);1u=1u||Y;f(B==\'5U\'&&(33.4u.I(/3x|3w|3u/)||4.4i))B=\'5K\';6.5u(4,B,1V,1u)},5N:7(4,B,1V,1u){d 4=$(4);1u=1u||Y;f(B==\'5U\'&&(33.4u.I(/3x|3w|3u/)||4.4k))B=\'5K\';f(4.5x){4.5x(B,1V,1u)}1D f(4.4k){1j{4.4k(\'2I\'+B,1V)}1s(e){}}}});f(33.4u.I(/\\88\\b/))1o.3B(1W,\'8a\',1o.66,Y);d 2d={6o:Y,4P:7(){6.6z=1W.8e||J.3R.2G||J.1c.2G||0;6.6F=1W.8g||J.3R.2O||J.1c.2O||0},6u:7(4){d 19=0,15=0;2q{19+=4.2O||0;15+=4.2G||0;4=4.1X}1H(4);c[15,19]},35:7(4){d 19=0,15=0;2q{19+=4.29||0;15+=4.2f||0;4=4.1Q}1H(4);c[15,19]},68:7(4){d 19=0,15=0;2q{19+=4.29||0;15+=4.2f||0;4=4.1Q;f(4){p=k.1R(4,\'14\');f(p==\'3T\'||p==\'2o\')1y}}1H(4);c[15,19]},1Q:7(4){f(4.1Q)c 4.1Q;f(4==J.1c)c 4;1H((4=4.1X)&&4!=J.1c)f(k.1R(4,\'14\')!=\'4G\')c 4;c J.1c},8o:7(4,x,y){f(6.6o)c 6.6r(4,x,y);6.3g=x;6.34=y;6.1t=6.35(4);c(y>=6.1t[1]&&y<6.1t[1]+4.2k&&x>=6.1t[0]&&x<6.1t[0]+4.2p)},6r:7(4,x,y){d 4S=6.6u(4);6.3g=x+4S[0]-6.6z;6.34=y+4S[1]-6.6F;6.1t=6.35(4);c(6.34>=6.1t[1]&&6.34<6.1t[1]+4.2k&&6.3g>=6.1t[0]&&6.3g<6.1t[0]+4.2p)},8E:7(3Z,4){f(!3Z)c 0;f(3Z==\'8G\')c((6.1t[1]+4.2k)-6.34)/4.2k;f(3Z==\'8K\')c((6.1t[0]+4.2p)-6.3g)/4.2p},77:7(O,Z){O=$(O);Z=$(Z);Z.l.14=\'2o\';d 2P=6.35(O);Z.l.1n=2P[1]+\'1m\';Z.l.18=2P[0]+\'1m\';Z.l.21=O.2p+\'1m\';Z.l.24=O.2k+\'1m\'},4e:7(4M){d 19=0,15=0;d 4=4M;2q{19+=4.29||0;15+=4.2f||0;f(4.1Q==J.1c)f(k.1R(4,\'14\')==\'2o\')1y}1H(4=4.1Q);4=4M;2q{19-=4.2O||0;15-=4.2G||0}1H(4=4.1X);c[15,19]},77:7(O,Z){d m=q.u({5l:11,5r:11,5B:11,5q:11,29:0,2f:0},N[2]||{});O=$(O);d p=2d.4e(O);Z=$(Z);d 2J=[0,0];d 3v=1L;f(k.1R(Z,\'14\')==\'2o\'){3v=2d.1Q(Z);2J=2d.4e(3v)}f(3v==J.1c){2J[0]-=J.1c.2f;2J[1]-=J.1c.29}f(m.5l)Z.l.18=(p[0]-2J[0]+m.2f)+\'1m\';f(m.5r)Z.l.1n=(p[1]-2J[1]+m.29)+\'1m\';f(m.5B)Z.l.21=O.2p+\'1m\';f(m.5q)Z.l.24=O.2k+\'1m\'},8b:7(4){4=$(4);f(4.l.14==\'2o\')c;2d.4P();d 2P=2d.68(4);d 1n=2P[1];d 18=2P[0];d 21=4.6m;d 24=4.6p;4.6P=18-3X(4.l.18||0);4.6I=1n-3X(4.l.1n||0);4.5k=4.l.21;4.7f=4.l.24;4.l.14=\'2o\';4.l.1n=1n+\'1m\';4.l.18=18+\'1m\';4.l.21=21+\'1m\';4.l.24=24+\'1m\'},8w:7(4){4=$(4);f(4.l.14==\'3T\')c;2d.4P();4.l.14=\'3T\';d 1n=3X(4.l.1n||0)-(4.6I||0);d 18=3X(4.l.18||0)-(4.6P||0);4.l.1n=1n+\'1m\';4.l.18=18+\'1m\';4.l.24=4.7f;4.l.21=4.5k}};f(/3x|3w|3u/.4v(33.62)){2d.35=7(4){d 19=0,15=0;2q{19+=4.29||0;15+=4.2f||0;f(4.1Q==J.1c)f(k.1R(4,\'14\')==\'2o\')1y;4=4.1Q}1H(4);c[15,19]}};',62,600,'||||element||this|function|||||return|var||if||value|||Element|style|options||iterator||Object|||length|extend|prototype|index|||new||name|event|Form|transport||for||match|document||result|Ajax|arguments|source|results|form|||Prototype|object|each|push||false|target||true|elements||position|valueL||create|left|valueT|callback|Class|body|bind|Abstract|className|Insertion|tagName|pair|try|select|url|px|top|Event|Enumerable|div|case|catch|offset|useCapture|undefined|container|getValue|break|replacement|pattern|onComplete|map|else|Array|method|property|while|initialize|frequency|range|null|include|join|key|requestHeaders|offsetParent|getStyle|parameter|observers|inspect|observer|window|parentNode|text|toArray|els|width|start|args|height|throw|request||parameters|offsetTop|methods|opt|EventObserver|Position|html|offsetLeft|type|fragments|typeof|fragment|offsetHeight|oStringList|_each|apply|absolute|offsetWidth|do|cache|decay|content|input|emptyFunction|toLowerCase|end|replace|childNodes|registerCallback|display|toString|onTimerEvent|Serializers|readyState|scrollLeft|exclusive|on|delta|lastValue|getElements|in|hash|scrollTop|offsets|stripScripts|iterable|truncation|gsub|template|initializeRange|Responders|insertContent|setTimeout|json||hidden|status|navigator|ycomp|cumulativeOffset|inject||||serialize|responders|_overflow|Methods|collect|adjacency|xcomp|innerHTML|count|split|response|responseIsSuccess|success|Template|responder|dispatchException|evalScripts|pluck|concat|Request|KHTML|parent|Safari|Konqueror|dispatch|failure|receiver|observe|Observer|TimedObserver|ScriptFragment|responseText|script|inputs|ancestor|textarea|classNames|ObjectRange|node|typeName|RegExp|camelize|none|documentElement|ClassNames|relative|right|overflow|HTMLElement|parseFloat|toUpperCase|mode||currentlyExecuting|remove|__method|Base|memo||slice|returnValue|continue|setOptions|String|classNameToRemove|_reverse|page|focus|queryComponent|Hash|attachEvent|post|detachEvent|Version|reverse|encodeURIComponent|disabled|asynchronous|eval|respondToReadyState|activeRequestCount|Complete|appVersion|test|getTransport|containers|matchingInputs|1000|header|updater|Updater|getElementsByTagName|child|responderToAdd|static|tagElements|queryComponents|defaultView|onElementEvent|css|forElement|values|visibility|prepare|mergedHash|pos|offsetcache|_madePositioned|visible|tbody|findOrStore|_nativeExtensions|createElement|digits|trues|found|prepareReplacement|before|camelizedString|insertBefore|selectNodeContents|exception|falses|criteria|classNameToAdd|params|set|destination|last|addEventListener|indexOf|inline|clear|succ|_originalWidth|setLeft|Top|ActiveXObject|scriptTag|matchOne|setHeight|setTop|without|responderToRemove|_observeAndCache|find|reset|removeEventListener|activate|findFirstElement|setRequestHeaders|setWidth|XMLHttpRequest|constructor|application|xml|onCreate|contentType|Field|onStateChange|keydown|Events|evalJSON|stopObserving|inputSelector|img|Content|evalResponse|selectOne|onreadystatechange|keypress|postBody|onException|selectMany|updateContent|setInterval|insertion|PeriodicalUpdater|userAgent|updateComplete|lastText|timer|unloadCache|registerFormCallbacks|positionedOffset|register|parentElement|children|switch|XMLHTTP|_extended|hide|checkbox|update|radio|these|outerHTML|password|clientWidth|one|includeScrollOffsets|clientHeight|nodeValue|withinIncludingScrolloffsets|Try|scrollTo|realOffset|getComputedStyle|show|currentStyle|auto|deltaX|originalPosition|originalVisibility|originalWidth|originalHeight|opera|deltaY|bottom|array|_originalTop|flatten|addMethods|lambda|Toggle|toggle|insertAdjacentHTML|_originalLeft|PeriodicalExecuter|ownerDocument|createRange|createContextualFragment|contentFromAnonymousTable|table|Before|which|matchAll|button|extractScripts|stripTags|pairString|len|collapse|appendChild|After|clone|toQueryParams|Pattern|evaluate|stop|stringValue|preventDefault|charAt|_originalHeight|substring|Bottom|pairs|Function|add|collections|javascript|detect|findAll|entries|from|first|compact|keys|merge|present|toQueryString|getInputs|Msxml2|Microsoft|unregister|disable|urlencoded|blur|300|enable|responseIsFailure|Uninitialized|Loaded|Interactive|_|get|focusFirstElement|open|send|Requested|With|Accept|overrideMimeType|Connection|close|setRequestHeader|getResponseHeader|JSON|gi|submit|Loading|Success|Failure|checked|200|selectedIndex|www|selected|bMSIE|clearTimeout|unload|absolutize|string|getElementById|pageXOffset|getElementsByClassName|pageYOffset|removeChild|replaceChild|click|getHeight|hasClassName|addClassName|removeClassName|within|cleanWhitespace|nodeType|empty|childOf|multiple|change|getPropertyValue|relativize|setStyle|getDimensions|makePositioned|undoPositioned|makeClipping|KEY_BACKSPACE|undoClipping|overlap|KEY_TAB|vertical|KEY_RETURN|KEY_ESC|KEY_LEFT|horizontal|KEY_UP|member|tr|KEY_RIGHT|0_RC_0|Number|instanceof|shift|KEY_DOWN|bindAsEventListener|call|toColorPart|KEY_DELETE|times|finally|callee|srcElement|sub|scan|truncate|isLeftClick|beforeBegin|setStartBefore|im|afterBegin|firstChild|pointerX|unescapeHTML|beforeEnd|pageX|clientX|pointerY|parseQuery|afterEnd|pageY|clientY|RangeError|setStartAfter|all|any|grep|invoke|stopPropagation|max|nextSibling|min|partition|cancelBubble|reject|sortBy|sort|findElement|zip|pop|createTextNode|escapeHTML|strip'.split('|'),0,{})
-
-} \ No newline at end of file
diff --git a/SunSpider/tests/string-validate-input.js b/SunSpider/tests/string-validate-input.js
deleted file mode 100644
index 3455b32..0000000
--- a/SunSpider/tests/string-validate-input.js
+++ /dev/null
@@ -1,89 +0,0 @@
-letters = new Array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");
-numbers = new Array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26);
-colors = new Array("FF","CC","99","66","33","00");
-
-var endResult;
-
-function doTest()
-{
- endResult = "";
-
- // make up email address
- for (var k=0;k<4000;k++)
- {
- name = makeName(6);
- (k%2)?email=name+"@mac.com":email=name+"(at)mac.com";
-
- // validate the email address
- var pattern = /^[a-zA-Z0-9\-\._]+@[a-zA-Z0-9\-_]+(\.?[a-zA-Z0-9\-_]*)\.[a-zA-Z]{2,3}$/;
-
- if(pattern.test(email))
- {
- var r = email + " appears to be a valid email address.";
- addResult(r);
- }
- else
- {
- r = email + " does NOT appear to be a valid email address.";
- addResult(r);
- }
- }
-
- // make up ZIP codes
- for (var s=0;s<4000;s++)
- {
- var zipGood = true;
- var zip = makeNumber(4);
- (s%2)?zip=zip+"xyz":zip=zip.concat("7");
-
- // validate the zip code
- for (var i = 0; i < zip.length; i++) {
- var ch = zip.charAt(i);
- if (ch < "0" || ch > "9") {
- zipGood = false;
- r = zip + " contains letters.";
- addResult(r);
- }
- }
- if (zipGood && zip.length>5)
- {
- zipGood = false;
- r = zip + " is longer than five characters.";
- addResult(r);
- }
- if (zipGood)
- {
- r = zip + " appears to be a valid ZIP code.";
- addResult(r);
- }
- }
-}
-
-function makeName(n)
-{
- var tmp = "";
- for (var i=0;i<n;i++)
- {
- var l = Math.floor(26*Math.random());
- tmp += letters[l];
- }
- return tmp;
-}
-
-function makeNumber(n)
-{
- var tmp = "";
- for (var i=0;i<n;i++)
- {
- var l = Math.floor(9*Math.random());
- tmp = tmp.concat(l);
- }
- return tmp;
-}
-
-function addResult(r)
-{
- endResult += "\n" + r;
-}
-
-doTest();
diff --git a/SunSpider/tests/ubench/function-closure.js b/SunSpider/tests/ubench/function-closure.js
deleted file mode 100644
index 6c7dde1..0000000
--- a/SunSpider/tests/ubench/function-closure.js
+++ /dev/null
@@ -1,7 +0,0 @@
-function f()
-{
- function g() { }
-}
-
-for (var i = 0; i < 300000; ++i)
- f();
diff --git a/SunSpider/tests/ubench/function-empty.js b/SunSpider/tests/ubench/function-empty.js
deleted file mode 100644
index c170d94..0000000
--- a/SunSpider/tests/ubench/function-empty.js
+++ /dev/null
@@ -1,6 +0,0 @@
-function f()
-{
-}
-
-for (var i = 0; i < 4000000; ++i)
- f();
diff --git a/SunSpider/tests/ubench/function-missing-args.js b/SunSpider/tests/ubench/function-missing-args.js
deleted file mode 100644
index d39d0f1..0000000
--- a/SunSpider/tests/ubench/function-missing-args.js
+++ /dev/null
@@ -1,6 +0,0 @@
-function f(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9)
-{
-}
-
-for (var i = 0; i < 3000000; ++i)
- f();
diff --git a/SunSpider/tests/ubench/function-sum.js b/SunSpider/tests/ubench/function-sum.js
deleted file mode 100644
index 5de7657..0000000
--- a/SunSpider/tests/ubench/function-sum.js
+++ /dev/null
@@ -1,7 +0,0 @@
-function f(x, y, z)
-{
- return x + y + z;
-}
-
-for (var i = 0; i < 2500000; ++i)
- f(1, 2, 3);
diff --git a/SunSpider/tests/ubench/loop-empty-resolve.js b/SunSpider/tests/ubench/loop-empty-resolve.js
deleted file mode 100644
index aa702be..0000000
--- a/SunSpider/tests/ubench/loop-empty-resolve.js
+++ /dev/null
@@ -1,2 +0,0 @@
-for (x = 0; x < 1200000; ++x)
- ;
diff --git a/SunSpider/tests/ubench/loop-empty.js b/SunSpider/tests/ubench/loop-empty.js
deleted file mode 100644
index 20c82f4..0000000
--- a/SunSpider/tests/ubench/loop-empty.js
+++ /dev/null
@@ -1,2 +0,0 @@
-for (var i = 0; i < 10000000; ++i)
- ;
diff --git a/SunSpider/tests/ubench/loop-sum.js b/SunSpider/tests/ubench/loop-sum.js
deleted file mode 100644
index 869d625..0000000
--- a/SunSpider/tests/ubench/loop-sum.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var count = 6000000;
-var sum = 0;
-for (var i = 0; i < count; i++) {
- sum = i + count;
-}
diff --git a/SunSpider/tests/v8-crypto.js b/SunSpider/tests/v8-crypto.js
deleted file mode 100644
index d70e623..0000000
--- a/SunSpider/tests/v8-crypto.js
+++ /dev/null
@@ -1,1686 +0,0 @@
-/*
- * Copyright (c) 2003-2005 Tom Wu
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
- * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF
- * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT
- * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * In addition, the following condition applies:
- *
- * All redistributions must retain an intact copy of this copyright notice
- * and disclaimer.
- */
-
-// Basic JavaScript BN library - subset useful for RSA encryption.
-
-// Bits per digit
-var dbits;
-var BI_DB;
-var BI_DM;
-var BI_DV;
-
-var BI_FP;
-var BI_FV;
-var BI_F1;
-var BI_F2;
-
-// JavaScript engine analysis
-var canary = 0xdeadbeefcafe;
-var j_lm = ((canary&0xffffff)==0xefcafe);
-
-// (public) Constructor
-function BigInteger(a,b,c) {
- this.array = new Array();
- if(a != null)
- if("number" == typeof a) this.fromNumber(a,b,c);
- else if(b == null && "string" != typeof a) this.fromString(a,256);
- else this.fromString(a,b);
-}
-
-// return new, unset BigInteger
-function nbi() { return new BigInteger(null); }
-
-// am: Compute w_j += (x*this_i), propagate carries,
-// c is initial carry, returns final carry.
-// c < 3*dvalue, x < 2*dvalue, this_i < dvalue
-// We need to select the fastest one that works in this environment.
-
-// am1: use a single mult and divide to get the high bits,
-// max digit bits should be 26 because
-// max internal value = 2*dvalue^2-2*dvalue (< 2^53)
-function am1(i,x,w,j,c,n) {
- var this_array = this.array;
- var w_array = w.array;
- while(--n >= 0) {
- var v = x*this_array[i++]+w_array[j]+c;
- c = Math.floor(v/0x4000000);
- w_array[j++] = v&0x3ffffff;
- }
- return c;
-}
-
-// am2 avoids a big mult-and-extract completely.
-// Max digit bits should be <= 30 because we do bitwise ops
-// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
-function am2(i,x,w,j,c,n) {
- var this_array = this.array;
- var w_array = w.array;
- var xl = x&0x7fff, xh = x>>15;
- while(--n >= 0) {
- var l = this_array[i]&0x7fff;
- var h = this_array[i++]>>15;
- var m = xh*l+h*xl;
- l = xl*l+((m&0x7fff)<<15)+w_array[j]+(c&0x3fffffff);
- c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);
- w_array[j++] = l&0x3fffffff;
- }
- return c;
-}
-
-// Alternately, set max digit bits to 28 since some
-// browsers slow down when dealing with 32-bit numbers.
-function am3(i,x,w,j,c,n) {
- var this_array = this.array;
- var w_array = w.array;
-
- var xl = x&0x3fff, xh = x>>14;
- while(--n >= 0) {
- var l = this_array[i]&0x3fff;
- var h = this_array[i++]>>14;
- var m = xh*l+h*xl;
- l = xl*l+((m&0x3fff)<<14)+w_array[j]+c;
- c = (l>>28)+(m>>14)+xh*h;
- w_array[j++] = l&0xfffffff;
- }
- return c;
-}
-
-// This is tailored to VMs with 2-bit tagging. It makes sure
-// that all the computations stay within the 29 bits available.
-function am4(i,x,w,j,c,n) {
- var this_array = this.array;
- var w_array = w.array;
-
- var xl = x&0x1fff, xh = x>>13;
- while(--n >= 0) {
- var l = this_array[i]&0x1fff;
- var h = this_array[i++]>>13;
- var m = xh*l+h*xl;
- l = xl*l+((m&0x1fff)<<13)+w_array[j]+c;
- c = (l>>26)+(m>>13)+xh*h;
- w_array[j++] = l&0x3ffffff;
- }
- return c;
-}
-
-// am3/28 is best for SM, Rhino, but am4/26 is best for v8.
-// Kestrel (Opera 9.5) gets its best result with am4/26.
-// IE7 does 9% better with am3/28 than with am4/26.
-// Firefox (SM) gets 10% faster with am3/28 than with am4/26.
-
-setupEngine = function(fn, bits) {
- BigInteger.prototype.am = fn;
- dbits = bits;
-
- BI_DB = dbits;
- BI_DM = ((1<<dbits)-1);
- BI_DV = (1<<dbits);
-
- BI_FP = 52;
- BI_FV = Math.pow(2,BI_FP);
- BI_F1 = BI_FP-dbits;
- BI_F2 = 2*dbits-BI_FP;
-}
-
-
-// Digit conversions
-var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz";
-var BI_RC = new Array();
-var rr,vv;
-rr = "0".charCodeAt(0);
-for(vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv;
-rr = "a".charCodeAt(0);
-for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;
-rr = "A".charCodeAt(0);
-for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;
-
-function int2char(n) { return BI_RM.charAt(n); }
-function intAt(s,i) {
- var c = BI_RC[s.charCodeAt(i)];
- return (c==null)?-1:c;
-}
-
-// (protected) copy this to r
-function bnpCopyTo(r) {
- var this_array = this.array;
- var r_array = r.array;
-
- for(var i = this.t-1; i >= 0; --i) r_array[i] = this_array[i];
- r.t = this.t;
- r.s = this.s;
-}
-
-// (protected) set from integer value x, -DV <= x < DV
-function bnpFromInt(x) {
- var this_array = this.array;
- this.t = 1;
- this.s = (x<0)?-1:0;
- if(x > 0) this_array[0] = x;
- else if(x < -1) this_array[0] = x+DV;
- else this.t = 0;
-}
-
-// return bigint initialized to value
-function nbv(i) { var r = nbi(); r.fromInt(i); return r; }
-
-// (protected) set from string and radix
-function bnpFromString(s,b) {
- var this_array = this.array;
- var k;
- if(b == 16) k = 4;
- else if(b == 8) k = 3;
- else if(b == 256) k = 8; // byte array
- else if(b == 2) k = 1;
- else if(b == 32) k = 5;
- else if(b == 4) k = 2;
- else { this.fromRadix(s,b); return; }
- this.t = 0;
- this.s = 0;
- var i = s.length, mi = false, sh = 0;
- while(--i >= 0) {
- var x = (k==8)?s[i]&0xff:intAt(s,i);
- if(x < 0) {
- if(s.charAt(i) == "-") mi = true;
- continue;
- }
- mi = false;
- if(sh == 0)
- this_array[this.t++] = x;
- else if(sh+k > BI_DB) {
- this_array[this.t-1] |= (x&((1<<(BI_DB-sh))-1))<<sh;
- this_array[this.t++] = (x>>(BI_DB-sh));
- }
- else
- this_array[this.t-1] |= x<<sh;
- sh += k;
- if(sh >= BI_DB) sh -= BI_DB;
- }
- if(k == 8 && (s[0]&0x80) != 0) {
- this.s = -1;
- if(sh > 0) this_array[this.t-1] |= ((1<<(BI_DB-sh))-1)<<sh;
- }
- this.clamp();
- if(mi) BigInteger.ZERO.subTo(this,this);
-}
-
-// (protected) clamp off excess high words
-function bnpClamp() {
- var this_array = this.array;
- var c = this.s&BI_DM;
- while(this.t > 0 && this_array[this.t-1] == c) --this.t;
-}
-
-// (public) return string representation in given radix
-function bnToString(b) {
- var this_array = this.array;
- if(this.s < 0) return "-"+this.negate().toString(b);
- var k;
- if(b == 16) k = 4;
- else if(b == 8) k = 3;
- else if(b == 2) k = 1;
- else if(b == 32) k = 5;
- else if(b == 4) k = 2;
- else return this.toRadix(b);
- var km = (1<<k)-1, d, m = false, r = "", i = this.t;
- var p = BI_DB-(i*BI_DB)%k;
- if(i-- > 0) {
- if(p < BI_DB && (d = this_array[i]>>p) > 0) { m = true; r = int2char(d); }
- while(i >= 0) {
- if(p < k) {
- d = (this_array[i]&((1<<p)-1))<<(k-p);
- d |= this_array[--i]>>(p+=BI_DB-k);
- }
- else {
- d = (this_array[i]>>(p-=k))&km;
- if(p <= 0) { p += BI_DB; --i; }
- }
- if(d > 0) m = true;
- if(m) r += int2char(d);
- }
- }
- return m?r:"0";
-}
-
-// (public) -this
-function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }
-
-// (public) |this|
-function bnAbs() { return (this.s<0)?this.negate():this; }
-
-// (public) return + if this > a, - if this < a, 0 if equal
-function bnCompareTo(a) {
- var this_array = this.array;
- var a_array = a.array;
-
- var r = this.s-a.s;
- if(r != 0) return r;
- var i = this.t;
- r = i-a.t;
- if(r != 0) return r;
- while(--i >= 0) if((r=this_array[i]-a_array[i]) != 0) return r;
- return 0;
-}
-
-// returns bit length of the integer x
-function nbits(x) {
- var r = 1, t;
- if((t=x>>>16) != 0) { x = t; r += 16; }
- if((t=x>>8) != 0) { x = t; r += 8; }
- if((t=x>>4) != 0) { x = t; r += 4; }
- if((t=x>>2) != 0) { x = t; r += 2; }
- if((t=x>>1) != 0) { x = t; r += 1; }
- return r;
-}
-
-// (public) return the number of bits in "this"
-function bnBitLength() {
- var this_array = this.array;
- if(this.t <= 0) return 0;
- return BI_DB*(this.t-1)+nbits(this_array[this.t-1]^(this.s&BI_DM));
-}
-
-// (protected) r = this << n*DB
-function bnpDLShiftTo(n,r) {
- var this_array = this.array;
- var r_array = r.array;
- var i;
- for(i = this.t-1; i >= 0; --i) r_array[i+n] = this_array[i];
- for(i = n-1; i >= 0; --i) r_array[i] = 0;
- r.t = this.t+n;
- r.s = this.s;
-}
-
-// (protected) r = this >> n*DB
-function bnpDRShiftTo(n,r) {
- var this_array = this.array;
- var r_array = r.array;
- for(var i = n; i < this.t; ++i) r_array[i-n] = this_array[i];
- r.t = Math.max(this.t-n,0);
- r.s = this.s;
-}
-
-// (protected) r = this << n
-function bnpLShiftTo(n,r) {
- var this_array = this.array;
- var r_array = r.array;
- var bs = n%BI_DB;
- var cbs = BI_DB-bs;
- var bm = (1<<cbs)-1;
- var ds = Math.floor(n/BI_DB), c = (this.s<<bs)&BI_DM, i;
- for(i = this.t-1; i >= 0; --i) {
- r_array[i+ds+1] = (this_array[i]>>cbs)|c;
- c = (this_array[i]&bm)<<bs;
- }
- for(i = ds-1; i >= 0; --i) r_array[i] = 0;
- r_array[ds] = c;
- r.t = this.t+ds+1;
- r.s = this.s;
- r.clamp();
-}
-
-// (protected) r = this >> n
-function bnpRShiftTo(n,r) {
- var this_array = this.array;
- var r_array = r.array;
- r.s = this.s;
- var ds = Math.floor(n/BI_DB);
- if(ds >= this.t) { r.t = 0; return; }
- var bs = n%BI_DB;
- var cbs = BI_DB-bs;
- var bm = (1<<bs)-1;
- r_array[0] = this_array[ds]>>bs;
- for(var i = ds+1; i < this.t; ++i) {
- r_array[i-ds-1] |= (this_array[i]&bm)<<cbs;
- r_array[i-ds] = this_array[i]>>bs;
- }
- if(bs > 0) r_array[this.t-ds-1] |= (this.s&bm)<<cbs;
- r.t = this.t-ds;
- r.clamp();
-}
-
-// (protected) r = this - a
-function bnpSubTo(a,r) {
- var this_array = this.array;
- var r_array = r.array;
- var a_array = a.array;
- var i = 0, c = 0, m = Math.min(a.t,this.t);
- while(i < m) {
- c += this_array[i]-a_array[i];
- r_array[i++] = c&BI_DM;
- c >>= BI_DB;
- }
- if(a.t < this.t) {
- c -= a.s;
- while(i < this.t) {
- c += this_array[i];
- r_array[i++] = c&BI_DM;
- c >>= BI_DB;
- }
- c += this.s;
- }
- else {
- c += this.s;
- while(i < a.t) {
- c -= a_array[i];
- r_array[i++] = c&BI_DM;
- c >>= BI_DB;
- }
- c -= a.s;
- }
- r.s = (c<0)?-1:0;
- if(c < -1) r_array[i++] = BI_DV+c;
- else if(c > 0) r_array[i++] = c;
- r.t = i;
- r.clamp();
-}
-
-// (protected) r = this * a, r != this,a (HAC 14.12)
-// "this" should be the larger one if appropriate.
-function bnpMultiplyTo(a,r) {
- var this_array = this.array;
- var r_array = r.array;
- var x = this.abs(), y = a.abs();
- var y_array = y.array;
-
- var i = x.t;
- r.t = i+y.t;
- while(--i >= 0) r_array[i] = 0;
- for(i = 0; i < y.t; ++i) r_array[i+x.t] = x.am(0,y_array[i],r,i,0,x.t);
- r.s = 0;
- r.clamp();
- if(this.s != a.s) BigInteger.ZERO.subTo(r,r);
-}
-
-// (protected) r = this^2, r != this (HAC 14.16)
-function bnpSquareTo(r) {
- var x = this.abs();
- var x_array = x.array;
- var r_array = r.array;
-
- var i = r.t = 2*x.t;
- while(--i >= 0) r_array[i] = 0;
- for(i = 0; i < x.t-1; ++i) {
- var c = x.am(i,x_array[i],r,2*i,0,1);
- if((r_array[i+x.t]+=x.am(i+1,2*x_array[i],r,2*i+1,c,x.t-i-1)) >= BI_DV) {
- r_array[i+x.t] -= BI_DV;
- r_array[i+x.t+1] = 1;
- }
- }
- if(r.t > 0) r_array[r.t-1] += x.am(i,x_array[i],r,2*i,0,1);
- r.s = 0;
- r.clamp();
-}
-
-// (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
-// r != q, this != m. q or r may be null.
-function bnpDivRemTo(m,q,r) {
- var pm = m.abs();
- if(pm.t <= 0) return;
- var pt = this.abs();
- if(pt.t < pm.t) {
- if(q != null) q.fromInt(0);
- if(r != null) this.copyTo(r);
- return;
- }
- if(r == null) r = nbi();
- var y = nbi(), ts = this.s, ms = m.s;
- var pm_array = pm.array;
- var nsh = BI_DB-nbits(pm_array[pm.t-1]); // normalize modulus
- if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); }
- else { pm.copyTo(y); pt.copyTo(r); }
- var ys = y.t;
-
- var y_array = y.array;
- var y0 = y_array[ys-1];
- if(y0 == 0) return;
- var yt = y0*(1<<BI_F1)+((ys>1)?y_array[ys-2]>>BI_F2:0);
- var d1 = BI_FV/yt, d2 = (1<<BI_F1)/yt, e = 1<<BI_F2;
- var i = r.t, j = i-ys, t = (q==null)?nbi():q;
- y.dlShiftTo(j,t);
-
- var r_array = r.array;
- if(r.compareTo(t) >= 0) {
- r_array[r.t++] = 1;
- r.subTo(t,r);
- }
- BigInteger.ONE.dlShiftTo(ys,t);
- t.subTo(y,y); // "negative" y so we can replace sub with am later
- while(y.t < ys) y_array[y.t++] = 0;
- while(--j >= 0) {
- // Estimate quotient digit
- var qd = (r_array[--i]==y0)?BI_DM:Math.floor(r_array[i]*d1+(r_array[i-1]+e)*d2);
- if((r_array[i]+=y.am(0,qd,r,j,0,ys)) < qd) { // Try it out
- y.dlShiftTo(j,t);
- r.subTo(t,r);
- while(r_array[i] < --qd) r.subTo(t,r);
- }
- }
- if(q != null) {
- r.drShiftTo(ys,q);
- if(ts != ms) BigInteger.ZERO.subTo(q,q);
- }
- r.t = ys;
- r.clamp();
- if(nsh > 0) r.rShiftTo(nsh,r); // Denormalize remainder
- if(ts < 0) BigInteger.ZERO.subTo(r,r);
-}
-
-// (public) this mod a
-function bnMod(a) {
- var r = nbi();
- this.abs().divRemTo(a,null,r);
- if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r);
- return r;
-}
-
-// Modular reduction using "classic" algorithm
-function Classic(m) { this.m = m; }
-function cConvert(x) {
- if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);
- else return x;
-}
-function cRevert(x) { return x; }
-function cReduce(x) { x.divRemTo(this.m,null,x); }
-function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
-function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
-
-Classic.prototype.convert = cConvert;
-Classic.prototype.revert = cRevert;
-Classic.prototype.reduce = cReduce;
-Classic.prototype.mulTo = cMulTo;
-Classic.prototype.sqrTo = cSqrTo;
-
-// (protected) return "-1/this % 2^DB"; useful for Mont. reduction
-// justification:
-// xy == 1 (mod m)
-// xy = 1+km
-// xy(2-xy) = (1+km)(1-km)
-// x[y(2-xy)] = 1-k^2m^2
-// x[y(2-xy)] == 1 (mod m^2)
-// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
-// should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
-// JS multiply "overflows" differently from C/C++, so care is needed here.
-function bnpInvDigit() {
- var this_array = this.array;
- if(this.t < 1) return 0;
- var x = this_array[0];
- if((x&1) == 0) return 0;
- var y = x&3; // y == 1/x mod 2^2
- y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4
- y = (y*(2-(x&0xff)*y))&0xff; // y == 1/x mod 2^8
- y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff; // y == 1/x mod 2^16
- // last step - calculate inverse mod DV directly;
- // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
- y = (y*(2-x*y%BI_DV))%BI_DV; // y == 1/x mod 2^dbits
- // we really want the negative inverse, and -DV < y < DV
- return (y>0)?BI_DV-y:-y;
-}
-
-// Montgomery reduction
-function Montgomery(m) {
- this.m = m;
- this.mp = m.invDigit();
- this.mpl = this.mp&0x7fff;
- this.mph = this.mp>>15;
- this.um = (1<<(BI_DB-15))-1;
- this.mt2 = 2*m.t;
-}
-
-// xR mod m
-function montConvert(x) {
- var r = nbi();
- x.abs().dlShiftTo(this.m.t,r);
- r.divRemTo(this.m,null,r);
- if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r);
- return r;
-}
-
-// x/R mod m
-function montRevert(x) {
- var r = nbi();
- x.copyTo(r);
- this.reduce(r);
- return r;
-}
-
-// x = x/R mod m (HAC 14.32)
-function montReduce(x) {
- var x_array = x.array;
- while(x.t <= this.mt2) // pad x so am has enough room later
- x_array[x.t++] = 0;
- for(var i = 0; i < this.m.t; ++i) {
- // faster way of calculating u0 = x[i]*mp mod DV
- var j = x_array[i]&0x7fff;
- var u0 = (j*this.mpl+(((j*this.mph+(x_array[i]>>15)*this.mpl)&this.um)<<15))&BI_DM;
- // use am to combine the multiply-shift-add into one call
- j = i+this.m.t;
- x_array[j] += this.m.am(0,u0,x,i,0,this.m.t);
- // propagate carry
- while(x_array[j] >= BI_DV) { x_array[j] -= BI_DV; x_array[++j]++; }
- }
- x.clamp();
- x.drShiftTo(this.m.t,x);
- if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);
-}
-
-// r = "x^2/R mod m"; x != r
-function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
-
-// r = "xy/R mod m"; x,y != r
-function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
-
-Montgomery.prototype.convert = montConvert;
-Montgomery.prototype.revert = montRevert;
-Montgomery.prototype.reduce = montReduce;
-Montgomery.prototype.mulTo = montMulTo;
-Montgomery.prototype.sqrTo = montSqrTo;
-
-// (protected) true iff this is even
-function bnpIsEven() {
- var this_array = this.array;
- return ((this.t>0)?(this_array[0]&1):this.s) == 0;
-}
-
-// (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
-function bnpExp(e,z) {
- if(e > 0xffffffff || e < 1) return BigInteger.ONE;
- var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;
- g.copyTo(r);
- while(--i >= 0) {
- z.sqrTo(r,r2);
- if((e&(1<<i)) > 0) z.mulTo(r2,g,r);
- else { var t = r; r = r2; r2 = t; }
- }
- return z.revert(r);
-}
-
-// (public) this^e % m, 0 <= e < 2^32
-function bnModPowInt(e,m) {
- var z;
- if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);
- return this.exp(e,z);
-}
-
-// protected
-BigInteger.prototype.copyTo = bnpCopyTo;
-BigInteger.prototype.fromInt = bnpFromInt;
-BigInteger.prototype.fromString = bnpFromString;
-BigInteger.prototype.clamp = bnpClamp;
-BigInteger.prototype.dlShiftTo = bnpDLShiftTo;
-BigInteger.prototype.drShiftTo = bnpDRShiftTo;
-BigInteger.prototype.lShiftTo = bnpLShiftTo;
-BigInteger.prototype.rShiftTo = bnpRShiftTo;
-BigInteger.prototype.subTo = bnpSubTo;
-BigInteger.prototype.multiplyTo = bnpMultiplyTo;
-BigInteger.prototype.squareTo = bnpSquareTo;
-BigInteger.prototype.divRemTo = bnpDivRemTo;
-BigInteger.prototype.invDigit = bnpInvDigit;
-BigInteger.prototype.isEven = bnpIsEven;
-BigInteger.prototype.exp = bnpExp;
-
-// public
-BigInteger.prototype.toString = bnToString;
-BigInteger.prototype.negate = bnNegate;
-BigInteger.prototype.abs = bnAbs;
-BigInteger.prototype.compareTo = bnCompareTo;
-BigInteger.prototype.bitLength = bnBitLength;
-BigInteger.prototype.mod = bnMod;
-BigInteger.prototype.modPowInt = bnModPowInt;
-
-// "constants"
-BigInteger.ZERO = nbv(0);
-BigInteger.ONE = nbv(1);
-// Copyright (c) 2005 Tom Wu
-// All Rights Reserved.
-// See "LICENSE" for details.
-
-// Extended JavaScript BN functions, required for RSA private ops.
-
-// (public)
-function bnClone() { var r = nbi(); this.copyTo(r); return r; }
-
-// (public) return value as integer
-function bnIntValue() {
- var this_array = this.array;
- if(this.s < 0) {
- if(this.t == 1) return this_array[0]-BI_DV;
- else if(this.t == 0) return -1;
- }
- else if(this.t == 1) return this_array[0];
- else if(this.t == 0) return 0;
- // assumes 16 < DB < 32
- return ((this_array[1]&((1<<(32-BI_DB))-1))<<BI_DB)|this_array[0];
-}
-
-// (public) return value as byte
-function bnByteValue() {
- var this_array = this.array;
- return (this.t==0)?this.s:(this_array[0]<<24)>>24;
-}
-
-// (public) return value as short (assumes DB>=16)
-function bnShortValue() {
- var this_array = this.array;
- return (this.t==0)?this.s:(this_array[0]<<16)>>16;
-}
-
-// (protected) return x s.t. r^x < DV
-function bnpChunkSize(r) { return Math.floor(Math.LN2*BI_DB/Math.log(r)); }
-
-// (public) 0 if this == 0, 1 if this > 0
-function bnSigNum() {
- var this_array = this.array;
- if(this.s < 0) return -1;
- else if(this.t <= 0 || (this.t == 1 && this_array[0] <= 0)) return 0;
- else return 1;
-}
-
-// (protected) convert to radix string
-function bnpToRadix(b) {
- if(b == null) b = 10;
- if(this.signum() == 0 || b < 2 || b > 36) return "0";
- var cs = this.chunkSize(b);
- var a = Math.pow(b,cs);
- var d = nbv(a), y = nbi(), z = nbi(), r = "";
- this.divRemTo(d,y,z);
- while(y.signum() > 0) {
- r = (a+z.intValue()).toString(b).substr(1) + r;
- y.divRemTo(d,y,z);
- }
- return z.intValue().toString(b) + r;
-}
-
-// (protected) convert from radix string
-function bnpFromRadix(s,b) {
- this.fromInt(0);
- if(b == null) b = 10;
- var cs = this.chunkSize(b);
- var d = Math.pow(b,cs), mi = false, j = 0, w = 0;
- for(var i = 0; i < s.length; ++i) {
- var x = intAt(s,i);
- if(x < 0) {
- if(s.charAt(i) == "-" && this.signum() == 0) mi = true;
- continue;
- }
- w = b*w+x;
- if(++j >= cs) {
- this.dMultiply(d);
- this.dAddOffset(w,0);
- j = 0;
- w = 0;
- }
- }
- if(j > 0) {
- this.dMultiply(Math.pow(b,j));
- this.dAddOffset(w,0);
- }
- if(mi) BigInteger.ZERO.subTo(this,this);
-}
-
-// (protected) alternate constructor
-function bnpFromNumber(a,b,c) {
- if("number" == typeof b) {
- // new BigInteger(int,int,RNG)
- if(a < 2) this.fromInt(1);
- else {
- this.fromNumber(a,c);
- if(!this.testBit(a-1)) // force MSB set
- this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this);
- if(this.isEven()) this.dAddOffset(1,0); // force odd
- while(!this.isProbablePrime(b)) {
- this.dAddOffset(2,0);
- if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this);
- }
- }
- }
- else {
- // new BigInteger(int,RNG)
- var x = new Array(), t = a&7;
- x.length = (a>>3)+1;
- b.nextBytes(x);
- if(t > 0) x[0] &= ((1<<t)-1); else x[0] = 0;
- this.fromString(x,256);
- }
-}
-
-// (public) convert to bigendian byte array
-function bnToByteArray() {
- var this_array = this.array;
- var i = this.t, r = new Array();
- r[0] = this.s;
- var p = BI_DB-(i*BI_DB)%8, d, k = 0;
- if(i-- > 0) {
- if(p < BI_DB && (d = this_array[i]>>p) != (this.s&BI_DM)>>p)
- r[k++] = d|(this.s<<(BI_DB-p));
- while(i >= 0) {
- if(p < 8) {
- d = (this_array[i]&((1<<p)-1))<<(8-p);
- d |= this_array[--i]>>(p+=BI_DB-8);
- }
- else {
- d = (this_array[i]>>(p-=8))&0xff;
- if(p <= 0) { p += BI_DB; --i; }
- }
- if((d&0x80) != 0) d |= -256;
- if(k == 0 && (this.s&0x80) != (d&0x80)) ++k;
- if(k > 0 || d != this.s) r[k++] = d;
- }
- }
- return r;
-}
-
-function bnEquals(a) { return(this.compareTo(a)==0); }
-function bnMin(a) { return(this.compareTo(a)<0)?this:a; }
-function bnMax(a) { return(this.compareTo(a)>0)?this:a; }
-
-// (protected) r = this op a (bitwise)
-function bnpBitwiseTo(a,op,r) {
- var this_array = this.array;
- var a_array = a.array;
- var r_array = r.array;
- var i, f, m = Math.min(a.t,this.t);
- for(i = 0; i < m; ++i) r_array[i] = op(this_array[i],a_array[i]);
- if(a.t < this.t) {
- f = a.s&BI_DM;
- for(i = m; i < this.t; ++i) r_array[i] = op(this_array[i],f);
- r.t = this.t;
- }
- else {
- f = this.s&BI_DM;
- for(i = m; i < a.t; ++i) r_array[i] = op(f,a_array[i]);
- r.t = a.t;
- }
- r.s = op(this.s,a.s);
- r.clamp();
-}
-
-// (public) this & a
-function op_and(x,y) { return x&y; }
-function bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; }
-
-// (public) this | a
-function op_or(x,y) { return x|y; }
-function bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; }
-
-// (public) this ^ a
-function op_xor(x,y) { return x^y; }
-function bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; }
-
-// (public) this & ~a
-function op_andnot(x,y) { return x&~y; }
-function bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; }
-
-// (public) ~this
-function bnNot() {
- var this_array = this.array;
- var r = nbi();
- var r_array = r.array;
-
- for(var i = 0; i < this.t; ++i) r_array[i] = BI_DM&~this_array[i];
- r.t = this.t;
- r.s = ~this.s;
- return r;
-}
-
-// (public) this << n
-function bnShiftLeft(n) {
- var r = nbi();
- if(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r);
- return r;
-}
-
-// (public) this >> n
-function bnShiftRight(n) {
- var r = nbi();
- if(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r);
- return r;
-}
-
-// return index of lowest 1-bit in x, x < 2^31
-function lbit(x) {
- if(x == 0) return -1;
- var r = 0;
- if((x&0xffff) == 0) { x >>= 16; r += 16; }
- if((x&0xff) == 0) { x >>= 8; r += 8; }
- if((x&0xf) == 0) { x >>= 4; r += 4; }
- if((x&3) == 0) { x >>= 2; r += 2; }
- if((x&1) == 0) ++r;
- return r;
-}
-
-// (public) returns index of lowest 1-bit (or -1 if none)
-function bnGetLowestSetBit() {
- var this_array = this.array;
- for(var i = 0; i < this.t; ++i)
- if(this_array[i] != 0) return i*BI_DB+lbit(this_array[i]);
- if(this.s < 0) return this.t*BI_DB;
- return -1;
-}
-
-// return number of 1 bits in x
-function cbit(x) {
- var r = 0;
- while(x != 0) { x &= x-1; ++r; }
- return r;
-}
-
-// (public) return number of set bits
-function bnBitCount() {
- var r = 0, x = this.s&BI_DM;
- for(var i = 0; i < this.t; ++i) r += cbit(this_array[i]^x);
- return r;
-}
-
-// (public) true iff nth bit is set
-function bnTestBit(n) {
- var this_array = this.array;
- var j = Math.floor(n/BI_DB);
- if(j >= this.t) return(this.s!=0);
- return((this_array[j]&(1<<(n%BI_DB)))!=0);
-}
-
-// (protected) this op (1<<n)
-function bnpChangeBit(n,op) {
- var r = BigInteger.ONE.shiftLeft(n);
- this.bitwiseTo(r,op,r);
- return r;
-}
-
-// (public) this | (1<<n)
-function bnSetBit(n) { return this.changeBit(n,op_or); }
-
-// (public) this & ~(1<<n)
-function bnClearBit(n) { return this.changeBit(n,op_andnot); }
-
-// (public) this ^ (1<<n)
-function bnFlipBit(n) { return this.changeBit(n,op_xor); }
-
-// (protected) r = this + a
-function bnpAddTo(a,r) {
- var this_array = this.array;
- var a_array = a.array;
- var r_array = r.array;
- var i = 0, c = 0, m = Math.min(a.t,this.t);
- while(i < m) {
- c += this_array[i]+a_array[i];
- r_array[i++] = c&BI_DM;
- c >>= BI_DB;
- }
- if(a.t < this.t) {
- c += a.s;
- while(i < this.t) {
- c += this_array[i];
- r_array[i++] = c&BI_DM;
- c >>= BI_DB;
- }
- c += this.s;
- }
- else {
- c += this.s;
- while(i < a.t) {
- c += a_array[i];
- r_array[i++] = c&BI_DM;
- c >>= BI_DB;
- }
- c += a.s;
- }
- r.s = (c<0)?-1:0;
- if(c > 0) r_array[i++] = c;
- else if(c < -1) r_array[i++] = BI_DV+c;
- r.t = i;
- r.clamp();
-}
-
-// (public) this + a
-function bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; }
-
-// (public) this - a
-function bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; }
-
-// (public) this * a
-function bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; }
-
-// (public) this / a
-function bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; }
-
-// (public) this % a
-function bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; }
-
-// (public) [this/a,this%a]
-function bnDivideAndRemainder(a) {
- var q = nbi(), r = nbi();
- this.divRemTo(a,q,r);
- return new Array(q,r);
-}
-
-// (protected) this *= n, this >= 0, 1 < n < DV
-function bnpDMultiply(n) {
- var this_array = this.array;
- this_array[this.t] = this.am(0,n-1,this,0,0,this.t);
- ++this.t;
- this.clamp();
-}
-
-// (protected) this += n << w words, this >= 0
-function bnpDAddOffset(n,w) {
- var this_array = this.array;
- while(this.t <= w) this_array[this.t++] = 0;
- this_array[w] += n;
- while(this_array[w] >= BI_DV) {
- this_array[w] -= BI_DV;
- if(++w >= this.t) this_array[this.t++] = 0;
- ++this_array[w];
- }
-}
-
-// A "null" reducer
-function NullExp() {}
-function nNop(x) { return x; }
-function nMulTo(x,y,r) { x.multiplyTo(y,r); }
-function nSqrTo(x,r) { x.squareTo(r); }
-
-NullExp.prototype.convert = nNop;
-NullExp.prototype.revert = nNop;
-NullExp.prototype.mulTo = nMulTo;
-NullExp.prototype.sqrTo = nSqrTo;
-
-// (public) this^e
-function bnPow(e) { return this.exp(e,new NullExp()); }
-
-// (protected) r = lower n words of "this * a", a.t <= n
-// "this" should be the larger one if appropriate.
-function bnpMultiplyLowerTo(a,n,r) {
- var r_array = r.array;
- var a_array = a.array;
- var i = Math.min(this.t+a.t,n);
- r.s = 0; // assumes a,this >= 0
- r.t = i;
- while(i > 0) r_array[--i] = 0;
- var j;
- for(j = r.t-this.t; i < j; ++i) r_array[i+this.t] = this.am(0,a_array[i],r,i,0,this.t);
- for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a_array[i],r,i,0,n-i);
- r.clamp();
-}
-
-// (protected) r = "this * a" without lower n words, n > 0
-// "this" should be the larger one if appropriate.
-function bnpMultiplyUpperTo(a,n,r) {
- var r_array = r.array;
- var a_array = a.array;
- --n;
- var i = r.t = this.t+a.t-n;
- r.s = 0; // assumes a,this >= 0
- while(--i >= 0) r_array[i] = 0;
- for(i = Math.max(n-this.t,0); i < a.t; ++i)
- r_array[this.t+i-n] = this.am(n-i,a_array[i],r,0,0,this.t+i-n);
- r.clamp();
- r.drShiftTo(1,r);
-}
-
-// Barrett modular reduction
-function Barrett(m) {
- // setup Barrett
- this.r2 = nbi();
- this.q3 = nbi();
- BigInteger.ONE.dlShiftTo(2*m.t,this.r2);
- this.mu = this.r2.divide(m);
- this.m = m;
-}
-
-function barrettConvert(x) {
- if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m);
- else if(x.compareTo(this.m) < 0) return x;
- else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; }
-}
-
-function barrettRevert(x) { return x; }
-
-// x = x mod m (HAC 14.42)
-function barrettReduce(x) {
- x.drShiftTo(this.m.t-1,this.r2);
- if(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); }
- this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);
- this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);
- while(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1);
- x.subTo(this.r2,x);
- while(x.compareTo(this.m) >= 0) x.subTo(this.m,x);
-}
-
-// r = x^2 mod m; x != r
-function barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
-
-// r = x*y mod m; x,y != r
-function barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
-
-Barrett.prototype.convert = barrettConvert;
-Barrett.prototype.revert = barrettRevert;
-Barrett.prototype.reduce = barrettReduce;
-Barrett.prototype.mulTo = barrettMulTo;
-Barrett.prototype.sqrTo = barrettSqrTo;
-
-// (public) this^e % m (HAC 14.85)
-function bnModPow(e,m) {
- var e_array = e.array;
- var i = e.bitLength(), k, r = nbv(1), z;
- if(i <= 0) return r;
- else if(i < 18) k = 1;
- else if(i < 48) k = 3;
- else if(i < 144) k = 4;
- else if(i < 768) k = 5;
- else k = 6;
- if(i < 8)
- z = new Classic(m);
- else if(m.isEven())
- z = new Barrett(m);
- else
- z = new Montgomery(m);
-
- // precomputation
- var g = new Array(), n = 3, k1 = k-1, km = (1<<k)-1;
- g[1] = z.convert(this);
- if(k > 1) {
- var g2 = nbi();
- z.sqrTo(g[1],g2);
- while(n <= km) {
- g[n] = nbi();
- z.mulTo(g2,g[n-2],g[n]);
- n += 2;
- }
- }
-
- var j = e.t-1, w, is1 = true, r2 = nbi(), t;
- i = nbits(e_array[j])-1;
- while(j >= 0) {
- if(i >= k1) w = (e_array[j]>>(i-k1))&km;
- else {
- w = (e_array[j]&((1<<(i+1))-1))<<(k1-i);
- if(j > 0) w |= e_array[j-1]>>(BI_DB+i-k1);
- }
-
- n = k;
- while((w&1) == 0) { w >>= 1; --n; }
- if((i -= n) < 0) { i += BI_DB; --j; }
- if(is1) { // ret == 1, don't bother squaring or multiplying it
- g[w].copyTo(r);
- is1 = false;
- }
- else {
- while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; }
- if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; }
- z.mulTo(r2,g[w],r);
- }
-
- while(j >= 0 && (e_array[j]&(1<<i)) == 0) {
- z.sqrTo(r,r2); t = r; r = r2; r2 = t;
- if(--i < 0) { i = BI_DB-1; --j; }
- }
- }
- return z.revert(r);
-}
-
-// (public) gcd(this,a) (HAC 14.54)
-function bnGCD(a) {
- var x = (this.s<0)?this.negate():this.clone();
- var y = (a.s<0)?a.negate():a.clone();
- if(x.compareTo(y) < 0) { var t = x; x = y; y = t; }
- var i = x.getLowestSetBit(), g = y.getLowestSetBit();
- if(g < 0) return x;
- if(i < g) g = i;
- if(g > 0) {
- x.rShiftTo(g,x);
- y.rShiftTo(g,y);
- }
- while(x.signum() > 0) {
- if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x);
- if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y);
- if(x.compareTo(y) >= 0) {
- x.subTo(y,x);
- x.rShiftTo(1,x);
- }
- else {
- y.subTo(x,y);
- y.rShiftTo(1,y);
- }
- }
- if(g > 0) y.lShiftTo(g,y);
- return y;
-}
-
-// (protected) this % n, n < 2^26
-function bnpModInt(n) {
- var this_array = this.array;
- if(n <= 0) return 0;
- var d = BI_DV%n, r = (this.s<0)?n-1:0;
- if(this.t > 0)
- if(d == 0) r = this_array[0]%n;
- else for(var i = this.t-1; i >= 0; --i) r = (d*r+this_array[i])%n;
- return r;
-}
-
-// (public) 1/this % m (HAC 14.61)
-function bnModInverse(m) {
- var ac = m.isEven();
- if((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO;
- var u = m.clone(), v = this.clone();
- var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1);
- while(u.signum() != 0) {
- while(u.isEven()) {
- u.rShiftTo(1,u);
- if(ac) {
- if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); }
- a.rShiftTo(1,a);
- }
- else if(!b.isEven()) b.subTo(m,b);
- b.rShiftTo(1,b);
- }
- while(v.isEven()) {
- v.rShiftTo(1,v);
- if(ac) {
- if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); }
- c.rShiftTo(1,c);
- }
- else if(!d.isEven()) d.subTo(m,d);
- d.rShiftTo(1,d);
- }
- if(u.compareTo(v) >= 0) {
- u.subTo(v,u);
- if(ac) a.subTo(c,a);
- b.subTo(d,b);
- }
- else {
- v.subTo(u,v);
- if(ac) c.subTo(a,c);
- d.subTo(b,d);
- }
- }
- if(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO;
- if(d.compareTo(m) >= 0) return d.subtract(m);
- if(d.signum() < 0) d.addTo(m,d); else return d;
- if(d.signum() < 0) return d.add(m); else return d;
-}
-
-var lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509];
-var lplim = (1<<26)/lowprimes[lowprimes.length-1];
-
-// (public) test primality with certainty >= 1-.5^t
-function bnIsProbablePrime(t) {
- var i, x = this.abs();
- var x_array = x.array;
- if(x.t == 1 && x_array[0] <= lowprimes[lowprimes.length-1]) {
- for(i = 0; i < lowprimes.length; ++i)
- if(x_array[0] == lowprimes[i]) return true;
- return false;
- }
- if(x.isEven()) return false;
- i = 1;
- while(i < lowprimes.length) {
- var m = lowprimes[i], j = i+1;
- while(j < lowprimes.length && m < lplim) m *= lowprimes[j++];
- m = x.modInt(m);
- while(i < j) if(m%lowprimes[i++] == 0) return false;
- }
- return x.millerRabin(t);
-}
-
-// (protected) true if probably prime (HAC 4.24, Miller-Rabin)
-function bnpMillerRabin(t) {
- var n1 = this.subtract(BigInteger.ONE);
- var k = n1.getLowestSetBit();
- if(k <= 0) return false;
- var r = n1.shiftRight(k);
- t = (t+1)>>1;
- if(t > lowprimes.length) t = lowprimes.length;
- var a = nbi();
- for(var i = 0; i < t; ++i) {
- a.fromInt(lowprimes[i]);
- var y = a.modPow(r,this);
- if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {
- var j = 1;
- while(j++ < k && y.compareTo(n1) != 0) {
- y = y.modPowInt(2,this);
- if(y.compareTo(BigInteger.ONE) == 0) return false;
- }
- if(y.compareTo(n1) != 0) return false;
- }
- }
- return true;
-}
-
-// protected
-BigInteger.prototype.chunkSize = bnpChunkSize;
-BigInteger.prototype.toRadix = bnpToRadix;
-BigInteger.prototype.fromRadix = bnpFromRadix;
-BigInteger.prototype.fromNumber = bnpFromNumber;
-BigInteger.prototype.bitwiseTo = bnpBitwiseTo;
-BigInteger.prototype.changeBit = bnpChangeBit;
-BigInteger.prototype.addTo = bnpAddTo;
-BigInteger.prototype.dMultiply = bnpDMultiply;
-BigInteger.prototype.dAddOffset = bnpDAddOffset;
-BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;
-BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;
-BigInteger.prototype.modInt = bnpModInt;
-BigInteger.prototype.millerRabin = bnpMillerRabin;
-
-// public
-BigInteger.prototype.clone = bnClone;
-BigInteger.prototype.intValue = bnIntValue;
-BigInteger.prototype.byteValue = bnByteValue;
-BigInteger.prototype.shortValue = bnShortValue;
-BigInteger.prototype.signum = bnSigNum;
-BigInteger.prototype.toByteArray = bnToByteArray;
-BigInteger.prototype.equals = bnEquals;
-BigInteger.prototype.min = bnMin;
-BigInteger.prototype.max = bnMax;
-BigInteger.prototype.and = bnAnd;
-BigInteger.prototype.or = bnOr;
-BigInteger.prototype.xor = bnXor;
-BigInteger.prototype.andNot = bnAndNot;
-BigInteger.prototype.not = bnNot;
-BigInteger.prototype.shiftLeft = bnShiftLeft;
-BigInteger.prototype.shiftRight = bnShiftRight;
-BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;
-BigInteger.prototype.bitCount = bnBitCount;
-BigInteger.prototype.testBit = bnTestBit;
-BigInteger.prototype.setBit = bnSetBit;
-BigInteger.prototype.clearBit = bnClearBit;
-BigInteger.prototype.flipBit = bnFlipBit;
-BigInteger.prototype.add = bnAdd;
-BigInteger.prototype.subtract = bnSubtract;
-BigInteger.prototype.multiply = bnMultiply;
-BigInteger.prototype.divide = bnDivide;
-BigInteger.prototype.remainder = bnRemainder;
-BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;
-BigInteger.prototype.modPow = bnModPow;
-BigInteger.prototype.modInverse = bnModInverse;
-BigInteger.prototype.pow = bnPow;
-BigInteger.prototype.gcd = bnGCD;
-BigInteger.prototype.isProbablePrime = bnIsProbablePrime;
-
-// BigInteger interfaces not implemented in jsbn:
-
-// BigInteger(int signum, byte[] magnitude)
-// double doubleValue()
-// float floatValue()
-// int hashCode()
-// long longValue()
-// static BigInteger valueOf(long val)
-// prng4.js - uses Arcfour as a PRNG
-
-function Arcfour() {
- this.i = 0;
- this.j = 0;
- this.S = new Array();
-}
-
-// Initialize arcfour context from key, an array of ints, each from [0..255]
-function ARC4init(key) {
- var i, j, t;
- for(i = 0; i < 256; ++i)
- this.S[i] = i;
- j = 0;
- for(i = 0; i < 256; ++i) {
- j = (j + this.S[i] + key[i % key.length]) & 255;
- t = this.S[i];
- this.S[i] = this.S[j];
- this.S[j] = t;
- }
- this.i = 0;
- this.j = 0;
-}
-
-function ARC4next() {
- var t;
- this.i = (this.i + 1) & 255;
- this.j = (this.j + this.S[this.i]) & 255;
- t = this.S[this.i];
- this.S[this.i] = this.S[this.j];
- this.S[this.j] = t;
- return this.S[(t + this.S[this.i]) & 255];
-}
-
-Arcfour.prototype.init = ARC4init;
-Arcfour.prototype.next = ARC4next;
-
-// Plug in your RNG constructor here
-function prng_newstate() {
- return new Arcfour();
-}
-
-// Pool size must be a multiple of 4 and greater than 32.
-// An array of bytes the size of the pool will be passed to init()
-var rng_psize = 256;
-// Random number generator - requires a PRNG backend, e.g. prng4.js
-
-// For best results, put code like
-// <body onClick='rng_seed_time();' onKeyPress='rng_seed_time();'>
-// in your main HTML document.
-
-var rng_state;
-var rng_pool;
-var rng_pptr;
-
-// Mix in a 32-bit integer into the pool
-function rng_seed_int(x) {
- rng_pool[rng_pptr++] ^= x & 255;
- rng_pool[rng_pptr++] ^= (x >> 8) & 255;
- rng_pool[rng_pptr++] ^= (x >> 16) & 255;
- rng_pool[rng_pptr++] ^= (x >> 24) & 255;
- if(rng_pptr >= rng_psize) rng_pptr -= rng_psize;
-}
-
-// Mix in the current time (w/milliseconds) into the pool
-function rng_seed_time() {
- rng_seed_int(new Date().getTime());
-}
-
-// Initialize the pool with junk if needed.
-if(rng_pool == null) {
- rng_pool = new Array();
- rng_pptr = 0;
- var t;
- while(rng_pptr < rng_psize) { // extract some randomness from Math.random()
- t = Math.floor(65536 * Math.random());
- rng_pool[rng_pptr++] = t >>> 8;
- rng_pool[rng_pptr++] = t & 255;
- }
- rng_pptr = 0;
- rng_seed_time();
- //rng_seed_int(window.screenX);
- //rng_seed_int(window.screenY);
-}
-
-function rng_get_byte() {
- if(rng_state == null) {
- rng_seed_time();
- rng_state = prng_newstate();
- rng_state.init(rng_pool);
- for(rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr)
- rng_pool[rng_pptr] = 0;
- rng_pptr = 0;
- //rng_pool = null;
- }
- // TODO: allow reseeding after first request
- return rng_state.next();
-}
-
-function rng_get_bytes(ba) {
- var i;
- for(i = 0; i < ba.length; ++i) ba[i] = rng_get_byte();
-}
-
-function SecureRandom() {}
-
-SecureRandom.prototype.nextBytes = rng_get_bytes;
-// Depends on jsbn.js and rng.js
-
-// convert a (hex) string to a bignum object
-function parseBigInt(str,r) {
- return new BigInteger(str,r);
-}
-
-function linebrk(s,n) {
- var ret = "";
- var i = 0;
- while(i + n < s.length) {
- ret += s.substring(i,i+n) + "\n";
- i += n;
- }
- return ret + s.substring(i,s.length);
-}
-
-function byte2Hex(b) {
- if(b < 0x10)
- return "0" + b.toString(16);
- else
- return b.toString(16);
-}
-
-// PKCS#1 (type 2, random) pad input string s to n bytes, and return a bigint
-function pkcs1pad2(s,n) {
- if(n < s.length + 11) {
- alert("Message too long for RSA");
- return null;
- }
- var ba = new Array();
- var i = s.length - 1;
- while(i >= 0 && n > 0) ba[--n] = s.charCodeAt(i--);
- ba[--n] = 0;
- var rng = new SecureRandom();
- var x = new Array();
- while(n > 2) { // random non-zero pad
- x[0] = 0;
- while(x[0] == 0) rng.nextBytes(x);
- ba[--n] = x[0];
- }
- ba[--n] = 2;
- ba[--n] = 0;
- return new BigInteger(ba);
-}
-
-// "empty" RSA key constructor
-function RSAKey() {
- this.n = null;
- this.e = 0;
- this.d = null;
- this.p = null;
- this.q = null;
- this.dmp1 = null;
- this.dmq1 = null;
- this.coeff = null;
-}
-
-// Set the public key fields N and e from hex strings
-function RSASetPublic(N,E) {
- if(N != null && E != null && N.length > 0 && E.length > 0) {
- this.n = parseBigInt(N,16);
- this.e = parseInt(E,16);
- }
- else
- alert("Invalid RSA public key");
-}
-
-// Perform raw public operation on "x": return x^e (mod n)
-function RSADoPublic(x) {
- return x.modPowInt(this.e, this.n);
-}
-
-// Return the PKCS#1 RSA encryption of "text" as an even-length hex string
-function RSAEncrypt(text) {
- var m = pkcs1pad2(text,(this.n.bitLength()+7)>>3);
- if(m == null) return null;
- var c = this.doPublic(m);
- if(c == null) return null;
- var h = c.toString(16);
- if((h.length & 1) == 0) return h; else return "0" + h;
-}
-
-// Return the PKCS#1 RSA encryption of "text" as a Base64-encoded string
-//function RSAEncryptB64(text) {
-// var h = this.encrypt(text);
-// if(h) return hex2b64(h); else return null;
-//}
-
-// protected
-RSAKey.prototype.doPublic = RSADoPublic;
-
-// public
-RSAKey.prototype.setPublic = RSASetPublic;
-RSAKey.prototype.encrypt = RSAEncrypt;
-//RSAKey.prototype.encrypt_b64 = RSAEncryptB64;
-// Depends on rsa.js and jsbn2.js
-
-// Undo PKCS#1 (type 2, random) padding and, if valid, return the plaintext
-function pkcs1unpad2(d,n) {
- var b = d.toByteArray();
- var i = 0;
- while(i < b.length && b[i] == 0) ++i;
- if(b.length-i != n-1 || b[i] != 2)
- return null;
- ++i;
- while(b[i] != 0)
- if(++i >= b.length) return null;
- var ret = "";
- while(++i < b.length)
- ret += String.fromCharCode(b[i]);
- return ret;
-}
-
-// Set the private key fields N, e, and d from hex strings
-function RSASetPrivate(N,E,D) {
- if(N != null && E != null && N.length > 0 && E.length > 0) {
- this.n = parseBigInt(N,16);
- this.e = parseInt(E,16);
- this.d = parseBigInt(D,16);
- }
- else
- alert("Invalid RSA private key");
-}
-
-// Set the private key fields N, e, d and CRT params from hex strings
-function RSASetPrivateEx(N,E,D,P,Q,DP,DQ,C) {
- if(N != null && E != null && N.length > 0 && E.length > 0) {
- this.n = parseBigInt(N,16);
- this.e = parseInt(E,16);
- this.d = parseBigInt(D,16);
- this.p = parseBigInt(P,16);
- this.q = parseBigInt(Q,16);
- this.dmp1 = parseBigInt(DP,16);
- this.dmq1 = parseBigInt(DQ,16);
- this.coeff = parseBigInt(C,16);
- }
- else
- alert("Invalid RSA private key");
-}
-
-// Generate a new random private key B bits long, using public expt E
-function RSAGenerate(B,E) {
- var rng = new SecureRandom();
- var qs = B>>1;
- this.e = parseInt(E,16);
- var ee = new BigInteger(E,16);
- for(;;) {
- for(;;) {
- this.p = new BigInteger(B-qs,1,rng);
- if(this.p.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE) == 0 && this.p.isProbablePrime(10)) break;
- }
- for(;;) {
- this.q = new BigInteger(qs,1,rng);
- if(this.q.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE) == 0 && this.q.isProbablePrime(10)) break;
- }
- if(this.p.compareTo(this.q) <= 0) {
- var t = this.p;
- this.p = this.q;
- this.q = t;
- }
- var p1 = this.p.subtract(BigInteger.ONE);
- var q1 = this.q.subtract(BigInteger.ONE);
- var phi = p1.multiply(q1);
- if(phi.gcd(ee).compareTo(BigInteger.ONE) == 0) {
- this.n = this.p.multiply(this.q);
- this.d = ee.modInverse(phi);
- this.dmp1 = this.d.mod(p1);
- this.dmq1 = this.d.mod(q1);
- this.coeff = this.q.modInverse(this.p);
- break;
- }
- }
-}
-
-// Perform raw private operation on "x": return x^d (mod n)
-function RSADoPrivate(x) {
- if(this.p == null || this.q == null)
- return x.modPow(this.d, this.n);
-
- // TODO: re-calculate any missing CRT params
- var xp = x.mod(this.p).modPow(this.dmp1, this.p);
- var xq = x.mod(this.q).modPow(this.dmq1, this.q);
-
- while(xp.compareTo(xq) < 0)
- xp = xp.add(this.p);
- return xp.subtract(xq).multiply(this.coeff).mod(this.p).multiply(this.q).add(xq);
-}
-
-// Return the PKCS#1 RSA decryption of "ctext".
-// "ctext" is an even-length hex string and the output is a plain string.
-function RSADecrypt(ctext) {
- var c = parseBigInt(ctext, 16);
- var m = this.doPrivate(c);
- if(m == null) return null;
- return pkcs1unpad2(m, (this.n.bitLength()+7)>>3);
-}
-
-// Return the PKCS#1 RSA decryption of "ctext".
-// "ctext" is a Base64-encoded string and the output is a plain string.
-//function RSAB64Decrypt(ctext) {
-// var h = b64tohex(ctext);
-// if(h) return this.decrypt(h); else return null;
-//}
-
-// protected
-RSAKey.prototype.doPrivate = RSADoPrivate;
-
-// public
-RSAKey.prototype.setPrivate = RSASetPrivate;
-RSAKey.prototype.setPrivateEx = RSASetPrivateEx;
-RSAKey.prototype.generate = RSAGenerate;
-RSAKey.prototype.decrypt = RSADecrypt;
-//RSAKey.prototype.b64_decrypt = RSAB64Decrypt;
-
-
-nValue="a5261939975948bb7a58dffe5ff54e65f0498f9175f5a09288810b8975871e99af3b5dd94057b0fc07535f5f97444504fa35169d461d0d30cf0192e307727c065168c788771c561a9400fb49175e9e6aa4e23fe11af69e9412dd23b0cb6684c4c2429bce139e848ab26d0829073351f4acd36074eafd036a5eb83359d2a698d3";
-eValue="10001";
-dValue="8e9912f6d3645894e8d38cb58c0db81ff516cf4c7e5a14c7f1eddb1459d2cded4d8d293fc97aee6aefb861859c8b6a3d1dfe710463e1f9ddc72048c09751971c4a580aa51eb523357a3cc48d31cfad1d4a165066ed92d4748fb6571211da5cb14bc11b6e2df7c1a559e6d5ac1cd5c94703a22891464fba23d0d965086277a161";
-pValue="d090ce58a92c75233a6486cb0a9209bf3583b64f540c76f5294bb97d285eed33aec220bde14b2417951178ac152ceab6da7090905b478195498b352048f15e7d";
-qValue="cab575dc652bb66df15a0359609d51d1db184750c00c6698b90ef3465c99655103edbf0d54c56aec0ce3c4d22592338092a126a0cc49f65a4a30d222b411e58f";
-dmp1Value="1a24bca8e273df2f0e47c199bbf678604e7df7215480c77c8db39f49b000ce2cf7500038acfff5433b7d582a01f1826e6f4d42e1c57f5e1fef7b12aabc59fd25";
-dmq1Value="3d06982efbbe47339e1f6d36b1216b8a741d410b0c662f54f7118b27b9a4ec9d914337eb39841d8666f3034408cf94f5b62f11c402fc994fe15a05493150d9fd";
-coeffValue="3a3e731acd8960b7ff9eb81a7ff93bd1cfa74cbd56987db58b4594fb09c09084db1734c8143f98b602b981aaa9243ca28deb69b5b280ee8dcee0fd2625e53250";
-
-setupEngine(am3, 28);
-
-var RSA = new RSAKey();
-var TEXT = "The quick brown fox jumped over the extremely lazy frogs!";
-
-RSA.setPublic(nValue, eValue);
-RSA.setPrivateEx(nValue, eValue, dValue, pValue, qValue, dmp1Value, dmq1Value, coeffValue);
-
-function encrypt() {
- return RSA.encrypt(TEXT);
-}
-
-function decrypt() {
- return RSA.decrypt(TEXT);
-}
-
-for (var i = 0; i < 8; ++i) {
- encrypt();
- decrypt();
-}
diff --git a/SunSpider/tests/v8-deltablue.js b/SunSpider/tests/v8-deltablue.js
deleted file mode 100644
index 0391a3b..0000000
--- a/SunSpider/tests/v8-deltablue.js
+++ /dev/null
@@ -1,877 +0,0 @@
-// Copyright 2008 Google Inc. All Rights Reserved.
-// Copyright 1996 John Maloney and Mario Wolczko.
-
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-// This implementation of the DeltaBlue benchmark is derived
-// from the Smalltalk implementation by John Maloney and Mario
-// Wolczko. Some parts have been translated directly, whereas
-// others have been modified more aggresively to make it feel
-// more like a JavaScript program.
-
-/**
- * A JavaScript implementation of the DeltaBlue constrain-solving
- * algorithm, as described in:
- *
- * "The DeltaBlue Algorithm: An Incremental Constraint Hierarchy Solver"
- * Bjorn N. Freeman-Benson and John Maloney
- * January 1990 Communications of the ACM,
- * also available as University of Washington TR 89-08-06.
- *
- * Beware: this benchmark is written in a grotesque style where
- * the constraint model is built by side-effects from constructors.
- * I've kept it this way to avoid deviating too much from the original
- * implementation.
- */
-
-
-/* --- O b j e c t M o d e l --- */
-
-Object.prototype.inherits = function (shuper) {
- function Inheriter() { }
- Inheriter.prototype = shuper.prototype;
- this.prototype = new Inheriter();
- this.superConstructor = shuper;
-}
-
-function OrderedCollection() {
- this.elms = new Array();
-}
-
-OrderedCollection.prototype.add = function (elm) {
- this.elms.push(elm);
-}
-
-OrderedCollection.prototype.at = function (index) {
- return this.elms[index];
-}
-
-OrderedCollection.prototype.size = function () {
- return this.elms.length;
-}
-
-OrderedCollection.prototype.removeFirst = function () {
- return this.elms.pop();
-}
-
-OrderedCollection.prototype.remove = function (elm) {
- var index = 0, skipped = 0;
- for (var i = 0; i < this.elms.length; i++) {
- var value = this.elms[i];
- if (value != elm) {
- this.elms[index] = value;
- index++;
- } else {
- skipped++;
- }
- }
- for (var i = 0; i < skipped; i++)
- this.elms.pop();
-}
-
-/* --- *
- * S t r e n g t h
- * --- */
-
-/**
- * Strengths are used to measure the relative importance of constraints.
- * New strengths may be inserted in the strength hierarchy without
- * disrupting current constraints. Strengths cannot be created outside
- * this class, so pointer comparison can be used for value comparison.
- */
-function Strength(strengthValue, name) {
- this.strengthValue = strengthValue;
- this.name = name;
-}
-
-Strength.stronger = function (s1, s2) {
- return s1.strengthValue < s2.strengthValue;
-}
-
-Strength.weaker = function (s1, s2) {
- return s1.strengthValue > s2.strengthValue;
-}
-
-Strength.weakestOf = function (s1, s2) {
- return this.weaker(s1, s2) ? s1 : s2;
-}
-
-Strength.strongest = function (s1, s2) {
- return this.stronger(s1, s2) ? s1 : s2;
-}
-
-Strength.prototype.nextWeaker = function () {
- switch (this.strengthValue) {
- case 0: return Strength.WEAKEST;
- case 1: return Strength.WEAK_DEFAULT;
- case 2: return Strength.NORMAL;
- case 3: return Strength.STRONG_DEFAULT;
- case 4: return Strength.PREFERRED;
- case 5: return Strength.REQUIRED;
- }
-}
-
-// Strength constants.
-Strength.REQUIRED = new Strength(0, "required");
-Strength.STONG_PREFERRED = new Strength(1, "strongPreferred");
-Strength.PREFERRED = new Strength(2, "preferred");
-Strength.STRONG_DEFAULT = new Strength(3, "strongDefault");
-Strength.NORMAL = new Strength(4, "normal");
-Strength.WEAK_DEFAULT = new Strength(5, "weakDefault");
-Strength.WEAKEST = new Strength(6, "weakest");
-
-/* --- *
- * C o n s t r a i n t
- * --- */
-
-/**
- * An abstract class representing a system-maintainable relationship
- * (or "constraint") between a set of variables. A constraint supplies
- * a strength instance variable; concrete subclasses provide a means
- * of storing the constrained variables and other information required
- * to represent a constraint.
- */
-function Constraint(strength) {
- this.strength = strength;
-}
-
-/**
- * Activate this constraint and attempt to satisfy it.
- */
-Constraint.prototype.addConstraint = function () {
- this.addToGraph();
- planner.incrementalAdd(this);
-}
-
-/**
- * Attempt to find a way to enforce this constraint. If successful,
- * record the solution, perhaps modifying the current dataflow
- * graph. Answer the constraint that this constraint overrides, if
- * there is one, or nil, if there isn't.
- * Assume: I am not already satisfied.
- */
-Constraint.prototype.satisfy = function (mark) {
- this.chooseMethod(mark);
- if (!this.isSatisfied()) {
- if (this.strength == Strength.REQUIRED)
- alert("Could not satisfy a required constraint!");
- return null;
- }
- this.markInputs(mark);
- var out = this.output();
- var overridden = out.determinedBy;
- if (overridden != null) overridden.markUnsatisfied();
- out.determinedBy = this;
- if (!planner.addPropagate(this, mark))
- alert("Cycle encountered");
- out.mark = mark;
- return overridden;
-}
-
-Constraint.prototype.destroyConstraint = function () {
- if (this.isSatisfied()) planner.incrementalRemove(this);
- else this.removeFromGraph();
-}
-
-/**
- * Normal constraints are not input constraints. An input constraint
- * is one that depends on external state, such as the mouse, the
- * keybord, a clock, or some arbitraty piece of imperative code.
- */
-Constraint.prototype.isInput = function () {
- return false;
-}
-
-/* --- *
- * U n a r y C o n s t r a i n t
- * --- */
-
-/**
- * Abstract superclass for constraints having a single possible output
- * variable.
- */
-function UnaryConstraint(v, strength) {
- UnaryConstraint.superConstructor.call(this, strength);
- this.myOutput = v;
- this.satisfied = false;
- this.addConstraint();
-}
-
-UnaryConstraint.inherits(Constraint);
-
-/**
- * Adds this constraint to the constraint graph
- */
-UnaryConstraint.prototype.addToGraph = function () {
- this.myOutput.addConstraint(this);
- this.satisfied = false;
-}
-
-/**
- * Decides if this constraint can be satisfied and records that
- * decision.
- */
-UnaryConstraint.prototype.chooseMethod = function (mark) {
- this.satisfied = (this.myOutput.mark != mark)
- && Strength.stronger(this.strength, this.myOutput.walkStrength);
-}
-
-/**
- * Returns true if this constraint is satisfied in the current solution.
- */
-UnaryConstraint.prototype.isSatisfied = function () {
- return this.satisfied;
-}
-
-UnaryConstraint.prototype.markInputs = function (mark) {
- // has no inputs
-}
-
-/**
- * Returns the current output variable.
- */
-UnaryConstraint.prototype.output = function () {
- return this.myOutput;
-}
-
-/**
- * Calculate the walkabout strength, the stay flag, and, if it is
- * 'stay', the value for the current output of this constraint. Assume
- * this constraint is satisfied.
- */
-UnaryConstraint.prototype.recalculate = function () {
- this.myOutput.walkStrength = this.strength;
- this.myOutput.stay = !this.isInput();
- if (this.myOutput.stay) this.execute(); // Stay optimization
-}
-
-/**
- * Records that this constraint is unsatisfied
- */
-UnaryConstraint.prototype.markUnsatisfied = function () {
- this.satisfied = false;
-}
-
-UnaryConstraint.prototype.inputsKnown = function () {
- return true;
-}
-
-UnaryConstraint.prototype.removeFromGraph = function () {
- if (this.myOutput != null) this.myOutput.removeConstraint(this);
- this.satisfied = false;
-}
-
-/* --- *
- * S t a y C o n s t r a i n t
- * --- */
-
-/**
- * Variables that should, with some level of preference, stay the same.
- * Planners may exploit the fact that instances, if satisfied, will not
- * change their output during plan execution. This is called "stay
- * optimization".
- */
-function StayConstraint(v, str) {
- StayConstraint.superConstructor.call(this, v, str);
-}
-
-StayConstraint.inherits(UnaryConstraint);
-
-StayConstraint.prototype.execute = function () {
- // Stay constraints do nothing
-}
-
-/* --- *
- * E d i t C o n s t r a i n t
- * --- */
-
-/**
- * A unary input constraint used to mark a variable that the client
- * wishes to change.
- */
-function EditConstraint(v, str) {
- EditConstraint.superConstructor.call(this, v, str);
-}
-
-EditConstraint.inherits(UnaryConstraint);
-
-/**
- * Edits indicate that a variable is to be changed by imperative code.
- */
-EditConstraint.prototype.isInput = function () {
- return true;
-}
-
-EditConstraint.prototype.execute = function () {
- // Edit constraints do nothing
-}
-
-/* --- *
- * B i n a r y C o n s t r a i n t
- * --- */
-
-var Direction = new Object();
-Direction.NONE = 0;
-Direction.FORWARD = 1;
-Direction.BACKWARD = -1;
-
-/**
- * Abstract superclass for constraints having two possible output
- * variables.
- */
-function BinaryConstraint(var1, var2, strength) {
- BinaryConstraint.superConstructor.call(this, strength);
- this.v1 = var1;
- this.v2 = var2;
- this.direction = Direction.NONE;
- this.addConstraint();
-}
-
-BinaryConstraint.inherits(Constraint);
-
-/**
- * Decides if this constratint can be satisfied and which way it
- * should flow based on the relative strength of the variables related,
- * and record that decision.
- */
-BinaryConstraint.prototype.chooseMethod = function (mark) {
- if (this.v1.mark == mark) {
- this.direction = (this.v1.mark != mark && Strength.stronger(this.strength, this.v2.walkStrength))
- ? Direction.FORWARD
- : Direction.NONE;
- }
- if (this.v2.mark == mark) {
- this.direction = (this.v1.mark != mark && Strength.stronger(this.strength, this.v1.walkStrength))
- ? Direction.BACKWARD
- : Direction.NONE;
- }
- if (Strength.weaker(this.v1.walkStrength, this.v2.walkStrength)) {
- this.direction = Strength.stronger(this.strength, this.v1.walkStrength)
- ? Direction.BACKWARD
- : Direction.NONE;
- } else {
- this.direction = Strength.stronger(this.strength, this.v2.walkStrength)
- ? Direction.FORWARD
- : Direction.BACKWARD
- }
-}
-
-/**
- * Add this constraint to the constraint graph
- */
-BinaryConstraint.prototype.addToGraph = function () {
- this.v1.addConstraint(this);
- this.v2.addConstraint(this);
- this.direction = Direction.NONE;
-}
-
-/**
- * Answer true if this constraint is satisfied in the current solution.
- */
-BinaryConstraint.prototype.isSatisfied = function () {
- return this.direction != Direction.NONE;
-}
-
-/**
- * Mark the input variable with the given mark.
- */
-BinaryConstraint.prototype.markInputs = function (mark) {
- this.input().mark = mark;
-}
-
-/**
- * Returns the current input variable
- */
-BinaryConstraint.prototype.input = function () {
- return (this.direction == Direction.FORWARD) ? this.v1 : this.v2;
-}
-
-/**
- * Returns the current output variable
- */
-BinaryConstraint.prototype.output = function () {
- return (this.direction == Direction.FORWARD) ? this.v2 : this.v1;
-}
-
-/**
- * Calculate the walkabout strength, the stay flag, and, if it is
- * 'stay', the value for the current output of this
- * constraint. Assume this constraint is satisfied.
- */
-BinaryConstraint.prototype.recalculate = function () {
- var ihn = this.input(), out = this.output();
- out.walkStrength = Strength.weakestOf(this.strength, ihn.walkStrength);
- out.stay = ihn.stay;
- if (out.stay) this.execute();
-}
-
-/**
- * Record the fact that this constraint is unsatisfied.
- */
-BinaryConstraint.prototype.markUnsatisfied = function () {
- this.direction = Direction.NONE;
-}
-
-BinaryConstraint.prototype.inputsKnown = function (mark) {
- var i = this.input();
- return i.mark == mark || i.stay || i.determinedBy == null;
-}
-
-BinaryConstraint.prototype.removeFromGraph = function () {
- if (this.v1 != null) this.v1.removeConstraint(this);
- if (this.v2 != null) this.v2.removeConstraint(this);
- this.direction = Direction.NONE;
-}
-
-/* --- *
- * S c a l e C o n s t r a i n t
- * --- */
-
-/**
- * Relates two variables by the linear scaling relationship: "v2 =
- * (v1 * scale) + offset". Either v1 or v2 may be changed to maintain
- * this relationship but the scale factor and offset are considered
- * read-only.
- */
-function ScaleConstraint(src, scale, offset, dest, strength) {
- this.direction = Direction.NONE;
- this.scale = scale;
- this.offset = offset;
- ScaleConstraint.superConstructor.call(this, src, dest, strength);
-}
-
-ScaleConstraint.inherits(BinaryConstraint);
-
-/**
- * Adds this constraint to the constraint graph.
- */
-ScaleConstraint.prototype.addToGraph = function () {
- ScaleConstraint.superConstructor.prototype.addToGraph.call(this);
- this.scale.addConstraint(this);
- this.offset.addConstraint(this);
-}
-
-ScaleConstraint.prototype.removeFromGraph = function () {
- ScaleConstraint.superConstructor.prototype.removeFromGraph.call(this);
- if (this.scale != null) this.scale.removeConstraint(this);
- if (this.offset != null) this.offset.removeConstraint(this);
-}
-
-ScaleConstraint.prototype.markInputs = function (mark) {
- ScaleConstraint.superConstructor.prototype.markInputs.call(this, mark);
- this.scale.mark = this.offset.mark = mark;
-}
-
-/**
- * Enforce this constraint. Assume that it is satisfied.
- */
-ScaleConstraint.prototype.execute = function () {
- if (this.direction == Direction.FORWARD) {
- this.v2.value = this.v1.value * this.scale.value + this.offset.value;
- } else {
- this.v1.value = (this.v2.value - this.offset.value) / this.scale.value;
- }
-}
-
-/**
- * Calculate the walkabout strength, the stay flag, and, if it is
- * 'stay', the value for the current output of this constraint. Assume
- * this constraint is satisfied.
- */
-ScaleConstraint.prototype.recalculate = function () {
- var ihn = this.input(), out = this.output();
- out.walkStrength = Strength.weakestOf(this.strength, ihn.walkStrength);
- out.stay = ihn.stay && this.scale.stay && this.offset.stay;
- if (out.stay) this.execute();
-}
-
-/* --- *
- * E q u a l i t y C o n s t r a i n t
- * --- */
-
-/**
- * Constrains two variables to have the same value.
- */
-function EqualityConstraint(var1, var2, strength) {
- EqualityConstraint.superConstructor.call(this, var1, var2, strength);
-}
-
-EqualityConstraint.inherits(BinaryConstraint);
-
-/**
- * Enforce this constraint. Assume that it is satisfied.
- */
-EqualityConstraint.prototype.execute = function () {
- this.output().value = this.input().value;
-}
-
-/* --- *
- * V a r i a b l e
- * --- */
-
-/**
- * A constrained variable. In addition to its value, it maintain the
- * structure of the constraint graph, the current dataflow graph, and
- * various parameters of interest to the DeltaBlue incremental
- * constraint solver.
- **/
-function Variable(name, initialValue) {
- this.value = initialValue || 0;
- this.constraints = new OrderedCollection();
- this.determinedBy = null;
- this.mark = 0;
- this.walkStrength = Strength.WEAKEST;
- this.stay = true;
- this.name = name;
-}
-
-/**
- * Add the given constraint to the set of all constraints that refer
- * this variable.
- */
-Variable.prototype.addConstraint = function (c) {
- this.constraints.add(c);
-}
-
-/**
- * Removes all traces of c from this variable.
- */
-Variable.prototype.removeConstraint = function (c) {
- this.constraints.remove(c);
- if (this.determinedBy == c) this.determinedBy = null;
-}
-
-/* --- *
- * P l a n n e r
- * --- */
-
-/**
- * The DeltaBlue planner
- */
-function Planner() {
- this.currentMark = 0;
-}
-
-/**
- * Attempt to satisfy the given constraint and, if successful,
- * incrementally update the dataflow graph. Details: If satifying
- * the constraint is successful, it may override a weaker constraint
- * on its output. The algorithm attempts to resatisfy that
- * constraint using some other method. This process is repeated
- * until either a) it reaches a variable that was not previously
- * determined by any constraint or b) it reaches a constraint that
- * is too weak to be satisfied using any of its methods. The
- * variables of constraints that have been processed are marked with
- * a unique mark value so that we know where we've been. This allows
- * the algorithm to avoid getting into an infinite loop even if the
- * constraint graph has an inadvertent cycle.
- */
-Planner.prototype.incrementalAdd = function (c) {
- var mark = this.newMark();
- var overridden = c.satisfy(mark);
- while (overridden != null)
- overridden = overridden.satisfy(mark);
-}
-
-/**
- * Entry point for retracting a constraint. Remove the given
- * constraint and incrementally update the dataflow graph.
- * Details: Retracting the given constraint may allow some currently
- * unsatisfiable downstream constraint to be satisfied. We therefore collect
- * a list of unsatisfied downstream constraints and attempt to
- * satisfy each one in turn. This list is traversed by constraint
- * strength, strongest first, as a heuristic for avoiding
- * unnecessarily adding and then overriding weak constraints.
- * Assume: c is satisfied.
- */
-Planner.prototype.incrementalRemove = function (c) {
- var out = c.output();
- c.markUnsatisfied();
- c.removeFromGraph();
- var unsatisfied = this.removePropagateFrom(out);
- var strength = Strength.REQUIRED;
- do {
- for (var i = 0; i < unsatisfied.size(); i++) {
- var u = unsatisfied.at(i);
- if (u.strength == strength)
- this.incrementalAdd(u);
- }
- strength = strength.nextWeaker();
- } while (strength != Strength.WEAKEST);
-}
-
-/**
- * Select a previously unused mark value.
- */
-Planner.prototype.newMark = function () {
- return ++this.currentMark;
-}
-
-/**
- * Extract a plan for resatisfaction starting from the given source
- * constraints, usually a set of input constraints. This method
- * assumes that stay optimization is desired; the plan will contain
- * only constraints whose output variables are not stay. Constraints
- * that do no computation, such as stay and edit constraints, are
- * not included in the plan.
- * Details: The outputs of a constraint are marked when it is added
- * to the plan under construction. A constraint may be appended to
- * the plan when all its input variables are known. A variable is
- * known if either a) the variable is marked (indicating that has
- * been computed by a constraint appearing earlier in the plan), b)
- * the variable is 'stay' (i.e. it is a constant at plan execution
- * time), or c) the variable is not determined by any
- * constraint. The last provision is for past states of history
- * variables, which are not stay but which are also not computed by
- * any constraint.
- * Assume: sources are all satisfied.
- */
-Planner.prototype.makePlan = function (sources) {
- var mark = this.newMark();
- var plan = new Plan();
- var todo = sources;
- while (todo.size() > 0) {
- var c = todo.removeFirst();
- if (c.output().mark != mark && c.inputsKnown(mark)) {
- plan.addConstraint(c);
- c.output().mark = mark;
- this.addConstraintsConsumingTo(c.output(), todo);
- }
- }
- return plan;
-}
-
-/**
- * Extract a plan for resatisfying starting from the output of the
- * given constraints, usually a set of input constraints.
- */
-Planner.prototype.extractPlanFromConstraints = function (constraints) {
- var sources = new OrderedCollection();
- for (var i = 0; i < constraints.size(); i++) {
- var c = constraints.at(i);
- if (c.isInput() && c.isSatisfied())
- // not in plan already and eligible for inclusion
- sources.add(c);
- }
- return this.makePlan(sources);
-}
-
-/**
- * Recompute the walkabout strengths and stay flags of all variables
- * downstream of the given constraint and recompute the actual
- * values of all variables whose stay flag is true. If a cycle is
- * detected, remove the given constraint and answer
- * false. Otherwise, answer true.
- * Details: Cycles are detected when a marked variable is
- * encountered downstream of the given constraint. The sender is
- * assumed to have marked the inputs of the given constraint with
- * the given mark. Thus, encountering a marked node downstream of
- * the output constraint means that there is a path from the
- * constraint's output to one of its inputs.
- */
-Planner.prototype.addPropagate = function (c, mark) {
- var todo = new OrderedCollection();
- todo.add(c);
- while (todo.size() > 0) {
- var d = todo.removeFirst();
- if (d.output().mark == mark) {
- this.incrementalRemove(c);
- return false;
- }
- d.recalculate();
- this.addConstraintsConsumingTo(d.output(), todo);
- }
- return true;
-}
-
-
-/**
- * Update the walkabout strengths and stay flags of all variables
- * downstream of the given constraint. Answer a collection of
- * unsatisfied constraints sorted in order of decreasing strength.
- */
-Planner.prototype.removePropagateFrom = function (out) {
- out.determinedBy = null;
- out.walkStrength = Strength.WEAKEST;
- out.stay = true;
- var unsatisfied = new OrderedCollection();
- var todo = new OrderedCollection();
- todo.add(out);
- while (todo.size() > 0) {
- var v = todo.removeFirst();
- for (var i = 0; i < v.constraints.size(); i++) {
- var c = v.constraints.at(i);
- if (!c.isSatisfied())
- unsatisfied.add(c);
- }
- var determining = v.determinedBy;
- for (var i = 0; i < v.constraints.size(); i++) {
- var next = v.constraints.at(i);
- if (next != determining && next.isSatisfied()) {
- next.recalculate();
- todo.add(next.output());
- }
- }
- }
- return unsatisfied;
-}
-
-Planner.prototype.addConstraintsConsumingTo = function (v, coll) {
- var determining = v.determinedBy;
- var cc = v.constraints;
- for (var i = 0; i < cc.size(); i++) {
- var c = cc.at(i);
- if (c != determining && c.isSatisfied())
- coll.add(c);
- }
-}
-
-/* --- *
- * P l a n
- * --- */
-
-/**
- * A Plan is an ordered list of constraints to be executed in sequence
- * to resatisfy all currently satisfiable constraints in the face of
- * one or more changing inputs.
- */
-function Plan() {
- this.v = new OrderedCollection();
-}
-
-Plan.prototype.addConstraint = function (c) {
- this.v.add(c);
-}
-
-Plan.prototype.size = function () {
- return this.v.size();
-}
-
-Plan.prototype.constraintAt = function (index) {
- return this.v.at(index);
-}
-
-Plan.prototype.execute = function () {
- for (var i = 0; i < this.size(); i++) {
- var c = this.constraintAt(i);
- c.execute();
- }
-}
-
-/* --- *
- * M a i n
- * --- */
-
-/**
- * This is the standard DeltaBlue benchmark. A long chain of equality
- * constraints is constructed with a stay constraint on one end. An
- * edit constraint is then added to the opposite end and the time is
- * measured for adding and removing this constraint, and extracting
- * and executing a constraint satisfaction plan. There are two cases.
- * In case 1, the added constraint is stronger than the stay
- * constraint and values must propagate down the entire length of the
- * chain. In case 2, the added constraint is weaker than the stay
- * constraint so it cannot be accomodated. The cost in this case is,
- * of course, very low. Typical situations lie somewhere between these
- * two extremes.
- */
-function chainTest(n) {
- planner = new Planner();
- var prev = null, first = null, last = null;
-
- // Build chain of n equality constraints
- for (var i = 0; i <= n; i++) {
- var name = "v" + i;
- var v = new Variable(name);
- if (prev != null)
- new EqualityConstraint(prev, v, Strength.REQUIRED);
- if (i == 0) first = v;
- if (i == n) last = v;
- prev = v;
- }
-
- new StayConstraint(last, Strength.STRONG_DEFAULT);
- var edit = new EditConstraint(first, Strength.PREFERRED);
- var edits = new OrderedCollection();
- edits.add(edit);
- var plan = planner.extractPlanFromConstraints(edits);
- for (var i = 0; i < 100; i++) {
- first.value = i;
- plan.execute();
- if (last.value != i)
- alert("Chain test failed.");
- }
-}
-
-/**
- * This test constructs a two sets of variables related to each
- * other by a simple linear transformation (scale and offset). The
- * time is measured to change a variable on either side of the
- * mapping and to change the scale and offset factors.
- */
-function projectionTest(n) {
- planner = new Planner();
- var scale = new Variable("scale", 10);
- var offset = new Variable("offset", 1000);
- var src = null, dst = null;
-
- var dests = new OrderedCollection();
- for (var i = 0; i < n; i++) {
- src = new Variable("src" + i, i);
- dst = new Variable("dst" + i, i);
- dests.add(dst);
- new StayConstraint(src, Strength.NORMAL);
- new ScaleConstraint(src, scale, offset, dst, Strength.REQUIRED);
- }
-
- change(src, 17);
- if (dst.value != 1170) alert("Projection 1 failed");
- change(dst, 1050);
- if (src.value != 5) alert("Projection 2 failed");
- change(scale, 5);
- for (var i = 0; i < n - 1; i++) {
- if (dests.at(i).value != i * 5 + 1000)
- alert("Projection 3 failed");
- }
- change(offset, 2000);
- for (var i = 0; i < n - 1; i++) {
- if (dests.at(i).value != i * 5 + 2000)
- alert("Projection 4 failed");
- }
-}
-
-function change(v, newValue) {
- var edit = new EditConstraint(v, Strength.PREFERRED);
- var edits = new OrderedCollection();
- edits.add(edit);
- var plan = planner.extractPlanFromConstraints(edits);
- for (var i = 0; i < 10; i++) {
- v.value = newValue;
- plan.execute();
- }
- edit.destroyConstraint();
-}
-
-// Global variable holding the current planner.
-var planner = null;
-
-function deltaBlue() {
- chainTest(100);
- projectionTest(100);
-}
-
-for (var i = 0; i < 155; ++i)
- deltaBlue();
diff --git a/SunSpider/tests/v8-earley-boyer.js b/SunSpider/tests/v8-earley-boyer.js
deleted file mode 100644
index e86a005..0000000
--- a/SunSpider/tests/v8-earley-boyer.js
+++ /dev/null
@@ -1,4680 +0,0 @@
-// This file is automatically generated by scheme2js, except for the
-// benchmark harness code at the beginning and end of the file.
-
-/************* GENERATED FILE - DO NOT EDIT *************/
-/************* GENERATED FILE - DO NOT EDIT *************/
-/************* GENERATED FILE - DO NOT EDIT *************/
-/************* GENERATED FILE - DO NOT EDIT *************/
-/************* GENERATED FILE - DO NOT EDIT *************/
-/************* GENERATED FILE - DO NOT EDIT *************/
-/************* GENERATED FILE - DO NOT EDIT *************/
-/************* GENERATED FILE - DO NOT EDIT *************/
-/*
- * To use write/prints/... the default-output port has to be set first.
- * Simply setting SC_DEFAULT_OUT and SC_ERROR_OUT to the desired values
- * should do the trick.
- * In the following example the std-out and error-port are redirected to
- * a DIV.
-function initRuntime() {
- function escapeHTML(s) {
- var tmp = s;
- tmp = tmp.replace(/&/g, "&amp;");
- tmp = tmp.replace(/</g, "&lt;");
- tmp = tmp.replace(/>/g, "&gt;");
- tmp = tmp.replace(/ /g, "&nbsp;");
- tmp = tmp.replace(/\n/g, "<br />");
- tmp = tmp.replace(/\t/g, "&nbsp;&nbsp;&nbsp;&nbsp");
- return tmp;
-
- }
-
- document.write("<div id='stdout'></div>");
- SC_DEFAULT_OUT = new sc_GenericOutputPort(
- function(s) {
- var stdout = document.getElementById('stdout');
- stdout.innerHTML = stdout.innerHTML + escapeHTML(s);
- });
- SC_ERROR_OUT = SC_DEFAULT_OUT;
-}
-*/
-
-
-function sc_print_debug() {
- sc_print.apply(null, arguments);
-}
-/*** META ((export *js*)) */
-var sc_JS_GLOBALS = this;
-
-var __sc_LINE=-1;
-var __sc_FILE="";
-
-/*** META ((export #t)) */
-function sc_alert() {
- var len = arguments.length;
- var s = "";
- var i;
-
- for( i = 0; i < len; i++ ) {
- s += sc_toDisplayString(arguments[ i ]);
- }
-
- return alert( s );
-}
-
-/*** META ((export #t)) */
-function sc_typeof( x ) {
- return typeof x;
-}
-
-/*** META ((export #t)) */
-function sc_error() {
- var a = [sc_jsstring2symbol("*error*")];
- for (var i = 0; i < arguments.length; i++) {
- a[i+1] = arguments[i];
- }
- throw a;
-}
-
-/*** META ((export #t)
- (peephole (prefix "throw ")))
-*/
-function sc_raise(obj) {
- throw obj;
-}
-
-/*** META ((export with-handler-lambda)) */
-function sc_withHandlerLambda(handler, body) {
- try {
- return body();
- } catch(e) {
- if (!e._internalException)
- return handler(e);
- else
- throw e;
- }
-}
-
-var sc_properties = new Object();
-
-/*** META ((export #t)) */
-function sc_putpropBang(sym, key, val) {
- var ht = sc_properties[sym];
- if (!ht) {
- ht = new Object();
- sc_properties[sym] = ht;
- }
- ht[key] = val;
-}
-
-/*** META ((export #t)) */
-function sc_getprop(sym, key) {
- var ht = sc_properties[sym];
- if (ht) {
- if (key in ht)
- return ht[key];
- else
- return false;
- } else
- return false;
-}
-
-/*** META ((export #t)) */
-function sc_rempropBang(sym, key) {
- var ht = sc_properties[sym];
- if (ht)
- delete ht[key];
-}
-
-/*** META ((export #t)) */
-function sc_any2String(o) {
- return jsstring2string(sc_toDisplayString(o));
-}
-
-/*** META ((export #t)
- (peephole (infix 2 2 "==="))
- (type bool))
-*/
-function sc_isEqv(o1, o2) {
- return (o1 === o2);
-}
-
-/*** META ((export #t)
- (peephole (infix 2 2 "==="))
- (type bool))
-*/
-function sc_isEq(o1, o2) {
- return (o1 === o2);
-}
-
-/*** META ((export #t)
- (type bool))
-*/
-function sc_isNumber(n) {
- return (typeof n === "number");
-}
-
-/*** META ((export #t)
- (type bool))
-*/
-function sc_isComplex(n) {
- return sc_isNumber(n);
-}
-
-/*** META ((export #t)
- (type bool))
-*/
-function sc_isReal(n) {
- return sc_isNumber(n);
-}
-
-/*** META ((export #t)
- (type bool))
-*/
-function sc_isRational(n) {
- return sc_isReal(n);
-}
-
-/*** META ((export #t)
- (type bool))
-*/
-function sc_isInteger(n) {
- return (parseInt(n) === n);
-}
-
-/*** META ((export #t)
- (type bool)
- (peephole (postfix ", false")))
-*/
-// we don't have exact numbers...
-function sc_isExact(n) {
- return false;
-}
-
-/*** META ((export #t)
- (peephole (postfix ", true"))
- (type bool))
-*/
-function sc_isInexact(n) {
- return true;
-}
-
-/*** META ((export = =fx =fl)
- (type bool)
- (peephole (infix 2 2 "===")))
-*/
-function sc_equal(x) {
- for (var i = 1; i < arguments.length; i++)
- if (x !== arguments[i])
- return false;
- return true;
-}
-
-/*** META ((export < <fx <fl)
- (type bool)
- (peephole (infix 2 2 "<")))
-*/
-function sc_less(x) {
- for (var i = 1; i < arguments.length; i++) {
- if (x >= arguments[i])
- return false;
- x = arguments[i];
- }
- return true;
-}
-
-/*** META ((export > >fx >fl)
- (type bool)
- (peephole (infix 2 2 ">")))
-*/
-function sc_greater(x, y) {
- for (var i = 1; i < arguments.length; i++) {
- if (x <= arguments[i])
- return false;
- x = arguments[i];
- }
- return true;
-}
-
-/*** META ((export <= <=fx <=fl)
- (type bool)
- (peephole (infix 2 2 "<=")))
-*/
-function sc_lessEqual(x, y) {
- for (var i = 1; i < arguments.length; i++) {
- if (x > arguments[i])
- return false;
- x = arguments[i];
- }
- return true;
-}
-
-/*** META ((export >= >=fl >=fx)
- (type bool)
- (peephole (infix 2 2 ">=")))
-*/
-function sc_greaterEqual(x, y) {
- for (var i = 1; i < arguments.length; i++) {
- if (x < arguments[i])
- return false;
- x = arguments[i];
- }
- return true;
-}
-
-/*** META ((export #t)
- (type bool)
- (peephole (postfix "=== 0")))
-*/
-function sc_isZero(x) {
- return (x === 0);
-}
-
-/*** META ((export #t)
- (type bool)
- (peephole (postfix "> 0")))
-*/
-function sc_isPositive(x) {
- return (x > 0);
-}
-
-/*** META ((export #t)
- (type bool)
- (peephole (postfix "< 0")))
-*/
-function sc_isNegative(x) {
- return (x < 0);
-}
-
-/*** META ((export #t)
- (type bool)
- (peephole (postfix "%2===1")))
-*/
-function sc_isOdd(x) {
- return (x % 2 === 1);
-}
-
-/*** META ((export #t)
- (type bool)
- (peephole (postfix "%2===0")))
-*/
-function sc_isEven(x) {
- return (x % 2 === 0);
-}
-
-/*** META ((export #t)) */
-var sc_max = Math.max;
-/*** META ((export #t)) */
-var sc_min = Math.min;
-
-/*** META ((export + +fx +fl)
- (peephole (infix 0 #f "+" "0")))
-*/
-function sc_plus() {
- var sum = 0;
- for (var i = 0; i < arguments.length; i++)
- sum += arguments[i];
- return sum;
-}
-
-/*** META ((export * *fx *fl)
- (peephole (infix 0 #f "*" "1")))
-*/
-function sc_multi() {
- var product = 1;
- for (var i = 0; i < arguments.length; i++)
- product *= arguments[i];
- return product;
-}
-
-/*** META ((export - -fx -fl)
- (peephole (minus)))
-*/
-function sc_minus(x) {
- if (arguments.length === 1)
- return -x;
- else {
- var res = x;
- for (var i = 1; i < arguments.length; i++)
- res -= arguments[i];
- return res;
- }
-}
-
-/*** META ((export / /fl)
- (peephole (div)))
-*/
-function sc_div(x) {
- if (arguments.length === 1)
- return 1/x;
- else {
- var res = x;
- for (var i = 1; i < arguments.length; i++)
- res /= arguments[i];
- return res;
- }
-}
-
-/*** META ((export #t)) */
-var sc_abs = Math.abs;
-
-/*** META ((export quotient /fx)
- (peephole (hole 2 "parseInt(" x "/" y ")")))
-*/
-function sc_quotient(x, y) {
- return parseInt(x / y);
-}
-
-/*** META ((export #t)
- (peephole (infix 2 2 "%")))
-*/
-function sc_remainder(x, y) {
- return x % y;
-}
-
-/*** META ((export #t)
- (peephole (modulo)))
-*/
-function sc_modulo(x, y) {
- var remainder = x % y;
- // if they don't have the same sign
- if ((remainder * y) < 0)
- return remainder + y;
- else
- return remainder;
-}
-
-function sc_euclid_gcd(a, b) {
- var temp;
- if (a === 0) return b;
- if (b === 0) return a;
- if (a < 0) {a = -a;};
- if (b < 0) {b = -b;};
- if (b > a) {temp = a; a = b; b = temp;};
- while (true) {
- a %= b;
- if(a === 0) {return b;};
- b %= a;
- if(b === 0) {return a;};
- };
- return b;
-}
-
-/*** META ((export #t)) */
-function sc_gcd() {
- var gcd = 0;
- for (var i = 0; i < arguments.length; i++)
- gcd = sc_euclid_gcd(gcd, arguments[i]);
- return gcd;
-}
-
-/*** META ((export #t)) */
-function sc_lcm() {
- var lcm = 1;
- for (var i = 0; i < arguments.length; i++) {
- var f = Math.round(arguments[i] / sc_euclid_gcd(arguments[i], lcm));
- lcm *= Math.abs(f);
- }
- return lcm;
-}
-
-// LIMITATION: numerator and denominator don't make sense in floating point world.
-//var SC_MAX_DECIMALS = 1000000
-//
-// function sc_numerator(x) {
-// var rounded = Math.round(x * SC_MAX_DECIMALS);
-// return Math.round(rounded / sc_euclid_gcd(rounded, SC_MAX_DECIMALS));
-// }
-
-// function sc_denominator(x) {
-// var rounded = Math.round(x * SC_MAX_DECIMALS);
-// return Math.round(SC_MAX_DECIMALS / sc_euclid_gcd(rounded, SC_MAX_DECIMALS));
-// }
-
-/*** META ((export #t)) */
-var sc_floor = Math.floor;
-/*** META ((export #t)) */
-var sc_ceiling = Math.ceil;
-/*** META ((export #t)) */
-var sc_truncate = parseInt;
-/*** META ((export #t)) */
-var sc_round = Math.round;
-
-// LIMITATION: sc_rationalize doesn't make sense in a floating point world.
-
-/*** META ((export #t)) */
-var sc_exp = Math.exp;
-/*** META ((export #t)) */
-var sc_log = Math.log;
-/*** META ((export #t)) */
-var sc_sin = Math.sin;
-/*** META ((export #t)) */
-var sc_cos = Math.cos;
-/*** META ((export #t)) */
-var sc_tan = Math.tan;
-/*** META ((export #t)) */
-var sc_asin = Math.asin;
-/*** META ((export #t)) */
-var sc_acos = Math.acos;
-/*** META ((export #t)) */
-var sc_atan = Math.atan;
-
-/*** META ((export #t)) */
-var sc_sqrt = Math.sqrt;
-/*** META ((export #t)) */
-var sc_expt = Math.pow;
-
-// LIMITATION: we don't have complex numbers.
-// LIMITATION: the following functions are hence not implemented.
-// LIMITATION: make-rectangular, make-polar, real-part, imag-part, magnitude, angle
-// LIMITATION: 2 argument atan
-
-/*** META ((export #t)
- (peephole (id)))
-*/
-function sc_exact2inexact(x) {
- return x;
-}
-
-/*** META ((export #t)
- (peephole (id)))
-*/
-function sc_inexact2exact(x) {
- return x;
-}
-
-function sc_number2jsstring(x, radix) {
- if (radix)
- return x.toString(radix);
- else
- return x.toString();
-}
-
-function sc_jsstring2number(s, radix) {
- if (s === "") return false;
-
- if (radix) {
- var t = parseInt(s, radix);
- if (!t && t !== 0) return false;
- // verify that each char is in range. (parseInt ignores leading
- // white and trailing chars)
- var allowedChars = "01234567890abcdefghijklmnopqrstuvwxyz".substring(0, radix+1);
- if ((new RegExp("^["+allowedChars+"]*$", "i")).test(s))
- return t;
- else return false;
- } else {
- var t = +s; // does not ignore trailing chars.
- if (!t && t !== 0) return false;
- // simply verify that first char is not whitespace.
- var c = s.charAt(0);
- // if +c is 0, but the char is not "0", then we have a whitespace.
- if (+c === 0 && c !== "0") return false;
- return t;
- }
-}
-
-/*** META ((export #t)
- (type bool)
- (peephole (not)))
-*/
-function sc_not(b) {
- return b === false;
-}
-
-/*** META ((export #t)
- (type bool))
-*/
-function sc_isBoolean(b) {
- return (b === true) || (b === false);
-}
-
-function sc_Pair(car, cdr) {
- this.car = car;
- this.cdr = cdr;
-}
-
-sc_Pair.prototype.toString = function() {
- return sc_toDisplayString(this);
-};
-sc_Pair.prototype.sc_toWriteOrDisplayString = function(writeOrDisplay) {
- var current = this;
-
- var res = "(";
-
- while(true) {
- res += writeOrDisplay(current.car);
- if (sc_isPair(current.cdr)) {
- res += " ";
- current = current.cdr;
- } else if (current.cdr !== null) {
- res += " . " + writeOrDisplay(current.cdr);
- break;
- } else // current.cdr == null
- break;
- }
-
- res += ")";
-
- return res;
-};
-sc_Pair.prototype.sc_toDisplayString = function() {
- return this.sc_toWriteOrDisplayString(sc_toDisplayString);
-};
-sc_Pair.prototype.sc_toWriteString = function() {
- return this.sc_toWriteOrDisplayString(sc_toWriteString);
-};
-// sc_Pair.prototype.sc_toWriteCircleString in IO.js
-
-/*** META ((export #t)
- (type bool)
- (peephole (postfix " instanceof sc_Pair")))
-*/
-function sc_isPair(p) {
- return (p instanceof sc_Pair);
-}
-
-function sc_isPairEqual(p1, p2, comp) {
- return (comp(p1.car, p2.car) && comp(p1.cdr, p2.cdr));
-}
-
-/*** META ((export #t)
- (peephole (hole 2 "new sc_Pair(" car ", " cdr ")")))
-*/
-function sc_cons(car, cdr) {
- return new sc_Pair(car, cdr);
-}
-
-/*** META ((export cons*)) */
-function sc_consStar() {
- var res = arguments[arguments.length - 1];
- for (var i = arguments.length-2; i >= 0; i--)
- res = new sc_Pair(arguments[i], res);
- return res;
-}
-
-/*** META ((export #t)
- (peephole (postfix ".car")))
-*/
-function sc_car(p) {
- return p.car;
-}
-
-/*** META ((export #t)
- (peephole (postfix ".cdr")))
-*/
-function sc_cdr(p) {
- return p.cdr;
-}
-
-/*** META ((export #t)
- (peephole (hole 2 p ".car = " val)))
-*/
-function sc_setCarBang(p, val) {
- p.car = val;
-}
-
-/*** META ((export #t)
- (peephole (hole 2 p ".cdr = " val)))
-*/
-function sc_setCdrBang(p, val) {
- p.cdr = val;
-}
-
-/*** META ((export #t)
- (peephole (postfix ".car.car")))
-*/
-function sc_caar(p) { return p.car.car; }
-/*** META ((export #t)
- (peephole (postfix ".cdr.car")))
-*/
-function sc_cadr(p) { return p.cdr.car; }
-/*** META ((export #t)
- (peephole (postfix ".car.cdr")))
-*/
-function sc_cdar(p) { return p.car.cdr; }
-/*** META ((export #t)
- (peephole (postfix ".cdr.cdr")))
-*/
-function sc_cddr(p) { return p.cdr.cdr; }
-/*** META ((export #t)
- (peephole (postfix ".car.car.car")))
-*/
-function sc_caaar(p) { return p.car.car.car; }
-/*** META ((export #t)
- (peephole (postfix ".car.cdr.car")))
-*/
-function sc_cadar(p) { return p.car.cdr.car; }
-/*** META ((export #t)
- (peephole (postfix ".cdr.car.car")))
-*/
-function sc_caadr(p) { return p.cdr.car.car; }
-/*** META ((export #t)
- (peephole (postfix ".cdr.cdr.car")))
-*/
-function sc_caddr(p) { return p.cdr.cdr.car; }
-/*** META ((export #t)
- (peephole (postfix ".car.car.cdr")))
-*/
-function sc_cdaar(p) { return p.car.car.cdr; }
-/*** META ((export #t)
- (peephole (postfix ".cdr.car.cdr")))
-*/
-function sc_cdadr(p) { return p.cdr.car.cdr; }
-/*** META ((export #t)
- (peephole (postfix ".car.cdr.cdr")))
-*/
-function sc_cddar(p) { return p.car.cdr.cdr; }
-/*** META ((export #t)
- (peephole (postfix ".cdr.cdr.cdr")))
-*/
-function sc_cdddr(p) { return p.cdr.cdr.cdr; }
-/*** META ((export #t)
- (peephole (postfix ".car.car.car.car")))
-*/
-function sc_caaaar(p) { return p.car.car.car.car; }
-/*** META ((export #t)
- (peephole (postfix ".car.cdr.car.car")))
-*/
-function sc_caadar(p) { return p.car.cdr.car.car; }
-/*** META ((export #t)
- (peephole (postfix ".cdr.car.car.car")))
-*/
-function sc_caaadr(p) { return p.cdr.car.car.car; }
-/*** META ((export #t)
- (peephole (postfix ".cdr.cdr.car.car")))
-*/
-function sc_caaddr(p) { return p.cdr.cdr.car.car; }
-/*** META ((export #t)
- (peephole (postfix ".car.car.car.cdr")))
-*/
-function sc_cdaaar(p) { return p.car.car.car.cdr; }
-/*** META ((export #t)
- (peephole (postfix ".car.cdr.car.cdr")))
-*/
-function sc_cdadar(p) { return p.car.cdr.car.cdr; }
-/*** META ((export #t)
- (peephole (postfix ".cdr.car.car.cdr")))
-*/
-function sc_cdaadr(p) { return p.cdr.car.car.cdr; }
-/*** META ((export #t)
- (peephole (postfix ".cdr.cdr.car.cdr")))
-*/
-function sc_cdaddr(p) { return p.cdr.cdr.car.cdr; }
-/*** META ((export #t)
- (peephole (postfix ".car.car.cdr.car")))
-*/
-function sc_cadaar(p) { return p.car.car.cdr.car; }
-/*** META ((export #t)
- (peephole (postfix ".car.cdr.cdr.car")))
-*/
-function sc_caddar(p) { return p.car.cdr.cdr.car; }
-/*** META ((export #t)
- (peephole (postfix ".cdr.car.cdr.car")))
-*/
-function sc_cadadr(p) { return p.cdr.car.cdr.car; }
-/*** META ((export #t)
- (peephole (postfix ".cdr.cdr.cdr.car")))
-*/
-function sc_cadddr(p) { return p.cdr.cdr.cdr.car; }
-/*** META ((export #t)
- (peephole (postfix ".car.car.cdr.cdr")))
-*/
-function sc_cddaar(p) { return p.car.car.cdr.cdr; }
-/*** META ((export #t)
- (peephole (postfix ".car.cdr.cdr.cdr")))
-*/
-function sc_cdddar(p) { return p.car.cdr.cdr.cdr; }
-/*** META ((export #t)
- (peephole (postfix ".cdr.car.cdr.cdr")))
-*/
-function sc_cddadr(p) { return p.cdr.car.cdr.cdr; }
-/*** META ((export #t)
- (peephole (postfix ".cdr.cdr.cdr.cdr")))
-*/
-function sc_cddddr(p) { return p.cdr.cdr.cdr.cdr; }
-
-/*** META ((export #t)) */
-function sc_lastPair(l) {
- if (!sc_isPair(l)) sc_error("sc_lastPair: pair expected");
- var res = l;
- var cdr = l.cdr;
- while (sc_isPair(cdr)) {
- res = cdr;
- cdr = res.cdr;
- }
- return res;
-}
-
-/*** META ((export #t)
- (type bool)
- (peephole (postfix " === null")))
-*/
-function sc_isNull(o) {
- return (o === null);
-}
-
-/*** META ((export #t)
- (type bool))
-*/
-function sc_isList(o) {
- var rabbit;
- var turtle;
-
- var rabbit = o;
- var turtle = o;
- while (true) {
- if (rabbit === null ||
- (rabbit instanceof sc_Pair && rabbit.cdr === null))
- return true; // end of list
- else if ((rabbit instanceof sc_Pair) &&
- (rabbit.cdr instanceof sc_Pair)) {
- rabbit = rabbit.cdr.cdr;
- turtle = turtle.cdr;
- if (rabbit === turtle) return false; // cycle
- } else
- return false; // not pair
- }
-}
-
-/*** META ((export #t)) */
-function sc_list() {
- var res = null;
- var a = arguments;
- for (var i = a.length-1; i >= 0; i--)
- res = new sc_Pair(a[i], res);
- return res;
-}
-
-/*** META ((export #t)) */
-function sc_iota(num, init) {
- var res = null;
- if (!init) init = 0;
- for (var i = num - 1; i >= 0; i--)
- res = new sc_Pair(i + init, res);
- return res;
-}
-
-/*** META ((export #t)) */
-function sc_makeList(nbEls, fill) {
- var res = null;
- for (var i = 0; i < nbEls; i++)
- res = new sc_Pair(fill, res);
- return res;
-}
-
-/*** META ((export #t)) */
-function sc_length(l) {
- var res = 0;
- while (l !== null) {
- res++;
- l = l.cdr;
- }
- return res;
-}
-
-/*** META ((export #t)) */
-function sc_remq(o, l) {
- var dummy = { cdr : null };
- var tail = dummy;
- while (l !== null) {
- if (l.car !== o) {
- tail.cdr = sc_cons(l.car, null);
- tail = tail.cdr;
- }
- l = l.cdr;
- }
- return dummy.cdr;
-}
-
-/*** META ((export #t)) */
-function sc_remqBang(o, l) {
- var dummy = { cdr : null };
- var tail = dummy;
- var needsAssig = true;
- while (l !== null) {
- if (l.car === o) {
- needsAssig = true;
- } else {
- if (needsAssig) {
- tail.cdr = l;
- needsAssig = false;
- }
- tail = l;
- }
- l = l.cdr;
- }
- tail.cdr = null;
- return dummy.cdr;
-}
-
-/*** META ((export #t)) */
-function sc_delete(o, l) {
- var dummy = { cdr : null };
- var tail = dummy;
- while (l !== null) {
- if (!sc_isEqual(l.car, o)) {
- tail.cdr = sc_cons(l.car, null);
- tail = tail.cdr;
- }
- l = l.cdr;
- }
- return dummy.cdr;
-}
-
-/*** META ((export #t)) */
-function sc_deleteBang(o, l) {
- var dummy = { cdr : null };
- var tail = dummy;
- var needsAssig = true;
- while (l !== null) {
- if (sc_isEqual(l.car, o)) {
- needsAssig = true;
- } else {
- if (needsAssig) {
- tail.cdr = l;
- needsAssig = false;
- }
- tail = l;
- }
- l = l.cdr;
- }
- tail.cdr = null;
- return dummy.cdr;
-}
-
-function sc_reverseAppendBang(l1, l2) {
- var res = l2;
- while (l1 !== null) {
- var tmp = res;
- res = l1;
- l1 = l1.cdr;
- res.cdr = tmp;
- }
- return res;
-}
-
-function sc_dualAppend(l1, l2) {
- if (l1 === null) return l2;
- if (l2 === null) return l1;
- var rev = sc_reverse(l1);
- return sc_reverseAppendBang(rev, l2);
-}
-
-/*** META ((export #t)) */
-function sc_append() {
- if (arguments.length === 0)
- return null;
- var res = arguments[arguments.length - 1];
- for (var i = arguments.length - 2; i >= 0; i--)
- res = sc_dualAppend(arguments[i], res);
- return res;
-}
-
-function sc_dualAppendBang(l1, l2) {
- if (l1 === null) return l2;
- if (l2 === null) return l1;
- var tmp = l1;
- while (tmp.cdr !== null) tmp=tmp.cdr;
- tmp.cdr = l2;
- return l1;
-}
-
-/*** META ((export #t)) */
-function sc_appendBang() {
- var res = null;
- for (var i = 0; i < arguments.length; i++)
- res = sc_dualAppendBang(res, arguments[i]);
- return res;
-}
-
-/*** META ((export #t)) */
-function sc_reverse(l1) {
- var res = null;
- while (l1 !== null) {
- res = sc_cons(l1.car, res);
- l1 = l1.cdr;
- }
- return res;
-}
-
-/*** META ((export #t)) */
-function sc_reverseBang(l) {
- return sc_reverseAppendBang(l, null);
-}
-
-/*** META ((export #t)) */
-function sc_listTail(l, k) {
- var res = l;
- for (var i = 0; i < k; i++) {
- res = res.cdr;
- }
- return res;
-}
-
-/*** META ((export #t)) */
-function sc_listRef(l, k) {
- return sc_listTail(l, k).car;
-}
-
-/* // unoptimized generic versions
-function sc_memX(o, l, comp) {
- while (l != null) {
- if (comp(l.car, o))
- return l;
- l = l.cdr;
- }
- return false;
-}
-function sc_memq(o, l) { return sc_memX(o, l, sc_isEq); }
-function sc_memv(o, l) { return sc_memX(o, l, sc_isEqv); }
-function sc_member(o, l) { return sc_memX(o, l, sc_isEqual); }
-*/
-
-/* optimized versions */
-/*** META ((export #t)) */
-function sc_memq(o, l) {
- while (l !== null) {
- if (l.car === o)
- return l;
- l = l.cdr;
- }
- return false;
-}
-/*** META ((export #t)) */
-function sc_memv(o, l) {
- while (l !== null) {
- if (l.car === o)
- return l;
- l = l.cdr;
- }
- return false;
-}
-/*** META ((export #t)) */
-function sc_member(o, l) {
- while (l !== null) {
- if (sc_isEqual(l.car,o))
- return l;
- l = l.cdr;
- }
- return false;
-}
-
-/* // generic unoptimized versions
-function sc_assX(o, al, comp) {
- while (al != null) {
- if (comp(al.car.car, o))
- return al.car;
- al = al.cdr;
- }
- return false;
-}
-function sc_assq(o, al) { return sc_assX(o, al, sc_isEq); }
-function sc_assv(o, al) { return sc_assX(o, al, sc_isEqv); }
-function sc_assoc(o, al) { return sc_assX(o, al, sc_isEqual); }
-*/
-// optimized versions
-/*** META ((export #t)) */
-function sc_assq(o, al) {
- while (al !== null) {
- if (al.car.car === o)
- return al.car;
- al = al.cdr;
- }
- return false;
-}
-/*** META ((export #t)) */
-function sc_assv(o, al) {
- while (al !== null) {
- if (al.car.car === o)
- return al.car;
- al = al.cdr;
- }
- return false;
-}
-/*** META ((export #t)) */
-function sc_assoc(o, al) {
- while (al !== null) {
- if (sc_isEqual(al.car.car, o))
- return al.car;
- al = al.cdr;
- }
- return false;
-}
-
-/* can be used for mutable strings and characters */
-function sc_isCharStringEqual(cs1, cs2) { return cs1.val === cs2.val; }
-function sc_isCharStringLess(cs1, cs2) { return cs1.val < cs2.val; }
-function sc_isCharStringGreater(cs1, cs2) { return cs1.val > cs2.val; }
-function sc_isCharStringLessEqual(cs1, cs2) { return cs1.val <= cs2.val; }
-function sc_isCharStringGreaterEqual(cs1, cs2) { return cs1.val >= cs2.val; }
-function sc_isCharStringCIEqual(cs1, cs2)
- { return cs1.val.toLowerCase() === cs2.val.toLowerCase(); }
-function sc_isCharStringCILess(cs1, cs2)
- { return cs1.val.toLowerCase() < cs2.val.toLowerCase(); }
-function sc_isCharStringCIGreater(cs1, cs2)
- { return cs1.val.toLowerCase() > cs2.val.toLowerCase(); }
-function sc_isCharStringCILessEqual(cs1, cs2)
- { return cs1.val.toLowerCase() <= cs2.val.toLowerCase(); }
-function sc_isCharStringCIGreaterEqual(cs1, cs2)
- { return cs1.val.toLowerCase() >= cs2.val.toLowerCase(); }
-
-
-
-
-function sc_Char(c) {
- var cached = sc_Char.lazy[c];
- if (cached)
- return cached;
- this.val = c;
- sc_Char.lazy[c] = this;
- // add return, so FF does not complain.
- return undefined;
-}
-sc_Char.lazy = new Object();
-// thanks to Eric
-sc_Char.char2readable = {
- "\000": "#\\null",
- "\007": "#\\bell",
- "\010": "#\\backspace",
- "\011": "#\\tab",
- "\012": "#\\newline",
- "\014": "#\\page",
- "\015": "#\\return",
- "\033": "#\\escape",
- "\040": "#\\space",
- "\177": "#\\delete",
-
- /* poeticless names */
- "\001": "#\\soh",
- "\002": "#\\stx",
- "\003": "#\\etx",
- "\004": "#\\eot",
- "\005": "#\\enq",
- "\006": "#\\ack",
-
- "\013": "#\\vt",
- "\016": "#\\so",
- "\017": "#\\si",
-
- "\020": "#\\dle",
- "\021": "#\\dc1",
- "\022": "#\\dc2",
- "\023": "#\\dc3",
- "\024": "#\\dc4",
- "\025": "#\\nak",
- "\026": "#\\syn",
- "\027": "#\\etb",
-
- "\030": "#\\can",
- "\031": "#\\em",
- "\032": "#\\sub",
- "\033": "#\\esc",
- "\034": "#\\fs",
- "\035": "#\\gs",
- "\036": "#\\rs",
- "\037": "#\\us"};
-
-sc_Char.readable2char = {
- "null": "\000",
- "bell": "\007",
- "backspace": "\010",
- "tab": "\011",
- "newline": "\012",
- "page": "\014",
- "return": "\015",
- "escape": "\033",
- "space": "\040",
- "delete": "\000",
- "soh": "\001",
- "stx": "\002",
- "etx": "\003",
- "eot": "\004",
- "enq": "\005",
- "ack": "\006",
- "bel": "\007",
- "bs": "\010",
- "ht": "\011",
- "nl": "\012",
- "vt": "\013",
- "np": "\014",
- "cr": "\015",
- "so": "\016",
- "si": "\017",
- "dle": "\020",
- "dc1": "\021",
- "dc2": "\022",
- "dc3": "\023",
- "dc4": "\024",
- "nak": "\025",
- "syn": "\026",
- "etb": "\027",
- "can": "\030",
- "em": "\031",
- "sub": "\032",
- "esc": "\033",
- "fs": "\034",
- "gs": "\035",
- "rs": "\036",
- "us": "\037",
- "sp": "\040",
- "del": "\177"};
-
-sc_Char.prototype.toString = function() {
- return this.val;
-};
-// sc_toDisplayString == toString
-sc_Char.prototype.sc_toWriteString = function() {
- var entry = sc_Char.char2readable[this.val];
- if (entry)
- return entry;
- else
- return "#\\" + this.val;
-};
-
-/*** META ((export #t)
- (type bool)
- (peephole (postfix "instanceof sc_Char")))
-*/
-function sc_isChar(c) {
- return (c instanceof sc_Char);
-}
-
-/*** META ((export char=?)
- (type bool)
- (peephole (hole 2 c1 ".val === " c2 ".val")))
-*/
-var sc_isCharEqual = sc_isCharStringEqual;
-/*** META ((export char<?)
- (type bool)
- (peephole (hole 2 c1 ".val < " c2 ".val")))
-*/
-var sc_isCharLess = sc_isCharStringLess;
-/*** META ((export char>?)
- (type bool)
- (peephole (hole 2 c1 ".val > " c2 ".val")))
-*/
-var sc_isCharGreater = sc_isCharStringGreater;
-/*** META ((export char<=?)
- (type bool)
- (peephole (hole 2 c1 ".val <= " c2 ".val")))
-*/
-var sc_isCharLessEqual = sc_isCharStringLessEqual;
-/*** META ((export char>=?)
- (type bool)
- (peephole (hole 2 c1 ".val >= " c2 ".val")))
-*/
-var sc_isCharGreaterEqual = sc_isCharStringGreaterEqual;
-/*** META ((export char-ci=?)
- (type bool)
- (peephole (hole 2 c1 ".val.toLowerCase() === " c2 ".val.toLowerCase()")))
-*/
-var sc_isCharCIEqual = sc_isCharStringCIEqual;
-/*** META ((export char-ci<?)
- (type bool)
- (peephole (hole 2 c1 ".val.toLowerCase() < " c2 ".val.toLowerCase()")))
-*/
-var sc_isCharCILess = sc_isCharStringCILess;
-/*** META ((export char-ci>?)
- (type bool)
- (peephole (hole 2 c1 ".val.toLowerCase() > " c2 ".val.toLowerCase()")))
-*/
-var sc_isCharCIGreater = sc_isCharStringCIGreater;
-/*** META ((export char-ci<=?)
- (type bool)
- (peephole (hole 2 c1 ".val.toLowerCase() <= " c2 ".val.toLowerCase()")))
-*/
-var sc_isCharCILessEqual = sc_isCharStringCILessEqual;
-/*** META ((export char-ci>=?)
- (type bool)
- (peephole (hole 2 c1 ".val.toLowerCase() >= " c2 ".val.toLowerCase()")))
-*/
-var sc_isCharCIGreaterEqual = sc_isCharStringCIGreaterEqual;
-
-var SC_NUMBER_CLASS = "0123456789";
-var SC_WHITESPACE_CLASS = ' \r\n\t\f';
-var SC_LOWER_CLASS = 'abcdefghijklmnopqrstuvwxyz';
-var SC_UPPER_CLASS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
-
-function sc_isCharOfClass(c, cl) { return (cl.indexOf(c) != -1); }
-/*** META ((export #t)
- (type bool))
-*/
-function sc_isCharAlphabetic(c)
- { return sc_isCharOfClass(c.val, SC_LOWER_CLASS) ||
- sc_isCharOfClass(c.val, SC_UPPER_CLASS); }
-/*** META ((export #t)
- (type bool)
- (peephole (hole 1 "SC_NUMBER_CLASS.indexOf(" c ".val) != -1")))
-*/
-function sc_isCharNumeric(c)
- { return sc_isCharOfClass(c.val, SC_NUMBER_CLASS); }
-/*** META ((export #t)
- (type bool))
-*/
-function sc_isCharWhitespace(c) {
- var tmp = c.val;
- return tmp === " " || tmp === "\r" || tmp === "\n" || tmp === "\t" || tmp === "\f";
-}
-/*** META ((export #t)
- (type bool)
- (peephole (hole 1 "SC_UPPER_CLASS.indexOf(" c ".val) != -1")))
-*/
-function sc_isCharUpperCase(c)
- { return sc_isCharOfClass(c.val, SC_UPPER_CLASS); }
-/*** META ((export #t)
- (type bool)
- (peephole (hole 1 "SC_LOWER_CLASS.indexOf(" c ".val) != -1")))
-*/
-function sc_isCharLowerCase(c)
- { return sc_isCharOfClass(c.val, SC_LOWER_CLASS); }
-
-/*** META ((export #t)
- (peephole (postfix ".val.charCodeAt(0)")))
-*/
-function sc_char2integer(c)
- { return c.val.charCodeAt(0); }
-/*** META ((export #t)
- (peephole (hole 1 "new sc_Char(String.fromCharCode(" n "))")))
-*/
-function sc_integer2char(n)
- { return new sc_Char(String.fromCharCode(n)); }
-
-/*** META ((export #t)
- (peephole (hole 1 "new sc_Char(" c ".val.toUpperCase())")))
-*/
-function sc_charUpcase(c)
- { return new sc_Char(c.val.toUpperCase()); }
-/*** META ((export #t)
- (peephole (hole 1 "new sc_Char(" c ".val.toLowerCase())")))
-*/
-function sc_charDowncase(c)
- { return new sc_Char(c.val.toLowerCase()); }
-
-function sc_makeJSStringOfLength(k, c) {
- var fill;
- if (c === undefined)
- fill = " ";
- else
- fill = c;
- var res = "";
- var len = 1;
- // every round doubles the size of fill.
- while (k >= len) {
- if (k & len)
- res = res.concat(fill);
- fill = fill.concat(fill);
- len *= 2;
- }
- return res;
-}
-
-function sc_makejsString(k, c) {
- var fill;
- if (c)
- fill = c.val;
- else
- fill = " ";
- return sc_makeJSStringOfLength(k, fill);
-}
-
-function sc_jsstring2list(s) {
- var res = null;
- for (var i = s.length - 1; i >= 0; i--)
- res = sc_cons(new sc_Char(s.charAt(i)), res);
- return res;
-}
-
-function sc_list2jsstring(l) {
- var a = new Array();
- while(l !== null) {
- a.push(l.car.val);
- l = l.cdr;
- }
- return "".concat.apply("", a);
-}
-
-var sc_Vector = Array;
-
-sc_Vector.prototype.sc_toWriteOrDisplayString = function(writeOrDisplay) {
- if (this.length === 0) return "#()";
-
- var res = "#(" + writeOrDisplay(this[0]);
- for (var i = 1; i < this.length; i++)
- res += " " + writeOrDisplay(this[i]);
- res += ")";
- return res;
-};
-sc_Vector.prototype.sc_toDisplayString = function() {
- return this.sc_toWriteOrDisplayString(sc_toDisplayString);
-};
-sc_Vector.prototype.sc_toWriteString = function() {
- return this.sc_toWriteOrDisplayString(sc_toWriteString);
-};
-
-/*** META ((export vector? array?)
- (type bool)
- (peephole (postfix " instanceof sc_Vector")))
-*/
-function sc_isVector(v) {
- return (v instanceof sc_Vector);
-}
-
-// only applies to vectors
-function sc_isVectorEqual(v1, v2, comp) {
- if (v1.length !== v2.length) return false;
- for (var i = 0; i < v1.length; i++)
- if (!comp(v1[i], v2[i])) return false;
- return true;
-}
-
-/*** META ((export make-vector make-array)) */
-function sc_makeVector(size, fill) {
- var a = new sc_Vector(size);
- if (fill !== undefined)
- sc_vectorFillBang(a, fill);
- return a;
-}
-
-/*** META ((export vector array)
- (peephole (vector)))
-*/
-function sc_vector() {
- var a = new sc_Vector();
- for (var i = 0; i < arguments.length; i++)
- a.push(arguments[i]);
- return a;
-}
-
-/*** META ((export vector-length array-length)
- (peephole (postfix ".length")))
-*/
-function sc_vectorLength(v) {
- return v.length;
-}
-
-/*** META ((export vector-ref array-ref)
- (peephole (hole 2 v "[" pos "]")))
-*/
-function sc_vectorRef(v, pos) {
- return v[pos];
-}
-
-/*** META ((export vector-set! array-set!)
- (peephole (hole 3 v "[" pos "] = " val)))
-*/
-function sc_vectorSetBang(v, pos, val) {
- v[pos] = val;
-}
-
-/*** META ((export vector->list array->list)) */
-function sc_vector2list(a) {
- var res = null;
- for (var i = a.length-1; i >= 0; i--)
- res = sc_cons(a[i], res);
- return res;
-}
-
-/*** META ((export list->vector list->array)) */
-function sc_list2vector(l) {
- var a = new sc_Vector();
- while(l !== null) {
- a.push(l.car);
- l = l.cdr;
- }
- return a;
-}
-
-/*** META ((export vector-fill! array-fill!)) */
-function sc_vectorFillBang(a, fill) {
- for (var i = 0; i < a.length; i++)
- a[i] = fill;
-}
-
-
-/*** META ((export #t)) */
-function sc_copyVector(a, len) {
- if (len <= a.length)
- return a.slice(0, len);
- else {
- var tmp = a.concat();
- tmp.length = len;
- return tmp;
- }
-}
-
-/*** META ((export #t)
- (peephole (hole 3 a ".slice(" start "," end ")")))
-*/
-function sc_vectorCopy(a, start, end) {
- return a.slice(start, end);
-}
-
-/*** META ((export #t)) */
-function sc_vectorCopyBang(target, tstart, source, sstart, send) {
- if (!sstart) sstart = 0;
- if (!send) send = source.length;
-
- // if target == source we don't want to overwrite not yet copied elements.
- if (tstart <= sstart) {
- for (var i = tstart, j = sstart; j < send; i++, j++) {
- target[i] = source[j];
- }
- } else {
- var diff = send - sstart;
- for (var i = tstart + diff - 1, j = send - 1;
- j >= sstart;
- i--, j--) {
- target[i] = source[j];
- }
- }
- return target;
-}
-
-/*** META ((export #t)
- (type bool)
- (peephole (hole 1 "typeof " o " === 'function'")))
-*/
-function sc_isProcedure(o) {
- return (typeof o === "function");
-}
-
-/*** META ((export #t)) */
-function sc_apply(proc) {
- var args = new Array();
- // first part of arguments are not in list-form.
- for (var i = 1; i < arguments.length - 1; i++)
- args.push(arguments[i]);
- var l = arguments[arguments.length - 1];
- while (l !== null) {
- args.push(l.car);
- l = l.cdr;
- }
- return proc.apply(null, args);
-}
-
-/*** META ((export #t)) */
-function sc_map(proc, l1) {
- if (l1 === undefined)
- return null;
- // else
- var nbApplyArgs = arguments.length - 1;
- var applyArgs = new Array(nbApplyArgs);
- var revres = null;
- while (l1 !== null) {
- for (var i = 0; i < nbApplyArgs; i++) {
- applyArgs[i] = arguments[i + 1].car;
- arguments[i + 1] = arguments[i + 1].cdr;
- }
- revres = sc_cons(proc.apply(null, applyArgs), revres);
- }
- return sc_reverseAppendBang(revres, null);
-}
-
-/*** META ((export #t)) */
-function sc_mapBang(proc, l1) {
- if (l1 === undefined)
- return null;
- // else
- var l1_orig = l1;
- var nbApplyArgs = arguments.length - 1;
- var applyArgs = new Array(nbApplyArgs);
- while (l1 !== null) {
- var tmp = l1;
- for (var i = 0; i < nbApplyArgs; i++) {
- applyArgs[i] = arguments[i + 1].car;
- arguments[i + 1] = arguments[i + 1].cdr;
- }
- tmp.car = proc.apply(null, applyArgs);
- }
- return l1_orig;
-}
-
-/*** META ((export #t)) */
-function sc_forEach(proc, l1) {
- if (l1 === undefined)
- return undefined;
- // else
- var nbApplyArgs = arguments.length - 1;
- var applyArgs = new Array(nbApplyArgs);
- while (l1 !== null) {
- for (var i = 0; i < nbApplyArgs; i++) {
- applyArgs[i] = arguments[i + 1].car;
- arguments[i + 1] = arguments[i + 1].cdr;
- }
- proc.apply(null, applyArgs);
- }
- // add return so FF does not complain.
- return undefined;
-}
-
-/*** META ((export #t)) */
-function sc_filter(proc, l1) {
- var dummy = { cdr : null };
- var tail = dummy;
- while (l1 !== null) {
- if (proc(l1.car) !== false) {
- tail.cdr = sc_cons(l1.car, null);
- tail = tail.cdr;
- }
- l1 = l1.cdr;
- }
- return dummy.cdr;
-}
-
-/*** META ((export #t)) */
-function sc_filterBang(proc, l1) {
- var head = sc_cons("dummy", l1);
- var it = head;
- var next = l1;
- while (next !== null) {
- if (proc(next.car) !== false) {
- it.cdr = next
- it = next;
- }
- next = next.cdr;
- }
- it.cdr = null;
- return head.cdr;
-}
-
-function sc_filterMap1(proc, l1) {
- var revres = null;
- while (l1 !== null) {
- var tmp = proc(l1.car)
- if (tmp !== false) revres = sc_cons(tmp, revres);
- l1 = l1.cdr;
- }
- return sc_reverseAppendBang(revres, null);
-}
-function sc_filterMap2(proc, l1, l2) {
- var revres = null;
- while (l1 !== null) {
- var tmp = proc(l1.car, l2.car);
- if(tmp !== false) revres = sc_cons(tmp, revres);
- l1 = l1.cdr;
- l2 = l2.cdr
- }
- return sc_reverseAppendBang(revres, null);
-}
-
-/*** META ((export #t)) */
-function sc_filterMap(proc, l1, l2, l3) {
- if (l2 === undefined)
- return sc_filterMap1(proc, l1);
- else if (l3 === undefined)
- return sc_filterMap2(proc, l1, l2);
- // else
- var nbApplyArgs = arguments.length - 1;
- var applyArgs = new Array(nbApplyArgs);
- var revres = null;
- while (l1 !== null) {
- for (var i = 0; i < nbApplyArgs; i++) {
- applyArgs[i] = arguments[i + 1].car;
- arguments[i + 1] = arguments[i + 1].cdr;
- }
- var tmp = proc.apply(null, applyArgs);
- if(tmp !== false) revres = sc_cons(tmp, revres);
- }
- return sc_reverseAppendBang(revres, null);
-}
-
-/*** META ((export #t)) */
-function sc_any(proc, l) {
- var revres = null;
- while (l !== null) {
- var tmp = proc(l.car);
- if(tmp !== false) return tmp;
- l = l.cdr;
- }
- return false;
-}
-
-/*** META ((export any?)
- (peephole (hole 2 "sc_any(" proc "," l ") !== false")))
-*/
-function sc_anyPred(proc, l) {
- return sc_any(proc, l)!== false;
-}
-
-/*** META ((export #t)) */
-function sc_every(proc, l) {
- var revres = null;
- var tmp = true;
- while (l !== null) {
- tmp = proc(l.car);
- if (tmp === false) return false;
- l = l.cdr;
- }
- return tmp;
-}
-
-/*** META ((export every?)
- (peephole (hole 2 "sc_every(" proc "," l ") !== false")))
-*/
-function sc_everyPred(proc, l) {
- var tmp = sc_every(proc, l);
- if (tmp !== false) return true;
- return false;
-}
-
-/*** META ((export #t)
- (peephole (postfix "()")))
-*/
-function sc_force(o) {
- return o();
-}
-
-/*** META ((export #t)) */
-function sc_makePromise(proc) {
- var isResultReady = false;
- var result = undefined;
- return function() {
- if (!isResultReady) {
- var tmp = proc();
- if (!isResultReady) {
- isResultReady = true;
- result = tmp;
- }
- }
- return result;
- };
-}
-
-function sc_Values(values) {
- this.values = values;
-}
-
-/*** META ((export #t)
- (peephole (values)))
-*/
-function sc_values() {
- if (arguments.length === 1)
- return arguments[0];
- else
- return new sc_Values(arguments);
-}
-
-/*** META ((export #t)) */
-function sc_callWithValues(producer, consumer) {
- var produced = producer();
- if (produced instanceof sc_Values)
- return consumer.apply(null, produced.values);
- else
- return consumer(produced);
-}
-
-/*** META ((export #t)) */
-function sc_dynamicWind(before, thunk, after) {
- before();
- try {
- var res = thunk();
- return res;
- } finally {
- after();
- }
-}
-
-
-// TODO: eval/scheme-report-environment/null-environment/interaction-environment
-
-// LIMITATION: 'load' doesn't exist without files.
-// LIMITATION: transcript-on/transcript-off doesn't exist without files.
-
-
-function sc_Struct(name) {
- this.name = name;
-}
-sc_Struct.prototype.sc_toDisplayString = function() {
- return "#<struct" + sc_hash(this) + ">";
-};
-sc_Struct.prototype.sc_toWriteString = sc_Struct.prototype.sc_toDisplayString;
-
-/*** META ((export #t)
- (peephole (hole 1 "new sc_Struct(" name ")")))
-*/
-function sc_makeStruct(name) {
- return new sc_Struct(name);
-}
-
-/*** META ((export #t)
- (type bool)
- (peephole (postfix " instanceof sc_Struct")))
-*/
-function sc_isStruct(o) {
- return (o instanceof sc_Struct);
-}
-
-/*** META ((export #t)
- (type bool)
- (peephole (hole 2 "(" 1 " instanceof sc_Struct) && ( " 1 ".name === " 0 ")")))
-*/
-function sc_isStructNamed(name, s) {
- return ((s instanceof sc_Struct) && (s.name === name));
-}
-
-/*** META ((export struct-field)
- (peephole (hole 3 0 "[" 2 "]")))
-*/
-function sc_getStructField(s, name, field) {
- return s[field];
-}
-
-/*** META ((export struct-field-set!)
- (peephole (hole 4 0 "[" 2 "] = " 3)))
-*/
-function sc_setStructFieldBang(s, name, field, val) {
- s[field] = val;
-}
-
-/*** META ((export #t)
- (peephole (prefix "~")))
-*/
-function sc_bitNot(x) {
- return ~x;
-}
-
-/*** META ((export #t)
- (peephole (infix 2 2 "&")))
-*/
-function sc_bitAnd(x, y) {
- return x & y;
-}
-
-/*** META ((export #t)
- (peephole (infix 2 2 "|")))
-*/
-function sc_bitOr(x, y) {
- return x | y;
-}
-
-/*** META ((export #t)
- (peephole (infix 2 2 "^")))
-*/
-function sc_bitXor(x, y) {
- return x ^ y;
-}
-
-/*** META ((export #t)
- (peephole (infix 2 2 "<<")))
-*/
-function sc_bitLsh(x, y) {
- return x << y;
-}
-
-/*** META ((export #t)
- (peephole (infix 2 2 ">>")))
-*/
-function sc_bitRsh(x, y) {
- return x >> y;
-}
-
-/*** META ((export #t)
- (peephole (infix 2 2 ">>>")))
-*/
-function sc_bitUrsh(x, y) {
- return x >>> y;
-}
-
-/*** META ((export js-field js-property)
- (peephole (hole 2 o "[" field "]")))
-*/
-function sc_jsField(o, field) {
- return o[field];
-}
-
-/*** META ((export js-field-set! js-property-set!)
- (peephole (hole 3 o "[" field "] = " val)))
-*/
-function sc_setJsFieldBang(o, field, val) {
- return o[field] = val;
-}
-
-/*** META ((export js-field-delete! js-property-delete!)
- (peephole (hole 2 "delete" o "[" field "]")))
-*/
-function sc_deleteJsFieldBang(o, field) {
- delete o[field];
-}
-
-/*** META ((export #t)
- (peephole (jsCall)))
-*/
-function sc_jsCall(o, fun) {
- var args = new Array();
- for (var i = 2; i < arguments.length; i++)
- args[i-2] = arguments[i];
- return fun.apply(o, args);
-}
-
-/*** META ((export #t)
- (peephole (jsMethodCall)))
-*/
-function sc_jsMethodCall(o, field) {
- var args = new Array();
- for (var i = 2; i < arguments.length; i++)
- args[i-2] = arguments[i];
- return o[field].apply(o, args);
-}
-
-/*** META ((export new js-new)
- (peephole (jsNew)))
-*/
-function sc_jsNew(c) {
- var evalStr = "new c(";
- evalStr +=arguments.length > 1? "arguments[1]": "";
- for (var i = 2; i < arguments.length; i++)
- evalStr += ", arguments[" + i + "]";
- evalStr +=")";
- return eval(evalStr);
-}
-
-// ======================== RegExp ====================
-/*** META ((export #t)) */
-function sc_pregexp(re) {
- return new RegExp(sc_string2jsstring(re));
-}
-
-/*** META ((export #t)) */
-function sc_pregexpMatch(re, s) {
- var reg = (re instanceof RegExp) ? re : sc_pregexp(re);
- var tmp = reg.exec(sc_string2jsstring(s));
-
- if (tmp == null) return false;
-
- var res = null;
- for (var i = tmp.length-1; i >= 0; i--) {
- if (tmp[i] !== null) {
- res = sc_cons(sc_jsstring2string(tmp[i]), res);
- } else {
- res = sc_cons(false, res);
- }
- }
- return res;
-}
-
-/*** META ((export #t)) */
-function sc_pregexpReplace(re, s1, s2) {
- var reg;
- var jss1 = sc_string2jsstring(s1);
- var jss2 = sc_string2jsstring(s2);
-
- if (re instanceof RegExp) {
- if (re.global)
- reg = re;
- else
- reg = new RegExp(re.source);
- } else {
- reg = new RegExp(sc_string2jsstring(re));
- }
-
- return jss1.replace(reg, jss2);
-}
-
-/*** META ((export pregexp-replace*)) */
-function sc_pregexpReplaceAll(re, s1, s2) {
- var reg;
- var jss1 = sc_string2jsstring(s1);
- var jss2 = sc_string2jsstring(s2);
-
- if (re instanceof RegExp) {
- if (re.global)
- reg = re;
- else
- reg = new RegExp(re.source, "g");
- } else {
- reg = new RegExp(sc_string2jsstring(re), "g");
- }
-
- return jss1.replace(reg, jss2);
-}
-
-/*** META ((export #t)) */
-function sc_pregexpSplit(re, s) {
- var reg = ((re instanceof RegExp) ?
- re :
- new RegExp(sc_string2jsstring(re)));
- var jss = sc_string2jsstring(s);
- var tmp = jss.split(reg);
-
- if (tmp == null) return false;
-
- return sc_vector2list(tmp);
-}
-
-
-/* =========================================================================== */
-/* Other library stuff */
-/* =========================================================================== */
-
-/*** META ((export #t)
- (peephole (hole 1 "Math.floor(Math.random()*" 'n ")")))
-*/
-function sc_random(n) {
- return Math.floor(Math.random()*n);
-}
-
-/*** META ((export current-date)
- (peephole (hole 0 "new Date()")))
-*/
-function sc_currentDate() {
- return new Date();
-}
-
-function sc_Hashtable() {
-}
-sc_Hashtable.prototype.toString = function() {
- return "#{%hashtable}";
-};
-// sc_toWriteString == sc_toDisplayString == toString
-
-function sc_HashtableElement(key, val) {
- this.key = key;
- this.val = val;
-}
-
-/*** META ((export #t)
- (peephole (hole 0 "new sc_Hashtable()")))
-*/
-function sc_makeHashtable() {
- return new sc_Hashtable();
-}
-
-/*** META ((export #t)) */
-function sc_hashtablePutBang(ht, key, val) {
- var hash = sc_hash(key);
- ht[hash] = new sc_HashtableElement(key, val);
-}
-
-/*** META ((export #t)) */
-function sc_hashtableGet(ht, key) {
- var hash = sc_hash(key);
- if (hash in ht)
- return ht[hash].val;
- else
- return false;
-}
-
-/*** META ((export #t)) */
-function sc_hashtableForEach(ht, f) {
- for (var v in ht) {
- if (ht[v] instanceof sc_HashtableElement)
- f(ht[v].key, ht[v].val);
- }
-}
-
-/*** META ((export hashtable-contains?)
- (peephole (hole 2 "sc_hash(" 1 ") in " 0)))
-*/
-function sc_hashtableContains(ht, key) {
- var hash = sc_hash(key);
- if (hash in ht)
- return true;
- else
- return false;
-}
-
-var SC_HASH_COUNTER = 0;
-
-function sc_hash(o) {
- if (o === null)
- return "null";
- else if (o === undefined)
- return "undefined";
- else if (o === true)
- return "true";
- else if (o === false)
- return "false";
- else if (typeof o === "number")
- return "num-" + o;
- else if (typeof o === "string")
- return "jsstr-" + o;
- else if (o.sc_getHash)
- return o.sc_getHash();
- else
- return sc_counterHash.call(o);
-}
-function sc_counterHash() {
- if (!this.sc_hash) {
- this.sc_hash = "hash-" + SC_HASH_COUNTER;
- SC_HASH_COUNTER++;
- }
- return this.sc_hash;
-}
-
-function sc_Trampoline(args, maxTailCalls) {
- this['__trampoline return__'] = true;
- this.args = args;
- this.MAX_TAIL_CALLs = maxTailCalls;
-}
-// TODO: call/cc stuff
-sc_Trampoline.prototype.restart = function() {
- var o = this;
- while (true) {
- // set both globals.
- SC_TAIL_OBJECT.calls = o.MAX_TAIL_CALLs-1;
- var fun = o.args.callee;
- var res = fun.apply(SC_TAIL_OBJECT, o.args);
- if (res instanceof sc_Trampoline)
- o = res;
- else
- return res;
- }
-}
-
-/*** META ((export bind-exit-lambda)) */
-function sc_bindExitLambda(proc) {
- var escape_obj = new sc_BindExitException();
- var escape = function(res) {
- escape_obj.res = res;
- throw escape_obj;
- };
- try {
- return proc(escape);
- } catch(e) {
- if (e === escape_obj) {
- return e.res;
- }
- throw e;
- }
-}
-function sc_BindExitException() {
- this._internalException = true;
-}
-
-var SC_SCM2JS_GLOBALS = new Object();
-
-// default tail-call depth.
-// normally the program should set it again. but just in case...
-var SC_TAIL_OBJECT = new Object();
-SC_SCM2JS_GLOBALS.TAIL_OBJECT = SC_TAIL_OBJECT;
-// ======================== I/O =======================
-
-/*------------------------------------------------------------------*/
-
-function sc_EOF() {
-}
-var SC_EOF_OBJECT = new sc_EOF();
-
-function sc_Port() {
-}
-
-/* --------------- Input ports -------------------------------------*/
-
-function sc_InputPort() {
-}
-sc_InputPort.prototype = new sc_Port();
-
-sc_InputPort.prototype.peekChar = function() {
- if (!("peeked" in this))
- this.peeked = this.getNextChar();
- return this.peeked;
-}
-sc_InputPort.prototype.readChar = function() {
- var tmp = this.peekChar();
- delete this.peeked;
- return tmp;
-}
-sc_InputPort.prototype.isCharReady = function() {
- return true;
-}
-sc_InputPort.prototype.close = function() {
- // do nothing
-}
-
-/* .............. String port ..........................*/
-function sc_ErrorInputPort() {
-};
-sc_ErrorInputPort.prototype = new sc_InputPort();
-sc_ErrorInputPort.prototype.getNextChar = function() {
- throw "can't read from error-port.";
-};
-sc_ErrorInputPort.prototype.isCharReady = function() {
- return false;
-};
-
-
-/* .............. String port ..........................*/
-
-function sc_StringInputPort(jsStr) {
- // we are going to do some charAts on the str.
- // instead of recreating all the time a String-object, we
- // create one in the beginning. (not sure, if this is really an optim)
- this.str = new String(jsStr);
- this.pos = 0;
-}
-sc_StringInputPort.prototype = new sc_InputPort();
-sc_StringInputPort.prototype.getNextChar = function() {
- if (this.pos >= this.str.length)
- return SC_EOF_OBJECT;
- return this.str.charAt(this.pos++);
-};
-
-/* ------------- Read and other lib-funs -------------------------------*/
-function sc_Token(type, val, pos) {
- this.type = type;
- this.val = val;
- this.pos = pos;
-}
-sc_Token.EOF = 0/*EOF*/;
-sc_Token.OPEN_PAR = 1/*OPEN_PAR*/;
-sc_Token.CLOSE_PAR = 2/*CLOSE_PAR*/;
-sc_Token.OPEN_BRACE = 3/*OPEN_BRACE*/;
-sc_Token.CLOSE_BRACE = 4/*CLOSE_BRACE*/;
-sc_Token.OPEN_BRACKET = 5/*OPEN_BRACKET*/;
-sc_Token.CLOSE_BRACKET = 6/*CLOSE_BRACKET*/;
-sc_Token.WHITESPACE = 7/*WHITESPACE*/;
-sc_Token.QUOTE = 8/*QUOTE*/;
-sc_Token.ID = 9/*ID*/;
-sc_Token.DOT = 10/*DOT*/;
-sc_Token.STRING = 11/*STRING*/;
-sc_Token.NUMBER = 12/*NUMBER*/;
-sc_Token.ERROR = 13/*ERROR*/;
-sc_Token.VECTOR_BEGIN = 14/*VECTOR_BEGIN*/;
-sc_Token.TRUE = 15/*TRUE*/;
-sc_Token.FALSE = 16/*FALSE*/;
-sc_Token.UNSPECIFIED = 17/*UNSPECIFIED*/;
-sc_Token.REFERENCE = 18/*REFERENCE*/;
-sc_Token.STORE = 19/*STORE*/;
-sc_Token.CHAR = 20/*CHAR*/;
-
-var SC_ID_CLASS = SC_LOWER_CLASS + SC_UPPER_CLASS + "!$%*+-./:<=>?@^_~";
-function sc_Tokenizer(port) {
- this.port = port;
-}
-sc_Tokenizer.prototype.peekToken = function() {
- if (this.peeked)
- return this.peeked;
- var newToken = this.nextToken();
- this.peeked = newToken;
- return newToken;
-};
-sc_Tokenizer.prototype.readToken = function() {
- var tmp = this.peekToken();
- delete this.peeked;
- return tmp;
-};
-sc_Tokenizer.prototype.nextToken = function() {
- var port = this.port;
-
- function isNumberChar(c) {
- return (c >= "0" && c <= "9");
- };
- function isIdOrNumberChar(c) {
- return SC_ID_CLASS.indexOf(c) != -1 || // ID-char
- (c >= "0" && c <= "9");
- }
- function isWhitespace(c) {
- return c === " " || c === "\r" || c === "\n" || c === "\t" || c === "\f";
- };
- function isWhitespaceOrEOF(c) {
- return isWhitespace(c) || c === SC_EOF_OBJECT;
- };
-
- function readString() {
- res = "";
- while (true) {
- var c = port.readChar();
- switch (c) {
- case '"':
- return new sc_Token(11/*STRING*/, res);
- case "\\":
- var tmp = port.readChar();
- switch (tmp) {
- case '0': res += "\0"; break;
- case 'a': res += "\a"; break;
- case 'b': res += "\b"; break;
- case 'f': res += "\f"; break;
- case 'n': res += "\n"; break;
- case 'r': res += "\r"; break;
- case 't': res += "\t"; break;
- case 'v': res += "\v"; break;
- case '"': res += '"'; break;
- case '\\': res += '\\'; break;
- case 'x':
- /* hexa-number */
- var nb = 0;
- while (true) {
- var hexC = port.peekChar();
- if (hexC >= '0' && hexC <= '9') {
- port.readChar();
- nb = nb * 16 + hexC.charCodeAt(0) - '0'.charCodeAt(0);
- } else if (hexC >= 'a' && hexC <= 'f') {
- port.readChar();
- nb = nb * 16 + hexC.charCodeAt(0) - 'a'.charCodeAt(0);
- } else if (hexC >= 'A' && hexC <= 'F') {
- port.readChar();
- nb = nb * 16 + hexC.charCodeAt(0) - 'A'.charCodeAt(0);
- } else {
- // next char isn't part of hex.
- res += String.fromCharCode(nb);
- break;
- }
- }
- break;
- default:
- if (tmp === SC_EOF_OBJECT) {
- return new sc_Token(13/*ERROR*/, "unclosed string-literal" + res);
- }
- res += tmp;
- }
- break;
- default:
- if (c === SC_EOF_OBJECT) {
- return new sc_Token(13/*ERROR*/, "unclosed string-literal" + res);
- }
- res += c;
- }
- }
- };
- function readIdOrNumber(firstChar) {
- var res = firstChar;
- while (isIdOrNumberChar(port.peekChar()))
- res += port.readChar();
- if (isNaN(res))
- return new sc_Token(9/*ID*/, res);
- else
- return new sc_Token(12/*NUMBER*/, res - 0);
- };
-
- function skipWhitespaceAndComments() {
- var done = false;
- while (!done) {
- done = true;
- while (isWhitespace(port.peekChar()))
- port.readChar();
- if (port.peekChar() === ';') {
- port.readChar();
- done = false;
- while (true) {
- curChar = port.readChar();
- if (curChar === SC_EOF_OBJECT ||
- curChar === '\n')
- break;
- }
- }
- }
- };
-
- function readDot() {
- if (isWhitespace(port.peekChar()))
- return new sc_Token(10/*DOT*/);
- else
- return readIdOrNumber(".");
- };
-
- function readSharp() {
- var c = port.readChar();
- if (isWhitespace(c))
- return new sc_Token(13/*ERROR*/, "bad #-pattern0.");
-
- // reference
- if (isNumberChar(c)) {
- var nb = c - 0;
- while (isNumberChar(port.peekChar()))
- nb = nb*10 + (port.readChar() - 0);
- switch (port.readChar()) {
- case '#':
- return new sc_Token(18/*REFERENCE*/, nb);
- case '=':
- return new sc_Token(19/*STORE*/, nb);
- default:
- return new sc_Token(13/*ERROR*/, "bad #-pattern1." + nb);
- }
- }
-
- if (c === "(")
- return new sc_Token(14/*VECTOR_BEGIN*/);
-
- if (c === "\\") { // character
- var tmp = ""
- while (!isWhitespaceOrEOF(port.peekChar()))
- tmp += port.readChar();
- switch (tmp.length) {
- case 0: // it's escaping a whitespace char:
- if (sc_isEOFObject(port.peekChar))
- return new sc_Token(13/*ERROR*/, "bad #-pattern2.");
- else
- return new sc_Token(20/*CHAR*/, port.readChar());
- case 1:
- return new sc_Token(20/*CHAR*/, tmp);
- default:
- var entry = sc_Char.readable2char[tmp.toLowerCase()];
- if (entry)
- return new sc_Token(20/*CHAR*/, entry);
- else
- return new sc_Token(13/*ERROR*/, "unknown character description: #\\" + tmp);
- }
- }
-
- // some constants (#t, #f, #unspecified)
- var res;
- var needing;
- switch (c) {
- case 't': res = new sc_Token(15/*TRUE*/, true); needing = ""; break;
- case 'f': res = new sc_Token(16/*FALSE*/, false); needing = ""; break;
- case 'u': res = new sc_Token(17/*UNSPECIFIED*/, undefined); needing = "nspecified"; break;
- default:
- return new sc_Token(13/*ERROR*/, "bad #-pattern3: " + c);
- }
- while(true) {
- c = port.peekChar();
- if ((isWhitespaceOrEOF(c) || c === ')') &&
- needing == "")
- return res;
- else if (isWhitespace(c) || needing == "")
- return new sc_Token(13/*ERROR*/, "bad #-pattern4 " + c + " " + needing);
- else if (needing.charAt(0) == c) {
- port.readChar(); // consume
- needing = needing.slice(1);
- } else
- return new sc_Token(13/*ERROR*/, "bad #-pattern5");
- }
-
- };
-
- skipWhitespaceAndComments();
- var curChar = port.readChar();
- if (curChar === SC_EOF_OBJECT)
- return new sc_Token(0/*EOF*/, curChar);
- switch (curChar)
- {
- case " ":
- case "\n":
- case "\t":
- return readWhitespace();
- case "(":
- return new sc_Token(1/*OPEN_PAR*/);
- case ")":
- return new sc_Token(2/*CLOSE_PAR*/);
- case "{":
- return new sc_Token(3/*OPEN_BRACE*/);
- case "}":
- return new sc_Token(4/*CLOSE_BRACE*/);
- case "[":
- return new sc_Token(5/*OPEN_BRACKET*/);
- case "]":
- return new sc_Token(6/*CLOSE_BRACKET*/);
- case "'":
- return new sc_Token(8/*QUOTE*/);
- case "#":
- return readSharp();
- case ".":
- return readDot();
- case '"':
- return readString();
- default:
- if (isIdOrNumberChar(curChar))
- return readIdOrNumber(curChar);
- throw "unexpected character: " + curChar;
- }
-};
-
-function sc_Reader(tokenizer) {
- this.tokenizer = tokenizer;
- this.backref = new Array();
-}
-sc_Reader.prototype.read = function() {
- function readList(listBeginType) {
- function matchesPeer(open, close) {
- return open === 1/*OPEN_PAR*/ && close === 2/*CLOSE_PAR*/
- || open === 3/*OPEN_BRACE*/ && close === 4/*CLOSE_BRACE*/
- || open === 5/*OPEN_BRACKET*/ && close === 6/*CLOSE_BRACKET*/;
- };
- var res = null;
-
- while (true) {
- var token = tokenizer.peekToken();
-
- switch (token.type) {
- case 2/*CLOSE_PAR*/:
- case 4/*CLOSE_BRACE*/:
- case 6/*CLOSE_BRACKET*/:
- if (matchesPeer(listBeginType, token.type)) {
- tokenizer.readToken(); // consume token
- return sc_reverseBang(res);
- } else
- throw "closing par doesn't match: " + listBeginType
- + " " + listEndType;
-
- case 0/*EOF*/:
- throw "unexpected end of file";
-
- case 10/*DOT*/:
- tokenizer.readToken(); // consume token
- var cdr = this.read();
- var par = tokenizer.readToken();
- if (!matchesPeer(listBeginType, par.type))
- throw "closing par doesn't match: " + listBeginType
- + " " + par.type;
- else
- return sc_reverseAppendBang(res, cdr);
-
-
- default:
- res = sc_cons(this.read(), res);
- }
- }
- };
- function readQuote() {
- return sc_cons("quote", sc_cons(this.read(), null));
- };
- function readVector() {
- // opening-parenthesis is already consumed
- var a = new Array();
- while (true) {
- var token = tokenizer.peekToken();
- switch (token.type) {
- case 2/*CLOSE_PAR*/:
- tokenizer.readToken();
- return a;
-
- default:
- a.push(this.read());
- }
- }
- };
-
- function storeRefence(nb) {
- var tmp = this.read();
- this.backref[nb] = tmp;
- return tmp;
- };
-
- function readReference(nb) {
- if (nb in this.backref)
- return this.backref[nb];
- else
- throw "bad reference: " + nb;
- };
-
- var tokenizer = this.tokenizer;
-
- var token = tokenizer.readToken();
-
- // handle error
- if (token.type === 13/*ERROR*/)
- throw token.val;
-
- switch (token.type) {
- case 1/*OPEN_PAR*/:
- case 3/*OPEN_BRACE*/:
- case 5/*OPEN_BRACKET*/:
- return readList.call(this, token.type);
- case 8/*QUOTE*/:
- return readQuote.call(this);
- case 11/*STRING*/:
- return sc_jsstring2string(token.val);
- case 20/*CHAR*/:
- return new sc_Char(token.val);
- case 14/*VECTOR_BEGIN*/:
- return readVector.call(this);
- case 18/*REFERENCE*/:
- return readReference.call(this, token.val);
- case 19/*STORE*/:
- return storeRefence.call(this, token.val);
- case 9/*ID*/:
- return sc_jsstring2symbol(token.val);
- case 0/*EOF*/:
- case 12/*NUMBER*/:
- case 15/*TRUE*/:
- case 16/*FALSE*/:
- case 17/*UNSPECIFIED*/:
- return token.val;
- default:
- throw "unexpected token " + token.type + " " + token.val;
- }
-};
-
-/*** META ((export #t)) */
-function sc_read(port) {
- if (port === undefined) // we assume the port hasn't been given.
- port = SC_DEFAULT_IN; // THREAD: shared var...
- var reader = new sc_Reader(new sc_Tokenizer(port));
- return reader.read();
-}
-/*** META ((export #t)) */
-function sc_readChar(port) {
- if (port === undefined) // we assume the port hasn't been given.
- port = SC_DEFAULT_IN; // THREAD: shared var...
- var t = port.readChar();
- return t === SC_EOF_OBJECT? t: new sc_Char(t);
-}
-/*** META ((export #t)) */
-function sc_peekChar(port) {
- if (port === undefined) // we assume the port hasn't been given.
- port = SC_DEFAULT_IN; // THREAD: shared var...
- var t = port.peekChar();
- return t === SC_EOF_OBJECT? t: new sc_Char(t);
-}
-/*** META ((export #t)
- (type bool))
-*/
-function sc_isCharReady(port) {
- if (port === undefined) // we assume the port hasn't been given.
- port = SC_DEFAULT_IN; // THREAD: shared var...
- return port.isCharReady();
-}
-/*** META ((export #t)
- (peephole (postfix ".close()")))
-*/
-function sc_closeInputPort(p) {
- return p.close();
-}
-
-/*** META ((export #t)
- (type bool)
- (peephole (postfix " instanceof sc_InputPort")))
-*/
-function sc_isInputPort(o) {
- return (o instanceof sc_InputPort);
-}
-
-/*** META ((export eof-object?)
- (type bool)
- (peephole (postfix " === SC_EOF_OBJECT")))
-*/
-function sc_isEOFObject(o) {
- return o === SC_EOF_OBJECT;
-}
-
-/*** META ((export #t)
- (peephole (hole 0 "SC_DEFAULT_IN")))
-*/
-function sc_currentInputPort() {
- return SC_DEFAULT_IN;
-}
-
-/* ------------ file operations are not supported -----------*/
-/*** META ((export #t)) */
-function sc_callWithInputFile(s, proc) {
- throw "can't open " + s;
-}
-
-/*** META ((export #t)) */
-function sc_callWithOutputFile(s, proc) {
- throw "can't open " + s;
-}
-
-/*** META ((export #t)) */
-function sc_withInputFromFile(s, thunk) {
- throw "can't open " + s;
-}
-
-/*** META ((export #t)) */
-function sc_withOutputToFile(s, thunk) {
- throw "can't open " + s;
-}
-
-/*** META ((export #t)) */
-function sc_openInputFile(s) {
- throw "can't open " + s;
-}
-
-/*** META ((export #t)) */
-function sc_openOutputFile(s) {
- throw "can't open " + s;
-}
-
-/* ----------------------------------------------------------------------------*/
-/*** META ((export #t)) */
-function sc_basename(p) {
- var i = p.lastIndexOf('/');
-
- if(i >= 0)
- return p.substring(i + 1, p.length);
- else
- return '';
-}
-
-/*** META ((export #t)) */
-function sc_dirname(p) {
- var i = p.lastIndexOf('/');
-
- if(i >= 0)
- return p.substring(0, i);
- else
- return '';
-}
-
-/* ----------------------------------------------------------------------------*/
-
-/*** META ((export #t)) */
-function sc_withInputFromPort(p, thunk) {
- try {
- var tmp = SC_DEFAULT_IN; // THREAD: shared var.
- SC_DEFAULT_IN = p;
- return thunk();
- } finally {
- SC_DEFAULT_IN = tmp;
- }
-}
-
-/*** META ((export #t)) */
-function sc_withInputFromString(s, thunk) {
- return sc_withInputFromPort(new sc_StringInputPort(sc_string2jsstring(s)), thunk);
-}
-
-/*** META ((export #t)) */
-function sc_withOutputToPort(p, thunk) {
- try {
- var tmp = SC_DEFAULT_OUT; // THREAD: shared var.
- SC_DEFAULT_OUT = p;
- return thunk();
- } finally {
- SC_DEFAULT_OUT = tmp;
- }
-}
-
-/*** META ((export #t)) */
-function sc_withOutputToString(thunk) {
- var p = new sc_StringOutputPort();
- sc_withOutputToPort(p, thunk);
- return p.close();
-}
-
-/*** META ((export #t)) */
-function sc_withOutputToProcedure(proc, thunk) {
- var t = function(s) { proc(sc_jsstring2string(s)); };
- return sc_withOutputToPort(new sc_GenericOutputPort(t), thunk);
-}
-
-/*** META ((export #t)
- (peephole (hole 0 "new sc_StringOutputPort()")))
-*/
-function sc_openOutputString() {
- return new sc_StringOutputPort();
-}
-
-/*** META ((export #t)) */
-function sc_openInputString(str) {
- return new sc_StringInputPort(sc_string2jsstring(str));
-}
-
-/* ----------------------------------------------------------------------------*/
-
-function sc_OutputPort() {
-}
-sc_OutputPort.prototype = new sc_Port();
-sc_OutputPort.prototype.appendJSString = function(obj) {
- /* do nothing */
-}
-sc_OutputPort.prototype.close = function() {
- /* do nothing */
-}
-
-function sc_StringOutputPort() {
- this.res = "";
-}
-sc_StringOutputPort.prototype = new sc_OutputPort();
-sc_StringOutputPort.prototype.appendJSString = function(s) {
- this.res += s;
-}
-sc_StringOutputPort.prototype.close = function() {
- return sc_jsstring2string(this.res);
-}
-
-/*** META ((export #t)) */
-function sc_getOutputString(sp) {
- return sc_jsstring2string(sp.res);
-}
-
-
-function sc_ErrorOutputPort() {
-}
-sc_ErrorOutputPort.prototype = new sc_OutputPort();
-sc_ErrorOutputPort.prototype.appendJSString = function(s) {
- throw "don't write on ErrorPort!";
-}
-sc_ErrorOutputPort.prototype.close = function() {
- /* do nothing */
-}
-
-function sc_GenericOutputPort(appendJSString, close) {
- this.appendJSString = appendJSString;
- if (close)
- this.close = close;
-}
-sc_GenericOutputPort.prototype = new sc_OutputPort();
-
-/*** META ((export #t)
- (type bool)
- (peephole (postfix " instanceof sc_OutputPort")))
-*/
-function sc_isOutputPort(o) {
- return (o instanceof sc_OutputPort);
-}
-
-/*** META ((export #t)
- (peephole (postfix ".close()")))
-*/
-function sc_closeOutputPort(p) {
- return p.close();
-}
-
-/* ------------------ write ---------------------------------------------------*/
-
-/*** META ((export #t)) */
-function sc_write(o, p) {
- if (p === undefined) // we assume not given
- p = SC_DEFAULT_OUT;
- p.appendJSString(sc_toWriteString(o));
-}
-
-function sc_toWriteString(o) {
- if (o === null)
- return "()";
- else if (o === true)
- return "#t";
- else if (o === false)
- return "#f";
- else if (o === undefined)
- return "#unspecified";
- else if (typeof o === 'function')
- return "#<procedure " + sc_hash(o) + ">";
- else if (o.sc_toWriteString)
- return o.sc_toWriteString();
- else
- return o.toString();
-}
-
-function sc_escapeWriteString(s) {
- var res = "";
- var j = 0;
- for (i = 0; i < s.length; i++) {
- switch (s.charAt(i)) {
- case "\0": res += s.substring(j, i) + "\\0"; j = i + 1; break;
- case "\b": res += s.substring(j, i) + "\\b"; j = i + 1; break;
- case "\f": res += s.substring(j, i) + "\\f"; j = i + 1; break;
- case "\n": res += s.substring(j, i) + "\\n"; j = i + 1; break;
- case "\r": res += s.substring(j, i) + "\\r"; j = i + 1; break;
- case "\t": res += s.substring(j, i) + "\\t"; j = i + 1; break;
- case "\v": res += s.substring(j, i) + "\\v"; j = i + 1; break;
- case '"': res += s.substring(j, i) + '\\"'; j = i + 1; break;
- case "\\": res += s.substring(j, i) + "\\\\"; j = i + 1; break;
- default:
- var c = s.charAt(i);
- if ("\a" !== "a" && c == "\a") {
- res += s.substring(j, i) + "\\a"; j = i + 1; continue;
- }
- if ("\v" !== "v" && c == "\v") {
- res += s.substring(j, i) + "\\v"; j = i + 1; continue;
- }
- //if (s.charAt(i) < ' ' || s.charCodeAt(i) > 127) {
- // CARE: Manuel is this OK with HOP?
- if (s.charAt(i) < ' ') {
- /* non printable character and special chars */
- res += s.substring(j, i) + "\\x" + s.charCodeAt(i).toString(16);
- j = i + 1;
- }
- // else just let i increase...
- }
- }
- res += s.substring(j, i);
- return res;
-}
-
-/* ------------------ display ---------------------------------------------------*/
-
-/*** META ((export #t)) */
-function sc_display(o, p) {
- if (p === undefined) // we assume not given
- p = SC_DEFAULT_OUT;
- p.appendJSString(sc_toDisplayString(o));
-}
-
-function sc_toDisplayString(o) {
- if (o === null)
- return "()";
- else if (o === true)
- return "#t";
- else if (o === false)
- return "#f";
- else if (o === undefined)
- return "#unspecified";
- else if (typeof o === 'function')
- return "#<procedure " + sc_hash(o) + ">";
- else if (o.sc_toDisplayString)
- return o.sc_toDisplayString();
- else
- return o.toString();
-}
-
-/* ------------------ newline ---------------------------------------------------*/
-
-/*** META ((export #t)) */
-function sc_newline(p) {
- if (p === undefined) // we assume not given
- p = SC_DEFAULT_OUT;
- p.appendJSString("\n");
-}
-
-/* ------------------ write-char ---------------------------------------------------*/
-
-/*** META ((export #t)) */
-function sc_writeChar(c, p) {
- if (p === undefined) // we assume not given
- p = SC_DEFAULT_OUT;
- p.appendJSString(c.val);
-}
-
-/* ------------------ write-circle ---------------------------------------------------*/
-
-/*** META ((export #t)) */
-function sc_writeCircle(o, p) {
- if (p === undefined) // we assume not given
- p = SC_DEFAULT_OUT;
- p.appendJSString(sc_toWriteCircleString(o));
-}
-
-function sc_toWriteCircleString(o) {
- var symb = sc_gensym("writeCircle");
- var nbPointer = new Object();
- nbPointer.nb = 0;
- sc_prepWriteCircle(o, symb, nbPointer);
- return sc_genToWriteCircleString(o, symb);
-}
-
-function sc_prepWriteCircle(o, symb, nbPointer) {
- // TODO sc_Struct
- if (o instanceof sc_Pair ||
- o instanceof sc_Vector) {
- if (o[symb] !== undefined) {
- // not the first visit.
- o[symb]++;
- // unless there is already a number, assign one.
- if (!o[symb + "nb"]) o[symb + "nb"] = nbPointer.nb++;
- return;
- }
- o[symb] = 0;
- if (o instanceof sc_Pair) {
- sc_prepWriteCircle(o.car, symb, nbPointer);
- sc_prepWriteCircle(o.cdr, symb, nbPointer);
- } else {
- for (var i = 0; i < o.length; i++)
- sc_prepWriteCircle(o[i], symb, nbPointer);
- }
- }
-}
-
-function sc_genToWriteCircleString(o, symb) {
- if (!(o instanceof sc_Pair ||
- o instanceof sc_Vector))
- return sc_toWriteString(o);
- return o.sc_toWriteCircleString(symb);
-}
-sc_Pair.prototype.sc_toWriteCircleString = function(symb, inList) {
- if (this[symb + "use"]) { // use-flag is set. Just use it.
- var nb = this[symb + "nb"];
- if (this[symb]-- === 0) { // if we are the last use. remove all fields.
- delete this[symb];
- delete this[symb + "nb"];
- delete this[symb + "use"];
- }
- if (inList)
- return '. #' + nb + '#';
- else
- return '#' + nb + '#';
- }
- if (this[symb]-- === 0) { // if we are the last use. remove all fields.
- delete this[symb];
- delete this[symb + "nb"];
- delete this[symb + "use"];
- }
-
- var res = "";
-
- if (this[symb] !== undefined) { // implies > 0
- this[symb + "use"] = true;
- if (inList)
- res += '. #' + this[symb + "nb"] + '=';
- else
- res += '#' + this[symb + "nb"] + '=';
- inList = false;
- }
-
- if (!inList)
- res += "(";
-
- // print car
- res += sc_genToWriteCircleString(this.car, symb);
-
- if (sc_isPair(this.cdr)) {
- res += " " + this.cdr.sc_toWriteCircleString(symb, true);
- } else if (this.cdr !== null) {
- res += " . " + sc_genToWriteCircleString(this.cdr, symb);
- }
- if (!inList)
- res += ")";
- return res;
-};
-sc_Vector.prototype.sc_toWriteCircleString = function(symb) {
- if (this[symb + "use"]) { // use-flag is set. Just use it.
- var nb = this[symb + "nb"];
- if (this[symb]-- === 0) { // if we are the last use. remove all fields.
- delete this[symb];
- delete this[symb + "nb"];
- delete this[symb + "use"];
- }
- return '#' + nb + '#';
- }
- if (this[symb]-- === 0) { // if we are the last use. remove all fields.
- delete this[symb];
- delete this[symb + "nb"];
- delete this[symb + "use"];
- }
-
- var res = "";
- if (this[symb] !== undefined) { // implies > 0
- this[symb + "use"] = true;
- res += '#' + this[symb + "nb"] + '=';
- }
- res += "#(";
- for (var i = 0; i < this.length; i++) {
- res += sc_genToWriteCircleString(this[i], symb);
- if (i < this.length - 1) res += " ";
- }
- res += ")";
- return res;
-};
-
-
-/* ------------------ print ---------------------------------------------------*/
-
-/*** META ((export #t)) */
-function sc_print(s) {
- if (arguments.length === 1) {
- sc_display(s);
- sc_newline();
- }
- else {
- for (var i = 0; i < arguments.length; i++)
- sc_display(arguments[i]);
- sc_newline();
- }
-}
-
-/* ------------------ format ---------------------------------------------------*/
-/*** META ((export #t)) */
-function sc_format(s, args) {
- var len = s.length;
- var p = new sc_StringOutputPort();
- var i = 0, j = 1;
-
- while( i < len ) {
- var i2 = s.indexOf("~", i);
-
- if (i2 == -1) {
- p.appendJSString( s.substring( i, len ) );
- return p.close();
- } else {
- if (i2 > i) {
- if (i2 == (len - 1)) {
- p.appendJSString(s.substring(i, len));
- return p.close();
- } else {
- p.appendJSString(s.substring(i, i2));
- i = i2;
- }
- }
-
- switch(s.charCodeAt(i2 + 1)) {
- case 65:
- case 97:
- // a
- sc_display(arguments[j], p);
- i += 2; j++;
- break;
-
- case 83:
- case 115:
- // s
- sc_write(arguments[j], p);
- i += 2; j++;
- break;
-
- case 86:
- case 118:
- // v
- sc_display(arguments[j], p);
- p.appendJSString("\n");
- i += 2; j++;
- break;
-
- case 67:
- case 99:
- // c
- p.appendJSString(String.fromCharCode(arguments[j]));
- i += 2; j++;
- break;
-
- case 88:
- case 120:
- // x
- p.appendJSString(arguments[j].toString(6));
- i += 2; j++;
- break;
-
- case 79:
- case 111:
- // o
- p.appendJSString(arguments[j].toString(8));
- i += 2; j++;
- break;
-
- case 66:
- case 98:
- // b
- p.appendJSString(arguments[j].toString(2));
- i += 2; j++;
- break;
-
- case 37:
- case 110:
- // %, n
- p.appendJSString("\n");
- i += 2; break;
-
- case 114:
- // r
- p.appendJSString("\r");
- i += 2; break;
-
- case 126:
- // ~
- p.appendJSString("~");
- i += 2; break;
-
- default:
- sc_error( "format: illegal ~"
- + String.fromCharCode(s.charCodeAt(i2 + 1))
- + " sequence" );
- return "";
- }
- }
- }
-
- return p.close();
-}
-
-/* ------------------ global ports ---------------------------------------------------*/
-
-var SC_DEFAULT_IN = new sc_ErrorInputPort();
-var SC_DEFAULT_OUT = new sc_ErrorOutputPort();
-var SC_ERROR_OUT = new sc_ErrorOutputPort();
-
-var sc_SYMBOL_PREFIX = "\u1E9C";
-var sc_KEYWORD_PREFIX = "\u1E9D";
-
-/*** META ((export #t)
- (peephole (id))) */
-function sc_jsstring2string(s) {
- return s;
-}
-
-/*** META ((export #t)
- (peephole (prefix "'\\u1E9C' +")))
-*/
-function sc_jsstring2symbol(s) {
- return sc_SYMBOL_PREFIX + s;
-}
-
-/*** META ((export #t)
- (peephole (id)))
-*/
-function sc_string2jsstring(s) {
- return s;
-}
-
-/*** META ((export #t)
- (peephole (symbol2jsstring_immutable)))
-*/
-function sc_symbol2jsstring(s) {
- return s.slice(1);
-}
-
-/*** META ((export #t)
- (peephole (postfix ".slice(1)")))
-*/
-function sc_keyword2jsstring(k) {
- return k.slice(1);
-}
-
-/*** META ((export #t)
- (peephole (prefix "'\\u1E9D' +")))
-*/
-function sc_jsstring2keyword(s) {
- return sc_KEYWORD_PREFIX + s;
-}
-
-/*** META ((export #t)
- (type bool))
-*/
-function sc_isKeyword(s) {
- return (typeof s === "string") &&
- (s.charAt(0) === sc_KEYWORD_PREFIX);
-}
-
-
-/*** META ((export #t)) */
-var sc_gensym = function() {
- var counter = 1000;
- return function(sym) {
- counter++;
- if (!sym) sym = sc_SYMBOL_PREFIX;
- return sym + "s" + counter + "~" + "^sC-GeNsYm ";
- };
-}();
-
-
-/*** META ((export #t)
- (type bool))
-*/
-function sc_isEqual(o1, o2) {
- return ((o1 === o2) ||
- (sc_isPair(o1) && sc_isPair(o2)
- && sc_isPairEqual(o1, o2, sc_isEqual)) ||
- (sc_isVector(o1) && sc_isVector(o2)
- && sc_isVectorEqual(o1, o2, sc_isEqual)));
-}
-
-/*** META ((export number->symbol integer->symbol)) */
-function sc_number2symbol(x, radix) {
- return sc_SYMBOL_PREFIX + sc_number2jsstring(x, radix);
-}
-
-/*** META ((export number->string integer->string)) */
-var sc_number2string = sc_number2jsstring;
-
-/*** META ((export #t)) */
-function sc_symbol2number(s, radix) {
- return sc_jsstring2number(s.slice(1), radix);
-}
-
-/*** META ((export #t)) */
-var sc_string2number = sc_jsstring2number;
-
-/*** META ((export #t)
- (peephole (prefix "+" s)))
- ;; peephole will only apply if no radix is given.
-*/
-function sc_string2integer(s, radix) {
- if (!radix) return +s;
- return parseInt(s, radix);
-}
-
-/*** META ((export #t)
- (peephole (prefix "+")))
-*/
-function sc_string2real(s) {
- return +s;
-}
-
-
-/*** META ((export #t)
- (type bool))
-*/
-function sc_isSymbol(s) {
- return (typeof s === "string") &&
- (s.charAt(0) === sc_SYMBOL_PREFIX);
-}
-
-/*** META ((export #t)
- (peephole (symbol2string_immutable)))
-*/
-function sc_symbol2string(s) {
- return s.slice(1);
-}
-
-/*** META ((export #t)
- (peephole (prefix "'\\u1E9C' +")))
-*/
-function sc_string2symbol(s) {
- return sc_SYMBOL_PREFIX + s;
-}
-
-/*** META ((export symbol-append)
- (peephole (symbolAppend_immutable)))
-*/
-function sc_symbolAppend() {
- var res = sc_SYMBOL_PREFIX;
- for (var i = 0; i < arguments.length; i++)
- res += arguments[i].slice(1);
- return res;
-}
-
-/*** META ((export #t)
- (peephole (postfix ".val")))
-*/
-function sc_char2string(c) { return c.val; }
-
-/*** META ((export #t)
- (peephole (hole 1 "'\\u1E9C' + " c ".val")))
-*/
-function sc_char2symbol(c) { return sc_SYMBOL_PREFIX + c.val; }
-
-/*** META ((export #t)
- (type bool))
-*/
-function sc_isString(s) {
- return (typeof s === "string") &&
- (s.charAt(0) !== sc_SYMBOL_PREFIX);
-}
-
-/*** META ((export #t)) */
-var sc_makeString = sc_makejsString;
-
-
-/*** META ((export #t)) */
-function sc_string() {
- for (var i = 0; i < arguments.length; i++)
- arguments[i] = arguments[i].val;
- return "".concat.apply("", arguments);
-}
-
-/*** META ((export #t)
- (peephole (postfix ".length")))
-*/
-function sc_stringLength(s) { return s.length; }
-
-/*** META ((export #t)) */
-function sc_stringRef(s, k) {
- return new sc_Char(s.charAt(k));
-}
-
-/* there's no stringSet in the immutable version
-function sc_stringSet(s, k, c)
-*/
-
-
-/*** META ((export string=?)
- (type bool)
- (peephole (hole 2 str1 " === " str2)))
-*/
-function sc_isStringEqual(s1, s2) {
- return s1 === s2;
-}
-/*** META ((export string<?)
- (type bool)
- (peephole (hole 2 str1 " < " str2)))
-*/
-function sc_isStringLess(s1, s2) {
- return s1 < s2;
-}
-/*** META ((export string>?)
- (type bool)
- (peephole (hole 2 str1 " > " str2)))
-*/
-function sc_isStringGreater(s1, s2) {
- return s1 > s2;
-}
-/*** META ((export string<=?)
- (type bool)
- (peephole (hole 2 str1 " <= " str2)))
-*/
-function sc_isStringLessEqual(s1, s2) {
- return s1 <= s2;
-}
-/*** META ((export string>=?)
- (type bool)
- (peephole (hole 2 str1 " >= " str2)))
-*/
-function sc_isStringGreaterEqual(s1, s2) {
- return s1 >= s2;
-}
-/*** META ((export string-ci=?)
- (type bool)
- (peephole (hole 2 str1 ".toLowerCase() === " str2 ".toLowerCase()")))
-*/
-function sc_isStringCIEqual(s1, s2) {
- return s1.toLowerCase() === s2.toLowerCase();
-}
-/*** META ((export string-ci<?)
- (type bool)
- (peephole (hole 2 str1 ".toLowerCase() < " str2 ".toLowerCase()")))
-*/
-function sc_isStringCILess(s1, s2) {
- return s1.toLowerCase() < s2.toLowerCase();
-}
-/*** META ((export string-ci>?)
- (type bool)
- (peephole (hole 2 str1 ".toLowerCase() > " str2 ".toLowerCase()")))
-*/
-function sc_isStringCIGreater(s1, s2) {
- return s1.toLowerCase() > s2.toLowerCase();
-}
-/*** META ((export string-ci<=?)
- (type bool)
- (peephole (hole 2 str1 ".toLowerCase() <= " str2 ".toLowerCase()")))
-*/
-function sc_isStringCILessEqual(s1, s2) {
- return s1.toLowerCase() <= s2.toLowerCase();
-}
-/*** META ((export string-ci>=?)
- (type bool)
- (peephole (hole 2 str1 ".toLowerCase() >= " str2 ".toLowerCase()")))
-*/
-function sc_isStringCIGreaterEqual(s1, s2) {
- return s1.toLowerCase() >= s2.toLowerCase();
-}
-
-/*** META ((export #t)
- (peephole (hole 3 s ".substring(" start ", " end ")")))
-*/
-function sc_substring(s, start, end) {
- return s.substring(start, end);
-}
-
-/*** META ((export #t))
-*/
-function sc_isSubstring_at(s1, s2, i) {
- return s2 == s1.substring(i, i+ s2.length);
-}
-
-/*** META ((export #t)
- (peephole (infix 0 #f "+" "''")))
-*/
-function sc_stringAppend() {
- return "".concat.apply("", arguments);
-}
-
-/*** META ((export #t)) */
-var sc_string2list = sc_jsstring2list;
-
-/*** META ((export #t)) */
-var sc_list2string = sc_list2jsstring;
-
-/*** META ((export #t)
- (peephole (id)))
-*/
-function sc_stringCopy(s) {
- return s;
-}
-
-/* there's no string-fill in the immutable version
-function sc_stringFill(s, c)
-*/
-
-/*** META ((export #t)
- (peephole (postfix ".slice(1)")))
-*/
-function sc_keyword2string(o) {
- return o.slice(1);
-}
-
-/*** META ((export #t)
- (peephole (prefix "'\\u1E9D' +")))
-*/
-function sc_string2keyword(o) {
- return sc_KEYWORD_PREFIX + o;
-}
-
-String.prototype.sc_toDisplayString = function() {
- if (this.charAt(0) === sc_SYMBOL_PREFIX)
- // TODO: care for symbols with spaces (escape-chars symbols).
- return this.slice(1);
- else if (this.charAt(0) === sc_KEYWORD_PREFIX)
- return ":" + this.slice(1);
- else
- return this.toString();
-};
-
-String.prototype.sc_toWriteString = function() {
- if (this.charAt(0) === sc_SYMBOL_PREFIX)
- // TODO: care for symbols with spaces (escape-chars symbols).
- return this.slice(1);
- else if (this.charAt(0) === sc_KEYWORD_PREFIX)
- return ":" + this.slice(1);
- else
- return '"' + sc_escapeWriteString(this) + '"';
-};
-/* Exported Variables */
-var BgL_testzd2boyerzd2;
-var BgL_nboyerzd2benchmarkzd2;
-var BgL_setupzd2boyerzd2;
-/* End Exports */
-
-var translate_term_nboyer;
-var translate_args_nboyer;
-var untranslate_term_nboyer;
-var BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer;
-var BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer;
-var translate_alist_nboyer;
-var apply_subst_nboyer;
-var apply_subst_lst_nboyer;
-var tautologyp_nboyer;
-var if_constructor_nboyer;
-var rewrite_count_nboyer;
-var rewrite_nboyer;
-var rewrite_args_nboyer;
-var unify_subst_nboyer;
-var one_way_unify1_nboyer;
-var false_term_nboyer;
-var true_term_nboyer;
-var trans_of_implies1_nboyer;
-var is_term_equal_nboyer;
-var is_term_member_nboyer;
-var const_nboyer;
-var sc_const_3_nboyer;
-var sc_const_4_nboyer;
-{
- (sc_const_4_nboyer = (new sc_Pair("\u1E9Cimplies",(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cu",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cu",(new sc_Pair("\u1E9Cw",null)))))),null)))))),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cw",null)))))),null)))))));
- (sc_const_3_nboyer = sc_list((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ccompile",(new sc_Pair("\u1E9Cform",null)))),(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair((new sc_Pair("\u1E9Ccodegen",(new sc_Pair((new sc_Pair("\u1E9Coptimize",(new sc_Pair("\u1E9Cform",null)))),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ceqp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgreaterp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clesseqp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgreatereqp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cboolean",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ciff",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ceven1",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair((new sc_Pair("\u1E9Codd",(new sc_Pair((new sc_Pair("\u1E9Csub1",(new sc_Pair("\u1E9Cx",null)))),null)))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ccountps-",(new sc_Pair("\u1E9Cl",(new sc_Pair("\u1E9Cpred",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ccountps-loop",(new sc_Pair("\u1E9Cl",(new sc_Pair("\u1E9Cpred",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfact-",(new sc_Pair("\u1E9Ci",null)))),(new sc_Pair((new sc_Pair("\u1E9Cfact-loop",(new sc_Pair("\u1E9Ci",(new sc_Pair((1),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Creverse-",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Creverse-loop",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdivides",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cassume-true",(new sc_Pair("\u1E9Cvar",(new sc_Pair("\u1E9Calist",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cvar",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),null)))))),(new sc_Pair("\u1E9Calist",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cassume-false",(new sc_Pair("\u1E9Cvar",(new sc_Pair("\u1E9Calist",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cvar",(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))),(new sc_Pair("\u1E9Calist",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctautology-checker",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ctautologyp",(new sc_Pair((new sc_Pair("\u1E9Cnormalize",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfalsify",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cfalsify1",(new sc_Pair((new sc_Pair("\u1E9Cnormalize",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cprime",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))),null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cprime1",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Csub1",(new sc_Pair("\u1E9Cx",null)))),null)))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair("\u1E9Cp",(new sc_Pair("\u1E9Cq",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cp",(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cq",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))))),(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair("\u1E9Cp",(new sc_Pair("\u1E9Cq",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cp",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cq",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair("\u1E9Cp",null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cp",(new sc_Pair((new sc_Pair("\u1E9Cf",null)),(new sc_Pair((new sc_Pair("\u1E9Ct",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cimplies",(new sc_Pair("\u1E9Cp",(new sc_Pair("\u1E9Cq",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cp",(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cq",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair((new sc_Pair("\u1E9Cf",null)),null)))))))),(new sc_Pair((new sc_Pair("\u1E9Ct",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",(new sc_Pair("\u1E9Cc",null)))))))),(new sc_Pair("\u1E9Cd",(new sc_Pair("\u1E9Ce",null)))))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Ca",(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cb",(new sc_Pair("\u1E9Cd",(new sc_Pair("\u1E9Ce",null)))))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair("\u1E9Cc",(new sc_Pair("\u1E9Cd",(new sc_Pair("\u1E9Ce",null)))))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cx",null)))),null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Ca",null)))),(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cb",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cc",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cb",null)))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cc",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair("\u1E9Ca",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair((new sc_Pair("\u1E9Cplus-fringe",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Cb",null)))),(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Ca",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cexec",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cpds",(new sc_Pair("\u1E9Cenvrn",null)))))))),(new sc_Pair((new sc_Pair("\u1E9Cexec",(new sc_Pair("\u1E9Cy",(new sc_Pair((new sc_Pair("\u1E9Cexec",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cpds",(new sc_Pair("\u1E9Cenvrn",null)))))))),(new sc_Pair("\u1E9Cenvrn",null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmc-flatten",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair("\u1E9Cy",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cb",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Cy",null)))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Ca",(new sc_Pair((new sc_Pair("\u1E9Cintersect",(new sc_Pair("\u1E9Cb",(new sc_Pair("\u1E9Cc",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cc",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cnth",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair("\u1E9Ci",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cj",(new sc_Pair("\u1E9Ck",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cj",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Ck",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair("\u1E9Ci",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cj",(new sc_Pair("\u1E9Ck",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair((new sc_Pair("\u1E9Cexp",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cj",null)))))),(new sc_Pair("\u1E9Ck",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Creverse-loop",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair("\u1E9Cy",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Creverse-loop",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ccount-list",(new sc_Pair("\u1E9Cz",(new sc_Pair((new sc_Pair("\u1E9Csort-lp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Ccount-list",(new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ccount-list",(new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cy",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cc",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cb",(new sc_Pair("\u1E9Cc",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair((new sc_Pair("\u1E9Cbig-plus1",(new sc_Pair("\u1E9Cl",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cbase",null)))))))),(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair("\u1E9Cl",(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair("\u1E9Ci",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair((new sc_Pair("\u1E9Cbig-plus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cbase",null)))))))))),(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ci",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cbase",null)))))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cy",(new sc_Pair((1),null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cj",null)))))),(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Ci",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cj",null)))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cj",(new sc_Pair((1),null)))))),null)))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair((new sc_Pair("\u1E9Cpower-rep",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Ci",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cpower-eval",(new sc_Pair((new sc_Pair("\u1E9Cbig-plus",(new sc_Pair((new sc_Pair("\u1E9Cpower-rep",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cpower-rep",(new sc_Pair("\u1E9Cj",(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair("\u1E9Cbase",null)))))))))),(new sc_Pair("\u1E9Cbase",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cj",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgcd",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cgcd",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cnth",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Cnth",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnth",(new sc_Pair("\u1E9Cb",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Ci",(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair("\u1E9Ca",null)))),null)))))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cy",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cy",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cc",(new sc_Pair("\u1E9Cw",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cc",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cw",(new sc_Pair("\u1E9Cx",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cb",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cc",null)))))),null)))))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cb",(new sc_Pair("\u1E9Cc",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Cy",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cz",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cx",null)))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgcd",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cz",(new sc_Pair((new sc_Pair("\u1E9Cgcd",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cvalue",(new sc_Pair((new sc_Pair("\u1E9Cnormalize",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cvalue",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cy",(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnlistp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair((new sc_Pair("\u1E9Cgopher",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Csamefringe",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgreatest-factor",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cy",(new sc_Pair((1),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgreatest-factor",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((1),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((1),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair((new sc_Pair("\u1E9Cgreatest-factor",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cy",(new sc_Pair((1),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cx",null)))),null)))),null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes-list",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair((new sc_Pair("\u1E9Ctimes-list",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ctimes-list",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cprime-list",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cprime-list",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cprime-list",(new sc_Pair("\u1E9Cy",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cz",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cw",(new sc_Pair("\u1E9Cz",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cz",null)))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cz",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cw",(new sc_Pair((1),null)))))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cgreatereqp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cor",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cand",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cy",(new sc_Pair((1),null)))))),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((1),null)))))),(new sc_Pair(sc_list("\u1E9Cand", (new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Ca",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),null)))), (new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair("\u1E9Cb",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),null)))), (new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Ca",null)))), (new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cb",null)))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Csub1",(new sc_Pair("\u1E9Ca",null)))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Csub1",(new sc_Pair("\u1E9Cb",null)))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair((new sc_Pair("\u1E9Cdelete",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cl",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair("\u1E9Cl",null)))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cl",null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Csort2",(new sc_Pair((new sc_Pair("\u1E9Cdelete",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cl",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cdelete",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Csort2",(new sc_Pair("\u1E9Cl",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdsort",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Csort2",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx1",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx2",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx3",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx4",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx5",(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair("\u1E9Cx6",(new sc_Pair("\u1E9Cx7",null)))))),null)))))),null)))))),null)))))),null)))))),null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((6),(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair("\u1E9Cx7",null)))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((2),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((2),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair("\u1E9Cy",(new sc_Pair((2),null)))))),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Csigma",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Ci",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Ci",null)))),null)))))),(new sc_Pair((2),null)))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Cy",null)))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Cx",null)))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cz",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnot",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cz",null)))),null)))))),null)))))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair((new sc_Pair("\u1E9Cdelete",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmeaning",(new sc_Pair((new sc_Pair("\u1E9Cplus-tree",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair("\u1E9Ca",null)))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cadd1",(new sc_Pair("\u1E9Cy",null)))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cnumberp",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cnth",(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Ci",null)))),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clast",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair("\u1E9Cb",null)))),(new sc_Pair((new sc_Pair("\u1E9Clast",(new sc_Pair("\u1E9Cb",null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair("\u1E9Ca",null)))),(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair((new sc_Pair("\u1E9Ccar",(new sc_Pair((new sc_Pair("\u1E9Clast",(new sc_Pair("\u1E9Ca",null)))),null)))),(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair("\u1E9Cb",null)))))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clessp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ct",null)),(new sc_Pair("\u1E9Cz",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cf",null)),(new sc_Pair("\u1E9Cz",null)))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cassignment",(new sc_Pair("\u1E9Cx",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Cassignedp",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cassignment",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Ca",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cassignment",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cb",null)))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Ccar",(new sc_Pair((new sc_Pair("\u1E9Cgopher",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ccar",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair((new sc_Pair("\u1E9Ccdr",(new sc_Pair((new sc_Pair("\u1E9Cgopher",(new sc_Pair("\u1E9Cx",null)))),null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Clistp",(new sc_Pair("\u1E9Cx",null)))),(new sc_Pair((new sc_Pair("\u1E9Ccdr",(new sc_Pair((new sc_Pair("\u1E9Cflatten",(new sc_Pair("\u1E9Cx",null)))),null)))),(new sc_Pair((new sc_Pair("\u1E9Ccons",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cquotient",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cx",null)))))),(new sc_Pair("\u1E9Cy",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Czerop",(new sc_Pair("\u1E9Cy",null)))),(new sc_Pair((new sc_Pair("\u1E9Czero",null)),(new sc_Pair((new sc_Pair("\u1E9Cfix",(new sc_Pair("\u1E9Cx",null)))),null)))))))),null)))))), (new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cget",(new sc_Pair("\u1E9Cj",(new sc_Pair((new sc_Pair("\u1E9Cset",(new sc_Pair("\u1E9Ci",(new sc_Pair("\u1E9Cval",(new sc_Pair("\u1E9Cmem",null)))))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cif",(new sc_Pair((new sc_Pair("\u1E9Ceqp",(new sc_Pair("\u1E9Cj",(new sc_Pair("\u1E9Ci",null)))))),(new sc_Pair("\u1E9Cval",(new sc_Pair((new sc_Pair("\u1E9Cget",(new sc_Pair("\u1E9Cj",(new sc_Pair("\u1E9Cmem",null)))))),null)))))))),null))))))));
- (const_nboyer = (new sc_Pair((new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cf",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cc",(new sc_Pair((new sc_Pair("\u1E9Czero",null)),null)))))),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cy",(new sc_Pair("\u1E9Cf",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair((new sc_Pair("\u1E9Ctimes",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Cc",(new sc_Pair("\u1E9Cd",null)))))),null)))))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cz",(new sc_Pair("\u1E9Cf",(new sc_Pair((new sc_Pair("\u1E9Creverse",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair((new sc_Pair("\u1E9Cappend",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cnil",null)),null)))))),null)))),null)))))),(new sc_Pair((new sc_Pair("\u1E9Cu",(new sc_Pair("\u1E9Cequal",(new sc_Pair((new sc_Pair("\u1E9Cplus",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cdifference",(new sc_Pair("\u1E9Cx",(new sc_Pair("\u1E9Cy",null)))))),null)))))))),(new sc_Pair((new sc_Pair("\u1E9Cw",(new sc_Pair("\u1E9Clessp",(new sc_Pair((new sc_Pair("\u1E9Cremainder",(new sc_Pair("\u1E9Ca",(new sc_Pair("\u1E9Cb",null)))))),(new sc_Pair((new sc_Pair("\u1E9Cmember",(new sc_Pair("\u1E9Ca",(new sc_Pair((new sc_Pair("\u1E9Clength",(new sc_Pair("\u1E9Cb",null)))),null)))))),null)))))))),null)))))))))));
- BgL_nboyerzd2benchmarkzd2 = function() {
- var args = null;
- for (var sc_tmp = arguments.length - 1; sc_tmp >= 0; sc_tmp--) {
- args = sc_cons(arguments[sc_tmp], args);
- }
- var n;
- return ((n = ((args === null)?(0):(args.car))), (BgL_setupzd2boyerzd2()), (BgL_runzd2benchmarkzd2(("nboyer"+(sc_number2string(n))), (1), function() {
- return (BgL_testzd2boyerzd2(n));
- }, function(rewrites) {
- if ((sc_isNumber(rewrites)))
- switch (n) {
- case (0):
- return (rewrites===(95024));
- break;
- case (1):
- return (rewrites===(591777));
- break;
- case (2):
- return (rewrites===(1813975));
- break;
- case (3):
- return (rewrites===(5375678));
- break;
- case (4):
- return (rewrites===(16445406));
- break;
- case (5):
- return (rewrites===(51507739));
- break;
- default:
- return true;
- break;
- }
- else
- return false;
- })));
- };
- BgL_setupzd2boyerzd2 = function() {
- return true;
- };
- BgL_testzd2boyerzd2 = function() {
- return true;
- };
- translate_term_nboyer = function(term) {
- var lst;
- return (!(term instanceof sc_Pair)?term:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((term.car))), ((lst = (term.cdr)), ((lst === null)?null:(new sc_Pair((translate_term_nboyer((lst.car))), (translate_args_nboyer((lst.cdr))))))))));
- };
- translate_args_nboyer = function(lst) {
- var sc_lst_5;
- var term;
- return ((lst === null)?null:(new sc_Pair(((term = (lst.car)), (!(term instanceof sc_Pair)?term:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((term.car))), (translate_args_nboyer((term.cdr))))))), ((sc_lst_5 = (lst.cdr)), ((sc_lst_5 === null)?null:(new sc_Pair((translate_term_nboyer((sc_lst_5.car))), (translate_args_nboyer((sc_lst_5.cdr))))))))));
- };
- untranslate_term_nboyer = function(term) {
- var optrOpnd;
- var tail1131;
- var L1127;
- var falseHead1130;
- var symbol_record;
- if (!(term instanceof sc_Pair))
- return term;
- else
- {
- (falseHead1130 = (new sc_Pair(null, null)));
- (L1127 = (term.cdr));
- (tail1131 = falseHead1130);
- while (!(L1127 === null)) {
- {
- (tail1131.cdr = (new sc_Pair((untranslate_term_nboyer((L1127.car))), null)));
- (tail1131 = (tail1131.cdr));
- (L1127 = (L1127.cdr));
- }
- }
- (optrOpnd = (falseHead1130.cdr));
- return (new sc_Pair(((symbol_record = (term.car)), (symbol_record[(0)])), optrOpnd));
- }
- };
- BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer = function(sym) {
- var r;
- var x;
- return ((x = (sc_assq(sym, BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer))), ((x!== false)?(x.cdr):((r = [sym, null]), (BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer = (new sc_Pair((new sc_Pair(sym, r)), BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer))), r)));
- };
- (BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer = null);
- translate_alist_nboyer = function(alist) {
- var sc_alist_6;
- var term;
- return ((alist === null)?null:(new sc_Pair((new sc_Pair((alist.car.car), ((term = (alist.car.cdr)), (!(term instanceof sc_Pair)?term:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((term.car))), (translate_args_nboyer((term.cdr))))))))), ((sc_alist_6 = (alist.cdr)), ((sc_alist_6 === null)?null:(new sc_Pair((new sc_Pair((sc_alist_6.car.car), (translate_term_nboyer((sc_alist_6.car.cdr))))), (translate_alist_nboyer((sc_alist_6.cdr))))))))));
- };
- apply_subst_nboyer = function(alist, term) {
- var lst;
- var temp_temp;
- return (!(term instanceof sc_Pair)?((temp_temp = (sc_assq(term, alist))), ((temp_temp!== false)?(temp_temp.cdr):term)):(new sc_Pair((term.car), ((lst = (term.cdr)), ((lst === null)?null:(new sc_Pair((apply_subst_nboyer(alist, (lst.car))), (apply_subst_lst_nboyer(alist, (lst.cdr))))))))));
- };
- apply_subst_lst_nboyer = function(alist, lst) {
- var sc_lst_7;
- return ((lst === null)?null:(new sc_Pair((apply_subst_nboyer(alist, (lst.car))), ((sc_lst_7 = (lst.cdr)), ((sc_lst_7 === null)?null:(new sc_Pair((apply_subst_nboyer(alist, (sc_lst_7.car))), (apply_subst_lst_nboyer(alist, (sc_lst_7.cdr))))))))));
- };
- tautologyp_nboyer = function(sc_x_11, true_lst, false_lst) {
- var tmp1125;
- var x;
- var tmp1126;
- var sc_x_8;
- var sc_tmp1125_9;
- var sc_tmp1126_10;
- var sc_x_11;
- var true_lst;
- var false_lst;
- while (true) {
- if ((((sc_tmp1126_10 = (is_term_equal_nboyer(sc_x_11, true_term_nboyer))), ((sc_tmp1126_10!== false)?sc_tmp1126_10:(is_term_member_nboyer(sc_x_11, true_lst))))!== false))
- return true;
- else
- if ((((sc_tmp1125_9 = (is_term_equal_nboyer(sc_x_11, false_term_nboyer))), ((sc_tmp1125_9!== false)?sc_tmp1125_9:(is_term_member_nboyer(sc_x_11, false_lst))))!== false))
- return false;
- else
- if (!(sc_x_11 instanceof sc_Pair))
- return false;
- else
- if (((sc_x_11.car)===if_constructor_nboyer))
- if ((((sc_x_8 = (sc_x_11.cdr.car)), (tmp1126 = (is_term_equal_nboyer(sc_x_8, true_term_nboyer))), ((tmp1126!== false)?tmp1126:(is_term_member_nboyer(sc_x_8, true_lst))))!== false))
- (sc_x_11 = (sc_x_11.cdr.cdr.car));
- else
- if ((((x = (sc_x_11.cdr.car)), (tmp1125 = (is_term_equal_nboyer(x, false_term_nboyer))), ((tmp1125!== false)?tmp1125:(is_term_member_nboyer(x, false_lst))))!== false))
- (sc_x_11 = (sc_x_11.cdr.cdr.cdr.car));
- else
- if (((tautologyp_nboyer((sc_x_11.cdr.cdr.car), (new sc_Pair((sc_x_11.cdr.car), true_lst)), false_lst))!== false))
- {
- (false_lst = (new sc_Pair((sc_x_11.cdr.car), false_lst)));
- (sc_x_11 = (sc_x_11.cdr.cdr.cdr.car));
- }
- else
- return false;
- else
- return false;
- }
- };
- (if_constructor_nboyer = "\u1E9C*");
- (rewrite_count_nboyer = (0));
- rewrite_nboyer = function(term) {
- var term2;
- var sc_term_12;
- var lst;
- var symbol_record;
- var sc_lst_13;
- {
- (++rewrite_count_nboyer);
- if (!(term instanceof sc_Pair))
- return term;
- else
- {
- (sc_term_12 = (new sc_Pair((term.car), ((sc_lst_13 = (term.cdr)), ((sc_lst_13 === null)?null:(new sc_Pair((rewrite_nboyer((sc_lst_13.car))), (rewrite_args_nboyer((sc_lst_13.cdr))))))))));
- (lst = ((symbol_record = (term.car)), (symbol_record[(1)])));
- while (true) {
- if ((lst === null))
- return sc_term_12;
- else
- if ((((term2 = ((lst.car).cdr.car)), (unify_subst_nboyer = null), (one_way_unify1_nboyer(sc_term_12, term2)))!== false))
- return (rewrite_nboyer((apply_subst_nboyer(unify_subst_nboyer, ((lst.car).cdr.cdr.car)))));
- else
- (lst = (lst.cdr));
- }
- }
- }
- };
- rewrite_args_nboyer = function(lst) {
- var sc_lst_14;
- return ((lst === null)?null:(new sc_Pair((rewrite_nboyer((lst.car))), ((sc_lst_14 = (lst.cdr)), ((sc_lst_14 === null)?null:(new sc_Pair((rewrite_nboyer((sc_lst_14.car))), (rewrite_args_nboyer((sc_lst_14.cdr))))))))));
- };
- (unify_subst_nboyer = "\u1E9C*");
- one_way_unify1_nboyer = function(term1, term2) {
- var lst1;
- var lst2;
- var temp_temp;
- if (!(term2 instanceof sc_Pair))
- {
- (temp_temp = (sc_assq(term2, unify_subst_nboyer)));
- if ((temp_temp!== false))
- return (is_term_equal_nboyer(term1, (temp_temp.cdr)));
- else
- if ((sc_isNumber(term2)))
- return (sc_isEqual(term1, term2));
- else
- {
- (unify_subst_nboyer = (new sc_Pair((new sc_Pair(term2, term1)), unify_subst_nboyer)));
- return true;
- }
- }
- else
- if (!(term1 instanceof sc_Pair))
- return false;
- else
- if (((term1.car)===(term2.car)))
- {
- (lst1 = (term1.cdr));
- (lst2 = (term2.cdr));
- while (true) {
- if ((lst1 === null))
- return (lst2 === null);
- else
- if ((lst2 === null))
- return false;
- else
- if (((one_way_unify1_nboyer((lst1.car), (lst2.car)))!== false))
- {
- (lst1 = (lst1.cdr));
- (lst2 = (lst2.cdr));
- }
- else
- return false;
- }
- }
- else
- return false;
- };
- (false_term_nboyer = "\u1E9C*");
- (true_term_nboyer = "\u1E9C*");
- trans_of_implies1_nboyer = function(n) {
- var sc_n_15;
- return ((sc_isEqual(n, (1)))?(sc_list("\u1E9Cimplies", (0), (1))):(sc_list("\u1E9Cand", (sc_list("\u1E9Cimplies", (n-(1)), n)), ((sc_n_15 = (n-(1))), ((sc_isEqual(sc_n_15, (1)))?(sc_list("\u1E9Cimplies", (0), (1))):(sc_list("\u1E9Cand", (sc_list("\u1E9Cimplies", (sc_n_15-(1)), sc_n_15)), (trans_of_implies1_nboyer((sc_n_15-(1)))))))))));
- };
- is_term_equal_nboyer = function(x, y) {
- var lst1;
- var lst2;
- var r2;
- var r1;
- if ((x instanceof sc_Pair))
- if ((y instanceof sc_Pair))
- if ((((r1 = (x.car)), (r2 = (y.car)), (r1===r2))!== false))
- {
- (lst1 = (x.cdr));
- (lst2 = (y.cdr));
- while (true) {
- if ((lst1 === null))
- return (lst2 === null);
- else
- if ((lst2 === null))
- return false;
- else
- if (((is_term_equal_nboyer((lst1.car), (lst2.car)))!== false))
- {
- (lst1 = (lst1.cdr));
- (lst2 = (lst2.cdr));
- }
- else
- return false;
- }
- }
- else
- return false;
- else
- return false;
- else
- return (sc_isEqual(x, y));
- };
- is_term_member_nboyer = function(x, lst) {
- var x;
- var lst;
- while (true) {
- if ((lst === null))
- return false;
- else
- if (((is_term_equal_nboyer(x, (lst.car)))!== false))
- return true;
- else
- (lst = (lst.cdr));
- }
- };
- BgL_setupzd2boyerzd2 = function() {
- var symbol_record;
- var value;
- var BgL_sc_symbolzd2record_16zd2;
- var sym;
- var sc_sym_17;
- var term;
- var lst;
- var sc_term_18;
- var sc_term_19;
- {
- (BgL_sc_za2symbolzd2recordszd2alistza2_2z00_nboyer = null);
- (if_constructor_nboyer = (BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer("\u1E9Cif")));
- (false_term_nboyer = ((sc_term_19 = (new sc_Pair("\u1E9Cf",null))), (!(sc_term_19 instanceof sc_Pair)?sc_term_19:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((sc_term_19.car))), (translate_args_nboyer((sc_term_19.cdr))))))));
- (true_term_nboyer = ((sc_term_18 = (new sc_Pair("\u1E9Ct",null))), (!(sc_term_18 instanceof sc_Pair)?sc_term_18:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((sc_term_18.car))), (translate_args_nboyer((sc_term_18.cdr))))))));
- (lst = sc_const_3_nboyer);
- while (!(lst === null)) {
- {
- (term = (lst.car));
- if (((term instanceof sc_Pair)&&(((term.car)==="\u1E9Cequal")&&((term.cdr.car) instanceof sc_Pair))))
- {
- (sc_sym_17 = ((term.cdr.car).car));
- (value = (new sc_Pair((!(term instanceof sc_Pair)?term:(new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((term.car))), (translate_args_nboyer((term.cdr)))))), ((sym = ((term.cdr.car).car)), (BgL_sc_symbolzd2record_16zd2 = (BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer(sym))), (BgL_sc_symbolzd2record_16zd2[(1)])))));
- (symbol_record = (BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer(sc_sym_17)));
- (symbol_record[(1)] = value);
- }
- else
- (sc_error("ADD-LEMMA did not like term: ", term));
- (lst = (lst.cdr));
- }
- }
- return true;
- }
- };
- BgL_testzd2boyerzd2 = function(n) {
- var optrOpnd;
- var term;
- var sc_n_20;
- var answer;
- var sc_term_21;
- var sc_term_22;
- {
- (rewrite_count_nboyer = (0));
- (term = sc_const_4_nboyer);
- (sc_n_20 = n);
- while (!(sc_n_20=== 0)) {
- {
- (term = (sc_list("\u1E9Cor", term, (new sc_Pair("\u1E9Cf",null)))));
- (--sc_n_20);
- }
- }
- (sc_term_22 = term);
- if (!(sc_term_22 instanceof sc_Pair))
- (optrOpnd = sc_term_22);
- else
- (optrOpnd = (new sc_Pair((BgL_sc_symbolzd2ze3symbolzd2record_1ze3_nboyer((sc_term_22.car))), (translate_args_nboyer((sc_term_22.cdr))))));
- (sc_term_21 = (apply_subst_nboyer(((const_nboyer === null)?null:(new sc_Pair((new sc_Pair((const_nboyer.car.car), (translate_term_nboyer((const_nboyer.car.cdr))))), (translate_alist_nboyer((const_nboyer.cdr)))))), optrOpnd)));
- (answer = (tautologyp_nboyer((rewrite_nboyer(sc_term_21)), null, null)));
- (sc_write(rewrite_count_nboyer));
- (sc_display(" rewrites"));
- (sc_newline());
- if ((answer!== false))
- return rewrite_count_nboyer;
- else
- return false;
- }
- };
-}
-/* Exported Variables */
-var BgL_parsezd2ze3nbzd2treesze3;
-var BgL_earleyzd2benchmarkzd2;
-var BgL_parsezd2ze3parsedzf3zc2;
-var test;
-var BgL_parsezd2ze3treesz31;
-var BgL_makezd2parserzd2;
-/* End Exports */
-
-var const_earley;
-{
- (const_earley = (new sc_Pair((new sc_Pair("\u1E9Cs",(new sc_Pair((new sc_Pair("\u1E9Ca",null)),(new sc_Pair((new sc_Pair("\u1E9Cs",(new sc_Pair("\u1E9Cs",null)))),null)))))),null)));
- BgL_makezd2parserzd2 = function(grammar, lexer) {
- var i;
- var parser_descr;
- var def_loop;
- var nb_nts;
- var names;
- var steps;
- var predictors;
- var enders;
- var starters;
- var nts;
- var sc_names_1;
- var sc_steps_2;
- var sc_predictors_3;
- var sc_enders_4;
- var sc_starters_5;
- var nb_confs;
- var BgL_sc_defzd2loop_6zd2;
- var BgL_sc_nbzd2nts_7zd2;
- var sc_nts_8;
- var BgL_sc_defzd2loop_9zd2;
- var ind;
- {
- ind = function(nt, sc_nts_10) {
- var i;
- {
- (i = ((sc_nts_10.length)-(1)));
- while (true) {
- if ((i>=(0)))
- if ((sc_isEqual((sc_nts_10[i]), nt)))
- return i;
- else
- (--i);
- else
- return false;
- }
- }
- };
- (sc_nts_8 = ((BgL_sc_defzd2loop_9zd2 = function(defs, sc_nts_11) {
- var rule_loop;
- var head;
- var def;
- return ((defs instanceof sc_Pair)?((def = (defs.car)), (head = (def.car)), (rule_loop = function(rules, sc_nts_12) {
- var nt;
- var l;
- var sc_nts_13;
- var rule;
- if ((rules instanceof sc_Pair))
- {
- (rule = (rules.car));
- (l = rule);
- (sc_nts_13 = sc_nts_12);
- while ((l instanceof sc_Pair)) {
- {
- (nt = (l.car));
- (l = (l.cdr));
- (sc_nts_13 = (((sc_member(nt, sc_nts_13))!== false)?sc_nts_13:(new sc_Pair(nt, sc_nts_13))));
- }
- }
- return (rule_loop((rules.cdr), sc_nts_13));
- }
- else
- return (BgL_sc_defzd2loop_9zd2((defs.cdr), sc_nts_12));
- }), (rule_loop((def.cdr), (((sc_member(head, sc_nts_11))!== false)?sc_nts_11:(new sc_Pair(head, sc_nts_11)))))):(sc_list2vector((sc_reverse(sc_nts_11)))));
- }), (BgL_sc_defzd2loop_9zd2(grammar, null))));
- (BgL_sc_nbzd2nts_7zd2 = (sc_nts_8.length));
- (nb_confs = (((BgL_sc_defzd2loop_6zd2 = function(defs, BgL_sc_nbzd2confs_14zd2) {
- var rule_loop;
- var def;
- return ((defs instanceof sc_Pair)?((def = (defs.car)), (rule_loop = function(rules, BgL_sc_nbzd2confs_15zd2) {
- var l;
- var BgL_sc_nbzd2confs_16zd2;
- var rule;
- if ((rules instanceof sc_Pair))
- {
- (rule = (rules.car));
- (l = rule);
- (BgL_sc_nbzd2confs_16zd2 = BgL_sc_nbzd2confs_15zd2);
- while ((l instanceof sc_Pair)) {
- {
- (l = (l.cdr));
- (++BgL_sc_nbzd2confs_16zd2);
- }
- }
- return (rule_loop((rules.cdr), (BgL_sc_nbzd2confs_16zd2+(1))));
- }
- else
- return (BgL_sc_defzd2loop_6zd2((defs.cdr), BgL_sc_nbzd2confs_15zd2));
- }), (rule_loop((def.cdr), BgL_sc_nbzd2confs_14zd2))):BgL_sc_nbzd2confs_14zd2);
- }), (BgL_sc_defzd2loop_6zd2(grammar, (0))))+BgL_sc_nbzd2nts_7zd2));
- (sc_starters_5 = (sc_makeVector(BgL_sc_nbzd2nts_7zd2, null)));
- (sc_enders_4 = (sc_makeVector(BgL_sc_nbzd2nts_7zd2, null)));
- (sc_predictors_3 = (sc_makeVector(BgL_sc_nbzd2nts_7zd2, null)));
- (sc_steps_2 = (sc_makeVector(nb_confs, false)));
- (sc_names_1 = (sc_makeVector(nb_confs, false)));
- (nts = sc_nts_8);
- (starters = sc_starters_5);
- (enders = sc_enders_4);
- (predictors = sc_predictors_3);
- (steps = sc_steps_2);
- (names = sc_names_1);
- (nb_nts = (sc_nts_8.length));
- (i = (nb_nts-(1)));
- while ((i>=(0))) {
- {
- (sc_steps_2[i] = (i-nb_nts));
- (sc_names_1[i] = (sc_list((sc_nts_8[i]), (0))));
- (sc_enders_4[i] = (sc_list(i)));
- (--i);
- }
- }
- def_loop = function(defs, conf) {
- var rule_loop;
- var head;
- var def;
- return ((defs instanceof sc_Pair)?((def = (defs.car)), (head = (def.car)), (rule_loop = function(rules, conf, rule_num) {
- var i;
- var sc_i_17;
- var nt;
- var l;
- var sc_conf_18;
- var sc_i_19;
- var rule;
- if ((rules instanceof sc_Pair))
- {
- (rule = (rules.car));
- (names[conf] = (sc_list(head, rule_num)));
- (sc_i_19 = (ind(head, nts)));
- (starters[sc_i_19] = (new sc_Pair(conf, (starters[sc_i_19]))));
- (l = rule);
- (sc_conf_18 = conf);
- while ((l instanceof sc_Pair)) {
- {
- (nt = (l.car));
- (steps[sc_conf_18] = (ind(nt, nts)));
- (sc_i_17 = (ind(nt, nts)));
- (predictors[sc_i_17] = (new sc_Pair(sc_conf_18, (predictors[sc_i_17]))));
- (l = (l.cdr));
- (++sc_conf_18);
- }
- }
- (steps[sc_conf_18] = ((ind(head, nts))-nb_nts));
- (i = (ind(head, nts)));
- (enders[i] = (new sc_Pair(sc_conf_18, (enders[i]))));
- return (rule_loop((rules.cdr), (sc_conf_18+(1)), (rule_num+(1))));
- }
- else
- return (def_loop((defs.cdr), conf));
- }), (rule_loop((def.cdr), conf, (1)))):undefined);
- };
- (def_loop(grammar, (sc_nts_8.length)));
- (parser_descr = [lexer, sc_nts_8, sc_starters_5, sc_enders_4, sc_predictors_3, sc_steps_2, sc_names_1]);
- return function(input) {
- var optrOpnd;
- var sc_optrOpnd_20;
- var sc_optrOpnd_21;
- var sc_optrOpnd_22;
- var loop1;
- var BgL_sc_stateza2_23za2;
- var toks;
- var BgL_sc_nbzd2nts_24zd2;
- var sc_steps_25;
- var sc_enders_26;
- var state_num;
- var BgL_sc_statesza2_27za2;
- var states;
- var i;
- var conf;
- var l;
- var tok_nts;
- var sc_i_28;
- var sc_i_29;
- var l1;
- var l2;
- var tok;
- var tail1129;
- var L1125;
- var goal_enders;
- var BgL_sc_statesza2_30za2;
- var BgL_sc_nbzd2nts_31zd2;
- var BgL_sc_nbzd2confs_32zd2;
- var nb_toks;
- var goal_starters;
- var sc_states_33;
- var BgL_sc_nbzd2confs_34zd2;
- var BgL_sc_nbzd2toks_35zd2;
- var sc_toks_36;
- var falseHead1128;
- var sc_names_37;
- var sc_steps_38;
- var sc_predictors_39;
- var sc_enders_40;
- var sc_starters_41;
- var sc_nts_42;
- var lexer;
- var sc_ind_43;
- var make_states;
- var BgL_sc_confzd2setzd2getza2_44za2;
- var conf_set_merge_new_bang;
- var conf_set_adjoin;
- var BgL_sc_confzd2setzd2adjoinza2_45za2;
- var BgL_sc_confzd2setzd2adjoinza2za2_46z00;
- var conf_set_union;
- var forw;
- var is_parsed;
- var deriv_trees;
- var BgL_sc_derivzd2treesza2_47z70;
- var nb_deriv_trees;
- var BgL_sc_nbzd2derivzd2treesza2_48za2;
- {
- sc_ind_43 = function(nt, sc_nts_49) {
- var i;
- {
- (i = ((sc_nts_49.length)-(1)));
- while (true) {
- if ((i>=(0)))
- if ((sc_isEqual((sc_nts_49[i]), nt)))
- return i;
- else
- (--i);
- else
- return false;
- }
- }
- };
- make_states = function(BgL_sc_nbzd2toks_50zd2, BgL_sc_nbzd2confs_51zd2) {
- var v;
- var i;
- var sc_states_52;
- {
- (sc_states_52 = (sc_makeVector((BgL_sc_nbzd2toks_50zd2+(1)), false)));
- (i = BgL_sc_nbzd2toks_50zd2);
- while ((i>=(0))) {
- {
- (v = (sc_makeVector((BgL_sc_nbzd2confs_51zd2+(1)), false)));
- (v[(0)] = (-1));
- (sc_states_52[i] = v);
- (--i);
- }
- }
- return sc_states_52;
- }
- };
- BgL_sc_confzd2setzd2getza2_44za2 = function(state, BgL_sc_statezd2num_53zd2, sc_conf_54) {
- var conf_set;
- var BgL_sc_confzd2set_55zd2;
- return ((BgL_sc_confzd2set_55zd2 = (state[(sc_conf_54+(1))])), ((BgL_sc_confzd2set_55zd2!== false)?BgL_sc_confzd2set_55zd2:((conf_set = (sc_makeVector((BgL_sc_statezd2num_53zd2+(6)), false))), (conf_set[(1)] = (-3)), (conf_set[(2)] = (-1)), (conf_set[(3)] = (-1)), (conf_set[(4)] = (-1)), (state[(sc_conf_54+(1))] = conf_set), conf_set)));
- };
- conf_set_merge_new_bang = function(conf_set) {
- return ((conf_set[((conf_set[(1)])+(5))] = (conf_set[(4)])), (conf_set[(1)] = (conf_set[(3)])), (conf_set[(3)] = (-1)), (conf_set[(4)] = (-1)));
- };
- conf_set_adjoin = function(state, conf_set, sc_conf_56, i) {
- var tail;
- return ((tail = (conf_set[(3)])), (conf_set[(i+(5))] = (-1)), (conf_set[(tail+(5))] = i), (conf_set[(3)] = i), ((tail<(0))?((conf_set[(0)] = (state[(0)])), (state[(0)] = sc_conf_56)):undefined));
- };
- BgL_sc_confzd2setzd2adjoinza2_45za2 = function(sc_states_57, BgL_sc_statezd2num_58zd2, l, i) {
- var conf_set;
- var sc_conf_59;
- var l1;
- var state;
- {
- (state = (sc_states_57[BgL_sc_statezd2num_58zd2]));
- (l1 = l);
- while ((l1 instanceof sc_Pair)) {
- {
- (sc_conf_59 = (l1.car));
- (conf_set = (BgL_sc_confzd2setzd2getza2_44za2(state, BgL_sc_statezd2num_58zd2, sc_conf_59)));
- if (((conf_set[(i+(5))])=== false))
- {
- (conf_set_adjoin(state, conf_set, sc_conf_59, i));
- (l1 = (l1.cdr));
- }
- else
- (l1 = (l1.cdr));
- }
- }
- return undefined;
- }
- };
- BgL_sc_confzd2setzd2adjoinza2za2_46z00 = function(sc_states_60, BgL_sc_statesza2_61za2, BgL_sc_statezd2num_62zd2, sc_conf_63, i) {
- var BgL_sc_confzd2setza2_64z70;
- var BgL_sc_stateza2_65za2;
- var conf_set;
- var state;
- return ((state = (sc_states_60[BgL_sc_statezd2num_62zd2])), ((((conf_set = (state[(sc_conf_63+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false)?((BgL_sc_stateza2_65za2 = (BgL_sc_statesza2_61za2[BgL_sc_statezd2num_62zd2])), (BgL_sc_confzd2setza2_64z70 = (BgL_sc_confzd2setzd2getza2_44za2(BgL_sc_stateza2_65za2, BgL_sc_statezd2num_62zd2, sc_conf_63))), (((BgL_sc_confzd2setza2_64z70[(i+(5))])=== false)?(conf_set_adjoin(BgL_sc_stateza2_65za2, BgL_sc_confzd2setza2_64z70, sc_conf_63, i)):undefined), true):false));
- };
- conf_set_union = function(state, conf_set, sc_conf_66, other_set) {
- var i;
- {
- (i = (other_set[(2)]));
- while ((i>=(0))) {
- if (((conf_set[(i+(5))])=== false))
- {
- (conf_set_adjoin(state, conf_set, sc_conf_66, i));
- (i = (other_set[(i+(5))]));
- }
- else
- (i = (other_set[(i+(5))]));
- }
- return undefined;
- }
- };
- forw = function(sc_states_67, BgL_sc_statezd2num_68zd2, sc_starters_69, sc_enders_70, sc_predictors_71, sc_steps_72, sc_nts_73) {
- var next_set;
- var next;
- var conf_set;
- var ender;
- var l;
- var starter_set;
- var starter;
- var sc_l_74;
- var sc_loop1_75;
- var head;
- var BgL_sc_confzd2set_76zd2;
- var BgL_sc_statezd2num_77zd2;
- var state;
- var sc_states_78;
- var preds;
- var BgL_sc_confzd2set_79zd2;
- var step;
- var sc_conf_80;
- var BgL_sc_nbzd2nts_81zd2;
- var sc_state_82;
- {
- (sc_state_82 = (sc_states_67[BgL_sc_statezd2num_68zd2]));
- (BgL_sc_nbzd2nts_81zd2 = (sc_nts_73.length));
- while (true) {
- {
- (sc_conf_80 = (sc_state_82[(0)]));
- if ((sc_conf_80>=(0)))
- {
- (step = (sc_steps_72[sc_conf_80]));
- (BgL_sc_confzd2set_79zd2 = (sc_state_82[(sc_conf_80+(1))]));
- (head = (BgL_sc_confzd2set_79zd2[(4)]));
- (sc_state_82[(0)] = (BgL_sc_confzd2set_79zd2[(0)]));
- (conf_set_merge_new_bang(BgL_sc_confzd2set_79zd2));
- if ((step>=(0)))
- {
- (sc_l_74 = (sc_starters_69[step]));
- while ((sc_l_74 instanceof sc_Pair)) {
- {
- (starter = (sc_l_74.car));
- (starter_set = (BgL_sc_confzd2setzd2getza2_44za2(sc_state_82, BgL_sc_statezd2num_68zd2, starter)));
- if (((starter_set[(BgL_sc_statezd2num_68zd2+(5))])=== false))
- {
- (conf_set_adjoin(sc_state_82, starter_set, starter, BgL_sc_statezd2num_68zd2));
- (sc_l_74 = (sc_l_74.cdr));
- }
- else
- (sc_l_74 = (sc_l_74.cdr));
- }
- }
- (l = (sc_enders_70[step]));
- while ((l instanceof sc_Pair)) {
- {
- (ender = (l.car));
- if ((((conf_set = (sc_state_82[(ender+(1))])), ((conf_set!== false)?(conf_set[(BgL_sc_statezd2num_68zd2+(5))]):false))!== false))
- {
- (next = (sc_conf_80+(1)));
- (next_set = (BgL_sc_confzd2setzd2getza2_44za2(sc_state_82, BgL_sc_statezd2num_68zd2, next)));
- (conf_set_union(sc_state_82, next_set, next, BgL_sc_confzd2set_79zd2));
- (l = (l.cdr));
- }
- else
- (l = (l.cdr));
- }
- }
- }
- else
- {
- (preds = (sc_predictors_71[(step+BgL_sc_nbzd2nts_81zd2)]));
- (sc_states_78 = sc_states_67);
- (state = sc_state_82);
- (BgL_sc_statezd2num_77zd2 = BgL_sc_statezd2num_68zd2);
- (BgL_sc_confzd2set_76zd2 = BgL_sc_confzd2set_79zd2);
- sc_loop1_75 = function(l) {
- var sc_state_83;
- var BgL_sc_nextzd2set_84zd2;
- var sc_next_85;
- var pred_set;
- var i;
- var pred;
- if ((l instanceof sc_Pair))
- {
- (pred = (l.car));
- (i = head);
- while ((i>=(0))) {
- {
- (pred_set = ((sc_state_83 = (sc_states_78[i])), (sc_state_83[(pred+(1))])));
- if ((pred_set!== false))
- {
- (sc_next_85 = (pred+(1)));
- (BgL_sc_nextzd2set_84zd2 = (BgL_sc_confzd2setzd2getza2_44za2(state, BgL_sc_statezd2num_77zd2, sc_next_85)));
- (conf_set_union(state, BgL_sc_nextzd2set_84zd2, sc_next_85, pred_set));
- }
- (i = (BgL_sc_confzd2set_76zd2[(i+(5))]));
- }
- }
- return (sc_loop1_75((l.cdr)));
- }
- else
- return undefined;
- };
- (sc_loop1_75(preds));
- }
- }
- else
- return undefined;
- }
- }
- }
- };
- is_parsed = function(nt, i, j, sc_nts_86, sc_enders_87, sc_states_88) {
- var conf_set;
- var state;
- var sc_conf_89;
- var l;
- var BgL_sc_ntza2_90za2;
- {
- (BgL_sc_ntza2_90za2 = (sc_ind_43(nt, sc_nts_86)));
- if ((BgL_sc_ntza2_90za2!== false))
- {
- (sc_nts_86.length);
- (l = (sc_enders_87[BgL_sc_ntza2_90za2]));
- while (true) {
- if ((l instanceof sc_Pair))
- {
- (sc_conf_89 = (l.car));
- if ((((state = (sc_states_88[j])), (conf_set = (state[(sc_conf_89+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false))
- return true;
- else
- (l = (l.cdr));
- }
- else
- return false;
- }
- }
- else
- return false;
- }
- };
- deriv_trees = function(sc_conf_91, i, j, sc_enders_92, sc_steps_93, sc_names_94, sc_toks_95, sc_states_96, BgL_sc_nbzd2nts_97zd2) {
- var sc_loop1_98;
- var prev;
- var name;
- return ((name = (sc_names_94[sc_conf_91])), ((name!== false)?((sc_conf_91<BgL_sc_nbzd2nts_97zd2)?(sc_list((sc_list(name, ((sc_toks_95[i]).car))))):(sc_list((sc_list(name))))):((prev = (sc_conf_91-(1))), (sc_loop1_98 = function(l1, l2) {
- var loop2;
- var ender_set;
- var state;
- var ender;
- var l1;
- var l2;
- while (true) {
- if ((l1 instanceof sc_Pair))
- {
- (ender = (l1.car));
- (ender_set = ((state = (sc_states_96[j])), (state[(ender+(1))])));
- if ((ender_set!== false))
- {
- loop2 = function(k, l2) {
- var loop3;
- var ender_trees;
- var prev_trees;
- var conf_set;
- var sc_state_99;
- var k;
- var l2;
- while (true) {
- if ((k>=(0)))
- if (((k>=i)&&(((sc_state_99 = (sc_states_96[k])), (conf_set = (sc_state_99[(prev+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false)))
- {
- (prev_trees = (deriv_trees(prev, i, k, sc_enders_92, sc_steps_93, sc_names_94, sc_toks_95, sc_states_96, BgL_sc_nbzd2nts_97zd2)));
- (ender_trees = (deriv_trees(ender, k, j, sc_enders_92, sc_steps_93, sc_names_94, sc_toks_95, sc_states_96, BgL_sc_nbzd2nts_97zd2)));
- loop3 = function(l3, l2) {
- var l4;
- var sc_l2_100;
- var ender_tree;
- if ((l3 instanceof sc_Pair))
- {
- (ender_tree = (sc_list((l3.car))));
- (l4 = prev_trees);
- (sc_l2_100 = l2);
- while ((l4 instanceof sc_Pair)) {
- {
- (sc_l2_100 = (new sc_Pair((sc_append((l4.car), ender_tree)), sc_l2_100)));
- (l4 = (l4.cdr));
- }
- }
- return (loop3((l3.cdr), sc_l2_100));
- }
- else
- return (loop2((ender_set[(k+(5))]), l2));
- };
- return (loop3(ender_trees, l2));
- }
- else
- (k = (ender_set[(k+(5))]));
- else
- return (sc_loop1_98((l1.cdr), l2));
- }
- };
- return (loop2((ender_set[(2)]), l2));
- }
- else
- (l1 = (l1.cdr));
- }
- else
- return l2;
- }
- }), (sc_loop1_98((sc_enders_92[(sc_steps_93[prev])]), null)))));
- };
- BgL_sc_derivzd2treesza2_47z70 = function(nt, i, j, sc_nts_101, sc_enders_102, sc_steps_103, sc_names_104, sc_toks_105, sc_states_106) {
- var conf_set;
- var state;
- var sc_conf_107;
- var l;
- var trees;
- var BgL_sc_nbzd2nts_108zd2;
- var BgL_sc_ntza2_109za2;
- {
- (BgL_sc_ntza2_109za2 = (sc_ind_43(nt, sc_nts_101)));
- if ((BgL_sc_ntza2_109za2!== false))
- {
- (BgL_sc_nbzd2nts_108zd2 = (sc_nts_101.length));
- (l = (sc_enders_102[BgL_sc_ntza2_109za2]));
- (trees = null);
- while ((l instanceof sc_Pair)) {
- {
- (sc_conf_107 = (l.car));
- if ((((state = (sc_states_106[j])), (conf_set = (state[(sc_conf_107+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false))
- {
- (l = (l.cdr));
- (trees = (sc_append((deriv_trees(sc_conf_107, i, j, sc_enders_102, sc_steps_103, sc_names_104, sc_toks_105, sc_states_106, BgL_sc_nbzd2nts_108zd2)), trees)));
- }
- else
- (l = (l.cdr));
- }
- }
- return trees;
- }
- else
- return false;
- }
- };
- nb_deriv_trees = function(sc_conf_110, i, j, sc_enders_111, sc_steps_112, sc_toks_113, sc_states_114, BgL_sc_nbzd2nts_115zd2) {
- var sc_loop1_116;
- var tmp1124;
- var prev;
- return ((prev = (sc_conf_110-(1))), ((((tmp1124 = (sc_conf_110<BgL_sc_nbzd2nts_115zd2)), ((tmp1124!== false)?tmp1124:((sc_steps_112[prev])<(0))))!== false)?(1):((sc_loop1_116 = function(l, sc_n_118) {
- var nb_ender_trees;
- var nb_prev_trees;
- var conf_set;
- var state;
- var k;
- var n;
- var ender_set;
- var sc_state_117;
- var ender;
- var l;
- var sc_n_118;
- while (true) {
- if ((l instanceof sc_Pair))
- {
- (ender = (l.car));
- (ender_set = ((sc_state_117 = (sc_states_114[j])), (sc_state_117[(ender+(1))])));
- if ((ender_set!== false))
- {
- (k = (ender_set[(2)]));
- (n = sc_n_118);
- while ((k>=(0))) {
- if (((k>=i)&&(((state = (sc_states_114[k])), (conf_set = (state[(prev+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false)))
- {
- (nb_prev_trees = (nb_deriv_trees(prev, i, k, sc_enders_111, sc_steps_112, sc_toks_113, sc_states_114, BgL_sc_nbzd2nts_115zd2)));
- (nb_ender_trees = (nb_deriv_trees(ender, k, j, sc_enders_111, sc_steps_112, sc_toks_113, sc_states_114, BgL_sc_nbzd2nts_115zd2)));
- (k = (ender_set[(k+(5))]));
- (n +=(nb_prev_trees*nb_ender_trees));
- }
- else
- (k = (ender_set[(k+(5))]));
- }
- return (sc_loop1_116((l.cdr), n));
- }
- else
- (l = (l.cdr));
- }
- else
- return sc_n_118;
- }
- }), (sc_loop1_116((sc_enders_111[(sc_steps_112[prev])]), (0))))));
- };
- BgL_sc_nbzd2derivzd2treesza2_48za2 = function(nt, i, j, sc_nts_119, sc_enders_120, sc_steps_121, sc_toks_122, sc_states_123) {
- var conf_set;
- var state;
- var sc_conf_124;
- var l;
- var nb_trees;
- var BgL_sc_nbzd2nts_125zd2;
- var BgL_sc_ntza2_126za2;
- {
- (BgL_sc_ntza2_126za2 = (sc_ind_43(nt, sc_nts_119)));
- if ((BgL_sc_ntza2_126za2!== false))
- {
- (BgL_sc_nbzd2nts_125zd2 = (sc_nts_119.length));
- (l = (sc_enders_120[BgL_sc_ntza2_126za2]));
- (nb_trees = (0));
- while ((l instanceof sc_Pair)) {
- {
- (sc_conf_124 = (l.car));
- if ((((state = (sc_states_123[j])), (conf_set = (state[(sc_conf_124+(1))])), ((conf_set!== false)?(conf_set[(i+(5))]):false))!== false))
- {
- (l = (l.cdr));
- (nb_trees = ((nb_deriv_trees(sc_conf_124, i, j, sc_enders_120, sc_steps_121, sc_toks_122, sc_states_123, BgL_sc_nbzd2nts_125zd2))+nb_trees));
- }
- else
- (l = (l.cdr));
- }
- }
- return nb_trees;
- }
- else
- return false;
- }
- };
- (lexer = (parser_descr[(0)]));
- (sc_nts_42 = (parser_descr[(1)]));
- (sc_starters_41 = (parser_descr[(2)]));
- (sc_enders_40 = (parser_descr[(3)]));
- (sc_predictors_39 = (parser_descr[(4)]));
- (sc_steps_38 = (parser_descr[(5)]));
- (sc_names_37 = (parser_descr[(6)]));
- (falseHead1128 = (new sc_Pair(null, null)));
- (L1125 = (lexer(input)));
- (tail1129 = falseHead1128);
- while (!(L1125 === null)) {
- {
- (tok = (L1125.car));
- (l1 = (tok.cdr));
- (l2 = null);
- while ((l1 instanceof sc_Pair)) {
- {
- (sc_i_29 = (sc_ind_43((l1.car), sc_nts_42)));
- if ((sc_i_29!== false))
- {
- (l1 = (l1.cdr));
- (l2 = (new sc_Pair(sc_i_29, l2)));
- }
- else
- (l1 = (l1.cdr));
- }
- }
- (sc_optrOpnd_22 = (new sc_Pair((tok.car), (sc_reverse(l2)))));
- (sc_optrOpnd_21 = (new sc_Pair(sc_optrOpnd_22, null)));
- (tail1129.cdr = sc_optrOpnd_21);
- (tail1129 = (tail1129.cdr));
- (L1125 = (L1125.cdr));
- }
- }
- (sc_optrOpnd_20 = (falseHead1128.cdr));
- (sc_toks_36 = (sc_list2vector(sc_optrOpnd_20)));
- (BgL_sc_nbzd2toks_35zd2 = (sc_toks_36.length));
- (BgL_sc_nbzd2confs_34zd2 = (sc_steps_38.length));
- (sc_states_33 = (make_states(BgL_sc_nbzd2toks_35zd2, BgL_sc_nbzd2confs_34zd2)));
- (goal_starters = (sc_starters_41[(0)]));
- (BgL_sc_confzd2setzd2adjoinza2_45za2(sc_states_33, (0), goal_starters, (0)));
- (forw(sc_states_33, (0), sc_starters_41, sc_enders_40, sc_predictors_39, sc_steps_38, sc_nts_42));
- (sc_i_28 = (0));
- while ((sc_i_28<BgL_sc_nbzd2toks_35zd2)) {
- {
- (tok_nts = ((sc_toks_36[sc_i_28]).cdr));
- (BgL_sc_confzd2setzd2adjoinza2_45za2(sc_states_33, (sc_i_28+(1)), tok_nts, sc_i_28));
- (forw(sc_states_33, (sc_i_28+(1)), sc_starters_41, sc_enders_40, sc_predictors_39, sc_steps_38, sc_nts_42));
- (++sc_i_28);
- }
- }
- (nb_toks = (sc_toks_36.length));
- (BgL_sc_nbzd2confs_32zd2 = (sc_steps_38.length));
- (BgL_sc_nbzd2nts_31zd2 = (sc_nts_42.length));
- (BgL_sc_statesza2_30za2 = (make_states(nb_toks, BgL_sc_nbzd2confs_32zd2)));
- (goal_enders = (sc_enders_40[(0)]));
- (l = goal_enders);
- while ((l instanceof sc_Pair)) {
- {
- (conf = (l.car));
- (BgL_sc_confzd2setzd2adjoinza2za2_46z00(sc_states_33, BgL_sc_statesza2_30za2, nb_toks, conf, (0)));
- (l = (l.cdr));
- }
- }
- (i = nb_toks);
- while ((i>=(0))) {
- {
- (states = sc_states_33);
- (BgL_sc_statesza2_27za2 = BgL_sc_statesza2_30za2);
- (state_num = i);
- (sc_enders_26 = sc_enders_40);
- (sc_steps_25 = sc_steps_38);
- (BgL_sc_nbzd2nts_24zd2 = BgL_sc_nbzd2nts_31zd2);
- (toks = sc_toks_36);
- (BgL_sc_stateza2_23za2 = (BgL_sc_statesza2_30za2[i]));
- loop1 = function() {
- var sc_loop1_127;
- var prev;
- var BgL_sc_statesza2_128za2;
- var sc_states_129;
- var j;
- var i;
- var sc_i_130;
- var head;
- var conf_set;
- var sc_conf_131;
- {
- (sc_conf_131 = (BgL_sc_stateza2_23za2[(0)]));
- if ((sc_conf_131>=(0)))
- {
- (conf_set = (BgL_sc_stateza2_23za2[(sc_conf_131+(1))]));
- (head = (conf_set[(4)]));
- (BgL_sc_stateza2_23za2[(0)] = (conf_set[(0)]));
- (conf_set_merge_new_bang(conf_set));
- (sc_i_130 = head);
- while ((sc_i_130>=(0))) {
- {
- (i = sc_i_130);
- (j = state_num);
- (sc_states_129 = states);
- (BgL_sc_statesza2_128za2 = BgL_sc_statesza2_27za2);
- (prev = (sc_conf_131-(1)));
- if (((sc_conf_131>=BgL_sc_nbzd2nts_24zd2)&&((sc_steps_25[prev])>=(0))))
- {
- sc_loop1_127 = function(l) {
- var k;
- var ender_set;
- var state;
- var ender;
- var l;
- while (true) {
- if ((l instanceof sc_Pair))
- {
- (ender = (l.car));
- (ender_set = ((state = (sc_states_129[j])), (state[(ender+(1))])));
- if ((ender_set!== false))
- {
- (k = (ender_set[(2)]));
- while ((k>=(0))) {
- {
- if ((k>=i))
- if (((BgL_sc_confzd2setzd2adjoinza2za2_46z00(sc_states_129, BgL_sc_statesza2_128za2, k, prev, i))!== false))
- (BgL_sc_confzd2setzd2adjoinza2za2_46z00(sc_states_129, BgL_sc_statesza2_128za2, j, ender, k));
- (k = (ender_set[(k+(5))]));
- }
- }
- return (sc_loop1_127((l.cdr)));
- }
- else
- (l = (l.cdr));
- }
- else
- return undefined;
- }
- };
- (sc_loop1_127((sc_enders_26[(sc_steps_25[prev])])));
- }
- (sc_i_130 = (conf_set[(sc_i_130+(5))]));
- }
- }
- return (loop1());
- }
- else
- return undefined;
- }
- };
- (loop1());
- (--i);
- }
- }
- (optrOpnd = BgL_sc_statesza2_30za2);
- return [sc_nts_42, sc_starters_41, sc_enders_40, sc_predictors_39, sc_steps_38, sc_names_37, sc_toks_36, optrOpnd, is_parsed, BgL_sc_derivzd2treesza2_47z70, BgL_sc_nbzd2derivzd2treesza2_48za2];
- }
- };
- }
- };
- BgL_parsezd2ze3parsedzf3zc2 = function(parse, nt, i, j) {
- var is_parsed;
- var states;
- var enders;
- var nts;
- return ((nts = (parse[(0)])), (enders = (parse[(2)])), (states = (parse[(7)])), (is_parsed = (parse[(8)])), (is_parsed(nt, i, j, nts, enders, states)));
- };
- BgL_parsezd2ze3treesz31 = function(parse, nt, i, j) {
- var BgL_sc_derivzd2treesza2_132z70;
- var states;
- var toks;
- var names;
- var steps;
- var enders;
- var nts;
- return ((nts = (parse[(0)])), (enders = (parse[(2)])), (steps = (parse[(4)])), (names = (parse[(5)])), (toks = (parse[(6)])), (states = (parse[(7)])), (BgL_sc_derivzd2treesza2_132z70 = (parse[(9)])), (BgL_sc_derivzd2treesza2_132z70(nt, i, j, nts, enders, steps, names, toks, states)));
- };
- BgL_parsezd2ze3nbzd2treesze3 = function(parse, nt, i, j) {
- var BgL_sc_nbzd2derivzd2treesza2_133za2;
- var states;
- var toks;
- var steps;
- var enders;
- var nts;
- return ((nts = (parse[(0)])), (enders = (parse[(2)])), (steps = (parse[(4)])), (toks = (parse[(6)])), (states = (parse[(7)])), (BgL_sc_nbzd2derivzd2treesza2_133za2 = (parse[(10)])), (BgL_sc_nbzd2derivzd2treesza2_133za2(nt, i, j, nts, enders, steps, toks, states)));
- };
- test = function(k) {
- var x;
- var p;
- return ((p = (BgL_makezd2parserzd2(const_earley, function(l) {
- var sc_x_134;
- var tail1134;
- var L1130;
- var falseHead1133;
- {
- (falseHead1133 = (new sc_Pair(null, null)));
- (tail1134 = falseHead1133);
- (L1130 = l);
- while (!(L1130 === null)) {
- {
- (tail1134.cdr = (new sc_Pair(((sc_x_134 = (L1130.car)), (sc_list(sc_x_134, sc_x_134))), null)));
- (tail1134 = (tail1134.cdr));
- (L1130 = (L1130.cdr));
- }
- }
- return (falseHead1133.cdr);
- }
- }))), (x = (p((sc_vector2list((sc_makeVector(k, "\u1E9Ca"))))))), (sc_length((BgL_parsezd2ze3treesz31(x, "\u1E9Cs", (0), k)))));
- };
- BgL_earleyzd2benchmarkzd2 = function() {
- var args = null;
- for (var sc_tmp = arguments.length - 1; sc_tmp >= 0; sc_tmp--) {
- args = sc_cons(arguments[sc_tmp], args);
- }
- var k;
- return ((k = ((args === null)?(7):(args.car))), (BgL_runzd2benchmarkzd2("earley", (1), function() {
- return (test(k));
- }, function(result) {
- return ((sc_display(result)), (sc_newline()), true);
- })));
- };
-}
-
-
-/************* END OF GENERATED CODE *************/
-// Invoke this function to run a benchmark.
-// The first argument is a string identifying the benchmark.
-// The second argument is the number of times to run the benchmark.
-// The third argument is a function that runs the benchmark.
-// The fourth argument is a unary function that warns if the result
-// returned by the benchmark is incorrect.
-//
-// Example:
-// RunBenchmark("new Array()",
-// 1,
-// function () { new Array(1000000); }
-// function (v) {
-// return (v instanceof Array) && (v.length == 1000000);
-// });
-
-SC_DEFAULT_OUT = new sc_GenericOutputPort(function(s) {});
-SC_ERROR_OUT = SC_DEFAULT_OUT;
-
-function RunBenchmark(name, count, run, warn) {
- for (var n = 0; n < count; ++n) {
- result = run();
- }
-}
-
-var BgL_runzd2benchmarkzd2 = RunBenchmark;
-
-for (var i = 0; i < 4; ++i) {
- BgL_earleyzd2benchmarkzd2();
- BgL_nboyerzd2benchmarkzd2();
-}
diff --git a/SunSpider/tests/v8-raytrace.js b/SunSpider/tests/v8-raytrace.js
deleted file mode 100644
index be2cdfc..0000000
--- a/SunSpider/tests/v8-raytrace.js
+++ /dev/null
@@ -1,3415 +0,0 @@
-// The ray tracer code in this file is written by Adam Burmister. It
-// is available in its original form from:
-//
-// http://labs.flog.nz.co/raytracer/
-//
-// It has been modified slightly by Google to work as a standalone
-// benchmark, but the all the computational code remains
-// untouched. This file also contains a copy of the Prototype
-// JavaScript framework which is used by the ray tracer.
-
-// Create dummy objects if we're not running in a browser.
-if (typeof document == 'undefined') {
- document = { };
- window = { opera: null };
- navigator = { userAgent: null, appVersion: "" };
-}
-
-
-// ------------------------------------------------------------------------
-// ------------------------------------------------------------------------
-
-
-/* Prototype JavaScript framework, version 1.5.0
- * (c) 2005-2007 Sam Stephenson
- *
- * Prototype is freely distributable under the terms of an MIT-style license.
- * For details, see the Prototype web site: http://prototype.conio.net/
- *
-/*--------------------------------------------------------------------------*/
-
-//--------------------
-var Prototype = {
- Version: '1.5.0',
- BrowserFeatures: {
- XPath: !!document.evaluate
- },
-
- ScriptFragment: '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)',
- emptyFunction: function() {},
- K: function(x) { return x }
-}
-
-var Class = {
- create: function() {
- return function() {
- this.initialize.apply(this, arguments);
- }
- }
-}
-
-var Abstract = new Object();
-
-Object.extend = function(destination, source) {
- for (var property in source) {
- destination[property] = source[property];
- }
- return destination;
-}
-
-Object.extend(Object, {
- inspect: function(object) {
- try {
- if (object === undefined) return 'undefined';
- if (object === null) return 'null';
- return object.inspect ? object.inspect() : object.toString();
- } catch (e) {
- if (e instanceof RangeError) return '...';
- throw e;
- }
- },
-
- keys: function(object) {
- var keys = [];
- for (var property in object)
- keys.push(property);
- return keys;
- },
-
- values: function(object) {
- var values = [];
- for (var property in object)
- values.push(object[property]);
- return values;
- },
-
- clone: function(object) {
- return Object.extend({}, object);
- }
-});
-
-Function.prototype.bind = function() {
- var __method = this, args = $A(arguments), object = args.shift();
- return function() {
- return __method.apply(object, args.concat($A(arguments)));
- }
-}
-
-Function.prototype.bindAsEventListener = function(object) {
- var __method = this, args = $A(arguments), object = args.shift();
- return function(event) {
- return __method.apply(object, [( event || window.event)].concat(args).concat($A(arguments)));
- }
-}
-
-Object.extend(Number.prototype, {
- toColorPart: function() {
- var digits = this.toString(16);
- if (this < 16) return '0' + digits;
- return digits;
- },
-
- succ: function() {
- return this + 1;
- },
-
- times: function(iterator) {
- $R(0, this, true).each(iterator);
- return this;
- }
-});
-
-var Try = {
- these: function() {
- var returnValue;
-
- for (var i = 0, length = arguments.length; i < length; i++) {
- var lambda = arguments[i];
- try {
- returnValue = lambda();
- break;
- } catch (e) {}
- }
-
- return returnValue;
- }
-}
-
-/*--------------------------------------------------------------------------*/
-
-var PeriodicalExecuter = Class.create();
-PeriodicalExecuter.prototype = {
- initialize: function(callback, frequency) {
- this.callback = callback;
- this.frequency = frequency;
- this.currentlyExecuting = false;
-
- this.registerCallback();
- },
-
- registerCallback: function() {
- this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
- },
-
- stop: function() {
- if (!this.timer) return;
- clearInterval(this.timer);
- this.timer = null;
- },
-
- onTimerEvent: function() {
- if (!this.currentlyExecuting) {
- try {
- this.currentlyExecuting = true;
- this.callback(this);
- } finally {
- this.currentlyExecuting = false;
- }
- }
- }
-}
-String.interpret = function(value){
- return value == null ? '' : String(value);
-}
-
-Object.extend(String.prototype, {
- gsub: function(pattern, replacement) {
- var result = '', source = this, match;
- replacement = arguments.callee.prepareReplacement(replacement);
-
- while (source.length > 0) {
- if (match = source.match(pattern)) {
- result += source.slice(0, match.index);
- result += String.interpret(replacement(match));
- source = source.slice(match.index + match[0].length);
- } else {
- result += source, source = '';
- }
- }
- return result;
- },
-
- sub: function(pattern, replacement, count) {
- replacement = this.gsub.prepareReplacement(replacement);
- count = count === undefined ? 1 : count;
-
- return this.gsub(pattern, function(match) {
- if (--count < 0) return match[0];
- return replacement(match);
- });
- },
-
- scan: function(pattern, iterator) {
- this.gsub(pattern, iterator);
- return this;
- },
-
- truncate: function(length, truncation) {
- length = length || 30;
- truncation = truncation === undefined ? '...' : truncation;
- return this.length > length ?
- this.slice(0, length - truncation.length) + truncation : this;
- },
-
- strip: function() {
- return this.replace(/^\s+/, '').replace(/\s+$/, '');
- },
-
- stripTags: function() {
- return this.replace(/<\/?[^>]+>/gi, '');
- },
-
- stripScripts: function() {
- return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');
- },
-
- extractScripts: function() {
- var matchAll = new RegExp(Prototype.ScriptFragment, 'img');
- var matchOne = new RegExp(Prototype.ScriptFragment, 'im');
- return (this.match(matchAll) || []).map(function(scriptTag) {
- return (scriptTag.match(matchOne) || ['', ''])[1];
- });
- },
-
- evalScripts: function() {
- return this.extractScripts().map(function(script) { return eval(script) });
- },
-
- escapeHTML: function() {
- var div = document.createElement('div');
- var text = document.createTextNode(this);
- div.appendChild(text);
- return div.innerHTML;
- },
-
- unescapeHTML: function() {
- var div = document.createElement('div');
- div.innerHTML = this.stripTags();
- return div.childNodes[0] ? (div.childNodes.length > 1 ?
- $A(div.childNodes).inject('',function(memo,node){ return memo+node.nodeValue }) :
- div.childNodes[0].nodeValue) : '';
- },
-
- toQueryParams: function(separator) {
- var match = this.strip().match(/([^?#]*)(#.*)?$/);
- if (!match) return {};
-
- return match[1].split(separator || '&').inject({}, function(hash, pair) {
- if ((pair = pair.split('='))[0]) {
- var name = decodeURIComponent(pair[0]);
- var value = pair[1] ? decodeURIComponent(pair[1]) : undefined;
-
- if (hash[name] !== undefined) {
- if (hash[name].constructor != Array)
- hash[name] = [hash[name]];
- if (value) hash[name].push(value);
- }
- else hash[name] = value;
- }
- return hash;
- });
- },
-
- toArray: function() {
- return this.split('');
- },
-
- succ: function() {
- return this.slice(0, this.length - 1) +
- String.fromCharCode(this.charCodeAt(this.length - 1) + 1);
- },
-
- camelize: function() {
- var parts = this.split('-'), len = parts.length;
- if (len == 1) return parts[0];
-
- var camelized = this.charAt(0) == '-'
- ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)
- : parts[0];
-
- for (var i = 1; i < len; i++)
- camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1);
-
- return camelized;
- },
-
- capitalize: function(){
- return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase();
- },
-
- underscore: function() {
- return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase();
- },
-
- dasherize: function() {
- return this.gsub(/_/,'-');
- },
-
- inspect: function(useDoubleQuotes) {
- var escapedString = this.replace(/\\/g, '\\\\');
- if (useDoubleQuotes)
- return '"' + escapedString.replace(/"/g, '\\"') + '"';
- else
- return "'" + escapedString.replace(/'/g, '\\\'') + "'";
- }
-});
-
-String.prototype.gsub.prepareReplacement = function(replacement) {
- if (typeof replacement == 'function') return replacement;
- var template = new Template(replacement);
- return function(match) { return template.evaluate(match) };
-}
-
-String.prototype.parseQuery = String.prototype.toQueryParams;
-
-var Template = Class.create();
-Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/;
-Template.prototype = {
- initialize: function(template, pattern) {
- this.template = template.toString();
- this.pattern = pattern || Template.Pattern;
- },
-
- evaluate: function(object) {
- return this.template.gsub(this.pattern, function(match) {
- var before = match[1];
- if (before == '\\') return match[2];
- return before + String.interpret(object[match[3]]);
- });
- }
-}
-
-var $break = new Object();
-var $continue = new Object();
-
-var Enumerable = {
- each: function(iterator) {
- var index = 0;
- try {
- this._each(function(value) {
- try {
- iterator(value, index++);
- } catch (e) {
- if (e != $continue) throw e;
- }
- });
- } catch (e) {
- if (e != $break) throw e;
- }
- return this;
- },
-
- eachSlice: function(number, iterator) {
- var index = -number, slices = [], array = this.toArray();
- while ((index += number) < array.length)
- slices.push(array.slice(index, index+number));
- return slices.map(iterator);
- },
-
- all: function(iterator) {
- var result = true;
- this.each(function(value, index) {
- result = result && !!(iterator || Prototype.K)(value, index);
- if (!result) throw $break;
- });
- return result;
- },
-
- any: function(iterator) {
- var result = false;
- this.each(function(value, index) {
- if (result = !!(iterator || Prototype.K)(value, index))
- throw $break;
- });
- return result;
- },
-
- collect: function(iterator) {
- var results = [];
- this.each(function(value, index) {
- results.push((iterator || Prototype.K)(value, index));
- });
- return results;
- },
-
- detect: function(iterator) {
- var result;
- this.each(function(value, index) {
- if (iterator(value, index)) {
- result = value;
- throw $break;
- }
- });
- return result;
- },
-
- findAll: function(iterator) {
- var results = [];
- this.each(function(value, index) {
- if (iterator(value, index))
- results.push(value);
- });
- return results;
- },
-
- grep: function(pattern, iterator) {
- var results = [];
- this.each(function(value, index) {
- var stringValue = value.toString();
- if (stringValue.match(pattern))
- results.push((iterator || Prototype.K)(value, index));
- })
- return results;
- },
-
- include: function(object) {
- var found = false;
- this.each(function(value) {
- if (value == object) {
- found = true;
- throw $break;
- }
- });
- return found;
- },
-
- inGroupsOf: function(number, fillWith) {
- fillWith = fillWith === undefined ? null : fillWith;
- return this.eachSlice(number, function(slice) {
- while(slice.length < number) slice.push(fillWith);
- return slice;
- });
- },
-
- inject: function(memo, iterator) {
- this.each(function(value, index) {
- memo = iterator(memo, value, index);
- });
- return memo;
- },
-
- invoke: function(method) {
- var args = $A(arguments).slice(1);
- return this.map(function(value) {
- return value[method].apply(value, args);
- });
- },
-
- max: function(iterator) {
- var result;
- this.each(function(value, index) {
- value = (iterator || Prototype.K)(value, index);
- if (result == undefined || value >= result)
- result = value;
- });
- return result;
- },
-
- min: function(iterator) {
- var result;
- this.each(function(value, index) {
- value = (iterator || Prototype.K)(value, index);
- if (result == undefined || value < result)
- result = value;
- });
- return result;
- },
-
- partition: function(iterator) {
- var trues = [], falses = [];
- this.each(function(value, index) {
- ((iterator || Prototype.K)(value, index) ?
- trues : falses).push(value);
- });
- return [trues, falses];
- },
-
- pluck: function(property) {
- var results = [];
- this.each(function(value, index) {
- results.push(value[property]);
- });
- return results;
- },
-
- reject: function(iterator) {
- var results = [];
- this.each(function(value, index) {
- if (!iterator(value, index))
- results.push(value);
- });
- return results;
- },
-
- sortBy: function(iterator) {
- return this.map(function(value, index) {
- return {value: value, criteria: iterator(value, index)};
- }).sort(function(left, right) {
- var a = left.criteria, b = right.criteria;
- return a < b ? -1 : a > b ? 1 : 0;
- }).pluck('value');
- },
-
- toArray: function() {
- return this.map();
- },
-
- zip: function() {
- var iterator = Prototype.K, args = $A(arguments);
- if (typeof args.last() == 'function')
- iterator = args.pop();
-
- var collections = [this].concat(args).map($A);
- return this.map(function(value, index) {
- return iterator(collections.pluck(index));
- });
- },
-
- size: function() {
- return this.toArray().length;
- },
-
- inspect: function() {
- return '#<Enumerable:' + this.toArray().inspect() + '>';
- }
-}
-
-Object.extend(Enumerable, {
- map: Enumerable.collect,
- find: Enumerable.detect,
- select: Enumerable.findAll,
- member: Enumerable.include,
- entries: Enumerable.toArray
-});
-var $A = Array.from = function(iterable) {
- if (!iterable) return [];
- if (iterable.toArray) {
- return iterable.toArray();
- } else {
- var results = [];
- for (var i = 0, length = iterable.length; i < length; i++)
- results.push(iterable[i]);
- return results;
- }
-}
-
-Object.extend(Array.prototype, Enumerable);
-
-if (!Array.prototype._reverse)
- Array.prototype._reverse = Array.prototype.reverse;
-
-Object.extend(Array.prototype, {
- _each: function(iterator) {
- for (var i = 0, length = this.length; i < length; i++)
- iterator(this[i]);
- },
-
- clear: function() {
- this.length = 0;
- return this;
- },
-
- first: function() {
- return this[0];
- },
-
- last: function() {
- return this[this.length - 1];
- },
-
- compact: function() {
- return this.select(function(value) {
- return value != null;
- });
- },
-
- flatten: function() {
- return this.inject([], function(array, value) {
- return array.concat(value && value.constructor == Array ?
- value.flatten() : [value]);
- });
- },
-
- without: function() {
- var values = $A(arguments);
- return this.select(function(value) {
- return !values.include(value);
- });
- },
-
- indexOf: function(object) {
- for (var i = 0, length = this.length; i < length; i++)
- if (this[i] == object) return i;
- return -1;
- },
-
- reverse: function(inline) {
- return (inline !== false ? this : this.toArray())._reverse();
- },
-
- reduce: function() {
- return this.length > 1 ? this : this[0];
- },
-
- uniq: function() {
- return this.inject([], function(array, value) {
- return array.include(value) ? array : array.concat([value]);
- });
- },
-
- clone: function() {
- return [].concat(this);
- },
-
- size: function() {
- return this.length;
- },
-
- inspect: function() {
- return '[' + this.map(Object.inspect).join(', ') + ']';
- }
-});
-
-Array.prototype.toArray = Array.prototype.clone;
-
-function $w(string){
- string = string.strip();
- return string ? string.split(/\s+/) : [];
-}
-
-if(window.opera){
- Array.prototype.concat = function(){
- var array = [];
- for(var i = 0, length = this.length; i < length; i++) array.push(this[i]);
- for(var i = 0, length = arguments.length; i < length; i++) {
- if(arguments[i].constructor == Array) {
- for(var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++)
- array.push(arguments[i][j]);
- } else {
- array.push(arguments[i]);
- }
- }
- return array;
- }
-}
-var Hash = function(obj) {
- Object.extend(this, obj || {});
-};
-
-Object.extend(Hash, {
- toQueryString: function(obj) {
- var parts = [];
-
- this.prototype._each.call(obj, function(pair) {
- if (!pair.key) return;
-
- if (pair.value && pair.value.constructor == Array) {
- var values = pair.value.compact();
- if (values.length < 2) pair.value = values.reduce();
- else {
- key = encodeURIComponent(pair.key);
- values.each(function(value) {
- value = value != undefined ? encodeURIComponent(value) : '';
- parts.push(key + '=' + encodeURIComponent(value));
- });
- return;
- }
- }
- if (pair.value == undefined) pair[1] = '';
- parts.push(pair.map(encodeURIComponent).join('='));
- });
-
- return parts.join('&');
- }
-});
-
-Object.extend(Hash.prototype, Enumerable);
-Object.extend(Hash.prototype, {
- _each: function(iterator) {
- for (var key in this) {
- var value = this[key];
- if (value && value == Hash.prototype[key]) continue;
-
- var pair = [key, value];
- pair.key = key;
- pair.value = value;
- iterator(pair);
- }
- },
-
- keys: function() {
- return this.pluck('key');
- },
-
- values: function() {
- return this.pluck('value');
- },
-
- merge: function(hash) {
- return $H(hash).inject(this, function(mergedHash, pair) {
- mergedHash[pair.key] = pair.value;
- return mergedHash;
- });
- },
-
- remove: function() {
- var result;
- for(var i = 0, length = arguments.length; i < length; i++) {
- var value = this[arguments[i]];
- if (value !== undefined){
- if (result === undefined) result = value;
- else {
- if (result.constructor != Array) result = [result];
- result.push(value)
- }
- }
- delete this[arguments[i]];
- }
- return result;
- },
-
- toQueryString: function() {
- return Hash.toQueryString(this);
- },
-
- inspect: function() {
- return '#<Hash:{' + this.map(function(pair) {
- return pair.map(Object.inspect).join(': ');
- }).join(', ') + '}>';
- }
-});
-
-function $H(object) {
- if (object && object.constructor == Hash) return object;
- return new Hash(object);
-};
-ObjectRange = Class.create();
-Object.extend(ObjectRange.prototype, Enumerable);
-Object.extend(ObjectRange.prototype, {
- initialize: function(start, end, exclusive) {
- this.start = start;
- this.end = end;
- this.exclusive = exclusive;
- },
-
- _each: function(iterator) {
- var value = this.start;
- while (this.include(value)) {
- iterator(value);
- value = value.succ();
- }
- },
-
- include: function(value) {
- if (value < this.start)
- return false;
- if (this.exclusive)
- return value < this.end;
- return value <= this.end;
- }
-});
-
-var $R = function(start, end, exclusive) {
- return new ObjectRange(start, end, exclusive);
-}
-
-var Ajax = {
- getTransport: function() {
- return Try.these(
- function() {return new XMLHttpRequest()},
- function() {return new ActiveXObject('Msxml2.XMLHTTP')},
- function() {return new ActiveXObject('Microsoft.XMLHTTP')}
- ) || false;
- },
-
- activeRequestCount: 0
-}
-
-Ajax.Responders = {
- responders: [],
-
- _each: function(iterator) {
- this.responders._each(iterator);
- },
-
- register: function(responder) {
- if (!this.include(responder))
- this.responders.push(responder);
- },
-
- unregister: function(responder) {
- this.responders = this.responders.without(responder);
- },
-
- dispatch: function(callback, request, transport, json) {
- this.each(function(responder) {
- if (typeof responder[callback] == 'function') {
- try {
- responder[callback].apply(responder, [request, transport, json]);
- } catch (e) {}
- }
- });
- }
-};
-
-Object.extend(Ajax.Responders, Enumerable);
-
-Ajax.Responders.register({
- onCreate: function() {
- Ajax.activeRequestCount++;
- },
- onComplete: function() {
- Ajax.activeRequestCount--;
- }
-});
-
-Ajax.Base = function() {};
-Ajax.Base.prototype = {
- setOptions: function(options) {
- this.options = {
- method: 'post',
- asynchronous: true,
- contentType: 'application/x-www-form-urlencoded',
- encoding: 'UTF-8',
- parameters: ''
- }
- Object.extend(this.options, options || {});
-
- this.options.method = this.options.method.toLowerCase();
- if (typeof this.options.parameters == 'string')
- this.options.parameters = this.options.parameters.toQueryParams();
- }
-}
-
-Ajax.Request = Class.create();
-Ajax.Request.Events =
- ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];
-
-Ajax.Request.prototype = Object.extend(new Ajax.Base(), {
- _complete: false,
-
- initialize: function(url, options) {
- this.transport = Ajax.getTransport();
- this.setOptions(options);
- this.request(url);
- },
-
- request: function(url) {
- this.url = url;
- this.method = this.options.method;
- var params = this.options.parameters;
-
- if (!['get', 'post'].include(this.method)) {
- // simulate other verbs over post
- params['_method'] = this.method;
- this.method = 'post';
- }
-
- params = Hash.toQueryString(params);
- if (params && /Konqueror|Safari|KHTML/.test(navigator.userAgent)) params += '&_='
-
- // when GET, append parameters to URL
- if (this.method == 'get' && params)
- this.url += (this.url.indexOf('?') > -1 ? '&' : '?') + params;
-
- try {
- Ajax.Responders.dispatch('onCreate', this, this.transport);
-
- this.transport.open(this.method.toUpperCase(), this.url,
- this.options.asynchronous);
-
- if (this.options.asynchronous)
- setTimeout(function() { this.respondToReadyState(1) }.bind(this), 10);
-
- this.transport.onreadystatechange = this.onStateChange.bind(this);
- this.setRequestHeaders();
-
- var body = this.method == 'post' ? (this.options.postBody || params) : null;
-
- this.transport.send(body);
-
- /* Force Firefox to handle ready state 4 for synchronous requests */
- if (!this.options.asynchronous && this.transport.overrideMimeType)
- this.onStateChange();
-
- }
- catch (e) {
- this.dispatchException(e);
- }
- },
-
- onStateChange: function() {
- var readyState = this.transport.readyState;
- if (readyState > 1 && !((readyState == 4) && this._complete))
- this.respondToReadyState(this.transport.readyState);
- },
-
- setRequestHeaders: function() {
- var headers = {
- 'X-Requested-With': 'XMLHttpRequest',
- 'X-Prototype-Version': Prototype.Version,
- 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
- };
-
- if (this.method == 'post') {
- headers['Content-type'] = this.options.contentType +
- (this.options.encoding ? '; charset=' + this.options.encoding : '');
-
- /* Force "Connection: close" for older Mozilla browsers to work
- * around a bug where XMLHttpRequest sends an incorrect
- * Content-length header. See Mozilla Bugzilla #246651.
- */
- if (this.transport.overrideMimeType &&
- (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005)
- headers['Connection'] = 'close';
- }
-
- // user-defined headers
- if (typeof this.options.requestHeaders == 'object') {
- var extras = this.options.requestHeaders;
-
- if (typeof extras.push == 'function')
- for (var i = 0, length = extras.length; i < length; i += 2)
- headers[extras[i]] = extras[i+1];
- else
- $H(extras).each(function(pair) { headers[pair.key] = pair.value });
- }
-
- for (var name in headers)
- this.transport.setRequestHeader(name, headers[name]);
- },
-
- success: function() {
- return !this.transport.status
- || (this.transport.status >= 200 && this.transport.status < 300);
- },
-
- respondToReadyState: function(readyState) {
- var state = Ajax.Request.Events[readyState];
- var transport = this.transport, json = this.evalJSON();
-
- if (state == 'Complete') {
- try {
- this._complete = true;
- (this.options['on' + this.transport.status]
- || this.options['on' + (this.success() ? 'Success' : 'Failure')]
- || Prototype.emptyFunction)(transport, json);
- } catch (e) {
- this.dispatchException(e);
- }
-
- if ((this.getHeader('Content-type') || 'text/javascript').strip().
- match(/^(text|application)\/(x-)?(java|ecma)script(;.*)?$/i))
- this.evalResponse();
- }
-
- try {
- (this.options['on' + state] || Prototype.emptyFunction)(transport, json);
- Ajax.Responders.dispatch('on' + state, this, transport, json);
- } catch (e) {
- this.dispatchException(e);
- }
-
- if (state == 'Complete') {
- // avoid memory leak in MSIE: clean up
- this.transport.onreadystatechange = Prototype.emptyFunction;
- }
- },
-
- getHeader: function(name) {
- try {
- return this.transport.getResponseHeader(name);
- } catch (e) { return null }
- },
-
- evalJSON: function() {
- try {
- var json = this.getHeader('X-JSON');
- return json ? eval('(' + json + ')') : null;
- } catch (e) { return null }
- },
-
- evalResponse: function() {
- try {
- return eval(this.transport.responseText);
- } catch (e) {
- this.dispatchException(e);
- }
- },
-
- dispatchException: function(exception) {
- (this.options.onException || Prototype.emptyFunction)(this, exception);
- Ajax.Responders.dispatch('onException', this, exception);
- }
-});
-
-Ajax.Updater = Class.create();
-
-Object.extend(Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype), {
- initialize: function(container, url, options) {
- this.container = {
- success: (container.success || container),
- failure: (container.failure || (container.success ? null : container))
- }
-
- this.transport = Ajax.getTransport();
- this.setOptions(options);
-
- var onComplete = this.options.onComplete || Prototype.emptyFunction;
- this.options.onComplete = (function(transport, param) {
- this.updateContent();
- onComplete(transport, param);
- }).bind(this);
-
- this.request(url);
- },
-
- updateContent: function() {
- var receiver = this.container[this.success() ? 'success' : 'failure'];
- var response = this.transport.responseText;
-
- if (!this.options.evalScripts) response = response.stripScripts();
-
- if (receiver = $(receiver)) {
- if (this.options.insertion)
- new this.options.insertion(receiver, response);
- else
- receiver.update(response);
- }
-
- if (this.success()) {
- if (this.onComplete)
- setTimeout(this.onComplete.bind(this), 10);
- }
- }
-});
-
-Ajax.PeriodicalUpdater = Class.create();
-Ajax.PeriodicalUpdater.prototype = Object.extend(new Ajax.Base(), {
- initialize: function(container, url, options) {
- this.setOptions(options);
- this.onComplete = this.options.onComplete;
-
- this.frequency = (this.options.frequency || 2);
- this.decay = (this.options.decay || 1);
-
- this.updater = {};
- this.container = container;
- this.url = url;
-
- this.start();
- },
-
- start: function() {
- this.options.onComplete = this.updateComplete.bind(this);
- this.onTimerEvent();
- },
-
- stop: function() {
- this.updater.options.onComplete = undefined;
- clearTimeout(this.timer);
- (this.onComplete || Prototype.emptyFunction).apply(this, arguments);
- },
-
- updateComplete: function(request) {
- if (this.options.decay) {
- this.decay = (request.responseText == this.lastText ?
- this.decay * this.options.decay : 1);
-
- this.lastText = request.responseText;
- }
- this.timer = setTimeout(this.onTimerEvent.bind(this),
- this.decay * this.frequency * 1000);
- },
-
- onTimerEvent: function() {
- this.updater = new Ajax.Updater(this.container, this.url, this.options);
- }
-});
-function $(element) {
- if (arguments.length > 1) {
- for (var i = 0, elements = [], length = arguments.length; i < length; i++)
- elements.push($(arguments[i]));
- return elements;
- }
- if (typeof element == 'string')
- element = document.getElementById(element);
- return Element.extend(element);
-}
-
-if (Prototype.BrowserFeatures.XPath) {
- document._getElementsByXPath = function(expression, parentElement) {
- var results = [];
- var query = document.evaluate(expression, $(parentElement) || document,
- null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
- for (var i = 0, length = query.snapshotLength; i < length; i++)
- results.push(query.snapshotItem(i));
- return results;
- };
-}
-
-document.getElementsByClassName = function(className, parentElement) {
- if (Prototype.BrowserFeatures.XPath) {
- var q = ".//*[contains(concat(' ', @class, ' '), ' " + className + " ')]";
- return document._getElementsByXPath(q, parentElement);
- } else {
- var children = ($(parentElement) || document.body).getElementsByTagName('*');
- var elements = [], child;
- for (var i = 0, length = children.length; i < length; i++) {
- child = children[i];
- if (Element.hasClassName(child, className))
- elements.push(Element.extend(child));
- }
- return elements;
- }
-};
-
-/*--------------------------------------------------------------------------*/
-
-if (!window.Element)
- var Element = new Object();
-
-Element.extend = function(element) {
- if (!element || _nativeExtensions || element.nodeType == 3) return element;
-
- if (!element._extended && element.tagName && element != window) {
- var methods = Object.clone(Element.Methods), cache = Element.extend.cache;
-
- if (element.tagName == 'FORM')
- Object.extend(methods, Form.Methods);
- if (['INPUT', 'TEXTAREA', 'SELECT'].include(element.tagName))
- Object.extend(methods, Form.Element.Methods);
-
- Object.extend(methods, Element.Methods.Simulated);
-
- for (var property in methods) {
- var value = methods[property];
- if (typeof value == 'function' && !(property in element))
- element[property] = cache.findOrStore(value);
- }
- }
-
- element._extended = true;
- return element;
-};
-
-Element.extend.cache = {
- findOrStore: function(value) {
- return this[value] = this[value] || function() {
- return value.apply(null, [this].concat($A(arguments)));
- }
- }
-};
-
-Element.Methods = {
- visible: function(element) {
- return $(element).style.display != 'none';
- },
-
- toggle: function(element) {
- element = $(element);
- Element[Element.visible(element) ? 'hide' : 'show'](element);
- return element;
- },
-
- hide: function(element) {
- $(element).style.display = 'none';
- return element;
- },
-
- show: function(element) {
- $(element).style.display = '';
- return element;
- },
-
- remove: function(element) {
- element = $(element);
- element.parentNode.removeChild(element);
- return element;
- },
-
- update: function(element, html) {
- html = typeof html == 'undefined' ? '' : html.toString();
- $(element).innerHTML = html.stripScripts();
- setTimeout(function() {html.evalScripts()}, 10);
- return element;
- },
-
- replace: function(element, html) {
- element = $(element);
- html = typeof html == 'undefined' ? '' : html.toString();
- if (element.outerHTML) {
- element.outerHTML = html.stripScripts();
- } else {
- var range = element.ownerDocument.createRange();
- range.selectNodeContents(element);
- element.parentNode.replaceChild(
- range.createContextualFragment(html.stripScripts()), element);
- }
- setTimeout(function() {html.evalScripts()}, 10);
- return element;
- },
-
- inspect: function(element) {
- element = $(element);
- var result = '<' + element.tagName.toLowerCase();
- $H({'id': 'id', 'className': 'class'}).each(function(pair) {
- var property = pair.first(), attribute = pair.last();
- var value = (element[property] || '').toString();
- if (value) result += ' ' + attribute + '=' + value.inspect(true);
- });
- return result + '>';
- },
-
- recursivelyCollect: function(element, property) {
- element = $(element);
- var elements = [];
- while (element = element[property])
- if (element.nodeType == 1)
- elements.push(Element.extend(element));
- return elements;
- },
-
- ancestors: function(element) {
- return $(element).recursivelyCollect('parentNode');
- },
-
- descendants: function(element) {
- return $A($(element).getElementsByTagName('*'));
- },
-
- immediateDescendants: function(element) {
- if (!(element = $(element).firstChild)) return [];
- while (element && element.nodeType != 1) element = element.nextSibling;
- if (element) return [element].concat($(element).nextSiblings());
- return [];
- },
-
- previousSiblings: function(element) {
- return $(element).recursivelyCollect('previousSibling');
- },
-
- nextSiblings: function(element) {
- return $(element).recursivelyCollect('nextSibling');
- },
-
- siblings: function(element) {
- element = $(element);
- return element.previousSiblings().reverse().concat(element.nextSiblings());
- },
-
- match: function(element, selector) {
- if (typeof selector == 'string')
- selector = new Selector(selector);
- return selector.match($(element));
- },
-
- up: function(element, expression, index) {
- return Selector.findElement($(element).ancestors(), expression, index);
- },
-
- down: function(element, expression, index) {
- return Selector.findElement($(element).descendants(), expression, index);
- },
-
- previous: function(element, expression, index) {
- return Selector.findElement($(element).previousSiblings(), expression, index);
- },
-
- next: function(element, expression, index) {
- return Selector.findElement($(element).nextSiblings(), expression, index);
- },
-
- getElementsBySelector: function() {
- var args = $A(arguments), element = $(args.shift());
- return Selector.findChildElements(element, args);
- },
-
- getElementsByClassName: function(element, className) {
- return document.getElementsByClassName(className, element);
- },
-
- readAttribute: function(element, name) {
- element = $(element);
- if (document.all && !window.opera) {
- var t = Element._attributeTranslations;
- if (t.values[name]) return t.values[name](element, name);
- if (t.names[name]) name = t.names[name];
- var attribute = element.attributes[name];
- if(attribute) return attribute.nodeValue;
- }
- return element.getAttribute(name);
- },
-
- getHeight: function(element) {
- return $(element).getDimensions().height;
- },
-
- getWidth: function(element) {
- return $(element).getDimensions().width;
- },
-
- classNames: function(element) {
- return new Element.ClassNames(element);
- },
-
- hasClassName: function(element, className) {
- if (!(element = $(element))) return;
- var elementClassName = element.className;
- if (elementClassName.length == 0) return false;
- if (elementClassName == className ||
- elementClassName.match(new RegExp("(^|\\s)" + className + "(\\s|$)")))
- return true;
- return false;
- },
-
- addClassName: function(element, className) {
- if (!(element = $(element))) return;
- Element.classNames(element).add(className);
- return element;
- },
-
- removeClassName: function(element, className) {
- if (!(element = $(element))) return;
- Element.classNames(element).remove(className);
- return element;
- },
-
- toggleClassName: function(element, className) {
- if (!(element = $(element))) return;
- Element.classNames(element)[element.hasClassName(className) ? 'remove' : 'add'](className);
- return element;
- },
-
- observe: function() {
- Event.observe.apply(Event, arguments);
- return $A(arguments).first();
- },
-
- stopObserving: function() {
- Event.stopObserving.apply(Event, arguments);
- return $A(arguments).first();
- },
-
- // removes whitespace-only text node children
- cleanWhitespace: function(element) {
- element = $(element);
- var node = element.firstChild;
- while (node) {
- var nextNode = node.nextSibling;
- if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
- element.removeChild(node);
- node = nextNode;
- }
- return element;
- },
-
- empty: function(element) {
- return $(element).innerHTML.match(/^\s*$/);
- },
-
- descendantOf: function(element, ancestor) {
- element = $(element), ancestor = $(ancestor);
- while (element = element.parentNode)
- if (element == ancestor) return true;
- return false;
- },
-
- scrollTo: function(element) {
- element = $(element);
- var pos = Position.cumulativeOffset(element);
- window.scrollTo(pos[0], pos[1]);
- return element;
- },
-
- getStyle: function(element, style) {
- element = $(element);
- if (['float','cssFloat'].include(style))
- style = (typeof element.style.styleFloat != 'undefined' ? 'styleFloat' : 'cssFloat');
- style = style.camelize();
- var value = element.style[style];
- if (!value) {
- if (document.defaultView && document.defaultView.getComputedStyle) {
- var css = document.defaultView.getComputedStyle(element, null);
- value = css ? css[style] : null;
- } else if (element.currentStyle) {
- value = element.currentStyle[style];
- }
- }
-
- if((value == 'auto') && ['width','height'].include(style) && (element.getStyle('display') != 'none'))
- value = element['offset'+style.capitalize()] + 'px';
-
- if (window.opera && ['left', 'top', 'right', 'bottom'].include(style))
- if (Element.getStyle(element, 'position') == 'static') value = 'auto';
- if(style == 'opacity') {
- if(value) return parseFloat(value);
- if(value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/))
- if(value[1]) return parseFloat(value[1]) / 100;
- return 1.0;
- }
- return value == 'auto' ? null : value;
- },
-
- setStyle: function(element, style) {
- element = $(element);
- for (var name in style) {
- var value = style[name];
- if(name == 'opacity') {
- if (value == 1) {
- value = (/Gecko/.test(navigator.userAgent) &&
- !/Konqueror|Safari|KHTML/.test(navigator.userAgent)) ? 0.999999 : 1.0;
- if(/MSIE/.test(navigator.userAgent) && !window.opera)
- element.style.filter = element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'');
- } else if(value == '') {
- if(/MSIE/.test(navigator.userAgent) && !window.opera)
- element.style.filter = element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'');
- } else {
- if(value < 0.00001) value = 0;
- if(/MSIE/.test(navigator.userAgent) && !window.opera)
- element.style.filter = element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'') +
- 'alpha(opacity='+value*100+')';
- }
- } else if(['float','cssFloat'].include(name)) name = (typeof element.style.styleFloat != 'undefined') ? 'styleFloat' : 'cssFloat';
- element.style[name.camelize()] = value;
- }
- return element;
- },
-
- getDimensions: function(element) {
- element = $(element);
- var display = $(element).getStyle('display');
- if (display != 'none' && display != null) // Safari bug
- return {width: element.offsetWidth, height: element.offsetHeight};
-
- // All *Width and *Height properties give 0 on elements with display none,
- // so enable the element temporarily
- var els = element.style;
- var originalVisibility = els.visibility;
- var originalPosition = els.position;
- var originalDisplay = els.display;
- els.visibility = 'hidden';
- els.position = 'absolute';
- els.display = 'block';
- var originalWidth = element.clientWidth;
- var originalHeight = element.clientHeight;
- els.display = originalDisplay;
- els.position = originalPosition;
- els.visibility = originalVisibility;
- return {width: originalWidth, height: originalHeight};
- },
-
- makePositioned: function(element) {
- element = $(element);
- var pos = Element.getStyle(element, 'position');
- if (pos == 'static' || !pos) {
- element._madePositioned = true;
- element.style.position = 'relative';
- // Opera returns the offset relative to the positioning context, when an
- // element is position relative but top and left have not been defined
- if (window.opera) {
- element.style.top = 0;
- element.style.left = 0;
- }
- }
- return element;
- },
-
- undoPositioned: function(element) {
- element = $(element);
- if (element._madePositioned) {
- element._madePositioned = undefined;
- element.style.position =
- element.style.top =
- element.style.left =
- element.style.bottom =
- element.style.right = '';
- }
- return element;
- },
-
- makeClipping: function(element) {
- element = $(element);
- if (element._overflow) return element;
- element._overflow = element.style.overflow || 'auto';
- if ((Element.getStyle(element, 'overflow') || 'visible') != 'hidden')
- element.style.overflow = 'hidden';
- return element;
- },
-
- undoClipping: function(element) {
- element = $(element);
- if (!element._overflow) return element;
- element.style.overflow = element._overflow == 'auto' ? '' : element._overflow;
- element._overflow = null;
- return element;
- }
-};
-
-Object.extend(Element.Methods, {childOf: Element.Methods.descendantOf});
-
-Element._attributeTranslations = {};
-
-Element._attributeTranslations.names = {
- colspan: "colSpan",
- rowspan: "rowSpan",
- valign: "vAlign",
- datetime: "dateTime",
- accesskey: "accessKey",
- tabindex: "tabIndex",
- enctype: "encType",
- maxlength: "maxLength",
- readonly: "readOnly",
- longdesc: "longDesc"
-};
-
-Element._attributeTranslations.values = {
- _getAttr: function(element, attribute) {
- return element.getAttribute(attribute, 2);
- },
-
- _flag: function(element, attribute) {
- return $(element).hasAttribute(attribute) ? attribute : null;
- },
-
- style: function(element) {
- return element.style.cssText.toLowerCase();
- },
-
- title: function(element) {
- var node = element.getAttributeNode('title');
- return node.specified ? node.nodeValue : null;
- }
-};
-
-Object.extend(Element._attributeTranslations.values, {
- href: Element._attributeTranslations.values._getAttr,
- src: Element._attributeTranslations.values._getAttr,
- disabled: Element._attributeTranslations.values._flag,
- checked: Element._attributeTranslations.values._flag,
- readonly: Element._attributeTranslations.values._flag,
- multiple: Element._attributeTranslations.values._flag
-});
-
-Element.Methods.Simulated = {
- hasAttribute: function(element, attribute) {
- var t = Element._attributeTranslations;
- attribute = t.names[attribute] || attribute;
- return $(element).getAttributeNode(attribute).specified;
- }
-};
-
-// IE is missing .innerHTML support for TABLE-related elements
-if (document.all && !window.opera){
- Element.Methods.update = function(element, html) {
- element = $(element);
- html = typeof html == 'undefined' ? '' : html.toString();
- var tagName = element.tagName.toUpperCase();
- if (['THEAD','TBODY','TR','TD'].include(tagName)) {
- var div = document.createElement('div');
- switch (tagName) {
- case 'THEAD':
- case 'TBODY':
- div.innerHTML = '<table><tbody>' + html.stripScripts() + '</tbody></table>';
- depth = 2;
- break;
- case 'TR':
- div.innerHTML = '<table><tbody><tr>' + html.stripScripts() + '</tr></tbody></table>';
- depth = 3;
- break;
- case 'TD':
- div.innerHTML = '<table><tbody><tr><td>' + html.stripScripts() + '</td></tr></tbody></table>';
- depth = 4;
- }
- $A(element.childNodes).each(function(node){
- element.removeChild(node)
- });
- depth.times(function(){ div = div.firstChild });
-
- $A(div.childNodes).each(
- function(node){ element.appendChild(node) });
- } else {
- element.innerHTML = html.stripScripts();
- }
- setTimeout(function() {html.evalScripts()}, 10);
- return element;
- }
-};
-
-Object.extend(Element, Element.Methods);
-
-var _nativeExtensions = false;
-
-if(/Konqueror|Safari|KHTML/.test(navigator.userAgent))
- ['', 'Form', 'Input', 'TextArea', 'Select'].each(function(tag) {
- var className = 'HTML' + tag + 'Element';
- if(window[className]) return;
- var klass = window[className] = {};
- klass.prototype = document.createElement(tag ? tag.toLowerCase() : 'div').__proto__;
- });
-
-Element.addMethods = function(methods) {
- Object.extend(Element.Methods, methods || {});
-
- function copy(methods, destination, onlyIfAbsent) {
- onlyIfAbsent = onlyIfAbsent || false;
- var cache = Element.extend.cache;
- for (var property in methods) {
- var value = methods[property];
- if (!onlyIfAbsent || !(property in destination))
- destination[property] = cache.findOrStore(value);
- }
- }
-
- if (typeof HTMLElement != 'undefined') {
- copy(Element.Methods, HTMLElement.prototype);
- copy(Element.Methods.Simulated, HTMLElement.prototype, true);
- copy(Form.Methods, HTMLFormElement.prototype);
- [HTMLInputElement, HTMLTextAreaElement, HTMLSelectElement].each(function(klass) {
- copy(Form.Element.Methods, klass.prototype);
- });
- _nativeExtensions = true;
- }
-}
-
-var Toggle = new Object();
-Toggle.display = Element.toggle;
-
-/*--------------------------------------------------------------------------*/
-
-Abstract.Insertion = function(adjacency) {
- this.adjacency = adjacency;
-}
-
-Abstract.Insertion.prototype = {
- initialize: function(element, content) {
- this.element = $(element);
- this.content = content.stripScripts();
-
- if (this.adjacency && this.element.insertAdjacentHTML) {
- try {
- this.element.insertAdjacentHTML(this.adjacency, this.content);
- } catch (e) {
- var tagName = this.element.tagName.toUpperCase();
- if (['TBODY', 'TR'].include(tagName)) {
- this.insertContent(this.contentFromAnonymousTable());
- } else {
- throw e;
- }
- }
- } else {
- this.range = this.element.ownerDocument.createRange();
- if (this.initializeRange) this.initializeRange();
- this.insertContent([this.range.createContextualFragment(this.content)]);
- }
-
- setTimeout(function() {content.evalScripts()}, 10);
- },
-
- contentFromAnonymousTable: function() {
- var div = document.createElement('div');
- div.innerHTML = '<table><tbody>' + this.content + '</tbody></table>';
- return $A(div.childNodes[0].childNodes[0].childNodes);
- }
-}
-
-var Insertion = new Object();
-
-Insertion.Before = Class.create();
-Insertion.Before.prototype = Object.extend(new Abstract.Insertion('beforeBegin'), {
- initializeRange: function() {
- this.range.setStartBefore(this.element);
- },
-
- insertContent: function(fragments) {
- fragments.each((function(fragment) {
- this.element.parentNode.insertBefore(fragment, this.element);
- }).bind(this));
- }
-});
-
-Insertion.Top = Class.create();
-Insertion.Top.prototype = Object.extend(new Abstract.Insertion('afterBegin'), {
- initializeRange: function() {
- this.range.selectNodeContents(this.element);
- this.range.collapse(true);
- },
-
- insertContent: function(fragments) {
- fragments.reverse(false).each((function(fragment) {
- this.element.insertBefore(fragment, this.element.firstChild);
- }).bind(this));
- }
-});
-
-Insertion.Bottom = Class.create();
-Insertion.Bottom.prototype = Object.extend(new Abstract.Insertion('beforeEnd'), {
- initializeRange: function() {
- this.range.selectNodeContents(this.element);
- this.range.collapse(this.element);
- },
-
- insertContent: function(fragments) {
- fragments.each((function(fragment) {
- this.element.appendChild(fragment);
- }).bind(this));
- }
-});
-
-Insertion.After = Class.create();
-Insertion.After.prototype = Object.extend(new Abstract.Insertion('afterEnd'), {
- initializeRange: function() {
- this.range.setStartAfter(this.element);
- },
-
- insertContent: function(fragments) {
- fragments.each((function(fragment) {
- this.element.parentNode.insertBefore(fragment,
- this.element.nextSibling);
- }).bind(this));
- }
-});
-
-/*--------------------------------------------------------------------------*/
-
-Element.ClassNames = Class.create();
-Element.ClassNames.prototype = {
- initialize: function(element) {
- this.element = $(element);
- },
-
- _each: function(iterator) {
- this.element.className.split(/\s+/).select(function(name) {
- return name.length > 0;
- })._each(iterator);
- },
-
- set: function(className) {
- this.element.className = className;
- },
-
- add: function(classNameToAdd) {
- if (this.include(classNameToAdd)) return;
- this.set($A(this).concat(classNameToAdd).join(' '));
- },
-
- remove: function(classNameToRemove) {
- if (!this.include(classNameToRemove)) return;
- this.set($A(this).without(classNameToRemove).join(' '));
- },
-
- toString: function() {
- return $A(this).join(' ');
- }
-};
-
-Object.extend(Element.ClassNames.prototype, Enumerable);
-var Selector = Class.create();
-Selector.prototype = {
- initialize: function(expression) {
- this.params = {classNames: []};
- this.expression = expression.toString().strip();
- this.parseExpression();
- this.compileMatcher();
- },
-
- parseExpression: function() {
- function abort(message) { throw 'Parse error in selector: ' + message; }
-
- if (this.expression == '') abort('empty expression');
-
- var params = this.params, expr = this.expression, match, modifier, clause, rest;
- while (match = expr.match(/^(.*)\[([a-z0-9_:-]+?)(?:([~\|!]?=)(?:"([^"]*)"|([^\]\s]*)))?\]$/i)) {
- params.attributes = params.attributes || [];
- params.attributes.push({name: match[2], operator: match[3], value: match[4] || match[5] || ''});
- expr = match[1];
- }
-
- if (expr == '*') return this.params.wildcard = true;
-
- while (match = expr.match(/^([^a-z0-9_-])?([a-z0-9_-]+)(.*)/i)) {
- modifier = match[1], clause = match[2], rest = match[3];
- switch (modifier) {
- case '#': params.id = clause; break;
- case '.': params.classNames.push(clause); break;
- case '':
- case undefined: params.tagName = clause.toUpperCase(); break;
- default: abort(expr.inspect());
- }
- expr = rest;
- }
-
- if (expr.length > 0) abort(expr.inspect());
- },
-
- buildMatchExpression: function() {
- var params = this.params, conditions = [], clause;
-
- if (params.wildcard)
- conditions.push('true');
- if (clause = params.id)
- conditions.push('element.readAttribute("id") == ' + clause.inspect());
- if (clause = params.tagName)
- conditions.push('element.tagName.toUpperCase() == ' + clause.inspect());
- if ((clause = params.classNames).length > 0)
- for (var i = 0, length = clause.length; i < length; i++)
- conditions.push('element.hasClassName(' + clause[i].inspect() + ')');
- if (clause = params.attributes) {
- clause.each(function(attribute) {
- var value = 'element.readAttribute(' + attribute.name.inspect() + ')';
- var splitValueBy = function(delimiter) {
- return value + ' && ' + value + '.split(' + delimiter.inspect() + ')';
- }
-
- switch (attribute.operator) {
- case '=': conditions.push(value + ' == ' + attribute.value.inspect()); break;
- case '~=': conditions.push(splitValueBy(' ') + '.include(' + attribute.value.inspect() + ')'); break;
- case '|=': conditions.push(
- splitValueBy('-') + '.first().toUpperCase() == ' + attribute.value.toUpperCase().inspect()
- ); break;
- case '!=': conditions.push(value + ' != ' + attribute.value.inspect()); break;
- case '':
- case undefined: conditions.push('element.hasAttribute(' + attribute.name.inspect() + ')'); break;
- default: throw 'Unknown operator ' + attribute.operator + ' in selector';
- }
- });
- }
-
- return conditions.join(' && ');
- },
-
- compileMatcher: function() {
- this.match = new Function('element', 'if (!element.tagName) return false; \
- element = $(element); \
- return ' + this.buildMatchExpression());
- },
-
- findElements: function(scope) {
- var element;
-
- if (element = $(this.params.id))
- if (this.match(element))
- if (!scope || Element.childOf(element, scope))
- return [element];
-
- scope = (scope || document).getElementsByTagName(this.params.tagName || '*');
-
- var results = [];
- for (var i = 0, length = scope.length; i < length; i++)
- if (this.match(element = scope[i]))
- results.push(Element.extend(element));
-
- return results;
- },
-
- toString: function() {
- return this.expression;
- }
-}
-
-Object.extend(Selector, {
- matchElements: function(elements, expression) {
- var selector = new Selector(expression);
- return elements.select(selector.match.bind(selector)).map(Element.extend);
- },
-
- findElement: function(elements, expression, index) {
- if (typeof expression == 'number') index = expression, expression = false;
- return Selector.matchElements(elements, expression || '*')[index || 0];
- },
-
- findChildElements: function(element, expressions) {
- return expressions.map(function(expression) {
- return expression.match(/[^\s"]+(?:"[^"]*"[^\s"]+)*/g).inject([null], function(results, expr) {
- var selector = new Selector(expr);
- return results.inject([], function(elements, result) {
- return elements.concat(selector.findElements(result || element));
- });
- });
- }).flatten();
- }
-});
-
-function $$() {
- return Selector.findChildElements(document, $A(arguments));
-}
-var Form = {
- reset: function(form) {
- $(form).reset();
- return form;
- },
-
- serializeElements: function(elements, getHash) {
- var data = elements.inject({}, function(result, element) {
- if (!element.disabled && element.name) {
- var key = element.name, value = $(element).getValue();
- if (value != undefined) {
- if (result[key]) {
- if (result[key].constructor != Array) result[key] = [result[key]];
- result[key].push(value);
- }
- else result[key] = value;
- }
- }
- return result;
- });
-
- return getHash ? data : Hash.toQueryString(data);
- }
-};
-
-Form.Methods = {
- serialize: function(form, getHash) {
- return Form.serializeElements(Form.getElements(form), getHash);
- },
-
- getElements: function(form) {
- return $A($(form).getElementsByTagName('*')).inject([],
- function(elements, child) {
- if (Form.Element.Serializers[child.tagName.toLowerCase()])
- elements.push(Element.extend(child));
- return elements;
- }
- );
- },
-
- getInputs: function(form, typeName, name) {
- form = $(form);
- var inputs = form.getElementsByTagName('input');
-
- if (!typeName && !name) return $A(inputs).map(Element.extend);
-
- for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) {
- var input = inputs[i];
- if ((typeName && input.type != typeName) || (name && input.name != name))
- continue;
- matchingInputs.push(Element.extend(input));
- }
-
- return matchingInputs;
- },
-
- disable: function(form) {
- form = $(form);
- form.getElements().each(function(element) {
- element.blur();
- element.disabled = 'true';
- });
- return form;
- },
-
- enable: function(form) {
- form = $(form);
- form.getElements().each(function(element) {
- element.disabled = '';
- });
- return form;
- },
-
- findFirstElement: function(form) {
- return $(form).getElements().find(function(element) {
- return element.type != 'hidden' && !element.disabled &&
- ['input', 'select', 'textarea'].include(element.tagName.toLowerCase());
- });
- },
-
- focusFirstElement: function(form) {
- form = $(form);
- form.findFirstElement().activate();
- return form;
- }
-}
-
-Object.extend(Form, Form.Methods);
-
-/*--------------------------------------------------------------------------*/
-
-Form.Element = {
- focus: function(element) {
- $(element).focus();
- return element;
- },
-
- select: function(element) {
- $(element).select();
- return element;
- }
-}
-
-Form.Element.Methods = {
- serialize: function(element) {
- element = $(element);
- if (!element.disabled && element.name) {
- var value = element.getValue();
- if (value != undefined) {
- var pair = {};
- pair[element.name] = value;
- return Hash.toQueryString(pair);
- }
- }
- return '';
- },
-
- getValue: function(element) {
- element = $(element);
- var method = element.tagName.toLowerCase();
- return Form.Element.Serializers[method](element);
- },
-
- clear: function(element) {
- $(element).value = '';
- return element;
- },
-
- present: function(element) {
- return $(element).value != '';
- },
-
- activate: function(element) {
- element = $(element);
- element.focus();
- if (element.select && ( element.tagName.toLowerCase() != 'input' ||
- !['button', 'reset', 'submit'].include(element.type) ) )
- element.select();
- return element;
- },
-
- disable: function(element) {
- element = $(element);
- element.disabled = true;
- return element;
- },
-
- enable: function(element) {
- element = $(element);
- element.blur();
- element.disabled = false;
- return element;
- }
-}
-
-Object.extend(Form.Element, Form.Element.Methods);
-var Field = Form.Element;
-var $F = Form.Element.getValue;
-
-/*--------------------------------------------------------------------------*/
-
-Form.Element.Serializers = {
- input: function(element) {
- switch (element.type.toLowerCase()) {
- case 'checkbox':
- case 'radio':
- return Form.Element.Serializers.inputSelector(element);
- default:
- return Form.Element.Serializers.textarea(element);
- }
- },
-
- inputSelector: function(element) {
- return element.checked ? element.value : null;
- },
-
- textarea: function(element) {
- return element.value;
- },
-
- select: function(element) {
- return this[element.type == 'select-one' ?
- 'selectOne' : 'selectMany'](element);
- },
-
- selectOne: function(element) {
- var index = element.selectedIndex;
- return index >= 0 ? this.optionValue(element.options[index]) : null;
- },
-
- selectMany: function(element) {
- var values, length = element.length;
- if (!length) return null;
-
- for (var i = 0, values = []; i < length; i++) {
- var opt = element.options[i];
- if (opt.selected) values.push(this.optionValue(opt));
- }
- return values;
- },
-
- optionValue: function(opt) {
- // extend element because hasAttribute may not be native
- return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text;
- }
-}
-
-/*--------------------------------------------------------------------------*/
-
-Abstract.TimedObserver = function() {}
-Abstract.TimedObserver.prototype = {
- initialize: function(element, frequency, callback) {
- this.frequency = frequency;
- this.element = $(element);
- this.callback = callback;
-
- this.lastValue = this.getValue();
- this.registerCallback();
- },
-
- registerCallback: function() {
- setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
- },
-
- onTimerEvent: function() {
- var value = this.getValue();
- var changed = ('string' == typeof this.lastValue && 'string' == typeof value
- ? this.lastValue != value : String(this.lastValue) != String(value));
- if (changed) {
- this.callback(this.element, value);
- this.lastValue = value;
- }
- }
-}
-
-Form.Element.Observer = Class.create();
-Form.Element.Observer.prototype = Object.extend(new Abstract.TimedObserver(), {
- getValue: function() {
- return Form.Element.getValue(this.element);
- }
-});
-
-Form.Observer = Class.create();
-Form.Observer.prototype = Object.extend(new Abstract.TimedObserver(), {
- getValue: function() {
- return Form.serialize(this.element);
- }
-});
-
-/*--------------------------------------------------------------------------*/
-
-Abstract.EventObserver = function() {}
-Abstract.EventObserver.prototype = {
- initialize: function(element, callback) {
- this.element = $(element);
- this.callback = callback;
-
- this.lastValue = this.getValue();
- if (this.element.tagName.toLowerCase() == 'form')
- this.registerFormCallbacks();
- else
- this.registerCallback(this.element);
- },
-
- onElementEvent: function() {
- var value = this.getValue();
- if (this.lastValue != value) {
- this.callback(this.element, value);
- this.lastValue = value;
- }
- },
-
- registerFormCallbacks: function() {
- Form.getElements(this.element).each(this.registerCallback.bind(this));
- },
-
- registerCallback: function(element) {
- if (element.type) {
- switch (element.type.toLowerCase()) {
- case 'checkbox':
- case 'radio':
- Event.observe(element, 'click', this.onElementEvent.bind(this));
- break;
- default:
- Event.observe(element, 'change', this.onElementEvent.bind(this));
- break;
- }
- }
- }
-}
-
-Form.Element.EventObserver = Class.create();
-Form.Element.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), {
- getValue: function() {
- return Form.Element.getValue(this.element);
- }
-});
-
-Form.EventObserver = Class.create();
-Form.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), {
- getValue: function() {
- return Form.serialize(this.element);
- }
-});
-if (!window.Event) {
- var Event = new Object();
-}
-
-Object.extend(Event, {
- KEY_BACKSPACE: 8,
- KEY_TAB: 9,
- KEY_RETURN: 13,
- KEY_ESC: 27,
- KEY_LEFT: 37,
- KEY_UP: 38,
- KEY_RIGHT: 39,
- KEY_DOWN: 40,
- KEY_DELETE: 46,
- KEY_HOME: 36,
- KEY_END: 35,
- KEY_PAGEUP: 33,
- KEY_PAGEDOWN: 34,
-
- element: function(event) {
- return event.target || event.srcElement;
- },
-
- isLeftClick: function(event) {
- return (((event.which) && (event.which == 1)) ||
- ((event.button) && (event.button == 1)));
- },
-
- pointerX: function(event) {
- return event.pageX || (event.clientX +
- (document.documentElement.scrollLeft || document.body.scrollLeft));
- },
-
- pointerY: function(event) {
- return event.pageY || (event.clientY +
- (document.documentElement.scrollTop || document.body.scrollTop));
- },
-
- stop: function(event) {
- if (event.preventDefault) {
- event.preventDefault();
- event.stopPropagation();
- } else {
- event.returnValue = false;
- event.cancelBubble = true;
- }
- },
-
- // find the first node with the given tagName, starting from the
- // node the event was triggered on; traverses the DOM upwards
- findElement: function(event, tagName) {
- var element = Event.element(event);
- while (element.parentNode && (!element.tagName ||
- (element.tagName.toUpperCase() != tagName.toUpperCase())))
- element = element.parentNode;
- return element;
- },
-
- observers: false,
-
- _observeAndCache: function(element, name, observer, useCapture) {
- if (!this.observers) this.observers = [];
- if (element.addEventListener) {
- this.observers.push([element, name, observer, useCapture]);
- element.addEventListener(name, observer, useCapture);
- } else if (element.attachEvent) {
- this.observers.push([element, name, observer, useCapture]);
- element.attachEvent('on' + name, observer);
- }
- },
-
- unloadCache: function() {
- if (!Event.observers) return;
- for (var i = 0, length = Event.observers.length; i < length; i++) {
- Event.stopObserving.apply(this, Event.observers[i]);
- Event.observers[i][0] = null;
- }
- Event.observers = false;
- },
-
- observe: function(element, name, observer, useCapture) {
- element = $(element);
- useCapture = useCapture || false;
-
- if (name == 'keypress' &&
- (navigator.appVersion.match(/Konqueror|Safari|KHTML/)
- || element.attachEvent))
- name = 'keydown';
-
- Event._observeAndCache(element, name, observer, useCapture);
- },
-
- stopObserving: function(element, name, observer, useCapture) {
- element = $(element);
- useCapture = useCapture || false;
-
- if (name == 'keypress' &&
- (navigator.appVersion.match(/Konqueror|Safari|KHTML/)
- || element.detachEvent))
- name = 'keydown';
-
- if (element.removeEventListener) {
- element.removeEventListener(name, observer, useCapture);
- } else if (element.detachEvent) {
- try {
- element.detachEvent('on' + name, observer);
- } catch (e) {}
- }
- }
-});
-
-/* prevent memory leaks in IE */
-if (navigator.appVersion.match(/\bMSIE\b/))
- Event.observe(window, 'unload', Event.unloadCache, false);
-var Position = {
- // set to true if needed, warning: firefox performance problems
- // NOT neeeded for page scrolling, only if draggable contained in
- // scrollable elements
- includeScrollOffsets: false,
-
- // must be called before calling withinIncludingScrolloffset, every time the
- // page is scrolled
- prepare: function() {
- this.deltaX = window.pageXOffset
- || document.documentElement.scrollLeft
- || document.body.scrollLeft
- || 0;
- this.deltaY = window.pageYOffset
- || document.documentElement.scrollTop
- || document.body.scrollTop
- || 0;
- },
-
- realOffset: function(element) {
- var valueT = 0, valueL = 0;
- do {
- valueT += element.scrollTop || 0;
- valueL += element.scrollLeft || 0;
- element = element.parentNode;
- } while (element);
- return [valueL, valueT];
- },
-
- cumulativeOffset: function(element) {
- var valueT = 0, valueL = 0;
- do {
- valueT += element.offsetTop || 0;
- valueL += element.offsetLeft || 0;
- element = element.offsetParent;
- } while (element);
- return [valueL, valueT];
- },
-
- positionedOffset: function(element) {
- var valueT = 0, valueL = 0;
- do {
- valueT += element.offsetTop || 0;
- valueL += element.offsetLeft || 0;
- element = element.offsetParent;
- if (element) {
- if(element.tagName=='BODY') break;
- var p = Element.getStyle(element, 'position');
- if (p == 'relative' || p == 'absolute') break;
- }
- } while (element);
- return [valueL, valueT];
- },
-
- offsetParent: function(element) {
- if (element.offsetParent) return element.offsetParent;
- if (element == document.body) return element;
-
- while ((element = element.parentNode) && element != document.body)
- if (Element.getStyle(element, 'position') != 'static')
- return element;
-
- return document.body;
- },
-
- // caches x/y coordinate pair to use with overlap
- within: function(element, x, y) {
- if (this.includeScrollOffsets)
- return this.withinIncludingScrolloffsets(element, x, y);
- this.xcomp = x;
- this.ycomp = y;
- this.offset = this.cumulativeOffset(element);
-
- return (y >= this.offset[1] &&
- y < this.offset[1] + element.offsetHeight &&
- x >= this.offset[0] &&
- x < this.offset[0] + element.offsetWidth);
- },
-
- withinIncludingScrolloffsets: function(element, x, y) {
- var offsetcache = this.realOffset(element);
-
- this.xcomp = x + offsetcache[0] - this.deltaX;
- this.ycomp = y + offsetcache[1] - this.deltaY;
- this.offset = this.cumulativeOffset(element);
-
- return (this.ycomp >= this.offset[1] &&
- this.ycomp < this.offset[1] + element.offsetHeight &&
- this.xcomp >= this.offset[0] &&
- this.xcomp < this.offset[0] + element.offsetWidth);
- },
-
- // within must be called directly before
- overlap: function(mode, element) {
- if (!mode) return 0;
- if (mode == 'vertical')
- return ((this.offset[1] + element.offsetHeight) - this.ycomp) /
- element.offsetHeight;
- if (mode == 'horizontal')
- return ((this.offset[0] + element.offsetWidth) - this.xcomp) /
- element.offsetWidth;
- },
-
- page: function(forElement) {
- var valueT = 0, valueL = 0;
-
- var element = forElement;
- do {
- valueT += element.offsetTop || 0;
- valueL += element.offsetLeft || 0;
-
- // Safari fix
- if (element.offsetParent==document.body)
- if (Element.getStyle(element,'position')=='absolute') break;
-
- } while (element = element.offsetParent);
-
- element = forElement;
- do {
- if (!window.opera || element.tagName=='BODY') {
- valueT -= element.scrollTop || 0;
- valueL -= element.scrollLeft || 0;
- }
- } while (element = element.parentNode);
-
- return [valueL, valueT];
- },
-
- clone: function(source, target) {
- var options = Object.extend({
- setLeft: true,
- setTop: true,
- setWidth: true,
- setHeight: true,
- offsetTop: 0,
- offsetLeft: 0
- }, arguments[2] || {})
-
- // find page position of source
- source = $(source);
- var p = Position.page(source);
-
- // find coordinate system to use
- target = $(target);
- var delta = [0, 0];
- var parent = null;
- // delta [0,0] will do fine with position: fixed elements,
- // position:absolute needs offsetParent deltas
- if (Element.getStyle(target,'position') == 'absolute') {
- parent = Position.offsetParent(target);
- delta = Position.page(parent);
- }
-
- // correct by body offsets (fixes Safari)
- if (parent == document.body) {
- delta[0] -= document.body.offsetLeft;
- delta[1] -= document.body.offsetTop;
- }
-
- // set position
- if(options.setLeft) target.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px';
- if(options.setTop) target.style.top = (p[1] - delta[1] + options.offsetTop) + 'px';
- if(options.setWidth) target.style.width = source.offsetWidth + 'px';
- if(options.setHeight) target.style.height = source.offsetHeight + 'px';
- },
-
- absolutize: function(element) {
- element = $(element);
- if (element.style.position == 'absolute') return;
- Position.prepare();
-
- var offsets = Position.positionedOffset(element);
- var top = offsets[1];
- var left = offsets[0];
- var width = element.clientWidth;
- var height = element.clientHeight;
-
- element._originalLeft = left - parseFloat(element.style.left || 0);
- element._originalTop = top - parseFloat(element.style.top || 0);
- element._originalWidth = element.style.width;
- element._originalHeight = element.style.height;
-
- element.style.position = 'absolute';
- element.style.top = top + 'px';
- element.style.left = left + 'px';
- element.style.width = width + 'px';
- element.style.height = height + 'px';
- },
-
- relativize: function(element) {
- element = $(element);
- if (element.style.position == 'relative') return;
- Position.prepare();
-
- element.style.position = 'relative';
- var top = parseFloat(element.style.top || 0) - (element._originalTop || 0);
- var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0);
-
- element.style.top = top + 'px';
- element.style.left = left + 'px';
- element.style.height = element._originalHeight;
- element.style.width = element._originalWidth;
- }
-}
-
-// Safari returns margins on body which is incorrect if the child is absolutely
-// positioned. For performance reasons, redefine Position.cumulativeOffset for
-// KHTML/WebKit only.
-if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) {
- Position.cumulativeOffset = function(element) {
- var valueT = 0, valueL = 0;
- do {
- valueT += element.offsetTop || 0;
- valueL += element.offsetLeft || 0;
- if (element.offsetParent == document.body)
- if (Element.getStyle(element, 'position') == 'absolute') break;
-
- element = element.offsetParent;
- } while (element);
-
- return [valueL, valueT];
- }
-}
-
-Element.addMethods();
-
-
-// ------------------------------------------------------------------------
-// ------------------------------------------------------------------------
-
-// The rest of this file is the actual ray tracer written by Adam
-// Burmister. It's a concatenation of the following files:
-//
-// flog/color.js
-// flog/light.js
-// flog/vector.js
-// flog/ray.js
-// flog/scene.js
-// flog/material/basematerial.js
-// flog/material/solid.js
-// flog/material/chessboard.js
-// flog/shape/baseshape.js
-// flog/shape/sphere.js
-// flog/shape/plane.js
-// flog/intersectioninfo.js
-// flog/camera.js
-// flog/background.js
-// flog/engine.js
-
-
-/* Fake a Flog.* namespace */
-if(typeof(Flog) == 'undefined') var Flog = {};
-if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
-
-Flog.RayTracer.Color = Class.create();
-
-Flog.RayTracer.Color.prototype = {
- red : 0.0,
- green : 0.0,
- blue : 0.0,
-
- initialize : function(r, g, b) {
- if(!r) r = 0.0;
- if(!g) g = 0.0;
- if(!b) b = 0.0;
-
- this.red = r;
- this.green = g;
- this.blue = b;
- },
-
- add : function(c1, c2){
- var result = new Flog.RayTracer.Color(0,0,0);
-
- result.red = c1.red + c2.red;
- result.green = c1.green + c2.green;
- result.blue = c1.blue + c2.blue;
-
- return result;
- },
-
- addScalar: function(c1, s){
- var result = new Flog.RayTracer.Color(0,0,0);
-
- result.red = c1.red + s;
- result.green = c1.green + s;
- result.blue = c1.blue + s;
-
- result.limit();
-
- return result;
- },
-
- subtract: function(c1, c2){
- var result = new Flog.RayTracer.Color(0,0,0);
-
- result.red = c1.red - c2.red;
- result.green = c1.green - c2.green;
- result.blue = c1.blue - c2.blue;
-
- return result;
- },
-
- multiply : function(c1, c2) {
- var result = new Flog.RayTracer.Color(0,0,0);
-
- result.red = c1.red * c2.red;
- result.green = c1.green * c2.green;
- result.blue = c1.blue * c2.blue;
-
- return result;
- },
-
- multiplyScalar : function(c1, f) {
- var result = new Flog.RayTracer.Color(0,0,0);
-
- result.red = c1.red * f;
- result.green = c1.green * f;
- result.blue = c1.blue * f;
-
- return result;
- },
-
- divideFactor : function(c1, f) {
- var result = new Flog.RayTracer.Color(0,0,0);
-
- result.red = c1.red / f;
- result.green = c1.green / f;
- result.blue = c1.blue / f;
-
- return result;
- },
-
- limit: function(){
- this.red = (this.red > 0.0) ? ( (this.red > 1.0) ? 1.0 : this.red ) : 0.0;
- this.green = (this.green > 0.0) ? ( (this.green > 1.0) ? 1.0 : this.green ) : 0.0;
- this.blue = (this.blue > 0.0) ? ( (this.blue > 1.0) ? 1.0 : this.blue ) : 0.0;
- },
-
- distance : function(color) {
- var d = Math.abs(this.red - color.red) + Math.abs(this.green - color.green) + Math.abs(this.blue - color.blue);
- return d;
- },
-
- blend: function(c1, c2, w){
- var result = new Flog.RayTracer.Color(0,0,0);
- result = Flog.RayTracer.Color.prototype.add(
- Flog.RayTracer.Color.prototype.multiplyScalar(c1, 1 - w),
- Flog.RayTracer.Color.prototype.multiplyScalar(c2, w)
- );
- return result;
- },
-
- toString : function () {
- var r = Math.floor(this.red*255);
- var g = Math.floor(this.green*255);
- var b = Math.floor(this.blue*255);
-
- return "rgb("+ r +","+ g +","+ b +")";
- }
-}
-/* Fake a Flog.* namespace */
-if(typeof(Flog) == 'undefined') var Flog = {};
-if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
-
-Flog.RayTracer.Light = Class.create();
-
-Flog.RayTracer.Light.prototype = {
- position: null,
- color: null,
- intensity: 10.0,
-
- initialize : function(pos, color, intensity) {
- this.position = pos;
- this.color = color;
- this.intensity = (intensity ? intensity : 10.0);
- },
-
- getIntensity: function(distance){
- if(distance >= intensity) return 0;
-
- return Math.pow((intensity - distance) / strength, 0.2);
- },
-
- toString : function () {
- return 'Light [' + this.position.x + ',' + this.position.y + ',' + this.position.z + ']';
- }
-}
-/* Fake a Flog.* namespace */
-if(typeof(Flog) == 'undefined') var Flog = {};
-if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
-
-Flog.RayTracer.Vector = Class.create();
-
-Flog.RayTracer.Vector.prototype = {
- x : 0.0,
- y : 0.0,
- z : 0.0,
-
- initialize : function(x, y, z) {
- this.x = (x ? x : 0);
- this.y = (y ? y : 0);
- this.z = (z ? z : 0);
- },
-
- copy: function(vector){
- this.x = vector.x;
- this.y = vector.y;
- this.z = vector.z;
- },
-
- normalize : function() {
- var m = this.magnitude();
- return new Flog.RayTracer.Vector(this.x / m, this.y / m, this.z / m);
- },
-
- magnitude : function() {
- return Math.sqrt((this.x * this.x) + (this.y * this.y) + (this.z * this.z));
- },
-
- cross : function(w) {
- return new Flog.RayTracer.Vector(
- -this.z * w.y + this.y * w.z,
- this.z * w.x - this.x * w.z,
- -this.y * w.x + this.x * w.y);
- },
-
- dot : function(w) {
- return this.x * w.x + this.y * w.y + this.z * w.z;
- },
-
- add : function(v, w) {
- return new Flog.RayTracer.Vector(w.x + v.x, w.y + v.y, w.z + v.z);
- },
-
- subtract : function(v, w) {
- if(!w || !v) throw 'Vectors must be defined [' + v + ',' + w + ']';
- return new Flog.RayTracer.Vector(v.x - w.x, v.y - w.y, v.z - w.z);
- },
-
- multiplyVector : function(v, w) {
- return new Flog.RayTracer.Vector(v.x * w.x, v.y * w.y, v.z * w.z);
- },
-
- multiplyScalar : function(v, w) {
- return new Flog.RayTracer.Vector(v.x * w, v.y * w, v.z * w);
- },
-
- toString : function () {
- return 'Vector [' + this.x + ',' + this.y + ',' + this.z + ']';
- }
-}
-/* Fake a Flog.* namespace */
-if(typeof(Flog) == 'undefined') var Flog = {};
-if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
-
-Flog.RayTracer.Ray = Class.create();
-
-Flog.RayTracer.Ray.prototype = {
- position : null,
- direction : null,
- initialize : function(pos, dir) {
- this.position = pos;
- this.direction = dir;
- },
-
- toString : function () {
- return 'Ray [' + this.position + ',' + this.direction + ']';
- }
-}
-/* Fake a Flog.* namespace */
-if(typeof(Flog) == 'undefined') var Flog = {};
-if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
-
-Flog.RayTracer.Scene = Class.create();
-
-Flog.RayTracer.Scene.prototype = {
- camera : null,
- shapes : [],
- lights : [],
- background : null,
-
- initialize : function() {
- this.camera = new Flog.RayTracer.Camera(
- new Flog.RayTracer.Vector(0,0,-5),
- new Flog.RayTracer.Vector(0,0,1),
- new Flog.RayTracer.Vector(0,1,0)
- );
- this.shapes = new Array();
- this.lights = new Array();
- this.background = new Flog.RayTracer.Background(new Flog.RayTracer.Color(0,0,0.5), 0.2);
- }
-}
-/* Fake a Flog.* namespace */
-if(typeof(Flog) == 'undefined') var Flog = {};
-if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
-if(typeof(Flog.RayTracer.Material) == 'undefined') Flog.RayTracer.Material = {};
-
-Flog.RayTracer.Material.BaseMaterial = Class.create();
-
-Flog.RayTracer.Material.BaseMaterial.prototype = {
-
- gloss: 2.0, // [0...infinity] 0 = matt
- transparency: 0.0, // 0=opaque
- reflection: 0.0, // [0...infinity] 0 = no reflection
- refraction: 0.50,
- hasTexture: false,
-
- initialize : function() {
-
- },
-
- getColor: function(u, v){
-
- },
-
- wrapUp: function(t){
- t = t % 2.0;
- if(t < -1) t += 2.0;
- if(t >= 1) t -= 2.0;
- return t;
- },
-
- toString : function () {
- return 'Material [gloss=' + this.gloss + ', transparency=' + this.transparency + ', hasTexture=' + this.hasTexture +']';
- }
-}
-/* Fake a Flog.* namespace */
-if(typeof(Flog) == 'undefined') var Flog = {};
-if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
-
-Flog.RayTracer.Material.Solid = Class.create();
-
-Flog.RayTracer.Material.Solid.prototype = Object.extend(
- new Flog.RayTracer.Material.BaseMaterial(), {
- initialize : function(color, reflection, refraction, transparency, gloss) {
- this.color = color;
- this.reflection = reflection;
- this.transparency = transparency;
- this.gloss = gloss;
- this.hasTexture = false;
- },
-
- getColor: function(u, v){
- return this.color;
- },
-
- toString : function () {
- return 'SolidMaterial [gloss=' + this.gloss + ', transparency=' + this.transparency + ', hasTexture=' + this.hasTexture +']';
- }
- }
-);
-/* Fake a Flog.* namespace */
-if(typeof(Flog) == 'undefined') var Flog = {};
-if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
-
-Flog.RayTracer.Material.Chessboard = Class.create();
-
-Flog.RayTracer.Material.Chessboard.prototype = Object.extend(
- new Flog.RayTracer.Material.BaseMaterial(), {
- colorEven: null,
- colorOdd: null,
- density: 0.5,
-
- initialize : function(colorEven, colorOdd, reflection, transparency, gloss, density) {
- this.colorEven = colorEven;
- this.colorOdd = colorOdd;
- this.reflection = reflection;
- this.transparency = transparency;
- this.gloss = gloss;
- this.density = density;
- this.hasTexture = true;
- },
-
- getColor: function(u, v){
- var t = this.wrapUp(u * this.density) * this.wrapUp(v * this.density);
-
- if(t < 0.0)
- return this.colorEven;
- else
- return this.colorOdd;
- },
-
- toString : function () {
- return 'ChessMaterial [gloss=' + this.gloss + ', transparency=' + this.transparency + ', hasTexture=' + this.hasTexture +']';
- }
- }
-);
-/* Fake a Flog.* namespace */
-if(typeof(Flog) == 'undefined') var Flog = {};
-if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
-if(typeof(Flog.RayTracer.Shape) == 'undefined') Flog.RayTracer.Shape = {};
-
-Flog.RayTracer.Shape.BaseShape = Class.create();
-
-Flog.RayTracer.Shape.BaseShape.prototype = {
- position: null,
- material: null,
-
- initialize : function() {
- this.position = new Vector(0,0,0);
- this.material = new Flog.RayTracer.Material.SolidMaterial(
- new Flog.RayTracer.Color(1,0,1),
- 0,
- 0,
- 0
- );
- },
-
- toString : function () {
- return 'Material [gloss=' + this.gloss + ', transparency=' + this.transparency + ', hasTexture=' + this.hasTexture +']';
- }
-}
-/* Fake a Flog.* namespace */
-if(typeof(Flog) == 'undefined') var Flog = {};
-if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
-if(typeof(Flog.RayTracer.Shape) == 'undefined') Flog.RayTracer.Shape = {};
-
-Flog.RayTracer.Shape.Sphere = Class.create();
-
-Flog.RayTracer.Shape.Sphere.prototype = {
- initialize : function(pos, radius, material) {
- this.radius = radius;
- this.position = pos;
- this.material = material;
- },
-
- intersect: function(ray){
- var info = new Flog.RayTracer.IntersectionInfo();
- info.shape = this;
-
- var dst = Flog.RayTracer.Vector.prototype.subtract(ray.position, this.position);
-
- var B = dst.dot(ray.direction);
- var C = dst.dot(dst) - (this.radius * this.radius);
- var D = (B * B) - C;
-
- if(D > 0){ // intersection!
- info.isHit = true;
- info.distance = (-B) - Math.sqrt(D);
- info.position = Flog.RayTracer.Vector.prototype.add(
- ray.position,
- Flog.RayTracer.Vector.prototype.multiplyScalar(
- ray.direction,
- info.distance
- )
- );
- info.normal = Flog.RayTracer.Vector.prototype.subtract(
- info.position,
- this.position
- ).normalize();
-
- info.color = this.material.getColor(0,0);
- } else {
- info.isHit = false;
- }
- return info;
- },
-
- toString : function () {
- return 'Sphere [position=' + this.position + ', radius=' + this.radius + ']';
- }
-}
-/* Fake a Flog.* namespace */
-if(typeof(Flog) == 'undefined') var Flog = {};
-if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
-if(typeof(Flog.RayTracer.Shape) == 'undefined') Flog.RayTracer.Shape = {};
-
-Flog.RayTracer.Shape.Plane = Class.create();
-
-Flog.RayTracer.Shape.Plane.prototype = {
- d: 0.0,
-
- initialize : function(pos, d, material) {
- this.position = pos;
- this.d = d;
- this.material = material;
- },
-
- intersect: function(ray){
- var info = new Flog.RayTracer.IntersectionInfo();
-
- var Vd = this.position.dot(ray.direction);
- if(Vd == 0) return info; // no intersection
-
- var t = -(this.position.dot(ray.position) + this.d) / Vd;
- if(t <= 0) return info;
-
- info.shape = this;
- info.isHit = true;
- info.position = Flog.RayTracer.Vector.prototype.add(
- ray.position,
- Flog.RayTracer.Vector.prototype.multiplyScalar(
- ray.direction,
- t
- )
- );
- info.normal = this.position;
- info.distance = t;
-
- if(this.material.hasTexture){
- var vU = new Flog.RayTracer.Vector(this.position.y, this.position.z, -this.position.x);
- var vV = vU.cross(this.position);
- var u = info.position.dot(vU);
- var v = info.position.dot(vV);
- info.color = this.material.getColor(u,v);
- } else {
- info.color = this.material.getColor(0,0);
- }
-
- return info;
- },
-
- toString : function () {
- return 'Plane [' + this.position + ', d=' + this.d + ']';
- }
-}
-/* Fake a Flog.* namespace */
-if(typeof(Flog) == 'undefined') var Flog = {};
-if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
-
-Flog.RayTracer.IntersectionInfo = Class.create();
-
-Flog.RayTracer.IntersectionInfo.prototype = {
- isHit: false,
- hitCount: 0,
- shape: null,
- position: null,
- normal: null,
- color: null,
- distance: null,
-
- initialize : function() {
- this.color = new Flog.RayTracer.Color(0,0,0);
- },
-
- toString : function () {
- return 'Intersection [' + this.position + ']';
- }
-}
-/* Fake a Flog.* namespace */
-if(typeof(Flog) == 'undefined') var Flog = {};
-if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
-
-Flog.RayTracer.Camera = Class.create();
-
-Flog.RayTracer.Camera.prototype = {
- position: null,
- lookAt: null,
- equator: null,
- up: null,
- screen: null,
-
- initialize : function(pos, lookAt, up) {
- this.position = pos;
- this.lookAt = lookAt;
- this.up = up;
- this.equator = lookAt.normalize().cross(this.up);
- this.screen = Flog.RayTracer.Vector.prototype.add(this.position, this.lookAt);
- },
-
- getRay: function(vx, vy){
- var pos = Flog.RayTracer.Vector.prototype.subtract(
- this.screen,
- Flog.RayTracer.Vector.prototype.subtract(
- Flog.RayTracer.Vector.prototype.multiplyScalar(this.equator, vx),
- Flog.RayTracer.Vector.prototype.multiplyScalar(this.up, vy)
- )
- );
- pos.y = pos.y * -1;
- var dir = Flog.RayTracer.Vector.prototype.subtract(
- pos,
- this.position
- );
-
- var ray = new Flog.RayTracer.Ray(pos, dir.normalize());
-
- return ray;
- },
-
- toString : function () {
- return 'Ray []';
- }
-}
-/* Fake a Flog.* namespace */
-if(typeof(Flog) == 'undefined') var Flog = {};
-if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
-
-Flog.RayTracer.Background = Class.create();
-
-Flog.RayTracer.Background.prototype = {
- color : null,
- ambience : 0.0,
-
- initialize : function(color, ambience) {
- this.color = color;
- this.ambience = ambience;
- }
-}
-/* Fake a Flog.* namespace */
-if(typeof(Flog) == 'undefined') var Flog = {};
-if(typeof(Flog.RayTracer) == 'undefined') Flog.RayTracer = {};
-
-Flog.RayTracer.Engine = Class.create();
-
-Flog.RayTracer.Engine.prototype = {
- canvas: null, /* 2d context we can render to */
-
- initialize: function(options){
- this.options = Object.extend({
- canvasHeight: 100,
- canvasWidth: 100,
- pixelWidth: 2,
- pixelHeight: 2,
- renderDiffuse: false,
- renderShadows: false,
- renderHighlights: false,
- renderReflections: false,
- rayDepth: 2
- }, options || {});
-
- this.options.canvasHeight /= this.options.pixelHeight;
- this.options.canvasWidth /= this.options.pixelWidth;
-
- /* TODO: dynamically include other scripts */
- },
-
- setPixel: function(x, y, color){
- var pxW, pxH;
- pxW = this.options.pixelWidth;
- pxH = this.options.pixelHeight;
-
- if (this.canvas) {
- this.canvas.fillStyle = color.toString();
- this.canvas.fillRect (x * pxW, y * pxH, pxW, pxH);
- } else {
- // print(x * pxW, y * pxH, pxW, pxH);
- }
- },
-
- renderScene: function(scene, canvas){
- /* Get canvas */
- if (canvas) {
- this.canvas = canvas.getContext("2d");
- } else {
- this.canvas = null;
- }
-
- var canvasHeight = this.options.canvasHeight;
- var canvasWidth = this.options.canvasWidth;
-
- for(var y=0; y < canvasHeight; y++){
- for(var x=0; x < canvasWidth; x++){
- var yp = y * 1.0 / canvasHeight * 2 - 1;
- var xp = x * 1.0 / canvasWidth * 2 - 1;
-
- var ray = scene.camera.getRay(xp, yp);
-
- var color = this.getPixelColor(ray, scene);
-
- this.setPixel(x, y, color);
- }
- }
- },
-
- getPixelColor: function(ray, scene){
- var info = this.testIntersection(ray, scene, null);
- if(info.isHit){
- var color = this.rayTrace(info, ray, scene, 0);
- return color;
- }
- return scene.background.color;
- },
-
- testIntersection: function(ray, scene, exclude){
- var hits = 0;
- var best = new Flog.RayTracer.IntersectionInfo();
- best.distance = 2000;
-
- for(var i=0; i<scene.shapes.length; i++){
- var shape = scene.shapes[i];
-
- if(shape != exclude){
- var info = shape.intersect(ray);
- if(info.isHit && info.distance >= 0 && info.distance < best.distance){
- best = info;
- hits++;
- }
- }
- }
- best.hitCount = hits;
- return best;
- },
-
- getReflectionRay: function(P,N,V){
- var c1 = -N.dot(V);
- var R1 = Flog.RayTracer.Vector.prototype.add(
- Flog.RayTracer.Vector.prototype.multiplyScalar(N, 2*c1),
- V
- );
- return new Flog.RayTracer.Ray(P, R1);
- },
-
- rayTrace: function(info, ray, scene, depth){
- // Calc ambient
- var color = Flog.RayTracer.Color.prototype.multiplyScalar(info.color, scene.background.ambience);
- var oldColor = color;
- var shininess = Math.pow(10, info.shape.material.gloss + 1);
-
- for(var i=0; i<scene.lights.length; i++){
- var light = scene.lights[i];
-
- // Calc diffuse lighting
- var v = Flog.RayTracer.Vector.prototype.subtract(
- light.position,
- info.position
- ).normalize();
-
- if(this.options.renderDiffuse){
- var L = v.dot(info.normal);
- if(L > 0.0){
- color = Flog.RayTracer.Color.prototype.add(
- color,
- Flog.RayTracer.Color.prototype.multiply(
- info.color,
- Flog.RayTracer.Color.prototype.multiplyScalar(
- light.color,
- L
- )
- )
- );
- }
- }
-
- // The greater the depth the more accurate the colours, but
- // this is exponentially (!) expensive
- if(depth <= this.options.rayDepth){
- // calculate reflection ray
- if(this.options.renderReflections && info.shape.material.reflection > 0)
- {
- var reflectionRay = this.getReflectionRay(info.position, info.normal, ray.direction);
- var refl = this.testIntersection(reflectionRay, scene, info.shape);
-
- if (refl.isHit && refl.distance > 0){
- refl.color = this.rayTrace(refl, reflectionRay, scene, depth + 1);
- } else {
- refl.color = scene.background.color;
- }
-
- color = Flog.RayTracer.Color.prototype.blend(
- color,
- refl.color,
- info.shape.material.reflection
- );
- }
-
- // Refraction
- /* TODO */
- }
-
- /* Render shadows and highlights */
-
- var shadowInfo = new Flog.RayTracer.IntersectionInfo();
-
- if(this.options.renderShadows){
- var shadowRay = new Flog.RayTracer.Ray(info.position, v);
-
- shadowInfo = this.testIntersection(shadowRay, scene, info.shape);
- if(shadowInfo.isHit && shadowInfo.shape != info.shape /*&& shadowInfo.shape.type != 'PLANE'*/){
- var vA = Flog.RayTracer.Color.prototype.multiplyScalar(color, 0.5);
- var dB = (0.5 * Math.pow(shadowInfo.shape.material.transparency, 0.5));
- color = Flog.RayTracer.Color.prototype.addScalar(vA,dB);
- }
- }
-
- // Phong specular highlights
- if(this.options.renderHighlights && !shadowInfo.isHit && info.shape.material.gloss > 0){
- var Lv = Flog.RayTracer.Vector.prototype.subtract(
- info.shape.position,
- light.position
- ).normalize();
-
- var E = Flog.RayTracer.Vector.prototype.subtract(
- scene.camera.position,
- info.shape.position
- ).normalize();
-
- var H = Flog.RayTracer.Vector.prototype.subtract(
- E,
- Lv
- ).normalize();
-
- var glossWeight = Math.pow(Math.max(info.normal.dot(H), 0), shininess);
- color = Flog.RayTracer.Color.prototype.add(
- Flog.RayTracer.Color.prototype.multiplyScalar(light.color, glossWeight),
- color
- );
- }
- }
- color.limit();
- return color;
- }
-};
-
-
-function renderScene(){
- var scene = new Flog.RayTracer.Scene();
-
- scene.camera = new Flog.RayTracer.Camera(
- new Flog.RayTracer.Vector(0, 0, -15),
- new Flog.RayTracer.Vector(-0.2, 0, 5),
- new Flog.RayTracer.Vector(0, 1, 0)
- );
-
- scene.background = new Flog.RayTracer.Background(
- new Flog.RayTracer.Color(0.5, 0.5, 0.5),
- 0.4
- );
-
- var sphere = new Flog.RayTracer.Shape.Sphere(
- new Flog.RayTracer.Vector(-1.5, 1.5, 2),
- 1.5,
- new Flog.RayTracer.Material.Solid(
- new Flog.RayTracer.Color(0,0.5,0.5),
- 0.3,
- 0.0,
- 0.0,
- 2.0
- )
- );
-
- var sphere1 = new Flog.RayTracer.Shape.Sphere(
- new Flog.RayTracer.Vector(1, 0.25, 1),
- 0.5,
- new Flog.RayTracer.Material.Solid(
- new Flog.RayTracer.Color(0.9,0.9,0.9),
- 0.1,
- 0.0,
- 0.0,
- 1.5
- )
- );
-
- var plane = new Flog.RayTracer.Shape.Plane(
- new Flog.RayTracer.Vector(0.1, 0.9, -0.5).normalize(),
- 1.2,
- new Flog.RayTracer.Material.Chessboard(
- new Flog.RayTracer.Color(1,1,1),
- new Flog.RayTracer.Color(0,0,0),
- 0.2,
- 0.0,
- 1.0,
- 0.7
- )
- );
-
- scene.shapes.push(plane);
- scene.shapes.push(sphere);
- scene.shapes.push(sphere1);
-
- var light = new Flog.RayTracer.Light(
- new Flog.RayTracer.Vector(5, 10, -1),
- new Flog.RayTracer.Color(0.8, 0.8, 0.8)
- );
-
- var light1 = new Flog.RayTracer.Light(
- new Flog.RayTracer.Vector(-3, 5, -15),
- new Flog.RayTracer.Color(0.8, 0.8, 0.8),
- 100
- );
-
- scene.lights.push(light);
- scene.lights.push(light1);
-
- var imageWidth = 100; // $F('imageWidth');
- var imageHeight = 100; // $F('imageHeight');
- var pixelSize = "5,5".split(','); // $F('pixelSize').split(',');
- var renderDiffuse = true; // $F('renderDiffuse');
- var renderShadows = true; // $F('renderShadows');
- var renderHighlights = true; // $F('renderHighlights');
- var renderReflections = true; // $F('renderReflections');
- var rayDepth = 2;//$F('rayDepth');
-
- var raytracer = new Flog.RayTracer.Engine(
- {
- canvasWidth: imageWidth,
- canvasHeight: imageHeight,
- pixelWidth: pixelSize[0],
- pixelHeight: pixelSize[1],
- "renderDiffuse": renderDiffuse,
- "renderHighlights": renderHighlights,
- "renderShadows": renderShadows,
- "renderReflections": renderReflections,
- "rayDepth": rayDepth
- }
- );
-
- raytracer.renderScene(scene, null, 0);
-}
-
-for (var i = 0; i < 6; ++i)
- renderScene();
diff --git a/SunSpider/tests/v8-richards.js b/SunSpider/tests/v8-richards.js
deleted file mode 100644
index 93af6c2..0000000
--- a/SunSpider/tests/v8-richards.js
+++ /dev/null
@@ -1,536 +0,0 @@
-// Copyright 2007 Google Inc. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following
-// disclaimer in the documentation and/or other materials provided
-// with the distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// This is a JavaScript implementation of the Richards
-// benchmark from:
-//
-// http://www.cl.cam.ac.uk/~mr10/Bench.html
-//
-// The benchmark was originally implemented in BCPL by
-// Martin Richards.
-
-/**
- * The Richards benchmark simulates the task dispatcher of an
- * operating system.
- **/
-function runRichards() {
- var scheduler = new Scheduler();
- scheduler.addIdleTask(ID_IDLE, 0, null, COUNT);
-
- var queue = new Packet(null, ID_WORKER, KIND_WORK);
- queue = new Packet(queue, ID_WORKER, KIND_WORK);
- scheduler.addWorkerTask(ID_WORKER, 1000, queue);
-
- queue = new Packet(null, ID_DEVICE_A, KIND_DEVICE);
- queue = new Packet(queue, ID_DEVICE_A, KIND_DEVICE);
- queue = new Packet(queue, ID_DEVICE_A, KIND_DEVICE);
- scheduler.addHandlerTask(ID_HANDLER_A, 2000, queue);
-
- queue = new Packet(null, ID_DEVICE_B, KIND_DEVICE);
- queue = new Packet(queue, ID_DEVICE_B, KIND_DEVICE);
- queue = new Packet(queue, ID_DEVICE_B, KIND_DEVICE);
- scheduler.addHandlerTask(ID_HANDLER_B, 3000, queue);
-
- scheduler.addDeviceTask(ID_DEVICE_A, 4000, null);
-
- scheduler.addDeviceTask(ID_DEVICE_B, 5000, null);
-
- scheduler.schedule();
-
- if (scheduler.queueCount != EXPECTED_QUEUE_COUNT ||
- scheduler.holdCount != EXPECTED_HOLD_COUNT) {
- var msg =
- "Error during execution: queueCount = " + scheduler.queueCount +
- ", holdCount = " + scheduler.holdCount + ".";
- print(msg);
- }
-}
-
-var COUNT = 1000;
-
-/**
- * These two constants specify how many times a packet is queued and
- * how many times a task is put on hold in a correct run of richards.
- * They don't have any meaning a such but are characteristic of a
- * correct run so if the actual queue or hold count is different from
- * the expected there must be a bug in the implementation.
- **/
-var EXPECTED_QUEUE_COUNT = 2322;
-var EXPECTED_HOLD_COUNT = 928;
-
-
-/**
- * A scheduler can be used to schedule a set of tasks based on their relative
- * priorities. Scheduling is done by maintaining a list of task control blocks
- * which holds tasks and the data queue they are processing.
- * @constructor
- */
-function Scheduler() {
- this.queueCount = 0;
- this.holdCount = 0;
- this.blocks = new Array(NUMBER_OF_IDS);
- this.list = null;
- this.currentTcb = null;
- this.currentId = null;
-}
-
-var ID_IDLE = 0;
-var ID_WORKER = 1;
-var ID_HANDLER_A = 2;
-var ID_HANDLER_B = 3;
-var ID_DEVICE_A = 4;
-var ID_DEVICE_B = 5;
-var NUMBER_OF_IDS = 6;
-
-var KIND_DEVICE = 0;
-var KIND_WORK = 1;
-
-/**
- * Add an idle task to this scheduler.
- * @param {int} id the identity of the task
- * @param {int} priority the task's priority
- * @param {Packet} queue the queue of work to be processed by the task
- * @param {int} count the number of times to schedule the task
- */
-Scheduler.prototype.addIdleTask = function (id, priority, queue, count) {
- this.addRunningTask(id, priority, queue, new IdleTask(this, 1, count));
-};
-
-/**
- * Add a work task to this scheduler.
- * @param {int} id the identity of the task
- * @param {int} priority the task's priority
- * @param {Packet} queue the queue of work to be processed by the task
- */
-Scheduler.prototype.addWorkerTask = function (id, priority, queue) {
- this.addTask(id, priority, queue, new WorkerTask(this, ID_HANDLER_A, 0));
-};
-
-/**
- * Add a handler task to this scheduler.
- * @param {int} id the identity of the task
- * @param {int} priority the task's priority
- * @param {Packet} queue the queue of work to be processed by the task
- */
-Scheduler.prototype.addHandlerTask = function (id, priority, queue) {
- this.addTask(id, priority, queue, new HandlerTask(this));
-};
-
-/**
- * Add a handler task to this scheduler.
- * @param {int} id the identity of the task
- * @param {int} priority the task's priority
- * @param {Packet} queue the queue of work to be processed by the task
- */
-Scheduler.prototype.addDeviceTask = function (id, priority, queue) {
- this.addTask(id, priority, queue, new DeviceTask(this))
-};
-
-/**
- * Add the specified task and mark it as running.
- * @param {int} id the identity of the task
- * @param {int} priority the task's priority
- * @param {Packet} queue the queue of work to be processed by the task
- * @param {Task} task the task to add
- */
-Scheduler.prototype.addRunningTask = function (id, priority, queue, task) {
- this.addTask(id, priority, queue, task);
- this.currentTcb.setRunning();
-};
-
-/**
- * Add the specified task to this scheduler.
- * @param {int} id the identity of the task
- * @param {int} priority the task's priority
- * @param {Packet} queue the queue of work to be processed by the task
- * @param {Task} task the task to add
- */
-Scheduler.prototype.addTask = function (id, priority, queue, task) {
- this.currentTcb = new TaskControlBlock(this.list, id, priority, queue, task);
- this.list = this.currentTcb;
- this.blocks[id] = this.currentTcb;
-};
-
-/**
- * Execute the tasks managed by this scheduler.
- */
-Scheduler.prototype.schedule = function () {
- this.currentTcb = this.list;
- while (this.currentTcb != null) {
- if (this.currentTcb.isHeldOrSuspended()) {
- this.currentTcb = this.currentTcb.link;
- } else {
- this.currentId = this.currentTcb.id;
- this.currentTcb = this.currentTcb.run();
- }
- }
-};
-
-/**
- * Release a task that is currently blocked and return the next block to run.
- * @param {int} id the id of the task to suspend
- */
-Scheduler.prototype.release = function (id) {
- var tcb = this.blocks[id];
- if (tcb == null) return tcb;
- tcb.markAsNotHeld();
- if (tcb.priority > this.currentTcb.priority) {
- return tcb;
- } else {
- return this.currentTcb;
- }
-};
-
-/**
- * Block the currently executing task and return the next task control block
- * to run. The blocked task will not be made runnable until it is explicitly
- * released, even if new work is added to it.
- */
-Scheduler.prototype.holdCurrent = function () {
- this.holdCount++;
- this.currentTcb.markAsHeld();
- return this.currentTcb.link;
-};
-
-/**
- * Suspend the currently executing task and return the next task control block
- * to run. If new work is added to the suspended task it will be made runnable.
- */
-Scheduler.prototype.suspendCurrent = function () {
- this.currentTcb.markAsSuspended();
- return this.currentTcb;
-};
-
-/**
- * Add the specified packet to the end of the worklist used by the task
- * associated with the packet and make the task runnable if it is currently
- * suspended.
- * @param {Packet} packet the packet to add
- */
-Scheduler.prototype.queue = function (packet) {
- var t = this.blocks[packet.id];
- if (t == null) return t;
- this.queueCount++;
- packet.link = null;
- packet.id = this.currentId;
- return t.checkPriorityAdd(this.currentTcb, packet);
-};
-
-/**
- * A task control block manages a task and the queue of work packages associated
- * with it.
- * @param {TaskControlBlock} link the preceding block in the linked block list
- * @param {int} id the id of this block
- * @param {int} priority the priority of this block
- * @param {Packet} queue the queue of packages to be processed by the task
- * @param {Task} task the task
- * @constructor
- */
-function TaskControlBlock(link, id, priority, queue, task) {
- this.link = link;
- this.id = id;
- this.priority = priority;
- this.queue = queue;
- this.task = task;
- if (queue == null) {
- this.state = STATE_SUSPENDED;
- } else {
- this.state = STATE_SUSPENDED_RUNNABLE;
- }
-}
-
-/**
- * The task is running and is currently scheduled.
- */
-var STATE_RUNNING = 0;
-
-/**
- * The task has packets left to process.
- */
-var STATE_RUNNABLE = 1;
-
-/**
- * The task is not currently running. The task is not blocked as such and may
-* be started by the scheduler.
- */
-var STATE_SUSPENDED = 2;
-
-/**
- * The task is blocked and cannot be run until it is explicitly released.
- */
-var STATE_HELD = 4;
-
-var STATE_SUSPENDED_RUNNABLE = STATE_SUSPENDED | STATE_RUNNABLE;
-var STATE_NOT_HELD = ~STATE_HELD;
-
-TaskControlBlock.prototype.setRunning = function () {
- this.state = STATE_RUNNING;
-};
-
-TaskControlBlock.prototype.markAsNotHeld = function () {
- this.state = this.state & STATE_NOT_HELD;
-};
-
-TaskControlBlock.prototype.markAsHeld = function () {
- this.state = this.state | STATE_HELD;
-};
-
-TaskControlBlock.prototype.isHeldOrSuspended = function () {
- return (this.state & STATE_HELD) != 0 || (this.state == STATE_SUSPENDED);
-};
-
-TaskControlBlock.prototype.markAsSuspended = function () {
- this.state = this.state | STATE_SUSPENDED;
-};
-
-TaskControlBlock.prototype.markAsRunnable = function () {
- this.state = this.state | STATE_RUNNABLE;
-};
-
-/**
- * Runs this task, if it is ready to be run, and returns the next task to run.
- */
-TaskControlBlock.prototype.run = function () {
- var packet;
- if (this.state == STATE_SUSPENDED_RUNNABLE) {
- packet = this.queue;
- this.queue = packet.link;
- if (this.queue == null) {
- this.state = STATE_RUNNING;
- } else {
- this.state = STATE_RUNNABLE;
- }
- } else {
- packet = null;
- }
- return this.task.run(packet);
-};
-
-/**
- * Adds a packet to the worklist of this block's task, marks this as runnable if
- * necessary, and returns the next runnable object to run (the one
- * with the highest priority).
- */
-TaskControlBlock.prototype.checkPriorityAdd = function (task, packet) {
- if (this.queue == null) {
- this.queue = packet;
- this.markAsRunnable();
- if (this.priority > task.priority) return this;
- } else {
- this.queue = packet.addTo(this.queue);
- }
- return task;
-};
-
-TaskControlBlock.prototype.toString = function () {
- return "tcb { " + this.task + "@" + this.state + " }";
-};
-
-/**
- * An idle task doesn't do any work itself but cycles control between the two
- * device tasks.
- * @param {Scheduler} scheduler the scheduler that manages this task
- * @param {int} v1 a seed value that controls how the device tasks are scheduled
- * @param {int} count the number of times this task should be scheduled
- * @constructor
- */
-function IdleTask(scheduler, v1, count) {
- this.scheduler = scheduler;
- this.v1 = v1;
- this.count = count;
-}
-
-IdleTask.prototype.run = function (packet) {
- this.count--;
- if (this.count == 0) return this.scheduler.holdCurrent();
- if ((this.v1 & 1) == 0) {
- this.v1 = this.v1 >> 1;
- return this.scheduler.release(ID_DEVICE_A);
- } else {
- this.v1 = (this.v1 >> 1) ^ 0xD008;
- return this.scheduler.release(ID_DEVICE_B);
- }
-};
-
-IdleTask.prototype.toString = function () {
- return "IdleTask"
-};
-
-/**
- * A task that suspends itself after each time it has been run to simulate
- * waiting for data from an external device.
- * @param {Scheduler} scheduler the scheduler that manages this task
- * @constructor
- */
-function DeviceTask(scheduler) {
- this.scheduler = scheduler;
- this.v1 = null;
-}
-
-DeviceTask.prototype.run = function (packet) {
- if (packet == null) {
- if (this.v1 == null) return this.scheduler.suspendCurrent();
- var v = this.v1;
- this.v1 = null;
- return this.scheduler.queue(v);
- } else {
- this.v1 = packet;
- return this.scheduler.holdCurrent();
- }
-};
-
-DeviceTask.prototype.toString = function () {
- return "DeviceTask";
-};
-
-/**
- * A task that manipulates work packets.
- * @param {Scheduler} scheduler the scheduler that manages this task
- * @param {int} v1 a seed used to specify how work packets are manipulated
- * @param {int} v2 another seed used to specify how work packets are manipulated
- * @constructor
- */
-function WorkerTask(scheduler, v1, v2) {
- this.scheduler = scheduler;
- this.v1 = v1;
- this.v2 = v2;
-}
-
-WorkerTask.prototype.run = function (packet) {
- if (packet == null) {
- return this.scheduler.suspendCurrent();
- } else {
- if (this.v1 == ID_HANDLER_A) {
- this.v1 = ID_HANDLER_B;
- } else {
- this.v1 = ID_HANDLER_A;
- }
- packet.id = this.v1;
- packet.a1 = 0;
- for (var i = 0; i < DATA_SIZE; i++) {
- this.v2++;
- if (this.v2 > 26) this.v2 = 1;
- packet.a2[i] = this.v2;
- }
- return this.scheduler.queue(packet);
- }
-};
-
-WorkerTask.prototype.toString = function () {
- return "WorkerTask";
-};
-
-/**
- * A task that manipulates work packets and then suspends itself.
- * @param {Scheduler} scheduler the scheduler that manages this task
- * @constructor
- */
-function HandlerTask(scheduler) {
- this.scheduler = scheduler;
- this.v1 = null;
- this.v2 = null;
-}
-
-HandlerTask.prototype.run = function (packet) {
- if (packet != null) {
- if (packet.kind == KIND_WORK) {
- this.v1 = packet.addTo(this.v1);
- } else {
- this.v2 = packet.addTo(this.v2);
- }
- }
- if (this.v1 != null) {
- var count = this.v1.a1;
- var v;
- if (count < DATA_SIZE) {
- if (this.v2 != null) {
- v = this.v2;
- this.v2 = this.v2.link;
- v.a1 = this.v1.a2[count];
- this.v1.a1 = count + 1;
- return this.scheduler.queue(v);
- }
- } else {
- v = this.v1;
- this.v1 = this.v1.link;
- return this.scheduler.queue(v);
- }
- }
- return this.scheduler.suspendCurrent();
-};
-
-HandlerTask.prototype.toString = function () {
- return "HandlerTask";
-};
-
-/* --- *
- * P a c k e t
- * --- */
-
-var DATA_SIZE = 4;
-
-/**
- * A simple package of data that is manipulated by the tasks. The exact layout
- * of the payload data carried by a packet is not importaint, and neither is the
- * nature of the work performed on packets by the tasks.
- *
- * Besides carrying data, packets form linked lists and are hence used both as
- * data and worklists.
- * @param {Packet} link the tail of the linked list of packets
- * @param {int} id an ID for this packet
- * @param {int} kind the type of this packet
- * @constructor
- */
-function Packet(link, id, kind) {
- this.link = link;
- this.id = id;
- this.kind = kind;
- this.a1 = 0;
- this.a2 = new Array(DATA_SIZE);
-}
-
-/**
- * Add this packet to the end of a worklist, and return the worklist.
- * @param {Packet} queue the worklist to add this packet to
- */
-Packet.prototype.addTo = function (queue) {
- this.link = null;
- if (queue == null) return this;
- var peek, next = queue;
- while ((peek = next.link) != null)
- next = peek;
- next.link = this;
- return queue;
-};
-
-Packet.prototype.toString = function () {
- return "Packet";
-};
-
-for (var i = 0; i < 350; ++i)
- runRichards();
diff --git a/WebCore/NOTICE b/WebCore/NOTICE
deleted file mode 100644
index 92c7323..0000000
--- a/WebCore/NOTICE
+++ /dev/null
@@ -1,1032 +0,0 @@
-Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- its contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-Copyright (C) 2003, 2004, 2005, 2006 Apple Computer, Inc. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- GNU LIBRARY GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL. It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it. You can use it for
-your libraries, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
- Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library. If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software. To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
- Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs. This
-license, the GNU Library General Public License, applies to certain
-designated libraries. This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
- The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it. Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program. However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
- Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries. We
-concluded that weaker conditions might promote sharing better.
-
- However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves. This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them. (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.) The hope is that this
-will lead to faster development of free libraries.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, while the latter only
-works together with the library.
-
- Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
- GNU LIBRARY GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License"). Each licensee is
-addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- c) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- d) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded. In such case, this License incorporates the limitation as if
-written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
- NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Libraries
-
- If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change. You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
- To apply these terms, attach the following notices to the library. It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
- <one line to give the library's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this library; if not, write to the Free
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
- <signature of Ty Coon>, 1 April 1990
- Ty Coon, President of Vice
-
-That's all there is to it!
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL. It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
- When we speak of free software, we are referring to freedom of use,
-not price. Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
- To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
- To protect each distributor, we want to make it very clear that
-there is no warranty for the free library. Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
- Finally, software patents pose a constant threat to the existence of
-any free program. We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder. Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
- Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License. This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License. We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
- When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library. The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom. The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
- We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License. It also provides other free software developers Less
-of an advantage over competing non-free programs. These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries. However, the Lesser license provides advantages in certain
-special circumstances.
-
- For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard. To achieve this, non-free programs must be
-allowed to use the library. A more frequent case is that a free
-library does the same job as widely used non-free libraries. In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
- In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software. For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
- Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
- GNU LESSER GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (1) uses at run time a
- copy of the library already present on the user's computer system,
- rather than copying library functions into the executable, and (2)
- will operate properly with a modified version of the library, if
- the user installs one, as long as the modified version is
- interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- d) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- e) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded. In such case, this License incorporates the limitation as if
-written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
- NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Libraries
-
- If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change. You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
- To apply these terms, attach the following notices to the library. It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
- <one line to give the library's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
- <signature of Ty Coon>, 1 April 1990
- Ty Coon, President of Vice
-
-That's all there is to it!
diff --git a/WebKit.pri b/WebKit.pri
deleted file mode 100644
index a869906..0000000
--- a/WebKit.pri
+++ /dev/null
@@ -1,89 +0,0 @@
-# Include file to make it easy to include WebKit into Qt projects
-
-
-isEmpty(OUTPUT_DIR) {
- CONFIG(release):OUTPUT_DIR=$$PWD/WebKitBuild/Release
- CONFIG(debug):OUTPUT_DIR=$$PWD/WebKitBuild/Debug
-}
-
-DEFINES += BUILDING_QT__=1
-building-libs {
- win32-msvc*: INCLUDEPATH += $$PWD/JavaScriptCore/os-win32
-} else {
- QMAKE_LIBDIR = $$OUTPUT_DIR/lib $$QMAKE_LIBDIR
- LIBS += -lQtWebKit
- DEPENDPATH += $$PWD/WebKit/qt/Api
-}
-
-DEFINES += USE_SYSTEM_MALLOC
-CONFIG(release) {
- DEFINES += NDEBUG
-}
-
-BASE_DIR = $$PWD
-INCLUDEPATH += $$PWD/WebKit/qt/Api
-
-#
-# For builds inside Qt we interpret the output rule and the input of each extra compiler manually
-# and add the resulting sources to the SOURCES variable, because the build inside Qt contains already
-# all the generated files. We do not need to generate any extra compiler rules in that case.
-#
-# In addition this function adds a new target called 'generated_files' that allows manually calling
-# all the extra compilers to generate all the necessary files for the build using 'make generated_files'
-#
-defineTest(addExtraCompiler) {
- CONFIG(QTDIR_build) {
- outputRule = $$eval($${1}.output)
-
- input = $$eval($${1}.input)
- input = $$eval($$input)
-
- for(file,input) {
- base = $$basename(file)
- base ~= s/\..+//
- newfile=$$replace(outputRule,\\$\\{QMAKE_FILE_BASE\\},$$base)
- SOURCES += $$newfile
- }
-
- export(SOURCES)
- } else {
- QMAKE_EXTRA_COMPILERS += $$1
- generated_files.depends += compiler_$${1}_make_all
- export(QMAKE_EXTRA_COMPILERS)
- export(generated_files.depends)
- }
- return(true)
-}
-
-defineTest(addExtraCompilerWithHeader) {
- addExtraCompiler($$1)
-
- eval(headerFile = $${2})
- isEmpty(headerFile) {
- eval($${1}_header.output = $$eval($${1}.output))
- eval($${1}_header.output ~= s/\.cpp/.h/)
- eval($${1}_header.output ~= s/\.c/.h/)
- } else {
- eval($${1}_header.output = $$headerFile)
- }
-
- eval($${1}_header.input = $$eval($${1}.input))
- eval($${1}_header.commands = @echo -n '')
- eval($${1}_header.depends = compiler_$${1}_make_all)
- eval($${1}_header.variable_out = GENERATED_FILES)
-
- export($${1}_header.output)
- export($${1}_header.input)
- export($${1}_header.commands)
- export($${1}_header.depends)
- export($${1}_header.variable_out)
-
- !CONFIG(QTDIR_build): QMAKE_EXTRA_COMPILERS += $${1}_header
-
- export(QMAKE_EXTRA_COMPILERS)
- export(generated_files.depends)
- export(SOURCES)
-
- return(true)
-}
-
diff --git a/WebKit.pro b/WebKit.pro
deleted file mode 100644
index 035f73a..0000000
--- a/WebKit.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-TEMPLATE = subdirs
-CONFIG += ordered
-
-SUBDIRS += \
- JavaScriptCore \
- WebCore \
- JavaScriptCore/kjs/jsc.pro \
- WebKit/qt/QtLauncher \
- WebKit/qt/tests
-
-!win32-*: SUBDIRS += WebKitTools/DumpRenderTree/qt/DumpRenderTree.pro
-
diff --git a/WebKit/gtk/docs/webkitgtk-docs.sgml b/WebKit/gtk/docs/webkitgtk-docs.sgml
new file mode 100644
index 0000000..655a991
--- /dev/null
+++ b/WebKit/gtk/docs/webkitgtk-docs.sgml
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
+ <bookinfo>
+ <title>webkitgtk Reference Manual</title>
+ <releaseinfo>
+ for webkitgtk [VERSION]
+ The latest version of this documentation can be found on-line at
+ <ulink role="online-location" url="http://[SERVER]/webkitgtk/index.html">http://[SERVER]/webkitgtk/</ulink>.
+ </releaseinfo>
+ </bookinfo>
+
+ <chapter>
+ <title>Class Overview</title>
+ <xi:include href="xml/webkitwebview.xml"/>
+ <xi:include href="xml/webkitwebframe.xml"/>
+ <xi:include href="xml/webkitwebsettings.xml"/>
+ <xi:include href="xml/webkitwebbackforwardlist.xml"/>
+ <xi:include href="xml/webkitwebhistoryitem.xml"/>
+ <xi:include href="xml/webkitnetworkrequest.xml"/>
+ <xi:include href="xml/webkitwebinspector.xml"/>
+ <xi:include href="xml/webkitwebwindowfeatures.xml"/>
+ </chapter>
+
+ <index id="index-all">
+ <title>Index</title>
+ </index>
+ <index id="index-deprecated" role="deprecated">
+ <title>Index of deprectaed symbols</title>
+ </index>
+ <index id="index-1.0.1" role="1.0.1">
+ <title>Index of new symbols in 1.0.1</title>
+ </index>
+ <index id="index-1.0.2" role="1.0.2">
+ <title>Index of new symbols in 1.0.2</title>
+ </index>
+ <index id="index-1.0.3" role="1.0.3">
+ <title>Index of new symbols in 1.0.3</title>
+ </index>
+</book>
diff --git a/WebCore/MODULE_LICENSE_LGPL b/WebKit/gtk/docs/webkitgtk-overrides.txt
index e69de29..e69de29 100644
--- a/WebCore/MODULE_LICENSE_LGPL
+++ b/WebKit/gtk/docs/webkitgtk-overrides.txt
diff --git a/WebKit/gtk/docs/webkitgtk-sections.txt b/WebKit/gtk/docs/webkitgtk-sections.txt
new file mode 100644
index 0000000..d20bc7a
--- /dev/null
+++ b/WebKit/gtk/docs/webkitgtk-sections.txt
@@ -0,0 +1,275 @@
+<SECTION>
+<FILE>webkitwebsettings</FILE>
+<TITLE>WebKitWebSettings</TITLE>
+WebKitWebSettings
+webkit_web_settings_copy
+webkit_web_settings_new
+<SUBSECTION Standard>
+WEBKIT_WEB_SETTINGS
+WEBKIT_IS_WEB_SETTINGS
+WEBKIT_TYPE_WEB_SETTINGS
+WEBKIT_WEB_SETTINGS_CLASS
+WEBKIT_IS_WEB_SETTINGS_CLASS
+WEBKIT_WEB_SETTINGS_GET_CLASS
+<SUBSECTION Private>
+webkit_web_settings_get_type
+WebKitWebSettingsPrivate
+WebKitWebSettings
+WebKitWebSettingsClass
+</SECTION>
+
+<SECTION>
+<FILE>webkitwebbackforwardlist</FILE>
+<TITLE>WebKitWebBackForwardList</TITLE>
+WebKitWebBackForwardList
+webkit_web_back_forward_list_contains_item
+webkit_web_back_forward_list_get_back_item
+webkit_web_back_forward_list_get_back_length
+webkit_web_back_forward_list_get_back_list_with_limit
+webkit_web_back_forward_list_get_current_item
+webkit_web_back_forward_list_get_forward_item
+webkit_web_back_forward_list_get_forward_length
+webkit_web_back_forward_list_get_forward_list_with_limit
+webkit_web_back_forward_list_get_limit
+webkit_web_back_forward_list_get_nth_item
+webkit_web_back_forward_list_go_back
+webkit_web_back_forward_list_go_forward
+webkit_web_back_forward_list_go_to_item
+webkit_web_back_forward_list_new_with_web_view
+webkit_web_back_forward_list_set_limit
+<SUBSECTION Standard>
+WEBKIT_WEB_BACK_FORWARD_LIST
+WEBKIT_IS_WEB_BACK_FORWARD_LIST
+WEBKIT_TYPE_WEB_BACK_FORWARD_LIST
+WEBKIT_WEB_BACK_FORWARD_LIST_CLASS
+WEBKIT_IS_WEB_BACK_FORWARD_LIST_CLASS
+WEBKIT_WEB_BACK_FORWARD_LIST_GET_CLASS
+<SUBSECTION Private>
+WebKitWebBackForwardListPrivate
+webkit_web_back_forward_list_get_type
+WebKitWebBackForwardList
+WebKitWebBackForwardListClass
+</SECTION>
+
+<SECTION>
+<FILE>webkitwebhistoryitem</FILE>
+<TITLE>WebKitWebHistoryItem</TITLE>
+WebKitWebHistoryItem
+webkit_web_history_item_get_alternate_title
+webkit_web_history_item_get_last_visited_time
+webkit_web_history_item_get_original_uri
+webkit_web_history_item_get_title
+webkit_web_history_item_get_uri
+webkit_web_history_item_new
+webkit_web_history_item_new_with_data
+webkit_web_history_item_set_alternate_title
+<SUBSECTION Standard>
+WEBKIT_WEB_HISTORY_ITEM
+WEBKIT_IS_WEB_HISTORY_ITEM
+WEBKIT_TYPE_WEB_HISTORY_ITEM
+WEBKIT_WEB_HISTORY_ITEM_CLASS
+WEBKIT_IS_WEB_HISTORY_ITEM_CLASS
+WEBKIT_WEB_HISTORY_ITEM_GET_CLASS
+<SUBSECTION Private>
+webkit_web_history_item_get_type
+WebKitWebHistoryItemPrivate
+WebKitWebHistoryItem
+WebKitWebHistoryItemClass
+</SECTION>
+
+<SECTION>
+<FILE>webkitwebframe</FILE>
+<TITLE>WebKitWebFrame</TITLE>
+WebKitWebFrame
+webkit_web_frame_find_frame
+webkit_web_frame_get_global_context
+webkit_web_frame_get_name
+webkit_web_frame_get_parent
+webkit_web_frame_get_title
+webkit_web_frame_get_uri
+webkit_web_frame_get_web_view
+webkit_web_frame_load_request
+webkit_web_frame_new
+webkit_web_frame_reload
+webkit_web_frame_stop_loading
+<SUBSECTION Standard>
+WEBKIT_WEB_FRAME
+WEBKIT_IS_WEB_FRAME
+WEBKIT_TYPE_WEB_FRAME
+WEBKIT_WEB_FRAME_CLASS
+WEBKIT_IS_WEB_FRAME_CLASS
+WEBKIT_WEB_FRAME_GET_CLASS
+<SUBSECTION Private>
+WEBKIT_WEB_FRAME_GET_PRIVATE
+WebKitWebFramePrivate
+webkit_web_frame_get_type
+WebKitWebFrame
+WebKitWebFrameClass
+</SECTION>
+
+<SECTION>
+<FILE>webkitwebinspector</FILE>
+<TITLE>WebKitWebInspector</TITLE>
+WebKitWebInspector
+webkit_web_inspector_get_inspected_uri
+webkit_web_inspector_get_web_view
+<SUBSECTION Standard>
+WEBKIT_WEB_INSPECTOR
+WEBKIT_IS_WEB_INSPECTOR
+WEBKIT_TYPE_WEB_INSPECTOR
+WEBKIT_WEB_INSPECTOR_CLASS
+WEBKIT_IS_WEB_INSPECTOR_CLASS
+WEBKIT_WEB_INSPECTOR_GET_CLASS
+<SUBSECTION Private>
+webkit_web_inspector_get_type
+WebKitWebInspectorPrivate
+WebKitWebInspector
+WebKitWebInspectorClass
+</SECTION>
+
+<SECTION>
+<FILE>webkitnetworkrequest</FILE>
+<TITLE>WebKitNetworkRequest</TITLE>
+WebKitNetworkRequest
+webkit_network_request_get_uri
+<SUBSECTION Standard>
+WEBKIT_NETWORK_REQUEST
+WEBKIT_IS_NETWORK_REQUEST
+WEBKIT_TYPE_NETWORK_REQUEST
+WEBKIT_NETWORK_REQUEST_CLASS
+WEBKIT_IS_NETWORK_REQUEST_CLASS
+WEBKIT_NETWORK_REQUEST_GET_CLASS
+<SUBSECTION Private>
+webkit_network_request_get_type
+webkit_network_request_new
+webkit_network_request_set_uri
+WebKitNetworkRequestPrivate
+WebKitNetworkRequest
+WebKitNetworkRequestClass
+</SECTION>
+
+<SECTION>
+<FILE>webkitwebview</FILE>
+WebKitNavigationResponse
+WebKitWebViewTargetInfo
+<TITLE>WebKitWebView</TITLE>
+WebKitWebView
+webkit_web_view_can_copy_clipboard
+webkit_web_view_can_cut_clipboard
+webkit_web_view_can_go_back
+webkit_web_view_can_go_back_or_forward
+webkit_web_view_can_go_forward
+webkit_web_view_can_paste_clipboard
+webkit_web_view_copy_clipboard
+webkit_web_view_cut_clipboard
+webkit_web_view_delete_selection
+webkit_web_view_execute_script
+webkit_web_view_get_back_forward_list
+webkit_web_view_get_copy_target_list
+webkit_web_view_get_editable
+webkit_web_view_get_focused_frame
+webkit_web_view_get_full_content_zoom
+webkit_web_view_get_inspector
+webkit_web_view_get_main_frame
+webkit_web_view_get_paste_target_list
+webkit_web_view_get_settings
+webkit_web_view_get_transparent
+webkit_web_view_get_zoom_level
+webkit_web_view_go_back
+webkit_web_view_go_back_or_forward
+webkit_web_view_go_forward
+webkit_web_view_go_to_back_forward_item
+webkit_web_view_has_selection
+webkit_web_view_load_html_string
+webkit_web_view_load_string
+webkit_web_view_mark_text_matches
+webkit_web_view_new
+webkit_web_view_open
+webkit_web_view_paste_clipboard
+webkit_web_view_reload
+webkit_web_view_search_text
+webkit_web_view_select_all
+webkit_web_view_set_editable
+webkit_web_view_set_full_content_zoom
+webkit_web_view_set_highlight_text_matches
+webkit_web_view_set_maintains_back_forward_list
+webkit_web_view_set_settings
+webkit_web_view_set_transparent
+webkit_web_view_set_zoom_level
+webkit_web_view_stop_loading
+webkit_web_view_target_info_get_type
+webkit_web_view_unmark_text_matches
+webkit_web_view_zoom_in
+webkit_web_view_zoom_out
+webkit_web_view_get_window_features
+<SUBSECTION Standard>
+WEBKIT_WEB_VIEW
+WEBKIT_IS_WEB_VIEW
+WEBKIT_TYPE_WEB_VIEW
+WEBKIT_WEB_VIEW_CLASS
+WEBKIT_IS_WEB_VIEW_CLASS
+WEBKIT_WEB_VIEW_GET_CLASS
+<SUBSECTION Private>
+webkit_web_view_set_window_features
+webkit_web_view_get_type
+WebKitWebViewPrivate
+WebKitWebView
+WebKitWebViewClass
+WEBKIT_WEB_VIEW_GET_PRIVATE
+</SECTION>
+
+<SECTION>
+<FILE>webkitwebwindowfeatures</FILE>
+<TITLE>WebKitWebWindowFeatures</TITLE>
+WebKitWebWindowFeatures
+webkit_web_window_features_equal
+webkit_web_window_features_new
+<SUBSECTION Standard>
+WEBKIT_IS_WEB_WINDOW_FEATURES
+WEBKIT_IS_WEB_WINDOW_FEATURES_CLASS
+WEBKIT_TYPE_WEB_WINDOW_FEATURES
+WEBKIT_WEB_WINDOW_FEATURES
+WEBKIT_WEB_WINDOW_FEATURES_CLASS
+WEBKIT_WEB_WINDOW_FEATURES_GET_CLASS
+<SUBSECTION Private>
+webkit_web_window_features_get_type
+WebKitWebWindowFeatures
+WebKitWebWindowFeaturesClass
+WebKitWebWindowFeaturesPrivate
+</SECTION>
+
+<SECTION>
+<FILE>webkit</FILE>
+webkit_init
+</SECTION>
+
+<SECTION>
+<FILE>webkitprivate</FILE>
+getViewFromFrame
+kit
+WEBKIT_PARAM_READABLE
+WEBKIT_PARAM_READWRITE
+webkit_web_frame_init_with_web_view
+webkit_web_history_item_new_with_core_item
+webkit_web_inspector_set_inspector_client
+webkit_web_inspector_set_web_view
+webkit_web_inspector_set_inspected_uri
+</SECTION>
+
+<SECTION>
+<FILE>webkitdefines</FILE>
+WEBKIT_API
+webkit_navigation_response_get_type
+WEBKIT_OBSOLETE_API
+WEBKIT_CHECK_VERSION
+WEBKIT_MAJOR_VERSION
+WEBKIT_MICRO_VERSION
+WEBKIT_MINOR_VERSION
+WEBKIT_TYPE_NAVIGATION_RESPONSE
+WEBKIT_TYPE_WEB_VIEW_TARGET_INFO
+webkit_check_version
+webkit_major_version
+webkit_micro_version
+webkit_minor_version
+</SECTION>
+
diff --git a/WebKit/gtk/docs/webkitgtk.types b/WebKit/gtk/docs/webkitgtk.types
new file mode 100644
index 0000000..b8ed5be
--- /dev/null
+++ b/WebKit/gtk/docs/webkitgtk.types
@@ -0,0 +1,12 @@
+#include <webkit/webkit.h>
+
+webkit_network_request_get_type
+webkit_web_back_forward_list_get_type
+webkit_web_history_item_get_type
+webkit_web_inspector_get_type
+webkit_web_settings_get_type
+webkit_web_view_get_type
+webkit_navigation_response_get_type
+webkit_web_view_target_info_get_type
+webkit_web_window_features_get_type
+
diff --git a/WebKit/gtk/tests/main.c b/WebKit/gtk/tests/main.c
new file mode 100644
index 0000000..68f6d70
--- /dev/null
+++ b/WebKit/gtk/tests/main.c
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2008 Holger Hans Peter Freyther
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <glib.h>
+#include <gtk/gtk.h>
+#include <webkit/webkit.h>
+
+#if GLIB_CHECK_VERSION(2, 16, 0) && GTK_CHECK_VERSION(2, 14, 0)
+
+static void test_webkit_web_frame_create_destroy(void)
+{
+ WebKitWebView* webView;
+ g_test_bug("21837");
+
+ webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(webView);
+ g_assert_cmpint(G_OBJECT(webView)->ref_count, ==, 1);
+
+ // This crashed with the original version
+ g_object_unref(webView);
+}
+
+static void test_webkit_web_frame_lifetime(void)
+{
+ WebKitWebView* webView;
+ WebKitWebFrame* webFrame;
+ g_test_bug("21837");
+
+ webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(webView);
+ g_assert_cmpint(G_OBJECT(webView)->ref_count, ==, 1);
+ webFrame = webkit_web_view_get_main_frame(webView);
+ g_assert_cmpint(G_OBJECT(webFrame)->ref_count, ==, 1);
+
+ // Add dummy reference on the WebKitWebFrame to keep it alive
+ g_object_ref(webFrame);
+ g_assert_cmpint(G_OBJECT(webFrame)->ref_count, ==, 2);
+
+ // This crashed with the original version
+ g_object_unref(webView);
+
+ // Make sure that the frame got deleted as well. We did this
+ // by adding an extra ref on the WebKitWebFrame and we should
+ // be the one holding the last reference.
+ g_assert_cmpint(G_OBJECT(webFrame)->ref_count, ==, 1);
+ g_object_unref(webFrame);
+}
+
+int main(int argc, char** argv)
+{
+ g_thread_init(NULL);
+ gtk_test_init(&argc, &argv, NULL);
+
+ g_test_bug_base("https://bugs.webkit.org/");
+ g_test_add_func("/webkit/webview/create_destroy", test_webkit_web_frame_create_destroy);
+ g_test_add_func("/webkit/webframe/lifetime", test_webkit_web_frame_lifetime);
+
+ return g_test_run ();
+}
+
+#else
+int main(int argc, char** argv)
+{
+ g_critical("You will need at least glib-2.16.0 and gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ return 0;
+}
+
+#endif
diff --git a/WebKit/mac/ForwardingHeaders/kjs/SavedBuiltins.h b/WebKit/mac/ForwardingHeaders/kjs/SavedBuiltins.h
deleted file mode 100644
index e380807..0000000
--- a/WebKit/mac/ForwardingHeaders/kjs/SavedBuiltins.h
+++ /dev/null
@@ -1 +0,0 @@
-#import <JavaScriptCore/SavedBuiltins.h>
diff --git a/WebKit/mac/ForwardingHeaders/kjs/collector.h b/WebKit/mac/ForwardingHeaders/kjs/collector.h
deleted file mode 100644
index b8ef5a1..0000000
--- a/WebKit/mac/ForwardingHeaders/kjs/collector.h
+++ /dev/null
@@ -1 +0,0 @@
-#import <JavaScriptCore/collector.h>
diff --git a/WebKit/mac/ForwardingHeaders/kjs/dtoa.h b/WebKit/mac/ForwardingHeaders/kjs/dtoa.h
deleted file mode 100644
index 4646cf1..0000000
--- a/WebKit/mac/ForwardingHeaders/kjs/dtoa.h
+++ /dev/null
@@ -1 +0,0 @@
-#import <JavaScriptCore/dtoa.h>
diff --git a/WebKit/mac/ForwardingHeaders/kjs/identifier.h b/WebKit/mac/ForwardingHeaders/kjs/identifier.h
deleted file mode 100644
index 2471c99..0000000
--- a/WebKit/mac/ForwardingHeaders/kjs/identifier.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <JavaScriptCore/identifier.h>
diff --git a/WebKit/mac/ForwardingHeaders/kjs/interpreter.h b/WebKit/mac/ForwardingHeaders/kjs/interpreter.h
deleted file mode 100644
index 08c2be3..0000000
--- a/WebKit/mac/ForwardingHeaders/kjs/interpreter.h
+++ /dev/null
@@ -1 +0,0 @@
-#import <JavaScriptCore/interpreter.h>
diff --git a/WebKit/mac/ForwardingHeaders/kjs/lookup.h b/WebKit/mac/ForwardingHeaders/kjs/lookup.h
deleted file mode 100644
index 5e2ffa0..0000000
--- a/WebKit/mac/ForwardingHeaders/kjs/lookup.h
+++ /dev/null
@@ -1 +0,0 @@
-#import <JavaScriptCore/lookup.h>
diff --git a/WebKit/mac/ForwardingHeaders/kjs/operations.h b/WebKit/mac/ForwardingHeaders/kjs/operations.h
deleted file mode 100644
index eb80f49..0000000
--- a/WebKit/mac/ForwardingHeaders/kjs/operations.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <JavaScriptCore/operations.h>
diff --git a/WebKit/mac/ForwardingHeaders/kjs/protect.h b/WebKit/mac/ForwardingHeaders/kjs/protect.h
deleted file mode 100644
index e4e0499..0000000
--- a/WebKit/mac/ForwardingHeaders/kjs/protect.h
+++ /dev/null
@@ -1 +0,0 @@
-#import <JavaScriptCore/protect.h>
diff --git a/WebKit/mac/Plugins/Hosted/HostedNetscapePluginStream.h b/WebKit/mac/Plugins/Hosted/HostedNetscapePluginStream.h
new file mode 100644
index 0000000..539372c
--- /dev/null
+++ b/WebKit/mac/Plugins/Hosted/HostedNetscapePluginStream.h
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2008 Apple Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if USE(PLUGIN_HOST_PROCESS)
+
+#ifndef HostedNetscapePluginStream_h
+#define HostedNetscapePluginStream_h
+
+#include <WebCore/NetscapePlugInStreamLoader.h>
+#include <WebKit/npapi.h>
+#include <wtf/PassRefPtr.h>
+#include <wtf/RefCounted.h>
+#include <wtf/RefPtr.h>
+#include <wtf/RetainPtr.h>
+
+namespace WebCore {
+ class FrameLoader;
+ class NetscapePlugInStreamLoader;
+}
+
+namespace WebKit {
+
+class NetscapePluginInstanceProxy;
+
+class HostedNetscapePluginStream : public RefCounted<HostedNetscapePluginStream>
+ , private WebCore::NetscapePlugInStreamLoaderClient {
+public:
+ static PassRefPtr<HostedNetscapePluginStream> create(NetscapePluginInstanceProxy* instance, uint32_t streamID, NSURLRequest *request)
+ {
+ return adoptRef(new HostedNetscapePluginStream(instance, streamID, request));
+ }
+
+ uint32_t streamID() const { return m_streamID; }
+
+ void startStreamWithResponse(NSURLResponse *response);
+ void didReceiveData(WebCore::NetscapePlugInStreamLoader*, const char* bytes, int length);
+ void didFinishLoading(WebCore::NetscapePlugInStreamLoader*);
+
+ void start();
+ void stop();
+
+ void cancelLoad(NPReason reason);
+
+private:
+ NSError *errorForReason(NPReason) const;
+ void cancelLoad(NSError *);
+
+ HostedNetscapePluginStream(NetscapePluginInstanceProxy*, uint32_t streamID, NSURLRequest *);
+
+ void startStream(NSURL *, long long expectedContentLength, NSDate *lastModifiedDate, NSString *mimeType, NSData *headers);
+
+ NSError *pluginCancelledConnectionError() const;
+
+ // NetscapePlugInStreamLoaderClient methods.
+ void didReceiveResponse(WebCore::NetscapePlugInStreamLoader*, const WebCore::ResourceResponse&);
+ void didFail(WebCore::NetscapePlugInStreamLoader*, const WebCore::ResourceError&);
+ bool wantsAllStreams() const;
+
+ RefPtr<NetscapePluginInstanceProxy> m_instance;
+ uint32_t m_streamID;
+ bool m_isTerminated;
+ RetainPtr<NSMutableURLRequest> m_request;
+
+ RetainPtr<NSURL> m_requestURL;
+ RetainPtr<NSURL> m_responseURL;
+ RetainPtr<NSString> m_mimeType;
+
+ WebCore::FrameLoader* m_frameLoader;
+ RefPtr<WebCore::NetscapePlugInStreamLoader> m_loader;
+};
+
+}
+
+#endif // HostedNetscapePluginStream_h
+#endif // USE(PLUGIN_HOST_PROCESS)
diff --git a/WebKit/mac/Plugins/Hosted/HostedNetscapePluginStream.mm b/WebKit/mac/Plugins/Hosted/HostedNetscapePluginStream.mm
new file mode 100644
index 0000000..68e25ab
--- /dev/null
+++ b/WebKit/mac/Plugins/Hosted/HostedNetscapePluginStream.mm
@@ -0,0 +1,248 @@
+/*
+ * Copyright (C) 2008 Apple Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if USE(PLUGIN_HOST_PROCESS)
+
+#import "HostedNetscapePluginStream.h"
+
+#import "NetscapePluginHostProxy.h"
+#import "NetscapePluginInstanceProxy.h"
+#import <WebCore/DocumentLoader.h>
+#import <WebCore/Frame.h>
+#import <WebCore/FrameLoader.h>
+#import "WebHostedNetscapePluginView.h"
+#import "WebFrameInternal.h"
+#import "WebKitErrorsPrivate.h"
+#import "WebNSURLExtras.h"
+#import "WebNSURLRequestExtras.h"
+#import "WebKitPluginHost.h"
+#import "WebKitSystemInterface.h"
+
+using namespace WebCore;
+
+namespace WebKit {
+
+HostedNetscapePluginStream::HostedNetscapePluginStream(NetscapePluginInstanceProxy* instance, uint32_t streamID, NSURLRequest *request)
+ : m_instance(instance)
+ , m_streamID(streamID)
+ , m_isTerminated(false)
+ , m_request(AdoptNS, [request mutableCopy])
+ , m_requestURL([request URL])
+ , m_frameLoader(0)
+{
+ if (core([instance->pluginView() webFrame])->loader()->shouldHideReferrer([request URL], core([instance->pluginView() webFrame])->loader()->outgoingReferrer()))
+ [m_request.get() _web_setHTTPReferrer:nil];
+}
+
+void HostedNetscapePluginStream::startStreamWithResponse(NSURLResponse *response)
+{
+ didReceiveResponse(0, response);
+}
+
+void HostedNetscapePluginStream::startStream(NSURL *responseURL, long long expectedContentLength, NSDate *lastModifiedDate, NSString *mimeType, NSData *headers)
+{
+ m_responseURL = responseURL;
+ m_mimeType = mimeType;
+
+ char* mimeTypeUTF8 = const_cast<char*>([mimeType UTF8String]);
+ int mimeTypeUTF8Length = mimeTypeUTF8 ? strlen (mimeTypeUTF8) + 1 : 0;
+
+ const char *url = [responseURL _web_URLCString];
+ int urlLength = url ? strlen(url) + 1 : 0;
+
+ _WKPHStartStream(m_instance->hostProxy()->port(),
+ m_instance->pluginID(),
+ m_streamID,
+ const_cast<char*>(url), urlLength,
+ expectedContentLength,
+ [lastModifiedDate timeIntervalSince1970],
+ mimeTypeUTF8, mimeTypeUTF8Length,
+ const_cast<char*>(reinterpret_cast<const char*>([headers bytes])), [headers length]);
+}
+
+void HostedNetscapePluginStream::didReceiveData(WebCore::NetscapePlugInStreamLoader*, const char* bytes, int length)
+{
+ _WKPHStreamDidReceiveData(m_instance->hostProxy()->port(),
+ m_instance->pluginID(),
+ m_streamID,
+ const_cast<char*>(bytes), length);
+}
+
+void HostedNetscapePluginStream::didFinishLoading(WebCore::NetscapePlugInStreamLoader*)
+{
+ _WKPHStreamDidFinishLoading(m_instance->hostProxy()->port(),
+ m_instance->pluginID(),
+ m_streamID);
+ m_instance->disconnectStream(this);
+}
+
+void HostedNetscapePluginStream::didReceiveResponse(NetscapePlugInStreamLoader*, const ResourceResponse& response)
+{
+ NSURLResponse *r = response.nsURLResponse();
+
+ NSMutableData *theHeaders = nil;
+ long long expectedContentLength = [r expectedContentLength];
+
+ if ([r isKindOfClass:[NSHTTPURLResponse class]]) {
+ NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)r;
+ theHeaders = [NSMutableData dataWithCapacity:1024];
+
+ // FIXME: it would be nice to be able to get the raw HTTP header block.
+ // This includes the HTTP version, the real status text,
+ // all headers in their original order and including duplicates,
+ // and all original bytes verbatim, rather than sent through Unicode translation.
+ // Unfortunately NSHTTPURLResponse doesn't provide access at that low a level.
+
+ [theHeaders appendBytes:"HTTP " length:5];
+ char statusStr[10];
+ long statusCode = [httpResponse statusCode];
+ snprintf(statusStr, sizeof(statusStr), "%ld", statusCode);
+ [theHeaders appendBytes:statusStr length:strlen(statusStr)];
+ [theHeaders appendBytes:" OK\n" length:4];
+
+ // HACK: pass the headers through as UTF-8.
+ // This is not the intended behavior; we're supposed to pass original bytes verbatim.
+ // But we don't have the original bytes, we have NSStrings built by the URL loading system.
+ // It hopefully shouldn't matter, since RFC2616/RFC822 require ASCII-only headers,
+ // but surely someone out there is using non-ASCII characters, and hopefully UTF-8 is adequate here.
+ // It seems better than NSASCIIStringEncoding, which will lose information if non-ASCII is used.
+
+ NSDictionary *headerDict = [httpResponse allHeaderFields];
+ NSArray *keys = [[headerDict allKeys] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
+ NSEnumerator *i = [keys objectEnumerator];
+ NSString *k;
+ while ((k = [i nextObject]) != nil) {
+ NSString *v = [headerDict objectForKey:k];
+ [theHeaders appendData:[k dataUsingEncoding:NSUTF8StringEncoding]];
+ [theHeaders appendBytes:": " length:2];
+ [theHeaders appendData:[v dataUsingEncoding:NSUTF8StringEncoding]];
+ [theHeaders appendBytes:"\n" length:1];
+ }
+
+ // If the content is encoded (most likely compressed), then don't send its length to the plugin,
+ // which is only interested in the decoded length, not yet known at the moment.
+ // <rdar://problem/4470599> tracks a request for -[NSURLResponse expectedContentLength] to incorporate this logic.
+ NSString *contentEncoding = (NSString *)[[(NSHTTPURLResponse *)r allHeaderFields] objectForKey:@"Content-Encoding"];
+ if (contentEncoding && ![contentEncoding isEqualToString:@"identity"])
+ expectedContentLength = -1;
+
+ [theHeaders appendBytes:"\0" length:1];
+ }
+
+ startStream([r URL], expectedContentLength, WKGetNSURLResponseLastModifiedDate(r), [r MIMEType], theHeaders);
+}
+
+static NPReason reasonForError(NSError *error)
+{
+ if (!error)
+ return NPRES_DONE;
+
+ if ([[error domain] isEqualToString:NSURLErrorDomain] && [error code] == NSURLErrorCancelled)
+ return NPRES_USER_BREAK;
+
+ return NPRES_NETWORK_ERR;
+}
+
+void HostedNetscapePluginStream::didFail(WebCore::NetscapePlugInStreamLoader*, const WebCore::ResourceError& error)
+{
+ _WKPHStreamDidFail(m_instance->hostProxy()->port(), m_instance->pluginID(), m_streamID, reasonForError(error));
+}
+
+bool HostedNetscapePluginStream::wantsAllStreams() const
+{
+ // FIXME: Implement.
+ return false;
+}
+
+void HostedNetscapePluginStream::start()
+{
+ ASSERT(m_request);
+ ASSERT(!m_frameLoader);
+ ASSERT(!m_loader);
+
+ m_loader = NetscapePlugInStreamLoader::create(core([m_instance->pluginView() webFrame]), this);
+ m_loader->setShouldBufferData(false);
+
+ m_loader->documentLoader()->addPlugInStreamLoader(m_loader.get());
+ m_loader->load(m_request.get());
+}
+
+void HostedNetscapePluginStream::stop()
+{
+ ASSERT(!m_frameLoader);
+
+ if (!m_loader->isDone())
+ m_loader->cancel(m_loader->cancelledError());
+}
+
+void HostedNetscapePluginStream::cancelLoad(NPReason reason)
+{
+ cancelLoad(errorForReason(reason));
+}
+
+void HostedNetscapePluginStream::cancelLoad(NSError *error)
+{
+ if (m_frameLoader) {
+ ASSERT(!m_loader);
+
+ DocumentLoader* documentLoader = m_frameLoader->activeDocumentLoader();
+ ASSERT(documentLoader);
+
+ if (documentLoader->isLoadingMainResource())
+ documentLoader->cancelMainResourceLoad(error);
+ return;
+ }
+
+ if (!m_loader->isDone())
+ m_loader->cancel(error);
+ m_instance->disconnectStream(this);
+}
+
+NSError *HostedNetscapePluginStream::pluginCancelledConnectionError() const
+{
+ return [[[NSError alloc] _initWithPluginErrorCode:WebKitErrorPlugInCancelledConnection
+ contentURL:m_responseURL ? m_responseURL.get() : m_requestURL.get()
+ pluginPageURL:nil
+ pluginName:[[m_instance->pluginView() pluginPackage] name]
+ MIMEType:m_mimeType.get()] autorelease];
+}
+
+NSError *HostedNetscapePluginStream::errorForReason(NPReason reason) const
+{
+ if (reason == NPRES_DONE)
+ return nil;
+
+ if (reason == NPRES_USER_BREAK)
+ return [NSError _webKitErrorWithDomain:NSURLErrorDomain
+ code:NSURLErrorCancelled
+ URL:m_responseURL ? m_responseURL.get() : m_requestURL.get()];
+
+ return pluginCancelledConnectionError();
+}
+
+} // namespace WebKit
+
+#endif // USE(PLUGIN_HOST_PROCESS)
+
diff --git a/WebKit/mac/Plugins/Hosted/NetscapePluginHostManager.h b/WebKit/mac/Plugins/Hosted/NetscapePluginHostManager.h
new file mode 100644
index 0000000..8e539f3
--- /dev/null
+++ b/WebKit/mac/Plugins/Hosted/NetscapePluginHostManager.h
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2008 Apple Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if USE(PLUGIN_HOST_PROCESS)
+
+#ifndef NetscapePluginHostManager_h
+#define NetscapePluginHostManager_h
+
+#import <wtf/HashMap.h>
+#import <wtf/PassRefPtr.h>
+
+@class WebHostedNetscapePluginView;
+@class WebNetscapePluginPackage;
+
+namespace WebKit {
+
+class NetscapePluginInstanceProxy;
+class NetscapePluginHostProxy;
+
+class NetscapePluginHostManager {
+public:
+ static NetscapePluginHostManager& shared();
+
+ PassRefPtr<NetscapePluginInstanceProxy> instantiatePlugin(WebNetscapePluginPackage *, WebHostedNetscapePluginView *, NSString *mimeType, NSArray *attributeKeys, NSArray *attributeValues, NSString *userAgent, NSURL *sourceURL);
+
+ void pluginHostDied(NetscapePluginHostProxy*);
+
+private:
+ NetscapePluginHostProxy* hostForPackage(WebNetscapePluginPackage *);
+
+ NetscapePluginHostManager();
+ ~NetscapePluginHostManager();
+
+ bool spawnPluginHost(WebNetscapePluginPackage *, mach_port_t clientPort, mach_port_t& pluginHostPort);
+
+ bool initializeVendorPort();
+
+ mach_port_t m_pluginVendorPort;
+
+ // FIXME: This should really be a HashMap of RetainPtrs, but that doesn't work right now.
+ typedef HashMap<WebNetscapePluginPackage*, NetscapePluginHostProxy*> PluginHostMap;
+ PluginHostMap m_pluginHosts;
+};
+
+} // namespace WebKit
+
+#endif // NetscapePluginHostManager_h
+#endif // USE(PLUGIN_HOST_PROCESS)
diff --git a/WebKit/mac/Plugins/Hosted/NetscapePluginHostManager.mm b/WebKit/mac/Plugins/Hosted/NetscapePluginHostManager.mm
new file mode 100644
index 0000000..9cedc42
--- /dev/null
+++ b/WebKit/mac/Plugins/Hosted/NetscapePluginHostManager.mm
@@ -0,0 +1,234 @@
+/*
+ * Copyright (C) 2008 Apple Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if USE(PLUGIN_HOST_PROCESS)
+
+#import "NetscapePluginHostManager.h"
+
+#import "NetscapePluginHostProxy.h"
+#import "NetscapePluginInstanceProxy.h"
+#import "WebKitSystemInterface.h"
+#import "WebNetscapePluginPackage.h"
+#import <mach/mach_port.h>
+#import <servers/bootstrap.h>
+#import <wtf/Assertions.h>
+#import <wtf/RetainPtr.h>
+#import <wtf/StdLibExtras.h>
+
+extern "C" {
+#import "WebKitPluginAgent.h"
+#import "WebKitPluginHost.h"
+}
+
+using namespace std;
+
+namespace WebKit {
+
+NetscapePluginHostManager& NetscapePluginHostManager::shared()
+{
+ DEFINE_STATIC_LOCAL(NetscapePluginHostManager, pluginHostManager, ());
+
+ return pluginHostManager;
+}
+
+static const NSString *pluginHostAppName = @"WebKitPluginHost.app";
+
+NetscapePluginHostManager::NetscapePluginHostManager()
+ : m_pluginVendorPort(MACH_PORT_NULL)
+{
+}
+
+NetscapePluginHostManager::~NetscapePluginHostManager()
+{
+}
+
+NetscapePluginHostProxy* NetscapePluginHostManager::hostForPackage(WebNetscapePluginPackage *package)
+{
+ pair<PluginHostMap::iterator, bool> result = m_pluginHosts.add(package, 0);
+
+ // The package was already in the map, just return it.
+ if (!result.second)
+ return result.first->second;
+
+ mach_port_t clientPort;
+ if (mach_port_allocate(mach_task_self(), MACH_PORT_RIGHT_RECEIVE, &clientPort) != KERN_SUCCESS)
+ return 0;
+
+ mach_port_t pluginHostPort;
+ if (!spawnPluginHost(package, clientPort, pluginHostPort)) {
+ mach_port_destroy(mach_task_self(), clientPort);
+ return 0;
+ }
+
+ NetscapePluginHostProxy* hostProxy = new NetscapePluginHostProxy(clientPort, pluginHostPort);
+
+ CFRetain(package);
+ result.first->second = hostProxy;
+
+ return hostProxy;
+}
+
+bool NetscapePluginHostManager::spawnPluginHost(WebNetscapePluginPackage *package, mach_port_t clientPort, mach_port_t& pluginHostPort)
+{
+ if (m_pluginVendorPort == MACH_PORT_NULL) {
+ if (!initializeVendorPort())
+ return false;
+ }
+
+ mach_port_t renderServerPort = WKInitializeRenderServer();
+ if (renderServerPort == MACH_PORT_NULL)
+ return false;
+
+ NSString *pluginHostAppPath = [[NSBundle bundleWithIdentifier:@"com.apple.WebKit"] pathForAuxiliaryExecutable:pluginHostAppName];
+ NSString *pluginHostAppExecutablePath = [[NSBundle bundleWithPath:pluginHostAppPath] executablePath];
+
+ NSDictionary *launchProperties = [[NSDictionary alloc] initWithObjectsAndKeys:
+ pluginHostAppExecutablePath, @"pluginHostPath",
+ [NSNumber numberWithInt:[package pluginHostArchitecture]], @"cpuType",
+ nil];
+
+ NSData *data = [NSPropertyListSerialization dataFromPropertyList:launchProperties format:NSPropertyListBinaryFormat_v1_0 errorDescription:0];
+ ASSERT(data);
+
+ [launchProperties release];
+
+ kern_return_t kr = _WKPASpawnPluginHost(m_pluginVendorPort, reinterpret_cast<uint8_t*>(const_cast<void*>([data bytes])), [data length], &pluginHostPort);
+
+ if (kr != KERN_SUCCESS) {
+ // FIXME: Check for invalid dest and try to re-spawn the plug-in agent.
+ LOG_ERROR("Failed to spawn plug-in host, error %x", kr);
+ return false;
+ }
+
+ NSDictionary *hostProperties = [[NSDictionary alloc] initWithObjectsAndKeys:
+ [package path], @"bundlePath",
+ nil];
+
+ data = [NSPropertyListSerialization dataFromPropertyList:hostProperties format:NSPropertyListBinaryFormat_v1_0 errorDescription:nil];
+ ASSERT(data);
+
+ [hostProperties release];
+
+ kr = _WKPHCheckInWithPluginHost(pluginHostPort, (uint8_t*)[data bytes], [data length], clientPort, renderServerPort);
+
+ if (kr != KERN_SUCCESS) {
+ mach_port_deallocate(mach_task_self(), pluginHostPort);
+ LOG_ERROR("Failed to check in with plug-in host, error %x", kr);
+
+ return false;
+ }
+
+ return true;
+}
+
+bool NetscapePluginHostManager::initializeVendorPort()
+{
+ ASSERT(m_pluginVendorPort == MACH_PORT_NULL);
+
+ // Get the plug-in agent port.
+ mach_port_t pluginAgentPort;
+ if (bootstrap_look_up(bootstrap_port, "com.apple.WebKit.PluginAgent", &pluginAgentPort) != KERN_SUCCESS) {
+ LOG_ERROR("Failed to look up the plug-in agent port");
+ return false;
+ }
+
+ NSData *appNameData = [[[NSProcessInfo processInfo] processName] dataUsingEncoding:NSUTF8StringEncoding];
+
+ // Tell the plug-in agent that we exist.
+ if (_WKPACheckInApplication(pluginAgentPort, (uint8_t*)[appNameData bytes], [appNameData length], &m_pluginVendorPort) != KERN_SUCCESS)
+ return false;
+
+ // FIXME: Should we add a notification for when the vendor port dies?
+
+ return true;
+}
+
+void NetscapePluginHostManager::pluginHostDied(NetscapePluginHostProxy* pluginHost)
+{
+ PluginHostMap::iterator end = m_pluginHosts.end();
+
+ // This has O(n) complexity but the number of active plug-in hosts is very small so it shouldn't matter.
+ for (PluginHostMap::iterator it = m_pluginHosts.begin(); it != end; ++it) {
+ if (it->second == pluginHost) {
+ m_pluginHosts.remove(it);
+ return;
+ }
+ }
+}
+
+PassRefPtr<NetscapePluginInstanceProxy> NetscapePluginHostManager::instantiatePlugin(WebNetscapePluginPackage *pluginPackage, WebHostedNetscapePluginView *pluginView, NSString *mimeType, NSArray *attributeKeys, NSArray *attributeValues, NSString *userAgent, NSURL *sourceURL)
+{
+ NetscapePluginHostProxy* hostProxy = hostForPackage(pluginPackage);
+ if (!hostProxy)
+ return 0;
+
+ RetainPtr<NSMutableDictionary> properties(AdoptNS, [[NSMutableDictionary alloc] init]);
+
+ if (mimeType)
+ [properties.get() setObject:mimeType forKey:@"mimeType"];
+
+ ASSERT_ARG(userAgent, userAgent);
+ [properties.get() setObject:userAgent forKey:@"userAgent"];
+
+ ASSERT_ARG(attributeKeys, attributeKeys);
+ [properties.get() setObject:attributeKeys forKey:@"attributeKeys"];
+
+ ASSERT_ARG(attributeValues, attributeValues);
+ [properties.get() setObject:attributeValues forKey:@"attributeValues"];
+
+ if (sourceURL)
+ [properties.get() setObject:[sourceURL absoluteString] forKey:@"sourceURL"];
+
+ NSData *data = [NSPropertyListSerialization dataFromPropertyList:properties.get() format:NSPropertyListBinaryFormat_v1_0 errorDescription:nil];
+ ASSERT(data);
+
+ RefPtr<NetscapePluginInstanceProxy> instance = NetscapePluginInstanceProxy::create(hostProxy, pluginView);
+ kern_return_t kr = _WKPHInstantiatePlugin(hostProxy->port(), (uint8_t*)[data bytes], [data length], instance->pluginID());
+ if (kr == MACH_SEND_INVALID_DEST) {
+ // The plug-in host must have died, but we haven't received the death notification yet.
+ pluginHostDied(hostProxy);
+
+ // Try to spawn it again.
+ hostProxy = hostForPackage(pluginPackage);
+
+ kr = _WKPHInstantiatePlugin(hostProxy->port(), (uint8_t*)[data bytes], [data length], instance->pluginID());
+ }
+
+ auto_ptr<NetscapePluginInstanceProxy::InstantiatePluginReply> reply = instance->waitForReply<NetscapePluginInstanceProxy::InstantiatePluginReply>();
+ if (!reply.get())
+ return 0;
+
+ if (reply->m_resultCode != KERN_SUCCESS)
+ return 0;
+
+ instance->setRenderContextID(reply->m_renderContextID);
+ instance->setUseSoftwareRenderer(reply->m_useSoftwareRenderer);
+
+ return instance.release();
+}
+
+} // namespace WebKit
+
+#endif // USE(PLUGIN_HOST_PROCESS)
diff --git a/WebKit/mac/Plugins/Hosted/NetscapePluginHostProxy.h b/WebKit/mac/Plugins/Hosted/NetscapePluginHostProxy.h
new file mode 100644
index 0000000..c597eec
--- /dev/null
+++ b/WebKit/mac/Plugins/Hosted/NetscapePluginHostProxy.h
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2008 Apple Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if USE(PLUGIN_HOST_PROCESS)
+
+#ifndef NetscapePluginHostProxy_h
+#define NetscapePluginHostProxy_h
+
+#include <dispatch/dispatch.h>
+#include <wtf/HashMap.h>
+#include <wtf/RetainPtr.h>
+#include <wtf/PassRefPtr.h>
+
+namespace WebKit {
+
+class NetscapePluginInstanceProxy;
+
+class NetscapePluginHostProxy {
+public:
+ NetscapePluginHostProxy(mach_port_t clientPort, mach_port_t pluginHostPort);
+
+ mach_port_t port() const { return m_pluginHostPort; }
+ mach_port_t clientPort() const { return m_clientPort; }
+
+ void addPluginInstance(NetscapePluginInstanceProxy*);
+ void removePluginInstance(NetscapePluginInstanceProxy*);
+
+ NetscapePluginInstanceProxy* pluginInstance(uint32_t pluginID);
+
+ void setMenuBarVisible(bool);
+ void setModal(bool);
+
+private:
+ ~NetscapePluginHostProxy();
+ void pluginHostDied();
+
+ static void deadNameNotificationCallback(CFMachPortRef port, void *msg, CFIndex size, void *info);
+
+ typedef HashMap<uint32_t, RefPtr<NetscapePluginInstanceProxy> > PluginInstanceMap;
+ PluginInstanceMap m_instances;
+
+ mach_port_t m_clientPort;
+#ifdef USE_LIBDISPATCH
+ dispatch_source_t m_clientPortSource;
+#else
+ RetainPtr<CFRunLoopSourceRef> m_clientPortSource;
+#endif
+ mach_port_t m_pluginHostPort;
+ RetainPtr<CFMachPortRef> m_deadNameNotificationPort;
+
+ RetainPtr<NSWindow *> m_placeholderWindow;
+ unsigned m_modalCount;
+
+ bool m_menuBarIsVisible;
+};
+
+} // namespace WebKit
+
+#endif // NetscapePluginHostProxy_h
+#endif // USE(PLUGIN_HOST_PROCESS)
diff --git a/WebKit/mac/Plugins/Hosted/NetscapePluginHostProxy.mm b/WebKit/mac/Plugins/Hosted/NetscapePluginHostProxy.mm
new file mode 100644
index 0000000..14af429
--- /dev/null
+++ b/WebKit/mac/Plugins/Hosted/NetscapePluginHostProxy.mm
@@ -0,0 +1,635 @@
+/*
+ * Copyright (C) 2008 Apple Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if USE(PLUGIN_HOST_PROCESS)
+
+#import "NetscapePluginHostProxy.h"
+
+#import <mach/mach.h>
+#import <wtf/StdLibExtras.h>
+
+#import "HostedNetscapePluginStream.h"
+#import "NetscapePluginHostManager.h"
+#import "NetscapePluginInstanceProxy.h"
+#import "WebFrameInternal.h"
+#import "WebHostedNetscapePluginView.h"
+#import "WebKitSystemInterface.h"
+#import <WebCore/Frame.h>
+#import <WebCore/ScriptController.h>
+#import <WebCore/npruntime_impl.h>
+
+extern "C" {
+#import "WebKitPluginHost.h"
+#import "WebKitPluginClientServer.h"
+}
+
+using namespace std;
+using namespace JSC;
+using namespace WebCore;
+
+namespace WebKit {
+
+static String fromUTF8WithLatin1Fallback(const char* data, int length = -1)
+{
+ if (length == -1)
+ length = strlen(data);
+
+ String result = String::fromUTF8(data, length);
+
+ if (result.isNull())
+ result = String(data, length);
+
+ return result;
+}
+
+typedef HashMap<mach_port_t, NetscapePluginHostProxy*> PluginProxyMap;
+static PluginProxyMap& pluginProxyMap()
+{
+ DEFINE_STATIC_LOCAL(PluginProxyMap, pluginProxyMap, ());
+
+ return pluginProxyMap;
+}
+
+NetscapePluginHostProxy::NetscapePluginHostProxy(mach_port_t clientPort, mach_port_t pluginHostPort)
+ : m_clientPort(clientPort)
+ , m_pluginHostPort(pluginHostPort)
+ , m_modalCount(0)
+ , m_menuBarIsVisible(true)
+{
+ pluginProxyMap().add(m_clientPort, this);
+
+ // FIXME: We should use libdispatch for this.
+ CFMachPortContext context = { 0, this, 0, 0, 0 };
+ m_deadNameNotificationPort.adoptCF(CFMachPortCreate(0, deadNameNotificationCallback, &context, 0));
+
+ mach_port_t previous;
+ mach_port_request_notification(mach_task_self(), pluginHostPort, MACH_NOTIFY_DEAD_NAME, 0,
+ CFMachPortGetPort(m_deadNameNotificationPort.get()), MACH_MSG_TYPE_MAKE_SEND_ONCE, &previous);
+ ASSERT(previous == MACH_PORT_NULL);
+
+ RetainPtr<CFRunLoopSourceRef> deathPortSource(AdoptCF, CFMachPortCreateRunLoopSource(0, m_deadNameNotificationPort.get(), 0));
+
+ CFRunLoopAddSource(CFRunLoopGetCurrent(), deathPortSource.get(), kCFRunLoopDefaultMode);
+
+#ifdef USE_LIBDISPATCH
+ // FIXME: Unfortunately we can't use a dispatch source here until <rdar://problem/6393180> has been resolved.
+ m_clientPortSource = dispatch_source_mig_create(m_clientPort, WKPCWebKitPluginClient_subsystem.maxsize, 0,
+ dispatch_get_main_queue(), WebKitPluginClient_server);
+#else
+ m_clientPortSource.adoptCF(WKCreateMIGServerSource((mig_subsystem_t)&WKPCWebKitPluginClient_subsystem, m_clientPort));
+ CFRunLoopAddSource(CFRunLoopGetCurrent(), m_clientPortSource.get(), kCFRunLoopDefaultMode);
+#endif
+}
+
+NetscapePluginHostProxy::~NetscapePluginHostProxy()
+{
+ pluginProxyMap().remove(m_clientPort);
+
+ ASSERT(m_clientPortSource);
+#ifdef USE_LIBDISPATCH
+ dispatch_release(m_clientPortSource);
+#else
+ CFRunLoopSourceInvalidate(m_clientPortSource.get());
+ m_clientPortSource = 0;
+#endif
+}
+
+void NetscapePluginHostProxy::pluginHostDied()
+{
+ PluginInstanceMap instances;
+ m_instances.swap(instances);
+
+ PluginInstanceMap::const_iterator end = instances.end();
+ for (PluginInstanceMap::const_iterator it = instances.begin(); it != end; ++it)
+ it->second->pluginHostDied();
+
+ NetscapePluginHostManager::shared().pluginHostDied(this);
+
+ // The plug-in crashed while its menu bar was hidden. Make sure to show it.
+ if (m_menuBarIsVisible)
+ setMenuBarVisible(true);
+
+ // The plug-in crashed while it had a modal dialog up.
+ if (m_modalCount) {
+ m_modalCount = 1;
+
+ setModal(false);
+ }
+
+ delete this;
+}
+
+void NetscapePluginHostProxy::addPluginInstance(NetscapePluginInstanceProxy* instance)
+{
+ ASSERT(!m_instances.contains(instance->pluginID()));
+
+ m_instances.set(instance->pluginID(), instance);
+}
+
+void NetscapePluginHostProxy::removePluginInstance(NetscapePluginInstanceProxy* instance)
+{
+ ASSERT(m_instances.get(instance->pluginID()) == instance);
+
+ m_instances.remove(instance->pluginID());
+}
+
+NetscapePluginInstanceProxy* NetscapePluginHostProxy::pluginInstance(uint32_t pluginID)
+{
+ return m_instances.get(pluginID).get();
+}
+
+void NetscapePluginHostProxy::deadNameNotificationCallback(CFMachPortRef port, void *msg, CFIndex size, void *info)
+{
+ ASSERT(msg && static_cast<mach_msg_header_t*>(msg)->msgh_id == MACH_NOTIFY_DEAD_NAME);
+
+ static_cast<NetscapePluginHostProxy*>(info)->pluginHostDied();
+}
+
+void NetscapePluginHostProxy::setMenuBarVisible(bool visible)
+{
+ m_menuBarIsVisible = visible;
+
+ [NSMenu setMenuBarVisible:visible];
+ if (visible) {
+ // Make ourselves the front app
+ ProcessSerialNumber psn;
+ GetCurrentProcess(&psn);
+ SetFrontProcess(&psn);
+ }
+}
+
+void NetscapePluginHostProxy::setModal(bool modal)
+{
+ if (modal) {
+ if (!m_modalCount++) {
+ ASSERT(!m_placeholderWindow);
+
+ m_placeholderWindow.adoptNS([[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 1, 1) styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES]);
+
+ // We need to be able to get the setModal(false) call from the plug-in host.
+ CFRunLoopAddSource(CFRunLoopGetCurrent(), m_clientPortSource.get(), (CFStringRef)NSModalPanelRunLoopMode);
+
+ [NSApp runModalForWindow:m_placeholderWindow.get()];
+ }
+ } else {
+ if (!--m_modalCount) {
+ ASSERT(m_placeholderWindow);
+
+ CFRunLoopRemoveSource(CFRunLoopGetCurrent(), m_clientPortSource.get(), (CFStringRef)NSModalPanelRunLoopMode);
+
+ [NSApp stopModal];
+ [m_placeholderWindow.get() orderOut:nil];
+ m_placeholderWindow = 0;
+
+ // Make ourselves the front process.
+ ProcessSerialNumber psn;
+ GetCurrentProcess(&psn);
+ SetFrontProcess(&psn);
+ }
+ }
+}
+
+} // namespace WebKit
+
+using namespace WebKit;
+
+// MiG callbacks
+kern_return_t WKPCStatusText(mach_port_t clientPort, uint32_t pluginID, data_t text, mach_msg_type_number_t textCnt)
+{
+ NetscapePluginHostProxy* hostProxy = pluginProxyMap().get(clientPort);
+ if (!hostProxy)
+ return KERN_FAILURE;
+
+ NetscapePluginInstanceProxy* instanceProxy = hostProxy->pluginInstance(pluginID);
+ if (!instanceProxy)
+ return KERN_FAILURE;
+
+ instanceProxy->status(text);
+ return KERN_SUCCESS;
+}
+
+kern_return_t WKPCLoadURL(mach_port_t clientPort, uint32_t pluginID, data_t url, mach_msg_type_number_t urlLength, data_t target, mach_msg_type_number_t targetLength,
+ data_t postData, mach_msg_type_number_t postDataLength, uint32_t flags,
+ uint16_t* outResult, uint32_t* outStreamID)
+{
+ NetscapePluginHostProxy* hostProxy = pluginProxyMap().get(clientPort);
+ if (!hostProxy)
+ return KERN_FAILURE;
+
+ NetscapePluginInstanceProxy* instanceProxy = hostProxy->pluginInstance(pluginID);
+ if (!instanceProxy)
+ return KERN_FAILURE;
+
+ uint32_t streamID = 0;
+ NPError result = instanceProxy->loadURL(url, target, postData, postDataLength, static_cast<LoadURLFlags>(flags), streamID);
+
+ *outResult = result;
+ *outStreamID = streamID;
+ return KERN_SUCCESS;
+}
+
+kern_return_t WKPCCancelLoadURL(mach_port_t clientPort, uint32_t pluginID, uint32_t streamID, int16_t reason)
+{
+ NetscapePluginHostProxy* hostProxy = pluginProxyMap().get(clientPort);
+ if (!hostProxy)
+ return KERN_FAILURE;
+
+ NetscapePluginInstanceProxy* instanceProxy = hostProxy->pluginInstance(pluginID);
+ if (!instanceProxy)
+ return KERN_FAILURE;
+
+ HostedNetscapePluginStream* pluginStream = instanceProxy->pluginStream(streamID);
+ if (!pluginStream)
+ return KERN_FAILURE;
+
+ pluginStream->cancelLoad(reason);
+ return KERN_SUCCESS;
+}
+
+kern_return_t WKPCInvalidateRect(mach_port_t clientPort, uint32_t pluginID, double x, double y, double width, double height)
+{
+ NetscapePluginHostProxy* hostProxy = pluginProxyMap().get(clientPort);
+ if (!hostProxy)
+ return KERN_FAILURE;
+
+ NetscapePluginInstanceProxy* instanceProxy = hostProxy->pluginInstance(pluginID);
+ if (!instanceProxy)
+ return KERN_FAILURE;
+
+ [instanceProxy->pluginView() setNeedsDisplayInRect:NSMakeRect(x, y, width, height)];
+
+ return KERN_SUCCESS;
+}
+
+kern_return_t WKPCGetScriptableNPObjectReply(mach_port_t clientPort, uint32_t pluginID, uint32_t objectID)
+{
+ NetscapePluginHostProxy* hostProxy = pluginProxyMap().get(clientPort);
+ if (!hostProxy)
+ return KERN_FAILURE;
+
+ NetscapePluginInstanceProxy* instanceProxy = hostProxy->pluginInstance(pluginID);
+ if (!instanceProxy)
+ return KERN_FAILURE;
+
+ instanceProxy->setCurrentReply(new NetscapePluginInstanceProxy::GetScriptableNPObjectReply(objectID));
+ return KERN_SUCCESS;
+}
+
+kern_return_t WKPCBooleanReply(mach_port_t clientPort, uint32_t pluginID, boolean_t result)
+{
+ NetscapePluginHostProxy* hostProxy = pluginProxyMap().get(clientPort);
+ if (!hostProxy)
+ return KERN_FAILURE;
+
+ NetscapePluginInstanceProxy* instanceProxy = hostProxy->pluginInstance(pluginID);
+ if (!instanceProxy)
+ return KERN_FAILURE;
+
+ instanceProxy->setCurrentReply(new NetscapePluginInstanceProxy::BooleanReply(result));
+ return KERN_SUCCESS;
+}
+
+kern_return_t WKPCBooleanAndDataReply(mach_port_t clientPort, uint32_t pluginID, boolean_t returnValue, data_t resultData, mach_msg_type_number_t resultLength)
+{
+ NetscapePluginHostProxy* hostProxy = pluginProxyMap().get(clientPort);
+ if (!hostProxy)
+ return KERN_FAILURE;
+
+ NetscapePluginInstanceProxy* instanceProxy = hostProxy->pluginInstance(pluginID);
+ if (!instanceProxy)
+ return KERN_FAILURE;
+
+ RetainPtr<CFDataRef> result = CFDataCreate(0, reinterpret_cast<UInt8*>(resultData), resultLength);
+ instanceProxy->setCurrentReply(new NetscapePluginInstanceProxy::BooleanAndDataReply(returnValue, result));
+
+ return KERN_SUCCESS;
+}
+
+kern_return_t WKPCInstantiatePluginReply(mach_port_t clientPort, uint32_t pluginID, kern_return_t result, uint32_t renderContextID, boolean_t useSoftwareRenderer)
+{
+ NetscapePluginHostProxy* hostProxy = pluginProxyMap().get(clientPort);
+ if (!hostProxy)
+ return KERN_FAILURE;
+
+ NetscapePluginInstanceProxy* instanceProxy = hostProxy->pluginInstance(pluginID);
+ if (!instanceProxy)
+ return KERN_FAILURE;
+
+ instanceProxy->setCurrentReply(new NetscapePluginInstanceProxy::InstantiatePluginReply(result, renderContextID, useSoftwareRenderer));
+ return KERN_SUCCESS;
+}
+
+kern_return_t WKPCGetWindowNPObject(mach_port_t clientPort, uint32_t pluginID, uint32_t* outObjectID)
+{
+ NetscapePluginHostProxy* hostProxy = pluginProxyMap().get(clientPort);
+ if (!hostProxy)
+ return KERN_FAILURE;
+
+ NetscapePluginInstanceProxy* instanceProxy = hostProxy->pluginInstance(pluginID);
+ if (!instanceProxy)
+ return KERN_FAILURE;
+
+ uint32_t objectID;
+ if (!instanceProxy->getWindowNPObject(objectID))
+ return KERN_FAILURE;
+
+ *outObjectID = objectID;
+ return KERN_SUCCESS;
+}
+
+kern_return_t WKPCReleaseObject(mach_port_t clientPort, uint32_t pluginID, uint32_t objectID)
+{
+ NetscapePluginHostProxy* hostProxy = pluginProxyMap().get(clientPort);
+ if (!hostProxy)
+ return KERN_FAILURE;
+
+ NetscapePluginInstanceProxy* instanceProxy = hostProxy->pluginInstance(pluginID);
+ if (!instanceProxy)
+ return KERN_FAILURE;
+
+ instanceProxy->releaseObject(objectID);
+ return KERN_SUCCESS;
+}
+
+kern_return_t WKPCEvaluate(mach_port_t clientPort, uint32_t pluginID, uint32_t objectID, data_t scriptData, mach_msg_type_number_t scriptLength)
+{
+ NetscapePluginHostProxy* hostProxy = pluginProxyMap().get(clientPort);
+ if (!hostProxy)
+ return KERN_FAILURE;
+
+ NetscapePluginInstanceProxy* instanceProxy = hostProxy->pluginInstance(pluginID);
+ if (!instanceProxy)
+ return KERN_FAILURE;
+
+ String script = fromUTF8WithLatin1Fallback(scriptData, scriptLength);
+
+ data_t resultData;
+ mach_msg_type_number_t resultLength;
+
+ boolean_t returnValue = instanceProxy->evaluate(objectID, script, resultData, resultLength);
+
+ _WKPHEvaluateReply(hostProxy->port(), instanceProxy->pluginID(), returnValue, resultData, resultLength);
+ mig_deallocate(reinterpret_cast<vm_address_t>(resultData), resultLength);
+
+ return KERN_SUCCESS;
+}
+
+kern_return_t WKPCGetStringIdentifier(mach_port_t clientPort, data_t name, mach_msg_type_number_t nameCnt, uint64_t* identifier)
+{
+ COMPILE_ASSERT(sizeof(*identifier) == sizeof(NPIdentifier), identifier_sizes);
+
+ *identifier = reinterpret_cast<uint64_t>(_NPN_GetStringIdentifier(name));
+ return KERN_SUCCESS;
+}
+
+kern_return_t WKPCGetIntIdentifier(mach_port_t clientPort, int32_t value, uint64_t* identifier)
+{
+ COMPILE_ASSERT(sizeof(*identifier) == sizeof(NPIdentifier), identifier_sizes);
+
+ *identifier = reinterpret_cast<uint64_t>(_NPN_GetIntIdentifier(value));
+ return KERN_SUCCESS;
+}
+
+static Identifier identifierFromServerIdentifier(uint64_t serverIdentifier)
+{
+ NPIdentifier identifier = reinterpret_cast<NPIdentifier>(serverIdentifier);
+ ASSERT(_NPN_IdentifierIsString(identifier));
+
+ String s = fromUTF8WithLatin1Fallback(_NPN_UTF8FromIdentifier(identifier));
+
+ return Identifier(JSDOMWindow::commonJSGlobalData(), s);
+}
+
+kern_return_t WKPCInvoke(mach_port_t clientPort, uint32_t pluginID, uint32_t objectID, uint64_t identifier,
+ data_t argumentsData, mach_msg_type_number_t argumentsLength)
+{
+ NetscapePluginHostProxy* hostProxy = pluginProxyMap().get(clientPort);
+ if (!hostProxy)
+ return KERN_FAILURE;
+
+ NetscapePluginInstanceProxy* instanceProxy = hostProxy->pluginInstance(pluginID);
+ if (!instanceProxy)
+ return KERN_FAILURE;
+
+ Identifier methodNameIdentifier = identifierFromServerIdentifier(identifier);
+
+ data_t resultData;
+ mach_msg_type_number_t resultLength;
+
+ boolean_t returnValue = instanceProxy->invoke(objectID, methodNameIdentifier, argumentsData, argumentsLength, resultData, resultLength);
+
+ _WKPHEvaluateReply(hostProxy->port(), instanceProxy->pluginID(), returnValue, resultData, resultLength);
+ mig_deallocate(reinterpret_cast<vm_address_t>(resultData), resultLength);
+
+ return KERN_SUCCESS;
+}
+
+kern_return_t WKPCInvokeDefault(mach_port_t clientPort, uint32_t pluginID, uint32_t objectID,
+ data_t argumentsData, mach_msg_type_number_t argumentsLength,
+ boolean_t*returnValue, data_t* resultData, mach_msg_type_number_t* resultLength)
+{
+ NetscapePluginHostProxy* hostProxy = pluginProxyMap().get(clientPort);
+ if (!hostProxy)
+ return KERN_FAILURE;
+
+ NetscapePluginInstanceProxy* instanceProxy = hostProxy->pluginInstance(pluginID);
+ if (!instanceProxy)
+ return KERN_FAILURE;
+
+ *returnValue = instanceProxy->invokeDefault(objectID, argumentsData, argumentsLength, *resultData, *resultLength);
+
+ return KERN_SUCCESS;
+}
+
+kern_return_t WKPCConstruct(mach_port_t clientPort, uint32_t pluginID, uint32_t objectID,
+ data_t argumentsData, mach_msg_type_number_t argumentsLength,
+ boolean_t*returnValue, data_t* resultData, mach_msg_type_number_t* resultLength)
+{
+ NetscapePluginHostProxy* hostProxy = pluginProxyMap().get(clientPort);
+ if (!hostProxy)
+ return KERN_FAILURE;
+
+ NetscapePluginInstanceProxy* instanceProxy = hostProxy->pluginInstance(pluginID);
+ if (!instanceProxy)
+ return KERN_FAILURE;
+
+ *returnValue = instanceProxy->construct(objectID, argumentsData, argumentsLength, *resultData, *resultLength);
+
+ return KERN_SUCCESS;
+}
+
+kern_return_t WKPCGetProperty(mach_port_t clientPort, uint32_t pluginID, uint32_t objectID, uint64_t identifier, boolean_t*returnValue, data_t* resultData, mach_msg_type_number_t* resultLength)
+{
+ NetscapePluginHostProxy* hostProxy = pluginProxyMap().get(clientPort);
+ if (!hostProxy)
+ return KERN_FAILURE;
+
+ NetscapePluginInstanceProxy* instanceProxy = hostProxy->pluginInstance(pluginID);
+ if (!instanceProxy)
+ return KERN_FAILURE;
+
+ NPIdentifier npIdentifier = reinterpret_cast<NPIdentifier>(identifier);
+ if (_NPN_IdentifierIsString(npIdentifier)) {
+ const NPUTF8* propertyName = _NPN_UTF8FromIdentifier(npIdentifier);
+ String propertyNameString = fromUTF8WithLatin1Fallback(propertyName);
+
+ Identifier propertyNameIdentifier = identifierFromServerIdentifier(identifier);
+ *returnValue = instanceProxy->getProperty(objectID, propertyNameIdentifier, *resultData, *resultLength);
+ } else
+ *returnValue = instanceProxy->setProperty(objectID, _NPN_IntFromIdentifier(npIdentifier), *resultData, *resultLength);
+
+ return KERN_SUCCESS;
+}
+
+kern_return_t WKPCSetProperty(mach_port_t clientPort, uint32_t pluginID, uint32_t objectID, uint64_t identifier, data_t valueData, mach_msg_type_number_t valueLength, boolean_t*returnValue)
+{
+ NetscapePluginHostProxy* hostProxy = pluginProxyMap().get(clientPort);
+ if (!hostProxy)
+ return KERN_FAILURE;
+
+ NetscapePluginInstanceProxy* instanceProxy = hostProxy->pluginInstance(pluginID);
+ if (!instanceProxy)
+ return KERN_FAILURE;
+
+ NPIdentifier npIdentifier = reinterpret_cast<NPIdentifier>(identifier);
+ if (_NPN_IdentifierIsString(npIdentifier)) {
+ const NPUTF8* propertyName = _NPN_UTF8FromIdentifier(npIdentifier);
+ String propertyNameString = fromUTF8WithLatin1Fallback(propertyName);
+
+ Identifier propertyNameIdentifier = identifierFromServerIdentifier(identifier);
+ *returnValue = instanceProxy->setProperty(objectID, propertyNameIdentifier, valueData, valueLength);
+ } else
+ *returnValue = instanceProxy->setProperty(objectID, _NPN_IntFromIdentifier(npIdentifier), valueData, valueLength);
+
+ return KERN_SUCCESS;
+}
+
+kern_return_t WKPCRemoveProperty(mach_port_t clientPort, uint32_t pluginID, uint32_t objectID, uint64_t identifier, boolean_t*returnValue)
+{
+ NetscapePluginHostProxy* hostProxy = pluginProxyMap().get(clientPort);
+ if (!hostProxy)
+ return KERN_FAILURE;
+
+ NetscapePluginInstanceProxy* instanceProxy = hostProxy->pluginInstance(pluginID);
+ if (!instanceProxy)
+ return KERN_FAILURE;
+
+ NPIdentifier npIdentifier = reinterpret_cast<NPIdentifier>(identifier);
+ if (_NPN_IdentifierIsString(npIdentifier)) {
+ const NPUTF8* propertyName = _NPN_UTF8FromIdentifier(npIdentifier);
+ String propertyNameString = fromUTF8WithLatin1Fallback(propertyName);
+
+ Identifier propertyNameIdentifier = identifierFromServerIdentifier(identifier);
+ *returnValue = instanceProxy->removeProperty(objectID, propertyNameIdentifier);
+ } else
+ *returnValue = instanceProxy->removeProperty(objectID, _NPN_IntFromIdentifier(npIdentifier));
+
+ return KERN_SUCCESS;
+}
+
+kern_return_t WKPCHasProperty(mach_port_t clientPort, uint32_t pluginID, uint32_t objectID, uint64_t identifier, boolean_t*returnValue)
+{
+ NetscapePluginHostProxy* hostProxy = pluginProxyMap().get(clientPort);
+ if (!hostProxy)
+ return KERN_FAILURE;
+
+ NetscapePluginInstanceProxy* instanceProxy = hostProxy->pluginInstance(pluginID);
+ if (!instanceProxy)
+ return KERN_FAILURE;
+
+ NPIdentifier npIdentifier = reinterpret_cast<NPIdentifier>(identifier);
+ if (_NPN_IdentifierIsString(npIdentifier)) {
+ const NPUTF8* propertyName = _NPN_UTF8FromIdentifier(npIdentifier);
+ String propertyNameString = fromUTF8WithLatin1Fallback(propertyName);
+
+ Identifier propertyNameIdentifier = identifierFromServerIdentifier(identifier);
+ *returnValue = instanceProxy->hasProperty(objectID, propertyNameIdentifier);
+ } else
+ *returnValue = instanceProxy->hasProperty(objectID, _NPN_IntFromIdentifier(npIdentifier));
+
+ return KERN_SUCCESS;
+}
+
+kern_return_t WKPCHasMethod(mach_port_t clientPort, uint32_t pluginID, uint32_t objectID, uint64_t identifier, boolean_t*returnValue)
+{
+ NetscapePluginHostProxy* hostProxy = pluginProxyMap().get(clientPort);
+ if (!hostProxy)
+ return KERN_FAILURE;
+
+ NetscapePluginInstanceProxy* instanceProxy = hostProxy->pluginInstance(pluginID);
+ if (!instanceProxy)
+ return KERN_FAILURE;
+
+ Identifier methodNameIdentifier = identifierFromServerIdentifier(identifier);
+ *returnValue = instanceProxy->hasMethod(objectID, methodNameIdentifier);
+
+ return KERN_SUCCESS;
+}
+
+kern_return_t WKPCIdentifierInfo(mach_port_t clientPort, uint64_t serverIdentifier, data_t* infoData, mach_msg_type_number_t* infoLength)
+{
+ NPIdentifier identifier = reinterpret_cast<NPIdentifier>(serverIdentifier);
+
+ id info;
+ if (_NPN_IdentifierIsString(identifier)) {
+ char* s = _NPN_UTF8FromIdentifier(identifier);
+ info = [NSData dataWithBytesNoCopy:s length:strlen(s) freeWhenDone:NO];
+ } else
+ info = [NSNumber numberWithInt:_NPN_IntFromIdentifier(identifier)];
+
+ RetainPtr<NSData*> data = [NSPropertyListSerialization dataFromPropertyList:info format:NSPropertyListBinaryFormat_v1_0 errorDescription:0];
+ ASSERT(data);
+
+ *infoLength = [data.get() length];
+ mig_allocate(reinterpret_cast<vm_address_t*>(infoData), *infoLength);
+
+ memcpy(*infoData, [data.get() bytes], *infoLength);
+
+ return KERN_SUCCESS;
+}
+
+kern_return_t WKPCSetMenuBarVisible(mach_port_t clientPort, boolean_t menuBarVisible)
+{
+ NetscapePluginHostProxy* hostProxy = pluginProxyMap().get(clientPort);
+ if (!hostProxy)
+ return KERN_FAILURE;
+
+ hostProxy->setMenuBarVisible(menuBarVisible);
+
+ return KERN_SUCCESS;
+}
+
+kern_return_t WKPCSetModal(mach_port_t clientPort, boolean_t modal)
+{
+ NetscapePluginHostProxy* hostProxy = pluginProxyMap().get(clientPort);
+ if (!hostProxy)
+ return KERN_FAILURE;
+
+ hostProxy->setModal(modal);
+
+ return KERN_SUCCESS;
+}
+
+#endif // USE(PLUGIN_HOST_PROCESS)
diff --git a/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.h b/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.h
new file mode 100644
index 0000000..343aa41
--- /dev/null
+++ b/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.h
@@ -0,0 +1,254 @@
+/*
+ * Copyright (C) 2008 Apple Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if USE(PLUGIN_HOST_PROCESS)
+
+#ifndef NetscapePluginInstanceProxy_h
+#define NetscapePluginInstanceProxy_h
+
+#include <JavaScriptCore/Protect.h>
+#include <WebCore/Timer.h>
+#include <WebKit/npapi.h>
+#include <wtf/Deque.h>
+#include <wtf/HashMap.h>
+#include <wtf/PassRefPtr.h>
+#include <wtf/RefCounted.h>
+#include <wtf/RetainPtr.h>
+#include "WebKitPluginHostTypes.h"
+
+namespace WebCore {
+ class String;
+}
+
+namespace JSC {
+ namespace Bindings {
+ class Instance;
+ class RootObject;
+ }
+}
+@class WebHostedNetscapePluginView;
+
+namespace WebKit {
+
+class HostedNetscapePluginStream;
+class NetscapePluginHostProxy;
+
+class NetscapePluginInstanceProxy : public RefCounted<NetscapePluginInstanceProxy> {
+public:
+ static PassRefPtr<NetscapePluginInstanceProxy> create(NetscapePluginHostProxy* pluginHostProxy, WebHostedNetscapePluginView *pluginView)
+ {
+ return adoptRef(new NetscapePluginInstanceProxy(pluginHostProxy, pluginView));
+ }
+ ~NetscapePluginInstanceProxy();
+
+ uint32_t pluginID() const { return m_pluginID; }
+ uint32_t renderContextID() const { return m_renderContextID; }
+ void setRenderContextID(uint32_t renderContextID) { m_renderContextID = renderContextID; }
+
+ bool useSoftwareRenderer() const { return m_useSoftwareRenderer; }
+ void setUseSoftwareRenderer(bool useSoftwareRenderer) { m_useSoftwareRenderer = useSoftwareRenderer; }
+
+ WebHostedNetscapePluginView *pluginView() const { return m_pluginView; }
+ NetscapePluginHostProxy* hostProxy() const { return m_pluginHostProxy; }
+
+ HostedNetscapePluginStream *pluginStream(uint32_t streamID);
+ void disconnectStream(HostedNetscapePluginStream*);
+
+ void pluginHostDied();
+
+ void resize(NSRect size, NSRect clipRect);
+ void destroy();
+ void focusChanged(bool hasFocus);
+ void windowFocusChanged(bool hasFocus);
+ void windowFrameChanged(NSRect frame);
+
+ void mouseEvent(NSView *pluginView, NSEvent *, NPCocoaEventType);
+ void keyEvent(NSView *pluginView, NSEvent *, NPCocoaEventType);
+ void startTimers(bool throttleTimers);
+ void stopTimers();
+
+ // NPRuntime
+ bool getWindowNPObject(uint32_t& objectID);
+ void releaseObject(uint32_t objectID);
+
+ bool evaluate(uint32_t objectID, const WebCore::String& script, data_t& resultData, mach_msg_type_number_t& resultLength);
+ bool invoke(uint32_t objectID, const JSC::Identifier& methodName, data_t argumentsData, mach_msg_type_number_t argumentsLength, data_t& resultData, mach_msg_type_number_t& resultLength);
+ bool invokeDefault(uint32_t objectID, data_t argumentsData, mach_msg_type_number_t argumentsLength, data_t& resultData, mach_msg_type_number_t& resultLength);
+ bool construct(uint32_t objectID, data_t argumentsData, mach_msg_type_number_t argumentsLength, data_t& resultData, mach_msg_type_number_t& resultLength);
+
+ bool getProperty(uint32_t objectID, const JSC::Identifier& propertyName, data_t &resultData, mach_msg_type_number_t& resultLength);
+ bool getProperty(uint32_t objectID, unsigned propertyName, data_t &resultData, mach_msg_type_number_t& resultLength);
+ bool setProperty(uint32_t objectID, const JSC::Identifier& propertyName, data_t valueData, mach_msg_type_number_t valueLength);
+ bool setProperty(uint32_t objectID, unsigned propertyName, data_t valueData, mach_msg_type_number_t valueLength);
+ bool removeProperty(uint32_t objectID, const JSC::Identifier& propertyName);
+ bool removeProperty(uint32_t objectID, unsigned propertyName);
+ bool hasProperty(uint32_t objectID, const JSC::Identifier& propertyName);
+ bool hasProperty(uint32_t objectID, unsigned propertyName);
+ bool hasMethod(uint32_t objectID, const JSC::Identifier& methodName);
+
+ void status(const char* message);
+ NPError loadURL(const char* url, const char* target, const char* postData, uint32_t postDataLength, LoadURLFlags, uint32_t& requestID);
+
+ PassRefPtr<JSC::Bindings::Instance> createBindingsInstance(PassRefPtr<JSC::Bindings::RootObject>);
+ RetainPtr<NSData *> marshalValues(JSC::ExecState*, const JSC::ArgList& args);
+ void marshalValue(JSC::ExecState*, JSC::JSValuePtr value, data_t& resultData, mach_msg_type_number_t& resultLength);
+ JSC::JSValuePtr demarshalValue(JSC::ExecState*, const char* valueData, mach_msg_type_number_t valueLength);
+
+ // Reply structs
+ struct Reply {
+ enum Type {
+ InstantiatePlugin,
+ GetScriptableNPObject,
+ BooleanAndData,
+ Boolean
+ };
+
+ Reply(Type type) : m_type(type) { }
+ virtual ~Reply() { }
+
+ Type m_type;
+ };
+
+ struct InstantiatePluginReply : public Reply {
+ static const int ReplyType = InstantiatePlugin;
+
+ InstantiatePluginReply(kern_return_t resultCode, uint32_t renderContextID, boolean_t useSoftwareRenderer)
+ : Reply(InstantiatePlugin)
+ , m_resultCode(resultCode)
+ , m_renderContextID(renderContextID)
+ , m_useSoftwareRenderer(useSoftwareRenderer)
+ {
+ }
+
+ kern_return_t m_resultCode;
+ uint32_t m_renderContextID;
+ boolean_t m_useSoftwareRenderer;
+ };
+
+ struct GetScriptableNPObjectReply : public Reply {
+ static const Reply::Type ReplyType = GetScriptableNPObject;
+
+ GetScriptableNPObjectReply(uint32_t objectID)
+ : Reply(ReplyType)
+ , m_objectID(objectID)
+ {
+ }
+
+ uint32_t m_objectID;
+ };
+
+ struct BooleanReply : public Reply {
+ static const Reply::Type ReplyType = Boolean;
+
+ BooleanReply(boolean_t result)
+ : Reply(ReplyType)
+ , m_result(result)
+ {
+ }
+
+ boolean_t m_result;
+ };
+
+ struct BooleanAndDataReply : public Reply {
+ static const Reply::Type ReplyType = BooleanAndData;
+
+ BooleanAndDataReply(boolean_t returnValue, RetainPtr<CFDataRef> result)
+ : Reply(ReplyType)
+ , m_returnValue(returnValue)
+ , m_result(result)
+ {
+ }
+
+ boolean_t m_returnValue;
+ RetainPtr<CFDataRef> m_result;
+ };
+
+ void setCurrentReply(Reply* reply)
+ {
+ ASSERT(!m_currentReply.get());
+ m_currentReply = std::auto_ptr<Reply>(reply);
+ }
+
+ template <typename T>
+ std::auto_ptr<T> waitForReply()
+ {
+ m_waitingForReply = true;
+
+ processRequestsAndWaitForReply();
+
+ if (m_currentReply.get())
+ ASSERT(m_currentReply->m_type == T::ReplyType);
+
+ m_waitingForReply = false;
+ return std::auto_ptr<T>(static_cast<T*>(m_currentReply.release()));
+ }
+
+private:
+ NetscapePluginInstanceProxy(NetscapePluginHostProxy*, WebHostedNetscapePluginView *);
+
+ NPError loadRequest(NSURLRequest *, const char* cTarget, bool currentEventIsUserGesture, uint32_t& streamID);
+
+ class PluginRequest;
+ void performRequest(PluginRequest*);
+ void evaluateJavaScript(PluginRequest*);
+
+ void stopAllStreams();
+ void processRequestsAndWaitForReply();
+
+ NetscapePluginHostProxy* m_pluginHostProxy;
+ WebHostedNetscapePluginView *m_pluginView;
+
+ void requestTimerFired(WebCore::Timer<NetscapePluginInstanceProxy>*);
+ WebCore::Timer<NetscapePluginInstanceProxy> m_requestTimer;
+ Deque<PluginRequest*> m_pluginRequests;
+
+ HashMap<uint32_t, RefPtr<HostedNetscapePluginStream> > m_streams;
+
+ uint32_t m_currentRequestID;
+
+ uint32_t m_pluginID;
+ uint32_t m_renderContextID;
+ boolean_t m_useSoftwareRenderer;
+
+ bool m_waitingForReply;
+ std::auto_ptr<Reply> m_currentReply;
+
+ // NPRuntime
+ uint32_t idForObject(JSC::JSObject*);
+
+ void addValueToArray(NSMutableArray *, JSC::ExecState* exec, JSC::JSValuePtr value);
+
+ bool demarshalValueFromArray(JSC::ExecState*, NSArray *array, NSUInteger& index, JSC::JSValuePtr& result);
+ void demarshalValues(JSC::ExecState*, data_t valuesData, mach_msg_type_number_t valuesLength, JSC::ArgList& result);
+
+ uint32_t m_objectIDCounter;
+ typedef HashMap<uint32_t, JSC::ProtectedPtr<JSC::JSObject> > ObjectMap;
+ ObjectMap m_objects;
+};
+
+} // namespace WebKit
+
+#endif // NetscapePluginInstanceProxy_h
+#endif // USE(PLUGIN_HOST_PROCESS)
diff --git a/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.mm b/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.mm
new file mode 100644
index 0000000..6d0df52
--- /dev/null
+++ b/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.mm
@@ -0,0 +1,946 @@
+/*
+ * Copyright (C) 2008 Apple Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if USE(PLUGIN_HOST_PROCESS)
+
+#import "NetscapePluginInstanceProxy.h"
+
+#import "HostedNetscapePluginStream.h"
+#import "NetscapePluginHostProxy.h"
+#import "ProxyInstance.h"
+#import "WebDataSourceInternal.h"
+#import "WebFrameInternal.h"
+#import "WebHostedNetscapePluginView.h"
+#import "WebNSDataExtras.h"
+#import "WebNSURLExtras.h"
+#import "WebKitNSStringExtras.h"
+#import "WebPluginRequest.h"
+#import "WebViewInternal.h"
+#import "WebUIDelegate.h"
+#import "WebUIDelegatePrivate.h"
+
+#import <mach/mach.h>
+#import <WebCore/DocumentLoader.h>
+#import <WebCore/Frame.h>
+#import <WebCore/FrameLoader.h>
+#import <WebCore/FrameTree.h>
+#import <WebCore/runtime_object.h>
+#import <WebCore/ScriptController.h>
+#import <WebCore/ScriptValue.h>
+#include <runtime/JSLock.h>
+#import <utility>
+
+extern "C" {
+#import "WebKitPluginClientServer.h"
+#import "WebKitPluginHost.h"
+}
+
+using namespace JSC;
+using namespace JSC::Bindings;
+using namespace std;
+using namespace WebCore;
+
+namespace WebKit {
+
+class NetscapePluginInstanceProxy::PluginRequest {
+public:
+ PluginRequest(uint32_t requestID, NSURLRequest *request, NSString *frameName, bool didStartFromUserGesture)
+ : m_requestID(requestID)
+ , m_request(request)
+ , m_frameName(frameName)
+ , m_didStartFromUserGesture(didStartFromUserGesture)
+ {
+ }
+
+ uint32_t requestID() const { return m_requestID; }
+ NSURLRequest *request() const { return m_request.get(); }
+ NSString *frameName() const { return m_frameName.get(); }
+ bool didStartFromUserGesture() const { return m_didStartFromUserGesture; }
+
+private:
+ uint32_t m_requestID;
+ RetainPtr<NSURLRequest *> m_request;
+ RetainPtr<NSString *> m_frameName;
+ bool m_didStartFromUserGesture;
+};
+
+static uint32_t pluginIDCounter;
+
+NetscapePluginInstanceProxy::NetscapePluginInstanceProxy(NetscapePluginHostProxy* pluginHostProxy, WebHostedNetscapePluginView *pluginView)
+ : m_pluginHostProxy(pluginHostProxy)
+ , m_pluginView(pluginView)
+ , m_requestTimer(this, &NetscapePluginInstanceProxy::requestTimerFired)
+ , m_currentRequestID(0)
+ , m_renderContextID(0)
+ , m_useSoftwareRenderer(false)
+ , m_waitingForReply(false)
+ , m_objectIDCounter(0)
+{
+ ASSERT(m_pluginView);
+
+ // Assign a plug-in ID.
+ do {
+ m_pluginID = ++pluginIDCounter;
+ } while (pluginHostProxy->pluginInstance(m_pluginID) || !m_pluginID);
+
+ pluginHostProxy->addPluginInstance(this);
+}
+
+NetscapePluginInstanceProxy::~NetscapePluginInstanceProxy()
+{
+ ASSERT(!m_pluginHostProxy);
+}
+
+void NetscapePluginInstanceProxy::resize(NSRect size, NSRect clipRect)
+{
+ _WKPHResizePluginInstance(m_pluginHostProxy->port(), m_pluginID, size.origin.x, size.origin.y, size.size.width, size.size.height);
+}
+
+void NetscapePluginInstanceProxy::stopAllStreams()
+{
+ Vector<RefPtr<HostedNetscapePluginStream> > streamsCopy;
+ copyValuesToVector(m_streams, streamsCopy);
+ for (size_t i = 0; i < streamsCopy.size(); i++)
+ streamsCopy[i]->stop();
+}
+
+void NetscapePluginInstanceProxy::destroy()
+{
+ stopAllStreams();
+
+ _WKPHDestroyPluginInstance(m_pluginHostProxy->port(), m_pluginID);
+
+ // Clear the object map, this will cause any outstanding JS objects that the plug-in had a reference to
+ // to go away when the next garbage collection takes place.
+ m_objects.clear();
+
+ m_pluginHostProxy->removePluginInstance(this);
+ m_pluginHostProxy = 0;
+}
+
+HostedNetscapePluginStream *NetscapePluginInstanceProxy::pluginStream(uint32_t streamID)
+{
+ return m_streams.get(streamID).get();
+}
+
+void NetscapePluginInstanceProxy::disconnectStream(HostedNetscapePluginStream* stream)
+{
+ m_streams.remove(stream->streamID());
+}
+
+void NetscapePluginInstanceProxy::pluginHostDied()
+{
+ stopAllStreams();
+
+ m_pluginHostProxy = 0;
+
+ [m_pluginView pluginHostDied];
+ m_pluginView = nil;
+}
+
+void NetscapePluginInstanceProxy::focusChanged(bool hasFocus)
+{
+ _WKPHPluginInstanceFocusChanged(m_pluginHostProxy->port(), m_pluginID, hasFocus);
+}
+
+void NetscapePluginInstanceProxy::windowFocusChanged(bool hasFocus)
+{
+ _WKPHPluginInstanceWindowFocusChanged(m_pluginHostProxy->port(), m_pluginID, hasFocus);
+}
+
+void NetscapePluginInstanceProxy::windowFrameChanged(NSRect frame)
+{
+ _WKPHPluginInstanceWindowFrameChanged(m_pluginHostProxy->port(), m_pluginID, frame.origin.x, frame.origin.y, frame.size.width, frame.size.height,
+ // FIXME: Is it always correct to pass the rect of the first screen here?
+ NSMaxY([[[NSScreen screens] objectAtIndex:0] frame]));
+}
+
+void NetscapePluginInstanceProxy::startTimers(bool throttleTimers)
+{
+ _WKPHPluginInstanceStartTimers(m_pluginHostProxy->port(), m_pluginID, throttleTimers);
+}
+
+void NetscapePluginInstanceProxy::mouseEvent(NSView *pluginView, NSEvent *event, NPCocoaEventType type)
+{
+ NSPoint screenPoint = [[event window] convertBaseToScreen:[event locationInWindow]];
+ NSPoint pluginPoint = [pluginView convertPoint:[event locationInWindow] fromView:nil];
+
+ int clickCount;
+ if (type == NPCocoaEventMouseEntered || type == NPCocoaEventMouseExited)
+ clickCount = 0;
+ else
+ clickCount = [event clickCount];
+
+
+ _WKPHPluginInstanceMouseEvent(m_pluginHostProxy->port(), m_pluginID,
+ [event timestamp],
+ type, [event modifierFlags],
+ pluginPoint.x, pluginPoint.y,
+ screenPoint.x, screenPoint.y,
+ // FIXME: Is it always correct to pass the rect of the first screen here?
+ NSMaxY([[[NSScreen screens] objectAtIndex:0] frame]),
+ [event buttonNumber], clickCount,
+ [event deltaX], [event deltaY], [event deltaZ]);
+}
+
+void NetscapePluginInstanceProxy::keyEvent(NSView *pluginView, NSEvent *event, NPCocoaEventType type)
+{
+ NSData *charactersData = [[event characters] dataUsingEncoding:NSUTF8StringEncoding];
+ NSData *charactersIgnoringModifiersData = [[event charactersIgnoringModifiers] dataUsingEncoding:NSUTF8StringEncoding];
+
+ _WKPHPluginInstanceKeyboardEvent(m_pluginHostProxy->port(), m_pluginID,
+ [event timestamp],
+ type, [event modifierFlags],
+ const_cast<char*>(reinterpret_cast<const char*>([charactersData bytes])), [charactersData length],
+ const_cast<char*>(reinterpret_cast<const char*>([charactersIgnoringModifiersData bytes])), [charactersIgnoringModifiersData length],
+ [event isARepeat], [event keyCode]);
+}
+
+void NetscapePluginInstanceProxy::stopTimers()
+{
+ _WKPHPluginInstanceStopTimers(m_pluginHostProxy->port(), m_pluginID);
+}
+
+void NetscapePluginInstanceProxy::status(const char* message)
+{
+ RetainPtr<CFStringRef> status(AdoptCF, CFStringCreateWithCString(NULL, message, kCFStringEncodingUTF8));
+
+ if (!status)
+ return;
+
+ WebView *wv = [m_pluginView webView];
+ [[wv _UIDelegateForwarder] webView:wv setStatusText:(NSString *)status.get()];
+}
+
+NPError NetscapePluginInstanceProxy::loadURL(const char* url, const char* target, const char* postData, uint32_t postLen, LoadURLFlags flags, uint32_t& streamID)
+{
+ if (!url)
+ return NPERR_INVALID_PARAM;
+
+ NSMutableURLRequest *request = [m_pluginView requestWithURLCString:url];
+
+ if (flags & IsPost) {
+ NSData *httpBody = nil;
+
+ if (flags & PostDataIsFile) {
+ // If we're posting a file, buf is either a file URL or a path to the file.
+ RetainPtr<CFStringRef> bufString(AdoptCF, CFStringCreateWithCString(kCFAllocatorDefault, postData, kCFStringEncodingWindowsLatin1));
+ if (!bufString)
+ return NPERR_INVALID_PARAM;
+
+ NSURL *fileURL = [NSURL _web_URLWithDataAsString:(NSString *)bufString.get()];
+ NSString *path;
+ if ([fileURL isFileURL])
+ path = [fileURL path];
+ else
+ path = (NSString *)bufString.get();
+ httpBody = [NSData dataWithContentsOfFile:[path _webkit_fixedCarbonPOSIXPath]];
+ if (!httpBody)
+ return NPERR_FILE_NOT_FOUND;
+ } else
+ httpBody = [NSData dataWithBytes:postData length:postLen];
+
+ if (![httpBody length])
+ return NPERR_INVALID_PARAM;
+
+ [request setHTTPMethod:@"POST"];
+
+ if (flags & AllowHeadersInPostData) {
+ if ([httpBody _web_startsWithBlankLine])
+ httpBody = [httpBody subdataWithRange:NSMakeRange(1, [httpBody length] - 1)];
+ else {
+ NSInteger location = [httpBody _web_locationAfterFirstBlankLine];
+ if (location != NSNotFound) {
+ // If the blank line is somewhere in the middle of postData, everything before is the header.
+ NSData *headerData = [httpBody subdataWithRange:NSMakeRange(0, location)];
+ NSMutableDictionary *header = [headerData _webkit_parseRFC822HeaderFields];
+ unsigned dataLength = [httpBody length] - location;
+
+ // Sometimes plugins like to set Content-Length themselves when they post,
+ // but CFNetwork does not like that. So we will remove the header
+ // and instead truncate the data to the requested length.
+ NSString *contentLength = [header objectForKey:@"Content-Length"];
+
+ if (contentLength)
+ dataLength = min(static_cast<unsigned>([contentLength intValue]), dataLength);
+ [header removeObjectForKey:@"Content-Length"];
+
+ if ([header count] > 0)
+ [request setAllHTTPHeaderFields:header];
+
+ // Everything after the blank line is the actual content of the POST.
+ httpBody = [httpBody subdataWithRange:NSMakeRange(location, dataLength)];
+ }
+ }
+ }
+
+ if (![httpBody length])
+ return NPERR_INVALID_PARAM;
+
+ // Plug-ins expect to receive uncached data when doing a POST (3347134).
+ [request setCachePolicy:NSURLRequestReloadIgnoringCacheData];
+ [request setHTTPBody:httpBody];
+ }
+
+ return loadRequest(request, target, flags & CurrentEventIsUserGesture, streamID);
+}
+
+void NetscapePluginInstanceProxy::performRequest(PluginRequest* pluginRequest)
+{
+ NSURLRequest *request = pluginRequest->request();
+ NSString *frameName = pluginRequest->frameName();
+ WebFrame *frame = nil;
+
+ NSURL *URL = [request URL];
+ NSString *JSString = [URL _webkit_scriptIfJavaScriptURL];
+
+ ASSERT(frameName || JSString);
+ if (frameName) {
+ // FIXME - need to get rid of this window creation which
+ // bypasses normal targeted link handling
+ frame = kit(core([m_pluginView webFrame])->loader()->findFrameForNavigation(frameName));
+ if (!frame) {
+ WebView *currentWebView = [m_pluginView webView];
+ NSDictionary *features = [[NSDictionary alloc] init];
+ WebView *newWebView = [[currentWebView _UIDelegateForwarder] webView:currentWebView
+ createWebViewWithRequest:nil
+ windowFeatures:features];
+ [features release];
+
+ if (!newWebView)
+ return;
+
+ frame = [newWebView mainFrame];
+ core(frame)->tree()->setName(frameName);
+ [[newWebView _UIDelegateForwarder] webViewShow:newWebView];
+ }
+ }
+
+ if (JSString) {
+ ASSERT(!frame || [m_pluginView webFrame] == frame);
+ evaluateJavaScript(pluginRequest);
+ } else
+ [frame loadRequest:request];
+}
+
+void NetscapePluginInstanceProxy::evaluateJavaScript(PluginRequest* pluginRequest)
+{
+ NSURL *URL = [pluginRequest->request() URL];
+ NSString *JSString = [URL _webkit_scriptIfJavaScriptURL];
+ ASSERT(JSString);
+
+ NSString *result = [[m_pluginView webFrame] _stringByEvaluatingJavaScriptFromString:JSString forceUserGesture:pluginRequest->didStartFromUserGesture()];
+
+ // Don't continue if stringByEvaluatingJavaScriptFromString caused the plug-in to stop.
+ if (!m_pluginHostProxy)
+ return;
+
+ if (pluginRequest->frameName() != nil)
+ return;
+
+ if ([result length] > 0) {
+ // Don't call NPP_NewStream and other stream methods if there is no JS result to deliver. This is what Mozilla does.
+ NSData *JSData = [result dataUsingEncoding:NSUTF8StringEncoding];
+
+ RefPtr<HostedNetscapePluginStream> stream = HostedNetscapePluginStream::create(this, pluginRequest->requestID(), pluginRequest->request());
+
+ RetainPtr<NSURLResponse> response(AdoptNS, [[NSURLResponse alloc] initWithURL:URL
+ MIMEType:@"text/plain"
+ expectedContentLength:[JSData length]
+ textEncodingName:nil]);
+ stream->startStreamWithResponse(response.get());
+ stream->didReceiveData(0, static_cast<const char*>([JSData bytes]), [JSData length]);
+ stream->didFinishLoading(0);
+ }
+}
+
+void NetscapePluginInstanceProxy::requestTimerFired(Timer<NetscapePluginInstanceProxy>*)
+{
+ ASSERT(!m_pluginRequests.isEmpty());
+
+ PluginRequest* request = m_pluginRequests.first();
+ m_pluginRequests.removeFirst();
+
+ if (!m_pluginRequests.isEmpty())
+ m_requestTimer.startOneShot(0);
+
+ performRequest(request);
+ delete request;
+}
+
+NPError NetscapePluginInstanceProxy::loadRequest(NSURLRequest *request, const char* cTarget, bool currentEventIsUserGesture, uint32_t& requestID)
+{
+ NSURL *URL = [request URL];
+
+ if (!URL)
+ return NPERR_INVALID_URL;
+
+ // Don't allow requests to be loaded when the document loader is stopping all loaders.
+ if ([[m_pluginView dataSource] _documentLoader]->isStopping())
+ return NPERR_GENERIC_ERROR;
+
+ NSString *target = nil;
+ if (cTarget) {
+ // Find the frame given the target string.
+ target = [NSString stringWithCString:cTarget encoding:NSISOLatin1StringEncoding];
+ }
+ WebFrame *frame = [m_pluginView webFrame];
+
+ // don't let a plugin start any loads if it is no longer part of a document that is being
+ // displayed unless the loads are in the same frame as the plugin.
+ if ([[m_pluginView dataSource] _documentLoader] != core([m_pluginView webFrame])->loader()->activeDocumentLoader() &&
+ (!cTarget || [frame findFrameNamed:target] != frame)) {
+ return NPERR_GENERIC_ERROR;
+ }
+
+ NSString *JSString = [URL _webkit_scriptIfJavaScriptURL];
+ if (JSString != nil) {
+ if (![[[m_pluginView webView] preferences] isJavaScriptEnabled]) {
+ // Return NPERR_GENERIC_ERROR if JS is disabled. This is what Mozilla does.
+ return NPERR_GENERIC_ERROR;
+ }
+ } else {
+ if (!FrameLoader::canLoad(URL, String(), core([m_pluginView webFrame])->document()))
+ return NPERR_GENERIC_ERROR;
+ }
+
+ // FIXME: Handle wraparound
+ requestID = ++m_currentRequestID;
+
+ if (cTarget || JSString) {
+ // Make when targetting a frame or evaluating a JS string, perform the request after a delay because we don't
+ // want to potentially kill the plug-in inside of its URL request.
+
+ if (JSString && target && [frame findFrameNamed:target] != frame) {
+ // For security reasons, only allow JS requests to be made on the frame that contains the plug-in.
+ return NPERR_INVALID_PARAM;
+ }
+
+ PluginRequest* pluginRequest = new PluginRequest(requestID, request, target, currentEventIsUserGesture);
+ m_pluginRequests.append(pluginRequest);
+ m_requestTimer.startOneShot(0);
+ } else {
+ RefPtr<HostedNetscapePluginStream> stream = HostedNetscapePluginStream::create(this, requestID, request);
+
+ m_streams.add(requestID, stream);
+ stream->start();
+ }
+
+ return NPERR_NO_ERROR;
+}
+
+void NetscapePluginInstanceProxy::processRequestsAndWaitForReply()
+{
+ while (!m_currentReply.get()) {
+ kern_return_t kr = mach_msg_server_once(WebKitPluginClient_server, WKPCWebKitPluginClient_subsystem.maxsize + MAX_TRAILER_SIZE, m_pluginHostProxy->clientPort(), 0);
+ if (kr != KERN_SUCCESS) {
+ m_currentReply.reset();
+ break;
+ }
+ }
+}
+
+uint32_t NetscapePluginInstanceProxy::idForObject(JSObject* object)
+{
+ uint32_t objectID = 0;
+
+ // Assign an object ID.
+ do {
+ objectID = ++m_objectIDCounter;
+ } while (!m_objectIDCounter || m_objectIDCounter == static_cast<uint32_t>(-1) || m_objects.contains(objectID));
+
+ m_objects.set(objectID, object);
+
+ return objectID;
+}
+
+// NPRuntime support
+bool NetscapePluginInstanceProxy::getWindowNPObject(uint32_t& objectID)
+{
+ Frame* frame = core([m_pluginView webFrame]);
+ if (!frame)
+ return false;
+
+ if (!frame->script()->isEnabled())
+ objectID = 0;
+ else
+ objectID = idForObject(frame->script()->windowShell()->window());
+
+ return true;
+}
+
+void NetscapePluginInstanceProxy::releaseObject(uint32_t objectID)
+{
+ m_objects.remove(objectID);
+}
+
+bool NetscapePluginInstanceProxy::evaluate(uint32_t objectID, const String& script, data_t& resultData, mach_msg_type_number_t& resultLength)
+{
+ resultData = 0;
+ resultLength = 0;
+
+ if (!m_objects.contains(objectID))
+ return false;
+
+ Frame* frame = core([m_pluginView webFrame]);
+ if (!frame)
+ return false;
+
+ ExecState* exec = frame->script()->globalObject()->globalExec();
+ JSValuePtr value = frame->loader()->executeScript(script).jsValue();
+
+ marshalValue(exec, value, resultData, resultLength);
+ exec->clearException();
+ return true;
+}
+
+bool NetscapePluginInstanceProxy::invoke(uint32_t objectID, const Identifier& methodName, data_t argumentsData, mach_msg_type_number_t argumentsLength, data_t& resultData, mach_msg_type_number_t& resultLength)
+{
+ resultData = 0;
+ resultLength = 0;
+
+ JSObject* object = m_objects.get(objectID);
+ if (!object)
+ return false;
+
+ Frame* frame = core([m_pluginView webFrame]);
+ if (!frame)
+ return false;
+
+ ExecState* exec = frame->script()->globalObject()->globalExec();
+ JSLock lock(false);
+ JSValuePtr function = object->get(exec, methodName);
+ CallData callData;
+ CallType callType = function.getCallData(callData);
+ if (callType == CallTypeNone)
+ return false;
+
+ ArgList argList;
+ demarshalValues(exec, argumentsData, argumentsLength, argList);
+
+ ProtectedPtr<JSGlobalObject> globalObject = frame->script()->globalObject();
+ globalObject->startTimeoutCheck();
+ JSValuePtr value = call(exec, function, callType, callData, object, argList);
+ globalObject->stopTimeoutCheck();
+
+ marshalValue(exec, value, resultData, resultLength);
+ exec->clearException();
+ return true;
+}
+
+bool NetscapePluginInstanceProxy::invokeDefault(uint32_t objectID, data_t argumentsData, mach_msg_type_number_t argumentsLength, data_t& resultData, mach_msg_type_number_t& resultLength)
+{
+ JSObject* object = m_objects.get(objectID);
+ if (!object)
+ return false;
+
+ Frame* frame = core([m_pluginView webFrame]);
+ if (!frame)
+ return false;
+
+ ExecState* exec = frame->script()->globalObject()->globalExec();
+ JSLock lock(false);
+ CallData callData;
+ CallType callType = object->getCallData(callData);
+ if (callType == CallTypeNone)
+ return false;
+
+ ArgList argList;
+ demarshalValues(exec, argumentsData, argumentsLength, argList);
+
+ ProtectedPtr<JSGlobalObject> globalObject = frame->script()->globalObject();
+ globalObject->startTimeoutCheck();
+ JSValuePtr value = call(exec, object, callType, callData, object, argList);
+ globalObject->stopTimeoutCheck();
+
+ marshalValue(exec, value, resultData, resultLength);
+ exec->clearException();
+ return true;
+}
+
+bool NetscapePluginInstanceProxy::construct(uint32_t objectID, data_t argumentsData, mach_msg_type_number_t argumentsLength, data_t& resultData, mach_msg_type_number_t& resultLength)
+{
+ JSObject* object = m_objects.get(objectID);
+ if (!object)
+ return false;
+
+ Frame* frame = core([m_pluginView webFrame]);
+ if (!frame)
+ return false;
+
+ ExecState* exec = frame->script()->globalObject()->globalExec();
+ JSLock lock(false);
+
+ ConstructData constructData;
+ ConstructType constructType = object->getConstructData(constructData);
+ if (constructType == ConstructTypeNone)
+ return false;
+
+ ArgList argList;
+ demarshalValues(exec, argumentsData, argumentsLength, argList);
+
+ ProtectedPtr<JSGlobalObject> globalObject = frame->script()->globalObject();
+ globalObject->startTimeoutCheck();
+ JSValuePtr value = JSC::construct(exec, object, constructType, constructData, argList);
+ globalObject->stopTimeoutCheck();
+
+ marshalValue(exec, value, resultData, resultLength);
+ exec->clearException();
+ return true;
+}
+
+bool NetscapePluginInstanceProxy::getProperty(uint32_t objectID, const Identifier& propertyName, data_t& resultData, mach_msg_type_number_t& resultLength)
+{
+ JSObject* object = m_objects.get(objectID);
+ if (!object)
+ return false;
+
+ Frame* frame = core([m_pluginView webFrame]);
+ if (!frame)
+ return false;
+
+ ExecState* exec = frame->script()->globalObject()->globalExec();
+ JSLock lock(false);
+ JSValuePtr value = object->get(exec, propertyName);
+
+ marshalValue(exec, value, resultData, resultLength);
+ exec->clearException();
+ return true;
+}
+
+bool NetscapePluginInstanceProxy::getProperty(uint32_t objectID, unsigned propertyName, data_t& resultData, mach_msg_type_number_t& resultLength)
+{
+ JSObject* object = m_objects.get(objectID);
+ if (!object)
+ return false;
+
+ Frame* frame = core([m_pluginView webFrame]);
+ if (!frame)
+ return false;
+
+ ExecState* exec = frame->script()->globalObject()->globalExec();
+ JSLock lock(false);
+ JSValuePtr value = object->get(exec, propertyName);
+
+ marshalValue(exec, value, resultData, resultLength);
+ exec->clearException();
+ return true;
+}
+
+bool NetscapePluginInstanceProxy::setProperty(uint32_t objectID, const Identifier& propertyName, data_t valueData, mach_msg_type_number_t valueLength)
+{
+ JSObject* object = m_objects.get(objectID);
+ if (!object)
+ return false;
+
+ Frame* frame = core([m_pluginView webFrame]);
+ if (!frame)
+ return false;
+
+ ExecState* exec = frame->script()->globalObject()->globalExec();
+ JSLock lock(false);
+
+ JSValuePtr value = demarshalValue(exec, valueData, valueLength);
+ PutPropertySlot slot;
+ object->put(exec, propertyName, value, slot);
+
+ exec->clearException();
+ return true;
+}
+
+bool NetscapePluginInstanceProxy::setProperty(uint32_t objectID, unsigned propertyName, data_t valueData, mach_msg_type_number_t valueLength)
+{
+ JSObject* object = m_objects.get(objectID);
+ if (!object)
+ return false;
+
+ Frame* frame = core([m_pluginView webFrame]);
+ if (!frame)
+ return false;
+
+ ExecState* exec = frame->script()->globalObject()->globalExec();
+ JSLock lock(false);
+
+ JSValuePtr value = demarshalValue(exec, valueData, valueLength);
+ object->put(exec, propertyName, value);
+
+ exec->clearException();
+ return true;
+}
+
+bool NetscapePluginInstanceProxy::removeProperty(uint32_t objectID, const Identifier& propertyName)
+{
+ JSObject* object = m_objects.get(objectID);
+ if (!object)
+ return false;
+
+ Frame* frame = core([m_pluginView webFrame]);
+ if (!frame)
+ return false;
+
+ ExecState* exec = frame->script()->globalObject()->globalExec();
+ if (!object->hasProperty(exec, propertyName)) {
+ exec->clearException();
+ return false;
+ }
+
+ JSLock lock(false);
+ object->deleteProperty(exec, propertyName);
+ exec->clearException();
+ return true;
+}
+
+bool NetscapePluginInstanceProxy::removeProperty(uint32_t objectID, unsigned propertyName)
+{
+ JSObject* object = m_objects.get(objectID);
+ if (!object)
+ return false;
+
+ Frame* frame = core([m_pluginView webFrame]);
+ if (!frame)
+ return false;
+
+ ExecState* exec = frame->script()->globalObject()->globalExec();
+ if (!object->hasProperty(exec, propertyName)) {
+ exec->clearException();
+ return false;
+ }
+
+ JSLock lock(false);
+ object->deleteProperty(exec, propertyName);
+ exec->clearException();
+ return true;
+}
+
+bool NetscapePluginInstanceProxy::hasProperty(uint32_t objectID, const Identifier& propertyName)
+{
+ JSObject* object = m_objects.get(objectID);
+ if (!object)
+ return false;
+
+ Frame* frame = core([m_pluginView webFrame]);
+ if (!frame)
+ return false;
+
+ ExecState* exec = frame->script()->globalObject()->globalExec();
+ bool result = object->hasProperty(exec, propertyName);
+ exec->clearException();
+
+ return result;
+}
+
+bool NetscapePluginInstanceProxy::hasProperty(uint32_t objectID, unsigned propertyName)
+{
+ JSObject* object = m_objects.get(objectID);
+ if (!object)
+ return false;
+
+ Frame* frame = core([m_pluginView webFrame]);
+ if (!frame)
+ return false;
+
+ ExecState* exec = frame->script()->globalObject()->globalExec();
+ bool result = object->hasProperty(exec, propertyName);
+ exec->clearException();
+
+ return result;
+}
+
+bool NetscapePluginInstanceProxy::hasMethod(uint32_t objectID, const Identifier& methodName)
+{
+ JSObject* object = m_objects.get(objectID);
+ if (!object)
+ return false;
+
+ Frame* frame = core([m_pluginView webFrame]);
+ if (!frame)
+ return false;
+
+ ExecState* exec = frame->script()->globalObject()->globalExec();
+ JSLock lock(false);
+ JSValuePtr func = object->get(exec, methodName);
+ exec->clearException();
+ return !func.isUndefined();
+}
+
+void NetscapePluginInstanceProxy::addValueToArray(NSMutableArray *array, ExecState* exec, JSValuePtr value)
+{
+ JSLock lock(false);
+
+ if (value.isString()) {
+ [array addObject:[NSNumber numberWithInt:StringValueType]];
+ [array addObject:String(value.toString(exec))];
+ } else if (value.isNumber()) {
+ [array addObject:[NSNumber numberWithInt:DoubleValueType]];
+ [array addObject:[NSNumber numberWithDouble:value.toNumber(exec)]];
+ } else if (value.isBoolean()) {
+ [array addObject:[NSNumber numberWithInt:BoolValueType]];
+ [array addObject:[NSNumber numberWithBool:value.toBoolean(exec)]];
+ } else if (value.isNull())
+ [array addObject:[NSNumber numberWithInt:NullValueType]];
+ else if (value.isObject()) {
+ JSObject* object = asObject(value);
+ if (object->classInfo() == &RuntimeObjectImp::s_info) {
+ // FIXME: Handle ProxyInstance objects.
+ ASSERT_NOT_REACHED();
+ } else {
+ [array addObject:[NSNumber numberWithInt:JSObjectValueType]];
+ [array addObject:[NSNumber numberWithInt:idForObject(object)]];
+ }
+ } else
+ [array addObject:[NSNumber numberWithInt:VoidValueType]];
+}
+
+void NetscapePluginInstanceProxy::marshalValue(ExecState* exec, JSValuePtr value, data_t& resultData, mach_msg_type_number_t& resultLength)
+{
+ RetainPtr<NSMutableArray*> array(AdoptNS, [[NSMutableArray alloc] init]);
+
+ addValueToArray(array.get(), exec, value);
+
+ RetainPtr<NSData *> data = [NSPropertyListSerialization dataFromPropertyList:array.get() format:NSPropertyListBinaryFormat_v1_0 errorDescription:0];
+ ASSERT(data);
+
+ resultLength = [data.get() length];
+ mig_allocate(reinterpret_cast<vm_address_t*>(&resultData), resultLength);
+
+ memcpy(resultData, [data.get() bytes], resultLength);
+}
+
+RetainPtr<NSData *> NetscapePluginInstanceProxy::marshalValues(ExecState* exec, const ArgList& args)
+{
+ RetainPtr<NSMutableArray*> array(AdoptNS, [[NSMutableArray alloc] init]);
+
+ for (unsigned i = 0; i < args.size(); i++)
+ addValueToArray(array.get(), exec, args.at(exec, i));
+
+ RetainPtr<NSData *> data = [NSPropertyListSerialization dataFromPropertyList:array.get() format:NSPropertyListBinaryFormat_v1_0 errorDescription:0];
+ ASSERT(data);
+
+ return data;
+}
+
+bool NetscapePluginInstanceProxy::demarshalValueFromArray(ExecState* exec, NSArray *array, NSUInteger& index, JSValuePtr& result)
+{
+ if (index == [array count])
+ return false;
+
+ int type = [[array objectAtIndex:index++] intValue];
+ switch (type) {
+ case VoidValueType:
+ result = jsUndefined();
+ return true;
+ case NullValueType:
+ result = jsNull();
+ return true;
+ case BoolValueType:
+ result = jsBoolean([[array objectAtIndex:index++] boolValue]);
+ return true;
+ case DoubleValueType:
+ result = jsNumber(exec, [[array objectAtIndex:index++] doubleValue]);
+ return true;
+ case StringValueType: {
+ NSString *string = [array objectAtIndex:index++];
+
+ result = jsString(exec, String(string));
+ return true;
+ }
+ case JSObjectValueType: {
+ uint32_t objectID = [[array objectAtIndex:index++] intValue];
+
+ result = m_objects.get(objectID);
+ ASSERT(result);
+ return true;
+ }
+ case NPObjectValueType: {
+ uint32_t objectID = [[array objectAtIndex:index++] intValue];
+
+ Frame* frame = core([m_pluginView webFrame]);
+ if (!frame)
+ return false;
+
+ if (!frame->script()->isEnabled())
+ return false;
+
+ RefPtr<RootObject> rootObject = frame->script()->createRootObject(m_pluginView);
+ if (!rootObject)
+ return false;
+
+ result = ProxyInstance::create(rootObject.release(), this, objectID)->createRuntimeObject(exec);
+ return true;
+ }
+ default:
+ ASSERT_NOT_REACHED();
+ return false;
+ }
+}
+
+JSValuePtr NetscapePluginInstanceProxy::demarshalValue(ExecState* exec, const char* valueData, mach_msg_type_number_t valueLength)
+{
+ RetainPtr<NSData*> data(AdoptNS, [[NSData alloc] initWithBytesNoCopy:(void*)valueData length:valueLength freeWhenDone:NO]);
+
+ RetainPtr<NSArray*> array = [NSPropertyListSerialization propertyListFromData:data.get()
+ mutabilityOption:NSPropertyListImmutable
+ format:0
+ errorDescription:0];
+ NSUInteger position = 0;
+ JSValuePtr value;
+ bool result = demarshalValueFromArray(exec, array.get(), position, value);
+ ASSERT_UNUSED(result, result);
+
+ return value;
+}
+
+void NetscapePluginInstanceProxy::demarshalValues(ExecState* exec, data_t valuesData, mach_msg_type_number_t valuesLength, ArgList& result)
+{
+ RetainPtr<NSData*> data(AdoptNS, [[NSData alloc] initWithBytesNoCopy:valuesData length:valuesLength freeWhenDone:NO]);
+
+ RetainPtr<NSArray*> array = [NSPropertyListSerialization propertyListFromData:data.get()
+ mutabilityOption:NSPropertyListImmutable
+ format:0
+ errorDescription:0];
+ NSUInteger position = 0;
+ JSValuePtr value;
+ while (demarshalValueFromArray(exec, array.get(), position, value))
+ result.append(value);
+}
+
+PassRefPtr<Instance> NetscapePluginInstanceProxy::createBindingsInstance(PassRefPtr<RootObject> rootObject)
+{
+ if (_WKPHGetScriptableNPObject(m_pluginHostProxy->port(), m_pluginID) != KERN_SUCCESS)
+ return 0;
+
+ auto_ptr<GetScriptableNPObjectReply> reply = waitForReply<GetScriptableNPObjectReply>();
+ if (!reply.get())
+ return 0;
+
+ if (!reply->m_objectID)
+ return 0;
+
+ return ProxyInstance::create(rootObject, this, reply->m_objectID);
+}
+
+} // namespace WebKit
+
+#endif // USE(PLUGIN_HOST_PROCESS)
diff --git a/WebKit/mac/Plugins/Hosted/ProxyInstance.h b/WebKit/mac/Plugins/Hosted/ProxyInstance.h
new file mode 100644
index 0000000..014e388
--- /dev/null
+++ b/WebKit/mac/Plugins/Hosted/ProxyInstance.h
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if USE(PLUGIN_HOST_PROCESS)
+
+#ifndef ProxyInstance_h
+#define ProxyInstance_h
+
+#include <WebCore/runtime.h>
+#include <WebCore/runtime_root.h>
+#include <wtf/OwnPtr.h>
+#include "WebKitPluginHostTypes.h"
+
+namespace WebKit {
+
+class ProxyClass;
+class NetscapePluginInstanceProxy;
+
+class ProxyInstance : public JSC::Bindings::Instance {
+public:
+ static PassRefPtr<ProxyInstance> create(PassRefPtr<JSC::Bindings::RootObject> rootObject, NetscapePluginInstanceProxy* instanceProxy, uint32_t objectID)
+ {
+ return adoptRef(new ProxyInstance(rootObject, instanceProxy, objectID));
+ }
+ ~ProxyInstance();
+
+ JSC::Bindings::MethodList methodsNamed(const JSC::Identifier&);
+ JSC::Bindings::Field* fieldNamed(const JSC::Identifier&);
+
+ JSC::JSValuePtr fieldValue(JSC::ExecState*, const JSC::Bindings::Field*) const;
+ void setFieldValue(JSC::ExecState*, const JSC::Bindings::Field*, JSC::JSValuePtr) const;
+
+private:
+ ProxyInstance(PassRefPtr<JSC::Bindings::RootObject>, NetscapePluginInstanceProxy*, uint32_t objectID);
+
+ virtual JSC::Bindings::Class *getClass() const;
+
+ virtual JSC::JSValuePtr invokeMethod(JSC::ExecState*, const JSC::Bindings::MethodList&, const JSC::ArgList& args);
+
+ virtual bool supportsInvokeDefaultMethod() const;
+ virtual JSC::JSValuePtr invokeDefaultMethod(JSC::ExecState*, const JSC::ArgList&);
+
+ virtual bool supportsConstruct() const;
+ virtual JSC::JSValuePtr invokeConstruct(JSC::ExecState*, const JSC::ArgList&);
+
+ virtual JSC::JSValuePtr defaultValue(JSC::ExecState*, JSC::PreferredPrimitiveType) const;
+ virtual JSC::JSValuePtr valueOf(JSC::ExecState*) const;
+
+ JSC::JSValuePtr stringValue(JSC::ExecState*) const;
+ JSC::JSValuePtr numberValue(JSC::ExecState*) const;
+ JSC::JSValuePtr booleanValue() const;
+
+ JSC::JSValuePtr invoke(JSC::ExecState*, InvokeType, uint64_t identifier, const JSC::ArgList& args);
+
+ NetscapePluginInstanceProxy* m_instanceProxy;
+ uint32_t m_objectID;
+ JSC::Bindings::FieldMap m_fields;
+ JSC::Bindings::MethodMap m_methods;
+};
+
+}
+
+#endif // ProxyInstance_h
+#endif // USE(PLUGIN_HOST_PROCESS)
diff --git a/WebKit/mac/Plugins/Hosted/ProxyInstance.mm b/WebKit/mac/Plugins/Hosted/ProxyInstance.mm
new file mode 100644
index 0000000..8d6aaee
--- /dev/null
+++ b/WebKit/mac/Plugins/Hosted/ProxyInstance.mm
@@ -0,0 +1,310 @@
+/*
+ * Copyright (C) 2008 Apple Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if USE(PLUGIN_HOST_PROCESS)
+
+#import "ProxyInstance.h"
+
+#import "NetscapePluginHostProxy.h"
+#import "NetscapePluginInstanceProxy.h"
+#import <WebCore/npruntime_impl.h>
+
+extern "C" {
+#import "WebKitPluginHost.h"
+}
+
+using namespace JSC;
+using namespace JSC::Bindings;
+using namespace std;
+
+namespace WebKit {
+
+class ProxyClass : public JSC::Bindings::Class {
+private:
+ virtual MethodList methodsNamed(const Identifier&, Instance*) const;
+ virtual Field* fieldNamed(const Identifier&, Instance*) const;
+};
+
+MethodList ProxyClass::methodsNamed(const Identifier& identifier, Instance* instance) const
+{
+ return static_cast<ProxyInstance*>(instance)->methodsNamed(identifier);
+}
+
+Field* ProxyClass::fieldNamed(const Identifier& identifier, Instance* instance) const
+{
+ return static_cast<ProxyInstance*>(instance)->fieldNamed(identifier);
+}
+
+static ProxyClass* proxyClass()
+{
+ DEFINE_STATIC_LOCAL(ProxyClass, proxyClass, ());
+ return &proxyClass;
+}
+
+class ProxyField : public JSC::Bindings::Field {
+public:
+ ProxyField(uint64_t serverIdentifier)
+ : m_serverIdentifier(serverIdentifier)
+ {
+ }
+
+ uint64_t serverIdentifier() const { return m_serverIdentifier; }
+
+private:
+ virtual JSValuePtr valueFromInstance(ExecState*, const Instance*) const;
+ virtual void setValueToInstance(ExecState*, const Instance*, JSValuePtr) const;
+
+ uint64_t m_serverIdentifier;
+};
+
+JSValuePtr ProxyField::valueFromInstance(ExecState* exec, const Instance* instance) const
+{
+ return static_cast<const ProxyInstance*>(instance)->fieldValue(exec, this);
+}
+
+void ProxyField::setValueToInstance(ExecState* exec, const Instance* instance, JSValuePtr value) const
+{
+ static_cast<const ProxyInstance*>(instance)->setFieldValue(exec, this, value);
+}
+
+class ProxyMethod : public JSC::Bindings::Method {
+public:
+ ProxyMethod(uint64_t serverIdentifier)
+ : m_serverIdentifier(serverIdentifier)
+ {
+ }
+
+ uint64_t serverIdentifier() const { return m_serverIdentifier; }
+
+private:
+ virtual int numParameters() const { return 0; }
+
+ uint64_t m_serverIdentifier;
+};
+
+ProxyInstance::ProxyInstance(PassRefPtr<RootObject> rootObject, NetscapePluginInstanceProxy* instanceProxy, uint32_t objectID)
+ : Instance(rootObject)
+ , m_instanceProxy(instanceProxy)
+ , m_objectID(objectID)
+{
+}
+
+ProxyInstance::~ProxyInstance()
+{
+ deleteAllValues(m_fields);
+ deleteAllValues(m_methods);
+
+ _WKPHNPObjectRelease(m_instanceProxy->hostProxy()->port(),
+ m_instanceProxy->pluginID(), m_objectID);
+}
+
+JSC::Bindings::Class *ProxyInstance::getClass() const
+{
+ return proxyClass();
+}
+
+JSValuePtr ProxyInstance::invoke(JSC::ExecState* exec, InvokeType type, uint64_t identifier, const JSC::ArgList& args)
+{
+ RetainPtr<NSData*> arguments(m_instanceProxy->marshalValues(exec, args));
+
+ if (_WKPHNPObjectInvoke(m_instanceProxy->hostProxy()->port(), m_instanceProxy->pluginID(), m_objectID,
+ type, identifier, (char*)[arguments.get() bytes], [arguments.get() length]) != KERN_SUCCESS)
+ return jsUndefined();
+
+ auto_ptr<NetscapePluginInstanceProxy::BooleanAndDataReply> reply = m_instanceProxy->waitForReply<NetscapePluginInstanceProxy::BooleanAndDataReply>();
+ if (!reply.get() || !reply->m_returnValue)
+ return jsUndefined();
+
+ return m_instanceProxy->demarshalValue(exec, (char*)CFDataGetBytePtr(reply->m_result.get()), CFDataGetLength(reply->m_result.get()));
+}
+
+JSValuePtr ProxyInstance::invokeMethod(ExecState* exec, const MethodList& methodList, const ArgList& args)
+{
+ ASSERT(methodList.size() == 1);
+
+ ProxyMethod* method = static_cast<ProxyMethod*>(methodList[0]);
+
+ return invoke(exec, Invoke, method->serverIdentifier(), args);
+}
+
+bool ProxyInstance::supportsInvokeDefaultMethod() const
+{
+ if (_WKPHNPObjectHasInvokeDefaultMethod(m_instanceProxy->hostProxy()->port(),
+ m_instanceProxy->pluginID(),
+ m_objectID) != KERN_SUCCESS)
+ return false;
+
+ auto_ptr<NetscapePluginInstanceProxy::BooleanReply> reply = m_instanceProxy->waitForReply<NetscapePluginInstanceProxy::BooleanReply>();
+ if (reply.get() && reply->m_result)
+ return true;
+
+ return false;
+}
+
+JSValuePtr ProxyInstance::invokeDefaultMethod(ExecState* exec, const ArgList& args)
+{
+ return invoke(exec, InvokeDefault, 0, args);
+}
+
+bool ProxyInstance::supportsConstruct() const
+{
+ if (_WKPHNPObjectHasConstructMethod(m_instanceProxy->hostProxy()->port(),
+ m_instanceProxy->pluginID(),
+ m_objectID) != KERN_SUCCESS)
+ return false;
+
+ auto_ptr<NetscapePluginInstanceProxy::BooleanReply> reply = m_instanceProxy->waitForReply<NetscapePluginInstanceProxy::BooleanReply>();
+ if (reply.get() && reply->m_result)
+ return true;
+
+ return false;
+}
+
+JSValuePtr ProxyInstance::invokeConstruct(ExecState* exec, const ArgList& args)
+{
+ return invoke(exec, Construct, 0, args);
+}
+
+JSValuePtr ProxyInstance::defaultValue(ExecState* exec, PreferredPrimitiveType hint) const
+{
+ if (hint == PreferString)
+ return stringValue(exec);
+ if (hint == PreferNumber)
+ return numberValue(exec);
+ return valueOf(exec);
+}
+
+JSValuePtr ProxyInstance::stringValue(ExecState* exec) const
+{
+ // FIXME: Implement something sensible.
+ return jsString(exec, "");
+}
+
+JSValuePtr ProxyInstance::numberValue(ExecState* exec) const
+{
+ // FIXME: Implement something sensible.
+ return jsNumber(exec, 0);
+}
+
+JSValuePtr ProxyInstance::booleanValue() const
+{
+ // FIXME: Implement something sensible.
+ return jsBoolean(false);
+}
+
+JSValuePtr ProxyInstance::valueOf(ExecState* exec) const
+{
+ return stringValue(exec);
+}
+
+MethodList ProxyInstance::methodsNamed(const Identifier& identifier)
+{
+ if (Method* method = m_methods.get(identifier.ustring().rep())) {
+ MethodList methodList;
+ methodList.append(method);
+ return methodList;
+ }
+
+ uint64_t methodName = reinterpret_cast<uint64_t>(_NPN_GetStringIdentifier(identifier.ascii()));
+ if (_WKPHNPObjectHasMethod(m_instanceProxy->hostProxy()->port(),
+ m_instanceProxy->pluginID(),
+ m_objectID, methodName) != KERN_SUCCESS)
+ return MethodList();
+
+ auto_ptr<NetscapePluginInstanceProxy::BooleanReply> reply = m_instanceProxy->waitForReply<NetscapePluginInstanceProxy::BooleanReply>();
+ if (reply.get() && reply->m_result) {
+ Method* method = new ProxyMethod(methodName);
+
+ m_methods.set(identifier.ustring().rep(), method);
+
+ MethodList methodList;
+ methodList.append(method);
+ return methodList;
+ }
+
+ return MethodList();
+}
+
+Field* ProxyInstance::fieldNamed(const Identifier& identifier)
+{
+ if (Field* field = m_fields.get(identifier.ustring().rep()))
+ return field;
+
+ uint64_t propertyName = reinterpret_cast<uint64_t>(_NPN_GetStringIdentifier(identifier.ascii()));
+ if (_WKPHNPObjectHasProperty(m_instanceProxy->hostProxy()->port(),
+ m_instanceProxy->pluginID(),
+ m_objectID, propertyName) != KERN_SUCCESS)
+ return 0;
+
+ auto_ptr<NetscapePluginInstanceProxy::BooleanReply> reply = m_instanceProxy->waitForReply<NetscapePluginInstanceProxy::BooleanReply>();
+ if (reply.get() && reply->m_result) {
+ Field* field = new ProxyField(propertyName);
+
+ m_fields.set(identifier.ustring().rep(), field);
+
+ return field;
+ }
+
+ return 0;
+}
+
+JSC::JSValuePtr ProxyInstance::fieldValue(ExecState* exec, const Field* field) const
+{
+ uint64_t serverIdentifier = static_cast<const ProxyField*>(field)->serverIdentifier();
+
+ if (_WKPHNPObjectGetProperty(m_instanceProxy->hostProxy()->port(),
+ m_instanceProxy->pluginID(),
+ m_objectID, serverIdentifier) != KERN_SUCCESS)
+ return jsUndefined();
+
+ auto_ptr<NetscapePluginInstanceProxy::BooleanAndDataReply> reply = m_instanceProxy->waitForReply<NetscapePluginInstanceProxy::BooleanAndDataReply>();
+ if (!reply.get() || !reply->m_returnValue)
+ return jsUndefined();
+
+ return m_instanceProxy->demarshalValue(exec, (char*)CFDataGetBytePtr(reply->m_result.get()), CFDataGetLength(reply->m_result.get()));
+}
+
+void ProxyInstance::setFieldValue(ExecState* exec, const Field* field, JSValuePtr value) const
+{
+ uint64_t serverIdentifier = static_cast<const ProxyField*>(field)->serverIdentifier();
+
+ data_t valueData;
+ mach_msg_type_number_t valueLength;
+
+ m_instanceProxy->marshalValue(exec, value, valueData, valueLength);
+ kern_return_t kr = _WKPHNPObjectSetProperty(m_instanceProxy->hostProxy()->port(),
+ m_instanceProxy->pluginID(),
+ m_objectID, serverIdentifier, valueData, valueLength);
+ mig_deallocate(reinterpret_cast<vm_address_t>(valueData), valueLength);
+ if (kr != KERN_SUCCESS)
+ return;
+
+ auto_ptr<NetscapePluginInstanceProxy::BooleanReply> reply = m_instanceProxy->waitForReply<NetscapePluginInstanceProxy::BooleanReply>();
+}
+
+} // namespace WebKit
+
+#endif // USE(PLUGIN_HOST_PROCESS)
+
diff --git a/WebKit/mac/Plugins/Hosted/WebHostedNetscapePluginView.h b/WebKit/mac/Plugins/Hosted/WebHostedNetscapePluginView.h
new file mode 100644
index 0000000..14b0dc1
--- /dev/null
+++ b/WebKit/mac/Plugins/Hosted/WebHostedNetscapePluginView.h
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2008 Apple Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if USE(PLUGIN_HOST_PROCESS)
+
+#import "WebBaseNetscapePluginView.h"
+#import "WebKitSystemInterface.h"
+
+#import <wtf/RefPtr.h>
+
+namespace WebKit {
+ class NetscapePluginInstanceProxy;
+}
+
+@interface WebHostedNetscapePluginView : WebBaseNetscapePluginView
+{
+ RetainPtr<NSArray> _attributeKeys;
+ RetainPtr<NSArray> _attributeValues;
+
+ RetainPtr<CALayer> _pluginLayer;
+ WKSoftwareCARendererRef _softwareRenderer;
+
+ RefPtr<WebKit::NetscapePluginInstanceProxy> _proxy;
+ BOOL _pluginHostDied;
+}
+
+- (id)initWithFrame:(NSRect)r
+ pluginPackage:(WebNetscapePluginPackage *)thePluginPackage
+ URL:(NSURL *)URL
+ baseURL:(NSURL *)baseURL
+ MIMEType:(NSString *)MIME
+ attributeKeys:(NSArray *)keys
+ attributeValues:(NSArray *)values
+ loadManually:(BOOL)loadManually
+ DOMElement:(DOMElement *)anElement;
+
+- (void)pluginHostDied;
+@end
+
+#endif // USE(PLUGIN_HOST_PROCESS)
+
diff --git a/WebKit/mac/Plugins/Hosted/WebHostedNetscapePluginView.mm b/WebKit/mac/Plugins/Hosted/WebHostedNetscapePluginView.mm
new file mode 100644
index 0000000..f30c2cb
--- /dev/null
+++ b/WebKit/mac/Plugins/Hosted/WebHostedNetscapePluginView.mm
@@ -0,0 +1,299 @@
+/*
+ * Copyright (C) 2008 Apple Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#if USE(PLUGIN_HOST_PROCESS)
+
+#import "WebHostedNetscapePluginView.h"
+
+#import "NetscapePluginInstanceProxy.h"
+#import "NetscapePluginHostManager.h"
+#import "NetscapePluginHostProxy.h"
+#import "WebView.h"
+#import "WebViewInternal.h"
+#import "WebUIDelegate.h"
+
+#import <CoreFoundation/CoreFoundation.h>
+#import <WebCore/runtime.h>
+#import <WebCore/runtime_root.h>
+#import <WebCore/WebCoreObjCExtras.h>
+#import <runtime/InitializeThreading.h>
+#import <wtf/Assertions.h>
+
+using namespace WebKit;
+
+extern "C" {
+#include "WebKitPluginClientServer.h"
+#include "WebKitPluginHost.h"
+}
+
+@implementation WebHostedNetscapePluginView
+
++ (void)initialize
+{
+ JSC::initializeThreading();
+#ifndef BUILDING_ON_TIGER
+ WebCoreObjCFinalizeOnMainThread(self);
+#endif
+ WKSendUserChangeNotifications();
+}
+
+- (id)initWithFrame:(NSRect)frame
+ pluginPackage:(WebNetscapePluginPackage *)pluginPackage
+ URL:(NSURL *)URL
+ baseURL:(NSURL *)baseURL
+ MIMEType:(NSString *)MIME
+ attributeKeys:(NSArray *)keys
+ attributeValues:(NSArray *)values
+ loadManually:(BOOL)loadManually
+ DOMElement:(DOMElement *)element
+{
+ self = [super initWithFrame:frame pluginPackage:pluginPackage URL:URL baseURL:baseURL MIMEType:MIME attributeKeys:keys attributeValues:values loadManually:loadManually DOMElement:element];
+ if (!self)
+ return nil;
+
+ return self;
+}
+
+- (void)handleMouseMoved:(NSEvent *)event
+{
+ if (_isStarted && _proxy)
+ _proxy->mouseEvent(self, event, NPCocoaEventMouseMoved);
+}
+
+- (void)setAttributeKeys:(NSArray *)keys andValues:(NSArray *)values
+{
+ ASSERT(!_attributeKeys && !_attributeValues);
+
+ _attributeKeys.adoptNS([keys copy]);
+ _attributeValues.adoptNS([values copy]);
+}
+
+- (BOOL)createPlugin
+{
+ ASSERT(!_proxy);
+
+ NSString *userAgent = [[self webView] userAgentForURL:_baseURL.get()];
+
+ _proxy = NetscapePluginHostManager::shared().instantiatePlugin(_pluginPackage.get(), self, _MIMEType.get(), _attributeKeys.get(), _attributeValues.get(), userAgent, _sourceURL.get());
+ if (!_proxy)
+ return NO;
+
+ if (_proxy->useSoftwareRenderer())
+ _softwareRenderer = WKSoftwareCARendererCreate(_proxy->renderContextID());
+ else {
+ _pluginLayer = WKMakeRenderLayer(_proxy->renderContextID());
+ self.wantsLayer = YES;
+ }
+
+ // Update the window frame.
+ _proxy->windowFrameChanged([[self window] frame]);
+
+ return YES;
+}
+
+- (void)setLayer:(CALayer *)newLayer
+{
+ [super setLayer:newLayer];
+
+ if (_pluginLayer)
+ [newLayer addSublayer:_pluginLayer.get()];
+}
+
+- (void)loadStream
+{
+}
+
+- (void)updateAndSetWindow
+{
+ if (!_proxy)
+ return;
+
+ // Use AppKit to convert view coordinates to NSWindow coordinates.
+ NSRect boundsInWindow = [self convertRect:[self bounds] toView:nil];
+ NSRect visibleRectInWindow = [self convertRect:[self visibleRect] toView:nil];
+
+ // Flip Y to convert NSWindow coordinates to top-left-based window coordinates.
+ float borderViewHeight = [[self currentWindow] frame].size.height;
+ boundsInWindow.origin.y = borderViewHeight - NSMaxY(boundsInWindow);
+ visibleRectInWindow.origin.y = borderViewHeight - NSMaxY(visibleRectInWindow);
+
+ _proxy->resize(boundsInWindow, visibleRectInWindow);
+}
+
+- (void)windowFocusChanged:(BOOL)hasFocus
+{
+ if (_proxy)
+ _proxy->windowFocusChanged(hasFocus);
+}
+
+- (BOOL)shouldStop
+{
+ return YES;
+}
+
+- (void)destroyPlugin
+{
+ if (_proxy) {
+ if (_softwareRenderer) {
+ WKSoftwareCARendererDestroy(_softwareRenderer);
+ _softwareRenderer = 0;
+ }
+
+ _proxy->destroy();
+ _proxy = 0;
+ }
+
+ _pluginLayer = 0;
+}
+
+- (void)startTimers
+{
+ if (_proxy)
+ _proxy->startTimers(_isCompletelyObscured);
+}
+
+- (void)stopTimers
+{
+ if (_proxy)
+ _proxy->stopTimers();
+}
+
+- (void)focusChanged
+{
+ if (_proxy)
+ _proxy->focusChanged(_hasFocus);
+}
+
+- (void)windowFrameDidChange:(NSNotification *)notification
+{
+ if (_proxy && [self window])
+ _proxy->windowFrameChanged([[self window] frame]);
+}
+
+- (void)addWindowObservers
+{
+ [super addWindowObservers];
+
+ ASSERT([self window]);
+
+ NSWindow *theWindow = [self window];
+
+ NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
+ [notificationCenter addObserver:self selector:@selector(windowFrameDidChange:)
+ name:NSWindowDidMoveNotification object:theWindow];
+ [notificationCenter addObserver:self selector:@selector(windowFrameDidChange:)
+ name:NSWindowDidResizeNotification object:theWindow];
+}
+
+- (void)removeWindowObservers
+{
+ [super removeWindowObservers];
+
+ NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
+ [notificationCenter removeObserver:self name:NSWindowDidMoveNotification object:nil];
+ [notificationCenter removeObserver:self name:NSWindowDidResizeNotification object:nil];
+}
+
+- (void)mouseDown:(NSEvent *)event
+{
+ if (_isStarted && _proxy)
+ _proxy->mouseEvent(self, event, NPCocoaEventMouseDown);
+}
+
+- (void)mouseUp:(NSEvent *)event
+{
+ if (_isStarted && _proxy)
+ _proxy->mouseEvent(self, event, NPCocoaEventMouseUp);
+}
+
+- (void)mouseDragged:(NSEvent *)event
+{
+ if (_isStarted && _proxy)
+ _proxy->mouseEvent(self, event, NPCocoaEventMouseDragged);
+}
+
+- (void)mouseEntered:(NSEvent *)event
+{
+ if (_isStarted && _proxy)
+ _proxy->mouseEvent(self, event, NPCocoaEventMouseEntered);
+}
+
+- (void)mouseExited:(NSEvent *)event
+{
+ if (_isStarted && _proxy)
+ _proxy->mouseEvent(self, event, NPCocoaEventMouseExited);
+}
+
+- (void)keyDown:(NSEvent *)event
+{
+ if (_isStarted && _proxy)
+ _proxy->keyEvent(self, event, NPCocoaEventKeyDown);
+}
+
+- (void)keyUp:(NSEvent *)event
+{
+ if (_isStarted && _proxy)
+ _proxy->keyEvent(self, event, NPCocoaEventKeyUp);
+}
+
+- (void)pluginHostDied
+{
+ _pluginHostDied = YES;
+
+ _pluginLayer = nil;
+ _proxy = 0;
+
+ // No need for us to be layer backed anymore
+ self.wantsLayer = NO;
+
+ [self setNeedsDisplay:YES];
+}
+
+
+- (void)drawRect:(NSRect)rect
+{
+ if (_proxy) {
+ if (_softwareRenderer)
+ WKSoftwareCARendererRender(_softwareRenderer, (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort], NSRectToCGRect(rect));
+ return;
+ }
+
+ if (_pluginHostDied) {
+ // Fill the area with a nice red color for now.
+ [[NSColor redColor] set];
+ NSRectFill(rect);
+ }
+}
+
+- (PassRefPtr<JSC::Bindings::Instance>)createPluginBindingsInstance:(PassRefPtr<JSC::Bindings::RootObject>)rootObject
+{
+ if (!_proxy)
+ return 0;
+
+ return _proxy->createBindingsInstance(rootObject);
+}
+
+@end
+
+#endif
diff --git a/WebKitTools/DumpRenderTree/mac/AccessibilityControllerMac.mm b/WebKit/mac/Plugins/Hosted/WebKitPluginAgent.defs
index 482c4f3..0f332b6 100644
--- a/WebKitTools/DumpRenderTree/mac/AccessibilityControllerMac.mm
+++ b/WebKit/mac/Plugins/Hosted/WebKitPluginAgent.defs
@@ -22,33 +22,24 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
+#include <WebKit/WebKitPluginHostTypes.defs>
-#import "DumpRenderTree.h"
-#import "AccessibilityController.h"
+subsystem WebKitPluginAgent 100;
-#import "AccessibilityUIElement.h"
-#import <Foundation/Foundation.h>
-#import <WebKit/WebFrame.h>
-#import <WebKit/WebHTMLView.h>
+serverprefix WKPA;
+userprefix _WKPA;
-AccessibilityController::AccessibilityController()
-{
-}
+routine CheckInApplication(serverPort :mach_port_t;
+ ServerAuditToken token :audit_token_t;
+ applicationName :application_name_t;
+ out pluginVendorPort :mach_port_make_send_t);
-AccessibilityController::~AccessibilityController()
-{
-}
+routine SpawnPluginHost(pluginVendorPort :mach_port_t;
+ sreplyport _replyPort :mach_port_make_send_once_t;
+ options :plist_bytes_t;
+ out pluginHostPort: mach_port_move_send_t);
-AccessibilityUIElement AccessibilityController::focusedElement()
-{
- // FIXME: we could do some caching here.
- id accessibilityObject = [[[mainFrame frameView] documentView] accessibilityFocusedUIElement];
- return AccessibilityUIElement(accessibilityObject);
-}
-
-AccessibilityUIElement AccessibilityController::rootElement()
-{
- // FIXME: we could do some caching here.
- id accessibilityObject = [[mainFrame frameView] documentView];
- return AccessibilityUIElement(accessibilityObject);
-}
+routine CheckInPluginHost(serverPort :mach_port_t;
+ pluginHostPort :mach_port_move_send_t;
+ ServerAuditToken token :audit_token_t);
diff --git a/WebKitTools/DumpRenderTree/AccessibilityController.h b/WebKit/mac/Plugins/Hosted/WebKitPluginAgentReply.defs
index 0af6613..c802b3d 100644
--- a/WebKitTools/DumpRenderTree/AccessibilityController.h
+++ b/WebKit/mac/Plugins/Hosted/WebKitPluginAgentReply.defs
@@ -22,27 +22,17 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
+#include <WebKit/WebKitPluginHostTypes.defs>
-#ifndef AccessibilityController_h
-#define AccessibilityController_h
+subsystem WebKitPluginAgentReply 200;
-#include <JavaScriptCore/JSObjectRef.h>
+serverprefix WKPA;
+userprefix _WKPA;
-class AccessibilityUIElement;
+skip; // CheckInApplication
-class AccessibilityController {
-public:
- AccessibilityController();
- ~AccessibilityController();
+simpleroutine SpawnPluginHostReply(_replyPort :mach_port_move_send_once_t;
+ in pluginHostPort: mach_port_move_send_t);
- void makeWindowObject(JSContextRef context, JSObjectRef windowObject, JSValueRef* exception);
-
- // Controller Methods - platform-independent implementations
- AccessibilityUIElement rootElement();
- AccessibilityUIElement focusedElement();
-
-private:
- static JSClassRef getJSClass();
-};
-
-#endif // AccessibilityController_h
+skip; // CheckInPluginHost
diff --git a/WebKit/mac/Plugins/Hosted/WebKitPluginClient.defs b/WebKit/mac/Plugins/Hosted/WebKitPluginClient.defs
new file mode 100644
index 0000000..1aab38d
--- /dev/null
+++ b/WebKit/mac/Plugins/Hosted/WebKitPluginClient.defs
@@ -0,0 +1,166 @@
+/*
+ * Copyright (C) 2008 Apple Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <WebKit/WebKitPluginHostTypes.defs>
+
+// FIXME: Come up with a better name.
+subsystem WebKitPluginClient 300;
+
+serverprefix WKPC;
+userprefix _WKPC;
+
+simpleroutine StatusText(clientPort :mach_port_t;
+ pluginID :uint32_t;
+ text :data_t);
+
+routine LoadURL(clientPort :mach_port_t;
+ pluginID :uint32_t;
+ url :data_t;
+ target :data_t;
+ postData :data_t;
+ flags: uint32_t;
+ out resultCode :uint16_t;
+ out requestID :uint32_t);
+
+simpleroutine CancelLoadURL(clientPort :mach_port_t;
+ pluginID :uint32_t;
+ streamID :uint32_t;
+ reason :int16_t);
+
+simpleroutine InvalidateRect(clientPort :mach_port_t;
+ pluginID :uint32_t;
+ x :double;
+ y :double;
+ width :double;
+ height :double);
+
+// NPRuntime
+
+routine GetStringIdentifier(clientPort :mach_port_t;
+ name :data_t;
+ out identifier :uint64_t);
+
+routine GetIntIdentifier(clientPort :mach_port_t;
+ value :int32_t;
+ out identifier: uint64_t);
+
+routine GetWindowNPObject(clientPort :mach_port_t;
+ pluginID :uint32_t;
+ out objectID :uint32_t);
+
+routine ReleaseObject(clientPort :mach_port_t;
+ pluginID :uint32_t;
+ objectID :uint32_t);
+
+simpleroutine Evaluate(clientPort :mach_port_t;
+ pluginID :uint32_t;
+ objectID :uint32_t;
+ script :data_t);
+
+simpleroutine Invoke(clientPort :mach_port_t;
+ pluginID :uint32_t;
+ objectID :uint32_t;
+ methodNameIdentifier :uint64_t;
+ arguments :data_t);
+
+routine InvokeDefault(clientPort :mach_port_t;
+ pluginID :uint32_t;
+ objectID :uint32_t;
+ arguments :data_t;
+ out returnValue :boolean_t;
+ out result :data_t, dealloc);
+
+routine Construct(clientPort :mach_port_t;
+ pluginID :uint32_t;
+ objectID :uint32_t;
+ arguments :data_t;
+ out returnValue :boolean_t;
+ out result :data_t, dealloc);
+
+routine GetProperty(clientPort :mach_port_t;
+ pluginID :uint32_t;
+ objectID :uint32_t;
+ propertyNameIdentifier :uint64_t;
+ out returnValue :boolean_t;
+ out result :data_t, dealloc);
+
+routine SetProperty(clientPort :mach_port_t;
+ pluginID :uint32_t;
+ objectID :uint32_t;
+ propertyNameIdentifier :uint64_t;
+ value :data_t;
+ out returnValue :boolean_t);
+
+routine RemoveProperty(clientPort :mach_port_t;
+ pluginID :uint32_t;
+ objectID :uint32_t;
+ propertyNameIdentifier :uint64_t;
+ out returnValue :boolean_t);
+
+routine HasProperty(clientPort :mach_port_t;
+ pluginID :uint32_t;
+ objectID :uint32_t;
+ propertyNameIdentifier :uint64_t;
+ out returnValue :boolean_t);
+
+routine HasMethod(clientPort :mach_port_t;
+ pluginID :uint32_t;
+ objectID :uint32_t;
+ methodNameIdentifier :uint64_t;
+ out returnValue :boolean_t);
+
+routine IdentifierInfo(clientPort :mach_port_t;
+ identifier :uint64_t;
+ out info :data_t, dealloc);
+
+// Misc
+
+simpleroutine SetMenuBarVisible(clientPort :mach_port_t;
+ visible :boolean_t);
+
+simpleroutine SetModal(clientPort :mach_port_t;
+ modal :boolean_t);
+
+// Replies
+simpleroutine InstantiatePluginReply(clientPort :mach_port_t;
+ pluginID :uint32_t;
+ result :kern_return_t;
+ renderContextID :uint32_t;
+ useSoftwareRenderer :boolean_t);
+
+simpleroutine GetScriptableNPObjectReply(clientPort :mach_port_t;
+ pluginID :uint32_t;
+ objectID :uint32_t);
+
+simpleroutine BooleanReply(clientPort :mach_port_t;
+ pluginID :uint32_t;
+ result :boolean_t);
+
+simpleroutine BooleanAndDataReply(clientPort :mach_port_t;
+ pluginID :uint32_t;
+ returnValue :boolean_t;
+ result :data_t);
+
+
diff --git a/WebKit/mac/Plugins/Hosted/WebKitPluginHost.defs b/WebKit/mac/Plugins/Hosted/WebKitPluginHost.defs
new file mode 100644
index 0000000..4fe96f9
--- /dev/null
+++ b/WebKit/mac/Plugins/Hosted/WebKitPluginHost.defs
@@ -0,0 +1,172 @@
+/*
+ * Copyright (C) 2008 Apple Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <WebKit/WebKitPluginHostTypes.defs>
+
+subsystem WebKitPluginHost 300;
+
+serverprefix WKPH;
+userprefix _WKPH;
+
+routine CheckInWithPluginHost(pluginHostPort :mach_port_t;
+ options :plist_bytes_t;
+ clientPort :mach_port_make_send_t;
+ renderPort :mach_port_copy_send_t);
+
+simpleroutine InstantiatePlugin(pluginHostPort :mach_port_t;
+ options :plist_bytes_t;
+ pluginID :uint32_t);
+
+simpleroutine ResizePluginInstance(pluginHostPort :mach_port_t;
+ pluginID :uint32_t;
+ x :double;
+ y :double;
+ width :double;
+ height :double);
+simpleroutine PluginInstanceFocusChanged(pluginHostPort :mach_port_t;
+ pluginID :uint32_t;
+ hasFocus :boolean_t);
+simpleroutine PluginInstanceWindowFocusChanged(pluginHostPort :mach_port_t;
+ pluginID :uint32_t;
+ hasFocus :boolean_t);
+simpleroutine PluginInstanceWindowFrameChanged(pluginHostPort :mach_port_t;
+ pluginID :uint32_t;
+ x :double;
+ y :double;
+ width :double;
+ height :double;
+ maxScreenY :double);
+
+simpleroutine PluginInstanceMouseEvent(pluginHostPort :mach_port_t;
+ pluginID :uint32_t;
+ timestamp :double;
+ eventType :uint32_t;
+ modifierFlags :uint32_t;
+ pluginX :double;
+ pluginY :double;
+ screenX :double;
+ screenY :double;
+ maxScreenY :double;
+ buttonNumber :int32_t;
+ clickCount :int32_t;
+ deltaX :double;
+ deltaY :double;
+ deltaZ: double);
+
+simpleroutine PluginInstanceKeyboardEvent(pluginHostPort :mach_port_t;
+ pluginID :uint32_t;
+ timestamp :double;
+ eventType :uint32_t;
+ modifierFlags :uint32_t;
+ characters :data_t;
+ charactersIgnoringModifiers :data_t;
+ isARepeat :boolean_t;
+ keyCode :uint16_t);
+
+simpleroutine PluginInstanceStartTimers(pluginHostPort :mach_port_t;
+ pluginID :uint32_t;
+ throttleTimers :boolean_t);
+simpleroutine PluginInstanceStopTimers(pluginHostPort :mach_port_t;
+ pluginID :uint32_t);
+
+simpleroutine DestroyPluginInstance(pluginHostPort :mach_port_t;
+ pluginID :uint32_t);
+
+
+// Streams
+simpleroutine StartStream(pluginHostPort :mach_port_t;
+ pluginID :uint32_t;
+ streamID :uint32_t;
+ responseURL :data_t;
+ expectedContentLength :int64_t;
+ lastModifiedTimeInterval :double;
+ mimeType :data_t;
+ headers :data_t);
+
+simpleroutine StreamDidReceiveData(pluginHostPort :mach_port_t;
+ pluginID :uint32_t;
+ streamID :uint32_t;
+ data :data_t);
+
+simpleroutine StreamDidFinishLoading(pluginHostPort :mach_port_t;
+ pluginID :uint32_t;
+ streamID :uint32_t);
+
+simpleroutine StreamDidFail(pluginHostPort :mach_port_t;
+ pluginID :uint32_t;
+ streamID :uint32_t;
+ reason :int16_t);
+
+// NPRuntime
+
+simpleroutine GetScriptableNPObject(pluginHostPort :mach_port_t;
+ pluginID :uint32_t);
+
+simpleroutine NPObjectHasProperty(pluginHostPort :mach_port_t;
+ pluginID :uint32_t;
+ objectID :uint32_t;
+ propertyName :uint64_t);
+
+simpleroutine NPObjectHasMethod(pluginHostPort :mach_port_t;
+ pluginID :uint32_t;
+ objectID :uint32_t;
+ methodName :uint64_t);
+
+simpleroutine NPObjectInvoke(pluginHostPort :mach_port_t;
+ pluginID :uint32_t;
+ objectID :uint32_t;
+ invokeType :uint32_t;
+ methodName :uint64_t;
+ arguments :data_t);
+
+simpleroutine NPObjectHasInvokeDefaultMethod(pluginHostPort :mach_port_t;
+ pluginID :uint32_t;
+ objectID :uint32_t);
+
+simpleroutine NPObjectHasConstructMethod(pluginHostPort :mach_port_t;
+ pluginID :uint32_t;
+ objectID :uint32_t);
+
+simpleroutine NPObjectGetProperty(pluginHostPort :mach_port_t;
+ pluginID :uint32_t;
+ objectID :uint32_t;
+ propertyName :uint64_t);
+
+simpleroutine NPObjectSetProperty(pluginHostPort :mach_port_t;
+ pluginID :uint32_t;
+ objectID :uint32_t;
+ propertyName :uint64_t;
+ value :data_t);
+
+simpleroutine NPObjectRelease(pluginHostPort :mach_port_t;
+ pluginID :uint32_t;
+ objectID :uint32_t);
+
+// Replies
+
+simpleroutine EvaluateReply(pluginHostPort :mach_port_t;
+ pluginID :uint32_t;
+ returnValue :boolean_t;
+ result :data_t);
diff --git a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.h b/WebKit/mac/Plugins/Hosted/WebKitPluginHostTypes.defs
index 1295fb7..ee53520 100644
--- a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.h
+++ b/WebKit/mac/Plugins/Hosted/WebKitPluginHostTypes.defs
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
+ * Copyright (C) 2008 Apple Inc. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -23,7 +23,11 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#include <WebKit/npapi.h>
-#include <WebKit/npruntime.h>
+#include <mach/std_types.defs>
+#include <mach/mach_types.defs>
-NPClass *getTestClass(void);
+import <WebKit/WebKitPluginHostTypes.h>;
+
+type plist_bytes_t = ^array [] of uint8_t;
+type application_name_t = ^array [] of uint8_t;
+type data_t = ^array [] of char;
diff --git a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h b/WebKit/mac/Plugins/Hosted/WebKitPluginHostTypes.h
index a5441d8..a5efde9 100644
--- a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h
+++ b/WebKit/mac/Plugins/Hosted/WebKitPluginHostTypes.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
+ * Copyright (C) 2008 Apple Inc. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -23,28 +23,39 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#include <WebKit/npfunctions.h>
+#ifndef WebKitPluginHostTypes_h
+#define WebKitPluginHostTypes_h
-extern NPNetscapeFuncs *browser;
+typedef uint8_t* plist_bytes_t;
+typedef uint8_t* application_name_t;
-typedef struct {
- NPObject header;
- NPP npp;
- NPBool eventLogging;
- NPBool logSetWindow;
- NPBool logDestroy;
- NPBool returnErrorFromNewStream;
- NPObject* testObject;
- NPStream* stream;
- char* onStreamLoad;
- char* onStreamDestroy;
- char* onURLNotify;
- char* firstUrl;
- char* firstHeaders;
- char* lastUrl;
- char* lastHeaders;
-} PluginObject;
+typedef char* data_t;
-extern NPClass *getPluginClass(void);
-extern void handleCallback(PluginObject* object, const char *url, NPReason reason, void *notifyData);
-extern void notifyStream(PluginObject* object, const char *url, const char *headers);
+#ifndef __MigTypeCheck
+#define __MigTypeCheck 1
+#endif
+
+enum LoadURLFlags {
+ IsPost = 1 << 0,
+ PostDataIsFile = 1 << 1,
+ AllowHeadersInPostData = 1 << 2,
+ CurrentEventIsUserGesture = 1 << 3,
+};
+
+enum InvokeType {
+ Invoke,
+ InvokeDefault,
+ Construct
+};
+
+enum ValueType {
+ VoidValueType,
+ NullValueType,
+ BoolValueType,
+ DoubleValueType,
+ StringValueType,
+ JSObjectValueType,
+ NPObjectValueType
+};
+
+#endif // WebKitPluginHostTypes_h
diff --git a/WebKitExamplePlugins/ChangeLog b/WebKitExamplePlugins/ChangeLog
deleted file mode 100644
index 551a3fc..0000000
--- a/WebKitExamplePlugins/ChangeLog
+++ /dev/null
@@ -1,127 +0,0 @@
-2008-08-20 Josh Aas <joshmoz@gmail.com>
-
- Reviewed and landed by Anders.
-
- <rdar://problem/6163636>
- rename NPCocoaEvent's "event" struct to "data" (20446)
-
- * NetscapeCocoaPlugin/main.m:
- (handleMouseEvent):
- (handleKeyboardEvent):
- (NPP_HandleEvent):
-
-2008-05-22 Josh Aas <joshmoz@gmail.com>
-
- Reviewed by Anders.
-
- Use correct enum.
-
- * NetscapeCocoaPlugin/main.m:
- (NPP_New):
- * NetscapeInputMethodPlugin/main.m:
- (NPP_New):
-
-2008-05-12 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Alexey.
-
- Add input method test plug-in.
-
- * NetscapeInputMethodPlugin: Added.
- * NetscapeInputMethodPlugin/English.lproj: Added.
- * NetscapeInputMethodPlugin/English.lproj/InfoPlist.strings: Added.
- * NetscapeInputMethodPlugin/Info.plist: Added.
- * NetscapeInputMethodPlugin/NetscapeInputMethodPlugin.xcodeproj: Added.
- * NetscapeInputMethodPlugin/NetscapeInputMethodPlugin.xcodeproj/project.pbxproj: Added.
- * NetscapeInputMethodPlugin/main.m: Added.
- (NP_Initialize):
- (NP_GetEntryPoints):
- (NP_Shutdown):
- (NPP_New):
- (NPP_Destroy):
- (NPP_SetWindow):
- (NPP_NewStream):
- (NPP_DestroyStream):
- (NPP_WriteReady):
- (NPP_Write):
- (NPP_StreamAsFile):
- (NPP_Print):
- (handleDraw):
- (invalidatePlugin):
- (handleFocusChanged):
- (handleMouseMoved):
- (handleMouseDown):
- (NPP_HandleEvent):
- (NPP_URLNotify):
- (selectionRange):
- (NPP_InsertText):
- (NPP_DoCommandBySelector):
- (markedTextAttributes):
- (NPP_SetMarkedText):
- (NPP_UnmarkText):
- (NPP_HasMarkedText):
- (NPP_AttributedSubstringFromRange):
- (NPP_MarkedRange):
- (NPP_SelectedRange):
- (NPP_FirstRectForCharacterRange):
- (pluginTextInputFuncs):
- (NPP_GetValue):
- (NPP_SetValue):
- * NetscapeInputMethodPlugin/test.html: Added.
-
-2008-05-06 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Mitz.
-
- Add NPN_PopUpContextMenu example.
-
- * NetscapeCocoaPlugin/MenuHandler.h: Added.
- * NetscapeCocoaPlugin/MenuHandler.m: Added.
- (-[MenuHandler _openURL:]):
- (-[MenuHandler _disabledItem:]):
- (-[MenuHandler validateUserInterfaceItem:]):
- (-[MenuHandler initWithBrowserFuncs:instance:]):
- (-[MenuHandler dealloc]):
- (-[MenuHandler menu]):
- * NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj/project.pbxproj:
- * NetscapeCocoaPlugin/main.m:
- (NPP_Destroy):
- (handleMouseEvent):
-
-2008-05-06 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Jon, Tim and Mark.
-
- Add a sample NPAPI plugin that uses the Cocoa event model.
-
- * .: Added.
- * ChangeLog: Added.
- * NetscapeCocoaPlugin: Added.
- * NetscapeCocoaPlugin/English.lproj: Added.
- * NetscapeCocoaPlugin/English.lproj/InfoPlist.strings: Added.
- * NetscapeCocoaPlugin/Info.plist: Added.
- * NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj: Added.
- * NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj/project.pbxproj: Added.
- * NetscapeCocoaPlugin/main.m: Added.
- (NP_Initialize):
- (NP_GetEntryPoints):
- (NP_Shutdown):
- (NPP_New):
- (NPP_Destroy):
- (NPP_SetWindow):
- (NPP_NewStream):
- (NPP_DestroyStream):
- (NPP_WriteReady):
- (NPP_Write):
- (NPP_StreamAsFile):
- (NPP_Print):
- (handleDraw):
- (eventType):
- (invalidatePlugin):
- (handleMouseEvent):
- (handleKeyboardEvent):
- (NPP_HandleEvent):
- (NPP_URLNotify):
- (NPP_GetValue):
- (NPP_SetValue):
- * NetscapeCocoaPlugin/test.html: Added.
diff --git a/WebKitExamplePlugins/NetscapeCocoaPlugin/Info.plist b/WebKitExamplePlugins/NetscapeCocoaPlugin/Info.plist
deleted file mode 100644
index 47ae1a5..0000000
--- a/WebKitExamplePlugins/NetscapeCocoaPlugin/Info.plist
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>NetscapeCocoaPlugin</string>
- <key>CFBundleIconFile</key>
- <string></string>
- <key>CFBundleIdentifier</key>
- <string>com.apple.netscapecocoaplugin</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundlePackageType</key>
- <string>BRPL</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1.0</string>
- <key>WebPluginDescription</key>
- <string>Simple Netscape plug-in that draws using CoreGraphics and handles events using the Cocoa event model</string>
- <key>WebPluginMIMETypes</key>
- <dict>
- <key>test/x-netscape-cocoa-plugin</key>
- <dict>
- <key>WebPluginTypeDescription</key>
- <string>Netscape Cocoa Plug-in</string>
- </dict>
- </dict>
- <key>WebPluginName</key>
- <string>Netscape Cocoa Plug-in</string>
-</dict>
-</plist>
diff --git a/WebKitExamplePlugins/NetscapeCocoaPlugin/MenuHandler.h b/WebKitExamplePlugins/NetscapeCocoaPlugin/MenuHandler.h
deleted file mode 100644
index 19070f0..0000000
--- a/WebKitExamplePlugins/NetscapeCocoaPlugin/MenuHandler.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in
- consideration of your agreement to the following terms, and your use, installation,
- modification or redistribution of this Apple software constitutes acceptance of these
- terms. If you do not agree with these terms, please do not use, install, modify or
- redistribute this Apple software.
-
- In consideration of your agreement to abide by the following terms, and subject to these
- terms, Apple grants you a personal, non-exclusive license, under Apple’s copyrights in
- this original Apple software (the "Apple Software"), to use, reproduce, modify and
- redistribute the Apple Software, with or without modifications, in source and/or binary
- forms; provided that if you redistribute the Apple Software in its entirety and without
- modifications, you must retain this notice and the following text and disclaimers in all
- such redistributions of the Apple Software. Neither the name, trademarks, service marks
- or logos of Apple Computer, Inc. may be used to endorse or promote products derived from
- the Apple Software without specific prior written permission from Apple. Except as expressly
- stated in this notice, no other rights or licenses, express or implied, are granted by Apple
- herein, including but not limited to any patent rights that may be infringed by your
- derivative works or by other works in which the Apple Software may be incorporated.
-
- The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES,
- EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT,
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS
- USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
-
- IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE,
- REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND
- WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR
- OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <Cocoa/Cocoa.h>
-#import <WebKit/npfunctions.h>
-
-@interface MenuHandler : NSObject {
- NSMenu *menu;
- NPNetscapeFuncs *browserFuncs;
- NPP instance;
-}
-
-- (id)initWithBrowserFuncs:(NPNetscapeFuncs *)theBrowserFuncs instance:(NPP)theInstance;
-
-- (NSMenu *)menu;
-
-@end
diff --git a/WebKitExamplePlugins/NetscapeCocoaPlugin/MenuHandler.m b/WebKitExamplePlugins/NetscapeCocoaPlugin/MenuHandler.m
deleted file mode 100644
index b9feb1c..0000000
--- a/WebKitExamplePlugins/NetscapeCocoaPlugin/MenuHandler.m
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in
- consideration of your agreement to the following terms, and your use, installation,
- modification or redistribution of this Apple software constitutes acceptance of these
- terms. If you do not agree with these terms, please do not use, install, modify or
- redistribute this Apple software.
-
- In consideration of your agreement to abide by the following terms, and subject to these
- terms, Apple grants you a personal, non-exclusive license, under Apple’s copyrights in
- this original Apple software (the "Apple Software"), to use, reproduce, modify and
- redistribute the Apple Software, with or without modifications, in source and/or binary
- forms; provided that if you redistribute the Apple Software in its entirety and without
- modifications, you must retain this notice and the following text and disclaimers in all
- such redistributions of the Apple Software. Neither the name, trademarks, service marks
- or logos of Apple Computer, Inc. may be used to endorse or promote products derived from
- the Apple Software without specific prior written permission from Apple. Except as expressly
- stated in this notice, no other rights or licenses, express or implied, are granted by Apple
- herein, including but not limited to any patent rights that may be infringed by your
- derivative works or by other works in which the Apple Software may be incorporated.
-
- The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES,
- EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT,
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS
- USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
-
- IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE,
- REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND
- WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR
- OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "MenuHandler.h"
-
-@implementation MenuHandler
-
-- (void)_openURL:(id)sender
-{
- browserFuncs->geturl(instance, "http://www.apple.com/", "_blank");
-}
-
-- (void)_disabledItem:(id)sender
-{
- // This should never be called
-}
-
-- (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)anItem
-{
- SEL sel = [anItem action];
-
- if (sel == @selector(_openURL:))
- return YES;
-
- if (sel == @selector(_disabledItem:))
- return NO;
-
- return NO;
-}
-
-- (id)initWithBrowserFuncs:(NPNetscapeFuncs *)theBrowserFuncs instance:(NPP)theInstance;
-{
- self = [super init];
- if (!self)
- return nil;
-
- browserFuncs = theBrowserFuncs;
- instance = theInstance;
-
- // Create the menu
- menu = [[NSMenu alloc] initWithTitle:@"Menu"];
-
- NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:@"Open URL" action:@selector(_openURL:) keyEquivalent:@""];
- [item setTarget:self];
- [menu addItem:item];
- [item release];
-
- item = [[NSMenuItem alloc] initWithTitle:@"Disabled Item" action:@selector(_disabledItem:) keyEquivalent:@""];
- [item setTarget:self];
- [menu addItem:item];
- [item release];
-
- return self;
-}
-
-- (void)dealloc
-{
- [menu release];
-
- [super dealloc];
-}
-
-
-- (NSMenu *)menu
-{
- return menu;
-}
-
-@end
diff --git a/WebKitExamplePlugins/NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj/project.pbxproj b/WebKitExamplePlugins/NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj/project.pbxproj
deleted file mode 100644
index 1c78769..0000000
--- a/WebKitExamplePlugins/NetscapeCocoaPlugin/NetscapeCocoaPlugin.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,240 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 42;
- objects = {
-
-/* Begin PBXBuildFile section */
- 1A624E590DCBC7F6006898C8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A624E580DCBC7F6006898C8 /* main.m */; };
- 1A6250420DCBC81B006898C8 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A6250410DCBC81B006898C8 /* Cocoa.framework */; };
- 1AAD6A090DD0DC52003985DA /* MenuHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AAD6A080DD0DC52003985DA /* MenuHandler.m */; };
- 8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8D5B49A704867FD3000E48DA /* InfoPlist.strings */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXFileReference section */
- 089C167EFE841241C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
- 1A624E580DCBC7F6006898C8 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
- 1A6250410DCBC81B006898C8 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
- 1AAD6A070DD0DC52003985DA /* MenuHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MenuHandler.h; sourceTree = "<group>"; };
- 1AAD6A080DD0DC52003985DA /* MenuHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MenuHandler.m; sourceTree = "<group>"; };
- 8D576316048677EA00EA77CD /* NetscapeCocoaPlugin.plugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = NetscapeCocoaPlugin.plugin; sourceTree = BUILT_PRODUCTS_DIR; };
- 8D576317048677EA00EA77CD /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 8D576313048677EA00EA77CD /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 1A6250420DCBC81B006898C8 /* Cocoa.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 089C166AFE841209C02AAC07 /* NetscapeCocoaPlugin */ = {
- isa = PBXGroup;
- children = (
- 08FB77AFFE84173DC02AAC07 /* Source */,
- 089C167CFE841241C02AAC07 /* Resources */,
- 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
- 19C28FB6FE9D52B211CA2CBB /* Products */,
- );
- name = NetscapeCocoaPlugin;
- sourceTree = "<group>";
- };
- 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = {
- isa = PBXGroup;
- children = (
- 1A6250410DCBC81B006898C8 /* Cocoa.framework */,
- );
- name = "External Frameworks and Libraries";
- sourceTree = "<group>";
- };
- 089C167CFE841241C02AAC07 /* Resources */ = {
- isa = PBXGroup;
- children = (
- 8D576317048677EA00EA77CD /* Info.plist */,
- 8D5B49A704867FD3000E48DA /* InfoPlist.strings */,
- );
- name = Resources;
- sourceTree = "<group>";
- };
- 08FB77AFFE84173DC02AAC07 /* Source */ = {
- isa = PBXGroup;
- children = (
- 1A624E580DCBC7F6006898C8 /* main.m */,
- 1AAD6A070DD0DC52003985DA /* MenuHandler.h */,
- 1AAD6A080DD0DC52003985DA /* MenuHandler.m */,
- );
- name = Source;
- sourceTree = "<group>";
- };
- 19C28FB6FE9D52B211CA2CBB /* Products */ = {
- isa = PBXGroup;
- children = (
- 8D576316048677EA00EA77CD /* NetscapeCocoaPlugin.plugin */,
- );
- name = Products;
- sourceTree = "<group>";
- };
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
- 8D57630D048677EA00EA77CD /* NetscapeCocoaPlugin */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 149C298308902C53008A9EFC /* Build configuration list for PBXNativeTarget "NetscapeCocoaPlugin" */;
- buildPhases = (
- 8D576311048677EA00EA77CD /* Sources */,
- 8D57630F048677EA00EA77CD /* Resources */,
- 8D576313048677EA00EA77CD /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = NetscapeCocoaPlugin;
- productInstallPath = "$(HOME)/Library/Bundles";
- productName = NetscapeCocoaPlugin;
- productReference = 8D576316048677EA00EA77CD /* NetscapeCocoaPlugin.plugin */;
- productType = "com.apple.product-type.bundle";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 089C1669FE841209C02AAC07 /* Project object */ = {
- isa = PBXProject;
- buildConfigurationList = 149C298708902C53008A9EFC /* Build configuration list for PBXProject "NetscapeCocoaPlugin" */;
- compatibilityVersion = "Xcode 2.4";
- hasScannedForEncodings = 1;
- mainGroup = 089C166AFE841209C02AAC07 /* NetscapeCocoaPlugin */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- 8D57630D048677EA00EA77CD /* NetscapeCocoaPlugin */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- 8D57630F048677EA00EA77CD /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 8D576311048677EA00EA77CD /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 1A624E590DCBC7F6006898C8 /* main.m in Sources */,
- 1AAD6A090DD0DC52003985DA /* MenuHandler.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXVariantGroup section */
- 8D5B49A704867FD3000E48DA /* InfoPlist.strings */ = {
- isa = PBXVariantGroup;
- children = (
- 089C167EFE841241C02AAC07 /* English */,
- );
- name = InfoPlist.strings;
- sourceTree = "<group>";
- };
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
- 149C298408902C53008A9EFC /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = NO;
- GCC_DEBUGGING_SYMBOLS = full;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_ENABLE_FIX_AND_CONTINUE = YES;
- GCC_MODEL_TUNING = G5;
- GCC_OPTIMIZATION_LEVEL = 0;
- INFOPLIST_FILE = Info.plist;
- INSTALL_PATH = "$(HOME)/Library/Bundles";
- PRODUCT_NAME = NetscapeCocoaPlugin;
- WRAPPER_EXTENSION = plugin;
- ZERO_LINK = YES;
- };
- name = Debug;
- };
- 149C298508902C53008A9EFC /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ARCHS = (
- ppc,
- i386,
- );
- GCC_DEBUGGING_SYMBOLS = full;
- GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
- GCC_MODEL_TUNING = G5;
- GCC_OPTIMIZATION_LEVEL = 0;
- INFOPLIST_FILE = Info.plist;
- INSTALL_PATH = "$(HOME)/Library/Bundles";
- PRODUCT_NAME = NetscapeCocoaPlugin;
- WRAPPER_EXTENSION = plugin;
- };
- name = Release;
- };
- 149C298808902C53008A9EFC /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1)";
- ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "ppc i386 ppc64 x86_64";
- GCC_WARN_ABOUT_RETURN_TYPE = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- PREBINDING = NO;
- SDKROOT = /Developer/SDKs/MacOSX10.5.sdk;
- };
- name = Debug;
- };
- 149C298908902C53008A9EFC /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1)";
- ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "ppc i386 ppc64 x86_64";
- GCC_WARN_ABOUT_RETURN_TYPE = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- PREBINDING = NO;
- SDKROOT = /Developer/SDKs/MacOSX10.5.sdk;
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 149C298308902C53008A9EFC /* Build configuration list for PBXNativeTarget "NetscapeCocoaPlugin" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 149C298408902C53008A9EFC /* Debug */,
- 149C298508902C53008A9EFC /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 149C298708902C53008A9EFC /* Build configuration list for PBXProject "NetscapeCocoaPlugin" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 149C298808902C53008A9EFC /* Debug */,
- 149C298908902C53008A9EFC /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 089C1669FE841209C02AAC07 /* Project object */;
-}
diff --git a/WebKitExamplePlugins/NetscapeCocoaPlugin/main.m b/WebKitExamplePlugins/NetscapeCocoaPlugin/main.m
deleted file mode 100644
index 1f66ac1..0000000
--- a/WebKitExamplePlugins/NetscapeCocoaPlugin/main.m
+++ /dev/null
@@ -1,370 +0,0 @@
-/*
- IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in
- consideration of your agreement to the following terms, and your use, installation,
- modification or redistribution of this Apple software constitutes acceptance of these
- terms. If you do not agree with these terms, please do not use, install, modify or
- redistribute this Apple software.
-
- In consideration of your agreement to abide by the following terms, and subject to these
- terms, Apple grants you a personal, non-exclusive license, under Apple’s copyrights in
- this original Apple software (the "Apple Software"), to use, reproduce, modify and
- redistribute the Apple Software, with or without modifications, in source and/or binary
- forms; provided that if you redistribute the Apple Software in its entirety and without
- modifications, you must retain this notice and the following text and disclaimers in all
- such redistributions of the Apple Software. Neither the name, trademarks, service marks
- or logos of Apple Computer, Inc. may be used to endorse or promote products derived from
- the Apple Software without specific prior written permission from Apple. Except as expressly
- stated in this notice, no other rights or licenses, express or implied, are granted by Apple
- herein, including but not limited to any patent rights that may be infringed by your
- derivative works or by other works in which the Apple Software may be incorporated.
-
- The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES,
- EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT,
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS
- USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
-
- IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE,
- REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND
- WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR
- OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <WebKit/npapi.h>
-#import <WebKit/npfunctions.h>
-#import <WebKit/npruntime.h>
-
-#import <Cocoa/Cocoa.h>
-
-#import "MenuHandler.h"
-
-// Browser function table
-static NPNetscapeFuncs* browser;
-
-// Structure for per-instance storage
-typedef struct PluginObject
-{
- NPP npp;
-
- NPWindow window;
-
- NSString *string;
- bool hasFocus;
- bool mouseIsInsidePlugin;
-
- MenuHandler *menuHandler;
-} PluginObject;
-
-NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char* argn[], char* argv[], NPSavedData* saved);
-NPError NPP_Destroy(NPP instance, NPSavedData** save);
-NPError NPP_SetWindow(NPP instance, NPWindow* window);
-NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype);
-NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason);
-int32 NPP_WriteReady(NPP instance, NPStream* stream);
-int32 NPP_Write(NPP instance, NPStream* stream, int32 offset, int32 len, void* buffer);
-void NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname);
-void NPP_Print(NPP instance, NPPrint* platformPrint);
-int16 NPP_HandleEvent(NPP instance, void* event);
-void NPP_URLNotify(NPP instance, const char* URL, NPReason reason, void* notifyData);
-NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value);
-NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value);
-
-#pragma export on
-// Mach-o entry points
-NPError NP_Initialize(NPNetscapeFuncs *browserFuncs);
-NPError NP_GetEntryPoints(NPPluginFuncs *pluginFuncs);
-void NP_Shutdown(void);
-#pragma export off
-
-NPError NP_Initialize(NPNetscapeFuncs* browserFuncs)
-{
- browser = browserFuncs;
- return NPERR_NO_ERROR;
-}
-
-NPError NP_GetEntryPoints(NPPluginFuncs* pluginFuncs)
-{
- pluginFuncs->version = 11;
- pluginFuncs->size = sizeof(pluginFuncs);
- pluginFuncs->newp = NPP_New;
- pluginFuncs->destroy = NPP_Destroy;
- pluginFuncs->setwindow = NPP_SetWindow;
- pluginFuncs->newstream = NPP_NewStream;
- pluginFuncs->destroystream = NPP_DestroyStream;
- pluginFuncs->asfile = NPP_StreamAsFile;
- pluginFuncs->writeready = NPP_WriteReady;
- pluginFuncs->write = (NPP_WriteProcPtr)NPP_Write;
- pluginFuncs->print = NPP_Print;
- pluginFuncs->event = NPP_HandleEvent;
- pluginFuncs->urlnotify = NPP_URLNotify;
- pluginFuncs->getvalue = NPP_GetValue;
- pluginFuncs->setvalue = NPP_SetValue;
-
- return NPERR_NO_ERROR;
-}
-
-void NP_Shutdown(void)
-{
-
-}
-
-NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char* argn[], char* argv[], NPSavedData* saved)
-{
- // Create per-instance storage
- PluginObject *obj = (PluginObject *)malloc(sizeof(PluginObject));
- bzero(obj, sizeof(PluginObject));
-
- obj->npp = instance;
- instance->pdata = obj;
-
- // Ask the browser if it supports the CoreGraphics drawing model
- NPBool supportsCoreGraphics;
- if (browser->getvalue(instance, NPNVsupportsCoreGraphicsBool, &supportsCoreGraphics) != NPERR_NO_ERROR)
- supportsCoreGraphics = FALSE;
-
- if (!supportsCoreGraphics)
- return NPERR_INCOMPATIBLE_VERSION_ERROR;
-
- // If the browser supports the CoreGraphics drawing model, enable it.
- browser->setvalue(instance, NPPVpluginDrawingModel, (void *)NPDrawingModelCoreGraphics);
-
- // If the browser supports the Cocoa event model, enable it.
- NPBool supportsCocoa;
- if (browser->getvalue(instance, NPNVsupportsCocoaBool, &supportsCocoa) != NPERR_NO_ERROR)
- supportsCocoa = FALSE;
-
- if (!supportsCocoa)
- return NPERR_INCOMPATIBLE_VERSION_ERROR;
-
- browser->setvalue(instance, NPPVpluginEventModel, (void *)NPEventModelCocoa);
-
- return NPERR_NO_ERROR;
-}
-
-NPError NPP_Destroy(NPP instance, NPSavedData** save)
-{
- // Free per-instance storage
- PluginObject *obj = instance->pdata;
-
- [obj->string release];
- [obj->menuHandler release];
-
- free(obj);
-
- return NPERR_NO_ERROR;
-}
-
-NPError NPP_SetWindow(NPP instance, NPWindow* window)
-{
- PluginObject *obj = instance->pdata;
- obj->window = *window;
-
- return NPERR_NO_ERROR;
-}
-
-
-NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype)
-{
- *stype = NP_ASFILEONLY;
- return NPERR_NO_ERROR;
-}
-
-NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason)
-{
- return NPERR_NO_ERROR;
-}
-
-int32 NPP_WriteReady(NPP instance, NPStream* stream)
-{
- return 0;
-}
-
-int32 NPP_Write(NPP instance, NPStream* stream, int32 offset, int32 len, void* buffer)
-{
- return 0;
-}
-
-void NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname)
-{
-}
-
-void NPP_Print(NPP instance, NPPrint* platformPrint)
-{
-
-}
-
-static void handleDraw(PluginObject *obj)
-{
- NSGraphicsContext *oldContext = [[NSGraphicsContext currentContext] retain];
-
- NSGraphicsContext *context = [NSGraphicsContext graphicsContextWithGraphicsPort:((NP_CGContext *)obj->window.window)->context
- flipped:YES];
-
-
- [NSGraphicsContext setCurrentContext:context];
-
- NSRect rect = NSMakeRect(0, 0, obj->window.width, obj->window.height);
-
- [[NSColor lightGrayColor] set];
- [NSBezierPath fillRect:rect];
-
- // If the plugin has focus, draw a focus indicator
- if (obj->hasFocus) {
- [[NSColor blackColor] set];
- NSBezierPath *path = [NSBezierPath bezierPathWithRect:rect];
- [path setLineWidth:5];
- [path stroke];
- }
-
- [obj->string drawAtPoint:NSMakePoint(10, 10) withAttributes:nil];
-
- [NSGraphicsContext setCurrentContext:oldContext];
-}
-
-static NSString *eventType(NPCocoaEventType type)
-{
- switch (type) {
- case NPCocoaEventScrollWheel:
- return @"NPCocoaEventScrollWheel";
- case NPCocoaEventMouseDown:
- return @"NPCocoaEventMouseDown";
- case NPCocoaEventMouseUp:
- return @"NPCocoaEventMouseUp";
- case NPCocoaEventMouseMoved:
- return @"NPCocoaEventMouseMoved";
- case NPCocoaEventMouseDragged:
- return @"NPCocoaEventMouseDragged";
- case NPCocoaEventMouseEntered:
- return @"NPCocoaEventMouseEntered";
- case NPCocoaEventMouseExited:
- return @"NPCocoaEventMouseExited";
- case NPCocoaEventKeyDown:
- return @"NPCocoaEventKeyDown";
- case NPCocoaEventKeyUp:
- return @"NPCocoaEventKeyUp";
- case NPCocoaEventFlagsChanged:
- return @"NPCocoaEventFlagsChanged";
- default:
- return @"unknown";
- }
-}
-
-static void invalidatePlugin(PluginObject *obj)
-{
- NPRect rect;
- rect.left = 0;
- rect.top = 0;
- rect.right = obj->window.width;
- rect.bottom = obj->window.height;
-
- browser->invalidaterect(obj->npp, &rect);
-}
-
-
-static void handleMouseEvent(PluginObject *obj, NPCocoaEvent *event)
-{
- NSString *string = [NSString stringWithFormat:@"Type: %@\n"
- "Modifier flags: 0x%x\n"
- "Coordinates: (%g, %g)\n"
- "Button number: %d\n"
- "Click count: %d\n"
- "Delta: (%g, %g, %g)",
- eventType(event->type),
- event->data.mouse.modifierFlags,
- event->data.mouse.pluginX,
- event->data.mouse.pluginY,
- event->data.mouse.buttonNumber,
- event->data.mouse.clickCount,
- event->data.mouse.deltaX, event->data.mouse.deltaY, event->data.mouse.deltaZ];
-
-
- [obj->string release];
- obj->string = [string retain];
-
- invalidatePlugin(obj);
-
- if (event->data.mouse.buttonNumber == 1) {
- if (!obj->menuHandler)
- obj->menuHandler = [[MenuHandler alloc] initWithBrowserFuncs:browser instance:obj->npp];
-
- browser->popupcontextmenu(obj->npp, (NPNSMenu *)[obj->menuHandler menu]);
- NSLog(@"foo");
- }
-}
-
-static void handleKeyboardEvent(PluginObject *obj, NPCocoaEvent *event)
-{
- NSString *string = [NSString stringWithFormat:@"Type: %@\n"
- "Modifier flags: 0x%x\n"
- "Characters: %@\n"
- "Characters ignoring modifiers: %@\n"
- "Is a repeat: %@\n"
- "Key code: %d",
- eventType(event->type),
- event->data.key.modifierFlags,
- event->data.key.characters,
- event->data.key.charactersIgnoringModifiers,
- event->data.key.isARepeat ? @"YES" : @"NO",
- event->data.key.keyCode];
-
-
- [obj->string release];
- obj->string = [string retain];
-
- invalidatePlugin(obj);
-}
-
-int16 NPP_HandleEvent(NPP instance, void* event)
-{
- PluginObject *obj = instance->pdata;
-
- NPCocoaEvent *cocoaEvent = event;
-
- switch(cocoaEvent->type) {
- case NPCocoaEventFocusChanged:
- obj->hasFocus = cocoaEvent->data.focus.hasFocus;
- invalidatePlugin(obj);
- return 1;
-
- case NPCocoaEventDrawRect:
- handleDraw(obj);
- return 1;
-
- case NPCocoaEventKeyDown:
- case NPCocoaEventKeyUp:
- case NPCocoaEventFlagsChanged:
- handleKeyboardEvent(obj, cocoaEvent);
- return 1;
-
- case NPCocoaEventMouseDown:
- case NPCocoaEventMouseUp:
-
- // FIXME: NPCocoaEventMouseMoved is currently disabled in order to see other events more clearly
- // without "drowning" in mouse moved events.
-// case NPCocoaEventMouseMoved:
- case NPCocoaEventMouseEntered:
- case NPCocoaEventMouseExited:
- case NPCocoaEventMouseDragged:
- case NPCocoaEventScrollWheel:
- handleMouseEvent(obj, cocoaEvent);
- return 1;
- }
-
- return 0;
-}
-
-void NPP_URLNotify(NPP instance, const char* url, NPReason reason, void* notifyData)
-{
-
-}
-
-NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value)
-{
- return NPERR_GENERIC_ERROR;
-}
-
-NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value)
-{
- return NPERR_GENERIC_ERROR;
-}
diff --git a/WebKitExamplePlugins/NetscapeCocoaPlugin/test.html b/WebKitExamplePlugins/NetscapeCocoaPlugin/test.html
deleted file mode 100644
index 368cb1c..0000000
--- a/WebKitExamplePlugins/NetscapeCocoaPlugin/test.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
-<html>
-<head>
-<title>Cocoa Netscape Plug-In</title>
-</head>
-<body>
-<div>
- <embed width="400" height="400" type="test/x-netscape-cocoa-plugin"></embed>
-</div>
-</body>
-</html>
diff --git a/WebKitExamplePlugins/NetscapeInputMethodPlugin/Info.plist b/WebKitExamplePlugins/NetscapeInputMethodPlugin/Info.plist
deleted file mode 100644
index a09cb1f..0000000
--- a/WebKitExamplePlugins/NetscapeInputMethodPlugin/Info.plist
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>NetscapeInputMethodPlugin</string>
- <key>CFBundleIconFile</key>
- <string></string>
- <key>CFBundleIdentifier</key>
- <string>com.apple.netscapeinputmethodplugin</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundlePackageType</key>
- <string>BRPL</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1.0</string>
- <key>WebPluginDescription</key>
- <string>Simple Netscape plug-in that shows how to use input methods</string>
- <key>WebPluginMIMETypes</key>
- <dict>
- <key>test/x-netscape-input-method-plugin</key>
- <dict>
- <key>WebPluginTypeDescription</key>
- <string>Netscape Input Method Plug-in</string>
- </dict>
- </dict>
- <key>WebPluginName</key>
- <string>Netscape Input Method Plug-in</string>
-</dict>
-</plist>
diff --git a/WebKitExamplePlugins/NetscapeInputMethodPlugin/NetscapeInputMethodPlugin.xcodeproj/project.pbxproj b/WebKitExamplePlugins/NetscapeInputMethodPlugin/NetscapeInputMethodPlugin.xcodeproj/project.pbxproj
deleted file mode 100644
index c5248be..0000000
--- a/WebKitExamplePlugins/NetscapeInputMethodPlugin/NetscapeInputMethodPlugin.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,236 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 42;
- objects = {
-
-/* Begin PBXBuildFile section */
- 1A624E590DCBC7F6006898C8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A624E580DCBC7F6006898C8 /* main.m */; };
- 1A6250420DCBC81B006898C8 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A6250410DCBC81B006898C8 /* Cocoa.framework */; };
- 8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8D5B49A704867FD3000E48DA /* InfoPlist.strings */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXFileReference section */
- 089C167EFE841241C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
- 1A624E580DCBC7F6006898C8 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
- 1A6250410DCBC81B006898C8 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
- 8D576316048677EA00EA77CD /* NetscapeInputMethodPlugin.plugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = NetscapeInputMethodPlugin.plugin; sourceTree = BUILT_PRODUCTS_DIR; };
- 8D576317048677EA00EA77CD /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 8D576313048677EA00EA77CD /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 1A6250420DCBC81B006898C8 /* Cocoa.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 089C166AFE841209C02AAC07 /* NetscapeInputMethodPlugin */ = {
- isa = PBXGroup;
- children = (
- 08FB77AFFE84173DC02AAC07 /* Source */,
- 089C167CFE841241C02AAC07 /* Resources */,
- 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
- 19C28FB6FE9D52B211CA2CBB /* Products */,
- );
- name = NetscapeInputMethodPlugin;
- sourceTree = "<group>";
- };
- 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = {
- isa = PBXGroup;
- children = (
- 1A6250410DCBC81B006898C8 /* Cocoa.framework */,
- );
- name = "External Frameworks and Libraries";
- sourceTree = "<group>";
- };
- 089C167CFE841241C02AAC07 /* Resources */ = {
- isa = PBXGroup;
- children = (
- 8D576317048677EA00EA77CD /* Info.plist */,
- 8D5B49A704867FD3000E48DA /* InfoPlist.strings */,
- );
- name = Resources;
- sourceTree = "<group>";
- };
- 08FB77AFFE84173DC02AAC07 /* Source */ = {
- isa = PBXGroup;
- children = (
- 1A624E580DCBC7F6006898C8 /* main.m */,
- );
- name = Source;
- sourceTree = "<group>";
- };
- 19C28FB6FE9D52B211CA2CBB /* Products */ = {
- isa = PBXGroup;
- children = (
- 8D576316048677EA00EA77CD /* NetscapeInputMethodPlugin.plugin */,
- );
- name = Products;
- sourceTree = "<group>";
- };
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
- 8D57630D048677EA00EA77CD /* NetscapeInputMethodPlugin */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 149C298308902C53008A9EFC /* Build configuration list for PBXNativeTarget "NetscapeInputMethodPlugin" */;
- buildPhases = (
- 8D576311048677EA00EA77CD /* Sources */,
- 8D57630F048677EA00EA77CD /* Resources */,
- 8D576313048677EA00EA77CD /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = NetscapeInputMethodPlugin;
- productInstallPath = "$(HOME)/Library/Bundles";
- productName = NetscapeInputMethodPlugin;
- productReference = 8D576316048677EA00EA77CD /* NetscapeInputMethodPlugin.plugin */;
- productType = "com.apple.product-type.bundle";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 089C1669FE841209C02AAC07 /* Project object */ = {
- isa = PBXProject;
- buildConfigurationList = 149C298708902C53008A9EFC /* Build configuration list for PBXProject "NetscapeInputMethodPlugin" */;
- compatibilityVersion = "Xcode 2.4";
- hasScannedForEncodings = 1;
- mainGroup = 089C166AFE841209C02AAC07 /* NetscapeInputMethodPlugin */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- 8D57630D048677EA00EA77CD /* NetscapeInputMethodPlugin */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- 8D57630F048677EA00EA77CD /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 8D576311048677EA00EA77CD /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 1A624E590DCBC7F6006898C8 /* main.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXVariantGroup section */
- 8D5B49A704867FD3000E48DA /* InfoPlist.strings */ = {
- isa = PBXVariantGroup;
- children = (
- 089C167EFE841241C02AAC07 /* English */,
- );
- name = InfoPlist.strings;
- sourceTree = "<group>";
- };
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
- 149C298408902C53008A9EFC /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = NO;
- GCC_DEBUGGING_SYMBOLS = full;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_ENABLE_FIX_AND_CONTINUE = YES;
- GCC_MODEL_TUNING = G5;
- GCC_OPTIMIZATION_LEVEL = 0;
- INFOPLIST_FILE = Info.plist;
- INSTALL_PATH = "$(HOME)/Library/Bundles";
- PRODUCT_NAME = NetscapeInputMethodPlugin;
- WRAPPER_EXTENSION = plugin;
- ZERO_LINK = YES;
- };
- name = Debug;
- };
- 149C298508902C53008A9EFC /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ARCHS = (
- ppc,
- i386,
- );
- GCC_DEBUGGING_SYMBOLS = full;
- GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
- GCC_MODEL_TUNING = G5;
- GCC_OPTIMIZATION_LEVEL = 0;
- INFOPLIST_FILE = Info.plist;
- INSTALL_PATH = "$(HOME)/Library/Bundles";
- PRODUCT_NAME = NetscapeInputMethodPlugin;
- WRAPPER_EXTENSION = plugin;
- };
- name = Release;
- };
- 149C298808902C53008A9EFC /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1)";
- ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "ppc i386 ppc64 x86_64";
- GCC_C_LANGUAGE_STANDARD = c99;
- GCC_WARN_ABOUT_RETURN_TYPE = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- PREBINDING = NO;
- SDKROOT = /Developer/SDKs/MacOSX10.5.sdk;
- };
- name = Debug;
- };
- 149C298908902C53008A9EFC /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1)";
- ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "ppc i386 ppc64 x86_64";
- GCC_C_LANGUAGE_STANDARD = c99;
- GCC_WARN_ABOUT_RETURN_TYPE = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- PREBINDING = NO;
- SDKROOT = /Developer/SDKs/MacOSX10.5.sdk;
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 149C298308902C53008A9EFC /* Build configuration list for PBXNativeTarget "NetscapeInputMethodPlugin" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 149C298408902C53008A9EFC /* Debug */,
- 149C298508902C53008A9EFC /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 149C298708902C53008A9EFC /* Build configuration list for PBXProject "NetscapeInputMethodPlugin" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 149C298808902C53008A9EFC /* Debug */,
- 149C298908902C53008A9EFC /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 089C1669FE841209C02AAC07 /* Project object */;
-}
diff --git a/WebKitExamplePlugins/NetscapeInputMethodPlugin/main.m b/WebKitExamplePlugins/NetscapeInputMethodPlugin/main.m
deleted file mode 100644
index d5ec581..0000000
--- a/WebKitExamplePlugins/NetscapeInputMethodPlugin/main.m
+++ /dev/null
@@ -1,514 +0,0 @@
-/*
- IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in
- consideration of your agreement to the following terms, and your use, installation,
- modification or redistribution of this Apple software constitutes acceptance of these
- terms. If you do not agree with these terms, please do not use, install, modify or
- redistribute this Apple software.
-
- In consideration of your agreement to abide by the following terms, and subject to these
- terms, Apple grants you a personal, non-exclusive license, under Apple’s copyrights in
- this original Apple software (the "Apple Software"), to use, reproduce, modify and
- redistribute the Apple Software, with or without modifications, in source and/or binary
- forms; provided that if you redistribute the Apple Software in its entirety and without
- modifications, you must retain this notice and the following text and disclaimers in all
- such redistributions of the Apple Software. Neither the name, trademarks, service marks
- or logos of Apple Computer, Inc. may be used to endorse or promote products derived from
- the Apple Software without specific prior written permission from Apple. Except as expressly
- stated in this notice, no other rights or licenses, express or implied, are granted by Apple
- herein, including but not limited to any patent rights that may be infringed by your
- derivative works or by other works in which the Apple Software may be incorporated.
-
- The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES,
- EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT,
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS
- USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
-
- IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE,
- REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND
- WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR
- OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <WebKit/npapi.h>
-#import <WebKit/npfunctions.h>
-#import <WebKit/npruntime.h>
-#import <WebKit/nptextinput.h>
-
-#import <Cocoa/Cocoa.h>
-
-// Browser function table
-static NPNetscapeFuncs* browser;
-
-// Structure for per-instance storage
-typedef struct PluginObject
-{
- NPP npp;
-
- NPWindow window;
-
- bool pluginHasFocus;
-
- bool textFieldHasFocus;
- NSRect textFieldRect;
-
- NSRange markedRange;
- NSRange selectedRange;
- NSTextStorage *textStorage;
- NSLayoutManager *layoutManager;
- NSTextContainer *textContainer;
-
-} PluginObject;
-
-NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char* argn[], char* argv[], NPSavedData* saved);
-NPError NPP_Destroy(NPP instance, NPSavedData** save);
-NPError NPP_SetWindow(NPP instance, NPWindow* window);
-NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype);
-NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason);
-int32 NPP_WriteReady(NPP instance, NPStream* stream);
-int32 NPP_Write(NPP instance, NPStream* stream, int32 offset, int32 len, void* buffer);
-void NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname);
-void NPP_Print(NPP instance, NPPrint* platformPrint);
-int16 NPP_HandleEvent(NPP instance, void* event);
-void NPP_URLNotify(NPP instance, const char* URL, NPReason reason, void* notifyData);
-NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value);
-NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value);
-
-#pragma export on
-// Mach-o entry points
-NPError NP_Initialize(NPNetscapeFuncs *browserFuncs);
-NPError NP_GetEntryPoints(NPPluginFuncs *pluginFuncs);
-void NP_Shutdown(void);
-#pragma export off
-
-NPError NP_Initialize(NPNetscapeFuncs* browserFuncs)
-{
- browser = browserFuncs;
- return NPERR_NO_ERROR;
-}
-
-NPError NP_GetEntryPoints(NPPluginFuncs* pluginFuncs)
-{
- pluginFuncs->version = 11;
- pluginFuncs->size = sizeof(pluginFuncs);
- pluginFuncs->newp = NPP_New;
- pluginFuncs->destroy = NPP_Destroy;
- pluginFuncs->setwindow = NPP_SetWindow;
- pluginFuncs->newstream = NPP_NewStream;
- pluginFuncs->destroystream = NPP_DestroyStream;
- pluginFuncs->asfile = NPP_StreamAsFile;
- pluginFuncs->writeready = NPP_WriteReady;
- pluginFuncs->write = (NPP_WriteProcPtr)NPP_Write;
- pluginFuncs->print = NPP_Print;
- pluginFuncs->event = NPP_HandleEvent;
- pluginFuncs->urlnotify = NPP_URLNotify;
- pluginFuncs->getvalue = NPP_GetValue;
- pluginFuncs->setvalue = NPP_SetValue;
-
- return NPERR_NO_ERROR;
-}
-
-void NP_Shutdown(void)
-{
-}
-
-NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char* argn[], char* argv[], NPSavedData* saved)
-{
- // Create per-instance storage
- PluginObject *obj = (PluginObject *)malloc(sizeof(PluginObject));
- bzero(obj, sizeof(PluginObject));
-
- obj->npp = instance;
- instance->pdata = obj;
-
- // Ask the browser if it supports the CoreGraphics drawing model
- NPBool supportsCoreGraphics;
- if (browser->getvalue(instance, NPNVsupportsCoreGraphicsBool, &supportsCoreGraphics) != NPERR_NO_ERROR)
- supportsCoreGraphics = FALSE;
-
- if (!supportsCoreGraphics)
- return NPERR_INCOMPATIBLE_VERSION_ERROR;
-
- // If the browser supports the CoreGraphics drawing model, enable it.
- browser->setvalue(instance, NPPVpluginDrawingModel, (void *)NPDrawingModelCoreGraphics);
-
- // If the browser supports the Cocoa event model, enable it.
- NPBool supportsCocoa;
- if (browser->getvalue(instance, NPNVsupportsCocoaBool, &supportsCocoa) != NPERR_NO_ERROR)
- supportsCocoa = FALSE;
-
- if (!supportsCocoa)
- return NPERR_INCOMPATIBLE_VERSION_ERROR;
-
- browser->setvalue(instance, NPPVpluginEventModel, (void *)NPEventModelCocoa);
-
- obj->textFieldRect = NSMakeRect(10, 10, 200, 100);
-
- obj->textStorage = [[NSTextStorage alloc] initWithString:@""];
- obj->layoutManager = [[NSLayoutManager alloc] init];
- [obj->textStorage addLayoutManager:obj->layoutManager];
-
- obj->textContainer = [[NSTextContainer alloc] initWithContainerSize:obj->textFieldRect.size];
- [obj->layoutManager addTextContainer:obj->textContainer];
-
- obj->selectedRange.location = [obj->textStorage length];
-
- obj->markedRange = NSMakeRange(NSNotFound, 0);
-
- return NPERR_NO_ERROR;
-}
-
-NPError NPP_Destroy(NPP instance, NPSavedData** save)
-{
- // Free per-instance storage
- PluginObject *obj = instance->pdata;
-
- [obj->textStorage release];
- [obj->layoutManager release];
-
- free(obj);
-
- return NPERR_NO_ERROR;
-}
-
-NPError NPP_SetWindow(NPP instance, NPWindow* window)
-{
- PluginObject *obj = instance->pdata;
- obj->window = *window;
-
- return NPERR_NO_ERROR;
-}
-
-
-NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype)
-{
- *stype = NP_ASFILEONLY;
- return NPERR_NO_ERROR;
-}
-
-NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason)
-{
- return NPERR_NO_ERROR;
-}
-
-int32 NPP_WriteReady(NPP instance, NPStream* stream)
-{
- return 0;
-}
-
-int32 NPP_Write(NPP instance, NPStream* stream, int32 offset, int32 len, void* buffer)
-{
- return 0;
-}
-
-void NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname)
-{
-}
-
-void NPP_Print(NPP instance, NPPrint* platformPrint)
-{
-
-}
-
-static void handleDraw(PluginObject *obj)
-{
- NSGraphicsContext *oldContext = [[NSGraphicsContext currentContext] retain];
-
- NSGraphicsContext *context = [NSGraphicsContext graphicsContextWithGraphicsPort:((NP_CGContext *)obj->window.window)->context
- flipped:YES];
-
-
- [NSGraphicsContext setCurrentContext:context];
-
- NSRect rect = NSMakeRect(0, 0, obj->window.width, obj->window.height);
-
- [[NSColor lightGrayColor] set];
- [NSBezierPath fillRect:rect];
-
- if (obj->pluginHasFocus) {
- [[NSColor blackColor] set];
- [NSBezierPath strokeRect:rect];
- }
-
- [[NSColor whiteColor] set];
- [NSBezierPath fillRect:obj->textFieldRect];
-
- // Draw the text
- NSRange glyphRange = [obj->layoutManager glyphRangeForTextContainer:obj->textContainer];
- if (glyphRange.length > 0) {
- [obj->layoutManager drawBackgroundForGlyphRange:glyphRange atPoint:obj->textFieldRect.origin];
- [obj->layoutManager drawGlyphsForGlyphRange:glyphRange atPoint:obj->textFieldRect.origin];
- }
-
- NSBezierPath *textInputBorder = [NSBezierPath bezierPathWithRect:obj->textFieldRect];
- [[NSColor blackColor] set];
-
- if (obj->pluginHasFocus && obj->textFieldHasFocus)
- [textInputBorder setLineWidth:2];
- else
- [textInputBorder setLineWidth:1];
-
- [textInputBorder stroke];
-
- if (obj->pluginHasFocus && obj->textFieldHasFocus) {
- NSUInteger rectCount;
- NSRect *rectArray = [obj->layoutManager rectArrayForCharacterRange:obj->selectedRange
- withinSelectedCharacterRange:obj->selectedRange
- inTextContainer:obj->textContainer
- rectCount:&rectCount];
-
- [[NSColor blackColor] set];
- for (unsigned i = 0; i < rectCount; i++) {
- NSRect rect = rectArray[i];
- rect.origin.x += obj->textFieldRect.origin.x;
- rect.origin.y += obj->textFieldRect.origin.y;
-
- [NSBezierPath strokeRect:rect];
- }
- }
-
- [NSGraphicsContext setCurrentContext:oldContext];
-}
-
-static void invalidatePlugin(PluginObject *obj)
-{
- NPRect rect;
- rect.left = 0;
- rect.top = 0;
- rect.right = obj->window.width;
- rect.bottom = obj->window.height;
-
- browser->invalidaterect(obj->npp, &rect);
-}
-
-static void handleFocusChanged(NPCocoaEvent *cocoaEvent, PluginObject *obj)
-{
- obj->pluginHasFocus = cocoaEvent->event.focus.hasFocus;
-
- invalidatePlugin(obj);
-}
-
-static void handleMouseMoved(NPCocoaEvent *cocoaEvent, PluginObject *obj)
-{
- NSPoint point = NSMakePoint(cocoaEvent->event.mouse.pluginX, cocoaEvent->event.mouse.pluginY);
-
- if (NSPointInRect(point, obj->textFieldRect))
- [[NSCursor IBeamCursor] set];
- else
- [[NSCursor arrowCursor] set];
-}
-
-static void handleMouseDown(NPCocoaEvent *cocoaEvent, PluginObject *obj)
-{
- NSPoint point = NSMakePoint(cocoaEvent->event.mouse.pluginX, cocoaEvent->event.mouse.pluginY);
-
- obj->textFieldHasFocus = NSPointInRect(point, obj->textFieldRect);
-
- invalidatePlugin(obj);
-}
-
-int16 NPP_HandleEvent(NPP instance, void* event)
-{
- PluginObject *obj = instance->pdata;
-
- NPCocoaEvent *cocoaEvent = event;
-
- switch (cocoaEvent->type) {
- case NPCocoaEventDrawRect:
- handleDraw(obj);
- return 1;
- case NPCocoaEventFocusChanged:
- handleFocusChanged(cocoaEvent, obj);
- return 1;
- case NPCocoaEventMouseMoved:
- handleMouseMoved(cocoaEvent, obj);
- return 1;
- case NPCocoaEventMouseDown:
- handleMouseDown(cocoaEvent, obj);
- return 1;
- case NPCocoaEventKeyDown:
- // If the text field has focus we ignore the event, causing it
- // to be sent to the input manager.
- if (obj->textFieldHasFocus)
- return 0;
- else
- return 1;
-
- }
-
- return 0;
-}
-
-void NPP_URLNotify(NPP instance, const char* url, NPReason reason, void* notifyData)
-{
-
-}
-
-static NSRange selectionRange(PluginObject *obj)
-{
- if (obj->markedRange.location != NSNotFound)
- return obj->markedRange;
- else
- return obj->selectedRange;
-}
-
-/* Text Input */
-
-void NPP_InsertText(NPP npp, id aString)
-{
- PluginObject *obj = npp->pdata;
-
- NSRange range = selectionRange(obj);
-
- // Get rid of the marked text
- if (NPP_HasMarkedText(npp)) {
- [obj->textStorage deleteCharactersInRange:obj->markedRange];
- range.length = 0;
- }
-
- [obj->textStorage replaceCharactersInRange:range withString:aString];
-
- obj->selectedRange.location = range.location + [aString length];
- obj->selectedRange.length = 0;
-
- obj->markedRange = NSMakeRange(NSNotFound, 0);
-
- invalidatePlugin(obj);
-}
-
-void NPP_DoCommandBySelector(NPP npp, SEL aSelector)
-{
- PluginObject *obj = npp->pdata;
-
- if (aSelector == @selector(moveRight:)) {
- if (obj->selectedRange.location == [obj->textStorage length])
- return;
-
- obj->selectedRange.location++;
- invalidatePlugin(obj);
- } else if (aSelector == @selector(moveLeft:)) {
- if (obj->selectedRange.location == 0)
- return;
-
- obj->selectedRange.location--;
- invalidatePlugin(obj);
- }
-}
-
-static NSDictionary *markedTextAttributes()
-{
- static NSDictionary *markedTextAttributes = nil;
- if (!markedTextAttributes) {
- NSTextView *tv = [[NSTextView alloc] initWithFrame:NSMakeRect(0, 0, 100, 100)];
- markedTextAttributes = [[tv markedTextAttributes] retain];
- [tv release];
- }
-
- return markedTextAttributes;
-}
-
-void NPP_SetMarkedText(NPP npp, id aString, NSRange selRange)
-{
- PluginObject *obj = npp->pdata;
-
- BOOL isAttributedString = [aString isKindOfClass:[NSAttributedString class]];
-
- NSRange range = selectionRange(obj);
-
- if (!isAttributedString)
- aString = [[[NSAttributedString alloc] initWithString:aString attributes:markedTextAttributes()] autorelease];
-
- [obj->textStorage replaceCharactersInRange:range withAttributedString:aString];
-
- obj->selectedRange.location = range.location + selRange.location;
- obj->selectedRange.length = selRange.length;
-
- obj->markedRange = NSMakeRange(range.location, [aString length]);
-
- invalidatePlugin(obj);
-}
-
-void NPP_UnmarkText(NPP npp)
-{
-}
-
-BOOL NPP_HasMarkedText(NPP npp)
-{
- PluginObject *obj = npp->pdata;
-
- return obj->markedRange.location != NSNotFound;
-}
-
-NSAttributedString *NPP_AttributedSubstringFromRange(NPP npp, NSRange theRange)
-{
- return nil;
-}
-
-NSRange NPP_MarkedRange(NPP npp)
-{
- PluginObject *obj = npp->pdata;
-
- return obj->markedRange;
-}
-
-NSRange NPP_SelectedRange(NPP npp)
-{
- PluginObject *obj = npp->pdata;
-
- return obj->selectedRange;
-}
-
-NSRect NPP_FirstRectForCharacterRange(NPP npp, NSRange theRange)
-{
- PluginObject *obj = npp->pdata;
-
- NSUInteger rectCount;
- NSRect *rectArray = [obj->layoutManager rectArrayForCharacterRange:theRange
- withinSelectedCharacterRange:theRange
- inTextContainer:obj->textContainer
- rectCount:&rectCount];
-
- return rectArray[0];
-}
-
-static NPPluginTextInputFuncs* pluginTextInputFuncs()
-{
- static NPPluginTextInputFuncs textInputFuncs;
- static bool initialized = false;
-
- if (!initialized) {
- textInputFuncs.version = 0;
- textInputFuncs.size = sizeof(textInputFuncs);
-
- textInputFuncs.insertText = NPP_InsertText;
- textInputFuncs.doCommandBySelector = NPP_DoCommandBySelector;
- textInputFuncs.setMarkedText = NPP_SetMarkedText;
- textInputFuncs.unmarkText = NPP_UnmarkText;
- textInputFuncs.hasMarkedText = NPP_HasMarkedText;
- textInputFuncs.attributedSubstringFromRange = NPP_AttributedSubstringFromRange;
- textInputFuncs.markedRange = NPP_MarkedRange;
- textInputFuncs.selectedRange = NPP_SelectedRange;
- textInputFuncs.firstRectForCharacterRange = NPP_FirstRectForCharacterRange;
-
- initialized = true;
- }
-
- return &textInputFuncs;
-}
-
-NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value)
-{
- switch (variable) {
- case NPPVpluginTextInputFuncs:
- *(NPPluginTextInputFuncs**)value = pluginTextInputFuncs();
- return NPERR_NO_ERROR;
- }
-
- return NPERR_GENERIC_ERROR;
-}
-
-NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value)
-{
- return NPERR_GENERIC_ERROR;
-}
diff --git a/WebKitExamplePlugins/NetscapeInputMethodPlugin/test.html b/WebKitExamplePlugins/NetscapeInputMethodPlugin/test.html
deleted file mode 100644
index d41a4c0..0000000
--- a/WebKitExamplePlugins/NetscapeInputMethodPlugin/test.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
-<html>
-<head>
-<title>Netscape Input Method Plug-In</title>
-</head>
-<body>
-<div>
- <embed width="400" height="400" type="test/x-netscape-input-method-plugin"></embed>
-</div>
-</body>
-</html>
diff --git a/WebKitLibraries/ChangeLog b/WebKitLibraries/ChangeLog
deleted file mode 100644
index e25f2cf..0000000
--- a/WebKitLibraries/ChangeLog
+++ /dev/null
@@ -1,998 +0,0 @@
-2008-10-23 Anders Carlsson <andersca@apple.com>
-
- Reviewed by John Sullivan.
-
- Fix <rdar://problem/6306513> by adding a workaround for <rdar://problem/6304600>.
-
- * libWebKitSystemInterfaceLeopard.a:
- * libWebKitSystemInterfaceTiger.a:
-
-2008-10-08 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Jon Honeycutt.
-
- Remove restriction on version number ending in a 4.
-
- * win/tools/scripts/auto-version.sh:
-
-2008-10-07 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Mitz Pettel.
-
- Update WebKitSystemInterface.
-
- * libWebKitSystemInterfaceLeopard.a:
- * libWebKitSystemInterfaceTiger.a:
-
-2008-09-09 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Darin Adler.
-
- - WebKitLibraries part of <rdar://problem/6206244> Use alternate character-to-glyph interface on Leopard
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterfaceLeopard.a:
-
-2008-09-04 Adam Roben <aroben@apple.com>
-
- Ignore warning LNK4221 on Windows
-
- This warning is emitted when an object file with no public symbols is
- passed to the linker/librarian. This often occurs in WebCore for files
- that have been disabled via ENABLE()/USE() macros.
-
- Rubberstamped by Anders Carlsson.
-
- * win/tools/vsprops/common.vsprops: Ignore warning LNK4221.
-
-2008-08-27 Timothy Hatcher <timothy@apple.com>
-
- Adds the WKAdvanceDefaultButtonPulseAnimation function.
-
- <rdar://problem/6173530> Add Mac support for -webkit-appearance: default-button
-
- Reviewed by Adele Peterson.
-
- * WebKitSystemInterface.h: Added WKAdvanceDefaultButtonPulseAnimation.
- * libWebKitSystemInterfaceLeopard.a: Updated.
- * libWebKitSystemInterfaceTiger.a: Updated.
-
-2008-08-26 Adam Roben <aroben@apple.com>
-
- Disable a truncation warning that is disabled/doesn't exist on Mac
-
- This warning was firing when initializing floats from double literals.
- I haven't yet found any other situation that would cause this warning
- to arise.
-
- Reviewed by Sam Weinig.
-
- * win/tools/vsprops/common.vsprops: Turn off warning C4305.
-
-2008-07-20 Steve Falkenburg <sfalken@apple.com>
-
- Build fix.
-
- * win/tools/vsprops/common.vsprops:
-
-2008-07-08 Dan Bernstein <mitz@apple.com>
-
- Reviewed by John Sullivan.
-
- - WebKitSystemInterface part of <rdar://problem/6008409> Need a way to disable updates in offscreen views
-
- * WebKitSystemInterface.h: Added WKWindowWillOrderOnScreenNotification.
- * libWebKitSystemInterfaceLeopard.a: Updated.
- * libWebKitSystemInterfaceTiger.a: Updated.
-
-2008-07-01 Steve Falkenburg <sfalken@apple.com>
-
- Bump version numbers.
-
- Reviewed by Mark Rowe.
-
- * win/tools/scripts/PRODUCTVERSION:
- * win/tools/scripts/VERSION:
-
-2008-05-13 Dan Bernstein <mitz@apple.com>
-
- Reviewed by John Sullivan.
-
- - WebKitSystemInterface support for <rdar://problem/5725912> improve render quality of transformed text
-
- * libWebKitSystemInterfaceLeopard.a: Improved glyph positioning in
- transformed graphics contexts.
- * win/include/WebKitSystemInterface/WebKitSystemInterface.h: Added
- wkSetCGContextFontRenderingStyle().
- * win/lib/WebKitSystemInterface.lib: Updated.
- * win/lib/WebKitSystemInterface_debug.lib: Updated.
-
-2008-05-09 Adam Roben <aroben@apple.com>
-
- Disable a MSVC warning
-
- Reviewed by Darin Adler.
-
- * win/tools/vsprops/common.vsprops: Add warning 4503 to the list of
- disabled warnings. It's a warning about decorated names being longer
- than MSVC's limit of 4096 characters. This warning doesn't indicate a
- correctness problem, but these truncated decorated names will be
- harder to recognize during debugging or when they appear in linker
- errors.
-
-2008-04-28 Darin Adler <darin@apple.com>
-
- Reviewed by Adam.
-
- - fix Windows build
-
- * win/tools/vsprops/common.vsprops: Add warning 4344 to the list of disabled warnings.
- It's really a warning about a bug they fixed in MSVC -- not helpful to us in WebKit.
-
-2008-04-24 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Sam Weinig.
-
- Remove code for calculating the glyph cache size.
-
- * WebKitSystemInterface.h: Remove unused symbol.
- * libWebKitSystemInterfaceLeopard.a:
- * libWebKitSystemInterfaceTiger.a:
-
-2008-03-28 Steve Falkenburg <sfalken@apple.com>
-
- Versioning.
-
- * win/tools/scripts/PRODUCTVERSION:
-
-2008-03-26 Adam Roben <aroben@apple.com>
-
- Windows build fix after r31322
-
- * win/include/WebKitSystemInterface/WebKitSystemInterface.h: Updated.
- * win/lib/WebKitSystemInterface.lib: Updated.
- * win/lib/WebKitSystemInterface_debug.lib: Updated.
-
-2008-03-26 Mark Rowe <mrowe@apple.com>
-
- Reviewed by David Hyatt.
-
- Make the Ahem font antialias correctly on Acid3 on Tiger.
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterfaceTiger.a:
-
-2008-03-19 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Sam Weinig.
-
- Fix http://bugs.webkit.org/show_bug.cgi?id=17816.
- Bug 17816: libWebCoreSQLite3.a is 2-architecture universal binary (not 4-architecture)
-
- * libWebCoreSQLite3.a: Land a 4-way fat binary.
-
-2008-03-12 Steve Falkenburg <sfalken@apple.com>
-
- New version of WebKitSystemInterface.lib with
- more compiler warnings suppressed.
-
- * win/lib/WebKitSystemInterface.lib:
- * win/tools/vsprops/common.vsprops:
-
-2008-03-12 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Darin Adler and Sam Weinig.
-
- - <rdar://problem/4433248> use CoreText API instead of SPI on Leopard
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterfaceLeopard.a:
-
-2008-03-11 Steve Falkenburg <sfalken@apple.com>
-
- Disable two PGO/LTCG specific warnings.
-
- Reviewed by Oliver.
-
- * win/tools/vsprops/common.vsprops:
-
-2008-02-29 Mark Rowe <mrowe@apple.com>
-
- Update Tiger version of WebKitSystemInterface to match r30690.
-
- * libWebKitSystemInterfaceTiger.a:
-
-2008-02-29 Adele Peterson <adele@apple.com>
-
- Reviewed by Mark.
-
- Auto-generate image arrays.
-
- * libWebKitSystemInterfaceLeopard.a:
-
-2008-02-29 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Anders Carlsson.
-
- Replace use of WKPathFromFont with implementation in terms of public API.
-
- * WebKitSystemInterface.h: Remove unused symbol.
- * libWebKitSystemInterfaceLeopard.a:
- * libWebKitSystemInterfaceTiger.a:
-
-2008-02-29 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Fix spelling of "request" in name of WKNSURLProtocolClassForRequest.
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterfaceLeopard.a:
- * libWebKitSystemInterfaceTiger.a:
-
-2008-02-29 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Don't use WKSupportsMultipartXMixedReplace on Leopard as multipart/x-mixed-replace is always handled by NSURLRequest.
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterfaceLeopard.a:
-
-2008-02-29 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver Hunt and Oliver Hunt.
-
- <rdar://problem/4753845> WebKit should use CGEventSourceSecondsSinceLastEventType in place of WKSecondsSinceLastInputEvent SPI.
-
- * WebKitSystemInterface.h: Remove unused symbol.
- * libWebKitSystemInterfaceLeopard.a:
- * libWebKitSystemInterfaceTiger.a:
-
-2008-02-28 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Dan Bernstein.
-
- Remove two unused functions from WebKitSystemInterface.
-
- * WebKitSystemInterface.h: Remove WKPreferRGB32Key and WKGetDefaultGlyphForChar as they are unused. Also remove
- a duplicate declaration of WKSecondsSinceLastInputEvent.
- * libWebKitSystemInterfaceLeopard.a:
- * libWebKitSystemInterfaceTiger.a:
-
-2008-02-28 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Dave Hyatt.
-
- Make use of new CGFont APIs on Leopard rather than making a WebKitSystemInterface call.
-
- * WebKitSystemInterface.h: Only declare WKGetFontMetrics on Tiger.
- * libWebKitSystemInterfaceLeopard.a: Update for removal of WKGetFontMetrics.
-
-2008-02-27 Brady Eidson <beidson@apple.com>
-
- Tiger build fix
-
- * libWebKitSystemInterfaceTiger.a:
-
-2008-02-27 Brady Eidson <beidson@apple.com>
-
- Reviewed by Mark Rowe
-
- Removed some unused methods:
- WKGetNSURLResponseCalculatedExpiration
- WKGetNSURLResponseMustRevalidate
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterfaceLeopard.a:
- * libWebKitSystemInterfaceTiger.a:
-
-2008-02-13 Adam Roben <aroben@apple.com>
-
- * win/tools/scripts/auto-version.sh: Removed a redundant symbol.
-
-2008-02-12 Adam Roben <aroben@apple.com>
-
- Clean up auto-version.sh a bit
-
- It now does quite a bit less file I/O and many fewer fork/exec pairs.
- It's also quite a bit easier to read.
-
- Reviewed by Steve.
-
- * win/tools/scripts/auto-version.sh:
-
-2008-02-12 Steve Falkenburg <sfalken@apple.com>
-
- Versioning script change.
-
- * win/tools/scripts/auto-version.sh:
-
-2008-02-07 Ada Chan <adachan@apple.com>
-
- Added 4 new methods:
- wkSetClientCertificateInSSLProperties,
- wkCanAccessCFURLRequestHTTPBodyParts,
- wkCFURLRequestCopyHTTPRequestBodyParts,
- wkCFURLRequestSetHTTPRequestBodyParts
-
- Rubber-stamped by Steve.
-
- * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
- * win/lib/WebKitSystemInterface.lib:
- * win/lib/WebKitSystemInterface_debug.lib:
-
-2008-02-04 Timothy Hatcher <timothy@apple.com>
-
- <rdar://problem/5722735> Merge fix for SQLITE_FULL error
- is given even if the max_page_count is increased (2920)
-
- * libWebCoreSQLite3.a:
-
-2008-02-01 Steve Falkenburg <sfalken@apple.com>
-
- <rdar://problem/5717523> Don't set DEP opt-in flag (data execution prevention) since it is incompaible with the video plugin used on CNN.com
-
- Rubber-stamped by Jon Honeycutt.
-
- * win/tools/vsprops/common.vsprops:
-
-2008-01-29 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Tim Hatcher.
-
- <rdar://problem/5600926> WebCore on Tiger must link to its own copy of SQLite 3.4 or newer (so HTML database behavior will be correct).
-
- * WebCoreSQLite3/sqlite3.h: Added.
- * WebCoreSQLite3/sqlite3ext.h: Added.
- * libWebCoreSQLite3.a: Added.
-
-2008-01-29 Alexey Proskuryakov <ap@webkit.org>
-
- Debug (external) build fix.
-
- Removed _DEBUG preprocessor definition, which indicates that debug libraries are used (while they aren't).
- This preprocessor definition is automatically set by Visual Studio as needed anyway.
-
- * win/tools/vsprops/debug.vsprops:
-
-2008-01-17 Steve Falkenburg <sfalken@apple.com>
-
- Add preprocessor define accidently dropped in my unification,
- and required by some builds. Fixes an issue that caused both
- debug and release DLLs to be loaded.
-
- Rubber-stamped by Jon Honeycutt.
-
- * win/tools/vsprops/debug_internal.vsprops:
-
-2008-01-16 Steve Falkenburg <sfalken@apple.com>
-
- Use recommended security-related compiler settings.
-
- Reviewed by Adam.
-
- * win/tools/vsprops/common.vsprops:
-
-2008-01-16 Steve Falkenburg <sfalken@apple.com>
-
- Build fix.
-
- * win/tools/vsprops/release.vsprops:
-
-2008-01-15 Adele Peterson <adele@apple.com>
-
- Reviewed by Adam and Antti.
-
- Updated libraries for <rdar://problem/5619062> Add load progress indicator to video controls
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterfaceLeopard.a:
- * libWebKitSystemInterfaceTiger.a:
- * win/include/SafariTheme: Added.
- * win/include/SafariTheme/SafariThemeConstants.h: Added. Placeholder empty header until we release an updated WebKitSupportLibrary.
-
-2008-01-14 Steve Falkenburg <sfalken@apple.com>
-
- Use shared vsprops for most vcproj properties.
-
- Reviewed by Darin Adler.
-
- * win/tools/vsprops/common.vsprops:
- * win/tools/vsprops/debug.vsprops:
- * win/tools/vsprops/debug_internal.vsprops:
- * win/tools/vsprops/release.vsprops:
-
-2008-01-11 Steve Falkenburg <sfalken@apple.com>
-
- Share common files across projects.
-
- Unify vsprops files
- Debug: common.vsprops, debug.vsprops
- Debug_Internal: common.vsprops, debug.vsprops, debug_internal.vsprops
- Release: common.vsprops, release.vsprops
-
- Shared properties can go into common.vsprops, shared debug settings can go into debug.vsprops.
- debug_internal.vsprops will be mostly empty except for file path prefix modifiers.
-
- Moved auto-version.sh, VERSION, PRODUCTVERSION to tools.
-
- Reviewed by Adam Roben.
-
- * win/tools/WinTools.make:
- * win/tools/scripts: Added.
- * win/tools/scripts/PRODUCTVERSION: Added.
- * win/tools/scripts/VERSION: Added.
- * win/tools/scripts/auto-version.sh: Copied from WebCore/WebCore.vcproj/auto-version.sh.
- * win/tools/vsprops/debug.vsprops:
- * win/tools/vsprops/debug_internal.vsprops: Added.
- * win/tools/vsprops/release.vsprops:
-
-2008-01-11 Steve Falkenburg <sfalken@apple.com>
-
- Add shared vsprops to help unify our Windows tools settings.
-
- Reviewed by Hyatt.
-
- * win/tools: Added.
- * win/tools/WinTools.make: Added.
- * win/tools/vsprops: Added.
- * win/tools/vsprops/common.vsprops: Added.
- * win/tools/vsprops/debug.vsprops: Added.
- * win/tools/vsprops/release.vsprops: Added.
-
-2008-01-07 Mark Rowe <mrowe@apple.com>
-
- Update Tiger library to a G3-friendly version.
-
- * libWebKitSystemInterfaceTiger.a:
-
-2008-01-07 Adele Peterson <adele@apple.com>
-
- Reviewed by Antti, Adam, and Mitz.
-
- WebKitLibraries part of fix for
- <rdar://problem/5619073> Updated look for <video> controls
- <rdar://problem/5619057> Add volume control to video controls
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterfaceLeopard.a:
- * libWebKitSystemInterfaceTiger.a:
-
-2008-01-03 Mark Rowe <mrowe@apple.com>
-
- Update Tiger library to a G3-friendly version.
-
- * libWebKitSystemInterfaceTiger.a:
-
-2008-01-03 Adele Peterson <adele@apple.com>
-
- Update libraries for <rdar://problem/4106190> Include "Where from" metadata in drag-and-dropped images
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterfaceLeopard.a:
- * libWebKitSystemInterfaceTiger.a:
-
-2007-12-21 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Dan Bernstein.
-
- Fix http://bugs.webkit.org/show_bug.cgi?id=16549.
- Bug 16549: WebKit nightly build failing to launch on PowerPC G3s
-
- * libWebKitSystemInterfaceTiger.a: Update to a G3-friendly version.
-
-2007-12-07 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Darin Adler.
-
- - updated system interface for fixing <rdar://problem/5499918> REGRESSION: insertion point in input field with custom border cuts holes in focus ring interior edges
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterfaceLeopard.a:
- * libWebKitSystemInterfaceTiger.a:
-
-2007-11-27 John Sullivan <sullivan@apple.com>
-
- Fixed 5614525, caused by a recent bug in WKGetExtensionsForMIMEType
- that affects Safari.
-
- reviewed by Kevin Decker
-
- * libWebKitSystemInterfaceLeopard.a:
- * libWebKitSystemInterfaceTiger.a:
-
-2007-11-26 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Adam Roben.
-
- Bug 16137: Web Inspector window on Leopard should have a unified toolbar and window title
- http://bugs.webkit.org/show_bug.cgi?id=16137
-
- Add a new function to make bottom window corners square for textured windows.
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterfaceTiger.a:
- * libWebKitSystemInterfaceLeopard.a:
-
-2007-11-23 Adam Roben <aroben@apple.com>
-
- Add wkSetPatternPhaseInUserSpace to WebKitSystemInterface on Windows
-
- Reviewed by Tim.
-
- * win/include/WebKitSystemInterface/WebKitSystemInterface.h: Added
- declaration.
- * win/lib/WebKitSystemInterface.lib: Updated.
- * win/lib/WebKitSystemInterface_debug.lib: Updated.
-
-2007-11-16 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Adam.
-
- <rdar://problem/5603832>
- XMLHttpRequest readyState 3 & responseText buffer issues.
-
- Add wkSetCFURLRequestShouldContentSniff.
-
- * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
- * win/lib/WebKitSystemInterface.lib:
- * win/lib/WebKitSystemInterface_debug.lib:
-
-2007-11-05 Antti Koivisto <antti@apple.com>
-
- Reviewed by Sam.
-
- Update WKQTMovieViewSetDrawSynchronously.
-
- * libWebKitSystemInterfaceLeopard.a:
- * libWebKitSystemInterfaceTiger.a:
-
-2007-11-02 Antti Koivisto <antti@apple.com>
-
- Reviewed by Darin Adler.
-
- Update to add WKQTMovieViewSetDrawSynchronously
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterfaceLeopard.a:
- * libWebKitSystemInterfaceTiger.a:
-
-2007-10-26 Adele Peterson <adele@apple.com>
-
- Reviewed by Tim Hatcher.
-
- Updating header too for WKDrawCapsLockIndicator.
-
- * WebKitSystemInterface.h:
-
-2007-10-26 Adele Peterson <adele@apple.com>
-
- Reviewed by Oliver.
-
- Adding WKDrawCapsLockIndicator in preparation for fixing the caps lock indicator.
-
- * libWebKitSystemInterfaceLeopard.a:
- * libWebKitSystemInterfaceTiger.a:
-
-2007-10-25 Adam Roben <aroben@apple.com>
-
- Add wkSetPatternBaseCTM.
-
- * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
- * win/lib/WebKitSystemInterface.lib:
- * win/lib/WebKitSystemInterface_debug.lib:
-
-2007-10-25 Sam Weinig <sam@webkit.org>
-
- Fix the windows build.
-
- * win/lib/WebKitSystemInterface.lib:
- * win/lib/WebKitSystemInterface_debug.lib:
-
-2007-10-25 Timothy Hatcher <timothy@apple.com>
-
- Add WKSetPatternBaseCTM.
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterfaceLeopard.a:
- * libWebKitSystemInterfaceTiger.a:
-
-2007-10-25 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Adam.
-
- Update the Leopard WebKitSystemInterface to be 4-way univeral to include 64-bit.
-
- * libWebKitSystemInterfaceLeopard.a:
-
-2007-10-25 Sam Weinig <sam@webkit.org>
-
- Added wrapper for getting the foundation cache directory.
-
- Reviewed by Adam Roben.
-
- * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
- * win/lib/WebKitSystemInterface.lib:
- * win/lib/WebKitSystemInterface_debug.lib:
-
-2007-10-24 Adam Roben <aroben@apple.com>
-
- Added some font-related functions needed for <rdar://5549919>
-
- Reviewed by Ada.
-
- * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
- * win/lib/WebKitSystemInterface.lib:
- * win/lib/WebKitSystemInterface_debug.lib:
-
-2007-10-24 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Mark Rowe.
-
- <rdar://problem/5069711> OpenSource version of libWebKitSystemInterface.a is Tiger only, causes issues if used on Leopard
-
- Add system specific versions of WebKitSystemInterface.
-
- * libWebKitSystemInterface.a: Removed.
- * libWebKitSystemInterfaceLeopard.a: Added.
- * libWebKitSystemInterfaceTiger.a: Added.
-
-2007-10-11 Ada Chan <adachan@apple.com>
-
- <rdar://problem/5534421>
- Added wkGetDefaultHTTPCookieStorage(). Updated libraries.
-
- Reviewed by Darin Adler.
-
- * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
- * win/lib/WebKitSystemInterface.lib:
- * win/lib/WebKitSystemInterface_debug.lib:
-
-2007-09-27 Sam Weinig <sam@webkit.org>
-
- Build fix. Ran update-webkitsysteminterface script on Tiger, because
- the resulting binary differs when built on Tiger.
-
- * libWebKitSystemInterface.a:
-
-2007-09-27 David Hyatt <hyatt@apple.com>
-
- Update WebKitSYstemInterface for @font-face changes.
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterface.a:
-
-2007-09-18 Geoffrey Garen <ggaren@apple.com>
-
- Build fix. Ran update-webkitsysteminterface script on Tiger, because
- the resulting binary differs when built on Tiger. See
- <rdar://problem/5490613>.
-
- * libWebKitSystemInterface.a:
-
-2007-09-18 Geoffrey Garen <ggaren@apple.com>
-
- Build fix. Ran update-webkitsysteminterface script.
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterface.a:
-
-2007-08-28 Anders Carlsson <andersca@apple.com>
-
- Add WKSetNSURLRequestShouldContentSniff.
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterface.a:
-
-2007-08-28 Ada Chan <adachan@apple.com>
-
- <rdar://problem/4876242> Added SPI to fetch SSL certificate information.
- Updated libraries.
-
- Reviewed by Adam.
-
- * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
- * win/lib/WebKitSystemInterface.lib:
- * win/lib/WebKitSystemInterface_debug.lib:
-
-2007-07-23 Ada Chan <adachan@apple.com>
-
- Reviewed by Steve.
-
- Update WebKitSystemInterface.{h,lib}.
-
- * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
- * win/lib/WebKitSystemInterface.lib:
- * win/lib/WebKitSystemInterface_debug.lib:
-
-2007-07-19 Ada Chan <adachan@apple.com>
-
- Rubber-stamped by Adam.
-
- Update libraries.
-
- * win/lib/WebKitSystemInterface.lib:
- * win/lib/WebKitSystemInterface_debug.lib:
-
-2007-07-06 Adam Roben <aroben@apple.com>
-
- Update WebKitSystemInterface.{h,lib} for <rdar://problem/5301994>
-
- Reviewed by Alice.
-
- * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
- * win/lib/WebKitSystemInterface.lib:
- * win/lib/WebKitSystemInterface_debug.lib:
-
-2007-06-29 Antti Koivisto <antti@apple.com>
-
- Reviewed by Maciej.
-
- Added WKQTMovieDataRate and WKQTMovieMaxTimeLoaded
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterface.a:
-
-2007-03-29 Beth Dakin <bdakin@apple.com>
-
- Rubber-stamped by Adam.
-
- Keep OpenSource building.
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterface.a:
-
-2007-03-28 Antti Koivisto <antti@apple.com>
-
- Update libWebKitSystemInterface, previous version was out of date.
-
- * libWebKitSystemInterface.a:
-
-2007-03-27 Antti Koivisto <antti@apple.com>
-
- Reviewed by Darin Adler.
-
- Added wkGetWheelEventDeltas
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterface.a:
-
-2007-03-07 Mark Rowe <mrowe@apple.com>
-
- Build fix. Rebuild against 10.4 SDK.
-
- * libWebKitSystemInterface.a:
-
-2007-03-06 Kevin Decker <kdecker@apple.com>
-
- Reviewed by Brady
-
- Fixed: <rdar://problem/4126976> private keys imported by WebKit should not be accessible by all applications
-
- * libWebKitSystemInterface.a:
-
-2007-02-21 Anders Carlsson <acarlsson@apple.com>
-
- Add new version with WKCGContextIsBitmapContext.
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterface.a:
-
-2006-12-16 Adele Peterson <adele@apple.com>
-
- Reviewed by Adam.
-
- WebKitLibraries part of fix for:
- <rdar://problem/4463829> Switch to use new search field implementation for <input type="search">
-
- Added wkDrawTextFieldCellFocusRing.
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterface.a:
-
-2006-10-11 Darin Adler <darin@apple.com>
-
- Reviewed by John Sullivan.
-
- * WebKitSystemInterface.h: Updated to a C++-compatible version.
-
-2006-08-31 Adele Peterson <adele@apple.com>
-
- Reviewed by John Sullivan.
-
- Removed wkSecureEventInput and wkSetSecureEventInput, since this can be done with API.
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterface.a:
-
-2006-08-30 Adele Peterson <adele@apple.com>
-
- Reviewed by Hyatt.
-
- Updated for http://bugs.webkit.org/show_bug.cgi?id=10575
- Enable secure input mode for new password fields
-
- * WebKitSystemInterface.h: Added WKSetSecureEventInput and WKSecureEventInput;
- * libWebKitSystemInterface.a:
-
-2006-07-09 Anders Carlsson <acarlsson@apple.com>
-
- Reviewed by Darin Adler.
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterface.a:
- Add WKPathFromFont.
-
-2006-07-05 Adele Peterson <adele@apple.com>
-
- Reviewed by Maciej and Hyatt.
-
- * WebKitSystemInterface.h: Updated.
- * libWebKitSystemInterface.a: Updated.
-
-2006-06-16 Adele Peterson <adele@apple.com>
-
- Reviewed by Alice.
-
- * WebKitSystemInterface.h: Added WKDrawBezeledTextArea().
- * libWebKitSystemInterface.a: ditto.
-
-2006-04-01 Eric Seidel <eseidel@apple.com>
-
- * libWebKitSystemInterface.a: commit a universal binary.
-
-2006-04-01 Darin Adler <darin@apple.com>
-
- Reviewed by Beth.
-
- * libWebKitSystemInterface.a: Changed alpha in the focus-ring drawing
- code to use the system default alpha.
-
-2006-03-17 Eric Seidel <eseidel@apple.com>
-
- * libWebKitSystemInterface.a: commit a universal binary.
-
-2006-03-17 Adele Peterson <adele@apple.com>
-
- * WebKitSystemInterface.h: Added WKDrawBezeledTextFieldCell()
- * libWebKitSystemInterface.a: ditto
-
-2006-02-28 John Sullivan <sullivan@apple.com>
-
- * WebKitSystemInterface.h: Removed WKMouseIsDown()
- * libWebKitSystemInterface.a: ditto
-
-2006-02-23 Timothy Hatcher <timothy@apple.com>
-
- New build to fix the i386 arch. (The _cuEnc64 symbol was missing.)
-
- * libWebKitSystemInterface.a:
-
-2006-02-19 Darin Adler <darin@apple.com>
-
- * WebKitSystemInterface.h: Added WKDrawFocusRing.
- * libWebKitSystemInterface.a: Ditto.
-
-2006-02-06 John Sullivan <sullivan@apple.com>
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterface.a:
- removed WKExecutableLinkedInTigerOrEarlier
-
-2005-11-01 Darin Adler <darin@apple.com>
-
- * libWebKitSystemInterface.a: Updated.
-
-2005-10-04 Maciej Stachowiak <mjs@apple.com>
-
- - updated
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterface.a:
-
-2005-09-08 Justin Garcia <justin.garcia@apple.com>
-
- * WebKitSystemInterface.h: Update to latest
- * libWebKitSystemInterface.a: ditto
-
-2005-09-04 Darin Adler <darin@apple.com>
-
- * WebKitSystemInterface.h: Update to latest
- * libWebKitSystemInterface.a: Ditto.
-
-2005-08-07 Darin Adler <darin@apple.com>
-
- * libWebKitSystemInterface.a: Universal binary.
- * WebKitSystemInterface.h: Updated for calls that Eric recently removed.
-
-2005-07-01 John Sullivan <sullivan@apple.com>
-
- - added WKExecutableLinkedInTigerOrEarlier
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterface.a:
-
-2005-06-06 Maciej Stachowiak <mjs@apple.com>
-
- - updated for crashing bugfix
-
- * libWebKitSystemInterface.a:
-
-2005-06-06 Maciej Stachowiak <mjs@apple.com>
-
- - updated
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterface.a:
-
-2005-06-06 Maciej Stachowiak <mjs@apple.com>
-
- - updated
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterface.a:
-
-2005-06-06 Maciej Stachowiak <mjs@apple.com>
-
- - updated
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterface.a:
-
-2005-06-06 Maciej Stachowiak <mjs@apple.com>
-
- - updated
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterface.a:
-
-2005-06-06 Maciej Stachowiak <mjs@apple.com>
-
- - updated
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterface.a:
-
-2005-06-06 Maciej Stachowiak <mjs@apple.com>
-
- - updated
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterface.a:
-
-2005-06-06 Maciej Stachowiak <mjs@apple.com>
-
- - updated
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterface.a:
-
-2005-06-06 Maciej Stachowiak <mjs@apple.com>
-
- - updated
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterface.a:
-
-2005-06-05 Maciej Stachowiak <mjs@apple.com>
-
- - added a few more bits of SPI
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterface.a:
-
-2005-06-05 Maciej Stachowiak <mjs@apple.com>
-
- - added file type and NSURLResponse caching SPI
-
- * WebKitSystemInterface.h:
- * libWebKitSystemInterface.a:
-
-2005-06-05 Maciej Stachowiak <mjs@apple.com>
-
- - initial checkin of WebKitSystemInterface binary
-
- * WebKitSystemInterface.h: Added.
- * libWebKitSystemInterface.a: Added.
-
diff --git a/WebKitLibraries/WebCoreSQLite3/sqlite3.h b/WebKitLibraries/WebCoreSQLite3/sqlite3.h
deleted file mode 100644
index 21a21b5..0000000
--- a/WebKitLibraries/WebCoreSQLite3/sqlite3.h
+++ /dev/null
@@ -1,2679 +0,0 @@
-/*
-** 2001 September 15
-**
-** The author disclaims copyright to this source code. In place of
-** a legal notice, here is a blessing:
-**
-** May you do good and not evil.
-** May you find forgiveness for yourself and forgive others.
-** May you share freely, never taking more than you give.
-**
-*************************************************************************
-** This header file defines the interface that the SQLite library
-** presents to client programs. If a C-function, structure, datatype,
-** or constant definition does not appear in this file, then it is
-** not a published API of SQLite, is subject to change without
-** notice, and should not be referenced by programs that use SQLite.
-**
-** Some of the definitions that are in this file are marked as
-** "experimental". Experimental interfaces are normally new
-** features recently added to SQLite. We do not anticipate changes
-** to experimental interfaces but reserve to make minor changes if
-** experience from use "in the wild" suggest such changes are prudent.
-**
-** The official C-language API documentation for SQLite is derived
-** from comments in this file. This file is the authoritative source
-** on how SQLite interfaces are suppose to operate.
-**
-** The name of this file under configuration management is "sqlite.h.in".
-** The makefile makes some minor changes to this file (such as inserting
-** the version number) and changes its name to "sqlite3.h" as
-** part of the build process.
-**
-** @(#) $Id: sqlite.h.in,v 1.212 2007/06/14 20:57:19 drh Exp $
-*/
-#ifndef _SQLITE3_H_
-#define _SQLITE3_H_
-#include <stdarg.h> /* Needed for the definition of va_list */
-
-/*
-** Make sure we can call this stuff from C++.
-*/
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
-** Make sure these symbols where not defined by some previous header
-** file.
-*/
-#ifdef SQLITE_VERSION
-# undef SQLITE_VERSION
-#endif
-#ifdef SQLITE_VERSION_NUMBER
-# undef SQLITE_VERSION_NUMBER
-#endif
-
-/*
-** CAPI3REF: Compile-Time Library Version Numbers
-**
-** The version of the SQLite library is contained in the sqlite3.h
-** header file in a #define named SQLITE_VERSION. The SQLITE_VERSION
-** macro resolves to a string constant.
-**
-** The format of the version string is "X.Y.Z", where
-** X is the major version number, Y is the minor version number and Z
-** is the release number. The X.Y.Z might be followed by "alpha" or "beta".
-** For example "3.1.1beta".
-**
-** The X value is always 3 in SQLite. The X value only changes when
-** backwards compatibility is broken and we intend to never break
-** backwards compatibility. The Y value only changes when
-** there are major feature enhancements that are forwards compatible
-** but not backwards compatible. The Z value is incremented with
-** each release but resets back to 0 when Y is incremented.
-**
-** The SQLITE_VERSION_NUMBER is an integer with the value
-** (X*1000000 + Y*1000 + Z). For example, for version "3.1.1beta",
-** SQLITE_VERSION_NUMBER is set to 3001001. To detect if they are using
-** version 3.1.1 or greater at compile time, programs may use the test
-** (SQLITE_VERSION_NUMBER>=3001001).
-**
-** See also: [sqlite3_libversion()] and [sqlite3_libversion_number()].
-*/
-#define SQLITE_VERSION "3.4.0"
-#define SQLITE_VERSION_NUMBER 3004000
-
-/*
-** CAPI3REF: Run-Time Library Version Numbers
-**
-** These routines return values equivalent to the header constants
-** [SQLITE_VERSION] and [SQLITE_VERSION_NUMBER]. The values returned
-** by this routines should only be different from the header values
-** if you compile your program using an sqlite3.h header from a
-** different version of SQLite that the version of the library you
-** link against.
-**
-** The sqlite3_version[] string constant contains the text of the
-** [SQLITE_VERSION] string. The sqlite3_libversion() function returns
-** a poiner to the sqlite3_version[] string constant. The function
-** is provided for DLL users who can only access functions and not
-** constants within the DLL.
-*/
-extern const char sqlite3_version[];
-const char *sqlite3_libversion(void);
-int sqlite3_libversion_number(void);
-
-/*
-** CAPI3REF: Database Connection Handle
-**
-** Each open SQLite database is represented by pointer to an instance of the
-** opaque structure named "sqlite3". It is useful to think of an sqlite3
-** pointer as an object. The [sqlite3_open] interface is its constructor
-** and [sqlite3_close] is its destructor. There are many other interfaces
-** (such as [sqlite3_prepare_v2], [sqlite3_create_function], and
-** [sqlite3_busy_timeout] to name but three) that are methods on this
-** object.
-*/
-typedef struct sqlite3 sqlite3;
-
-
-/*
-** CAPI3REF: 64-Bit Integer Types
-**
-** Some compilers do not support the "long long" datatype. So we have
-** to do compiler-specific typedefs for 64-bit signed and unsigned integers.
-**
-** Many SQLite interface functions require a 64-bit integer arguments.
-** Those interfaces are declared using this typedef.
-*/
-#ifdef SQLITE_INT64_TYPE
- typedef SQLITE_INT64_TYPE sqlite_int64;
- typedef unsigned SQLITE_INT64_TYPE sqlite_uint64;
-#elif defined(_MSC_VER) || defined(__BORLANDC__)
- typedef __int64 sqlite_int64;
- typedef unsigned __int64 sqlite_uint64;
-#else
- typedef long long int sqlite_int64;
- typedef unsigned long long int sqlite_uint64;
-#endif
-
-/*
-** If compiling for a processor that lacks floating point support,
-** substitute integer for floating-point
-*/
-#ifdef SQLITE_OMIT_FLOATING_POINT
-# define double sqlite_int64
-#endif
-
-/*
-** CAPI3REF: Closing A Database Connection
-**
-** Call this function with a pointer to a structure that was previously
-** returned from [sqlite3_open()] and the corresponding database will by
-** closed.
-**
-** All SQL statements prepared using [sqlite3_prepare_v2()] or
-** [sqlite3_prepare16_v2()] must be destroyed using [sqlite3_finalize()]
-** before this routine is called. Otherwise, SQLITE_BUSY is returned and the
-** database connection remains open.
-*/
-int sqlite3_close(sqlite3 *);
-
-/*
-** The type for a callback function.
-** This is legacy and deprecated. It is included for historical
-** compatibility and is not documented.
-*/
-typedef int (*sqlite3_callback)(void*,int,char**, char**);
-
-/*
-** CAPI3REF: One-Step Query Execution Interface
-**
-** This interface is used to do a one-time evaluatation of zero
-** or more SQL statements. UTF-8 text of the SQL statements to
-** be evaluted is passed in as the second parameter. The statements
-** are prepared one by one using [sqlite3_prepare()], evaluated
-** using [sqlite3_step()], then destroyed using [sqlite3_finalize()].
-**
-** If one or more of the SQL statements are queries, then
-** the callback function specified by the 3rd parameter is
-** invoked once for each row of the query result. This callback
-** should normally return 0. If the callback returns a non-zero
-** value then the query is aborted, all subsequent SQL statements
-** are skipped and the sqlite3_exec() function returns the SQLITE_ABORT.
-**
-** The 4th parameter to this interface is an arbitrary pointer that is
-** passed through to the callback function as its first parameter.
-**
-** The 2nd parameter to the callback function is the number of
-** columns in the query result. The 3rd parameter to the callback
-** is an array of strings holding the values for each column
-** as extracted using [sqlite3_column_text()].
-** The 4th parameter to the callback is an array of strings
-** obtained using [sqlite3_column_name()] and holding
-** the names of each column.
-**
-** The callback function may be NULL, even for queries. A NULL
-** callback is not an error. It just means that no callback
-** will be invoked.
-**
-** If an error occurs while parsing or evaluating the SQL (but
-** not while executing the callback) then an appropriate error
-** message is written into memory obtained from [sqlite3_malloc()] and
-** *errmsg is made to point to that message. The calling function
-** is responsible for freeing the memory that holds the error
-** message. Use [sqlite3_free()] for this. If errmsg==NULL,
-** then no error message is ever written.
-**
-** The return value is is SQLITE_OK if there are no errors and
-** some other [SQLITE_OK | return code] if there is an error.
-** The particular return value depends on the type of error.
-**
-*/
-int sqlite3_exec(
- sqlite3*, /* An open database */
- const char *sql, /* SQL to be evaluted */
- int (*callback)(void*,int,char**,char**), /* Callback function */
- void *, /* 1st argument to callback */
- char **errmsg /* Error msg written here */
-);
-
-/*
-** CAPI3REF: Result Codes
-** KEYWORDS: SQLITE_OK
-**
-** Many SQLite functions return an integer result code from the set shown
-** above in order to indicates success or failure.
-**
-** The result codes above are the only ones returned by SQLite in its
-** default configuration. However, the [sqlite3_extended_result_codes()]
-** API can be used to set a database connectoin to return more detailed
-** result codes.
-**
-** See also: [SQLITE_IOERR_READ | extended result codes]
-**
-*/
-#define SQLITE_OK 0 /* Successful result */
-/* beginning-of-error-codes */
-#define SQLITE_ERROR 1 /* SQL error or missing database */
-#define SQLITE_INTERNAL 2 /* NOT USED. Internal logic error in SQLite */
-#define SQLITE_PERM 3 /* Access permission denied */
-#define SQLITE_ABORT 4 /* Callback routine requested an abort */
-#define SQLITE_BUSY 5 /* The database file is locked */
-#define SQLITE_LOCKED 6 /* A table in the database is locked */
-#define SQLITE_NOMEM 7 /* A malloc() failed */
-#define SQLITE_READONLY 8 /* Attempt to write a readonly database */
-#define SQLITE_INTERRUPT 9 /* Operation terminated by sqlite3_interrupt()*/
-#define SQLITE_IOERR 10 /* Some kind of disk I/O error occurred */
-#define SQLITE_CORRUPT 11 /* The database disk image is malformed */
-#define SQLITE_NOTFOUND 12 /* NOT USED. Table or record not found */
-#define SQLITE_FULL 13 /* Insertion failed because database is full */
-#define SQLITE_CANTOPEN 14 /* Unable to open the database file */
-#define SQLITE_PROTOCOL 15 /* NOT USED. Database lock protocol error */
-#define SQLITE_EMPTY 16 /* Database is empty */
-#define SQLITE_SCHEMA 17 /* The database schema changed */
-#define SQLITE_TOOBIG 18 /* String or BLOB exceeds size limit */
-#define SQLITE_CONSTRAINT 19 /* Abort due to contraint violation */
-#define SQLITE_MISMATCH 20 /* Data type mismatch */
-#define SQLITE_MISUSE 21 /* Library used incorrectly */
-#define SQLITE_NOLFS 22 /* Uses OS features not supported on host */
-#define SQLITE_AUTH 23 /* Authorization denied */
-#define SQLITE_FORMAT 24 /* Auxiliary database format error */
-#define SQLITE_RANGE 25 /* 2nd parameter to sqlite3_bind out of range */
-#define SQLITE_NOTADB 26 /* File opened that is not a database file */
-#define SQLITE_ROW 100 /* sqlite3_step() has another row ready */
-#define SQLITE_DONE 101 /* sqlite3_step() has finished executing */
-/* end-of-error-codes */
-
-/*
-** CAPI3REF: Extended Result Codes
-**
-** In its default configuration, SQLite API routines return one of 26 integer
-** result codes described at result-codes. However, experience has shown that
-** many of these result codes are too course-grained. They do not provide as
-** much information about problems as users might like. In an effort to
-** address this, newer versions of SQLite (version 3.3.8 and later) include
-** support for additional result codes that provide more detailed information
-** about errors. The extended result codes are enabled (or disabled) for
-** each database
-** connection using the [sqlite3_extended_result_codes()] API.
-**
-** Some of the available extended result codes are listed above.
-** We expect the number of extended result codes will be expand
-** over time. Software that uses extended result codes should expect
-** to see new result codes in future releases of SQLite.
-**
-** The symbolic name for an extended result code always contains a related
-** primary result code as a prefix. Primary result codes contain a single
-** "_" character. Extended result codes contain two or more "_" characters.
-** The numeric value of an extended result code can be converted to its
-** corresponding primary result code by masking off the lower 8 bytes.
-**
-** The SQLITE_OK result code will never be extended. It will always
-** be exactly zero.
-*/
-#define SQLITE_IOERR_READ (SQLITE_IOERR | (1<<8))
-#define SQLITE_IOERR_SHORT_READ (SQLITE_IOERR | (2<<8))
-#define SQLITE_IOERR_WRITE (SQLITE_IOERR | (3<<8))
-#define SQLITE_IOERR_FSYNC (SQLITE_IOERR | (4<<8))
-#define SQLITE_IOERR_DIR_FSYNC (SQLITE_IOERR | (5<<8))
-#define SQLITE_IOERR_TRUNCATE (SQLITE_IOERR | (6<<8))
-#define SQLITE_IOERR_FSTAT (SQLITE_IOERR | (7<<8))
-#define SQLITE_IOERR_UNLOCK (SQLITE_IOERR | (8<<8))
-#define SQLITE_IOERR_RDLOCK (SQLITE_IOERR | (9<<8))
-#define SQLITE_IOERR_DELETE (SQLITE_IOERR | (10<<8))
-#define SQLITE_IOERR_BLOCKED (SQLITE_IOERR | (11<<8))
-
-/*
-** CAPI3REF: Enable Or Disable Extended Result Codes
-**
-** This routine enables or disables the
-** [SQLITE_IOERR_READ | extended result codes] feature.
-** By default, SQLite API routines return one of only 26 integer
-** [SQLITE_OK | result codes]. When extended result codes
-** are enabled by this routine, the repetoire of result codes can be
-** much larger and can (hopefully) provide more detailed information
-** about the cause of an error.
-**
-** The second argument is a boolean value that turns extended result
-** codes on and off. Extended result codes are off by default for
-** backwards compatibility with older versions of SQLite.
-*/
-int sqlite3_extended_result_codes(sqlite3*, int onoff);
-
-/*
-** CAPI3REF: Last Insert Rowid
-**
-** Each entry in an SQLite table has a unique 64-bit signed integer key
-** called the "rowid". The rowid is always available as an undeclared
-** column named ROWID, OID, or _ROWID_. If the table has a column of
-** type INTEGER PRIMARY KEY then that column is another an alias for the
-** rowid.
-**
-** This routine returns the rowid of the most recent INSERT into
-** the database from the database connection given in the first
-** argument. If no inserts have ever occurred on this database
-** connection, zero is returned.
-**
-** If an INSERT occurs within a trigger, then the rowid of the
-** inserted row is returned by this routine as long as the trigger
-** is running. But once the trigger terminates, the value returned
-** by this routine reverts to the last value inserted before the
-** trigger fired.
-*/
-sqlite_int64 sqlite3_last_insert_rowid(sqlite3*);
-
-/*
-** CAPI3REF: Count The Number Of Rows Modified
-**
-** This function returns the number of database rows that were changed
-** (or inserted or deleted) by the most recent SQL statement. Only
-** changes that are directly specified by the INSERT, UPDATE, or
-** DELETE statement are counted. Auxiliary changes caused by
-** triggers are not counted. Use the [sqlite3_total_changes()] function
-** to find the total number of changes including changes caused by triggers.
-**
-** Within the body of a trigger, the sqlite3_changes() interface can be
-** called to find the number of
-** changes in the most recently completed INSERT, UPDATE, or DELETE
-** statement within the body of the trigger.
-**
-** All changes are counted, even if they were later undone by a
-** ROLLBACK or ABORT. Except, changes associated with creating and
-** dropping tables are not counted.
-**
-** If a callback invokes [sqlite3_exec()] or [sqlite3_step()] recursively,
-** then the changes in the inner, recursive call are counted together
-** with the changes in the outer call.
-**
-** SQLite implements the command "DELETE FROM table" without a WHERE clause
-** by dropping and recreating the table. (This is much faster than going
-** through and deleting individual elements form the table.) Because of
-** this optimization, the change count for "DELETE FROM table" will be
-** zero regardless of the number of elements that were originally in the
-** table. To get an accurate count of the number of rows deleted, use
-** "DELETE FROM table WHERE 1" instead.
-*/
-int sqlite3_changes(sqlite3*);
-
-/*
-** CAPI3REF: Total Number Of Rows Modified
-***
-** This function returns the number of database rows that have been
-** modified by INSERT, UPDATE or DELETE statements since the database handle
-** was opened. This includes UPDATE, INSERT and DELETE statements executed
-** as part of trigger programs. All changes are counted as soon as the
-** statement that makes them is completed (when the statement handle is
-** passed to [sqlite3_reset()] or [sqlite_finalise()]).
-**
-** See also the [sqlite3_change()] interface.
-**
-** SQLite implements the command "DELETE FROM table" without a WHERE clause
-** by dropping and recreating the table. (This is much faster than going
-** through and deleting individual elements form the table.) Because of
-** this optimization, the change count for "DELETE FROM table" will be
-** zero regardless of the number of elements that were originally in the
-** table. To get an accurate count of the number of rows deleted, use
-** "DELETE FROM table WHERE 1" instead.
-*/
-int sqlite3_total_changes(sqlite3*);
-
-/*
-** CAPI3REF: Interrupt A Long-Running Query
-**
-** This function causes any pending database operation to abort and
-** return at its earliest opportunity. This routine is typically
-** called in response to a user action such as pressing "Cancel"
-** or Ctrl-C where the user wants a long query operation to halt
-** immediately.
-**
-** It is safe to call this routine from a thread different from the
-** thread that is currently running the database operation.
-**
-** The SQL operation that is interrupted will return [SQLITE_INTERRUPT].
-** If an interrupted operation was an update that is inside an
-** explicit transaction, then the entire transaction will be rolled
-** back automatically.
-*/
-void sqlite3_interrupt(sqlite3*);
-
-/*
-** CAPI3REF: Determine If An SQL Statement Is Complete
-**
-** These functions return true if the given input string comprises
-** one or more complete SQL statements. For the sqlite3_complete() call,
-** the parameter must be a nul-terminated UTF-8 string. For
-** sqlite3_complete16(), a nul-terminated machine byte order UTF-16 string
-** is required.
-**
-** These routines are useful for command-line input to determine if the
-** currently entered text forms one or more complete SQL statements or
-** if additional input is needed before sending the statements into
-** SQLite for parsing. The algorithm is simple. If the
-** last token other than spaces and comments is a semicolon, then return
-** true. Actually, the algorithm is a little more complicated than that
-** in order to deal with triggers, but the basic idea is the same: the
-** statement is not complete unless it ends in a semicolon.
-*/
-int sqlite3_complete(const char *sql);
-int sqlite3_complete16(const void *sql);
-
-/*
-** CAPI3REF: Register A Callback To Handle SQLITE_BUSY Errors
-**
-** This routine identifies a callback function that might be invoked
-** whenever an attempt is made to open a database table
-** that another thread or process has locked.
-** If the busy callback is NULL, then [SQLITE_BUSY]
-** (or sometimes [SQLITE_IOERR_BLOCKED])
-** is returned immediately upon encountering the lock.
-** If the busy callback is not NULL, then the
-** callback will be invoked with two arguments. The
-** first argument to the handler is a copy of the void* pointer which
-** is the third argument to this routine. The second argument to
-** the handler is the number of times that the busy handler has
-** been invoked for this locking event. If the
-** busy callback returns 0, then no additional attempts are made to
-** access the database and [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED] is returned.
-** If the callback returns non-zero, then another attempt is made to open the
-** database for reading and the cycle repeats.
-**
-** The presence of a busy handler does not guarantee that
-** it will be invoked when there is lock contention.
-** If SQLite determines that invoking the busy handler could result in
-** a deadlock, it will return [SQLITE_BUSY] instead.
-** Consider a scenario where one process is holding a read lock that
-** it is trying to promote to a reserved lock and
-** a second process is holding a reserved lock that it is trying
-** to promote to an exclusive lock. The first process cannot proceed
-** because it is blocked by the second and the second process cannot
-** proceed because it is blocked by the first. If both processes
-** invoke the busy handlers, neither will make any progress. Therefore,
-** SQLite returns [SQLITE_BUSY] for the first process, hoping that this
-** will induce the first process to release its read lock and allow
-** the second process to proceed.
-**
-** The default busy callback is NULL.
-**
-** The [SQLITE_BUSY] error is converted to [SQLITE_IOERR_BLOCKED] when
-** SQLite is in the middle of a large transaction where all the
-** changes will not fit into the in-memory cache. SQLite will
-** already hold a RESERVED lock on the database file, but it needs
-** to promote this lock to EXCLUSIVE so that it can spill cache
-** pages into the database file without harm to concurrent
-** readers. If it is unable to promote the lock, then the in-memory
-** cache will be left in an inconsistent state and so the error
-** code is promoted from the relatively benign [SQLITE_BUSY] to
-** the more severe [SQLITE_IOERR_BLOCKED]. This error code promotion
-** forces an automatic rollback of the changes. See the
-** <a href="http://www.sqlite.org/cvstrac/wiki?p=CorruptionFollowingBusyError">
-** CorruptionFollowingBusyError</a> wiki page for a discussion of why
-** this is important.
-**
-** Sqlite is re-entrant, so the busy handler may start a new query.
-** (It is not clear why anyone would every want to do this, but it
-** is allowed, in theory.) But the busy handler may not close the
-** database. Closing the database from a busy handler will delete
-** data structures out from under the executing query and will
-** probably result in a segmentation fault or other runtime error.
-**
-** There can only be a single busy handler defined for each database
-** connection. Setting a new busy handler clears any previous one.
-** Note that calling [sqlite3_busy_timeout()] will also set or clear
-** the busy handler.
-*/
-int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*);
-
-/*
-** CAPI3REF: Set A Busy Timeout
-**
-** This routine sets a busy handler that sleeps for a while when a
-** table is locked. The handler will sleep multiple times until
-** at least "ms" milliseconds of sleeping have been done. After
-** "ms" milliseconds of sleeping, the handler returns 0 which
-** causes [sqlite3_step()] to return [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED].
-**
-** Calling this routine with an argument less than or equal to zero
-** turns off all busy handlers.
-**
-** There can only be a single busy handler for a particular database
-** connection. If another busy handler was defined
-** (using [sqlite3_busy_handler()]) prior to calling
-** this routine, that other busy handler is cleared.
-*/
-int sqlite3_busy_timeout(sqlite3*, int ms);
-
-/*
-** CAPI3REF: Convenience Routines For Running Queries
-**
-** This next routine is a convenience wrapper around [sqlite3_exec()].
-** Instead of invoking a user-supplied callback for each row of the
-** result, this routine remembers each row of the result in memory
-** obtained from [sqlite3_malloc()], then returns all of the result after the
-** query has finished.
-**
-** As an example, suppose the query result where this table:
-**
-** <pre>
-** Name | Age
-** -----------------------
-** Alice | 43
-** Bob | 28
-** Cindy | 21
-** </pre>
-**
-** If the 3rd argument were &azResult then after the function returns
-** azResult will contain the following data:
-**
-** <pre>
-** azResult[0] = "Name";
-** azResult[1] = "Age";
-** azResult[2] = "Alice";
-** azResult[3] = "43";
-** azResult[4] = "Bob";
-** azResult[5] = "28";
-** azResult[6] = "Cindy";
-** azResult[7] = "21";
-** </pre>
-**
-** Notice that there is an extra row of data containing the column
-** headers. But the *nrow return value is still 3. *ncolumn is
-** set to 2. In general, the number of values inserted into azResult
-** will be ((*nrow) + 1)*(*ncolumn).
-**
-** After the calling function has finished using the result, it should
-** pass the result data pointer to sqlite3_free_table() in order to
-** release the memory that was malloc-ed. Because of the way the
-** [sqlite3_malloc()] happens, the calling function must not try to call
-** [sqlite3_free()] directly. Only [sqlite3_free_table()] is able to release
-** the memory properly and safely.
-**
-** The return value of this routine is the same as from [sqlite3_exec()].
-*/
-int sqlite3_get_table(
- sqlite3*, /* An open database */
- const char *sql, /* SQL to be executed */
- char ***resultp, /* Result written to a char *[] that this points to */
- int *nrow, /* Number of result rows written here */
- int *ncolumn, /* Number of result columns written here */
- char **errmsg /* Error msg written here */
-);
-void sqlite3_free_table(char **result);
-
-/*
-** CAPI3REF: Formatted String Printing Functions
-**
-** These routines are workalikes of the "printf()" family of functions
-** from the standard C library.
-**
-** The sqlite3_mprintf() and sqlite3_vmprintf() routines write their
-** results into memory obtained from [sqlite_malloc()].
-** The strings returned by these two routines should be
-** released by [sqlite3_free()]. Both routines return a
-** NULL pointer if [sqlite3_malloc()] is unable to allocate enough
-** memory to hold the resulting string.
-**
-** In sqlite3_snprintf() routine is similar to "snprintf()" from
-** the standard C library. The result is written into the
-** buffer supplied as the second parameter whose size is given by
-** the first parameter. Note that the order of the
-** first two parameters is reversed from snprintf(). This is an
-** historical accident that cannot be fixed without breaking
-** backwards compatibility. Note also that sqlite3_snprintf()
-** returns a pointer to its buffer instead of the number of
-** characters actually written into the buffer. We admit that
-** the number of characters written would be a more useful return
-** value but we cannot change the implementation of sqlite3_snprintf()
-** now without breaking compatibility.
-**
-** As long as the buffer size is greater than zero, sqlite3_snprintf()
-** guarantees that the buffer is always zero-terminated. The first
-** parameter "n" is the total size of the buffer, including space for
-** the zero terminator. So the longest string that can be completely
-** written will be n-1 characters.
-**
-** These routines all implement some additional formatting
-** options that are useful for constructing SQL statements.
-** All of the usual printf formatting options apply. In addition, there
-** is are "%q" and "%Q" options.
-**
-** The %q option works like %s in that it substitutes a null-terminated
-** string from the argument list. But %q also doubles every '\'' character.
-** %q is designed for use inside a string literal. By doubling each '\''
-** character it escapes that character and allows it to be inserted into
-** the string.
-**
-** For example, so some string variable contains text as follows:
-**
-** <blockquote><pre>
-** char *zText = "It's a happy day!";
-** </pre></blockquote>
-**
-** One can use this text in an SQL statement as follows:
-**
-** <blockquote><pre>
-** char *zSQL = sqlite3_mprintf("INSERT INTO table VALUES('%q')", zText);
-** sqlite3_exec(db, zSQL, 0, 0, 0);
-** sqlite3_free(zSQL);
-** </pre></blockquote>
-**
-** Because the %q format string is used, the '\'' character in zText
-** is escaped and the SQL generated is as follows:
-**
-** <blockquote><pre>
-** INSERT INTO table1 VALUES('It''s a happy day!')
-** </pre></blockquote>
-**
-** This is correct. Had we used %s instead of %q, the generated SQL
-** would have looked like this:
-**
-** <blockquote><pre>
-** INSERT INTO table1 VALUES('It's a happy day!');
-** </pre></blockquote>
-**
-** This second example is an SQL syntax error. As a general rule you
-** should always use %q instead of %s when inserting text into a string
-** literal.
-**
-** The %Q option works like %q except it also adds single quotes around
-** the outside of the total string. Or if the parameter in the argument
-** list is a NULL pointer, %Q substitutes the text "NULL" (without single
-** quotes) in place of the %Q option. So, for example, one could say:
-**
-** <blockquote><pre>
-** char *zSQL = sqlite3_mprintf("INSERT INTO table VALUES(%Q)", zText);
-** sqlite3_exec(db, zSQL, 0, 0, 0);
-** sqlite3_free(zSQL);
-** </pre></blockquote>
-**
-** The code above will render a correct SQL statement in the zSQL
-** variable even if the zText variable is a NULL pointer.
-*/
-char *sqlite3_mprintf(const char*,...);
-char *sqlite3_vmprintf(const char*, va_list);
-char *sqlite3_snprintf(int,char*,const char*, ...);
-
-/*
-** CAPI3REF: Memory Allocation Functions
-**
-** SQLite uses its own memory allocator. On some installations, this
-** memory allocator is identical to the standard malloc()/realloc()/free()
-** and can be used interchangable. On others, the implementations are
-** different. For maximum portability, it is best not to mix calls
-** to the standard malloc/realloc/free with the sqlite versions.
-*/
-void *sqlite3_malloc(int);
-void *sqlite3_realloc(void*, int);
-void sqlite3_free(void*);
-
-/*
-** CAPI3REF: Compile-Time Authorization Callbacks
-***
-** This routine registers a authorizer callback with the SQLite library.
-** The authorizer callback is invoked as SQL statements are being compiled
-** by [sqlite3_prepare()] or its variants [sqlite3_prepare_v2()],
-** [sqlite3_prepare16()] and [sqlite3_prepare16_v2()]. At various
-** points during the compilation process, as logic is being created
-** to perform various actions, the authorizer callback is invoked to
-** see if those actions are allowed. The authorizer callback should
-** return SQLITE_OK to allow the action, [SQLITE_IGNORE] to disallow the
-** specific action but allow the SQL statement to continue to be
-** compiled, or [SQLITE_DENY] to cause the entire SQL statement to be
-** rejected with an error.
-**
-** Depending on the action, the [SQLITE_IGNORE] and [SQLITE_DENY] return
-** codes might mean something different or they might mean the same
-** thing. If the action is, for example, to perform a delete opertion,
-** then [SQLITE_IGNORE] and [SQLITE_DENY] both cause the statement compilation
-** to fail with an error. But if the action is to read a specific column
-** from a specific table, then [SQLITE_DENY] will cause the entire
-** statement to fail but [SQLITE_IGNORE] will cause a NULL value to be
-** read instead of the actual column value.
-**
-** The first parameter to the authorizer callback is a copy of
-** the third parameter to the sqlite3_set_authorizer() interface.
-** The second parameter to the callback is an integer
-** [SQLITE_COPY | action code] that specifies the particular action
-** to be authorized. The available action codes are
-** [SQLITE_COPY | documented separately]. The third through sixth
-** parameters to the callback are strings that contain additional
-** details about the action to be authorized.
-**
-** An authorizer is used when preparing SQL statements from an untrusted
-** source, to ensure that the SQL statements do not try to access data
-** that they are not allowed to see, or that they do not try to
-** execute malicious statements that damage the database. For
-** example, an application may allow a user to enter arbitrary
-** SQL queries for evaluation by a database. But the application does
-** not want the user to be able to make arbitrary changes to the
-** database. An authorizer could then be put in place while the
-** user-entered SQL is being prepared that disallows everything
-** except SELECT statements.
-**
-** Only a single authorizer can be in place on a database connection
-** at a time. Each call to sqlite3_set_authorizer overrides the
-** previous call. A NULL authorizer means that no authorization
-** callback is invoked. The default authorizer is NULL.
-**
-** Note that the authorizer callback is invoked only during
-** [sqlite3_prepare()] or its variants. Authorization is not
-** performed during statement evaluation in [sqlite3_step()].
-*/
-int sqlite3_set_authorizer(
- sqlite3*,
- int (*xAuth)(void*,int,const char*,const char*,const char*,const char*),
- void *pUserData
-);
-
-/*
-** CAPI3REF: Authorizer Return Codes
-**
-** The [sqlite3_set_authorizer | authorizer callback function] must
-** return either [SQLITE_OK] or one of these two constants in order
-** to signal SQLite whether or not the action is permitted. See the
-** [sqlite3_set_authorizer | authorizer documentation] for additional
-** information.
-*/
-#define SQLITE_DENY 1 /* Abort the SQL statement with an error */
-#define SQLITE_IGNORE 2 /* Don't allow access, but don't generate an error */
-
-/*
-** CAPI3REF: Authorizer Action Codes
-**
-** The [sqlite3_set_authorizer()] interface registers a callback function
-** that is invoked to authorizer certain SQL statement actions. The
-** second parameter to the callback is an integer code that specifies
-** what action is being authorized. These are the integer action codes that
-** the authorizer callback may be passed.
-**
-** These action code values signify what kind of operation is to be
-** authorized. The 3rd and 4th parameters to the authorization callback
-** function will be parameters or NULL depending on which of these
-** codes is used as the second parameter. The 5th parameter to the
-** authorizer callback is the name of the database ("main", "temp",
-** etc.) if applicable. The 6th parameter to the authorizer callback
-** is the name of the inner-most trigger or view that is responsible for
-** the access attempt or NULL if this access attempt is directly from
-** top-level SQL code.
-*/
-/******************************************* 3rd ************ 4th ***********/
-#define SQLITE_CREATE_INDEX 1 /* Index Name Table Name */
-#define SQLITE_CREATE_TABLE 2 /* Table Name NULL */
-#define SQLITE_CREATE_TEMP_INDEX 3 /* Index Name Table Name */
-#define SQLITE_CREATE_TEMP_TABLE 4 /* Table Name NULL */
-#define SQLITE_CREATE_TEMP_TRIGGER 5 /* Trigger Name Table Name */
-#define SQLITE_CREATE_TEMP_VIEW 6 /* View Name NULL */
-#define SQLITE_CREATE_TRIGGER 7 /* Trigger Name Table Name */
-#define SQLITE_CREATE_VIEW 8 /* View Name NULL */
-#define SQLITE_DELETE 9 /* Table Name NULL */
-#define SQLITE_DROP_INDEX 10 /* Index Name Table Name */
-#define SQLITE_DROP_TABLE 11 /* Table Name NULL */
-#define SQLITE_DROP_TEMP_INDEX 12 /* Index Name Table Name */
-#define SQLITE_DROP_TEMP_TABLE 13 /* Table Name NULL */
-#define SQLITE_DROP_TEMP_TRIGGER 14 /* Trigger Name Table Name */
-#define SQLITE_DROP_TEMP_VIEW 15 /* View Name NULL */
-#define SQLITE_DROP_TRIGGER 16 /* Trigger Name Table Name */
-#define SQLITE_DROP_VIEW 17 /* View Name NULL */
-#define SQLITE_INSERT 18 /* Table Name NULL */
-#define SQLITE_PRAGMA 19 /* Pragma Name 1st arg or NULL */
-#define SQLITE_READ 20 /* Table Name Column Name */
-#define SQLITE_SELECT 21 /* NULL NULL */
-#define SQLITE_TRANSACTION 22 /* NULL NULL */
-#define SQLITE_UPDATE 23 /* Table Name Column Name */
-#define SQLITE_ATTACH 24 /* Filename NULL */
-#define SQLITE_DETACH 25 /* Database Name NULL */
-#define SQLITE_ALTER_TABLE 26 /* Database Name Table Name */
-#define SQLITE_REINDEX 27 /* Index Name NULL */
-#define SQLITE_ANALYZE 28 /* Table Name NULL */
-#define SQLITE_CREATE_VTABLE 29 /* Table Name Module Name */
-#define SQLITE_DROP_VTABLE 30 /* Table Name Module Name */
-#define SQLITE_FUNCTION 31 /* Function Name NULL */
-#define SQLITE_COPY 0 /* No longer used */
-
-/*
-** CAPI3REF: Tracing And Profiling Functions
-**
-** These routines register callback functions that can be used for
-** tracing and profiling the execution of SQL statements.
-** The callback function registered by sqlite3_trace() is invoked
-** at the first [sqlite3_step()] for the evaluation of an SQL statement.
-** The callback function registered by sqlite3_profile() is invoked
-** as each SQL statement finishes and includes
-** information on how long that statement ran.
-**
-** The sqlite3_profile() API is currently considered experimental and
-** is subject to change.
-*/
-void *sqlite3_trace(sqlite3*, void(*xTrace)(void*,const char*), void*);
-void *sqlite3_profile(sqlite3*,
- void(*xProfile)(void*,const char*,sqlite_uint64), void*);
-
-/*
-** CAPI3REF: Query Progress Callbacks
-**
-** This routine configures a callback function - the progress callback - that
-** is invoked periodically during long running calls to [sqlite3_exec()],
-** [sqlite3_step()] and [sqlite3_get_table()]. An example use for this
-** interface is to keep a GUI updated during a large query.
-**
-** The progress callback is invoked once for every N virtual machine opcodes,
-** where N is the second argument to this function. The progress callback
-** itself is identified by the third argument to this function. The fourth
-** argument to this function is a void pointer passed to the progress callback
-** function each time it is invoked.
-**
-** If a call to [sqlite3_exec()], [sqlite3_step()], or [sqlite3_get_table()]
-** results in fewer than N opcodes being executed, then the progress
-** callback is never invoked.
-**
-** Only a single progress callback function may be registered for each
-** open database connection. Every call to sqlite3_progress_handler()
-** overwrites the results of the previous call.
-** To remove the progress callback altogether, pass NULL as the third
-** argument to this function.
-**
-** If the progress callback returns a result other than 0, then the current
-** query is immediately terminated and any database changes rolled back.
-** The containing [sqlite3_exec()], [sqlite3_step()], or
-** [sqlite3_get_table()] call returns SQLITE_INTERRUPT. This feature
-** can be used, for example, to implement the "Cancel" button on a
-** progress dialog box in a GUI.
-*/
-void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
-
-/*
-** CAPI3REF: Opening A New Database Connection
-**
-** Open the sqlite database file "filename". The "filename" is UTF-8
-** encoded for sqlite3_open() and UTF-16 encoded in the native byte order
-** for sqlite3_open16(). An [sqlite3*] handle is returned in *ppDb, even
-** if an error occurs. If the database is opened (or created) successfully,
-** then SQLITE_OK is returned. Otherwise an error code is returned. The
-** sqlite3_errmsg() or sqlite3_errmsg16() routines can be used to obtain
-** an English language description of the error.
-**
-** If the database file does not exist, then a new database will be created
-** as needed. The default encoding for the database will be UTF-8 if
-** sqlite3_open() is called and UTF-16 if sqlite3_open16 is used.
-**
-** Whether or not an error occurs when it is opened, resources associated
-** with the [sqlite3*] handle should be released by passing it to
-** sqlite3_close() when it is no longer required.
-**
-** Note to windows users: The encoding used for the filename argument
-** of sqlite3_open() must be UTF-8, not whatever codepage is currently
-** defined. Filenames containing international characters must be converted
-** to UTF-8 prior to passing them into sqlite3_open().
-*/
-int sqlite3_open(
- const char *filename, /* Database filename (UTF-8) */
- sqlite3 **ppDb /* OUT: SQLite db handle */
-);
-int sqlite3_open16(
- const void *filename, /* Database filename (UTF-16) */
- sqlite3 **ppDb /* OUT: SQLite db handle */
-);
-
-/*
-** CAPI3REF: Error Codes And Messages
-**
-** The sqlite3_errcode() interface returns the numeric
-** [SQLITE_OK | result code] or [SQLITE_IOERR_READ | extended result code]
-** for the most recent failed sqlite3_* API call associated
-** with [sqlite3] handle 'db'. If a prior API call failed but the
-** most recent API call succeeded, the return value from sqlite3_errcode()
-** is undefined.
-**
-** The sqlite3_errmsg() and sqlite3_errmsg16() return English-langauge
-** text that describes the error, as either UTF8 or UTF16 respectively.
-** Memory to hold the error message string is managed internally. The
-** string may be overwritten or deallocated by subsequent calls to SQLite
-** interface functions.
-**
-** Calls to many sqlite3_* functions set the error code and string returned
-** by [sqlite3_errcode()], [sqlite3_errmsg()], and [sqlite3_errmsg16()]
-** (overwriting the previous values). Note that calls to [sqlite3_errcode()],
-** [sqlite3_errmsg()], and [sqlite3_errmsg16()] themselves do not affect the
-** results of future invocations. Calls to API routines that do not return
-** an error code (examples: [sqlite3_data_count()] or [sqlite3_mprintf()]) do
-** not change the error code returned by this routine.
-**
-** Assuming no other intervening sqlite3_* API calls are made, the error
-** code returned by this function is associated with the same error as
-** the strings returned by [sqlite3_errmsg()] and [sqlite3_errmsg16()].
-*/
-int sqlite3_errcode(sqlite3 *db);
-const char *sqlite3_errmsg(sqlite3*);
-const void *sqlite3_errmsg16(sqlite3*);
-
-/*
-** CAPI3REF: SQL Statement Object
-**
-** Instance of this object represent single SQL statements. This
-** is variously known as a "prepared statement" or a
-** "compiled SQL statement" or simply as a "statement".
-**
-** The life of a statement object goes something like this:
-**
-** <ol>
-** <li> Create the object using [sqlite3_prepare_v2()] or a related
-** function.
-** <li> Bind values to host parameters using
-** [sqlite3_bind_blob | sqlite3_bind_* interfaces].
-** <li> Run the SQL by calling [sqlite3_step()] one or more times.
-** <li> Reset the statement using [sqlite3_reset()] then go back
-** to step 2. Do this zero or more times.
-** <li> Destroy the object using [sqlite3_finalize()].
-** </ol>
-**
-** Refer to documentation on individual methods above for additional
-** information.
-*/
-typedef struct sqlite3_stmt sqlite3_stmt;
-
-/*
-** CAPI3REF: Compiling An SQL Statement
-**
-** To execute an SQL query, it must first be compiled into a byte-code
-** program using one of these routines.
-**
-** The first argument "db" is an [sqlite3 | SQLite database handle]
-** obtained from a prior call to [sqlite3_open()] or [sqlite3_open16()].
-** The second argument "zSql" is the statement to be compiled, encoded
-** as either UTF-8 or UTF-16. The sqlite3_prepare() and sqlite3_prepare_v2()
-** interfaces uses UTF-8 and sqlite3_prepare16() and sqlite3_prepare16_v2()
-** use UTF-16. If the next argument, "nBytes", is less
-** than zero, then zSql is read up to the first zero terminator. If
-** "nBytes" is not less than zero, then it is the length of the string zSql
-** in bytes (not characters).
-**
-** *pzTail is made to point to the first byte past the end of the first
-** SQL statement in zSql. This routine only compiles the first statement
-** in zSql, so *pzTail is left pointing to what remains uncompiled.
-**
-** *ppStmt is left pointing to a compiled
-** [sqlite3_stmt | SQL statement structure] that can be
-** executed using [sqlite3_step()]. Or if there is an error, *ppStmt may be
-** set to NULL. If the input text contained no SQL (if the input is and
-** empty string or a comment) then *ppStmt is set to NULL. The calling
-** procedure is responsible for deleting the compiled SQL statement
-** using [sqlite3_finalize()] after it has finished with it.
-**
-** On success, [SQLITE_OK] is returned. Otherwise an
-** [SQLITE_ERROR | error code] is returned.
-**
-** The sqlite3_prepare_v2() and sqlite3_prepare16_v2() interfaces are
-** recommended for all new programs. The two older interfaces are retained
-** for backwards compatibility, but their use is discouraged.
-** In the "v2" interfaces, the prepared statement
-** that is returned (the [sqlite3_stmt] object) contains a copy of the
-** original SQL text. This causes the [sqlite3_step()] interface to
-** behave a differently in two ways:
-**
-** <ol>
-** <li>
-** If the database schema changes, instead of returning [SQLITE_SCHEMA] as it
-** always used to do, [sqlite3_step()] will automatically recompile the SQL
-** statement and try to run it again. If the schema has changed in a way
-** that makes the statement no longer valid, [sqlite3_step()] will still
-** return [SQLITE_SCHEMA]. But unlike the legacy behavior, [SQLITE_SCHEMA] is
-** now a fatal error. Calling [sqlite3_prepare_v2()] again will not make the
-** error go away. Note: use [sqlite3_errmsg()] to find the text of the parsing
-** error that results in an [SQLITE_SCHEMA] return.
-** </li>
-**
-** <li>
-** When an error occurs,
-** [sqlite3_step()] will return one of the detailed
-** [SQLITE_ERROR | result codes] or
-** [SQLITE_IOERR_READ | extended result codes] such as directly.
-** The legacy behavior was that [sqlite3_step()] would only return a generic
-** [SQLITE_ERROR] result code and you would have to make a second call to
-** [sqlite3_reset()] in order to find the underlying cause of the problem.
-** With the "v2" prepare interfaces, the underlying reason for the error is
-** returned immediately.
-** </li>
-** </ol>
-*/
-int sqlite3_prepare(
- sqlite3 *db, /* Database handle */
- const char *zSql, /* SQL statement, UTF-8 encoded */
- int nBytes, /* Length of zSql in bytes. */
- sqlite3_stmt **ppStmt, /* OUT: Statement handle */
- const char **pzTail /* OUT: Pointer to unused portion of zSql */
-);
-int sqlite3_prepare_v2(
- sqlite3 *db, /* Database handle */
- const char *zSql, /* SQL statement, UTF-8 encoded */
- int nBytes, /* Length of zSql in bytes. */
- sqlite3_stmt **ppStmt, /* OUT: Statement handle */
- const char **pzTail /* OUT: Pointer to unused portion of zSql */
-);
-int sqlite3_prepare16(
- sqlite3 *db, /* Database handle */
- const void *zSql, /* SQL statement, UTF-16 encoded */
- int nBytes, /* Length of zSql in bytes. */
- sqlite3_stmt **ppStmt, /* OUT: Statement handle */
- const void **pzTail /* OUT: Pointer to unused portion of zSql */
-);
-int sqlite3_prepare16_v2(
- sqlite3 *db, /* Database handle */
- const void *zSql, /* SQL statement, UTF-16 encoded */
- int nBytes, /* Length of zSql in bytes. */
- sqlite3_stmt **ppStmt, /* OUT: Statement handle */
- const void **pzTail /* OUT: Pointer to unused portion of zSql */
-);
-
-/*
-** CAPI3REF: Dynamically Typed Value Object
-**
-** SQLite uses dynamic typing for the values it stores. Values can
-** be integers, floating point values, strings, BLOBs, or NULL. When
-** passing around values internally, each value is represented as
-** an instance of the sqlite3_value object.
-*/
-typedef struct Mem sqlite3_value;
-
-/*
-** CAPI3REF: SQL Function Context Object
-**
-** The context in which an SQL function executes is stored in an
-** sqlite3_context object. A pointer to such an object is the
-** first parameter to user-defined SQL functions.
-*/
-typedef struct sqlite3_context sqlite3_context;
-
-/*
-** CAPI3REF: Binding Values To Prepared Statements
-**
-** In the SQL strings input to [sqlite3_prepare_v2()] and its variants,
-** one or more literals can be replace by a parameter in one of these
-** forms:
-**
-** <ul>
-** <li> ?
-** <li> ?NNN
-** <li> :AAA
-** <li> @AAA
-** <li> $VVV
-** </ul>
-**
-** In the parameter forms shown above NNN is an integer literal,
-** AAA is an alphanumeric identifier and VVV is a variable name according
-** to the syntax rules of the TCL programming language.
-** The values of these parameters (also called "host parameter names")
-** can be set using the sqlite3_bind_*() routines defined here.
-**
-** The first argument to the sqlite3_bind_*() routines always is a pointer
-** to the [sqlite3_stmt] object returned from [sqlite3_prepare_v2()] or
-** its variants. The second
-** argument is the index of the parameter to be set. The first parameter has
-** an index of 1. When the same named parameter is used more than once, second
-** and subsequent
-** occurrences have the same index as the first occurrence. The index for
-** named parameters can be looked up using the
-** [sqlite3_bind_parameter_name()] API if desired. The index for "?NNN"
-** parametes is the value of NNN.
-** The NNN value must be between 1 and the compile-time
-** parameter SQLITE_MAX_VARIABLE_NUMBER (default value: 999).
-** See <a href="limits.html">limits.html</a> for additional information.
-**
-** The third argument is the value to bind to the parameter.
-**
-** In those
-** routines that have a fourth argument, its value is the number of bytes
-** in the parameter. To be clear: the value is the number of bytes in the
-** string, not the number of characters. The number
-** of bytes does not include the zero-terminator at the end of strings.
-** If the fourth parameter is negative, the length of the string is
-** number of bytes up to the first zero terminator.
-**
-** The fifth argument to sqlite3_bind_blob(), sqlite3_bind_text(), and
-** sqlite3_bind_text16() is a destructor used to dispose of the BLOB or
-** text after SQLite has finished with it. If the fifth argument is the
-** special value [SQLITE_STATIC], then the library assumes that the information
-** is in static, unmanaged space and does not need to be freed. If the
-** fifth argument has the value [SQLITE_TRANSIENT], then SQLite makes its
-** own private copy of the data immediately, before the sqlite3_bind_*()
-** routine returns.
-**
-** The sqlite3_bind_zeroblob() routine binds a BLOB of length n that
-** is filled with zeros. A zeroblob uses a fixed amount of memory
-** (just an integer to hold it size) while it is being processed.
-** Zeroblobs are intended to serve as place-holders for BLOBs whose
-** content is later written using
-** [sqlite3_blob_open | increment BLOB I/O] routines.
-**
-** The sqlite3_bind_*() routines must be called after
-** [sqlite3_prepare_v2()] (and its variants) or [sqlite3_reset()] and
-** before [sqlite3_step()].
-** Bindings are not cleared by the [sqlite3_reset()] routine.
-** Unbound parameters are interpreted as NULL.
-**
-** These routines return [SQLITE_OK] on success or an error code if
-** anything goes wrong. [SQLITE_RANGE] is returned if the parameter
-** index is out of range. [SQLITE_NOMEM] is returned if malloc fails.
-** [SQLITE_MISUSE] is returned if these routines are called on a virtual
-** machine that is the wrong state or which has already been finalized.
-*/
-int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));
-int sqlite3_bind_double(sqlite3_stmt*, int, double);
-int sqlite3_bind_int(sqlite3_stmt*, int, int);
-int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite_int64);
-int sqlite3_bind_null(sqlite3_stmt*, int);
-int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*));
-int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*));
-int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*);
-int sqlite3_bind_zeroblob(sqlite3_stmt*, int, int n);
-
-/*
-** CAPI3REF: Number Of Host Parameters
-**
-** Return the largest host parameter index in the precompiled statement given
-** as the argument. When the host parameters are of the forms like ":AAA"
-** or "?", then they are assigned sequential increasing numbers beginning
-** with one, so the value returned is the number of parameters. However
-** if the same host parameter name is used multiple times, each occurrance
-** is given the same number, so the value returned in that case is the number
-** of unique host parameter names. If host parameters of the form "?NNN"
-** are used (where NNN is an integer) then there might be gaps in the
-** numbering and the value returned by this interface is the index of the
-** host parameter with the largest index value.
-*/
-int sqlite3_bind_parameter_count(sqlite3_stmt*);
-
-/*
-** CAPI3REF: Name Of A Host Parameter
-**
-** This routine returns a pointer to the name of the n-th parameter in a
-** [sqlite3_stmt | prepared statement].
-** Host parameters of the form ":AAA" or "@AAA" or "$VVV" have a name
-** which is the string ":AAA" or "@AAA" or "$VVV".
-** In other words, the initial ":" or "$" or "@"
-** is included as part of the name.
-** Parameters of the form "?" or "?NNN" have no name.
-**
-** The first bound parameter has an index of 1, not 0.
-**
-** If the value n is out of range or if the n-th parameter is nameless,
-** then NULL is returned. The returned string is always in the
-** UTF-8 encoding even if the named parameter was originally specified
-** as UTF-16 in [sqlite3_prepare16()] or [sqlite3_prepare16_v2()].
-*/
-const char *sqlite3_bind_parameter_name(sqlite3_stmt*, int);
-
-/*
-** CAPI3REF: Index Of A Parameter With A Given Name
-**
-** This routine returns the index of a host parameter with the given name.
-** The name must match exactly. If no parameter with the given name is
-** found, return 0. Parameter names must be UTF8.
-*/
-int sqlite3_bind_parameter_index(sqlite3_stmt*, const char *zName);
-
-/*
-** CAPI3REF: Reset All Bindings On A Prepared Statement
-**
-** Contrary to the intuition of many, [sqlite3_reset()] does not
-** reset the [sqlite3_bind_blob | bindings] on a
-** [sqlite3_stmt | prepared statement]. Use this routine to
-** reset all host parameters to NULL.
-*/
-int sqlite3_clear_bindings(sqlite3_stmt*);
-
-/*
-** CAPI3REF: Number Of Columns In A Result Set
-**
-** Return the number of columns in the result set returned by the
-** [sqlite3_stmt | compiled SQL statement]. This routine returns 0
-** if pStmt is an SQL statement that does not return data (for
-** example an UPDATE).
-*/
-int sqlite3_column_count(sqlite3_stmt *pStmt);
-
-/*
-** CAPI3REF: Column Names In A Result Set
-**
-** These routines return the name assigned to a particular column
-** in the result set of a SELECT statement. The sqlite3_column_name()
-** interface returns a pointer to a UTF8 string and sqlite3_column_name16()
-** returns a pointer to a UTF16 string. The first parameter is the
-** [sqlite_stmt | prepared statement] that implements the SELECT statement.
-** The second parameter is the column number. The left-most column is
-** number 0.
-**
-** The returned string pointer is valid until either the
-** [sqlite_stmt | prepared statement] is destroyed by [sqlite3_finalize()]
-** or until the next call sqlite3_column_name() or sqlite3_column_name16()
-** on the same column.
-*/
-const char *sqlite3_column_name(sqlite3_stmt*, int N);
-const void *sqlite3_column_name16(sqlite3_stmt*, int N);
-
-/*
-** CAPI3REF: Source Of Data In A Query Result
-**
-** These routines provide a means to determine what column of what
-** table in which database a result of a SELECT statement comes from.
-** The name of the database or table or column can be returned as
-** either a UTF8 or UTF16 string. The returned string is valid until
-** the [sqlite3_stmt | prepared statement] is destroyed using
-** [sqlite3_finalize()] or until the same information is requested
-** again about the same column.
-**
-** The first argument to the following calls is a
-** [sqlite3_stmt | compiled SQL statement].
-** These functions return information about the Nth column returned by
-** the statement, where N is the second function argument.
-**
-** If the Nth column returned by the statement is an expression
-** or subquery and is not a column value, then all of these functions
-** return NULL. Otherwise, they return the
-** name of the attached database, table and column that query result
-** column was extracted from.
-**
-** As with all other SQLite APIs, those postfixed with "16" return UTF-16
-** encoded strings, the other functions return UTF-8.
-**
-** These APIs are only available if the library was compiled with the
-** SQLITE_ENABLE_COLUMN_METADATA preprocessor symbol defined.
-*/
-const char *sqlite3_column_database_name(sqlite3_stmt*,int);
-const void *sqlite3_column_database_name16(sqlite3_stmt*,int);
-const char *sqlite3_column_table_name(sqlite3_stmt*,int);
-const void *sqlite3_column_table_name16(sqlite3_stmt*,int);
-const char *sqlite3_column_origin_name(sqlite3_stmt*,int);
-const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
-
-/*
-** CAPI3REF: Declared Datatype Of A Query Result
-**
-** The first parameter is a [sqlite3_stmt | compiled SQL statement].
-** If this statement is a SELECT statement and the Nth column of the
-** returned result set of that SELECT is a table column (not an
-** expression or subquery) then the declared type of the table
-** column is returned. If the Nth column of the result set is an
-** expression or subquery, then a NULL pointer is returned.
-** The returned string is always UTF-8 encoded. For example, in
-** the database schema:
-**
-** CREATE TABLE t1(c1 VARIANT);
-**
-** And the following statement compiled:
-**
-** SELECT c1 + 1, c1 FROM t1;
-**
-** Then this routine would return the string "VARIANT" for the second
-** result column (i==1), and a NULL pointer for the first result column
-** (i==0).
-**
-** SQLite uses dynamic run-time typing. So just because a column
-** is declared to contain a particular type does not mean that the
-** data stored in that column is of the declared type. SQLite is
-** strongly typed, but the typing is dynamic not static. Type
-** is associated with individual values, not with the containers
-** used to hold those values.
-*/
-const char *sqlite3_column_decltype(sqlite3_stmt *, int i);
-const void *sqlite3_column_decltype16(sqlite3_stmt*,int);
-
-/*
-** CAPI3REF: Evaluate An SQL Statement
-**
-** After an [sqlite3_stmt | SQL statement] has been prepared with a call
-** to either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()] or to one of
-** the legacy interfaces [sqlite3_prepare()] or [sqlite3_prepare16()],
-** then this function must be called one or more times to evaluate the
-** statement.
-**
-** The details of the behavior of this sqlite3_step() interface depend
-** on whether the statement was prepared using the newer "v2" interface
-** [sqlite3_prepare_v2()] and [sqlite3_prepare16_v2()] or the older legacy
-** interface [sqlite3_prepare()] and [sqlite3_prepare16()]. The use of the
-** new "v2" interface is recommended for new applications but the legacy
-** interface will continue to be supported.
-**
-** In the lagacy interface, the return value will be either [SQLITE_BUSY],
-** [SQLITE_DONE], [SQLITE_ROW], [SQLITE_ERROR], or [SQLITE_MISUSE].
-** With the "v2" interface, any of the other [SQLITE_OK | result code]
-** or [SQLITE_IOERR_READ | extended result code] might be returned as
-** well.
-**
-** [SQLITE_BUSY] means that the database engine was unable to acquire the
-** database locks it needs to do its job. If the statement is a COMMIT
-** or occurs outside of an explicit transaction, then you can retry the
-** statement. If the statement is not a COMMIT and occurs within a
-** explicit transaction then you should rollback the transaction before
-** continuing.
-**
-** [SQLITE_DONE] means that the statement has finished executing
-** successfully. sqlite3_step() should not be called again on this virtual
-** machine without first calling [sqlite3_reset()] to reset the virtual
-** machine back to its initial state.
-**
-** If the SQL statement being executed returns any data, then
-** [SQLITE_ROW] is returned each time a new row of data is ready
-** for processing by the caller. The values may be accessed using
-** the [sqlite3_column_int | column access functions].
-** sqlite3_step() is called again to retrieve the next row of data.
-**
-** [SQLITE_ERROR] means that a run-time error (such as a constraint
-** violation) has occurred. sqlite3_step() should not be called again on
-** the VM. More information may be found by calling [sqlite3_errmsg()].
-** With the legacy interface, a more specific error code (example:
-** [SQLITE_INTERRUPT], [SQLITE_SCHEMA], [SQLITE_CORRUPT], and so forth)
-** can be obtained by calling [sqlite3_reset()] on the
-** [sqlite_stmt | prepared statement]. In the "v2" interface,
-** the more specific error code is returned directly by sqlite3_step().
-**
-** [SQLITE_MISUSE] means that the this routine was called inappropriately.
-** Perhaps it was called on a [sqlite_stmt | prepared statement] that has
-** already been [sqlite3_finalize | finalized] or on one that had
-** previously returned [SQLITE_ERROR] or [SQLITE_DONE]. Or it could
-** be the case that the same database connection is being used by two or
-** more threads at the same moment in time.
-**
-** <b>Goofy Interface Alert:</b>
-** In the legacy interface,
-** the sqlite3_step() API always returns a generic error code,
-** [SQLITE_ERROR], following any error other than [SQLITE_BUSY]
-** and [SQLITE_MISUSE]. You must call [sqlite3_reset()] or
-** [sqlite3_finalize()] in order to find one of the specific
-** [SQLITE_ERROR | result codes] that better describes the error.
-** We admit that this is a goofy design. The problem has been fixed
-** with the "v2" interface. If you prepare all of your SQL statements
-** using either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()] instead
-** of the legacy [sqlite3_prepare()] and [sqlite3_prepare16()], then the
-** more specific [SQLITE_ERROR | result codes] are returned directly
-** by sqlite3_step(). The use of the "v2" interface is recommended.
-*/
-int sqlite3_step(sqlite3_stmt*);
-
-/*
-** CAPI3REF:
-**
-** Return the number of values in the current row of the result set.
-**
-** After a call to [sqlite3_step()] that returns [SQLITE_ROW], this routine
-** will return the same value as the [sqlite3_column_count()] function.
-** After [sqlite3_step()] has returned an [SQLITE_DONE], [SQLITE_BUSY], or
-** a [SQLITE_ERROR | error code], or before [sqlite3_step()] has been
-** called on the [sqlite_stmt | prepared statement] for the first time,
-** this routine returns zero.
-*/
-int sqlite3_data_count(sqlite3_stmt *pStmt);
-
-/*
-** CAPI3REF: Fundamental Datatypes
-**
-** Every value in SQLite has one of five fundamental datatypes:
-**
-** <ul>
-** <li> 64-bit signed integer
-** <li> 64-bit IEEE floating point number
-** <li> string
-** <li> BLOB
-** <li> NULL
-** </ul>
-**
-** These constants are codes for each of those types.
-**
-** Note that the SQLITE_TEXT constant was also used in SQLite version 2
-** for a completely different meaning. Software that links against both
-** SQLite version 2 and SQLite version 3 should use SQLITE3_TEXT not
-** SQLITE_TEXT.
-*/
-#define SQLITE_INTEGER 1
-#define SQLITE_FLOAT 2
-#define SQLITE_BLOB 4
-#define SQLITE_NULL 5
-#ifdef SQLITE_TEXT
-# undef SQLITE_TEXT
-#else
-# define SQLITE_TEXT 3
-#endif
-#define SQLITE3_TEXT 3
-
-/*
-** CAPI3REF: Results Values From A Query
-**
-** These routines return information about the information
-** in a single column of the current result row of a query. In every
-** case the first argument is a pointer to the
-** [sqlite3_stmt | SQL statement] that is being
-** evaluate (the [sqlite_stmt*] that was returned from
-** [sqlite3_prepare_v2()] or one of its variants) and
-** the second argument is the index of the column for which information
-** should be returned. The left-most column has an index of 0.
-**
-** If the SQL statement is not currently point to a valid row, or if the
-** the column index is out of range, the result is undefined.
-**
-** The sqlite3_column_type() routine returns
-** [SQLITE_INTEGER | datatype code] for the initial data type
-** of the result column. The returned value is one of [SQLITE_INTEGER],
-** [SQLITE_FLOAT], [SQLITE_TEXT], [SQLITE_BLOB], or [SQLITE_NULL]. The value
-** returned by sqlite3_column_type() is only meaningful if no type
-** conversions have occurred as described below. After a type conversion,
-** the value returned by sqlite3_column_type() is undefined. Future
-** versions of SQLite may change the behavior of sqlite3_column_type()
-** following a type conversion.
-**
-*** The sqlite3_column_nm
-**
-** If the result is a BLOB or UTF-8 string then the sqlite3_column_bytes()
-** routine returns the number of bytes in that BLOB or string.
-** If the result is a UTF-16 string, then sqlite3_column_bytes() converts
-** the string to UTF-8 and then returns the number of bytes.
-** If the result is a numeric value then sqlite3_column_bytes() uses
-** [sqlite3_snprintf()] to convert that value to a UTF-8 string and returns
-** the number of bytes in that string.
-** The value returned does not include the zero terminator at the end
-** of the string. For clarity: the value returned is the number of
-** bytes in the string, not the number of characters.
-**
-** The sqlite3_column_bytes16() routine is similar to sqlite3_column_bytes()
-** but leaves the result in UTF-16 instead of UTF-8.
-** The zero terminator is not included in this count.
-**
-** These routines attempt to convert the value where appropriate. For
-** example, if the internal representation is FLOAT and a text result
-** is requested, [sqlite3_snprintf()] is used internally to do the conversion
-** automatically. The following table details the conversions that
-** are applied:
-**
-** <blockquote>
-** <table border="1">
-** <tr><th> Internal <th> Requested <th>
-** <tr><th> Type <th> Type <th> Conversion
-**
-** <tr><td> NULL <td> INTEGER <td> Result is 0
-** <tr><td> NULL <td> FLOAT <td> Result is 0.0
-** <tr><td> NULL <td> TEXT <td> Result is NULL pointer
-** <tr><td> NULL <td> BLOB <td> Result is NULL pointer
-** <tr><td> INTEGER <td> FLOAT <td> Convert from integer to float
-** <tr><td> INTEGER <td> TEXT <td> ASCII rendering of the integer
-** <tr><td> INTEGER <td> BLOB <td> Same as for INTEGER->TEXT
-** <tr><td> FLOAT <td> INTEGER <td> Convert from float to integer
-** <tr><td> FLOAT <td> TEXT <td> ASCII rendering of the float
-** <tr><td> FLOAT <td> BLOB <td> Same as FLOAT->TEXT
-** <tr><td> TEXT <td> INTEGER <td> Use atoi()
-** <tr><td> TEXT <td> FLOAT <td> Use atof()
-** <tr><td> TEXT <td> BLOB <td> No change
-** <tr><td> BLOB <td> INTEGER <td> Convert to TEXT then use atoi()
-** <tr><td> BLOB <td> FLOAT <td> Convert to TEXT then use atof()
-** <tr><td> BLOB <td> TEXT <td> Add a zero terminator if needed
-** </table>
-** </blockquote>
-**
-** The table above makes reference to standard C library functions atoi()
-** and atof(). SQLite does not really use these functions. It has its
-** on equavalent internal routines. The atoi() and atof() names are
-** used in the table for brevity and because they are familiar to most
-** C programmers.
-**
-** Note that when type conversions occur, pointers returned by prior
-** calls to sqlite3_column_blob(), sqlite3_column_text(), and/or
-** sqlite3_column_text16() may be invalidated.
-** Type conversions and pointer invalidations might occur
-** in the following cases:
-**
-** <ul>
-** <li><p> The initial content is a BLOB and sqlite3_column_text()
-** or sqlite3_column_text16() is called. A zero-terminator might
-** need to be added to the string.</p></li>
-**
-** <li><p> The initial content is UTF-8 text and sqlite3_column_bytes16() or
-** sqlite3_column_text16() is called. The content must be converted
-** to UTF-16.</p></li>
-**
-** <li><p> The initial content is UTF-16 text and sqlite3_column_bytes() or
-** sqlite3_column_text() is called. The content must be converted
-** to UTF-8.</p></li>
-** </ul>
-**
-** Conversions between UTF-16be and UTF-16le are always done in place and do
-** not invalidate a prior pointer, though of course the content of the buffer
-** that the prior pointer points to will have been modified. Other kinds
-** of conversion are done in place when it is possible, but sometime it is
-** not possible and in those cases prior pointers are invalidated.
-**
-** The safest and easiest to remember policy is to invoke these routines
-** in one of the following ways:
-**
-** <ul>
-** <li>sqlite3_column_text() followed by sqlite3_column_bytes()</li>
-** <li>sqlite3_column_blob() followed by sqlite3_column_bytes()</li>
-** <li>sqlite3_column_text16() followed by sqlite3_column_bytes16()</li>
-** </ul>
-**
-** In other words, you should call sqlite3_column_text(), sqlite3_column_blob(),
-** or sqlite3_column_text16() first to force the result into the desired
-** format, then invoke sqlite3_column_bytes() or sqlite3_column_bytes16() to
-** find the size of the result. Do not mix call to sqlite3_column_text() or
-** sqlite3_column_blob() with calls to sqlite3_column_bytes16(). And do not
-** mix calls to sqlite3_column_text16() with calls to sqlite3_column_bytes().
-*/
-const void *sqlite3_column_blob(sqlite3_stmt*, int iCol);
-int sqlite3_column_bytes(sqlite3_stmt*, int iCol);
-int sqlite3_column_bytes16(sqlite3_stmt*, int iCol);
-double sqlite3_column_double(sqlite3_stmt*, int iCol);
-int sqlite3_column_int(sqlite3_stmt*, int iCol);
-sqlite_int64 sqlite3_column_int64(sqlite3_stmt*, int iCol);
-const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);
-const void *sqlite3_column_text16(sqlite3_stmt*, int iCol);
-int sqlite3_column_type(sqlite3_stmt*, int iCol);
-sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol);
-
-/*
-** CAPI3REF: Destroy A Prepared Statement Object
-**
-** The sqlite3_finalize() function is called to delete a
-** [sqlite3_stmt | compiled SQL statement]. If the statement was
-** executed successfully, or not executed at all, then SQLITE_OK is returned.
-** If execution of the statement failed then an
-** [SQLITE_ERROR | error code] or [SQLITE_IOERR_READ | extended error code]
-** is returned.
-**
-** This routine can be called at any point during the execution of the
-** [sqlite3_stmt | virtual machine]. If the virtual machine has not
-** completed execution when this routine is called, that is like
-** encountering an error or an interrupt. (See [sqlite3_interrupt()].)
-** Incomplete updates may be rolled back and transactions cancelled,
-** depending on the circumstances, and the
-** [SQLITE_ERROR | result code] returned will be [SQLITE_ABORT].
-*/
-int sqlite3_finalize(sqlite3_stmt *pStmt);
-
-/*
-** CAPI3REF: Reset A Prepared Statement Object
-**
-** The sqlite3_reset() function is called to reset a
-** [sqlite_stmt | compiled SQL statement] object.
-** back to it's initial state, ready to be re-executed.
-** Any SQL statement variables that had values bound to them using
-** the [sqlite3_bind_blob | sqlite3_bind_*() API] retain their values.
-** Use [sqlite3_clear_bindings()] to reset the bindings.
-*/
-int sqlite3_reset(sqlite3_stmt *pStmt);
-
-/*
-** CAPI3REF: Create Or Redefine SQL Functions
-**
-** The following two functions are used to add SQL functions or aggregates
-** or to redefine the behavior of existing SQL functions or aggregates. The
-** difference only between the two is that the second parameter, the
-** name of the (scalar) function or aggregate, is encoded in UTF-8 for
-** sqlite3_create_function() and UTF-16 for sqlite3_create_function16().
-**
-** The first argument is the [sqlite3 | database handle] that holds the
-** SQL function or aggregate is to be added or redefined. If a single
-** program uses more than one database handle internally, then SQL
-** functions or aggregates must be added individually to each database
-** handle with which they will be used.
-**
-** The second parameter is the name of the SQL function to be created
-** or redefined.
-** The length of the name is limited to 255 bytes, exclusive of the
-** zero-terminator. Note that the name length limit is in bytes, not
-** characters. Any attempt to create a function with a longer name
-** will result in an SQLITE_ERROR error.
-**
-** The third parameter is the number of arguments that the SQL function or
-** aggregate takes. If this parameter is negative, then the SQL function or
-** aggregate may take any number of arguments.
-**
-** The fourth parameter, eTextRep, specifies what
-** [SQLITE_UTF8 | text encoding] this SQL function prefers for
-** its parameters. Any SQL function implementation should be able to work
-** work with UTF-8, UTF-16le, or UTF-16be. But some implementations may be
-** more efficient with one encoding than another. It is allowed to
-** invoke sqlite_create_function() or sqlite3_create_function16() multiple
-** times with the same function but with different values of eTextRep.
-** When multiple implementations of the same function are available, SQLite
-** will pick the one that involves the least amount of data conversion.
-** If there is only a single implementation which does not care what
-** text encoding is used, then the fourth argument should be
-** [SQLITE_ANY].
-**
-** The fifth parameter is an arbitrary pointer. The implementation
-** of the function can gain access to this pointer using
-** [sqlite_user_data()].
-**
-** The seventh, eighth and ninth parameters, xFunc, xStep and xFinal, are
-** pointers to C-language functions that implement the SQL
-** function or aggregate. A scalar SQL function requires an implementation of
-** the xFunc callback only, NULL pointers should be passed as the xStep
-** and xFinal parameters. An aggregate SQL function requires an implementation
-** of xStep and xFinal and NULL should be passed for xFunc. To delete an
-** existing SQL function or aggregate, pass NULL for all three function
-** callback.
-**
-** It is permitted to register multiple implementations of the same
-** functions with the same name but with either differing numbers of
-** arguments or differing perferred text encodings. SQLite will use
-** the implementation most closely matches the way in which the
-** SQL function is used.
-*/
-int sqlite3_create_function(
- sqlite3 *,
- const char *zFunctionName,
- int nArg,
- int eTextRep,
- void*,
- void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
- void (*xStep)(sqlite3_context*,int,sqlite3_value**),
- void (*xFinal)(sqlite3_context*)
-);
-int sqlite3_create_function16(
- sqlite3*,
- const void *zFunctionName,
- int nArg,
- int eTextRep,
- void*,
- void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
- void (*xStep)(sqlite3_context*,int,sqlite3_value**),
- void (*xFinal)(sqlite3_context*)
-);
-
-/*
-** CAPI3REF: Text Encodings
-**
-** These constant define integer codes that represent the various
-** text encodings supported by SQLite.
-*/
-#define SQLITE_UTF8 1
-#define SQLITE_UTF16LE 2
-#define SQLITE_UTF16BE 3
-#define SQLITE_UTF16 4 /* Use native byte order */
-#define SQLITE_ANY 5 /* sqlite3_create_function only */
-#define SQLITE_UTF16_ALIGNED 8 /* sqlite3_create_collation only */
-
-/*
-** CAPI3REF: Obsolete Functions
-**
-** These functions are all now obsolete. In order to maintain
-** backwards compatibility with older code, we continue to support
-** these functions. However, new development projects should avoid
-** the use of these functions. To help encourage people to avoid
-** using these functions, we are not going to tell you want they do.
-*/
-int sqlite3_aggregate_count(sqlite3_context*);
-int sqlite3_expired(sqlite3_stmt*);
-int sqlite3_transfer_bindings(sqlite3_stmt*, sqlite3_stmt*);
-int sqlite3_global_recover(void);
-
-
-/*
-** CAPI3REF: Obtaining SQL Function Parameter Values
-**
-** The C-language implementation of SQL functions and aggregates uses
-** this set of interface routines to access the parameter values on
-** the function or aggregate.
-**
-** The xFunc (for scalar functions) or xStep (for aggregates) parameters
-** to [sqlite3_create_function()] and [sqlite3_create_function16()]
-** define callbacks that implement the SQL functions and aggregates.
-** The 4th parameter to these callbacks is an array of pointers to
-** [sqlite3_value] objects. There is one [sqlite3_value] object for
-** each parameter to the SQL function. These routines are used to
-** extract values from the [sqlite3_value] objects.
-**
-** These routines work just like the corresponding
-** [sqlite3_column_blob | sqlite3_column_* routines] except that
-** these routines take a single [sqlite3_value*] pointer instead
-** of an [sqlite3_stmt*] pointer and an integer column number.
-**
-** The sqlite3_value_text16() interface extracts a UTF16 string
-** in the native byte-order of the host machine. The
-** sqlite3_value_text16be() and sqlite3_value_text16le() interfaces
-** extract UTF16 strings as big-endian and little-endian respectively.
-**
-** The sqlite3_value_numeric_type() interface attempts to apply
-** numeric affinity to the value. This means that an attempt is
-** made to convert the value to an integer or floating point. If
-** such a conversion is possible without loss of information (in order
-** words if the value is original a string that looks like a number)
-** then it is done. Otherwise no conversion occurs. The
-** [SQLITE_INTEGER | datatype] after conversion is returned.
-**
-** Please pay particular attention to the fact that the pointer that
-** is returned from [sqlite3_value_blob()], [sqlite3_value_text()], or
-** [sqlite3_value_text16()] can be invalidated by a subsequent call to
-** [sqlite3_value_bytes()], [sqlite3_value_bytes16()], [sqlite_value_text()],
-** or [sqlite3_value_text16()].
-*/
-const void *sqlite3_value_blob(sqlite3_value*);
-int sqlite3_value_bytes(sqlite3_value*);
-int sqlite3_value_bytes16(sqlite3_value*);
-double sqlite3_value_double(sqlite3_value*);
-int sqlite3_value_int(sqlite3_value*);
-sqlite_int64 sqlite3_value_int64(sqlite3_value*);
-const unsigned char *sqlite3_value_text(sqlite3_value*);
-const void *sqlite3_value_text16(sqlite3_value*);
-const void *sqlite3_value_text16le(sqlite3_value*);
-const void *sqlite3_value_text16be(sqlite3_value*);
-int sqlite3_value_type(sqlite3_value*);
-int sqlite3_value_numeric_type(sqlite3_value*);
-
-/*
-** CAPI3REF: Obtain Aggregate Function Context
-**
-** The implementation of aggregate SQL functions use this routine to allocate
-** a structure for storing their state. The first time this routine
-** is called for a particular aggregate, a new structure of size nBytes
-** is allocated, zeroed, and returned. On subsequent calls (for the
-** same aggregate instance) the same buffer is returned. The implementation
-** of the aggregate can use the returned buffer to accumulate data.
-**
-** The buffer allocated is freed automatically by SQLite whan the aggregate
-** query concludes.
-**
-** The first parameter should be a copy of the
-** [sqlite3_context | SQL function context] that is the first
-** parameter to the callback routine that implements the aggregate
-** function.
-*/
-void *sqlite3_aggregate_context(sqlite3_context*, int nBytes);
-
-/*
-** CAPI3REF: User Data For Functions
-**
-** The pUserData parameter to the [sqlite3_create_function()]
-** and [sqlite3_create_function16()] routines
-** used to register user functions is available to
-** the implementation of the function using this call.
-*/
-void *sqlite3_user_data(sqlite3_context*);
-
-/*
-** CAPI3REF: Function Auxiliary Data
-**
-** The following two functions may be used by scalar SQL functions to
-** associate meta-data with argument values. If the same value is passed to
-** multiple invocations of the same SQL function during query execution, under
-** some circumstances the associated meta-data may be preserved. This may
-** be used, for example, to add a regular-expression matching scalar
-** function. The compiled version of the regular expression is stored as
-** meta-data associated with the SQL value passed as the regular expression
-** pattern. The compiled regular expression can be reused on multiple
-** invocations of the same function so that the original pattern string
-** does not need to be recompiled on each invocation.
-**
-** The sqlite3_get_auxdata() interface returns a pointer to the meta-data
-** associated with the Nth argument value to the current SQL function
-** call, where N is the second parameter. If no meta-data has been set for
-** that value, then a NULL pointer is returned.
-**
-** The sqlite3_set_auxdata() is used to associate meta-data with an SQL
-** function argument. The third parameter is a pointer to the meta-data
-** to be associated with the Nth user function argument value. The fourth
-** parameter specifies a destructor that will be called on the meta-
-** data pointer to release it when it is no longer required. If the
-** destructor is NULL, it is not invoked.
-**
-** In practice, meta-data is preserved between function calls for
-** expressions that are constant at compile time. This includes literal
-** values and SQL variables.
-*/
-void *sqlite3_get_auxdata(sqlite3_context*, int);
-void sqlite3_set_auxdata(sqlite3_context*, int, void*, void (*)(void*));
-
-
-/*
-** CAPI3REF: Constants Defining Special Destructor Behavior
-**
-** These are special value for the destructor that is passed in as the
-** final argument to routines like [sqlite3_result_blob()]. If the destructor
-** argument is SQLITE_STATIC, it means that the content pointer is constant
-** and will never change. It does not need to be destroyed. The
-** SQLITE_TRANSIENT value means that the content will likely change in
-** the near future and that SQLite should make its own private copy of
-** the content before returning.
-**
-** The typedef is necessary to work around problems in certain
-** C++ compilers. See ticket #2191.
-*/
-typedef void (*sqlite3_destructor_type)(void*);
-#define SQLITE_STATIC ((sqlite3_destructor_type)0)
-#define SQLITE_TRANSIENT ((sqlite3_destructor_type)-1)
-
-/*
-** CAPI3REF: Setting The Result Of An SQL Function
-**
-** These routines are used by the xFunc or xFinal callbacks that
-** implement SQL functions and aggregates. See
-** [sqlite3_create_function()] and [sqlite3_create_function16()]
-** for additional information.
-**
-** These functions work very much like the
-** [sqlite3_bind_blob | sqlite3_bind_*] family of functions used
-** to bind values to host parameters in prepared statements.
-** Refer to the
-** [sqlite3_bind_blob | sqlite3_bind_* documentation] for
-** additional information.
-**
-** The sqlite3_result_error() and sqlite3_result_error16() functions
-** cause the implemented SQL function to throw an exception. The
-** parameter to sqlite3_result_error() or sqlite3_result_error16()
-** is the text of an error message.
-**
-** The sqlite3_result_toobig() cause the function implementation
-** to throw and error indicating that a string or BLOB is to long
-** to represent.
-*/
-void sqlite3_result_blob(sqlite3_context*, const void*, int, void(*)(void*));
-void sqlite3_result_double(sqlite3_context*, double);
-void sqlite3_result_error(sqlite3_context*, const char*, int);
-void sqlite3_result_error16(sqlite3_context*, const void*, int);
-void sqlite3_result_error_toobig(sqlite3_context*);
-void sqlite3_result_int(sqlite3_context*, int);
-void sqlite3_result_int64(sqlite3_context*, sqlite_int64);
-void sqlite3_result_null(sqlite3_context*);
-void sqlite3_result_text(sqlite3_context*, const char*, int, void(*)(void*));
-void sqlite3_result_text16(sqlite3_context*, const void*, int, void(*)(void*));
-void sqlite3_result_text16le(sqlite3_context*, const void*, int,void(*)(void*));
-void sqlite3_result_text16be(sqlite3_context*, const void*, int,void(*)(void*));
-void sqlite3_result_value(sqlite3_context*, sqlite3_value*);
-void sqlite3_result_zeroblob(sqlite3_context*, int n);
-
-/*
-** CAPI3REF: Define New Collating Sequences
-**
-** These functions are used to add new collation sequences to the
-** [sqlite3*] handle specified as the first argument.
-**
-** The name of the new collation sequence is specified as a UTF-8 string
-** for sqlite3_create_collation() and sqlite3_create_collation_v2()
-** and a UTF-16 string for sqlite3_create_collation16(). In all cases
-** the name is passed as the second function argument.
-**
-** The third argument must be one of the constants [SQLITE_UTF8],
-** [SQLITE_UTF16LE] or [SQLITE_UTF16BE], indicating that the user-supplied
-** routine expects to be passed pointers to strings encoded using UTF-8,
-** UTF-16 little-endian or UTF-16 big-endian respectively.
-**
-** A pointer to the user supplied routine must be passed as the fifth
-** argument. If it is NULL, this is the same as deleting the collation
-** sequence (so that SQLite cannot call it anymore). Each time the user
-** supplied function is invoked, it is passed a copy of the void* passed as
-** the fourth argument to sqlite3_create_collation() or
-** sqlite3_create_collation16() as its first parameter.
-**
-** The remaining arguments to the user-supplied routine are two strings,
-** each represented by a [length, data] pair and encoded in the encoding
-** that was passed as the third argument when the collation sequence was
-** registered. The user routine should return negative, zero or positive if
-** the first string is less than, equal to, or greater than the second
-** string. i.e. (STRING1 - STRING2).
-**
-** The sqlite3_create_collation_v2() works like sqlite3_create_collation()
-** excapt that it takes an extra argument which is a destructor for
-** the collation. The destructor is called when the collation is
-** destroyed and is passed a copy of the fourth parameter void* pointer
-** of the sqlite3_create_collation_v2(). Collations are destroyed when
-** they are overridden by later calls to the collation creation functions
-** or when the [sqlite3*] database handle is closed using [sqlite3_close()].
-**
-** The sqlite3_create_collation_v2() interface is experimental and
-** subject to change in future releases. The other collation creation
-** functions are stable.
-*/
-int sqlite3_create_collation(
- sqlite3*,
- const char *zName,
- int eTextRep,
- void*,
- int(*xCompare)(void*,int,const void*,int,const void*)
-);
-int sqlite3_create_collation_v2(
- sqlite3*,
- const char *zName,
- int eTextRep,
- void*,
- int(*xCompare)(void*,int,const void*,int,const void*),
- void(*xDestroy)(void*)
-);
-int sqlite3_create_collation16(
- sqlite3*,
- const char *zName,
- int eTextRep,
- void*,
- int(*xCompare)(void*,int,const void*,int,const void*)
-);
-
-/*
-** CAPI3REF: Collation Needed Callbacks
-**
-** To avoid having to register all collation sequences before a database
-** can be used, a single callback function may be registered with the
-** database handle to be called whenever an undefined collation sequence is
-** required.
-**
-** If the function is registered using the sqlite3_collation_needed() API,
-** then it is passed the names of undefined collation sequences as strings
-** encoded in UTF-8. If sqlite3_collation_needed16() is used, the names
-** are passed as UTF-16 in machine native byte order. A call to either
-** function replaces any existing callback.
-**
-** When the callback is invoked, the first argument passed is a copy
-** of the second argument to sqlite3_collation_needed() or
-** sqlite3_collation_needed16(). The second argument is the database
-** handle. The third argument is one of [SQLITE_UTF8], [SQLITE_UTF16BE], or
-** [SQLITE_UTF16LE], indicating the most desirable form of the collation
-** sequence function required. The fourth parameter is the name of the
-** required collation sequence.
-**
-** The callback function should register the desired collation using
-** [sqlite3_create_collation()], [sqlite3_create_collation16()], or
-** [sqlite3_create_collation_v2()].
-*/
-int sqlite3_collation_needed(
- sqlite3*,
- void*,
- void(*)(void*,sqlite3*,int eTextRep,const char*)
-);
-int sqlite3_collation_needed16(
- sqlite3*,
- void*,
- void(*)(void*,sqlite3*,int eTextRep,const void*)
-);
-
-/*
-** Specify the key for an encrypted database. This routine should be
-** called right after sqlite3_open().
-**
-** The code to implement this API is not available in the public release
-** of SQLite.
-*/
-int sqlite3_key(
- sqlite3 *db, /* Database to be rekeyed */
- const void *pKey, int nKey /* The key */
-);
-
-/*
-** Change the key on an open database. If the current database is not
-** encrypted, this routine will encrypt it. If pNew==0 or nNew==0, the
-** database is decrypted.
-**
-** The code to implement this API is not available in the public release
-** of SQLite.
-*/
-int sqlite3_rekey(
- sqlite3 *db, /* Database to be rekeyed */
- const void *pKey, int nKey /* The new key */
-);
-
-/*
-** CAPI3REF: Suspend Execution For A Short Time
-**
-** This function causes the current thread to suspect execution
-** a number of milliseconds specified in its parameter.
-**
-** If the operating system does not support sleep requests with
-** millisecond time resolution, then the time will be rounded up to
-** the nearest second. The number of milliseconds of sleep actually
-** requested from the operating system is returned.
-*/
-int sqlite3_sleep(int);
-
-/*
-** CAPI3REF: Name Of The Folder Holding Temporary Files
-**
-** If this global variable is made to point to a string which is
-** the name of a folder (a.ka. directory), then all temporary files
-** created by SQLite will be placed in that directory. If this variable
-** is NULL pointer, then SQLite does a search for an appropriate temporary
-** file directory.
-**
-** Once [sqlite3_open()] has been called, changing this variable will
-** invalidate the current temporary database, if any. Generally speaking,
-** it is not safe to invoke this routine after [sqlite3_open()] has
-** been called.
-*/
-extern char *sqlite3_temp_directory;
-
-/*
-** CAPI3REF: Test To See If The Databse Is In Auto-Commit Mode
-**
-** Test to see whether or not the database connection is in autocommit
-** mode. Return TRUE if it is and FALSE if not. Autocommit mode is on
-** by default. Autocommit is disabled by a BEGIN statement and reenabled
-** by the next COMMIT or ROLLBACK.
-*/
-int sqlite3_get_autocommit(sqlite3*);
-
-/*
-** CAPI3REF: Find The Database Handle Associated With A Prepared Statement
-**
-** Return the [sqlite3*] database handle to which a
-** [sqlite3_stmt | prepared statement] belongs.
-** This is the same database handle that was
-** the first argument to the [sqlite3_prepare_v2()] or its variants
-** that was used to create the statement in the first place.
-*/
-sqlite3 *sqlite3_db_handle(sqlite3_stmt*);
-
-
-/*
-** CAPI3REF: Commit And Rollback Notification Callbacks
-**
-** These routines
-** register callback functions to be invoked whenever a transaction
-** is committed or rolled back. The pArg argument is passed through
-** to the callback. If the callback on a commit hook function
-** returns non-zero, then the commit is converted into a rollback.
-**
-** If another function was previously registered, its pArg value is returned.
-** Otherwise NULL is returned.
-**
-** Registering a NULL function disables the callback.
-**
-** For the purposes of this API, a transaction is said to have been
-** rolled back if an explicit "ROLLBACK" statement is executed, or
-** an error or constraint causes an implicit rollback to occur. The
-** callback is not invoked if a transaction is automatically rolled
-** back because the database connection is closed.
-**
-** These are experimental interfaces and are subject to change.
-*/
-void *sqlite3_commit_hook(sqlite3*, int(*)(void*), void*);
-void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*);
-
-/*
-** CAPI3REF: Data Change Notification Callbacks
-**
-** Register a callback function with the database connection identified by the
-** first argument to be invoked whenever a row is updated, inserted or deleted.
-** Any callback set by a previous call to this function for the same
-** database connection is overridden.
-**
-** The second argument is a pointer to the function to invoke when a
-** row is updated, inserted or deleted. The first argument to the callback is
-** a copy of the third argument to sqlite3_update_hook(). The second callback
-** argument is one of SQLITE_INSERT, SQLITE_DELETE or SQLITE_UPDATE, depending
-** on the operation that caused the callback to be invoked. The third and
-** fourth arguments to the callback contain pointers to the database and
-** table name containing the affected row. The final callback parameter is
-** the rowid of the row. In the case of an update, this is the rowid after
-** the update takes place.
-**
-** The update hook is not invoked when internal system tables are
-** modified (i.e. sqlite_master and sqlite_sequence).
-**
-** If another function was previously registered, its pArg value is returned.
-** Otherwise NULL is returned.
-*/
-void *sqlite3_update_hook(
- sqlite3*,
- void(*)(void *,int ,char const *,char const *,sqlite_int64),
- void*
-);
-
-/*
-** CAPI3REF: Enable Or Disable Shared Pager Cache
-**
-** This routine enables or disables the sharing of the database cache
-** and schema data structures between connections to the same database.
-** Sharing is enabled if the argument is true and disabled if the argument
-** is false.
-**
-** Cache sharing is enabled and disabled on a thread-by-thread basis.
-** Each call to this routine enables or disables cache sharing only for
-** connections created in the same thread in which this routine is called.
-** There is no mechanism for sharing cache between database connections
-** running in different threads.
-**
-** Sharing must be disabled prior to shutting down a thread or else
-** the thread will leak memory. Call this routine with an argument of
-** 0 to turn off sharing. Or use the sqlite3_thread_cleanup() API.
-**
-** This routine must not be called when any database connections
-** are active in the current thread. Enabling or disabling shared
-** cache while there are active database connections will result
-** in memory corruption.
-**
-** When the shared cache is enabled, the
-** following routines must always be called from the same thread:
-** [sqlite3_open()], [sqlite3_prepare_v2()], [sqlite3_step()],
-** [sqlite3_reset()], [sqlite3_finalize()], and [sqlite3_close()].
-** This is due to the fact that the shared cache makes use of
-** thread-specific storage so that it will be available for sharing
-** with other connections.
-**
-** Virtual tables cannot be used with a shared cache. When shared
-** cache is enabled, the sqlite3_create_module() API used to register
-** virtual tables will always return an error.
-**
-** This routine returns [SQLITE_OK] if shared cache was
-** enabled or disabled successfully. An [SQLITE_ERROR | error code]
-** is returned otherwise.
-**
-** Shared cache is disabled by default for backward compatibility.
-*/
-int sqlite3_enable_shared_cache(int);
-
-/*
-** CAPI3REF: Attempt To Free Heap Memory
-**
-** Attempt to free N bytes of heap memory by deallocating non-essential
-** memory allocations held by the database library (example: memory
-** used to cache database pages to improve performance).
-**
-** This function is not a part of standard builds. It is only created
-** if SQLite is compiled with the SQLITE_ENABLE_MEMORY_MANAGEMENT macro.
-*/
-int sqlite3_release_memory(int);
-
-/*
-** CAPI3REF: Impose A Limit On Heap Size
-**
-** Place a "soft" limit on the amount of heap memory that may be allocated by
-** SQLite within the current thread. If an internal allocation is requested
-** that would exceed the specified limit, [sqlite3_release_memory()] is invoked
-** one or more times to free up some space before the allocation is made.
-**
-** The limit is called "soft", because if [sqlite3_release_memory()] cannot free
-** sufficient memory to prevent the limit from being exceeded, the memory is
-** allocated anyway and the current operation proceeds.
-**
-** Prior to shutting down a thread sqlite3_soft_heap_limit() must be set to
-** zero (the default) or else the thread will leak memory. Alternatively, use
-** the [sqlite3_thread_cleanup()] API.
-**
-** A negative or zero value for N means that there is no soft heap limit and
-** [sqlite3_release_memory()] will only be called when memory is exhaused.
-** The default value for the soft heap limit is zero.
-**
-** SQLite makes a best effort to honor the soft heap limit. But if it
-** is unable to reduce memory usage below the soft limit, execution will
-** continue without error or notification. This is why the limit is
-** called a "soft" limit. It is advisory only.
-**
-** This function is only available if the library was compiled with the
-** SQLITE_ENABLE_MEMORY_MANAGEMENT option set.
-** memory-management has been enabled.
-*/
-void sqlite3_soft_heap_limit(int);
-
-/*
-** CAPI3REF: Clean Up Thread Local Storage
-**
-** This routine makes sure that all thread-local storage has been
-** deallocated for the current thread.
-**
-** This routine is not technically necessary. All thread-local storage
-** will be automatically deallocated once memory-management and
-** shared-cache are disabled and the soft heap limit has been set
-** to zero. This routine is provided as a convenience for users who
-** want to make absolutely sure they have not forgotten something
-** prior to killing off a thread.
-*/
-void sqlite3_thread_cleanup(void);
-
-/*
-** CAPI3REF: Extract Metadata About A Column Of A Table
-**
-** This routine
-** returns meta-data about a specific column of a specific database
-** table accessible using the connection handle passed as the first function
-** argument.
-**
-** The column is identified by the second, third and fourth parameters to
-** this function. The second parameter is either the name of the database
-** (i.e. "main", "temp" or an attached database) containing the specified
-** table or NULL. If it is NULL, then all attached databases are searched
-** for the table using the same algorithm as the database engine uses to
-** resolve unqualified table references.
-**
-** The third and fourth parameters to this function are the table and column
-** name of the desired column, respectively. Neither of these parameters
-** may be NULL.
-**
-** Meta information is returned by writing to the memory locations passed as
-** the 5th and subsequent parameters to this function. Any of these
-** arguments may be NULL, in which case the corresponding element of meta
-** information is ommitted.
-**
-** <pre>
-** Parameter Output Type Description
-** -----------------------------------
-**
-** 5th const char* Data type
-** 6th const char* Name of the default collation sequence
-** 7th int True if the column has a NOT NULL constraint
-** 8th int True if the column is part of the PRIMARY KEY
-** 9th int True if the column is AUTOINCREMENT
-** </pre>
-**
-**
-** The memory pointed to by the character pointers returned for the
-** declaration type and collation sequence is valid only until the next
-** call to any sqlite API function.
-**
-** If the specified table is actually a view, then an error is returned.
-**
-** If the specified column is "rowid", "oid" or "_rowid_" and an
-** INTEGER PRIMARY KEY column has been explicitly declared, then the output
-** parameters are set for the explicitly declared column. If there is no
-** explicitly declared IPK column, then the output parameters are set as
-** follows:
-**
-** <pre>
-** data type: "INTEGER"
-** collation sequence: "BINARY"
-** not null: 0
-** primary key: 1
-** auto increment: 0
-** </pre>
-**
-** This function may load one or more schemas from database files. If an
-** error occurs during this process, or if the requested table or column
-** cannot be found, an SQLITE error code is returned and an error message
-** left in the database handle (to be retrieved using sqlite3_errmsg()).
-**
-** This API is only available if the library was compiled with the
-** SQLITE_ENABLE_COLUMN_METADATA preprocessor symbol defined.
-*/
-int sqlite3_table_column_metadata(
- sqlite3 *db, /* Connection handle */
- const char *zDbName, /* Database name or NULL */
- const char *zTableName, /* Table name */
- const char *zColumnName, /* Column name */
- char const **pzDataType, /* OUTPUT: Declared data type */
- char const **pzCollSeq, /* OUTPUT: Collation sequence name */
- int *pNotNull, /* OUTPUT: True if NOT NULL constraint exists */
- int *pPrimaryKey, /* OUTPUT: True if column part of PK */
- int *pAutoinc /* OUTPUT: True if colums is auto-increment */
-);
-
-/*
-** CAPI3REF: Load An Extension
-**
-** Attempt to load an SQLite extension library contained in the file
-** zFile. The entry point is zProc. zProc may be 0 in which case the
-** name of the entry point defaults to "sqlite3_extension_init".
-**
-** Return [SQLITE_OK] on success and [SQLITE_ERROR] if something goes wrong.
-**
-** If an error occurs and pzErrMsg is not 0, then fill *pzErrMsg with
-** error message text. The calling function should free this memory
-** by calling [sqlite3_free()].
-**
-** Extension loading must be enabled using [sqlite3_enable_load_extension()]
-** prior to calling this API or an error will be returned.
-*/
-int sqlite3_load_extension(
- sqlite3 *db, /* Load the extension into this database connection */
- const char *zFile, /* Name of the shared library containing extension */
- const char *zProc, /* Entry point. Derived from zFile if 0 */
- char **pzErrMsg /* Put error message here if not 0 */
-);
-
-/*
-** CAPI3REF: Enable Or Disable Extension Loading
-**
-** So as not to open security holes in older applications that are
-** unprepared to deal with extension loading, and as a means of disabling
-** extension loading while evaluating user-entered SQL, the following
-** API is provided to turn the [sqlite3_load_extension()] mechanism on and
-** off. It is off by default. See ticket #1863.
-**
-** Call this routine with onoff==1 to turn extension loading on
-** and call it with onoff==0 to turn it back off again.
-*/
-int sqlite3_enable_load_extension(sqlite3 *db, int onoff);
-
-/*
-** CAPI3REF: Make Arrangements To Automatically Load An Extension
-**
-** Register an extension entry point that is automatically invoked
-** whenever a new database connection is opened using
-** [sqlite3_open()] or [sqlite3_open16()].
-**
-** This API can be invoked at program startup in order to register
-** one or more statically linked extensions that will be available
-** to all new database connections.
-**
-** Duplicate extensions are detected so calling this routine multiple
-** times with the same extension is harmless.
-**
-** This routine stores a pointer to the extension in an array
-** that is obtained from malloc(). If you run a memory leak
-** checker on your program and it reports a leak because of this
-** array, then invoke [sqlite3_automatic_extension_reset()] prior
-** to shutdown to free the memory.
-**
-** Automatic extensions apply across all threads.
-**
-** This interface is experimental and is subject to change or
-** removal in future releases of SQLite.
-*/
-int sqlite3_auto_extension(void *xEntryPoint);
-
-
-/*
-** CAPI3REF: Reset Automatic Extension Loading
-**
-** Disable all previously registered automatic extensions. This
-** routine undoes the effect of all prior [sqlite3_automatic_extension()]
-** calls.
-**
-** This call disabled automatic extensions in all threads.
-**
-** This interface is experimental and is subject to change or
-** removal in future releases of SQLite.
-*/
-void sqlite3_reset_auto_extension(void);
-
-
-/*
-****** EXPERIMENTAL - subject to change without notice **************
-**
-** The interface to the virtual-table mechanism is currently considered
-** to be experimental. The interface might change in incompatible ways.
-** If this is a problem for you, do not use the interface at this time.
-**
-** When the virtual-table mechanism stablizes, we will declare the
-** interface fixed, support it indefinitely, and remove this comment.
-*/
-
-/*
-** Structures used by the virtual table interface
-*/
-typedef struct sqlite3_vtab sqlite3_vtab;
-typedef struct sqlite3_index_info sqlite3_index_info;
-typedef struct sqlite3_vtab_cursor sqlite3_vtab_cursor;
-typedef struct sqlite3_module sqlite3_module;
-
-/*
-** A module is a class of virtual tables. Each module is defined
-** by an instance of the following structure. This structure consists
-** mostly of methods for the module.
-*/
-struct sqlite3_module {
- int iVersion;
- int (*xCreate)(sqlite3*, void *pAux,
- int argc, const char *const*argv,
- sqlite3_vtab **ppVTab, char**);
- int (*xConnect)(sqlite3*, void *pAux,
- int argc, const char *const*argv,
- sqlite3_vtab **ppVTab, char**);
- int (*xBestIndex)(sqlite3_vtab *pVTab, sqlite3_index_info*);
- int (*xDisconnect)(sqlite3_vtab *pVTab);
- int (*xDestroy)(sqlite3_vtab *pVTab);
- int (*xOpen)(sqlite3_vtab *pVTab, sqlite3_vtab_cursor **ppCursor);
- int (*xClose)(sqlite3_vtab_cursor*);
- int (*xFilter)(sqlite3_vtab_cursor*, int idxNum, const char *idxStr,
- int argc, sqlite3_value **argv);
- int (*xNext)(sqlite3_vtab_cursor*);
- int (*xEof)(sqlite3_vtab_cursor*);
- int (*xColumn)(sqlite3_vtab_cursor*, sqlite3_context*, int);
- int (*xRowid)(sqlite3_vtab_cursor*, sqlite_int64 *pRowid);
- int (*xUpdate)(sqlite3_vtab *, int, sqlite3_value **, sqlite_int64 *);
- int (*xBegin)(sqlite3_vtab *pVTab);
- int (*xSync)(sqlite3_vtab *pVTab);
- int (*xCommit)(sqlite3_vtab *pVTab);
- int (*xRollback)(sqlite3_vtab *pVTab);
- int (*xFindFunction)(sqlite3_vtab *pVtab, int nArg, const char *zName,
- void (**pxFunc)(sqlite3_context*,int,sqlite3_value**),
- void **ppArg);
-};
-
-/*
-** The sqlite3_index_info structure and its substructures is used to
-** pass information into and receive the reply from the xBestIndex
-** method of an sqlite3_module. The fields under **Inputs** are the
-** inputs to xBestIndex and are read-only. xBestIndex inserts its
-** results into the **Outputs** fields.
-**
-** The aConstraint[] array records WHERE clause constraints of the
-** form:
-**
-** column OP expr
-**
-** Where OP is =, <, <=, >, or >=. The particular operator is stored
-** in aConstraint[].op. The index of the column is stored in
-** aConstraint[].iColumn. aConstraint[].usable is TRUE if the
-** expr on the right-hand side can be evaluated (and thus the constraint
-** is usable) and false if it cannot.
-**
-** The optimizer automatically inverts terms of the form "expr OP column"
-** and makes other simplificatinos to the WHERE clause in an attempt to
-** get as many WHERE clause terms into the form shown above as possible.
-** The aConstraint[] array only reports WHERE clause terms in the correct
-** form that refer to the particular virtual table being queried.
-**
-** Information about the ORDER BY clause is stored in aOrderBy[].
-** Each term of aOrderBy records a column of the ORDER BY clause.
-**
-** The xBestIndex method must fill aConstraintUsage[] with information
-** about what parameters to pass to xFilter. If argvIndex>0 then
-** the right-hand side of the corresponding aConstraint[] is evaluated
-** and becomes the argvIndex-th entry in argv. If aConstraintUsage[].omit
-** is true, then the constraint is assumed to be fully handled by the
-** virtual table and is not checked again by SQLite.
-**
-** The idxNum and idxPtr values are recorded and passed into xFilter.
-** sqlite3_free() is used to free idxPtr if needToFreeIdxPtr is true.
-**
-** The orderByConsumed means that output from xFilter will occur in
-** the correct order to satisfy the ORDER BY clause so that no separate
-** sorting step is required.
-**
-** The estimatedCost value is an estimate of the cost of doing the
-** particular lookup. A full scan of a table with N entries should have
-** a cost of N. A binary search of a table of N entries should have a
-** cost of approximately log(N).
-*/
-struct sqlite3_index_info {
- /* Inputs */
- const int nConstraint; /* Number of entries in aConstraint */
- const struct sqlite3_index_constraint {
- int iColumn; /* Column on left-hand side of constraint */
- unsigned char op; /* Constraint operator */
- unsigned char usable; /* True if this constraint is usable */
- int iTermOffset; /* Used internally - xBestIndex should ignore */
- } *const aConstraint; /* Table of WHERE clause constraints */
- const int nOrderBy; /* Number of terms in the ORDER BY clause */
- const struct sqlite3_index_orderby {
- int iColumn; /* Column number */
- unsigned char desc; /* True for DESC. False for ASC. */
- } *const aOrderBy; /* The ORDER BY clause */
-
- /* Outputs */
- struct sqlite3_index_constraint_usage {
- int argvIndex; /* if >0, constraint is part of argv to xFilter */
- unsigned char omit; /* Do not code a test for this constraint */
- } *const aConstraintUsage;
- int idxNum; /* Number used to identify the index */
- char *idxStr; /* String, possibly obtained from sqlite3_malloc */
- int needToFreeIdxStr; /* Free idxStr using sqlite3_free() if true */
- int orderByConsumed; /* True if output is already ordered */
- double estimatedCost; /* Estimated cost of using this index */
-};
-#define SQLITE_INDEX_CONSTRAINT_EQ 2
-#define SQLITE_INDEX_CONSTRAINT_GT 4
-#define SQLITE_INDEX_CONSTRAINT_LE 8
-#define SQLITE_INDEX_CONSTRAINT_LT 16
-#define SQLITE_INDEX_CONSTRAINT_GE 32
-#define SQLITE_INDEX_CONSTRAINT_MATCH 64
-
-/*
-** This routine is used to register a new module name with an SQLite
-** connection. Module names must be registered before creating new
-** virtual tables on the module, or before using preexisting virtual
-** tables of the module.
-*/
-int sqlite3_create_module(
- sqlite3 *db, /* SQLite connection to register module with */
- const char *zName, /* Name of the module */
- const sqlite3_module *, /* Methods for the module */
- void * /* Client data for xCreate/xConnect */
-);
-
-/*
-** Every module implementation uses a subclass of the following structure
-** to describe a particular instance of the module. Each subclass will
-** be taylored to the specific needs of the module implementation. The
-** purpose of this superclass is to define certain fields that are common
-** to all module implementations.
-**
-** Virtual tables methods can set an error message by assigning a
-** string obtained from sqlite3_mprintf() to zErrMsg. The method should
-** take care that any prior string is freed by a call to sqlite3_free()
-** prior to assigning a new string to zErrMsg. After the error message
-** is delivered up to the client application, the string will be automatically
-** freed by sqlite3_free() and the zErrMsg field will be zeroed. Note
-** that sqlite3_mprintf() and sqlite3_free() are used on the zErrMsg field
-** since virtual tables are commonly implemented in loadable extensions which
-** do not have access to sqlite3MPrintf() or sqlite3Free().
-*/
-struct sqlite3_vtab {
- const sqlite3_module *pModule; /* The module for this virtual table */
- int nRef; /* Used internally */
- char *zErrMsg; /* Error message from sqlite3_mprintf() */
- /* Virtual table implementations will typically add additional fields */
-};
-
-/* Every module implementation uses a subclass of the following structure
-** to describe cursors that point into the virtual table and are used
-** to loop through the virtual table. Cursors are created using the
-** xOpen method of the module. Each module implementation will define
-** the content of a cursor structure to suit its own needs.
-**
-** This superclass exists in order to define fields of the cursor that
-** are common to all implementations.
-*/
-struct sqlite3_vtab_cursor {
- sqlite3_vtab *pVtab; /* Virtual table of this cursor */
- /* Virtual table implementations will typically add additional fields */
-};
-
-/*
-** The xCreate and xConnect methods of a module use the following API
-** to declare the format (the names and datatypes of the columns) of
-** the virtual tables they implement.
-*/
-int sqlite3_declare_vtab(sqlite3*, const char *zCreateTable);
-
-/*
-** Virtual tables can provide alternative implementations of functions
-** using the xFindFunction method. But global versions of those functions
-** must exist in order to be overloaded.
-**
-** This API makes sure a global version of a function with a particular
-** name and number of parameters exists. If no such function exists
-** before this API is called, a new function is created. The implementation
-** of the new function always causes an exception to be thrown. So
-** the new function is not good for anything by itself. Its only
-** purpose is to be a place-holder function that can be overloaded
-** by virtual tables.
-**
-** This API should be considered part of the virtual table interface,
-** which is experimental and subject to change.
-*/
-int sqlite3_overload_function(sqlite3*, const char *zFuncName, int nArg);
-
-/*
-** The interface to the virtual-table mechanism defined above (back up
-** to a comment remarkably similar to this one) is currently considered
-** to be experimental. The interface might change in incompatible ways.
-** If this is a problem for you, do not use the interface at this time.
-**
-** When the virtual-table mechanism stablizes, we will declare the
-** interface fixed, support it indefinitely, and remove this comment.
-**
-****** EXPERIMENTAL - subject to change without notice **************
-*/
-
-/*
-** CAPI3REF: A Handle To An Open BLOB
-**
-** An instance of the following opaque structure is used to
-** represent an blob-handle. A blob-handle is created by
-** [sqlite3_blob_open()] and destroyed by [sqlite3_blob_close()].
-** The [sqlite3_blob_read()] and [sqlite3_blob_write()] interfaces
-** can be used to read or write small subsections of the blob.
-** The [sqltie3_blob_size()] interface returns the size of the
-** blob in bytes.
-*/
-typedef struct sqlite3_blob sqlite3_blob;
-
-/*
-** CAPI3REF: Open A BLOB For Incremental I/O
-**
-** Open a handle to the blob located in row iRow,, column zColumn,
-** table zTable in database zDb. i.e. the same blob that would
-** be selected by:
-**
-** <pre>
-** SELECT zColumn FROM zDb.zTable WHERE rowid = iRow;
-** </pre>
-**
-** If the flags parameter is non-zero, the blob is opened for
-** read and write access. If it is zero, the blob is opened for read
-** access.
-**
-** On success, [SQLITE_OK] is returned and the new
-** [sqlite3_blob | blob handle] is written to *ppBlob.
-** Otherwise an error code is returned and
-** any value written to *ppBlob should not be used by the caller.
-** This function sets the database-handle error code and message
-** accessible via [sqlite3_errcode()] and [sqlite3_errmsg()].
-*/
-int sqlite3_blob_open(
- sqlite3*,
- const char *zDb,
- const char *zTable,
- const char *zColumn,
- sqlite_int64 iRow,
- int flags,
- sqlite3_blob **ppBlob
-);
-
-/*
-** CAPI3REF: Close A BLOB Handle
-**
-** Close an open [sqlite3_blob | blob handle].
-*/
-int sqlite3_blob_close(sqlite3_blob *);
-
-/*
-** CAPI3REF: Return The Size Of An Open BLOB
-**
-** Return the size in bytes of the blob accessible via the open
-** [sqlite3_blob | blob-handle] passed as an argument.
-*/
-int sqlite3_blob_bytes(sqlite3_blob *);
-
-/*
-** CAPI3REF: Read Data From A BLOB Incrementally
-**
-** This function is used to read data from an open
-** [sqlite3_blob | blob-handle] into a caller supplied buffer.
-** n bytes of data are copied into buffer
-** z from the open blob, starting at offset iOffset.
-**
-** On success, SQLITE_OK is returned. Otherwise, an
-** [SQLITE_ERROR | SQLite error code] or an
-** [SQLITE_IOERR_READ | extended error code] is returned.
-*/
-int sqlite3_blob_read(sqlite3_blob *, void *z, int n, int iOffset);
-
-/*
-** CAPI3REF: Write Data Into A BLOB Incrementally
-**
-** This function is used to write data into an open
-** [sqlite3_blob | blob-handle] from a user supplied buffer.
-** n bytes of data are copied from the buffer
-** pointed to by z into the open blob, starting at offset iOffset.
-**
-** If the [sqlite3_blob | blob-handle] passed as the first argument
-** was not opened for writing (the flags parameter to [sqlite3_blob_open()]
-*** was zero), this function returns [SQLITE_READONLY].
-**
-** This function may only modify the contents of the blob, it is
-** not possible to increase the size of a blob using this API. If
-** offset iOffset is less than n bytes from the end of the blob,
-** [SQLITE_ERROR] is returned and no data is written.
-**
-** On success, SQLITE_OK is returned. Otherwise, an
-** [SQLITE_ERROR | SQLite error code] or an
-** [SQLITE_IOERR_READ | extended error code] is returned.
-*/
-int sqlite3_blob_write(sqlite3_blob *, const void *z, int n, int iOffset);
-
-/*
-** Undo the hack that converts floating point types to integer for
-** builds on processors without floating point support.
-*/
-#ifdef SQLITE_OMIT_FLOATING_POINT
-# undef double
-#endif
-
-#ifdef __cplusplus
-} /* End of the 'extern "C"' block */
-#endif
-#endif
diff --git a/WebKitLibraries/WebCoreSQLite3/sqlite3ext.h b/WebKitLibraries/WebCoreSQLite3/sqlite3ext.h
deleted file mode 100644
index 0d70e64..0000000
--- a/WebKitLibraries/WebCoreSQLite3/sqlite3ext.h
+++ /dev/null
@@ -1,290 +0,0 @@
-/*
-** 2006 June 7
-**
-** The author disclaims copyright to this source code. In place of
-** a legal notice, here is a blessing:
-**
-** May you do good and not evil.
-** May you find forgiveness for yourself and forgive others.
-** May you share freely, never taking more than you give.
-**
-*************************************************************************
-** This header file defines the SQLite interface for use by
-** shared libraries that want to be imported as extensions into
-** an SQLite instance. Shared libraries that intend to be loaded
-** as extensions by SQLite should #include this file instead of
-** sqlite3.h.
-**
-** @(#) $Id: sqlite3ext.h,v 1.10 2007/03/29 18:46:01 drh Exp $
-*/
-#ifndef _SQLITE3EXT_H_
-#define _SQLITE3EXT_H_
-#include "sqlite3.h"
-
-typedef struct sqlite3_api_routines sqlite3_api_routines;
-
-/*
-** The following structure hold pointers to all of the SQLite API
-** routines.
-*/
-struct sqlite3_api_routines {
- void * (*aggregate_context)(sqlite3_context*,int nBytes);
- int (*aggregate_count)(sqlite3_context*);
- int (*bind_blob)(sqlite3_stmt*,int,const void*,int n,void(*)(void*));
- int (*bind_double)(sqlite3_stmt*,int,double);
- int (*bind_int)(sqlite3_stmt*,int,int);
- int (*bind_int64)(sqlite3_stmt*,int,sqlite_int64);
- int (*bind_null)(sqlite3_stmt*,int);
- int (*bind_parameter_count)(sqlite3_stmt*);
- int (*bind_parameter_index)(sqlite3_stmt*,const char*zName);
- const char * (*bind_parameter_name)(sqlite3_stmt*,int);
- int (*bind_text)(sqlite3_stmt*,int,const char*,int n,void(*)(void*));
- int (*bind_text16)(sqlite3_stmt*,int,const void*,int,void(*)(void*));
- int (*bind_value)(sqlite3_stmt*,int,const sqlite3_value*);
- int (*busy_handler)(sqlite3*,int(*)(void*,int),void*);
- int (*busy_timeout)(sqlite3*,int ms);
- int (*changes)(sqlite3*);
- int (*close)(sqlite3*);
- int (*collation_needed)(sqlite3*,void*,void(*)(void*,sqlite3*,int eTextRep,const char*));
- int (*collation_needed16)(sqlite3*,void*,void(*)(void*,sqlite3*,int eTextRep,const void*));
- const void * (*column_blob)(sqlite3_stmt*,int iCol);
- int (*column_bytes)(sqlite3_stmt*,int iCol);
- int (*column_bytes16)(sqlite3_stmt*,int iCol);
- int (*column_count)(sqlite3_stmt*pStmt);
- const char * (*column_database_name)(sqlite3_stmt*,int);
- const void * (*column_database_name16)(sqlite3_stmt*,int);
- const char * (*column_decltype)(sqlite3_stmt*,int i);
- const void * (*column_decltype16)(sqlite3_stmt*,int);
- double (*column_double)(sqlite3_stmt*,int iCol);
- int (*column_int)(sqlite3_stmt*,int iCol);
- sqlite_int64 (*column_int64)(sqlite3_stmt*,int iCol);
- const char * (*column_name)(sqlite3_stmt*,int);
- const void * (*column_name16)(sqlite3_stmt*,int);
- const char * (*column_origin_name)(sqlite3_stmt*,int);
- const void * (*column_origin_name16)(sqlite3_stmt*,int);
- const char * (*column_table_name)(sqlite3_stmt*,int);
- const void * (*column_table_name16)(sqlite3_stmt*,int);
- const unsigned char * (*column_text)(sqlite3_stmt*,int iCol);
- const void * (*column_text16)(sqlite3_stmt*,int iCol);
- int (*column_type)(sqlite3_stmt*,int iCol);
- sqlite3_value* (*column_value)(sqlite3_stmt*,int iCol);
- void * (*commit_hook)(sqlite3*,int(*)(void*),void*);
- int (*complete)(const char*sql);
- int (*complete16)(const void*sql);
- int (*create_collation)(sqlite3*,const char*,int,void*,int(*)(void*,int,const void*,int,const void*));
- int (*create_collation16)(sqlite3*,const char*,int,void*,int(*)(void*,int,const void*,int,const void*));
- int (*create_function)(sqlite3*,const char*,int,int,void*,void (*xFunc)(sqlite3_context*,int,sqlite3_value**),void (*xStep)(sqlite3_context*,int,sqlite3_value**),void (*xFinal)(sqlite3_context*));
- int (*create_function16)(sqlite3*,const void*,int,int,void*,void (*xFunc)(sqlite3_context*,int,sqlite3_value**),void (*xStep)(sqlite3_context*,int,sqlite3_value**),void (*xFinal)(sqlite3_context*));
- int (*create_module)(sqlite3*,const char*,const sqlite3_module*,void*);
- int (*data_count)(sqlite3_stmt*pStmt);
- sqlite3 * (*db_handle)(sqlite3_stmt*);
- int (*declare_vtab)(sqlite3*,const char*);
- int (*enable_shared_cache)(int);
- int (*errcode)(sqlite3*db);
- const char * (*errmsg)(sqlite3*);
- const void * (*errmsg16)(sqlite3*);
- int (*exec)(sqlite3*,const char*,sqlite3_callback,void*,char**);
- int (*expired)(sqlite3_stmt*);
- int (*finalize)(sqlite3_stmt*pStmt);
- void (*free)(void*);
- void (*free_table)(char**result);
- int (*get_autocommit)(sqlite3*);
- void * (*get_auxdata)(sqlite3_context*,int);
- int (*get_table)(sqlite3*,const char*,char***,int*,int*,char**);
- int (*global_recover)(void);
- void (*interruptx)(sqlite3*);
- sqlite_int64 (*last_insert_rowid)(sqlite3*);
- const char * (*libversion)(void);
- int (*libversion_number)(void);
- void *(*malloc)(int);
- char * (*mprintf)(const char*,...);
- int (*open)(const char*,sqlite3**);
- int (*open16)(const void*,sqlite3**);
- int (*prepare)(sqlite3*,const char*,int,sqlite3_stmt**,const char**);
- int (*prepare16)(sqlite3*,const void*,int,sqlite3_stmt**,const void**);
- void * (*profile)(sqlite3*,void(*)(void*,const char*,sqlite_uint64),void*);
- void (*progress_handler)(sqlite3*,int,int(*)(void*),void*);
- void *(*realloc)(void*,int);
- int (*reset)(sqlite3_stmt*pStmt);
- void (*result_blob)(sqlite3_context*,const void*,int,void(*)(void*));
- void (*result_double)(sqlite3_context*,double);
- void (*result_error)(sqlite3_context*,const char*,int);
- void (*result_error16)(sqlite3_context*,const void*,int);
- void (*result_int)(sqlite3_context*,int);
- void (*result_int64)(sqlite3_context*,sqlite_int64);
- void (*result_null)(sqlite3_context*);
- void (*result_text)(sqlite3_context*,const char*,int,void(*)(void*));
- void (*result_text16)(sqlite3_context*,const void*,int,void(*)(void*));
- void (*result_text16be)(sqlite3_context*,const void*,int,void(*)(void*));
- void (*result_text16le)(sqlite3_context*,const void*,int,void(*)(void*));
- void (*result_value)(sqlite3_context*,sqlite3_value*);
- void * (*rollback_hook)(sqlite3*,void(*)(void*),void*);
- int (*set_authorizer)(sqlite3*,int(*)(void*,int,const char*,const char*,const char*,const char*),void*);
- void (*set_auxdata)(sqlite3_context*,int,void*,void (*)(void*));
- char * (*snprintf)(int,char*,const char*,...);
- int (*step)(sqlite3_stmt*);
- int (*table_column_metadata)(sqlite3*,const char*,const char*,const char*,char const**,char const**,int*,int*,int*);
- void (*thread_cleanup)(void);
- int (*total_changes)(sqlite3*);
- void * (*trace)(sqlite3*,void(*xTrace)(void*,const char*),void*);
- int (*transfer_bindings)(sqlite3_stmt*,sqlite3_stmt*);
- void * (*update_hook)(sqlite3*,void(*)(void*,int ,char const*,char const*,sqlite_int64),void*);
- void * (*user_data)(sqlite3_context*);
- const void * (*value_blob)(sqlite3_value*);
- int (*value_bytes)(sqlite3_value*);
- int (*value_bytes16)(sqlite3_value*);
- double (*value_double)(sqlite3_value*);
- int (*value_int)(sqlite3_value*);
- sqlite_int64 (*value_int64)(sqlite3_value*);
- int (*value_numeric_type)(sqlite3_value*);
- const unsigned char * (*value_text)(sqlite3_value*);
- const void * (*value_text16)(sqlite3_value*);
- const void * (*value_text16be)(sqlite3_value*);
- const void * (*value_text16le)(sqlite3_value*);
- int (*value_type)(sqlite3_value*);
- char *(*vmprintf)(const char*,va_list);
- int (*overload_function)(sqlite3*, const char *zFuncName, int nArg);
- int (*prepare_v2)(sqlite3*,const char*,int,sqlite3_stmt**,const char**);
- int (*prepare16_v2)(sqlite3*,const void*,int,sqlite3_stmt**,const void**);
- int (*clear_bindings)(sqlite3_stmt*);
-};
-
-/*
-** The following macros redefine the API routines so that they are
-** redirected throught the global sqlite3_api structure.
-**
-** This header file is also used by the loadext.c source file
-** (part of the main SQLite library - not an extension) so that
-** it can get access to the sqlite3_api_routines structure
-** definition. But the main library does not want to redefine
-** the API. So the redefinition macros are only valid if the
-** SQLITE_CORE macros is undefined.
-*/
-#ifndef SQLITE_CORE
-#define sqlite3_aggregate_context sqlite3_api->aggregate_context
-#define sqlite3_aggregate_count sqlite3_api->aggregate_count
-#define sqlite3_bind_blob sqlite3_api->bind_blob
-#define sqlite3_bind_double sqlite3_api->bind_double
-#define sqlite3_bind_int sqlite3_api->bind_int
-#define sqlite3_bind_int64 sqlite3_api->bind_int64
-#define sqlite3_bind_null sqlite3_api->bind_null
-#define sqlite3_bind_parameter_count sqlite3_api->bind_parameter_count
-#define sqlite3_bind_parameter_index sqlite3_api->bind_parameter_index
-#define sqlite3_bind_parameter_name sqlite3_api->bind_parameter_name
-#define sqlite3_bind_text sqlite3_api->bind_text
-#define sqlite3_bind_text16 sqlite3_api->bind_text16
-#define sqlite3_bind_value sqlite3_api->bind_value
-#define sqlite3_busy_handler sqlite3_api->busy_handler
-#define sqlite3_busy_timeout sqlite3_api->busy_timeout
-#define sqlite3_changes sqlite3_api->changes
-#define sqlite3_close sqlite3_api->close
-#define sqlite3_collation_needed sqlite3_api->collation_needed
-#define sqlite3_collation_needed16 sqlite3_api->collation_needed16
-#define sqlite3_column_blob sqlite3_api->column_blob
-#define sqlite3_column_bytes sqlite3_api->column_bytes
-#define sqlite3_column_bytes16 sqlite3_api->column_bytes16
-#define sqlite3_column_count sqlite3_api->column_count
-#define sqlite3_column_database_name sqlite3_api->column_database_name
-#define sqlite3_column_database_name16 sqlite3_api->column_database_name16
-#define sqlite3_column_decltype sqlite3_api->column_decltype
-#define sqlite3_column_decltype16 sqlite3_api->column_decltype16
-#define sqlite3_column_double sqlite3_api->column_double
-#define sqlite3_column_int sqlite3_api->column_int
-#define sqlite3_column_int64 sqlite3_api->column_int64
-#define sqlite3_column_name sqlite3_api->column_name
-#define sqlite3_column_name16 sqlite3_api->column_name16
-#define sqlite3_column_origin_name sqlite3_api->column_origin_name
-#define sqlite3_column_origin_name16 sqlite3_api->column_origin_name16
-#define sqlite3_column_table_name sqlite3_api->column_table_name
-#define sqlite3_column_table_name16 sqlite3_api->column_table_name16
-#define sqlite3_column_text sqlite3_api->column_text
-#define sqlite3_column_text16 sqlite3_api->column_text16
-#define sqlite3_column_type sqlite3_api->column_type
-#define sqlite3_column_value sqlite3_api->column_value
-#define sqlite3_commit_hook sqlite3_api->commit_hook
-#define sqlite3_complete sqlite3_api->complete
-#define sqlite3_complete16 sqlite3_api->complete16
-#define sqlite3_create_collation sqlite3_api->create_collation
-#define sqlite3_create_collation16 sqlite3_api->create_collation16
-#define sqlite3_create_function sqlite3_api->create_function
-#define sqlite3_create_function16 sqlite3_api->create_function16
-#define sqlite3_create_module sqlite3_api->create_module
-#define sqlite3_data_count sqlite3_api->data_count
-#define sqlite3_db_handle sqlite3_api->db_handle
-#define sqlite3_declare_vtab sqlite3_api->declare_vtab
-#define sqlite3_enable_shared_cache sqlite3_api->enable_shared_cache
-#define sqlite3_errcode sqlite3_api->errcode
-#define sqlite3_errmsg sqlite3_api->errmsg
-#define sqlite3_errmsg16 sqlite3_api->errmsg16
-#define sqlite3_exec sqlite3_api->exec
-#define sqlite3_expired sqlite3_api->expired
-#define sqlite3_finalize sqlite3_api->finalize
-#define sqlite3_free sqlite3_api->free
-#define sqlite3_free_table sqlite3_api->free_table
-#define sqlite3_get_autocommit sqlite3_api->get_autocommit
-#define sqlite3_get_auxdata sqlite3_api->get_auxdata
-#define sqlite3_get_table sqlite3_api->get_table
-#define sqlite3_global_recover sqlite3_api->global_recover
-#define sqlite3_interrupt sqlite3_api->interruptx
-#define sqlite3_last_insert_rowid sqlite3_api->last_insert_rowid
-#define sqlite3_libversion sqlite3_api->libversion
-#define sqlite3_libversion_number sqlite3_api->libversion_number
-#define sqlite3_malloc sqlite3_api->malloc
-#define sqlite3_mprintf sqlite3_api->mprintf
-#define sqlite3_open sqlite3_api->open
-#define sqlite3_open16 sqlite3_api->open16
-#define sqlite3_prepare sqlite3_api->prepare
-#define sqlite3_prepare16 sqlite3_api->prepare16
-#define sqlite3_prepare_v2 sqlite3_api->prepare_v2
-#define sqlite3_prepare16_v2 sqlite3_api->prepare16_v2
-#define sqlite3_profile sqlite3_api->profile
-#define sqlite3_progress_handler sqlite3_api->progress_handler
-#define sqlite3_realloc sqlite3_api->realloc
-#define sqlite3_reset sqlite3_api->reset
-#define sqlite3_result_blob sqlite3_api->result_blob
-#define sqlite3_result_double sqlite3_api->result_double
-#define sqlite3_result_error sqlite3_api->result_error
-#define sqlite3_result_error16 sqlite3_api->result_error16
-#define sqlite3_result_int sqlite3_api->result_int
-#define sqlite3_result_int64 sqlite3_api->result_int64
-#define sqlite3_result_null sqlite3_api->result_null
-#define sqlite3_result_text sqlite3_api->result_text
-#define sqlite3_result_text16 sqlite3_api->result_text16
-#define sqlite3_result_text16be sqlite3_api->result_text16be
-#define sqlite3_result_text16le sqlite3_api->result_text16le
-#define sqlite3_result_value sqlite3_api->result_value
-#define sqlite3_rollback_hook sqlite3_api->rollback_hook
-#define sqlite3_set_authorizer sqlite3_api->set_authorizer
-#define sqlite3_set_auxdata sqlite3_api->set_auxdata
-#define sqlite3_snprintf sqlite3_api->snprintf
-#define sqlite3_step sqlite3_api->step
-#define sqlite3_table_column_metadata sqlite3_api->table_column_metadata
-#define sqlite3_thread_cleanup sqlite3_api->thread_cleanup
-#define sqlite3_total_changes sqlite3_api->total_changes
-#define sqlite3_trace sqlite3_api->trace
-#define sqlite3_transfer_bindings sqlite3_api->transfer_bindings
-#define sqlite3_update_hook sqlite3_api->update_hook
-#define sqlite3_user_data sqlite3_api->user_data
-#define sqlite3_value_blob sqlite3_api->value_blob
-#define sqlite3_value_bytes sqlite3_api->value_bytes
-#define sqlite3_value_bytes16 sqlite3_api->value_bytes16
-#define sqlite3_value_double sqlite3_api->value_double
-#define sqlite3_value_int sqlite3_api->value_int
-#define sqlite3_value_int64 sqlite3_api->value_int64
-#define sqlite3_value_numeric_type sqlite3_api->value_numeric_type
-#define sqlite3_value_text sqlite3_api->value_text
-#define sqlite3_value_text16 sqlite3_api->value_text16
-#define sqlite3_value_text16be sqlite3_api->value_text16be
-#define sqlite3_value_text16le sqlite3_api->value_text16le
-#define sqlite3_value_type sqlite3_api->value_type
-#define sqlite3_vmprintf sqlite3_api->vmprintf
-#define sqlite3_overload_function sqlite3_api->overload_function
-#define sqlite3_prepare_v2 sqlite3_api->prepare_v2
-#define sqlite3_prepare16_v2 sqlite3_api->prepare16_v2
-#define sqlite3_clear_bindings sqlite3_api->clear_bindings
-#endif /* SQLITE_CORE */
-
-#define SQLITE_EXTENSION_INIT1 const sqlite3_api_routines *sqlite3_api;
-#define SQLITE_EXTENSION_INIT2(v) sqlite3_api = v;
-
-#endif /* _SQLITE3EXT_H_ */
diff --git a/WebKitLibraries/WebKitSystemInterface.h b/WebKitLibraries/WebKitSystemInterface.h
deleted file mode 100644
index c1d4822..0000000
--- a/WebKitLibraries/WebKitSystemInterface.h
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- WebKitSystemInterface.h
- Copyright (C) 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
-
- Public header file.
-*/
-
-#import <Cocoa/Cocoa.h>
-#import <Carbon/Carbon.h>
-
-@class QTMovie;
-@class QTMovieView;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum {
- WKCertificateParseResultSucceeded = 0,
- WKCertificateParseResultFailed = 1,
- WKCertificateParseResultPKCS7 = 2,
-} WKCertificateParseResult;
-
-CFStringRef WKCopyCFLocalizationPreferredName(CFStringRef localization);
-CFStringRef WKSignedPublicKeyAndChallengeString(unsigned keySize, CFStringRef challenge, CFStringRef keyDescription);
-WKCertificateParseResult WKAddCertificatesToKeychainFromData(const void *bytes, unsigned length);
-
-NSString *WKGetPreferredExtensionForMIMEType(NSString *type);
-NSArray *WKGetExtensionsForMIMEType(NSString *type);
-NSString *WKGetMIMETypeForExtension(NSString *extension);
-
-NSDate *WKGetNSURLResponseLastModifiedDate(NSURLResponse *response);
-NSTimeInterval WKGetNSURLResponseFreshnessLifetime(NSURLResponse *response);
-
-CFStringEncoding WKGetWebDefaultCFStringEncoding(void);
-
-void WKSetMetadataURL(NSString *URLString, NSString *referrer, NSString *path);
-void WKSetNSURLConnectionDefersCallbacks(NSURLConnection *connection, BOOL defers);
-
-void WKShowKeyAndMain(void);
-#ifndef __LP64__
-OSStatus WKSyncWindowWithCGAfterMove(WindowRef);
-unsigned WKCarbonWindowMask(void);
-void *WKGetNativeWindowFromWindowRef(WindowRef);
-OSType WKCarbonWindowPropertyCreator(void);
-OSType WKCarbonWindowPropertyTag(void);
-#endif
-
-typedef id WKNSURLConnectionDelegateProxyPtr;
-
-WKNSURLConnectionDelegateProxyPtr WKCreateNSURLConnectionDelegateProxy(void);
-
-void WKDisableCGDeferredUpdates(void);
-
-Class WKNSURLProtocolClassForRequest(NSURLRequest *request);
-void WKSetNSURLRequestShouldContentSniff(NSMutableURLRequest *request, BOOL shouldContentSniff);
-
-unsigned WKGetNSAutoreleasePoolCount(void);
-
-void WKAdvanceDefaultButtonPulseAnimation(NSButtonCell *button);
-
-NSString *WKMouseMovedNotification(void);
-NSString *WKWindowWillOrderOnScreenNotification(void);
-void WKSetNSWindowShouldPostEventNotifications(NSWindow *window, BOOL post);
-
-CFTypeID WKGetAXTextMarkerTypeID(void);
-CFTypeID WKGetAXTextMarkerRangeTypeID(void);
-CFTypeRef WKCreateAXTextMarker(const void *bytes, size_t len);
-BOOL WKGetBytesFromAXTextMarker(CFTypeRef textMarker, void *bytes, size_t length);
-CFTypeRef WKCreateAXTextMarkerRange(CFTypeRef start, CFTypeRef end);
-CFTypeRef WKCopyAXTextMarkerRangeStart(CFTypeRef range);
-CFTypeRef WKCopyAXTextMarkerRangeEnd(CFTypeRef range);
-void WKAccessibilityHandleFocusChanged(void);
-AXUIElementRef WKCreateAXUIElementRef(id element);
-void WKUnregisterUniqueIdForElement(id element);
-
-void WKSetUpFontCache(void);
-
-void WKSignalCFReadStreamEnd(CFReadStreamRef stream);
-void WKSignalCFReadStreamHasBytes(CFReadStreamRef stream);
-void WKSignalCFReadStreamError(CFReadStreamRef stream, CFStreamError *error);
-
-CFReadStreamRef WKCreateCustomCFReadStream(void *(*formCreate)(CFReadStreamRef, void *),
- void (*formFinalize)(CFReadStreamRef, void *),
- Boolean (*formOpen)(CFReadStreamRef, CFStreamError *, Boolean *, void *),
- CFIndex (*formRead)(CFReadStreamRef, UInt8 *, CFIndex, CFStreamError *, Boolean *, void *),
- Boolean (*formCanRead)(CFReadStreamRef, void *),
- void (*formClose)(CFReadStreamRef, void *),
- void (*formSchedule)(CFReadStreamRef, CFRunLoopRef, CFStringRef, void *),
- void (*formUnschedule)(CFReadStreamRef, CFRunLoopRef, CFStringRef, void *),
- void *context);
-
-void WKDrawCapsLockIndicator(CGContextRef, CGRect);
-
-void WKDrawFocusRing(CGContextRef context, CGColorRef color, int radius);
- // The CG context's current path is the focus ring's path.
- // A color of 0 means "use system focus ring color".
- // A radius of 0 means "use default focus ring radius".
-
-void WKSetDragImage(NSImage *image, NSPoint offset);
-
-void WKDrawBezeledTextFieldCell(NSRect, BOOL enabled);
-void WKDrawTextFieldCellFocusRing(NSTextFieldCell*, NSRect);
-void WKDrawBezeledTextArea(NSRect, BOOL enabled);
-void WKPopupMenu(NSMenu*, NSPoint location, float width, NSView*, int selectedItem, NSFont*);
-
-void WKSendUserChangeNotifications(void);
-#ifndef __LP64__
-BOOL WKConvertNSEventToCarbonEvent(EventRecord *carbonEvent, NSEvent *cocoaEvent);
-void WKSendKeyEventToTSM(NSEvent *theEvent);
-void WKCallDrawingNotification(CGrafPtr port, Rect *bounds);
-#endif
-
-BOOL WKGetGlyphTransformedAdvances(CGFontRef, NSFont*, CGAffineTransform *m, ATSGlyphRef *glyph, CGSize *advance);
-NSFont *WKGetFontInLanguageForRange(NSFont *font, NSString *string, NSRange range);
-NSFont *WKGetFontInLanguageForCharacter(NSFont *font, UniChar ch);
-void WKSetCGFontRenderingMode(CGContextRef cgContext, NSFont *font);
-BOOL WKCGContextGetShouldSmoothFonts(CGContextRef cgContext);
-
-#ifdef BUILDING_ON_TIGER
-// CGFontGetAscent, CGFontGetDescent, CGFontGetLeading and CGFontGetUnitsPerEm were not available until Leopard
-void WKGetFontMetrics(CGFontRef font, int *ascent, int *descent, int *lineGap, unsigned *unitsPerEm);
-// CTFontCopyGraphicsFont was not available until Leopard
-CGFontRef WKGetCGFontFromNSFont(NSFont *font);
-// CTFontGetPlatformFont was not available until Leopard
-ATSUFontID WKGetNSFontATSUFontId(NSFont *font);
-// CGFontCopyFullName was not available until Leopard
-CFStringRef WKCopyFullFontName(CGFontRef font);
-#endif
-
-void WKSetPatternBaseCTM(CGContextRef, CGAffineTransform);
-void WKSetPatternPhaseInUserSpace(CGContextRef, CGPoint);
-
-#ifndef BUILDING_ON_TIGER
-void WKGetGlyphsForCharacters(CGFontRef, const UniChar[], CGGlyph[], size_t);
-#else
-typedef void *WKGlyphVectorRef;
-OSStatus WKConvertCharToGlyphs(void *styleGroup, const UniChar *characters, unsigned numCharacters, WKGlyphVectorRef glyphs);
-OSStatus WKGetATSStyleGroup(ATSUStyle fontStyle, void **styleGroup);
-void WKReleaseStyleGroup(void *group);
-OSStatus WKInitializeGlyphVector(int count, WKGlyphVectorRef glyphs);
-void WKClearGlyphVector(WKGlyphVectorRef glyphs);
-
-int WKGetGlyphVectorNumGlyphs(WKGlyphVectorRef glyphVector);
-ATSLayoutRecord *WKGetGlyphVectorFirstRecord(WKGlyphVectorRef glyphVector);
-size_t WKGetGlyphVectorRecordSize(WKGlyphVectorRef glyphVector);
-#endif
-
-#ifndef __LP64__
-NSEvent *WKCreateNSEventWithCarbonEvent(EventRef eventRef);
-NSEvent *WKCreateNSEventWithCarbonMouseMoveEvent(EventRef inEvent, NSWindow *window);
-NSEvent *WKCreateNSEventWithCarbonClickEvent(EventRef inEvent, WindowRef windowRef);
-#endif
-
-CGContextRef WKNSWindowOverrideCGContext(NSWindow *, CGContextRef);
-void WKNSWindowRestoreCGContext(NSWindow *, CGContextRef);
-
-void WKNSWindowMakeBottomCornersSquare(NSWindow *);
-
-#ifdef BUILDING_ON_TIGER
-// WKSupportsMultipartXMixedReplace is not required on Leopard as multipart/x-mixed-replace is always handled by NSURLRequest
-BOOL WKSupportsMultipartXMixedReplace(NSMutableURLRequest *request);
-#endif
-
-BOOL WKCGContextIsBitmapContext(CGContextRef context);
-
-void WKGetWheelEventDeltas(NSEvent *, float *deltaX, float *deltaY, BOOL *continuous);
-
-BOOL WKAppVersionCheckLessThan(NSString *, int, double);
-
-int WKQTMovieDataRate(QTMovie* movie);
-float WKQTMovieMaxTimeLoaded(QTMovie* movie);
-void WKQTMovieViewSetDrawSynchronously(QTMovieView* view, BOOL sync);
-
-CFStringRef WKCopyFoundationCacheDirectory(void);
-
-void WKDrawMediaFullscreenButton(CGContextRef context, CGRect rect, BOOL active);
-void WKDrawMediaMuteButton(CGContextRef context, CGRect rect, BOOL active);
-void WKDrawMediaPauseButton(CGContextRef context, CGRect rect, BOOL active);
-void WKDrawMediaPlayButton(CGContextRef context, CGRect rect, BOOL active);
-void WKDrawMediaSeekBackButton(CGContextRef context, CGRect rect, BOOL active);
-void WKDrawMediaSeekForwardButton(CGContextRef context, CGRect rect, BOOL active);
-void WKDrawMediaSliderTrack(CGContextRef context, CGRect rect, float percentLoaded);
-void WKDrawMediaSliderThumb(CGContextRef context, CGRect rect, BOOL active);
-void WKDrawMediaUnMuteButton(CGContextRef context, CGRect rect, BOOL active);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/WebKitLibraries/libWebCoreSQLite3.a b/WebKitLibraries/libWebCoreSQLite3.a
deleted file mode 100644
index 2e175e2..0000000
--- a/WebKitLibraries/libWebCoreSQLite3.a
+++ /dev/null
Binary files differ
diff --git a/WebKitLibraries/libWebKitSystemInterfaceLeopard.a b/WebKitLibraries/libWebKitSystemInterfaceLeopard.a
deleted file mode 100644
index d1e7871..0000000
--- a/WebKitLibraries/libWebKitSystemInterfaceLeopard.a
+++ /dev/null
Binary files differ
diff --git a/WebKitLibraries/libWebKitSystemInterfaceTiger.a b/WebKitLibraries/libWebKitSystemInterfaceTiger.a
deleted file mode 100644
index 0b30d6a..0000000
--- a/WebKitLibraries/libWebKitSystemInterfaceTiger.a
+++ /dev/null
Binary files differ
diff --git a/WebKitLibraries/win/include/SafariTheme/SafariThemeConstants.h b/WebKitLibraries/win/include/SafariTheme/SafariThemeConstants.h
deleted file mode 100644
index e21d6ae..0000000
--- a/WebKitLibraries/win/include/SafariTheme/SafariThemeConstants.h
+++ /dev/null
@@ -1 +0,0 @@
-// This is a placeholder header used in WebCore/rendering/RenderThemeSafari.h until a version of WebKitSupportLibrary containing this header is released
diff --git a/WebKitLibraries/win/include/WebKitSystemInterface/WebKitSystemInterface.h b/WebKitLibraries/win/include/WebKitSystemInterface/WebKitSystemInterface.h
deleted file mode 100644
index 9d3c969..0000000
--- a/WebKitLibraries/win/include/WebKitSystemInterface/WebKitSystemInterface.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef WebKitSystemInterface_h
-#define WebKitSystemInterface_h
-
-struct CGAffineTransform;
-struct CGPoint;
-struct CGSize;
-
-typedef const struct __CFData* CFDataRef;
-typedef const struct __CFString* CFStringRef;
-typedef struct CGColor* CGColorRef;
-typedef struct CGContext* CGContextRef;
-typedef unsigned short CGFontIndex;
-typedef struct CGFont* CGFontRef;
-typedef CGFontIndex CGGlyph;
-typedef wchar_t UChar;
-typedef struct _CFURLResponse* CFURLResponseRef;
-typedef struct OpaqueCFHTTPCookieStorage* CFHTTPCookieStorageRef;
-typedef struct _CFURLRequest* CFMutableURLRequestRef;
-typedef const struct _CFURLRequest* CFURLRequestRef;
-
-void wkSetFontSmoothingLevel(int type);
-int wkGetFontSmoothingLevel();
-uint32_t wkSetFontSmoothingStyle(CGContextRef cg, bool fontAllowsSmoothing);
-void wkRestoreFontSmoothingStyle(CGContextRef cg, uint32_t oldStyle);
-void wkSetCGContextFontRenderingStyle(CGContextRef, bool isSystemFont, bool isPrinterFont);
-void wkGetGlyphAdvances(CGFontRef, const CGAffineTransform&, bool isSystemFont, bool isPrinterFont, CGGlyph, CGSize& advance);
-void wkGetGlyphs(CGFontRef, const UChar[], CGGlyph[], size_t count);
-void wkSetUpFontCache(size_t s);
-void wkAddFontsInDirectory(CFStringRef);
-void wkAddFontsAtPath(CFStringRef);
-void wkAddFontsFromPlistRepresentation(CFDataRef);
-CFDataRef wkCreateFontsPlistRepresentation();
-
-void wkSetPatternBaseCTM(CGContextRef, CGAffineTransform);
-void wkSetPatternPhaseInUserSpace(CGContextRef, CGPoint phasePoint);
-
-void wkDrawFocusRing(CGContextRef, CGColorRef, float radius);
-
-CFDictionaryRef wkGetSSLCertificateInfo(CFURLResponseRef);
-void* wkGetSSLPeerCertificateData(CFDictionaryRef);
-CFHTTPCookieStorageRef wkGetDefaultHTTPCookieStorage();
-void wkSetCFURLRequestShouldContentSniff(CFMutableURLRequestRef, bool);
-CFStringRef wkCopyFoundationCacheDirectory();
-void wkSetClientCertificateInSSLProperties(CFMutableDictionaryRef, CFDataRef);
-
-bool wkCanAccessCFURLRequestHTTPBodyParts();
-CFArrayRef wkCFURLRequestCopyHTTPRequestBodyParts(CFURLRequestRef);
-void wkCFURLRequestSetHTTPRequestBodyParts(CFMutableURLRequestRef, CFArrayRef bodyParts);
-
-#endif // WebKitSystemInterface_h
diff --git a/WebKitLibraries/win/lib/WebKitSystemInterface.lib b/WebKitLibraries/win/lib/WebKitSystemInterface.lib
deleted file mode 100644
index 2d8df77..0000000
--- a/WebKitLibraries/win/lib/WebKitSystemInterface.lib
+++ /dev/null
Binary files differ
diff --git a/WebKitLibraries/win/lib/WebKitSystemInterface_debug.lib b/WebKitLibraries/win/lib/WebKitSystemInterface_debug.lib
deleted file mode 100644
index 9bc4e47..0000000
--- a/WebKitLibraries/win/lib/WebKitSystemInterface_debug.lib
+++ /dev/null
Binary files differ
diff --git a/WebKitLibraries/win/tools/WinTools.make b/WebKitLibraries/win/tools/WinTools.make
deleted file mode 100755
index c487e01..0000000
--- a/WebKitLibraries/win/tools/WinTools.make
+++ /dev/null
@@ -1,3 +0,0 @@
-install:
- xcopy "$(SRCROOT)\vsprops\*.vsprops" "$(DSTROOT)\AppleInternal\tools\vsprops" /e/v/i/h/y
- xcopy "$(SRCROOT)\scripts\*" "$(DSTROOT)\AppleInternal\tools\scripts" /e/v/i/h/y
diff --git a/WebKitLibraries/win/tools/scripts/PRODUCTVERSION b/WebKitLibraries/win/tools/scripts/PRODUCTVERSION
deleted file mode 100644
index 5186d07..0000000
--- a/WebKitLibraries/win/tools/scripts/PRODUCTVERSION
+++ /dev/null
@@ -1 +0,0 @@
-4.0
diff --git a/WebKitLibraries/win/tools/scripts/VERSION b/WebKitLibraries/win/tools/scripts/VERSION
deleted file mode 100644
index 9dbddfa..0000000
--- a/WebKitLibraries/win/tools/scripts/VERSION
+++ /dev/null
@@ -1 +0,0 @@
-528
diff --git a/WebKitLibraries/win/tools/scripts/auto-version.sh b/WebKitLibraries/win/tools/scripts/auto-version.sh
deleted file mode 100755
index c7f064c..0000000
--- a/WebKitLibraries/win/tools/scripts/auto-version.sh
+++ /dev/null
@@ -1,75 +0,0 @@
-#!/usr/bin/bash
-
-# Copyright (C) 2007 Apple Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
-# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-SRCPATH=`cygpath -u "$WEBKITLIBRARIESDIR\Tools\Scripts"`
-VERSIONPATH=`cygpath -u "$1"`
-VERSIONPATH=$VERSIONPATH/include
-VERSIONFILE=$VERSIONPATH/autoversion.h
-mkdir -p "$VERSIONPATH"
-
-PRODUCTVERSION=`cat "$SRCPATH/PRODUCTVERSION"`
-MAJORVERSION=`echo "$PRODUCTVERSION" | sed 's/\([^\.]*\)\.\([^.]*\)\(\.\([^.]*\)\)\?/\1/'`
-MINORVERSION=`echo "$PRODUCTVERSION" | sed 's/\([^\.]*\)\.\([^.]*\)\(\.\([^.]*\)\)\?/\2/'`
-TINYVERSION=`echo "$PRODUCTVERSION" | sed 's/\([^\.]*\)\.\([^.]*\)\(\.\([^.]*\)\)\?/\4/'`
-if [ "$TINYVERSION" == "" ]; then
- TINYVERSION=0
-fi
-
-if [ "$RC_PROJECTSOURCEVERSION" == "" ]; then
- PROPOSEDVERSION=$(cat "$SRCPATH/VERSION")
-else
- PROPOSEDVERSION="$RC_PROJECTSOURCEVERSION"
-fi
-
-BLDMAJORVERSION=`echo "$PROPOSEDVERSION" | sed 's/\([^\.]*\)\(\.\([^.]*\)\(\.\([^.]*\)\)\?\)\?/\1/'`
-BLDMINORVERSION=`echo "$PROPOSEDVERSION" | sed 's/\([^\.]*\)\(\.\([^.]*\)\(\.\([^.]*\)\)\?\)\?/\3/'`
-BLDVARIANTVERSION=`echo "$PROPOSEDVERSION" | sed 's/\([^\.]*\)\(\.\([^.]*\)\(\.\([^.]*\)\)\?\)\?/\5/'`
-if [ "$BLDMINORVERSION" == "" ]; then
- BLDMINORVERSION=0
-fi
-if [ "$BLDVARIANTVERSION" == "" ]; then
- BLDVARIANTVERSION=0
-fi
-SVNOPENSOURCEREVISION=`svn info | grep '^Revision' | sed 's/^Revision: \(.*\)/\1/'`
-
-BLDNMBR="$PROPOSEDVERSION"
-BLDNMBRSHORT="$BLDNMBR"
-
-if [ "$RC_PROJECTSOURCEVERSION" == "" ]; then
- BLDNMBRSHORT="$BLDNMBRSHORT+"
- BLDNMBR="$BLDNMBRSHORT $(whoami) - $(date) - r$SVNOPENSOURCEREVISION"
-fi
-
-cat > "$VERSIONFILE" <<EOF
-#define __VERSION_TEXT__ "$PRODUCTVERSION ($BLDNMBR)"
-#define __BUILD_NUMBER_SHORT__ "$BLDNMBRSHORT"
-#define __VERSION_MAJOR__ $MAJORVERSION
-#define __VERSION_MINOR__ $MINORVERSION
-#define __VERSION_TINY__ $TINYVERSION
-#define __BUILD_NUMBER_MAJOR__ $BLDMAJORVERSION
-#define __BUILD_NUMBER_MINOR__ $BLDMINORVERSION
-#define __BUILD_NUMBER_VARIANT__ $BLDVARIANTVERSION
-#define __SVN_REVISION__ $SVNREVISION
-EOF
diff --git a/WebKitLibraries/win/tools/vsprops/common.vsprops b/WebKitLibraries/win/tools/vsprops/common.vsprops
deleted file mode 100644
index c44099f..0000000
--- a/WebKitLibraries/win/tools/vsprops/common.vsprops
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="common"
- OutputDirectory="$(WebKitOutputDir)\bin"
- IntermediateDirectory="$(WebKitOutputDir)\obj\$(ProjectName)\$(ConfigurationName)"
- >
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/GS"
- PreprocessorDefinitions="WIN32;_WINDOWS;_WIN32_WINNT=0x500;_CRT_SECURE_NO_DEPRECATE;_SCL_SECURE_NO_DEPRECATE;__PRODUCTION__=0$(PRODUCTION);_HAS_EXCEPTIONS=0"
- ExceptionHandling="0"
- RuntimeTypeInfo="false"
- WarningLevel="4"
- WarnAsError="true"
- DebugInformationFormat="3"
- DisableSpecificWarnings="4018;4068;4099;4100;4127;4138;4189;4244;4275;4291;4305;4344;4355;4389;4503;4505;4510;4512;4610;4706;4800;4951;4952;4996;6011;6031;6211;6246;6255;6387"
- />
- <Tool
- Name="VCLibrarianTool"
- AdditionalOptions="/ignore:4221"
- OutputFile="$(OutDir)\$(ProjectName)$(WebKitConfigSuffix).lib"
- />
- <Tool
- Name="VCLinkerTool"
- LinkLibraryDependencies="false"
- AdditionalOptions="/SAFESEH /FIXED:NO /dynamicbase /ignore:4221"
- OutputFile="$(OutDir)\$(ProjectName)$(WebKitConfigSuffix).exe"
- AdditionalLibraryDirectories="&quot;$(WebKitOutputDir)\lib&quot;;&quot;$(WebKitLibrariesDir)\lib&quot;"
- GenerateDebugInformation="true"
- SubSystem="2"
- ImportLibrary="$(WebKitOutputDir)\lib\$(TargetName).lib"
- TargetMachine="1"
- />
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="__PRODUCTION__=0$(PRODUCTION)"
- WarnAsError="true"
- HeaderFileName="$(OutDir)\$(InputName).h"
- />
- <Tool
- Name="VCResourceCompilerTool"
- Culture="1033"
- AdditionalIncludeDirectories="&quot;$(IntDir)\include&quot;"
- />
-</VisualStudioPropertySheet>
diff --git a/WebKitLibraries/win/tools/vsprops/debug.vsprops b/WebKitLibraries/win/tools/vsprops/debug.vsprops
deleted file mode 100644
index 9ab8f20..0000000
--- a/WebKitLibraries/win/tools/vsprops/debug.vsprops
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="debug"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="2"
- />
- <Tool
- Name="VCLinkerTool"
- LinkIncremental="2"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <UserMacro
- Name="WebKitConfigSuffix"
- Value="_debug"
- PerformEnvironmentSet="true"
- />
- <UserMacro
- Name="LibraryConfigSuffix"
- Value=""
- PerformEnvironmentSet="true"
- />
- <UserMacro
- Name="WebKitDLLConfigSuffix"
- Value=""
- />
-</VisualStudioPropertySheet>
diff --git a/WebKitLibraries/win/tools/vsprops/debug_internal.vsprops b/WebKitLibraries/win/tools/vsprops/debug_internal.vsprops
deleted file mode 100644
index ef7674a..0000000
--- a/WebKitLibraries/win/tools/vsprops/debug_internal.vsprops
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="debug_internal"
- >
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="USE_DEBUG_SAFARI_THEME;DEBUG_INTERNAL"
- RuntimeLibrary="3"
- />
- <UserMacro
- Name="WebKitConfigSuffix"
- Value="_debug"
- PerformEnvironmentSet="true"
- />
- <UserMacro
- Name="LibraryConfigSuffix"
- Value="_debug"
- PerformEnvironmentSet="true"
- />
- <UserMacro
- Name="WebKitDLLConfigSuffix"
- Value="_debug"
- />
-</VisualStudioPropertySheet>
diff --git a/WebKitLibraries/win/tools/vsprops/release.vsprops b/WebKitLibraries/win/tools/vsprops/release.vsprops
deleted file mode 100644
index 109176d..0000000
--- a/WebKitLibraries/win/tools/vsprops/release.vsprops
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="release"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- PreprocessorDefinitions="NDEBUG"
- RuntimeLibrary="2"
- />
- <Tool
- Name="VCLinkerTool"
- LinkIncremental="1"
- StripPrivateSymbols="$(WebKitOutputDir)\public\sym\$(TargetName).pdb"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- OptimizeForWindows98="1"
- />
- <Tool
- Name="VCPreLinkEventTool"
- CommandLine="if not exist &quot;$(WebKitOutputDir)\public\sym&quot; mkdir &quot;$(WebKitOutputDir)\public\sym&quot;"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- />
- <UserMacro
- Name="WebKitConfigSuffix"
- Value=""
- PerformEnvironmentSet="true"
- />
- <UserMacro
- Name="LibraryConfigSuffix"
- Value=""
- PerformEnvironmentSet="true"
- />
- <UserMacro
- Name="WebKitDLLConfigSuffix"
- Value=""
- />
-</VisualStudioPropertySheet>
diff --git a/WebKitTools/BuildSlaveSupport/build-launcher-app b/WebKitTools/BuildSlaveSupport/build-launcher-app
deleted file mode 100755
index 117b008..0000000
--- a/WebKitTools/BuildSlaveSupport/build-launcher-app
+++ /dev/null
@@ -1,120 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
-# Copyright (C) 2006 Mark Rowe <opendarwin.org@bdash.net.nz>. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Creates the launcher WebKit.app with bundled frameworks.
-
-use strict;
-
-use FindBin;
-use lib "$FindBin::Bin/../Scripts";
-use webkitdirs;
-
-my @xcodeBuildArguments = XcodeOptions();
-my $nightlyLauncherTemplatePath = "$FindBin::Bin/../WebKitLauncher";
-my $nightlyLauncherStagingPath = productDir() . "/WebKit.app";
-
-sub buildNightlyLauncher
-{
- chdir($nightlyLauncherTemplatePath);
- system("xcodebuild", "clean", "-alltargets", @xcodeBuildArguments, @ARGV) == 0 or die "Failed cleaning WebKitLauncher project";
- system("xcodebuild", @xcodeBuildArguments, @ARGV) == 0 or die "Failed building WebKitLauncher project";
- chdirWebKit();
-}
-
-sub currentRevision
-{
- my $sourceDir = sourceDir();
- if (isSVNDirectory($sourceDir)) {
- return currentSVNRevision();
- } elsif (isGitDirectory($sourceDir)) {
- my $gitLog = `cd $sourceDir && LC_ALL=C git log --grep='git-svn-id: ' -n 1 | grep git-svn-id:`;
- (my $revision) = ($gitLog =~ m/ +git-svn-id: .+@(\d+) /g);
- return $revision;
- }
-}
-
-sub currentBranch
-{
- my $sourceDir = sourceDir();
- my ($url, $branch);
- if (isSVNDirectory($sourceDir)) {
- my $svnInfo = `LC_ALL=C svn info $sourceDir | grep URL:`;
- ($url) = ($svnInfo =~ m/URL: (.+)/g);
- } elsif (isGitDirectory($sourceDir)) {
- my $gitLog = `cd $sourceDir && LC_ALL=C git log --grep='git-svn-id: ' -n 1 | grep git-svn-id:`;
- ($url) = ($gitLog =~ m/ +git-svn-id: (.+)@\d+ /g);
- }
- ($branch) = ($url =~ m/\/webkit\/(trunk|branches\/[^\/]+)/);
- die "Unable to determine current SVN branch in $sourceDir" unless (defined $branch);
- $branch =~ s/^branches\///;
- return $branch;
-}
-
-sub copyNightlyLauncher
-{
- my $revision = currentRevision();
- my $branch = currentBranch();
-
- my $infoPlist = "$nightlyLauncherStagingPath/Contents/Info.plist";
- my $versionFile = "$nightlyLauncherStagingPath/Contents/Resources/VERSION";
- my $branchFile = "$nightlyLauncherStagingPath/Contents/Resources/BRANCH";
- my $data;
- open(IN, $infoPlist) or die "Couldn't open Info.plist in built application for reading";
- {
- undef $/;
- $data = <IN>;
- }
- close(IN);
- open(OUT, ">$infoPlist") or die "Couldn't open Info.plist in built application for writing";
- $data =~ s/VERSION/$revision/g;
- print OUT $data;
- close(OUT);
-
- open(OUT, ">$versionFile") or die "Couldn't open VERSION in built application for writing";
- print OUT "$revision\n";
- close(OUT);
-
- open(OUT, ">$branchFile") or die "Couldn't open BRANCH in built application for writing";
- print OUT "$branch\n";
- close(OUT);
-
- my @frameworks = ("JavaScriptCore", "JavaScriptGlue", "WebCore", "WebKit");
- for my $framework (@frameworks) {
- system("ditto", productDir() . "/$framework.framework", "$nightlyLauncherStagingPath/Contents/Resources/$framework.framework") == 0 or die "Failed copying $framework.framework into $nightlyLauncherStagingPath";
- }
-}
-
-my $b = currentBranch();
-my $r = currentRevision();
-print "Branch: ", $b, "\n";
-print "Revision: ", $r, "\n";
-
-chdirWebKit();
-buildNightlyLauncher();
-copyNightlyLauncher();
diff --git a/WebKitTools/BuildSlaveSupport/build-launcher-dmg b/WebKitTools/BuildSlaveSupport/build-launcher-dmg
deleted file mode 100755
index 4dce7fb..0000000
--- a/WebKitTools/BuildSlaveSupport/build-launcher-dmg
+++ /dev/null
@@ -1,118 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
-# Copyright (C) 2006 Mark Rowe <opendarwin.org@bdash.net.nz>. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Script used by build slaves to create a disk-image containing WebKit.app.
-
-use strict;
-
-use File::Basename;
-use Getopt::Long;
-use FindBin;
-use lib "$FindBin::Bin/../Scripts";
-use webkitdirs;
-
-my $nightlyLauncherStagingPath = productDir() . "/WebKit.app";
-my $droseraStagingPath = productDir() . "/DroseraLauncher.app";
-my $nightlyLauncherDiskImagePath;
-
-my $nightlyRemoteHost = 'webkit-nightlies@live.nightly.webkit.org';
-my $nightlyRemotePath = "/home/webkit-nightlies";
-my $nightlyRemoteLatestPath = "$nightlyRemotePath/update-latest.sh";
-
-sub buildDiskImage
-{
- my $revision = currentSVNRevision();
- my $productDir = productDir();
- $nightlyLauncherDiskImagePath = productDir() . "/WebKit-SVN-r$revision.dmg";
-
- print "Removing previous temp source directory (if any)...\n";
- `rm -rf /tmp/WebKitNightly`;
- die "Removing previous temp source directory failed" if $?;
-
- print "Making a new temp source directory...\n";
- `mkdir /tmp/WebKitNightly`;
- die "Making a new temp source directory failed" if $?;
-
- print "Copying WebKit.app to temp source directory...\n";
- `cp -R \"$nightlyLauncherStagingPath\" /tmp/WebKitNightly/WebKit.app`;
- die "Copying WebKit.app to temp source directory failed" if $?;
-
- print "Copying Drosera.app to temp source directory...\n";
- `cp -R \"$droseraStagingPath\" /tmp/WebKitNightly/Drosera.app`;
- die "Copying Drosera.app to temp source directory failed" if $?;
-
- print "Creating disk image...\n";
- `hdiutil create \"$nightlyLauncherDiskImagePath\" -ov -srcfolder /tmp/WebKitNightly -fs HFS+ -volname \"WebKit\"`;
- die "Creating disk image failed" if $?;
-
- print "Removing temp source directory...\n";
- `rm -rf /tmp/WebKitNightly`;
- die "Removing temp source directory failed" if $?;
-
- print "Compressing disk image...\n";
- system("mv", "-f", $nightlyLauncherDiskImagePath, "$nightlyLauncherDiskImagePath.uncompressed.dmg") == 0 or die "Renaming disk image failed";
- system("hdiutil", "convert", "-quiet", "$nightlyLauncherDiskImagePath.uncompressed.dmg", "-format", "UDBZ", "-imagekey", "zlib-level=9", "-o", "$nightlyLauncherDiskImagePath");
- die "Compressing disk image failed" if $?;
-
- unlink "$nightlyLauncherDiskImagePath.uncompressed.dmg";
-}
-
-sub uploadNightlyDiskImage
-{
- my $buildTag = shift(@_);
- my $nightlyRemoteDiskImagePath = "$nightlyRemotePath/builds/$buildTag/mac/" . basename($nightlyLauncherDiskImagePath);
- my $revision = currentSVNRevision();
- system("rsync", "-vP", $nightlyLauncherDiskImagePath, "$nightlyRemoteHost:$nightlyRemoteDiskImagePath") == 0 or die "Failed uploading disk image";
- system("ssh", $nightlyRemoteHost, $nightlyRemoteLatestPath, $buildTag, "mac", $nightlyRemoteDiskImagePath, $revision) == 0 or die "Failed linking disk image to latest";
-}
-
-sub uploadBuildSlaveDiskImage
-{
- my $remoteDiskImagePath = shift(@_) . basename($nightlyLauncherDiskImagePath);
- system("rsync", "-vP", $nightlyLauncherDiskImagePath, $remoteDiskImagePath) == 0 or die "Failed uploading disk image";
-}
-
-
-my $uploadTo;
-my $nightlyBuild = 0;
-my $buildTag = 'trunk';
-GetOptions('upload-to-host=s' => \$uploadTo,
- 'upload-as-nightly!' => \$nightlyBuild,
- 'tag=s' => \$buildTag);
-
-chdirWebKit();
-buildDiskImage($buildTag);
-
-if ($nightlyBuild) {
- uploadNightlyDiskImage($buildTag);
-} elsif ($uploadTo) {
- uploadBuildSlaveDiskImage($uploadTo);
-} else {
- print "Disk image left at $nightlyLauncherDiskImagePath\n";
-}
diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/Makefile b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/Makefile
deleted file mode 100644
index c3a935f..0000000
--- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/Makefile
+++ /dev/null
@@ -1,19 +0,0 @@
-# -*- makefile -*-
-
-# This is a simple makefile which lives in a buildmaster/buildslave
-# directory (next to the buildbot.tac file). It allows you to start/stop the
-# master or slave by doing 'make start' or 'make stop'.
-
-# The 'reconfig' target will tell a buildmaster to reload its config file.
-
-start:
- twistd --no_save -y buildbot.tac
-
-stop:
- kill `cat twistd.pid`
-
-reconfig:
- kill -HUP `cat twistd.pid`
-
-log:
- tail -f twistd.log
diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/buildbot.css b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/buildbot.css
deleted file mode 100644
index 81de950..0000000
--- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/buildbot.css
+++ /dev/null
@@ -1,108 +0,0 @@
-* {
- font-family: Verdana, Cursor;
- font-size: 10px;
- font-weight: bold;
-}
-
-a:link,a:visited,a:active {
- color: #444;
-}
-a:hover {
- color: #FFFFFF;
-}
-
-table {
- border-spacing: 1px 1px;
-}
-
-table td {
- padding: 3px 0px 3px 0px;
- text-align: center;
-}
-
-.Project {
- width: 100px;
-}
-
-.LastBuild, .Activity {
- width: 230px;
- padding: 0 0 0 4px;
-}
-
-td.Time {
- color: #000;
- border-bottom: 1px solid #aaa;
- background-color: #eee;
-}
-
-td.Activity, td.Change, td.Builder {
- color: #333333;
- background-color: #CCCCCC;
-}
-
-td.Change {
- border-radius: 5px;
- -webkit-border-radius: 5px;
-}
-td.Event {
- color: #777;
- background-color: #ddd;
- border-radius: 5px;
- -webkit-border-radius: 5px;
-}
-
-td.Activity {
- border-top-left-radius: 10px;
- -webkit-border-top-left-radius: 10px;
- min-height: 20px;
- padding: 8px 0 8px 0;
-}
-
-td.idle, td.waiting, td.offline, td.building {
- border-top-left-radius: 0px;
- -webkit-border-top-left-radius: 0px;
-}
-
-.LastBuild {
- border-top-left-radius: 5px;
- -webkit-border-top-left-radius: 5px;
- border-top-right-radius: 5px;
- -webkit-border-top-right-radius: 5px;
-}
-
-/* LastBuild, BuildStep states */
-.success {
- color: #FFFFFF;
- background-color: #8fdf5f;
-}
-
-.failure {
- color: #FFFFFF;
- background-color: #e98080;
-}
-
-.warnings {
- color: #FFFFFF;
- background-color: #ffc343;
-}
-
-.exception, td.offline {
- color: #FFFFFF;
- background-color: #e0b0ff;
-}
-
-.start,.running, td.building {
- color: #666666;
- background-color: #fffc6c;
-}
-
-.start {
- border-bottom-left-radius: 10px;
- -webkit-border-bottom-left-radius: 10px;
- border-bottom-right-radius: 10px;
- -webkit-border-bottom-right-radius: 10px;
-}
-
-td.Project a:hover, td.start a:hover {
- color: #000;
-}
diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/buildbot.tac b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/buildbot.tac
deleted file mode 100644
index f66e068..0000000
--- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/buildbot.tac
+++ /dev/null
@@ -1,10 +0,0 @@
-
-from twisted.application import service
-from buildbot.master import BuildMaster
-
-basedir = r'/home/mrowe/sites/build.webkit.org/buildbot'
-configfile = r'master.cfg'
-
-application = service.Application('buildmaster')
-BuildMaster(basedir, configfile).setServiceParent(application)
-
diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/master.cfg b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/master.cfg
deleted file mode 100644
index ea7966a..0000000
--- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/master.cfg
+++ /dev/null
@@ -1,22 +0,0 @@
-# -*- python -*-
-
-import os
-from twisted.web import static
-static.File.contentTypes = static.loadMimeTypes(['/etc/mime.types', os.path.join(basedir, 'mime.types')])
-
-from buildbot.changes.pb import PBChangeSource
-import webkit
-reload(webkit)
-
-c = BuildmasterConfig = {}
-
-c['slaves'] = webkit.auth.getSlaveAuthenticationDetails()
-c['change_source'] = [PBChangeSource(prefix="trunk")]
-c['builders'] = webkit.builders.getBuilders()
-c['schedulers'] = webkit.schedulers.getSchedulers(c['builders'])
-c['status'] = webkit.status.getStatusListeners()
-
-c['slavePortnum'] = 9989
-c['projectName'] = "WebKit"
-c['projectURL'] = "http://webkit.org/"
-c['buildbotURL'] = "http://build.webkit.org/"
diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/__init__.py b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/__init__.py
deleted file mode 100644
index f81fcae..0000000
--- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/__init__.py
+++ /dev/null
@@ -1,5 +0,0 @@
-from webkit import auth, status, builders, schedulers
-reload(auth)
-reload(status)
-reload(builders)
-reload(schedulers)
diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/auth.py b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/auth.py
deleted file mode 100644
index b182e16..0000000
--- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/auth.py
+++ /dev/null
@@ -1,9 +0,0 @@
-from buildbot.buildslave import BuildSlave
-
-def getSlaveAuthenticationDetails():
- def createBuildSlave((name, password)):
- return BuildSlave(name, password, max_builds=1)
- return map(createBuildSlave, _getSlaveAuthenticationDetails())
-
-def _getSlaveAuthenticationDetails():
- return [("slave-name", "password")]
diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/basesteps.py b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/basesteps.py
deleted file mode 100644
index 8bba881..0000000
--- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/basesteps.py
+++ /dev/null
@@ -1,51 +0,0 @@
-from buildbot.steps import shell, source
-import os
-
-
-def buildStepWithDefaultTimeout(klass, default_timeout=75*60):
- class Step(klass):
- timeout = default_timeout
- def __init__(self, *args, **kwargs):
- kwargs['timeout'] = self.timeout
- klass.__init__(self, *args, **kwargs)
-
- return Step
-
-
-Test = buildStepWithDefaultTimeout(shell.Test)
-Compile = buildStepWithDefaultTimeout(shell.Compile)
-ShellCommand = buildStepWithDefaultTimeout(shell.ShellCommand)
-SVN = buildStepWithDefaultTimeout(source.SVN)
-
-
-class UploadCommand:
- def initializeForUpload(self):
- try:
- try:
- umask = os.umask(0)
- os.makedirs(self.getDestinationPath(), 042770)
- except OSError, e:
- if e.errno != 17:
- raise
- finally:
- os.umask(umask)
-
- def getDestinationPath(self):
- return "/home/buildresults%s" % (self.getURLPath(), )
-
- def getRemotePath(self):
- return "buildresults@build.webkit.org:%s" % (self.getDestinationPath(), )
-
- def getURLPath(self):
- return '/results/%s/%s/' % (self.getBuild().builder.name, self.getBuild().getProperty("buildnumber"), )
-
- def getBuild(self):
- return self.build
-
-
- def getText(self, cmd, results):
- return self.getText2(cmd, results)
-
- def getText2(self, cmd, results):
- return ['<a href="%s">%s</a>' % (self.getURLPath(), self.name)]
-
diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/builders.py b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/builders.py
deleted file mode 100644
index b4e087e..0000000
--- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/builders.py
+++ /dev/null
@@ -1,35 +0,0 @@
-from webkit.factories import *
-from buildbot import locks
-
-# There are four build slaves that take care of the majority of builds, with two other specialist slaves at Apple
-# Slave 1 isn older G4 PowerMac dedicated to the PLT builds, as it needs extra configuration
-# Slave 2 is a Windows PC dedicated to the Windows builds
-# Slaves 3 and 4 are older G4 PowerMacs with relatively low amounts of RAM which leads to insanely slow leaks tests
-# Slaves 4 and 5 are newer G5 PowerMacs with ATI graphics cards that lead to kernel panics during pixel tests
-
-nonATIPowerPCBuilders = ['apple-slave-%d' % i for i in (3, 4)]
-ATIPowerPCBuilders = ['apple-slave-%d' % i for i in (1, 5, 6)]
-allPowerPCBuilders = nonATIPowerPCBuilders + ATIPowerPCBuilders
-allIntelBuilders = ['bdash-slave-1', 'bdash-slave-2']
-
-_builders = [('post-commit-powerpc-mac-os-x', StandardBuildFactory, allPowerPCBuilders),
- ('post-commit-intel-mac-os-x', StandardBuildFactory, allIntelBuilders),
- ('post-commit-leaks-powerpc-mac-os-x', LeakBuildFactory, allPowerPCBuilders),
- ('post-commit-leaks-intel-mac-os-x', LeakBuildFactory, allIntelBuilders),
-# ('page-layout-test-mac-os-x', PageLoadTestBuildFactory, ['apple-slave-1']),
-# ('post-commit-pixel-powerpc-mac-os-x', PixelTestBuildFactory, nonATIPowerPCBuilders),
- ('post-commit-win32', Win32BuildFactory, ['apple-slave-2']),
- ('post-commit-linux-qt', StandardBuildFactory, ['webtroll-slave-1']),
- ('post-commit-linux-gtk', GtkBuildFactory, ['zecke-slave-1']),
- ('periodic-powerpc-mac-os-x-no-svg', NoSVGBuildFactory, allPowerPCBuilders),
- ('periodic-intel-mac-os-x-coverage', CoverageDataBuildFactory, allIntelBuilders),
- ]
-
-def getBuilders():
- result = []
- for name, factory, slaves in _builders:
- result.append({'name': name,
- 'slavenames': slaves,
- 'builddir': name,
- 'factory': factory()})
- return result
diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/factories.py b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/factories.py
deleted file mode 100644
index 781375f..0000000
--- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/factories.py
+++ /dev/null
@@ -1,70 +0,0 @@
-from webkit.steps import *
-from buildbot.process import factory
-
-s = factory.s
-
-class BuildFactory(factory.BuildFactory):
- useProgress = False
- def __init__(self):
- factory.BuildFactory.__init__(self, [s(CheckOutSource)])
-
-class StandardBuildFactory(BuildFactory):
- def __init__(self):
- BuildFactory.__init__(self)
- self.steps.append(s(SetConfiguration, configuration="release"))
- self.steps.append(s(self.getCompileStep(), configuration="release"))
- self.steps.append(s(self.getJavaScriptCoreTestStep()))
- self.steps.append(s(LayoutTest))
- self.steps.append(s(UploadLayoutResults))
-# self.steps.append(s(UploadDiskImage))
-
- def getCompileStep(self):
- return CompileWebKit
-
- def getJavaScriptCoreTestStep(self):
- return JavaScriptCoreTest
-
-
-class NoSVGBuildFactory(StandardBuildFactory):
- def getCompileStep(self):
- return CompileWebKitNoSVG
-
-
-class PixelTestBuildFactory(BuildFactory):
- def __init__(self):
- BuildFactory.__init__(self)
- self.steps.append(s(SetConfiguration, configuration="release"))
- self.steps.append(s(CompileWebKit, configuration="release"))
- self.steps.append(s(PixelLayoutTest))
- self.steps.append(s(UploadLayoutResults))
-
-class LeakBuildFactory(BuildFactory):
- def __init__(self):
- BuildFactory.__init__(self)
- self.steps.append(s(SetConfiguration, configuration="debug"))
- self.steps.append(s(CompileWebKit, configuration="debug"))
- self.steps.append(s(JavaScriptCoreTest))
- self.steps.append(s(LeakTest))
- self.steps.append(s(UploadLayoutResults))
-# self.steps.append(s(UploadDiskImage))
-
-class PageLoadTestBuildFactory(BuildFactory):
- def __init__(self):
- BuildFactory.__init__(self)
- self.steps.append(s(CompileWebKit, configuration="release"))
- self.steps.append(s(PageLoadTest))
-
-Win32BuildFactory = StandardBuildFactory
-
-class GtkBuildFactory(StandardBuildFactory):
- def getCompileStep(self):
- return CompileWebKitGtk
-
- def getJavaScriptCoreTestStep(self):
- return JavaScriptCoreTestGtk
-
-class CoverageDataBuildFactory(BuildFactory):
- def __init__(self):
- BuildFactory.__init__(self)
- self.steps.append(s(GenerateCoverageData))
- self.steps.append(s(UploadCoverageData))
diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/schedulers.py b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/schedulers.py
deleted file mode 100644
index 11f9d41..0000000
--- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/schedulers.py
+++ /dev/null
@@ -1,15 +0,0 @@
-from buildbot.scheduler import Scheduler, Periodic
-
-def getSchedulers(builders):
- builder_names = map(lambda builder: builder['name'], builders)
- post_commit_builders = [name for name in builder_names if name.startswith('post-commit-')] + ['page-layout-test-mac-os-x']
- post_commit_builders = [name for name in post_commit_builders if name in builder_names]
- post_commit_builders.sort()
-
- periodic_builders = [b['name'] for b in builders if b['name'].startswith('periodic-')]
- periodic_builders.sort()
-
- post_commit = Scheduler(name="post-commit", branch=None, treeStableTimer=90, builderNames=post_commit_builders)
- periodic = Periodic("periodic", periodic_builders, 6 * 60 * 60)
-
- return [post_commit, periodic]
diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/status.py b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/status.py
deleted file mode 100644
index ad5519e..0000000
--- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/status.py
+++ /dev/null
@@ -1,19 +0,0 @@
-from buildbot.status import html, mail, words
-
-web = html.WebStatus(http_port=8010)
-
-allBuildsEmail = mail.MailNotifier(fromaddr="buildbot@webkit.org",
- extraRecipients=["mark+webkit-builds@bdash.net.nz"],
- sendToInterestedUsers=False)
-breakageEmail = mail.MailNotifier(fromaddr="buildbot@webkit.org",
- lookup=mail.Domain("webkit.org"),
- mode="failing")
-
-IRC = words.IRC(host="irc.freenode.net",
- nick="webkit-build",
- channels=["#webkit-build"],
-# announceAllBuilds=True
- )
-
-def getStatusListeners():
- return [web, allBuildsEmail, breakageEmail, IRC]
diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/steps.py b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/steps.py
deleted file mode 100644
index c1933a3..0000000
--- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/webkit/steps.py
+++ /dev/null
@@ -1,220 +0,0 @@
-from webkit.basesteps import ShellCommand, SVN, Test, Compile, UploadCommand
-from buildbot.status.builder import SUCCESS, FAILURE, WARNINGS
-
-class CheckOutSource(SVN):
- svnurl = "http://svn.webkit.org/repository/webkit/trunk"
- mode = "update"
- def __init__(self, *args, **kwargs):
- SVN.__init__(self, svnurl=self.svnurl, mode=self.mode, *args, **kwargs)
-
-class SetConfiguration(ShellCommand):
- command = ["./WebKitTools/Scripts/set-webkit-configuration"]
-
- def __init__(self, *args, **kwargs):
- configuration = kwargs.pop('configuration')
- self.command = self.command + ['--' + configuration]
- self.name = "set-configuration-%s" % (configuration, )
- self.description = ["set configuration %s" % (configuration, )]
- self.descriptionDone = ["set configuration %s" % (configuration, )]
- ShellCommand.__init__(self, *args, **kwargs)
-
-
-class LayoutTest(Test):
- name = "layout-test"
- description = ["layout-tests running"]
- descriptionDone = ["layout-tests"]
- command = ["./WebKitTools/Scripts/run-webkit-tests", "--no-launch-safari", "--no-new-test-results", "--results-directory", "layout-test-results"]
-
- def commandComplete(self, cmd):
- Test.commandComplete(self, cmd)
-
- logText = cmd.logs['stdio'].getText()
- incorrectLayoutLines = [line for line in logText.splitlines() if line.find('had incorrect layout') >= 0 or (line.find('test case') >= 0 and line.find(' crashed') >= 0)]
- if incorrectLayoutLines:
- self.incorrectLayoutLines = incorrectLayoutLines
- else:
- self.incorrectLayoutLines = None
-
- def getText(self, cmd, results):
- return self.getText2(cmd, results)
-
- def getText2(self, cmd, results):
- if results != SUCCESS and self.incorrectLayoutLines:
- return self.incorrectLayoutLines
-
- return [self.name]
-
-
-class JavaScriptCoreTest(Test):
- name = "jscore-test"
- description = ["jscore-tests running"]
- descriptionDone = ["jscore-tests"]
- command = ["./WebKitTools/Scripts/run-javascriptcore-tests"]
- logfiles = {'results': 'JavaScriptCore/tests/mozilla/actual.html'}
-
- def commandComplete(self, cmd):
- Test.commandComplete(self, cmd)
-
- logText = cmd.logs['stdio'].getText()
- statusLines = [line for line in logText.splitlines() if line.find('regression') >= 0 and line.find(' found.') >= 0]
- if statusLines and statusLines[0].split()[0] != '0':
- self.regressionLine = statusLines[0]
- else:
- self.regressionLine = None
-
- def evaluateCommand(self, cmd):
- if cmd.rc != 0:
- return FAILURE
-
- if self.regressionLine:
- return FAILURE
-
- return SUCCESS
-
- def getText(self, cmd, results):
- return self.getText2(cmd, results)
-
- def getText2(self, cmd, results):
- if results != SUCCESS and self.regressionLine:
- return [self.name, self.regressionLine]
-
- return [self.name]
-
-class PixelLayoutTest(LayoutTest):
- name = "pixel-layout-test"
- description = ["pixel-layout-tests running"]
- descriptionDone = ["pixel-layout-tests"]
- command = LayoutTest.command + ["--pixel"]
-
-
-class LeakTest(Test):
- name = "leak-test"
- description = ["leak-tests running"]
- descriptionDone = ["leak-tests"]
- command = ["./WebKitTools/Scripts/run-webkit-tests", "--no-launch-safari", "--leaks", "--results-directory", "layout-test-results"]
-
- def commandComplete(self, cmd):
- Test.commandComplete(self, cmd)
-
- logText = cmd.logs['stdio'].getText()
- lines = logText.splitlines()
- self.totalLeakLines = [line for line in lines if line.find('total leaks found!') >= 0]
- self.totalLeakLines += [line for line in lines if line.find('LEAK: ') >= 0]
- self.totalLeakLines = [' '.join(x.split()[1:]) for x in self.totalLeakLines]
- self.totalLeakLines += [line for line in lines if line.find('test case') >= 0 and line.find('crashed') >= 0]
-
-
- def evaluateCommand(self, cmd):
- if cmd.rc != 0:
- return FAILURE
-
- if self.totalLeakLines:
- return FAILURE
-
- return SUCCESS
-
- def getText(self, cmd, results):
- return self.getText2(cmd, results)
-
- def getText2(self, cmd, results):
- if results != SUCCESS and self.totalLeakLines:
- return self.totalLeakLines
- return [self.name]
-
-
-class UploadLayoutResults(UploadCommand, ShellCommand):
- name = "upload-results"
- description = ["uploading results"]
- descriptionDone = ["uploaded-results"]
- command = "echo Disabled for now"
-
- def __init__(self, *args, **kwargs):
- ShellCommand.__init__(self, *args, **kwargs)
-
- def setBuild(self, build):
- ShellCommand.setBuild(self, build)
- self.initializeForUpload()
-
- self.command = '''\
- if [[ -d layout-test-results ]]; then \
- find layout-test-results -type d -print0 | xargs -0 chmod ug+rx; \
- find layout-test-results -type f -print0 | xargs -0 chmod ug+r; \
- rsync -rlvzP --rsync-path="/home/buildresults/bin/rsync" layout-test-results/ %s && rm -rf layout-test-results; \
- fi; \
- CRASH_LOG=~/Library/Logs/CrashReporter/DumpRenderTree*.crash*; \
- if [[ -f $(ls -1 $CRASH_LOG | head -n 1 ) ]]; then \
- chmod ug+r $CRASH_LOG; \
- rsync -rlvzP --rsync-path="/home/buildresults/bin/rsync" $CRASH_LOG %s && rm -rf $CRASH_LOG; \
- fi;''' % (self.getRemotePath(), self.getRemotePath())
-
- self.addFactoryArguments(command=self.command)
-
-
-class CompileWebKit(Compile):
- command = ["./WebKitTools/Scripts/build-webkit", "--no-color"]
- env = {'WEBKITSUPPORTLIBRARIESZIPDIR': 'C:\\cygwin\\home\\buildbot'}
- def __init__(self, *args, **kwargs):
- configuration = kwargs.pop('configuration')
-
- self.name = "compile-" + configuration
- self.description = ["compiling " + configuration]
- self.descriptionDone = ["compiled " + configuration]
-
- Compile.__init__(self, *args, **kwargs)
-
-
-class CompileWebKitNoSVG(CompileWebKit):
- command = 'rm -rf WebKitBuild && ./WebKitTools/Scripts/build-webkit --no-svg --no-color'
-
-class CompileWebKitGtk(CompileWebKit):
- command = CompileWebKit.command + ['--gtk']
-
-class JavaScriptCoreTestGtk(JavaScriptCoreTest):
- command = JavaScriptCoreTest.command + ['--gtk']
-
-class InstallWin32Dependencies(ShellCommand):
- description = ["installing Windows dependencies"]
- descriptionDone = ["installed Windows dependencies"]
- command = ["WebKitTools/Scripts/update-webkit-auxiliary-libs"]
-
-
-# class UploadDiskImage(UploadCommand, ShellCommand):
-# description = ["uploading disk image"]
-# descriptionDone = ["uploaded disk image"]
-# name = "upload-disk-image"
-
-# def __init__(self, *args, **kwargs):
-# UploadCommand.__init__(self, *args, **kwargs)
-# self.command = 'umask 002 && ./WebKitTools/BuildSlaveSupport/build-launcher-app && ./WebKitTools/BuildSlaveSupport/build-launcher-dmg --upload-to-host %s' % (self.getRemotePath(), )
-# ShellCommand.__init__(self, *args, **kwargs)
-
-class GenerateCoverageData(Compile):
- command = ["./WebKitTools/Scripts/generate-coverage-data"]
- description = ["generating coverage data"]
- descriptionDone = ["generated coverage data"]
-
-
-class UploadCoverageData(UploadCommand, ShellCommand):
- name = "upload-coverage-data"
- description = ["uploading coverage data"]
- descriptionDone = ["uploaded-coverage-data"]
- command = "echo Disabled for now"
-
- def __init__(self, *args, **kwargs):
- ShellCommand.__init__(self, *args, **kwargs)
-
- def setBuild(self, build):
- ShellCommand.setBuild(self, build)
- self.initializeForUpload()
-
- self.command = '''\
- if [[ -d WebKitBuild/Coverage/html ]]; then \
- find WebKitBuild/Coverage/html -type d -print0 | xargs -0 chmod ug+rx; \
- find WebKitBuild/Coverage/html -type f -print0 | xargs -0 chmod ug+r; \
- rsync -rlvzP --rsync-path="/home/buildresults/bin/rsync" WebKitBuild/Coverage/html/ %s && rm -rf WebKitBuild/Coverage/html; \
- fi;''' % (self.getRemotePath(), )
-
- self.addFactoryArguments(command=self.command)
-
- def getURLPath(self):
- return "/results/code-coverage/"
diff --git a/WebKitTools/BuildSlaveSupport/run-performance-tests b/WebKitTools/BuildSlaveSupport/run-performance-tests
deleted file mode 100755
index 5d6ea44..0000000
--- a/WebKitTools/BuildSlaveSupport/run-performance-tests
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Script used by WebKit build slave to kick off performance tests.
-
-use strict;
-
-use FindBin;
-use lib "$FindBin::Bin/../Scripts";
-use webkitdirs;
-
-use Getopt::Long;
-use IO::Socket;
-my $shouldPrebuild = 1;
-
-my $perfMaster = "webkit-build-1.local";
-my $perfSlave = "webkit-build-2.local";
-my $slaveUser = "buildbot";
-my $reportPort = 54481; # Something that looks sorta like SAFARI
-my $slaveDirectory = "/ToTest";
-
-my $buildDirectory = determineConfigurationProductDir();
-
-my $userAndHost = $slaveUser . "@" . $perfSlave;
-my $resultsUploadDestination;
-
-GetOptions('upload-results=s' => \$resultsUploadDestination);
-
-print "Copying built frameworks to PLT slave...\n";
-my @frameworks = ("$buildDirectory/JavaScriptCore.framework", "$buildDirectory/WebCore.framework", "$buildDirectory/WebKit.framework");
-die "Failed to copy to slave\n" unless (system("rsync", "-avz", @frameworks, "$userAndHost:$slaveDirectory") == 0);
-
-print "Opening reponse port for PLT slave...\n";
-my $sock = new IO::Socket::INET(LocalHost => $perfMaster,
- LocalPort => $reportPort,
- Proto => 'tcp',
- Listen => 1,
- Reuse => 1);
-die "Could not create socket for port $reportPort: $!\n" unless $sock;
-
-print "Starting performance tests on PLT slave...\n";
-die "Failed to start slave!\n" unless (system("ssh", $userAndHost, "autovicki", $slaveDirectory, "--safari", "$slaveDirectory/Safari.app", "--count", 5, "--clean-exit", "--webkit-revision", currentSVNRevision(), "--show-results", "send-completed-results.command") == 0);
-
-print "Waiting for PLT slave to respond...\n";
-my $new_sock = $sock->accept();
-while(<$new_sock>) {
- print $_;
-}
-close($sock);
-
-if ($resultsUploadDestination) {
- print "Uploading results to $resultsUploadDestination\n";
- die "Failed to upload xml results file." unless (system("scp", "$userAndHost:/Results/PerformanceReportSummary.xml", $resultsUploadDestination) == 0);
- die "Failed to upload svg results file." unless (system("scp", "$userAndHost:/Results/PerformanceGraph.svg", $resultsUploadDestination) == 0);
-}
diff --git a/WebKitTools/CLWrapper/CLWrapper.cpp b/WebKitTools/CLWrapper/CLWrapper.cpp
deleted file mode 100644
index 7d41f2b..0000000
--- a/WebKitTools/CLWrapper/CLWrapper.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-// CLWrapper.cpp : Calls the perl script parallelcl to perform parallel compilation
-
-#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
-#include <process.h>
-#include <stdio.h>
-#include <string>
-#include <windows.h>
-
-using namespace std;
-
-int wmain(int argc, wchar_t* argv[])
-{
- const int numArgs = 3;
-
-#ifndef NDEBUG
- fwprintf(stderr, L"######### im in ur IDE, compiling ur c0des ########\n");
-#endif
-
- wstring** args = new wstring*[numArgs];
-
- args[0] = new wstring(L"sh");
- args[1] = new wstring(L"-c");
-
- args[2] = new wstring(L"\"parallelcl");
- for (int i = 1; i < argc; ++i) {
- args[2]->append(L" '");
- args[2]->append(argv[i]);
- if (i < argc - 1)
- args[2]->append(L"' ");
- else
- args[2]->append(L"'");
- }
- args[2]->append(L"\"");
-
- for (unsigned i = 0; i < args[2]->length(); i++) {
- if (args[2]->at(i) == '\\')
- args[2]->at(i) = '/';
- }
-
- wchar_t** newArgv = new wchar_t*[numArgs + 1];
- for (int i = 0; i < numArgs; i++)
- newArgv[i] = (wchar_t*)args[i]->c_str();
-
- newArgv[numArgs] = 0;
-
-#ifndef NDEBUG
- fwprintf(stderr, L"exec(\"%s\", \"%s\", \"%s\", \"%s\")\n", L"sh", newArgv[0], newArgv[1], newArgv[2]);
-#endif
-
- return _wspawnvp(_P_WAIT, L"sh", newArgv);
-}
-
diff --git a/WebKitTools/CLWrapper/CLWrapper.sln b/WebKitTools/CLWrapper/CLWrapper.sln
deleted file mode 100644
index add0423..0000000
--- a/WebKitTools/CLWrapper/CLWrapper.sln
+++ /dev/null
@@ -1,20 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CLWrapper", "CLWrapper.vcproj", "{230BF635-9BD8-434A-8857-0B096EBC7233}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {230BF635-9BD8-434A-8857-0B096EBC7233}.Debug|Win32.ActiveCfg = Debug|Win32
- {230BF635-9BD8-434A-8857-0B096EBC7233}.Debug|Win32.Build.0 = Debug|Win32
- {230BF635-9BD8-434A-8857-0B096EBC7233}.Release|Win32.ActiveCfg = Release|Win32
- {230BF635-9BD8-434A-8857-0B096EBC7233}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/WebKitTools/CLWrapper/CLWrapper.vcproj b/WebKitTools/CLWrapper/CLWrapper.vcproj
deleted file mode 100644
index 668a874..0000000
--- a/WebKitTools/CLWrapper/CLWrapper.vcproj
+++ /dev/null
@@ -1,199 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="CLWrapper"
- ProjectGUID="{230BF635-9BD8-434A-8857-0B096EBC7233}"
- RootNamespace="CLWrapper"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="..\vcbin"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="1"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- OutputFile="$(OutDir)\cl.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="..\vcbin"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="1"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- OutputFile="$(OutDir)\cl.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
- >
- <File
- RelativePath=".\CLWrapper.cpp"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
- >
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
- >
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/WebKitTools/ChangeLog b/WebKitTools/ChangeLog
deleted file mode 100644
index 683724c..0000000
--- a/WebKitTools/ChangeLog
+++ /dev/null
@@ -1,20894 +0,0 @@
-2008-11-03 Pierre-Olivier Latour <pol@apple.com>
-
- Reviewed by Dan Bernstein.
-
- Fixed the override of the "AppleScrollBarVariant" system setting to also work with HIToolbox.
-
- https://bugs.webkit.org/show_bug.cgi?id=22054
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (setDefaultsToConsistentValuesForTesting):
-
-2008-10-31 Cameron Zwarich <zwarich@apple.com>
-
- Not reviewed.
-
- * Scripts/do-webcore-rename:
-
- Add some renames to contemplate for the future.
-
-2008-10-31 Darin Adler <darin@apple.com>
-
- Requested by Mark Rowe.
-
- * Scripts/check-for-global-initializers: s/Web Kit/WebKit/.
-
-2008-10-31 David Kilzer <ddkilzer@apple.com>
-
- Bug 21997: prepare-ChangeLog should filter out ChangeLog files
-
- <https://bugs.webkit.org/show_bug.cgi?id=21997>
-
- Reviewed by Darin Adler.
-
- * Scripts/prepare-ChangeLog:
- (generateFileList): Don't add ChangeLog files to %{$functionLists}.
- This prevents them from showing up in the new ChangeLog entry. They
- were already excluded from @{$changedFiles}.
-
-2008-10-30 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Jon Homeycutt.
-
- Explicitly default to building for only the native architecture in debug and release builds.
-
- * DumpRenderTree/mac/Configurations/DebugRelease.xcconfig:
-
-2008-10-30 Pierre-Olivier Latour <pol@apple.com>
-
- Reviewed by Dan Bernstein.
-
- Fixed 64 bit build failure.
-
- * DumpRenderTree/mac/PixelDumpSupportMac.mm:
- (setupMainDisplayColorProfile):
- (createBitmapContextFromWebView):
-
-2008-10-28 Alp Toker <alp@nuanti.com>
-
- Fix GTK DRT following build breakage in r37928.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (dump):
- (runTest):
- (main):
-
-2008-10-28 Alp Toker <alp@nuanti.com>
-
- Reviewed by Mark Rowe.
-
- Fix recently introduced double-free crashes in GTK DRT.
-
- LayoutTestController was made ref-counted in r36606 and Mac/Win DRT
- were updated to call ->deref() but GTK DRT was still deleting
- gLayoutTestController manually. This patch updates GTK to match the
- other ports and resolves the memory allocation issues.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (runTest):
-
-2008-10-28 Alp Toker <alp@nuanti.com>
-
- Reviewed by Mark Rowe.
-
- Fix GTK DRT hang when running the tests.
-
- Update output from the DRT tool to print an additional '#EOF' to match
- breaking changes that were made in r37434.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (dump):
-
-2008-10-28 Adele Peterson <adele@apple.com>
-
- Reviewed by Sam Weinig.
-
- Specify which Localizable.strings to update since we don't always want to update the file in the same
- directory where we're searching for the strings to localize.
-
- * Scripts/extract-localizable-strings:
- * Scripts/update-webkit-localizable-strings:
-
-2008-10-28 Timothy Hatcher <timothy@apple.com>
-
- Add support for enabling the profiler, so the profiling tests can continue
- work now that the profiler is not always enabled.
-
- https://bugs.webkit.org/show_bug.cgi?id=21927
-
- <rdar://problem/6211578> Make the JavaScript profiler opt-in, so it does
- not slow down JavaScript all the time
-
- Reviewed by Darin Adler and Kevin McCullough.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Make the editor use spaces.
- * DumpRenderTree/LayoutTestController.cpp:
- (setJavaScriptProfilingEnabledCallback): Added. Calls LayoutTestController::setJavaScriptProfilingEnabled.
- (LayoutTestController::staticFunctions): Added setJavaScriptProfilingEnabled to the script class.
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setJavaScriptProfilingEnabled): Stubbed out with a FIXME.
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetWebViewToConsistentStateBeforeTesting): Disables the developer extras and disables the profiler.
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setJavaScriptProfilingEnabled): Toggles the developer extras and profiler.
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting): Disables the developer extras and disables the profiler.
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setJavaScriptProfilingEnabled): Toggles the developer extras and profiler.
-
-2008-10-28 Pierre-Olivier Latour <pol@apple.com>
-
- Reviewed by Dan Bernstein
-
- Primary changes in DumpRenderTree:
- - Ensure font smoothing is disabled (this is also called LCD anti-aliasing and
- is different from regular font CG anti-aliasing) as font-smoothing settings
- depends on the display and can also be changed by the user
- - Use a new cleared buffer for each test instead of the reusing same one to
- avoid potential result corruption across tests
- - Can now receive the expected pixel hash as a suffix to the test path or
- url as "path'hash"
- - Make sure hash is computed in a endian-independent way
- - Improve the code that sets/restores the screen color profile
- - Make the code more cross-platformy with std::string goodness
- - Added an "on-screen" mode where the snapshot will take into account surfaces
- on the window (like OpenGL content): this uses the new CG APIs on 10.5 or
- reading from the display framebuffer on 10.4. This mode is not active by
- default for performance reason, but must be explicitly activated from the test
- file using the new "testOnscreen()" JS API.
-
- Primary changes in ImageDiff:
- - Provide a new comparison algorithm that is more tolerant to "acceptable"
- failures (i.e. very small differences in font rendering, which --threshold is
- not really good at handling)
- - Generate normalized intensity-only diff images
-
- Primary changes in run-webkit-tests:
- - Take advantage of hashes for pixel tests which makes them much faster by
- minimizing image comparisons
- - Removed repaint options as these should be set from within test files using
- JS API
- - Replaced "threshold" option in by "tolerance" expressed in percents
- - Added more logging when in "verbose" mode
-
- https://bugs.webkit.org/show_bug.cgi?id=21322
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/ForwardingHeaders/wtf/PassRefPtr.h: Copied from JavaScriptGlue/ForwardingHeaders/wtf/PassRefPtr.h.
- * DumpRenderTree/ForwardingHeaders/wtf/RefPtr.h: Copied from JavaScriptGlue/ForwardingHeaders/wtf/RefPtr.h.
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (testOnscreenCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::testOnscreen):
- (LayoutTestController::setTestOnscreen):
- (LayoutTestController::testPathOrURL):
- (LayoutTestController::expectedPixelHash):
- * DumpRenderTree/PixelDumpSupport.h:
- * DumpRenderTree/cg/ImageDiffCG.cpp:
- (strtof):
- (releaseMallocBuffer):
- (createDifferenceImage):
- (imageHasAlpha):
- (main):
- * DumpRenderTree/cg/PixelDumpSupportCG.cpp:
- (computeMD5HashStringForBitmapContext):
- (dumpWebViewAsPixelsAndCompareWithExpected):
- * DumpRenderTree/cg/PixelDumpSupportCG.h:
- (BitmapContext::createByAdoptingBitmapAndContext):
- (BitmapContext::~BitmapContext):
- (BitmapContext::cgContext):
- (BitmapContext::BitmapContext):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (shouldIgnoreWebCoreNodeLeaks):
- (setDefaultsToConsistentValuesForTesting):
- (crashHandler):
- (initializeGlobalsFromCommandLineOptions):
- (prepareConsistentTestingEnvironment):
- (dumpRenderTree):
- (sizeWebViewForCurrentTest):
- (dump):
- (runTest):
- * DumpRenderTree/mac/PixelDumpSupportMac.mm:
- (restoreMainDisplayColorProfile):
- (setupMainDisplayColorProfile):
- (createBitmapContextFromWebView):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (dump):
- (runTest):
- * DumpRenderTree/win/PixelDumpSupportWin.cpp:
- (getBitmapContextFromWebView):
- * Scripts/run-webkit-tests:
-
-2008-10-27 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix on Linux/GTK. Enable support for #include <JavaScriptCore/XYZ.h> style includes.
-
- * wx/build-wxwebkit:
-
-2008-10-24 Anders Carlsson <andersca@apple.com>
-
- Try fixing the 64-bit build.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.cpp:
- (testGetProperty):
-
-2008-10-24 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam Weinig.
-
- <rdar://problem/5440917> Support NPN_Construct
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (testCallback):
- Fix a memory leak.
-
- (testConstruct):
- New test method that treats it first argument as a constructor and invokes it with the rest of the arguments.
-
- (pluginInvoke):
- Handle testConstruct.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.cpp:
- (testGetProperty):
- Add objectPointer property.
-
- (testEnumerate):
- Only enumerate the two first properties.
-
- (testConstruct):
- Add a simple construct implementation that just returns the test object.
-
-2008-10-24 David Kilzer <ddkilzer@apple.com>
-
- Bug 21850: svn-apply and svn-unapply should preserve patch line endings
-
- <https://bugs.webkit.org/show_bug.cgi?id=21850>
-
- Reviewed by Adam Roben.
-
- * Scripts/svn-apply: Save end-of-line characters when stripping them
- off each line of a patch so that they may be restored after
- processing the line.
- * Scripts/svn-unapply: Ditto.
-
-2008-10-23 David Kilzer <ddkilzer@apple.com>
-
- Bug 21832: Fix scripts using 'new File::Temp' for Perl 5.10
-
- <https://bugs.webkit.org/show_bug.cgi?id=21832>
-
- Reviewed by Sam Weinig.
-
- * Scripts/bisect-builds: Use imported tempfile() from File::Temp
- instead of 'new File::Temp' to make the script work with Perl 5.10.
- * Scripts/sort-Xcode-project-file: Ditto.
-
-2008-10-22 Brady Eidson <beidson@apple.com>
-
- Reviewed by Adam Roben
-
- <rdar://6261773> - autocomplete="off" doesn't work on Windows
-
- Implement LayoutTestController::elementDoesAutoCompleteForElementWithId() on Windows
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
-
-2008-10-22 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: More renaming plans.
-
-2008-10-21 Steve Falkenburg <sfalken@apple.com>
-
- Exclude strings marked with UNLOCALIZED_STRING or UNLOCALIZED_LPCTSTR.
-
- * Scripts/extract-localizable-strings:
-
-2008-10-17 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Mark Rowe.
-
- - default to 1000 tests per dump tool instance again, now that CTI no longer causes
- excess different stack logs.
-
- (Also fix a small bug in my last change.)
-
- * Scripts/run-webkit-tests:
-
-2008-10-17 Stephanie Lewis <slewis@apple.com>
-
- Reviewed by Mark Rowe.
-
- Fix layout tests that use prologues and epilogues.
-
- * Scripts/run-webkit-tests:
-
-2008-10-17 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Mark Rowe.
-
- - make sure MallocStackLogging is only on for tools we want to
- leak check, not other random stuff as well.
-
- * Scripts/run-webkit-tests:
-
-2008-10-17 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Stephanie Lewis.
-
- - make run-webkit-tests --leaks default to 100 tests per run instead of 1000
-
- This should reduce or eliminate crashes on the buildbot due to
- running out of memory while stack logging.
-
- * Scripts/run-webkit-tests:
-
-2008-10-16 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Gtk build fix. Not reviewed.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setSmartInsertDeleteEnabled):
-
-2008-10-15 Glenn Wilson <gwilson@google.com>
-
- Added new method to allow tests to disable smart editing in the course of a test.
- This is a possible solution to bug .20655
-
- Reviewed by Tim Hatcher.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setSmartInsertDeleteEnabledCallback): new method
- (LayoutTestController::staticFunctions): added new method to static list of callbacks
- * DumpRenderTree/LayoutTestController.h: added signature of new method
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetWebViewToConsistentStateBeforeTesting): added state resetting
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setSmartInsertDeleteEnabled): added new method
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting): added state resetting
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setSmartInsertDeleteEnabled): added new method
-
-2008-10-14 Ada Chan <adachan@apple.com>
-
- Fix windows build.
-
- Reviewed by Sam Weinig.
-
- * DumpRenderTree/cg/PixelDumpSupportCG.cpp:
- * DumpRenderTree/config.h:
- * DumpRenderTree/win/DumpRenderTreeWin.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- * DumpRenderTree/win/UIDelegate.cpp:
-
-2008-10-13 Timothy Hatcher <timothy@apple.com>
-
- Make prepare-ChangeLog populate the changed functions for JavaScript files.
-
- https://bugs.webkit.org/show_bug.cgi?id=21567
-
- Reviewed by David Kilzer.
-
- * Scripts/prepare-ChangeLog:
- (get_function_line_ranges): Call get_function_line_ranges_for_javascript for
- files that end with ".js".
- (get_function_line_ranges_for_javascript): Find functions, anonymous functions
- and getters/setters.
-
-2008-10-14 Alp Toker <alp@nuanti.com>
-
- Reviewed by Sam Weinig.
-
- https://bugs.webkit.org/show_bug.cgi?id=16299
- Add a config.h file to DRT
-
- Add a config.h to DumpRenderTree and reduce use of DumpRenderTree.h as
- an ad-hoc config header.
-
- * DumpRenderTree/AccessibilityController.cpp:
- * DumpRenderTree/AccessibilityUIElement.cpp:
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/DumpRenderTree.h:
- * DumpRenderTree/GCController.cpp:
- * DumpRenderTree/LayoutTestController.cpp:
- * DumpRenderTree/WorkQueue.cpp:
- * DumpRenderTree/config.h: Added.
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- * DumpRenderTree/gtk/GCControllerGtk.cpp:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- * DumpRenderTree/gtk/WorkQueueItemGtk.cpp:
- * DumpRenderTree/win/AccessibilityControllerWin.cpp:
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- * DumpRenderTree/win/DumpRenderTree.cpp:
- * DumpRenderTree/win/DumpRenderTreeWin.h:
- * DumpRenderTree/win/EditingDelegate.cpp:
- * DumpRenderTree/win/EventSender.cpp:
- * DumpRenderTree/win/FrameLoadDelegate.cpp:
- * DumpRenderTree/win/GCControllerWin.cpp:
- * DumpRenderTree/win/MD5.cpp:
- * DumpRenderTree/win/PixelDumpSupportWin.cpp:
- * DumpRenderTree/win/PolicyDelegate.cpp:
- * DumpRenderTree/win/ResourceLoadDelegate.cpp:
- * DumpRenderTree/win/WorkQueueItemWin.cpp:
- * GNUmakefile.am:
-
-2008-10-13 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Beth Dakin.
-
- Added a method to get the links in a webpage
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (attributesOfDocumentLinksCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::getDocumentLinks):
- (AccessibilityUIElement::attributesOfDocumentLinks):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::getDocumentLinks):
- (AccessibilityUIElement::attributesOfDocumentLinks):
-
-2008-10-13 David Kilzer <ddkilzer@apple.com>
-
- Bug 21457: resolve-ChangeLogs should be able to operate on a git revision range
-
- <https://bugs.webkit.org/show_bug.cgi?id=21457>
-
- Reviewed by Adam.
-
- * Scripts/resolve-ChangeLogs: Added optional parameter to
- -f|--fix-merged switch to run the script on a revision range.
- Updated command-line validation checks.
- (findChangeLog): Fixed long-standing bug that should have used
- $_[0] instead of $_.
- (fixMergedChangeLog): Renamed to fixOneMergedChangeLog($). Updated
- to work when called from git filter-branch. It always restores a
- copy of the previous revision before reapplying the patch.
- (fixMergedChangeLogs): Added. Calls itself through git filter-branch
- to re-merge ChangeLog files across a revision range. Removes
- .git/refs/original directory on success.
- (parseFixMerged): Added. Custom method to parse the -f|--fix-merged
- switch.
- (removeChangeLogArguments): Added. Removes items from @ARGV when
- they are ChangeLog paths, and return a list of paths. This makes it
- easier to validate the command-line.
- (resolveChangeLog): Added. Extracted from main code block. Runs
- the traditional single-file merge algorithm.
- (usageAndExit): Added. Extracted from main code block. Prints
- usage statement and exits with error status.
-
-2008-10-12 Darin Adler <darin@apple.com>
-
- * Scripts/make-js-test-wrappers: Update exceptions list so the script
- won't overwrite files and mangle tests.
-
-2008-10-11 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Sam Weinig and Anders Carlsson.
-
- - update Mac DumpRenderTree to use the new WebView SPI for forcing the
- complex text code path
- - add --complex-text support to Windows DumpRenderTree
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dumpRenderTree):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (createWebViewAndOffscreenWindow):
- (main):
- * Scripts/run-webkit-tests:
-
-2008-10-09 Eric Seidel <eric@webkit.org>
-
- Reviewed by Oliver Hunt.
-
- https://bugs.webkit.org/show_bug.cgi?id=21498
-
- * Scripts/make-js-test-wrappers: ignore resources/shadow-offset.js
-
-2008-10-09 Cameron Zwarich <zwarich@apple.com>
-
- Not reviewed.
-
- Add StructureID.o to the exclusion list in the global initializers
- script to fix the Debug build.
-
- * Scripts/check-for-global-initializers:
-
-2008-10-08 Mark Rowe <mrowe@apple.com>
-
- Fix the Windows build after r37434.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (dump): Update code to approximate valid C++ syntax.
-
-2008-10-08 Timothy Hatcher <timothy@apple.com>
-
- Add SVGElementInstance to the list of exceptions that have
- global initializers in debug builds.
-
- Rubber-stamped by Mark Rowe.
-
- * Scripts/check-for-global-initializers: Add SVGElementInstance.o.
-
-2008-10-08 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Dan Bernstein
-
- Avoid disconnect between DRT and run-webkit-tests
- about whether to expect PNG dumps by having DRT always
- print two blocks terminated by #EOF, the second of which
- may be empty.
-
- https://bugs.webkit.org/show_bug.cgi?id=21483
-
- * DumpRenderTree/cg/PixelDumpSupportCG.cpp:
- (printPNG):
- (dumpWebViewAsPixelsAndCompareWithExpected):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dump):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (dump):
- * Scripts/run-webkit-tests:
-
-2008-10-07 Adam Roben <aroben@apple.com>
-
- Make sure short functions get included in ChangeLog output for git
- repositories
-
- Reviewed by Dave Kilzer.
-
- * Scripts/prepare-ChangeLog:
- (sub diffCommand): Pass -U0 to git diff so that each contiguous change
- will get its own chunk without any surrounding context.
- (sub extractLineRange): Use the line numbers from the chunk header
- without modifying them now that they're accurate.
-
-2008-10-04 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Tim Hatcher.
-
- Update check-for-weak-vtables to check only the final linked image for weak vtables.
- This gives more useful results than checking each object file independently.
-
- * Scripts/check-for-weak-vtables:
-
-2008-10-03 Pierre-Olivier Latour <pol@apple.com>
-
- Reviewed by Darin Adler
-
- Render images to RGBA8 bitmaps independently of platform endianness.
-
- Create image difference bitmap in reference image colorspace instead of device colorspace
- (which depends on the main display profile), so that no color matching happens.
-
- https://bugs.webkit.org/show_bug.cgi?id=21336
-
- * DumpRenderTree/cg/ImageDiffCG.cpp:
- (createDifferenceBitmap):
- (computePercentageDifferent):
- (compareImages):
-
-2008-10-02 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Darin Adler
-
- Fix hang when running with --pixel --reset, which occurs
- because DRT spews PNG data when the script does not expect it.
-
- https://bugs.webkit.org/show_bug.cgi?id=21323
-
- * Scripts/run-webkit-tests:
-
-2008-09-30 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Dan Bernstein.
-
- Add a leak counter for CachedResources since we've had two recent leaks involving them.
-
- * Scripts/check-for-global-initializers:
-
-2008-09-30 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Dan Bernstein.
-
- Fix many leaks seen on fast/backgrounds/svg-as-background-1.html.
-
- JavaScript wrappers were keeping DOM objects alive, which was leading to the SVG background image
- being kept alive in the memory cache past our last attempt to empty the cache prior to quitting.
- We need to empty the memory cache after forcing a JavaScript garbage collection to ensure that
- any live JavaScript wrappers are collected and their corresponding DOM objects have a chance to be
- torn down before we exit.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dumpRenderTree):
- (main):
-
-2008-09-30 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Dan Bernstein
-
- Don't run pixel comparison for text-only tests.
- https://bugs.webkit.org/show_bug.cgi?id=21124
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dump):
- * Scripts/run-webkit-tests:
-
-2008-09-29 Thiago Macieira <thiago.macieira@nokia.com>
-
- Reviewed by Simon.
-
- Changed copyright from Trolltech ASA to Nokia.
-
- Nokia acquired Trolltech ASA, assets were transferred on September 26th 2008.
-
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- * DumpRenderTree/qt/jsobjects.cpp:
- * DumpRenderTree/qt/jsobjects.h:
- * DumpRenderTree/qt/main.cpp:
- * DumpRenderTree/qt/testplugin.cpp:
- * DumpRenderTree/qt/testplugin.h:
-
-2008-09-28 David Kilzer <ddkilzer@apple.com>
-
- Bug 21185: resolve-ChangeLogs should be able to fix poorly merged ChangeLog entries after a git svn rebase
-
- <https://bugs.webkit.org/show_bug.cgi?id=21185>
-
- Reviewed by Adam.
-
- * Scripts/resolve-ChangeLogs: Added new -f|--fix-merge switch that
- will attempt to reapply the last commit to a ChangeLog file such
- that the ChangeLog entry appears at the top of the file.
- (findChangeLog): Added prototype and moved method below the exit
- statement.
- (fixMergedChangeLog): Added. Method to fix incorrectly merged
- ChangeLog entries.
-
-2008-09-27 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam Weinig.
-
- https://bugs.webkit.org/show_bug.cgi?id=21178
- <rdar://problem/6248651>
-
- Return the result value from getURL.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (getURL):
-
-2008-09-26 Matt Lilek <webkit@mattlilek.com>
-
- Reviewed by Tim Hatcher.
-
- Update FEATURE_DEFINES after ENABLE_CROSS_DOCUMENT_MESSAGING was removed.
-
- * Scripts/build-webkit:
-
-2008-09-26 Alice Liu <alice.liu@apple.com>
-
- Remove usage of atlstr.h and CString for VCExpress compatibility
-
- Reviewed by Stephanie Lewis.
-
- * record-memory-win/main.cpp:
- (ProcessArgs):
- (UseImage):
- (QueryContinuously):
- (OneQuery):
- (OneQueryMP):
-
-2008-09-26 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix. Update the version of libpng.
-
- * wx/install-unix-extras:
-
-2008-09-24 Sam Weinig <sam@webkit.org>
-
- Reviewed by Darin Adler.
-
- Fix for https://bugs.webkit.org/show_bug.cgi?id=21080
- <rdar://problem/6243534>
- Crash below Function.apply when using a runtime array as the argument list
-
- Add method to ObjCController to return a runtime array.
-
- * DumpRenderTree/mac/ObjCController.m:
- (+[ObjCController isSelectorExcludedFromWebScript:]):
- (+[ObjCController webScriptNameForSelector:]):
- (-[ObjCController testArray]):
-
-2008-09-24 Beth Dakin <bdakin@apple.com>
-
- Reviewed by Sam Weinig.
-
- Speculative build fix.
-
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::supportsPressAction):
-
-2008-09-23 Beth Dakin <bdakin@apple.com>
-
- Reviewed by Sam Weinig.
-
- This patch extends DumpRenderTree's AccessibilityController to ask
- if the focused element supports the press action.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (getSupportsPressActionCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::supportsPressAction):
-
-2008-09-22 Alice Liu <alice.liu@apple.com>
-
- Adding a stand-alone Windows console application to record a process's memory usage
-
- Reviewed by Steve Falkenburg.
-
- * record-memory-win: Added.
- * record-memory-win/main.cpp: Added.
- * record-memory-win/record-memory-win.vcproj: Added.
-
-2008-09-22 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Darin Adler.
-
- Support ability to get/set selected text ranges for text controls through AX.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (setSelectedTextRangeCallback):
- (getSelectedTextRangeCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::attributesOfRowHeaders):
- (AccessibilityUIElement::attributesOfVisibleCells):
- (AccessibilityUIElement::rowIndexRange):
- (AccessibilityUIElement::columnIndexRange):
- (AccessibilityUIElement::cellForColumnAndRow):
- (AccessibilityUIElement::selectedTextRange):
- (AccessibilityUIElement::setSelectedTextRange):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::selectedTextRange):
- (AccessibilityUIElement::setSelectedTextRange):
-
-2008-09-20 Darin Adler <darin@apple.com>
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (convertMIMEType): Turn on Stephanie's workaround for Tiger too.
-
-2008-09-19 Alp Toker <alp@nuanti.com>
-
- Build fix for the 'gold' linker and recent binutils. New behaviour
- requires that we link to used libraries explicitly.
-
- * GNUmakefile.am:
-
-2008-09-19 Stephanie Lewis <slewis@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Implement a workaround for an incorrect mime-type on machines with
- Dashcode 2.0.1. Dashcode is overriding the UTI type for .js files.
- See radar <rdar://problem/6234318>.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (convertMIMEType):
-
-2008-09-19 Chris Fleizach <cfleizach@apple.com>
-
- Fixed Windows bustage
-
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::titleUIElement):
-
-2008-09-18 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Darin Adler.
-
- Expose titleUIElement call for DumpRenderTree
-
- * ChangeLog:
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (titleUIElementCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::titleUIElement):
-
-2008-09-18 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: More renaming plans.
-
-2008-09-18 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Dan Bernstein.
-
- Clear the main frame's name between tests to get more consistent test results
- when running the WebKit tests with --nthly.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting):
-
-2008-09-18 Stephanie Lewis <slewis@apple.com>
-
- Really fix tiger jsc tests.
-
- * Scripts/run-javascriptcore-tests:
-
-2008-09-18 Stephanie Lewis <slewis@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Fix jsc tests on Tiger. Make jsc tests smarter about when to use the arch flag.
-
- * Scripts/run-javascriptcore-tests:
- * Scripts/webkitdirs.pm:
-
-2008-09-18 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Sam Weinig.
-
- Print warning to stdout rather than stderr when a test attempts to access a remote resource.
- This should make it more obvious when a test does this, as stderr output tends to be obscured
- by noise in the test results.
-
- Also fixes some coding style issues in ResourceLoadDelegate.mm.
-
- * DumpRenderTree/mac/ResourceLoadDelegate.mm:
- (-[NSError _drt_descriptionSuitableForTestResult]):
- (-[NSURL _drt_descriptionSuitableForTestResult]):
- (-[ResourceLoadDelegate webView:identifierForInitialRequest:fromDataSource:]):
- (-[ResourceLoadDelegate webView:resource:willSendRequest:redirectResponse:fromDataSource:]):
- (-[ResourceLoadDelegate webView:resource:didReceiveResponse:fromDataSource:]):
- (-[ResourceLoadDelegate webView:resource:didFinishLoadingFromDataSource:]):
- (-[ResourceLoadDelegate webView:resource:didFailLoadingWithError:fromDataSource:]):
- (-[ResourceLoadDelegate webView:resource:willCacheResponse:fromDataSource:]):
-
-2008-09-18 Stephanie Lewis <slewis@apple.com>
-
- Reviewed by Mark Rowe and Maciej Stachowiak..
-
- add a --64-bit option and specify which architecture to run on Mac.
-
- * Scripts/run-javascriptcore-tests:
-
-2008-09-17 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Sam Weinig.
-
- Fix a crash seen running DumpRenderTree on fast/dom/null-document-window-open-crash.html under guard malloc.
-
- The JS wrapper for LayoutTestController could outlive the wrapped instance, and would crash when
- attempting to access the wrapped instance within layoutTestControllerObjectFinalize. We fix this by making
- LayoutTestController ref-counted to ensure that it is not outlived by the JS wrapper.
-
- * DumpRenderTree/ForwardingHeaders/wtf/RefCounted.h: Copied from JavaScriptGlue/ForwardingHeaders/wtf/RefCounted.h.
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (notifyDoneCallback): Remove code that is no longer needed now that we must always have a wrapped instance.
- (layoutTestControllerObjectFinalize): Deref the wrapped object.
- (LayoutTestController::makeWindowObject): Ref the wrapped object.
- * DumpRenderTree/LayoutTestController.h: Make LayoutTestController RefCounted.
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (runTest): Deref the LayoutTestController object rather than explicitly deleting it.
- * DumpRenderTree/mac/LayoutTestControllerMac.mm: Remove code that is no longer needed.
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (runTest): Deref the LayoutTestController object rather than explicitly deleting it.
-
-2008-09-16 Sam Weinig <sam@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Add flag to disable running sample on tests that timeout.
-
- * Scripts/run-webkit-tests:
-
-2008-09-16 Adam Roben <aroben@apple.com>
-
- Windows build fix after r36511
-
- Update for rename of layoutTestController to gLayoutTestController.
-
- * DumpRenderTree/LayoutTestController.cpp:
- * DumpRenderTree/win/EditingDelegate.cpp:
- * DumpRenderTree/win/FrameLoadDelegate.cpp:
- * DumpRenderTree/win/ResourceLoadDelegate.cpp:
- * DumpRenderTree/win/UIDelegate.cpp:
-
-2008-09-16 Adam Roben <aroben@apple.com>
-
- Add a script to print out the dependency tree of a Visual Studio
- solution file
-
- * Scripts/print-msvc-project-dependencies: Added.
-
-2008-09-16 Mark Rowe <mrowe@apple.com>
-
- Fix the build.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (notifyDoneCallback): Call fprintf in a safer manner.
-
-2008-09-16 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Eric Seidel
-
- Protect against tests that call layoutTestController.notifyDone()
- more than once, which would lead to memory corruption, by nulling
- out the LayoutTestController on the JSObjectRef on destruction. Also
- add a finalize callback on the class so that if the LTC outlives
- the JSObjectRef, the JSObjectRef backpointer on the LTC can be
- nulled out.
-
- https://bugs.webkit.org/show_bug.cgi?id=20875
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (notifyDoneCallback):
- (layoutTestControllerObjectFinalize):
- (LayoutTestController::makeWindowObject):
- (LayoutTestController::getJSClass):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::~LayoutTestController):
-
-2008-09-16 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Eric Seidel
-
- Step 1 patch: rename global variable for clarity.
- https://bugs.webkit.org/show_bug.cgi?id=20875
-
- * DumpRenderTree/DumpRenderTree.h:
- * DumpRenderTree/cg/PixelDumpSupportCG.cpp:
- (dumpWebViewAsPixelsAndCompareWithExpected):
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (dumpFramesAsText):
- (dump):
- (runTest):
- (processWork):
- (webViewLoadFinished):
- (webViewWindowObjectCleared):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (allocateGlobalControllers):
- (dumpFrameScrollPosition):
- (dumpFramesAsText):
- (methodNameStringForFailedTest):
- (dump):
- (runTest):
- * DumpRenderTree/mac/DumpRenderTreeMac.h:
- * DumpRenderTree/mac/DumpRenderTreeWindow.mm:
- * DumpRenderTree/mac/EditingDelegate.mm:
- (-[EditingDelegate webView:shouldBeginEditingInDOMRange:]):
- (-[EditingDelegate webView:shouldInsertNode:replacingDOMRange:givenAction:]):
- (-[EditingDelegate webView:shouldInsertText:replacingDOMRange:givenAction:]):
- (-[EditingDelegate webView:shouldChangeSelectedDOMRange:toDOMRange:affinity:stillSelecting:]):
- (-[EditingDelegate webView:shouldApplyStyle:toElementsInDOMRange:]):
- (-[EditingDelegate webView:shouldChangeTypingStyle:toStyle:]):
- (-[EditingDelegate webViewDidBeginEditing:]):
- (-[EditingDelegate webViewDidChange:]):
- (-[EditingDelegate webViewDidEndEditing:]):
- (-[EditingDelegate webViewDidChangeTypingStyle:]):
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate processWork:]):
- (-[FrameLoadDelegate webView:locationChangeDone:forDataSource:]):
- (-[FrameLoadDelegate webView:didStartProvisionalLoadForFrame:]):
- (-[FrameLoadDelegate webView:didCommitLoadForFrame:]):
- (-[FrameLoadDelegate webView:didFinishLoadForFrame:]):
- (-[FrameLoadDelegate webView:didClearWindowObject:forFrame:]):
- (-[FrameLoadDelegate webView:didReceiveTitle:forFrame:]):
- * DumpRenderTree/mac/ResourceLoadDelegate.mm:
- (-[ResourceLoadDelegate webView:identifierForInitialRequest:fromDataSource:]):
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:dragImage:at:offset:event:pasteboard:source:slideBack:forView:]):
- (-[UIDelegate webViewFocus:]):
- (-[UIDelegate webViewUnfocus:]):
- (-[UIDelegate webView:createWebViewWithRequest:]):
- (-[UIDelegate webViewClose:]):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (dumpFrameScrollPosition):
- (dumpFramesAsText):
- (dump):
- (runTest):
-
-2008-09-15 Alice Liu <alice.liu@apple.com>
-
- A change needed to make PPC bots pass accessibility/table-cell-spans.html layout test
-
- Reviewed by Stephanie Lewis.
-
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- Calling -[NSValue rangeValue] on nil object was returning bogus results on PPC,
- but not Intel. Add a check for nil before calling.
- (AccessibilityUIElement::rowIndexRange):
- (AccessibilityUIElement::columnIndexRange):
-
-2008-09-14 Mark Rowe <mrowe@apple.com>
-
- Build fix.
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (waitUntilDoneWatchdogFired):
- * DumpRenderTree/mac/ObjCPlugin.m:
-
-2008-09-08 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Mark Rowe.
-
- - add an option to run-webkit-tests to always use the complex text code path
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (initializeGlobalsFromCommandLineOptions):
- (dumpRenderTree):
- * Scripts/run-webkit-tests:
-
-2008-09-08 Steve Falkenburg <sfalken@apple.com>
-
- Another Windows nightly build fix.
-
- Reviewed by Sam Weinig.
-
- * FindSafari/FindSafari.cpp:
- (_tmain): Delete existing WebKitNightly directory in temp.
- * FindSafari/Safari.exe.manifest: Add PROGIDs for each COM class. Remove non-production classes.
-
-2008-09-07 Stephanie Lewis <slewis@apple.com>
-
- Reviewed by Mark Rowe.
-
- Fix DRT build
-
- * DumpRenderTree/DumpRenderTreePrefix.h:
- * DumpRenderTree/win/DumpRenderTree.vcproj:
-
-2008-09-06 Steve Falkenburg <sfalken@apple.com>
-
- Fix Windows nightlies.
-
- Copy WebKit.dll alongside application so registry-free COM can find it.
- Update embedded manifest to force use registry-free COM.
-
- Reviewed by Dave Hyatt.
-
- * FindSafari/FindSafari.cpp:
- (copyManifest):
- (replaceManifest):
- (_tmain):
- * FindSafari/FindSafari.rc: Added.
- * FindSafari/FindSafari.vcproj:
- * FindSafari/Safari.exe.manifest: Added.
- * FindSafari/resource.h: Added.
-
-=== End merge of squirrelfish-extreme ===
-
-2008-08-31 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Add a --profile flag to run-sunspider.
-
- * Scripts/webkitdirs.pm: Detect --profile or --profiling passed as a command-line argument
- to build scripts as indicating that we should use the "Profiling" configuration. At present
- this is only supported by JavaScriptCore, so using this argument to build any other project
- will likely result in unexpected behaviour.
-
-2008-08-27 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Fix run-webkit-tests to handle DRT exiting early.
-
- * Scripts/run-webkit-tests: Initialize $expectedResultPaths{$base} before it will be used.
-
-=== Start merge of squirrelfish-extreme ===
-
-2008-09-04 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Eric Seidel.
-
- Fix https://bugs.webkit.org/show_bug.cgi?id=20639.
- Bug 20639: ENABLE_DASHBOARD_SUPPORT does not need to be a FEATURE_DEFINE
-
- * Scripts/build-webkit: Remove ENABLE_DASHBOARD_SUPPORT-related code.
-
-2008-09-04 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver Hunt.
-
- Bug 20616: Incorporate V8 benchmarks in testing
- <https://bugs.webkit.org/show_bug.cgi?id=20616>
-
- Add support for the --v8 option to run-sunspider.
-
- * Scripts/run-sunspider:
-
-2008-09-04 Kevin Ollivier <kevino@theolliviers.com>
-
- wx buildbot fix. More robust handling of clean when makefiles are not built or
- are not completely made.
-
- * wx/build-wxwebkit:
-
-2008-09-03 Mark Rowe <mrowe@apple.com>
-
- More Mac build fixes.
-
- Set ENABLE_DASHBOARD_SUPPORT when building for Mac via build-webkit.
- Also set ENABLE_CROSS_DOCUMENT_MESSAGING in order to match the
- default configuration specified in the .xcconfig files.
-
- * Scripts/build-webkit:
-
-2008-09-03 Mark Rowe <mrowe@apple.com>
-
- Mac build fix. Ensure that dashboard support is enabled.
-
- * DumpRenderTree/mac/Configurations/Base.xcconfig:
-
-2008-08-25 Steve Falkenburg <sfalken@apple.com>
-
- Build fix. Copy correct version of ICU.
-
- * DumpRenderTree/win/DumpRenderTree.vcproj:
-
-2008-08-25 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by Simon.
-
- [run-webkit-tests] Use QtLauncher to show the results of the tests
- konqueror might not be installed, xdg-open might not be installed but the
- QtLauncher should be present.
-
- * Scripts/run-webkit-tests:
-
-2008-08-24 Jon Honeycutt <jhoneycutt@apple.com>
-
- Initial support for accessibility layout tests on Windows.
- https://bugs.webkit.org/show_bug.cgi?id=20497
-
- Reviewed by Sam Weinig.
-
- * DumpRenderTree/AccessibilityController.h: Fix typos.
- * DumpRenderTree/AccessibilityUIElement.cpp: Change #import to #include.
- * DumpRenderTree/AccessibilityUIElement.h: Define _WINSOCKAPI_ to
- prevent oleacc.h, which includes windows.h, from including winsock.h.
- Fixed typos.
- * DumpRenderTree/win/AccessibilityControllerWin.cpp: Added.
- (AccessibilityController::AccessibilityController):
- (AccessibilityController::~AccessibilityController):
- (AccessibilityController::focusedElement): Get the root element, and
- request its focused object.
- (AccessibilityController::rootElement): Query Windows for the
- accessible client object for the WebView's window.
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp: Added.
- (AccessibilityUIElement::AccessibilityUIElement):
- (AccessibilityUIElement::~AccessibilityUIElement):
- (AccessibilityUIElement::getLinkedUIElements): Not implemented.
- (AccessibilityUIElement::getChildren): Get the child count, and append
- each child.
- (AccessibilityUIElement::getChildAtIndex): Get the child at the given
- index offset by 1. In MSAA, child 0 is the object itself.
- (AccessibilityUIElement::allAttributes): Not implemented.
- (AccessibilityUIElement::attributesOfLinkedUIElements): Same.
- (AccessibilityUIElement::attributesOfChildren): Same.
- (AccessibilityUIElement::parameterizedAttributeNames): Same.
- (self): Return a VARIANT representing the "self" object. This is used
- when calling methods that require a child variant.
- (AccessibilityUIElement::role): Get the MSAA role, a long value, and
- convert it into a string with GetRoleText().
- (AccessibilityUIElement::title): Get the element's title, and convert
- it to a JS String.
- (AccessibilityUIElement::description): Same, for description.
- (AccessibilityUIElement::width):
- (AccessibilityUIElement::height):
- (AccessibilityUIElement::intValue): Get the object's value as a string,
- and convert the string to a double.
- (AccessibilityUIElement::minValue): Not implemented.
- (AccessibilityUIElement::maxValue): Same.
- (AccessibilityUIElement::insertionPointLineNumber): Same.
- (AccessibilityUIElement::attributesOfColumnHeaders): Same.
- (AccessibilityUIElement::attributesOfRowHeaders): Same.
- (AccessibilityUIElement::attributesOfColumns): Same.
- (AccessibilityUIElement::attributesOfRows): Same.
- (AccessibilityUIElement::attributesOfVisibleCells): Same.
- (AccessibilityUIElement::attributesOfHeader): Same.
- (AccessibilityUIElement::indexInTable): Same.
- (AccessibilityUIElement::rowIndexRange): Same.
- (AccessibilityUIElement::columnIndexRange): Same.
- (AccessibilityUIElement::lineForIndex): Same.
- (AccessibilityUIElement::boundsForRange): Same.
- (AccessibilityUIElement::cellForColumnAndRow): Same.
- * DumpRenderTree/win/DumpRenderTree.vcproj: Add accessibility files to
- project. Link to oleacc.lib, the MSAA library.
- * DumpRenderTree/win/FrameLoadDelegate.cpp:
- (FrameLoadDelegate::FrameLoadDelegate): Initialize the accessibility
- controller.
- (FrameLoadDelegate::didClearWindowObject): Create a new window object
- for the accessibility controller.
- * DumpRenderTree/win/FrameLoadDelegate.h:
-
-2008-08-21 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Mark Rowe
-
- Make build-launcher-app work when run from a git repository.
- https://bugs.webkit.org/show_bug.cgi?id=20478
-
- * BuildSlaveSupport/build-launcher-app:
-
-2008-08-20 Maxime Britto <britto@apple.com>
-
- Reviewed by Ada Chan.
-
- rdar://5259746
- Mouse events are sent to page while resizing window (affects Gmail)
-
- * DumpRenderTree/win/UIDelegate.h:
- (UIDelegate::webViewSendResizeMessage): Add the new interface method, not implemented.
-
-2008-08-19 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Beth Dakin.
-
- Add snowleopard platform in layout tests
-
- Added support for accessing the attributes of
- accessibility tables through the accessibility controller
- in DumpRenderTree
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (attributesOfColumnHeadersCallback):
- (attributesOfRowHeadersCallback):
- (attributesOfColumnsCallback):
- (attributesOfRowsCallback):
- (attributesOfVisibleCellsCallback):
- (attributesOfHeaderCallback):
- (indexInTableCallback):
- (rowIndexRangeCallback):
- (columnIndexRangeCallback):
- (childAtIndexCallback):
- (cellForColumnAndRowCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (convertNSArrayToVector):
- (descriptionOfElements):
- (AccessibilityUIElement::getLinkedUIElements):
- (AccessibilityUIElement::getChildren):
- (AccessibilityUIElement::attributesOfLinkedUIElements):
- (AccessibilityUIElement::attributesOfChildren):
- (AccessibilityUIElement::attributesOfColumnHeaders):
- (AccessibilityUIElement::attributesOfRowHeaders):
- (AccessibilityUIElement::attributesOfColumns):
- (AccessibilityUIElement::attributesOfRows):
- (AccessibilityUIElement::attributesOfVisibleCells):
- (AccessibilityUIElement::attributesOfHeader):
- (AccessibilityUIElement::indexInTable):
- (AccessibilityUIElement::rowIndexRange):
- (AccessibilityUIElement::columnIndexRange):
- (AccessibilityUIElement::cellForColumnAndRow):
- * Scripts/run-webkit-tests:
-
-2008-08-19 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin Adler.
-
- Fix run-webkit-tests misreporting crashed tests as timed out ones because DumpRenderTree
- is waiting for crash reporter to let it exit.
-
- The fix does not work on Tiger, because the state of the process is indistinguishable from
- other waiting processes, at least not with this technique.
-
- * Scripts/run-webkit-tests:
-
-2008-08-18 Alp Toker <alp@nuanti.com>
-
- Reviewed by Holger Freyther.
-
- https://bugs.webkit.org/show_bug.cgi?id=20350
- [GTK] Get DumpRenderTree working
-
- Fixes and enhancements to DumpRenderTree. With these changes, the test
- suite can now complete a run producing text and render tree dumps.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (dumpFramesAsText):
- (dump):
- (runTest):
- (webViewLoadFinished):
- (webViewWindowObjectCleared):
- (webViewConsoleMessage):
- (webViewScriptAlert):
- (webViewScriptPrompt):
- (webViewScriptConfirm):
- (webViewTitleChanged):
- (main):
- * DumpRenderTree/gtk/DumpRenderTreeGtk.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::clearBackForwardList):
- (LayoutTestController::pathToLocalResource):
- (LayoutTestController::setAcceptsEditing):
- (LayoutTestController::setUserStyleSheetEnabled):
- (LayoutTestController::setUserStyleSheetLocation):
- (waitToDumpWatchdogFired):
- (LayoutTestController::windowCount):
- * DumpRenderTree/gtk/WorkQueueItemGtk.cpp:
- (JSStringCopyUTF8CString):
- (ScriptItem::invoke):
-
-2008-08-17 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Cameron Zwarich.
-
- Updated project files to XCode 3.1.
-
- * DrawTest/DrawTest.xcodeproj/project.pbxproj:
- * WebKitLauncher/WebKitLauncher.xcodeproj/project.pbxproj:
-
-2008-08-15 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Geoff Garen.
-
- <rdar://problem/6139914> Please include a _debug version of JavaScriptCore framework
-
- * Scripts/check-for-global-initializers: Ignore initializers when building the debug variant.
-
-2008-08-13 Simon Hausmann <hausmann@webkit.org>
-
- Rubber-stamped by Holger.
-
- Revert r31585 and disable http tests for the Qt build again unless
- explicitly enabled.
-
- Running the http tests unfortunately currently still triggers
- failures in non-http tests due to side-effects. Disable them by default for
- now, for more reliable results.
-
- * Scripts/run-webkit-tests:
-
-2008-08-10 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed (and updated) by Alp Toker.
-
- https://bugs.webkit.org/show_bug.cgi?id=16620
- [GTK] Autotools make dist and make check support
-
- Get make dist working.
-
- Note that not all possible configurations have been tested yet.
-
- * GNUmakefile.am:
-
-2008-08-10 Alp Toker <alp@nuanti.com>
-
- Remove leftover qmake/GTK+ build files.
-
- * DumpRenderTree/gtk/DumpRenderTree.pro: Removed.
- * GtkLauncher/GtkLauncher.pro: Removed.
-
-2008-08-06 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Beth Dakin
-
- AX functions shouldn't return position information because it changes
- based on the platform
-
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::boundsForRange):
-
-2008-08-06 Eric Seidel <eric@webkit.org>
-
- Reviewed by darin.
-
- Fix leaks seen on build-bot by fixing memory management of AccessibilityUIElement.
- <https://bugs.webkit.org/show_bug.cgi?id=20297>
- <rdar://problem/6093153>
-
- I've made AccessibilityUIElement a stack object for now. It could be
- made RefCounted, but I figured that might be overkill for the moment.
- Essentially it's just a RefPtr itself. :)
-
- I also fixed a few typos, such as AccessibilityUIElement() instead of ~AccessibilityUIElement()
- which was causing additional leaks. :)
-
- I added toAXElement to remove a bunch of copy/paste code.
-
- * DumpRenderTree/AccessibilityController.h:
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (toAXElement):
- (allAttributesCallback):
- (attributesOfLinkedUIElementsCallback):
- (attributesOfChildrenCallback):
- (lineForIndexCallback):
- (boundsForRangeCallback):
- (childAtIndexCallback):
- (getRoleCallback):
- (getTitleCallback):
- (getDescriptionCallback):
- (getWidthCallback):
- (getHeightCallback):
- (getIntValueCallback):
- (getMinValueCallback):
- (getMaxValueCallback):
- (getInsertionPointLineNumberCallback):
- (finalize):
- * DumpRenderTree/AccessibilityUIElement.h:
- (AccessibilityUIElement::platformUIElement):
- * DumpRenderTree/mac/AccessibilityControllerMac.mm:
- (AccessibilityController::focusedElement):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::AccessibilityUIElement):
- (AccessibilityUIElement::getLinkedUIElements):
- (AccessibilityUIElement::getChildren):
- (AccessibilityUIElement::getChildAtIndex):
- (AccessibilityUIElement::attributesOfLinkedUIElements):
- (AccessibilityUIElement::attributesOfChildren):
-
-2008-08-06 Eric Seidel <eric@webkit.org>
-
- Reviewed by Cameron Zwarich.
-
- Speculative fix for an error I keep seeing in my Cygwin build
-
- * Scripts/webkitdirs.pm: make determineConfigurationProductDir() always call determineConfiguration() even on cygwin
-
-2008-08-02 Kevin Ollivier <kevino@theolliviers.com>
-
- Forgot to commit licensing correction in last commit.
-
- * wx/packaging/wxWebKitInstaller.iss.in:
-
-2008-08-02 Kevin Ollivier <kevino@theolliviers.com>
-
- Reviewed by Eric Seidel.
-
- Scripts for building a wxWebKit installer for wxPython on Win, eventually will
- be used for nightlies.
-
- https://bugs.webkit.org/show_bug.cgi?id=20036
-
- * wx/packaging: Added.
- * wx/packaging/build-win-installer.py: Added.
- * wx/packaging/wxWebKitInstaller.iss.in: Added.
-
-2008-07-31 Adam Roben <aroben@apple.com>
-
- Follow-up to r35500
-
- * WinLauncher/WinLauncher.vcproj: Set the manifest properties for the
- Release configuration, too.
-
-2008-07-31 Stefan Landvogt <stefan.landvogt@gmail.com>
-
- Fix Bug 20245: WinLauncher does not start in WebKit-debug right out of
- the box
-
- <https://bugs.webkit.org/show_bug.cgi?id=20245>
-
- Reviewed by Adam Roben.
-
- * WinLauncher/WinLauncher.vcproj: adding the following properties to
- WinLauncher > Properties > Manifest Tool > Isolated COM
- Type Library File: $(WebKitOutputDir)\lib\WebKit.tlb
- Component File Name: WebKit$(WebKitDLLConfigSuffix)
- Doing the change on "All Configurations"
-
-2008-07-31 Adam Roben <aroben@apple.com>
-
- Windows build bot fix
-
- * DumpRenderTree/win/ImageDiff.vcproj: Don't fail if files that only
- exist for people at Apple can't be found. Also updated the ICU version
- to 3.8.
-
-2008-07-31 David Kilzer <ddkilzer@apple.com>
-
- Fix layout test results for webarchive/test-xml-stylesheet.xml
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (convertMIMEType): Work around the "text/xml" local file type
- regression in Leopard using the BUILDING_ON_LEOPARD macro. Also
- stop mangling "application/x-javascript" into "text/javascript".
- (convertWebResourceDataToString): When checking whether to dump a
- resource as text, also check to see if the MIME type is in the
- -[WebHTMLRepresentation supportedNonImageMIMETypes] array.
- * DumpRenderTree/mac/DumpRenderTreeMac.h: Added BUILDING_ON_LEOPARD
- macro.
-
-2008-07-31 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Alice Liu
-
- Add AX support to get the bounds for a range of text
- Add AX support to get the child of an element
- Add AX support to get all the parameterized attribute names of an element
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (parameterizedAttributeNamesCallback):
- (boundsForRangeCallback):
- (childAtIndexCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::getChildAtIndex):
- (AccessibilityUIElement::parameterizedAttributeNames):
- (AccessibilityUIElement::boundsForRange):
-
-2008-07-31 Erik Bunce <elbunce@thehive.com>
-
- Reviewed by Simon.
-
- Make run-launcher set DYLD_LIBRARY_PATH to make things work on Mac OS X.
-
- * Scripts/run-launcher:
-
-2008-07-30 Jessica Kahn <jess@apple.com>
-
- Reviewed by Adam Roben.
-
- Slightly stricter checking for previous change, suggested by Adam.
-
- * Scripts/extract-localizable-strings:
-
-2008-07-30 Jessica Kahn <jess@apple.com>
-
- Reviewed by Darin Adler.
-
- Added support for UI_STRING and UI_STRING_KEY macros with flexible prefixes.
-
- * Scripts/extract-localizable-strings:
-
-2008-07-30 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Adam.
-
- Copy icu38* files instead of icu36* files.
-
- * DumpRenderTree/win/DumpRenderTree.vcproj:
-
-2008-07-25 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- DRT/Gtk build fix for r35362
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::elementDoesAutoCompleteForElementWithId):
-
-2008-07-25 Brady Eidson <beidson@apple.com>
-
- Reviewed by Sam
-
- Add the ability to dump whether-or-not an element should have autocomplete enabled,
- from the perspective of the WebKit API
-
- * DumpRenderTree/LayoutTestController.cpp:
- (elementDoesAutoCompleteForElementWithIdCallback):
- (LayoutTestController::staticFunctions):
-
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::elementDoesAutoCompleteForElementWithId):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::elementDoesAutoCompleteForElementWithId): Stub for now until I can get on Windows
-
-2008-07-25 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Beth Dakin
-
- Add support for AXLineForIndex and AXInsertionPointIndex through the
- accessibility controller
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (lineForIndexCallback):
- (getInsertionPointLineNumberCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::insertionPointLineNumber):
- (AccessibilityUIElement::lineForIndex):
-
-2008-07-25 Adam Roben <aroben@apple.com>
-
- Try to fix the Windows build bot
-
- * DumpRenderTree/win/DumpRenderTree.vcproj: Don't try to copy files
- that don't exist for people outside of Apple.
-
-2008-07-18 Landry Breuil <landry@openbsd.org>
-
- Bug 19975: [OpenBSD] Patches to enable build of WebKit
-
- <https://bugs.webkit.org/show_bug.cgi?id=19975>
-
- Reviewed by David Kilzer.
-
- * DumpRenderTree/DumpRenderTree.h: OpenBSD doesn't support wide characters.
-
-2008-07-16 Jon Honeycutt <jhoneycutt@apple.com>
-
- CygwinDownloader fails to install necessary packages
- https://bugs.webkit.org/show_bug.cgi?id=20075
-
- Reviewed by Mark Rowe.
-
- * CygwinDownloader/cygwin-downloader.zip: Rebuilt after two broken
- mirrors removed in r34116. Set MIME type to application/octet-stream.
-
-2008-07-16 Jon Honeycutt <jhoneycutt@apple.com>
-
- CygwinDownloader's make-zip.sh script fails
- https://bugs.webkit.org/show_bug.cgi?id=20074
-
- Reviewed by Mark Rowe.
-
- * CygwinDownloader/cygwin-downloader.py:
-
-2008-07-15 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Refactor accessibility testing code.
-
- We now have:
- - AccessibilityController
- Controller which has access to the WebView and can provide the focused element, root element
- and in the future, elementAtPoint.
-
- - AccessibilityUIElement
- Object which provides access to the data provided by the Accessibility APIs.
-
- * DumpRenderTree/AccessibilityController.cpp:
- (getFocusedElementCallback):
- (getRootElementCallback):
- (AccessibilityController::getJSClass):
- * DumpRenderTree/AccessibilityController.h:
- * DumpRenderTree/AccessibilityUIElement.cpp: Added.
- (allAttributesCallback):
- (attributesOfLinkedUIElementsCallback):
- (attributesOfChildrenCallback):
- (getRoleCallback):
- (getTitleCallback):
- (getDescriptionCallback):
- (getWidthCallback):
- (getHeightCallback):
- (getIntValueCallback):
- (getMinValueCallback):
- (getMaxValueCallback):
- (finalize):
- (AccessibilityUIElement::makeJSAccessibilityUIElement):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h: Added.
- (AccessibilityUIElement::platformUIElement):
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/mac/AccessibilityControllerMac.mm:
- (AccessibilityController::AccessibilityController):
- (AccessibilityController::~AccessibilityController):
- (AccessibilityController::focusedElement):
- (AccessibilityController::rootElement):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm: Added.
- (AccessibilityUIElement::AccessibilityUIElement):
- (descriptionOfValue):
- (attributesOfElement):
- (nsStringToJSStringRef):
- (concatenateAttributeAndValue):
- (AccessibilityUIElement::getLinkedUIElements):
- (AccessibilityUIElement::getChildren):
- (AccessibilityUIElement::attributesOfLinkedUIElements):
- (AccessibilityUIElement::attributesOfChildren):
- (AccessibilityUIElement::allAttributes):
- (AccessibilityUIElement::role):
- (AccessibilityUIElement::title):
- (AccessibilityUIElement::description):
- (AccessibilityUIElement::width):
- (AccessibilityUIElement::height):
- (AccessibilityUIElement::intValue):
- (AccessibilityUIElement::minValue):
- (AccessibilityUIElement::maxValue):
-
-2008-07-14 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Beth Dakin
-
- Add support to get attributes of the AXChildren of an objecty
-
- * DumpRenderTree/AccessibilityController.cpp:
- (attributesOfChildrenForFocusedElementCallback):
- (AccessibilityController::staticFunctions):
- * DumpRenderTree/AccessibilityController.h:
- * DumpRenderTree/mac/AccessibilityControllerMac.mm:
- (descriptionOfValue):
- (AccessibilityController::attributesOfChildrenForFocusedElement):
-
-2008-07-14 Steve Falkenburg <sfalken@apple.com>
-
- Build fix.
-
- * DumpRenderTree/win/DumpRenderTree.vcproj:
-
-2008-07-14 Adam Roben <aroben@apple.com>
-
- Attempted Windows build fix
-
- * DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj: Add
- CoreFoundation/OSXCompatibilityHeaders[/GNUCompatibility] to the
- include path.
-
-2008-07-14 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Geoff Garen.
-
- Eliminate per-thread JavaScript global data instance support and make arbitrary
- global data/global object combinations possible.
-
- * DumpRenderTree/pthreads/JavaScriptThreadingPthreads.cpp:
- (runJavaScriptThread): Don't pass a released context reference to JSGarbageCollect.
- In this scenario, it was causing crashes after each 10-20 tests, because there was a large
- chance for a different thread to cause GC after the context was released.
-
-2008-07-11 Stephanie Lewis <slewis@apple.com>
-
- Reviewed by Darin Adler.
-
- Make sure we read WebCore Leak messages. Force full document teardown for DumpRenderTree.
-
- Up timeout limit, some slower machines were timing out before crashtracer finished writing out to disk and quitting DRT.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (setDefaultsToConsistentValuesForTesting):
- (resetWebViewToConsistentStateBeforeTesting):
- * Scripts/run-webkit-tests:
-
-2008-07-10 Steve Falkenburg <sfalken@apple.com>
-
- Build fix.
-
- * DumpRenderTree/win/DumpRenderTree.vcproj:
-
-2008-07-09 Eric Seidel <eric@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Print <div> backgrounds when printing from DRT.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (setDefaultsToConsistentValuesForTesting):
-
-2008-07-09 Eric Seidel <eric@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Fix copying of expected results to correct location
-
- * Scripts/run-webkit-tests:
-
-2008-07-09 Eric Seidel <eric@webkit.org>
-
- Reviewed by aroben.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (dumpAsPDFCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::dumpAsPDF):
- (LayoutTestController::setDumpAsPDF):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dumpFrameAsPDF):
- (dump):
-
-2008-07-09 Eric Seidel <eric@webkit.org>
-
- Reviewed by weinig.
-
- Add Content-Type support to DumpRenderTree and run-webkit-tests
- and move expected.txt files to expected.webarchive
-
- https://bugs.webkit.org/show_bug.cgi?id=15565
-
- * DumpRenderTree/cg/ImageDiffCG.cpp:
- (compareImages):
- (main):
- * DumpRenderTree/cg/PixelDumpSupportCG.cpp:
- (printPNG):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dump):
- * Scripts/run-webkit-tests:
-
-2008-07-08 Jon Honeycutt <jhoneycutt@apple.com>
-
- Reviewed by Anders.
-
- Port r34988 to Mac: allow tests to define JavaScript to execute when
- NPP_DestroyStream or NPP_URLNotify is called.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp:
- (NPP_New): Remove initialization that happens in pluginAllocate. Look
- for new arguments onStreamDestroy and onURLNotify.
- (NPP_Destroy): Free onStreamDestroy and onURLNotify.
- (executeScript): Code moved from onStreamLoad.
- (NPP_NewStream): Call executeScript.
- (NPP_DestroyStream): Same.
- (NPP_URLNotify): Same.
-
-2008-07-07 Beth Dakin <bdakin@apple.com>
-
- Reviewed by Anders.
-
- This patch extends DRT accessibility tests to add the ability to
- query the intValue, minValue, and maxValue of the focused element.
-
- * DumpRenderTree/AccessibilityController.cpp:
- (intValueOfFocusedElementCallback):
- (minValueOfFocusedElementCallback):
- (maxValueOfFocusedElementCallback):
- (AccessibilityController::staticFunctions):
- * DumpRenderTree/AccessibilityController.h:
- * DumpRenderTree/mac/AccessibilityControllerMac.mm:
- (AccessibilityController::intValueOfFocusedElement):
- (AccessibilityController::minValueOfFocusedElement):
- (AccessibilityController::maxValueOfFocusedElement):
-
-2008-07-07 Steve Falkenburg <sfalken@apple.com>
-
- Fix build.
-
- * DumpRenderTree/win/ImageDiff.vcproj:
-
-2008-07-02 Jon Honeycutt <jhoneycutt@apple.com>
-
- Allow tests to define JavaScript to execute when NPP_DestroyStream or
- NPP_URLNotify is called.
-
- Reviewed by Anders.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp: Add a new
- property, "returnErrorFromNewStream." This is to support the test for
- <rdar://5983747> Safari crashes trying to load the SilverLight plugin,
- caused by WebKit calling NPP_DestroyStream after a plug-in returns an
- error from NPP_NewStream.
- (pluginGetProperty):
- (pluginSetProperty):
- (pluginAllocate):
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h: Added new
- members, onStreamDestroy and onURLNotify.
- * DumpRenderTree/win/TestNetscapePlugin/main.cpp:
- (NPP_New): Remove initialization of onStreamLoad; this was moved to
- pluginAllocate. Look for new arguments onStreamDestroy and
- onURLNotify, and store their values.
- (NPP_Destroy): Free new members.
- (executeScript): Code moved from onStreamLoad
- (NPP_NewStream): If returnErrorFromNewStream has been set to true,
- return a generic error code. If onStreamLoad is set, execute it as
- JavaScript.
- (NPP_DestroyStream): If onStreamDestroy is set, execute it as JS.
- (NPP_URLNotify): Same, for onURLNotify.
-
-2008-07-02 Brady Eidson <beidson@apple.com>
-
- Reviewed by Mitz Pettel and John Sullivan
-
- Add the ability to tell DRT to call stopLoading on a WebFrame inside of a didStartProvisionalLoadForFrame
- load delegate.
-
- Required to add a layout test for the fix for <rdar://problem/5549871>
-
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate webView:didStartProvisionalLoadForFrame:]): If stopProvisionalFrameLoads is set, call
- [WebFrame stopLoading] to test for the crash reflected in 5549871
-
- All of the following are infrastructure to add the layoutTestController.setStopProvisionalFrameLoads() call:
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (setStopProvisionalFrameLoadsCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::stopProvisionalFrameLoads):
- (LayoutTestController::setStopProvisionalFrameLoads):
-
-2008-07-01 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Beth Dakin
-
- Support ability to get width and height of an element through accessibility
-
- * DumpRenderTree/AccessibilityController.cpp:
- (widthOfFocusedElementCallback):
- (heightOfFocusedElementCallback):
- (AccessibilityController::staticFunctions):
- * DumpRenderTree/AccessibilityController.h:
- * DumpRenderTree/mac/AccessibilityControllerMac.mm:
- (AccessibilityController::widthOfFocusedElement):
- (AccessibilityController::heightOfFocusedElement):
-
-2008-06-30 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Beth Dakin
-
- Support the ability to get the linked ui elements of an object
-
- * DumpRenderTree/AccessibilityController.cpp:
- (attributesOfLinkedUIElementsForFocusedElementCallback):
- (AccessibilityController::staticFunctions):
- * DumpRenderTree/AccessibilityController.h:
- * DumpRenderTree/mac/AccessibilityControllerMac.mm:
- (AccessibilityController::attributesOfLinkedUIElementsForFocusedElement):
- (AccessibilityController::allAttributesOfFocusedElement):
- (attributesOfElement):
- (nsStringToJSStringRef):
-
-2008-06-29 Sam Weinig <sam@webkit.org>
-
- Fix Tiger build.
-
- * DumpRenderTree/mac/EventSendingController.mm:
- (eventTypeForMouseButtonAndAction):
-
-2008-06-27 Eric Seidel <eric@webkit.org>
-
- Reviewed by darin.
-
- Add multi-button mouseevent support to DRT
- https://bugs.webkit.org/show_bug.cgi?id=15173
-
- It's now possible to specify the mouse button with:
- eventSender.mouseDown(1); eventSender.mouseUp(1); etc.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/mac/EventSendingController.h:
- * DumpRenderTree/mac/EventSendingController.mm:
- (+[EventSendingController isSelectorExcludedFromWebScript:]):
- (+[EventSendingController webScriptNameForSelector:]):
- (eventTypeForMouseButtonAndAction):
- (-[EventSendingController updateClickCountForButton:]):
- (-[EventSendingController mouseDown:]):
- (-[EventSendingController mouseUp:]):
- (-[EventSendingController mouseMoveToX:Y:]):
- (-[EventSendingController contextClick]):
-
-2008-06-28 Nikolas Zimmermann <zimmermann@kde.org>
-
- Reviewed by Oliver.
-
- Copy <test>-expected.png from the right location to /tmp/layout-test-results.
- Use $expectedPixelDir instead of $expectedDir. Allows using SVG pixel tests again.
-
- * Scripts/run-webkit-tests:
-
-2008-06-27 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Christian Dywan.
-
- [Gtk] Initialize webview settings before running DRT tests
- http://bugs.webkit.org/show_bug.cgi?id=19778
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (setDefaultsToConsistentStateValuesForTesting):
- (main):
-
-2008-06-26 Darin Adler <darin@apple.com>
-
- * Scripts/check-for-weak-vtables: Fixed comment.
-
-2008-06-26 Darin Adler <darin@apple.com>
-
- * Scripts/check-for-weak-vtables: Added.
-
-2008-06-26 Beth Dakin <bdakin@apple.com>
-
- Reviewed by Sam.
-
- Do not include AXPosition in the dump of all of the accessibility
- attributes since it is screen-specific.
-
- * DumpRenderTree/mac/AccessibilityControllerMac.mm:
- (AccessibilityController::allAttributesOfFocusedElement):
-
-2008-06-26 Beth Dakin <bdakin@apple.com>
-
- Reviewed by Anders.
-
- This is a speculative fix for the failing layout test on the build
- bot. It seems that the problem that the Build Bot is having is
- Tiger-specific. On Tiger, [NSValue description] was not very smart.
- So I replaced our call to description with a hand-rolled equivalent
- that will match on both platforms.
-
- * DumpRenderTree/mac/AccessibilityControllerMac.mm:
- (descriptionOfValue):
-
-2008-06-25 Beth Dakin <bdakin@apple.com>
-
- Reviewed by Sam Weinig.
-
- This patch adds support to the AccessibilityController to query the
- following attributes specifically, without a full attribute dump:
- AXRole, AXTitle, and AXDescription.
-
- * DumpRenderTree/AccessibilityController.cpp:
- (allAttributesForFocusedElementCallback):
- (roleOfFocusedElementCallback):
- (titleOfFocusedElementCallback):
- (descriptionOfFocusedElementCallback):
- (AccessibilityController::staticFunctions):
- * DumpRenderTree/AccessibilityController.h:
- * DumpRenderTree/mac/AccessibilityControllerMac.mm:
- (AccessibilityController::allAttributesForFocusedElement):
- (concatenateAttributeAndValue):
- (AccessibilityController::roleOfFocusedElement):
- (AccessibilityController::titleOfFocusedElement):
- (AccessibilityController::descriptionOfFocusedElement):
-
-2008-06-24 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Stephanie Lewis.
-
- - move the linker flags from the debug configuration in the project
- to the shared configuration
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig:
-
-2008-06-24 Dan Bernstein <mitz@apple.com>
-
- - try to fix the Tiger build
-
- * DumpRenderTree/mac/AccessibilityControllerMac.mm:
-
-2008-06-24 Sam Weinig and Beth Dakin <bdakin@apple.com and sam@webkit.org>
-
- Reviewed by Darin Adler.
-
- Fix for <rdar://problem/5884881> Make DumpRenderTree support
- accessibility tests
-
- This patch adds some basic support for accessibility layout tests
- on the Mac.
-
- * DumpRenderTree/AccessibilityController.cpp: Added.
- (AccessibilityController::AccessibilityController):
- (AccessibilityController::~AccessibilityController):
- (dumpCurrentAttributesCallback):
- (AccessibilityController::makeWindowObject):
- (AccessibilityController::getJSClass):
- (AccessibilityController::staticFunctions):
- * DumpRenderTree/AccessibilityController.h: Added.
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/mac/AccessibilityControllerMac.mm: Added.
- (descriptionOfValue):
- (AccessibilityController::dumpCurrentAttributes):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- * DumpRenderTree/mac/FrameLoadDelegate.h:
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate init]):
- (-[FrameLoadDelegate webView:didClearWindowObject:forFrame:]):
-
-2008-06-24 John Sullivan <sullivan@apple.com>
-
- Reviewed by Dan Bernstein
-
- * Scripts/extract-localizable-strings:
- add UI_STRING_LOCALIZE_LATER, LPCTSTR_UI_STRING_LOCALIZE_LATER, and LOG_WARNING to the
- list of debugging macros, to avoid noise when keeping the list of localized string
- exceptions up to date
-
-2008-06-24 Dan Bernstein <mitz@apple.com>
-
- Rubber-stamped by Darin Adler.
-
- - add a font family for testing font-weight
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Added linker
- flags to create data sections for the WeightWatcher fonts.
- * DumpRenderTree/fonts: Added.
- * DumpRenderTree/fonts/WebKitWeightWatcher100.ttf: Added.
- * DumpRenderTree/fonts/WebKitWeightWatcher200.ttf: Added.
- * DumpRenderTree/fonts/WebKitWeightWatcher300.ttf: Added.
- * DumpRenderTree/fonts/WebKitWeightWatcher400.ttf: Added.
- * DumpRenderTree/fonts/WebKitWeightWatcher500.ttf: Added.
- * DumpRenderTree/fonts/WebKitWeightWatcher600.ttf: Added.
- * DumpRenderTree/fonts/WebKitWeightWatcher700.ttf: Added.
- * DumpRenderTree/fonts/WebKitWeightWatcher800.ttf: Added.
- * DumpRenderTree/fonts/WebKitWeightWatcher900.ttf: Added.
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (activateFonts): Renamed activateAhemFont to this and made it activate
- the WeightWatcher fonts in addition to Ahem.
- (prepareConsistentTestingEnvironment): Adjusted for the name change.
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (initialize): Added the WeightWatcher fonts.
-
-2008-06-20 Brent Fulgham <bfulgham@gmail.com>
-
- Reviewed by Darin Adler.
-
- Extend the build-webkit (and set-webkit-configuration) script to
- support Cairo-based webkit builds. (see http://bugs.webkit.org/show_bug.cgi?17952)
-
- * Scripts/build-webkit: Add --cairo-win32 to the help message
- * Scripts/webkitdirs.pm: Extend the 'determinePassedConfiguration
- subroutine to recognize the --cairo-win32 flag. When present,
- the build configuration is changed from Debug/Release to
- Debug_Cairo/Release_Cairo. This flag is only active when the
- isCygwin() test is true.
-
-2008-06-17 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Justin Garcia.
-
- - prefer Leopard results when running on Snow Leopard.
-
- * Scripts/run-webkit-tests: Added a mapping of Snow Leopard to
- mac-leopard.
- * Scripts/webkitdirs.pm: Added isSnowLeopard().
-
-2008-06-15 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: Updated for the latest round of renaming.
-
-2008-06-15 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: Updated for the latest round of renaming.
-
-2008-06-15 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: Updated for the latest round of renaming.
-
-2008-06-15 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: Updated for the latest round of renaming.
-
-2008-06-15 Darin Adler <darin@apple.com>
-
- * Scripts/do-file-rename: Updated.
- * Scripts/do-webcore-rename: Updated for the latest round of renaming.
-
-2008-06-15 Darin Adler <darin@apple.com>
-
- * Scripts/do-file-rename: Updated for the latest round of renaming.
- * Scripts/do-webcore-rename: Tweaked and reorganized a bit.
-
-2008-06-15 Darin Adler <darin@apple.com>
-
- * Scripts/create-exports: Added.
- * Scripts/do-file-rename: Added some planned renames.
- * Scripts/do-webcore-rename: Updated for the latest round of renaming.
-
-2008-06-15 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: Updated for the latest round of renaming.
-
-2008-06-15 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - rename testkjs to jsc
-
- * Scripts/build-jsc: Copied from Scripts/build-testkjs.
- * Scripts/build-testkjs: Removed.
- * Scripts/run-javascriptcore-tests:
- * Scripts/run-jsc: Copied from Scripts/run-testkjs.
- * Scripts/run-sunspider:
- * Scripts/run-testkjs: Removed.
- * Scripts/sunspider-compare-results:
-
-2008-06-14 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: Moved planned renames into a separate hash
- from the actual renames. Removed many renames that are either done or
- no longer planned.
-
-2008-06-14 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: Fixed obvious typo.
-
-2008-06-13 Darin Adler <darin@apple.com>
-
- * Scripts/make-js-test-wrappers: Added three more exceptions.
-
-2008-06-10 Joerg Bornemann <joerg.bornemann@trolltech.com>
-
- Reviewed by Simon.
-
- For the qmake based build make it possible to build against makespecs where
- QMAKE_CC is defined in a configuration file included from qmake.conf.
-
- * Scripts/webkitdirs.pm: Added support for include() statements in
- qmake.conf.
-
-2008-06-09 Alp Toker <alp@nuanti.com>
-
- gcc3/autotools build fix. Add explicit -O2 -fno-strict-aliasing to
- each of the tools since these are no longer set globally.
-
- * GNUmakefile.am:
-
-2008-06-08 Darin Adler <darin@apple.com>
-
- * Scripts/make-js-test-wrappers: Added another exception.
-
-2008-06-07 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Timothy.
-
- Remove the --squirrelfish option from SunSpider, as it is no longer needed.
-
- * Scripts/run-sunspider:
-
-2008-06-05 Alp Toker <alp@nuanti.com>
-
- Build fix for r34387.
-
- * GNUmakefile.am:
-
-2008-06-04 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver.
-
- Add an exception for Opcode.o to the global initializers check so that
- we can dump instruction statistics in the JavaScript virtual machine.
-
- * Scripts/check-for-global-initializers:
-
-2008-05-30 Steve Falkenburg <sfalken@apple.com>
-
- Generate an isolated COM manifest for registry free COM.
-
- * DumpRenderTree/win/DumpRenderTree.vcproj:
-
-2008-06-02 Anders Carlsson <andersca@apple.com>
-
- Reviewed by David Hyatt and Mitz.
-
- <rdar://problem/5704119>
- repro crash in WebCore::RenderPart::setWidget (plugin-related?)
-
- Call -[WebView display] in the "plug-in" failed delegate method, simulating
- the sheet that Safari puts up.
-
- * DumpRenderTree/mac/ResourceLoadDelegate.mm:
- (-[ResourceLoadDelegate webView:plugInFailedWithError:dataSource:]):
-
-2008-05-30 Timothy Hatcher <timothy@apple.com>
-
- Made the starting line number of scripts be 1-based throughout the engine.
- This cleans up script line numbers so they are all consistent now.
-
- Reviewed by Oliver Hunt.
-
- * DumpRenderTree/mac/ObjCController.m:
- (runJavaScriptThread): Pass a line number of 1 instead of 0 to JSEvaluateScript.
- * DumpRenderTree/pthreads/JavaScriptThreadingPthreads.cpp:
- (runJavaScriptThread): Ditto.
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (runJavaScriptThread): Ditto.
-
-2008-05-29 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Adam Roben.
-
- Fixed VCSUtils.pm to work with git repositories inside symlinks.
-
- * Scripts/VCSUtils.pm: Compute a relative path from the git repository
- root, instead of the root of the filesystem, to work around a bug in
- abs2rel when traversing symlinked home directories.
-
-2008-05-29 Kevin Ollivier <kevino@theolliviers.com>
-
- Reviewed by Darin Adler.
-
- Restore original behavior of isOSX() referring to the Mac port, not the OS itself.
-
- https://bugs.webkit.org/show_bug.cgi?id=19311
-
- * Scripts/webkitdirs.pm:
-
-2008-05-29 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Adam Roben.
-
- Fix run-iexploder-tests and run-mangleme-tests to work with updated shared scripts and
- configuration files.
-
- * Scripts/run-iexploder-tests:
- * Scripts/run-mangleme-tests:
- Renamed runSafari to not conflict with the one in webkitdirs.
- Added SSLCertificateFile option for httpd, as now needed.
-
-2008-05-27 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix. Update the sample app after wxWebFrame->wxWebBrowserShell rename.
-
- * wx/browser/browser.cpp:
- (MyApp::OnInit):
-
-2008-05-24 Andreia Gaita <shana@isninja.com>
-
- Reviewed by Alp Toker.
-
- cygwin-downloader.py fixes.
-
- Remove two non-working mirrors. Add a check for missing dependency
- packages to avoid bailing out on an inconsistent Cygwin package list.
-
- * CygwinDownloader/cygwin-downloader.py:
-
-2008-05-24 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Darin Adler.
-
- Remove useQmake usage. QMake build doesn't support Gtk port
- anymore.
-
- Also fix 2 occurences of "Web Kit". Should be WebKit.
-
- * Scripts/build-webkit:
- * Scripts/run-javascriptcore-tests:
- * Scripts/run-launcher:
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
-
-2008-05-22 Stephanie Lewis <slewis@apple.com>
-
- Reviewed by Dan.
-
- implement the beforeUnload UI delegate so that DRT will dispatch beforeunload events.
-
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:runBeforeUnloadConfirmPanelWithMessage:initiatedByFrame:]):
- * DumpRenderTree/win/UIDelegate.cpp:
- (SearchableWebViewHost::runBeforeUnloadConfirmPanelWithMessage):
-
-2008-05-21 Adele Peterson <adele@apple.com>
-
- Reviewed by Adam.
-
- DumpRenderTree support for <rdar://problem/5787733> fast/dom/HTMLDocument/hasFocus.html fails on Windows
-
- * DumpRenderTree/win/UIDelegate.cpp:
- (UIDelegate::webViewFocus): Added.
- (UIDelegate::webViewUnfocus): Added.
- * DumpRenderTree/win/UIDelegate.h:
-
-2008-05-21 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Stephanie Lewis.
-
- Set the pass_through flag on Getopt so that extra arguments can be passed through to Safari,
- rather than trigger an unknown argument message. This allows run-webkit-tests to display results
- once more.
-
- * Scripts/run-safari:
-
-2008-05-21 Stephanie Lewis <slewis@apple.com>
-
- Reviewed by Maciej, Mark.
-
- arch doesn't take arguments on tiger. expand DRT timeout for guardMalloc.
-
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
-
-2008-05-20 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Stephanie Lewis.
-
- Improve the behavior of run-webkit-tests with 64-bit WebKit by automatically inferring whether to run 64-bit.
-
- If --64-bit is not passed to run-webkit-tests, attempt to guess whether we should run 64-bit.
- This decision is made based on the 64-bitness of the built WebKit framework if it exists, and
- can be manually overridden by passing --64-bit or --no-64-bit. This removes the need to always
- pass an argument to run-webkit-tests after having built with "make x86_64".
-
- * Scripts/gdb-safari:
- * Scripts/run-safari:
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm: Split the setting of the 64-bit flag, the determination of the
- preferred architecture, and exporting of the environment variables for 'arch' out into
- separate subroutines.
-
-2008-05-20 Mark Rowe <mrowe@apple.com>
-
- Fix "make x86_64" by adding x86_64 target to WebKitTools Makefile.
-
- * Makefile:
-
-=== End merge of squirrelfish ===
-
-2008-04-14 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - added support for --ubench mode
-
- * Scripts/run-sunspider:
-
-2008-03-26 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- --squirrelfish mode: pared down tests for squirrelfish to chew on.
-
- * Scripts/run-sunspider:
-
-=== Start merge of squirrelfish ===
-
-2008-05-21 Darin Adler <darin@apple.com>
-
- * Scripts/make-js-test-wrappers: Added another exception.
-
-2008-05-19 Stephanie Lewis <slewis@apple.com>
-
- Reviewed by Adam.
-
- Explicitly set run mode to 32bit unless overridden to avoid
- confusion when running tests
-
- * Scripts/build-dumprendertree:
- * Scripts/gdb-safari:
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
-
-2008-05-16 Stephanie Lewis <slewis@apple.com>
-
- Reviewed by Steve.
-
- Print out pending unload event count. Also print out main frame name to match Mac.
-
- * DumpRenderTree/win/FrameLoadDelegate.cpp:
- (descriptionSuitableForTestResult):
- (FrameLoadDelegate::didFinishDocumentLoadForFrame):
-
-2008-05-16 Timothy Hatcher <timothy@apple.com>
-
- Remove the Drosera project, code and resources since it has been
- replaced with the Web Inspector's debugger. Removes references to
- Drosera in various scripts and makefiles.
-
- Rubber-stamped by Mark Rowe.
-
- * BuildSlaveSupport/build-launcher-app:
- * Drosera/DebuggerDocument.cpp: Removed.
- * Drosera/DebuggerDocument.h: Removed.
- * Drosera/Drosera.icns: Removed.
- * Drosera/DroseraWin.make: Removed.
- * Drosera/English.lproj/Debugger.nib/classes.nib: Removed.
- * Drosera/English.lproj/Debugger.nib/info.nib: Removed.
- * Drosera/English.lproj/Debugger.nib/keyedobjects.nib: Removed.
- * Drosera/English.lproj/MainMenu.nib/classes.nib: Removed.
- * Drosera/English.lproj/MainMenu.nib/info.nib: Removed.
- * Drosera/English.lproj/MainMenu.nib/keyedobjects.nib: Removed.
- * Drosera/ForwardingHeaders/wtf/Assertions.h: Removed.
- * Drosera/ForwardingHeaders/wtf/HashTraits.h: Removed.
- * Drosera/ForwardingHeaders/wtf/Noncopyable.h: Removed.
- * Drosera/ForwardingHeaders/wtf/OwnPtr.h: Removed.
- * Drosera/ForwardingHeaders/wtf/Platform.h: Removed.
- * Drosera/ForwardingHeaders/wtf/RetainPtr.h: Removed.
- * Drosera/Images/Drosera.ico: Removed.
- * Drosera/Images/SourceArrow.png: Removed.
- * Drosera/Images/SourceArrowBlank.png: Removed.
- * Drosera/Images/SourceArrowOpen.png: Removed.
- * Drosera/Images/background_stripe.png: Removed.
- * Drosera/Images/breakPoint.tif: Removed.
- * Drosera/Images/breakPointDisabled.tif: Removed.
- * Drosera/Images/breakpointeditor.png: Removed.
- * Drosera/Images/close.tif: Removed.
- * Drosera/Images/close_active.tif: Removed.
- * Drosera/Images/close_hover.tif: Removed.
- * Drosera/Images/console.png: Removed.
- * Drosera/Images/continue.tif: Removed.
- * Drosera/Images/fileIcon.jpg: Removed.
- * Drosera/Images/finishFunction.tif: Removed.
- * Drosera/Images/glossyFooterFill.tif: Removed.
- * Drosera/Images/glossyHeader.png: Removed.
- * Drosera/Images/glossyHeaderPressed.png: Removed.
- * Drosera/Images/gradientBackground.png: Removed.
- * Drosera/Images/gutter.png: Removed.
- * Drosera/Images/navLeftDisabled.png: Removed.
- * Drosera/Images/navLeftNormal.png: Removed.
- * Drosera/Images/navLeftPressed.png: Removed.
- * Drosera/Images/navRightDisabled.png: Removed.
- * Drosera/Images/navRightNormal.png: Removed.
- * Drosera/Images/navRightPressed.png: Removed.
- * Drosera/Images/pause.tif: Removed.
- * Drosera/Images/popUpArrows.png: Removed.
- * Drosera/Images/programCounter.tif: Removed.
- * Drosera/Images/programCounterBreakPoint.tif: Removed.
- * Drosera/Images/programCounterBreakPointDisabled.tif: Removed.
- * Drosera/Images/run.tif: Removed.
- * Drosera/Images/siteCollapsed.tif: Removed.
- * Drosera/Images/siteExpanded.tif: Removed.
- * Drosera/Images/siteIcon.tif: Removed.
- * Drosera/Images/small.ico: Removed.
- * Drosera/Images/splitterBar.tif: Removed.
- * Drosera/Images/splitterDimple.tif: Removed.
- * Drosera/Images/step.tif: Removed.
- * Drosera/Images/stepOut.tif: Removed.
- * Drosera/Images/stepOver.tif: Removed.
- * Drosera/Images/stop.tif: Removed.
- * Drosera/Images/toolbarBackground.png: Removed.
- * Drosera/Images/verticalSplitterBar.tiff: Removed.
- * Drosera/Images/verticalSplitterDimple.tiff: Removed.
- * Drosera/Makefile: Removed.
- * Drosera/breakpointEditor.html: Removed.
- * Drosera/config.h: Removed.
- * Drosera/console.css: Removed.
- * Drosera/console.html: Removed.
- * Drosera/console.js: Removed.
- * Drosera/debugger.css: Removed.
- * Drosera/debugger.html: Removed.
- * Drosera/debugger.js: Removed.
- * Drosera/mac/DebuggerApplication.h: Removed.
- * Drosera/mac/DebuggerApplication.mm: Removed.
- * Drosera/mac/DebuggerClient.h: Removed.
- * Drosera/mac/DebuggerClient.mm: Removed.
- * Drosera/mac/DebuggerDocumentPlatform.mm: Removed.
- * Drosera/mac/Drosera.xcodeproj/project.pbxproj: Removed.
- * Drosera/mac/Info.plist: Removed.
- * Drosera/mac/LauncherInfo.plist: Removed.
- * Drosera/mac/Makefile: Removed.
- * Drosera/mac/ServerConnection.h: Removed.
- * Drosera/mac/ServerConnection.mm: Removed.
- * Drosera/mac/launcher.m: Removed.
- * Drosera/mac/main.m: Removed.
- * Drosera/viewer.css: Removed.
- * Drosera/viewer.html: Removed.
- * Drosera/win/BaseDelegate.h: Removed.
- * Drosera/win/DebuggerClient.cpp: Removed.
- * Drosera/win/DebuggerClient.h: Removed.
- * Drosera/win/DebuggerDocumentPlatform.cpp: Removed.
- * Drosera/win/Drosera.cpp: Removed.
- * Drosera/win/Drosera.h: Removed.
- * Drosera/win/Drosera.vcproj/Drosera.rc: Removed.
- * Drosera/win/Drosera.vcproj/Drosera.vcproj: Removed.
- * Drosera/win/DroseraPrefix.cpp: Removed.
- * Drosera/win/DroseraPrefix.h: Removed.
- * Drosera/win/Info.plist: Removed.
- * Drosera/win/ServerConnection.cpp: Removed.
- * Drosera/win/ServerConnection.h: Removed.
- * Drosera/win/resource.h: Removed.
- * Makefile:
- * Scripts/build-drosera: Removed.
- * Scripts/gdb-drosera: Removed.
- * Scripts/run-drosera: Removed.
- * Scripts/run-drosera-nightly.cmd: Removed.
- * Scripts/run-drosera.cmd: Removed.
- * Scripts/webkitdirs.pm:
-
-2008-05-15 Stephanie Lewis <slewis@apple.com>
-
- Reviewed by Anders.
-
- Dump the unload count for a frame after parsing is finished.
-
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate webView:didFinishDocumentLoadForFrame:]):
-
-2008-05-15 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Dan Bernstein.
-
- https://bugs.webkit.org/show_bug.cgi?id=10707
- DumpRenderTree should not be able to access non-local resources
-
- * DumpRenderTree/mac/ResourceLoadDelegate.mm:
- (-[ResourceLoadDelegate webView:resource:willSendRequest:redirectResponse:fromDataSource:]):
- Block them, and complain.
-
-2008-05-15 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix. Update the version of libpng to download and instsall.
-
- * wx/install-unix-extras:
-
-2008-05-14 Julien Chaffraix <jchaffraix@webkit.org>
-
- Reviewed by Eric.
-
- - isDarwin() and isCygwin() returned an empty string if the platform equality check fails.
- We now force the return value to be numeric.
-
- - Removed platform checks as it was a work around the previous issue.
-
- - Replaced isDarwin() by isOSX() as they have now the same behaviour.
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
-
-2008-05-12 Adam Roben <aroben@apple.com>
-
- Support for testing NPN_PostURL
-
- Reviewed by Anders Carlsson.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (toCString): Added this helper function.
- (testPostURLFile): Added. Writes the passed-in content to the
- passed-in file and calls NPN_PostURL with the passed-in URL and
- target.
- (pluginInvoke): Added a case for testPostURLFile.
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (followShortcuts): Changed to allow paths that don't yet exist.
-
-2008-05-12 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Sam Weinig.
-
- Minor cleanup of the DRT Xcode project.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Use GCC_OPTIMIZATION_LEVEL rather than
- OPTIMIZATION_CFLAGS. Don't include Info.plist in the "Copy Bundle Resources" build phase as it does
- not need to be there.
-
-2008-05-12 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Adam.
-
- Add support for testing application caches.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dumpRenderTree):
- Empty the cache.
-
- (resetWebViewToConsistentStateBeforeTesting):
- Turn on support for the application cache.
-
-2008-05-09 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Anders Carlsson.
-
- Update TestNetscapePlugIn to build 64-bit using the Cocoa event model.
-
- It currently does not attempt to print events which means that plugins/mouse-events.html
- will fail when run 64-bit. All other tests that use this plugin pass.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (testGetIntIdentifier):
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp:
- (NPP_New):
- (NPP_HandleEvent):
-
-2008-05-09 Brady Eidson <beidson@apple.com>
-
- Reviewed by Adam Roben
-
- Explicitly call shutDownWebKit() before quitting.
-
- * Drosera/win/Drosera.cpp:
- (_tWinMain):
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (main):
-
-2008-05-09 Mark Rowe <mrowe@apple.com>
-
- Fix the Tiger build of Drosera.
-
- * Drosera/config.h: Define BUILDING_ON_TIGER when building on Tiger.
-
-2008-05-09 Sam Weinig <sam@webkit.org>
-
- Rubber-stamped by Mark Rowe.
-
- Remove the ENABLE_CROSS_DOCUMENT_MESSAGING #ifdefs.
-
- * Scripts/build-webkit:
-
-2008-05-08 Mark Rowe <mrowe@apple.com>
-
- Another attempt at a Tiger build fix.
-
- Use DumpRenderTreeMac.h rather than DumpRenderTree.h as DumpRenderTreePasteboard is not an Obj-C++ file.
-
- * DumpRenderTree/mac/DumpRenderTreePasteboard.m:
-
-2008-05-08 Mark Rowe <mrowe@apple.com>
-
- Tiger build fix. Include DumpRenderTree.h so that BUILDING_ON_TIGER will be defined.
-
- * DumpRenderTree/mac/DumpRenderTreePasteboard.m:
-
-2008-05-08 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver Hunt and Dan Bernstein.
-
- Update DumpRenderTree to build 64-bit.
-
- The three major changes here are:
- 1) Use NSInteger in the appropriate places.
- 2) Use ColorSync API that is available in 64-bit to switch display profiles.
- 3) Use method-swizzling to achieve similar results to class posing when using the Obj-C 2.0 runtime.
-
- The build of DumpRenderTree will still fail in 64-bit for now as the TestNetscapePlugIn target also
- needs updated to successfully build.
-
- * DumpRenderTree/mac/Configurations/Base.xcconfig: Don't prevent Xcode from building 64-bit.
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (swizzleAllMethods):
- (poseAsClass):
- (prepareConsistentTestingEnvironment):
- * DumpRenderTree/mac/DumpRenderTreeMac.h:
- * DumpRenderTree/mac/DumpRenderTreePasteboard.h:
- * DumpRenderTree/mac/DumpRenderTreePasteboard.m:
- * DumpRenderTree/mac/DumpRenderTreeWindow.mm:
- * DumpRenderTree/mac/PixelDumpSupportMac.mm:
- (restoreColorSpace):
- (failedGettingCurrentProfile):
- (setDefaultColorProfileToRGB):
-
-2008-05-08 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Darin Adler.
-
- Clean up Drosera so that it will build 64-bit.
-
- * Drosera/mac/DebuggerApplication.mm:
- (-[DebuggerApplication numberOfRowsInTableView:]): Use NSInteger rather than int.
- (-[DebuggerApplication tableView:objectValueForTableColumn:row:]): Ditto.
- * Drosera/mac/Drosera.xcodeproj/project.pbxproj: Use the default value for VALID_ARCHS.
-
-2008-05-07 David Kilzer <ddkilzer@apple.com>
-
- Use File::Find and Getopt::Long in make-js-test-wrappers
-
- Reviewed by Darin Adler.
-
- * Scripts/make-js-test-wrappers:
- - Updated Apple copyright statement.
- - Added command-line switch parsing and -h|--help switch.
- - Allowed user to pass list of files/directories on which to do
- a restricted search for TEMPLATE.html files. The default
- behavior is still to search the entire LayoutTests directory.
- - Removed duplicate 'use strict' statement.
- - Replaced use of `find` statements with File::Find::find().
- - Remove unneeded chomp() calls now that we use File::Find.
- (directoryFilter): Added. Filters .svn directories when used
- with File::Find::find().
- (findTemplateFiles): Added. Returns a list of TEMPLATE.html
- files found.
-
-2008-05-05 Steve Falkenburg <sfalken@apple.com>
-
- Copy dependencies of ImageDiff, DumpRenderTree in post-build step.
-
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/ImageDiff.vcproj:
-
-2008-05-05 Adele Peterson <adele@apple.com>
-
- Reviewed by Adam.
-
- Look for the right ImageDiff executable for debug builds.
-
- * Scripts/run-webkit-tests:
-
-2008-05-05 Darin Adler <darin@apple.com>
-
- * Scripts/run-webkit-tests: Ignore a Java leak showing up in the WebKit
- leak tests.
-
-2008-05-05 Ariya Hidayat <ariya.hidayat@trolltech.com>
-
- Reviewed by Simon.
-
- In the Qt's DumpRenderTree, adjust the web view properly (because W3C SVG
- tests expect to be 480x360)
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::open):
-
-2008-05-02 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Adam Roben.
-
- - add an option to svn-apply to set the reviewer name in change logs
-
- * Scripts/svn-apply: Added a [-r|--reviewer name] option.
-
-2008-05-01 David Kilzer <ddkilzer@apple.com>
-
- Clean up configuration usage in run-webkit-tests
-
- Reviewed by Adam.
-
- * Scripts/run-webkit-tests: Parse configuration switches using
- passedConfiguration() from webkitdirs.pm like every other script.
- Note that we must still call setConfiguration() afterwards in
- case the --configuration switch was used. Use $configurationOption
- when running build-dumprendertree instead of recreating the switch.
-
-2008-04-29 Adam Roben <aroben@apple.com>
-
- Restore the beloved COMPtr::operator&
-
-2008-04-29 Adam Roben <aroben@apple.com>
-
- Windows build fixes
-
- Replace COMPtr::operator& with COMPtr::adoptionPointer.
-
-2008-04-25 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin Adler.
-
- Fix run-webkit-tests --threading
- and provisionally fix <https://bugs.webkit.org/show_bug.cgi?id=18661>
- Proxy server issue in Sunday's Nightly
-
- * DumpRenderTree/pthreads/JavaScriptThreadingPthreads.cpp:
- (runJavaScriptThread):
- (startJavaScriptThreads):
- (stopJavaScriptThreads):
- Spawned threads were immediately detached, unlike the original ones, so joining them
- made no sense. Now, all threads are created detached, and stopJavaScriptThreads() just
- waits for them all to exit.
-
-2008-04-28 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by Simon.
-
- Reset dumping resource load callbacks to false for the next test
-
-
- * DumpRenderTree/qt/jsobjects.cpp:
- (LayoutTestController::reset):
-
-2008-04-28 Tor Arne Vestbø <tavestbo@trolltech.com>
-
- Reviewed by Simon.
-
- Adapt to the latest API changes in WebKit/qt/Api.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- * DumpRenderTree/qt/jsobjects.cpp:
-
-2008-04-26 Robin Dunn <robin@alldunn.com>
-
- Reviewed by Kevin Ollivier.
-
- Delete the DerivedSources after make clean has been done so that the DerivedSources
- don't get re-created. Also, use the proper extension for the Win wxPython extension.
-
- https://bugs.webkit.org/show_bug.cgi?id=18756
-
- * wx/build-wxwebkit:
-
-2008-04-26 Adam Barth <hk9565@gmail.com>
-
- Reviewed by Adam Roben and Sam Weinig.
-
- Updates LayoutTestController to use host instead of domain.
-
- Collin Jackson <collinj-webkit@collinjackson.com> also contributed to this patch.
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setDatabaseQuota):
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:frame:exceededDatabaseQuotaForSecurityOrigin:database:]):
-
-2008-04-26 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix. Need the latest libpng. (Somehow my initial test passed without it.)
-
- * wx/install-unix-extras:
-
-2008-04-26 Robin Dunn <robin@alldunn.com>
-
- Reviewed by Kevin Ollivier.
-
- Allow the user to set the path to SWIG using an environment variable.
-
- https://bugs.webkit.org/show_bug.cgi?id=18660
-
- * wx/build-wxwebkit:
-
-2008-04-26 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix. Download the latest libpng version for building the
- dependencies.
-
- * wx/install-unix-extras:
-
-2008-04-25 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by Simon.
-
- Implement dumping of resource load callbacks to pass http/tests/xmlhttprequest/abort-should-cancel-load.html
-
- Similar to Editing and Frameloading we do the dumping within WebCore
-
-
- * DumpRenderTree/qt/jsobjects.cpp:
- (LayoutTestController::dumpResourceLoadCallbacks):
- * DumpRenderTree/qt/jsobjects.h:
-
-2008-04-24 Jan Michael Alonzo <jmalonzo@unpluggable.com>
-
- Reviewed by Maciej Stachowiak.
-
- http://bugs.webkit.org/show_bug.cgi?id=18485
- Typo and documentation fix for build-webkit
-
- * Scripts/build-webkit:
-
-2008-04-24 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam.
-
- Don't call fprintf from the signal handler.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (crashHandler):
-
-2008-04-23 Adam Roben <aroben@apple.com>
-
- Make crashes be reported as crashes, not hangs
-
- Reviewed by David Kilzer.
-
- * Scripts/run-webkit-tests:
- (top level): Use the new status field of the output from
- readFromDumpToolWithTimer to determine if the test crashed or hung.
- (sub readFromDumpToolWithTimer):
- - If we fail to read a line and $! is not EAGAIN, then we've crashed
- and should not try to read any more.
- - Changed the timedout field to a more general status field.
-
-2008-04-22 David Kilzer <ddkilzer@apple.com>
-
- Bug 18683: update-webkit returns 0 even if it fails
-
- <https://bugs.webkit.org/show_bug.cgi?id=18683>
-
- Reviewed by Mitz Pettel.
-
- * Scripts/update-webkit:
- (runSvnUpdate): Die if close() fails.
-
-2008-04-21 Adam Roben <aroben@apple.com>
-
- Flush stdout/stderr after printing every #EOF separator
-
- This fixes a hang when running the pixel tests on Windows
-
- Reviewed by Mitz Pettel.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (dump):
- (main): We don't have to flush stdout/stderr in the arguments loop
- anymore, as runTest flushes for us.
-
-2008-04-21 Adam Roben <aroben@apple.com>
-
- Fix pixel tests
-
- * Scripts/run-webkit-tests:
- (sub readFromDumpToolWithTimer): Use readline instead of read to
- ensure that we don't read past the #EOF marker.
-
-2008-04-21 Holger Hans Peter Freyther <holger.freyther@trolltech.com>
-
- Reviewed by Simon.
-
- Build fix for Qt 4.3
-
- * When building WebCore/internal make sure the QT_[BEGIN,END]_NAMESPACE is
- always defined. Do this by adding defines to the compiler line
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
-
-2008-04-19 Mike Hommey <glandium@debian.org>
-
- Reviewed by Alp Toker.
-
- Don't build GtkLauncher and DumpRenderTree with rpath.
-
- * GNUmakefile.am:
-
-2008-04-18 Jan Michael Alonzo <jmalonzo@unpluggable.com>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=16620
- [GTK] Autotools make dist and make check support
-
- Cleanups.
-
- * GNUmakefile.am:
-
-2008-04-18 Adam Roben <aroben@apple.com>
-
- Drop the hang timer to 30 seconds
-
- This matches what DRT/mac was using.
-
- Reviewed by Mitz Pettel.
-
- * Scripts/run-webkit-tests:
-
-2008-04-18 Adam Roben <aroben@apple.com>
-
- Get rid of DRT's Watchdog
-
- run-webkit-tests now detects hangs and samples DRT as needed.
-
- Reviewed by Mitz Pettel.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Removed
- Watchdog* files from the project.
- * DumpRenderTree/Watchdog.cpp: Removed.
- * DumpRenderTree/Watchdog.h: Removed.
- * DumpRenderTree/mac/DumpRenderTree.mm: Removed uses of Watchdog
- (dumpRenderTree):
- (runTest):
- * DumpRenderTree/mac/WatchdogMac.h: Removed.
- * DumpRenderTree/mac/WatchdogMac.mm: Removed.
- * Scripts/run-webkit-tests:
- (sub testCrashedOrTimedOut): Call sampleDumpTool() if we timed out.
- (sub sampleDumpTool): Added. Writes a sample report to
- ~/Library/Logs/DumpRenderTree/HangReport.txt.
-
-2008-04-18 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Holger.
-
- Adapt to the API changes in WebKit/qt
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::WebPage::WebPage):
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::initJSObjects):
- (WebCore::DumpRenderTree::dumpFramesAsText):
- (WebCore::DumpRenderTree::dump):
-
-2008-04-17 Adam Roben <aroben@apple.com>
-
- Fix many tests on Windows
-
- * Scripts/run-webkit-tests:
- (readFromDumpToolWithTimer):
- - Use read instead of sysread to ensure that we don't interfere with
- other uses of buffered IO in this script.
- (setFileHandleNonBlocking): Actually set the filehandle to blocking
- when specified.
-
-2008-04-17 Adam Roben <aroben@apple.com>
-
- Fix ~10 tests
-
- * Scripts/run-webkit-tests: Only remove the newline after #EOF, not
- whatever newline happens to be at the end of what we've read.
-
-2008-04-17 Adam Roben <aroben@apple.com>
-
- Remove DRT/win's hang timer
-
- run-webkit-tests takes care of this for us now
-
- Reviewed by Anders Carlsson.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
-
-2008-04-17 Adam Roben <aroben@apple.com>
-
- Don't wait for the hang timer twice in the case of a hang
-
- Previously we'd wait for a hang while reading both stdout and stderr
- from DRT. Now we'll only wait for one or the other.
-
- Reviewed by Anders Carlsson.
-
- * Scripts/run-webkit-tests:
- (top level): Don't wait for stderr to time out if stdout already timed
- out.
- (readFromDumpToolWithTimer): If $dontWaitForTimeOut is true, quit
- after the first read that returns no data.
-
-2008-04-17 Adam Roben <aroben@apple.com>
-
- Don't throw away the output from timed out tests
-
- Reviewed by Anders Carlsson.
-
- * Scripts/run-webkit-tests:
- (top level): Updated for changes to readFromDumpToolWithTimer.
- (readFromDumpToolWithTimer): Return a hash that contains both the
- output and whether or not the test timed out.
-
-2008-04-17 Adam Roben <aroben@apple.com>
-
- Make the hang timer 60 seconds
-
- * Scripts/run-webkit-tests:
-
-2008-04-17 Adam Roben <aroben@apple.com>
-
- Get rid of carriage returns in DRT/win's stderr
-
- Reviewed by Eric Seidel.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (main): Mark stderr as binary like we already do for stdout.
-
-2008-04-17 Adam Roben <aroben@apple.com>
-
- Fix Bug 17678: run-webkit-tests should have a watchdog timer (and
- timeout long tests)
-
- <https://bugs.webkit.org/show_bug.cgi?id=17678>
-
- We now abort tests that take longer than 60 seconds to produce output.
- This matches the watchdog timer in DRT/mac and DRT/win (which we can
- now remove).
-
- Reviewed by Eric Seidel.
-
- * Scripts/run-webkit-tests:
- (top level): Read DRT's output using the new readFromDumpToolWithTimer
- subroutine. If readFromDumpToolWithTimer returns undefined it means
- the test timed out, so we register the test as a hang and move on.
- (sub testCrashedOrTimedOut): Renamed from testCrashed. Now handles
- both crashed and timed out tests. If the test timed out, we kill DRT
- before returning.
- (sub linksForTimedOutTest): Added. We don't have any output to link to for
- tests that timed out.
- (sub recordActualResultsAndDiff): Don't call length on undefined.
- (sub readFromDumpToolWithTimer): Added. Performs non-blocking reads
- from a filehandle until an #EOF is reached or
- $maximumSecondsWithoutOutput have elapsed.
- (sub setFileHandleNonBlocking): Marks a filehandle as blocking or
- non-blocking.
-
-2008-04-17 Adam Roben <aroben@apple.com>
-
- Refactor test results page generation
-
- Reviewed by Eric Seidel.
-
- * Scripts/run-webkit-tests:
- (sub htmlForResultsSection): Added. Takes a set of tests, a
- description, and a subroutine to generate the links for each test, and
- creates a HTML string containing a table of the tests and their
- links.
- (sub linksForExpectedAndActualResults): Added. Replaces the
- htmlForExpectedAndActualResults subroutine.
- (sub linksForMismatchTest): Added.
- (sub linksForCrashOrErrorTest): Added.
- (sub linksForNewTest): Added.
-
-2008-04-17 Adam Roben <aroben@apple.com>
-
- Print the extension for all tests in the test results page
-
- Reviewed by Eric Seidel.
-
- * Scripts/run-webkit-tests:
-
-2008-04-17 Adam Roben <aroben@apple.com>
-
- Move code that counts finished tests into a subroutine
-
- Reviewed by Eric Seidel.
-
- * Scripts/run-webkit-tests:
- (sub countFinishedTest): Added.
-
-2008-04-17 Adam Roben <aroben@apple.com>
-
- Move code that handles a crash into a subroutine
-
- Reviewed by Eric Seidel.
-
- * Scripts/run-webkit-tests:
- (sub testCrashed): Added.
-
-2008-04-17 Eric Seidel <eric@webkit.org>
-
- Reviewed by hyatt.
-
- Rename RenderView to RenderViewport in the next rename patch.
-
- * Scripts/do-webcore-rename:
-
-2008-04-17 Mario Bensi <mbensi@pleyo.com>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=18543
- DumpRenderTree gtk freeze
-
- fix DumpRenderTree gtk freeze
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (dump):
-
-2008-04-15 Anders Carlsson <andersca@apple.com>
-
- Add missing ;
-
- * Scripts/build-webkit:
-
-2008-04-15 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Adam.
-
- Add ENABLE_OFFLINE_WEB_APPLICATIONS to FEATURE_DEFINES.
-
- * Scripts/build-webkit:
-
-2008-04-15 Andre Poenitz <andre.poenitz@trolltech.com>
-
- Reviewed by Simon.
-
- Fix compilation with Qt namespaces
-
- Qt can be configured to have all of its classes inside a specified namespaces.
- This is for example used in plugin/component environments like Eclipse.
-
- This change makes it possible to let the Qt port compile against a namespaced
- Qt by the use of macros Qt provides to properly forward declare Qt classes in
- the namespace.
-
- * DumpRenderTree/qt/DumpRenderTree.h:
-
-2008-04-08 Kevin Ollivier <kevino@theolliviers.com>
-
- Reviewed by Darin Adler.
-
- Add a script that propagates any file changes made to the Bakefiles
- over to GTK and Qt build systems. Still needs to be wired into
- those ports though.
-
- * Scripts/update-sources-list.py: Added.
-
-2008-04-08 Mark Rowe <mrowe@apple.com>
-
- Clean up after Brady.
-
- * DumpRenderTree/mac/DumpRenderTree.mm: Add an include so that NSInteger can be found.
-
-2008-04-08 Brady Eidson <beidson@apple.com>
-
- Reviewed by Mitzpettel
-
- Fixed http://bugs.webkit.org/show_bug.cgi?id=18302
- -WebArchive subresources dump in random order, intermittent failures
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (compareResourceURLs): Sorting function based on the resource URLs
- (serializeWebArchiveToXML): Sort the subresource array
-
-2008-04-07 Brady Eidson <beidson@apple.com>
-
- OMG, BUILD - please!
-
- * Scripts/build-webkit:
-
-2008-04-03 Holger Hans Peter Freyther <holger.freyther@trolltech.com>
-
- Reviewed by Simon.
-
- * Enable running http tests for Qt again. Failing tests can be put into the skipped list.
- * Running these tests on windows and other platforms might need some work.
-
- * Scripts/run-webkit-tests:
-
-2008-04-03 Holger Hans Peter Freyther <holger.freyther@trolltech.com>
-
- Reviewed by Simon.
-
- * For the http tests we need the output of the FrameLoaderClient. The QtWebKit API
- is not exporting enough to create the output in DRT itself. Settle with the approach
- Lars has taken for the Editing support and add branches to our FrameLoaderClient code.
- * run-webkit-tests http/tests(/loading) can now be executed.
- * For tests in loading/ directories we are going to throw away the dirty
- QWebPage to start with something clean.
-
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
-
-2008-04-03 Holger Hans Peter Freyther <holger.freyther@trolltech.com>
-
- Reviewed by Simon.
-
- * Treat http and https as special URLs as well. Change the main.cpp and
- DumpRenderTree.cpp to handle http and https URIs as input.
- * I'm not doing the clean up and merging of these two checks now.
-
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::readStdin):
- * DumpRenderTree/qt/main.cpp:
- (main):
-
-2008-04-03 Holger Hans Peter Freyther <holger.freyther@trolltech.com>
-
- Reviewed by Simon.
-
- * Remove dumpFrameLoadCallbacks from simple-subframe.html because it is
- located in a directory with the name "loading". And this will autoamtically
- enable dumping.
- * Remove this method from the LayoutTestController as it is unused now and this
- avoids adding it to the DRT of the Qt port.
-
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setPrivateBrowsingEnabledCallback):
-
-2008-04-01 Christian Dywan <christian@imendio.com>
-
- Build fix for GCC 4.3.
-
- * DumpRenderTree/gtk/WorkQueueItemGtk.cpp: include string.h
-
-2008-04-01 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Holger.
-
- Fix Qt DRT run by also printing EOF on stderr, as expected by
- run-webkit-tests.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::dump):
-
-2008-03-31 Julien Chaffraix <julien.chaffraix@gmail.com>
-
- Reviewed by Darin Adler.
-
- Bug 17665: determineSourceDir() dies if $sourceDir has a trailing backslash
-
- Remove trailing '/' in $sourceDir in determineSourceDir().
-
- Fix suggested by Dmitriy Kazachkov.
-
- * Scripts/webkitdirs.pm:
-
-2008-03-29 Adam Roben <aroben@apple.com>
-
- Update for rename of an IWebViewPrivate method
-
- Reviewed by Mitz Pettel.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (createWebViewAndOffscreenWindow):
-
-2008-03-26 Antti Koivisto <antti@apple.com>
-
- Reviewed by Anders.
-
- Enable SVG animation support by default.
-
- * Scripts/build-webkit:
-
-2008-03-25 Adam Roben <aroben@apple.com>
-
- Windows build fix
-
- * DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj:
- Add $(WebKitLibrariesDir)\include to the include path so we can find
- stdint.h there.
-
-2008-03-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Mark.
-
- Clean up SVG features message to be less confusing.
-
- * Scripts/build-webkit:
-
-2008-03-24 Sam Weinig <sam@webkit.org>
-
- Reviewed by Dave Hyatt.
-
- Add EventSender.zoomPageIn/zoomPageOut support to DRT.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/mac/EventSendingController.mm:
- (+[EventSendingController isSelectorExcludedFromWebScript:]):
- (-[EventSendingController zoomPageIn]):
- (-[EventSendingController zoomPageOut]):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/win/EventSender.cpp:
- (textZoomInCallback):
- (textZoomOutCallback):
- (zoomPageInCallback):
- (zoomPageOutCallback):
-
-2008-03-24 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Mark Rowe.
-
- - update bisect-builds for Safari 3.1
-
- * Scripts/bisect-builds: Added Safari 3.1 and the corresponding minimal
- revision, r29711.
-
-2008-03-21 Rodney Dawes <dobey@wayofthemonkey.com>
-
- Reviewed by Holger.
-
- http://bugs.webkit.org/show_bug.cgi?id=17981
-
- Add webcore and javascriptcore cppflags to programs' _CPPFLAGS.
-
- * GNUmakefile.am:
-
-2008-03-21 Adam Roben <aroben@apple.com>
-
- Remove a non-working mirror from cygwin-downloader and add the ruby package
-
- * CygwinDownloader/cygwin-downloader.py:
- * CygwinDownloader/cygwin-downloader.zip: Updated.
-
-2008-03-20 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Sam Weinig.
-
- Ensure that the defines generated for FEATURE_DEFINES are sorted so that they will match the default settings of each project.
- This will prevent the world from being rebuilt if you happen to switch between building in Xcode and with build-webkit on the
- command-line.
-
- * Scripts/build-webkit:
-
-2008-03-17 Eric Seidel <eric@webkit.org>
-
- Reviewed by Dan Bernstein.
-
- Fix bogus argCount check breaking plugin test.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
-
-2008-03-17 Eric Seidel <eric@webkit.org>
-
- Reviewed by darin.
-
- Cleanup PluginObject.cpp and add support for testing
- converting from int -> identifier -> string
- and from string -> identifier -> int
- as well as round-tripping ints and stings through identifiers
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (pluginGetProperty):
- (pluginSetProperty):
- (testDOMAccess):
- (stringVariantToIdentifier):
- (int32VariantToIdentifier):
- (doubleVariantToIdentifier):
- (variantToIdentifier):
- (testIdentifierToString):
- (testIdentifierToInt):
- (testCallback):
- (getURL):
- (removeDefaultMethod):
- (getURLNotify):
- (testInvokeDefault):
- (destroyStream):
- (testEnumerate):
- (testGetIntIdentifier):
- (testGetProperty):
- (testEvaluate):
- (testGetPropertyReturnValue):
- (pluginInvoke):
- (pluginInvokeDefault):
- (pluginInvalidate):
- (pluginAllocate):
- (pluginDeallocate):
- (handleCallback):
-
-2008-03-16 Kevin Ollivier <kevino@theolliviers.com>
-
- Rubber stamped by Darin Adler.
-
- Add set-webkit-configuration support for wx port, and centralize
- build dir location setting.
-
- http://bugs.webkit.org/show_bug.cgi?id=17790
-
- * wx/browser/browser.bkl:
- * wx/build-wxwebkit:
-
-2008-03-15 Darin Adler <darin@apple.com>
-
- * Scripts/commit-log-editor: Include the name line of the change log entry.
- A long time ago I designed this script to not include the name because I
- thought it was redundant (same as the name of the person checking in), but
- nowadays it's more common for someone to check something in done by someone
- else.
-
- * Scripts/do-webcore-rename: Added some more planned renames and removed
- some that were already done "by hand".
-
-2008-03-13 Brent Fulgham <bfulgham@gmail.com>
-
- Reviewed by Darin Adler.
-
- Correct paths to vsprops files so they use the environment
- variable, rather than hard-coded path.
- http://bugs.webkit.org/show_bug.cgi?id=17797.
-
- * WinLauncher/WinLauncher.vcproj: Correct paths to vsprops.
-
-2008-03-12 Steve Falkenburg <sfalken@apple.com>
-
- VSExpress build fix
-
- * WinLauncher/WinLauncher.vcproj:
-
-2008-03-12 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by Alp Toker.
-
- Run testkjs in the correct productsDir in the GTK+ port.
-
- * Scripts/run-javascriptcore-tests:
-
-2008-03-11 Brent Fulgham <bfulgham@gmail.com>
-
- Reviewed by Adam Roben.
-
- Enabled WinLauncher as part of normal Windows build.
- http://bugs.webkit.org/show_bug.cgi?id=17715.
-
- * WinLauncher/WinLauncher.vcproj: Update to use vsprops so that
- it can find the proper libraries to link against.
-
-2008-03-10 Julien Chaffraix <julien.chaffraix@gmail.com>
-
- Reviewed and landed by Darin Adler.
-
- http://bugs.webkit.org/show_bug.cgi?id=17581
- Bug 17581: Use of uninitialized value in string ne at WebKitTools/Scripts/run-webkit-tests line 1576.
-
- Remove the previous warning which occurs when the --random option is used.
-
- * Scripts/run-webkit-tests: verify that $component[0] is defined before checking for
- its inequality
-
-2008-03-07 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Darin Adler.
-
- Done with Lars.
-
- Ported the netscape test plugin to QWebPluginFactory.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::WebPage::WebPage):
- * DumpRenderTree/qt/main.cpp:
- * DumpRenderTree/qt/testplugin.cpp:
- (TestPlugin::plugins):
- (TestPlugin::create):
- * DumpRenderTree/qt/testplugin.h:
-
-2008-03-09 Steve Falkenburg <sfalken@apple.com>
-
- Stop Windows build if an error occurs in a prior project.
-
- Rubber stamped by Darin Adler.
-
- * Drosera/win/Drosera.vcproj/Drosera.vcproj:
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/ImageDiff.vcproj:
- * DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj:
-
-2008-03-08 Julien Chaffraix <julien.chaffraix@gmail.com>
-
- Reviewed by Mark Rowe.
-
- DRT build fix for Tiger.
-
- * DumpRenderTree/mac/DumpRenderTreeMac.h: Define BUILDING_ON_TIGER.
-
-2008-03-07 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Fix WebKit build with GCC 4.2.
-
- * DumpRenderTree/mac/ResourceLoadDelegate.mm: Use correct argument type in method signature.
-
-2008-03-07 Stephanie Lewis <slewis@apple.com>
-
- Reviewed by Oliver.
-
- Add Windows part of <rdar://problem/5693690>
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (dump):
- (main):
-
-2008-03-07 Alp Toker <alp@atoker.com>
-
- Back out the r30818, r30819 build fix attempts now the GTK+ build
- server has been upgraded.
-
- * Scripts/webkitdirs.pm:
-
-2008-03-07 Stephanie Lewis <slewis@apple.com>
-
- Reviewed by Geoff.
-
- <rdar://problem/5693690> run-webkit-tests swallows STDERR output, including WebCore LEAK messages
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dump): push EOF to stderr after every test
- * Scripts/run-webkit-tests: collect stderr output and print it
-
-2008-03-07 Steve Falkenburg <sfalken@apple.com>
-
- Get pdevenv working with Visual Studio Express.
-
- Reviewed by Adam.
-
- * Scripts/pdevenv:
-
-2008-03-06 Adele Peterson <adele@apple.com>
-
- Reviewed by Darin Adler.
-
- Updated for testing <rdar://problem/5785895> Implement hasFocus() for HTMLDocument (HTML5)
-
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webViewFocus:]): Remove duplicate code that was also in LayoutTestController::setWindowIsKey
- (-[UIDelegate webViewUnfocus:]): Added. In Safari, the default is to focus another window if there is one.
- To easily test cases where the window is unfocused, I made this just call setWindowIsKey(false).
-
-2008-03-06 Matt Lilek <webkit@mattlilek.com>
-
- Reviewed by Adam Roben.
-
- Bug 17691: REGRESSION: FindSafari doesn't work
- http://bugs.webkit.org/show_bug.cgi?id=17691
-
- Swap my change from r30394 to use the Release libraries instead of Debug
- since some machines don't have the Debug version.
-
- * FindSafari/FindSafari.vcproj:
-
-2008-03-06 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Sam and Tim.
-
- <rdar://5631450> Drosera: breakpoint indicators disappear after the
- script is finished running.
- - If there is a pre-existing breakpoint on a line when the file is
- updated we need to redraw it.
-
- * Drosera/debugger.js:
-
-2008-03-06 Brady Eidson <beidson@apple.com>
-
- Tiger build fix...?
-
- * DumpRenderTree/mac/WatchdogMac.mm:
-
-2008-03-06 Brady Eidson <beidson@apple.com>
-
- Reviewed by Darin
-
- Added a cross-platform Watchdog thread to DRT.
-
- The current watchdog in both DRTWin and DRTMac is Timer based. Therefore, deadlocks and long running
- main thread hangs still affect DRT.
-
- By placing the watchdog on a thread and having DRT "check in" after each test, long-running hangs
- and true deadlocks can be caught.
-
- There is one hook for platform specific code. As I did my development and testing on Mac, and Mac has
- `sample` available, the Mac implementation of this hook samples the process before it is killed.
-
- I arbitrarily chose 30 seconds as the timeout for now - this can be tweaked easily if we find a need.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/mac/Configurations/Base.xcconfig: Added LINKER_DISPLAYS_MANGLED_NAMES
-
- * DumpRenderTree/ForwardingHeaders/wtf/Locker.h: Added.
- * DumpRenderTree/ForwardingHeaders/wtf/Threading.h: Added.
-
- * DumpRenderTree/Watchdog.cpp: Added.
- (Watchdog::Watchdog):
- (Watchdog::~Watchdog):
- (Watchdog::start):
- (Watchdog::stop):
- (Watchdog::checkIn):
- (Watchdog::setWatchdogInterval):
- (Watchdog::handleHang):
- (Watchdog::watchdogThreadStart):
- (Watchdog::watchdogThread):
- * DumpRenderTree/Watchdog.h: Added.
-
- * DumpRenderTree/mac/WatchdogMac.h: Added.
- * DumpRenderTree/mac/WatchdogMac.mm: Added.
- (WatchdogMac::handleHang): Sample the process and write it out to a file
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dumpRenderTree): Setup and start the watchdog before running any tests
- (runTest): Checkin with the watchdog after each test
-
-2008-03-05 Alp Toker <alp@atoker.com>
-
- Attempt to get the autotools build working again on the bot with
- build-webkit.
-
- Force the use of /bin/bash since we seem to have bash-isms in the
- configure script right now.
-
- * Scripts/webkitdirs.pm:
-
-2008-03-05 Alp Toker <alp@atoker.com>
-
- Re-attempt to switch to the autotools build system for GTK+.
-
- Change scripts to continue when distclean fails.
-
- * Scripts/webkitdirs.pm:
-
-2008-03-05 Alp Toker <alp@atoker.com>
-
- Force qmake for the GTK+ build until we get the build bot to succeed
- with autotools (currently dies at make distclean)
-
- * Scripts/webkitdirs.pm:
-
-2008-03-04 Alp Toker <alp@atoker.com>
-
- Reviewed by Mark Rowe.
-
- Switch the default GTK+ build system from qmake to autotools.
-
- qmake can still be used by defining WEBKIT_BUILD_SYSTEM=qmake
-
- * Scripts/build-webkit:
- * Scripts/run-launcher:
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
-
-2008-03-04 Sam Weinig <sam@webkit.org>
-
- Reviewed by Darin Adler.
-
- * Scripts/do-webcore-rename: Update renaming plan.
-
-2008-03-02 Brent Fulgham <bfulgham@gmail.com>
-
- Reviewed by Alp Toker.
-
- Remove some needless LIBS.
-
- * GNUmakefile.am:
-
-2008-03-02 Alp Toker <alp@atoker.com>
-
- Reviewed by Mark Rowe.
-
- Split the WebKit GTK+ build out of the WebCore build and change the
- shared object name to match the package name.
-
- * GNUmakefile.am:
-
-2008-03-01 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Tim Hatcher.
-
- Update Xcode configuration to support building debug and release from the mysterious future.
-
- * DumpRenderTree/mac/Configurations/Base.xcconfig:
-
-2008-02-29 David Kilzer <ddkilzer@apple.com>
-
- Pass the correct configuration switch (--Debug|--Release) to build-testkjs.
-
- Reviewed by Dan.
-
- Originally broken in r26838.
-
- * Scripts/run-javascriptcore-tests: Push configuration switch onto @xcodeArgs
- not local, unused @args variable.
-
-2008-02-29 David Kilzer <ddkilzer@apple.com>
-
- Bug 15754: webarchive layout tests fail when WebKit directory path contains symlinks
-
- <http://bugs.webkit.org/show_bug.cgi?id=15754>
-
- Reviewed by Geoff and Darin.
-
- We were using -[NSFileManager currentDirectoryPath] to get the current working directory,
- then removing that path from all file:/// URLs in the WebArchive output so these tests
- would pass no matter where they were run.
-
- The problem was that -[NSFileManager currentDirectoryPath] resolves symlinks in the
- current working directory, but the WebArchive does not. This left the current working
- directory in all file:/// URLs in the test output, and thus all tests failed, for any
- developer that used symlinks to get to their WebKit source directory.
-
- The fix is to look backwards for "/LayoutTests/" in the URL we're passed, and simply
- remove the current working directory path (no matter what it is) after "file://" but
- before "/LayoutTests/".
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (normalizeWebResourceURL): Removed unused oldURLBase argument. We now replace the
- current working directory as described above.
- (convertWebResourceResponseToDictionary): Remove unused oldURLBase argument. Update
- calls to normalizeWebResourceURL().
- (serializeWebArchiveToXML): Removed now unused cwdURL variable. Update calls to
- normalizeWebResourceURL() and convertWebResourceResponseToDictionary().
-
-2008-02-26 Robin Dunn <robin@alldunn.com>
-
- Reviewed by Kevin Ollivier.
-
- Improvements to the wx build script.
-
- http://bugs.webkit.org/show_bug.cgi?id=17492
-
- * wx/build-wxwebkit:
- - Update the Windows dll copying logic to copy dlls inside WebKitLibraries/win
- - Allow the build script to properly find wxPython includes under different setups
- - Make sure WX_PREFIX is set to WXWIN (wxWindows dir environment var.) if not defined
-
-2008-02-26 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Darin Adler.
-
- * Scripts/build-webkit: Add --universal and --64-bit flags to make building
- 64-bit architectures easy. Combine the two flags to build 4-way universal.
- * Makefile: Add "64" and "64u" make rules. Fix the universal rule to return
- non-zero when the build failes.
-
-2008-02-26 Jessica Kahn <jess@apple.com>
-
- Reviewed by Darin Adler.
-
- * Scripts/gdb-safari: Set WEBKIT_UNSET_DYLD_FRAMEWORK_PATH in gdb's environment,
- so that Safari inherits it when launched. Preexisting code in WebKit checks this
- environment variable, and if set, unsets DYLD_FRAMEWORK_PATH, so that applications
- launched by Safari continue to use the standard system WebKit.
-
-2008-02-25 Adam Roben <aroben@apple.com>
-
- Fix run-webkit-tests after r30394
-
- * Scripts/webkitdirs.pm: Never append _debug to FindSafari's
- executable name.
-
-2008-02-24 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: Make some updates based on a trial run of
- the renaming script.
-
-2008-02-24 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: More renaming plans.
-
-2008-02-23 Jan Michael Alonzo <jmalonzo@unpluggable.com>
-
- Rubber stamped by Darin Adler.
-
- Add separator '\' after libJavaScriptCore_la_LIBADD and cleanup
- whitespaces introduced in the previous commit.
-
- * GNUmakefile.am:
-
-2008-02-23 Jan Michael Alonzo <jmalonzo@unpluggable.com>
-
- Rubber-stamped by Darin Adler.
-
- * GNUmakefile.am: Add both GLOBALDEPS and WEBKITDEPS instead of DEPENDENCIES.
-
-2008-02-23 David Kilzer <ddkilzer@apple.com>
-
- Please clarify licensing for some files
- <http://bugs.webkit.org/show_bug.cgi?id=14970>
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp: Added
- copyright statement. Replaced license with newer Apple BSD-style license.
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h: Ditto.
- * DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.cpp: Ditto.
- * DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.h: Ditto.
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp: Ditto.
- * DumpRenderTree/win/TestNetscapePlugin/main.c: Ditto.
- * mangleme/LICENSE: Added (LGPL).
-
-2008-02-22 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Adam.
-
- <rdar://problem/5748781>
- https://bugs.webkit.org/show_bug.cgi?id=17413
- REGRESSION: Latest Nightly doesn't load Java plugin w/Safari 3.1b
-
- Copy the Java plug-in over to the new location.
-
- * FindSafari/FindSafari.cpp:
- (_tmain):
-
-2008-02-22 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Adam.
-
- <rdar://problem/5747325> REGRESSION: HTTP layout tests hang
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (runTest):
- Init the URL request with the correct timeout.
-
-2008-02-21 Mike Auty <mike.auty@gmail.com>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=17445
- [GTK] WebKit doesn't compile with LDFLAGS="-Wl,--as-needed"
-
- GTK+/autotools build system improvements
-
- The GNUmakefile.am files make use of the LDFLAGS variable to include library
- additions such as -ljpeg etc. Unfortunately, if these inclusions aren't made
- in LIBADD/LDADD variables, then they are mis-ordered during the linking.
-
- The as-needed flag discards libraries whose functions have not been needed by
- earlier libraries, which therefore makes the ordering important.
-
- This moves all -l library inclusion statements from LDFLAGS variables to
- LIBADD/LDADD variables.
-
- * GNUmakefile.am:
-
-2008-02-20 Brent Fulgham <bfulgham@gmail.com>
-
- Reviewed by Alp.
-
- - http://bugs.webkit.org/show_bug.cgi?id=17428
- Reenable a Windows-based launcher
-
- This patch reenables the venerable Spinneret application,
- changing its name to match the other lanch applications.
-
- * WinLauncher: Added.
- * WinLauncher/WinLauncher.cpp: Added.
- (WinLauncherWebHost::updateAddressBar):
- (WinLauncherWebHost::QueryInterface):
- (WinLauncherWebHost::AddRef):
- (WinLauncherWebHost::Release):
- (resizeSubViews):
- (_tWinMain):
- (MyRegisterClass):
- (InitInstance):
- (WndProc):
- (MyEditProc):
- (About):
- (loadURL):
- * WinLauncher/WinLauncher.h: Added.
- (WinLauncherWebHost::WinLauncherWebHost):
- (WinLauncherWebHost::didStartProvisionalLoadForFrame):
- (WinLauncherWebHost::didReceiveServerRedirectForProvisionalLoadForFrame):
- (WinLauncherWebHost::didFailProvisionalLoadWithError):
- (WinLauncherWebHost::didCommitLoadForFrame):
- (WinLauncherWebHost::didReceiveTitle):
- (WinLauncherWebHost::didReceiveIcon):
- (WinLauncherWebHost::didFinishLoadForFrame):
- (WinLauncherWebHost::didFailLoadWithError):
- (WinLauncherWebHost::didChangeLocationWithinPageForFrame):
- (WinLauncherWebHost::willPerformClientRedirectToURL):
- (WinLauncherWebHost::didCancelClientRedirectForFrame):
- (WinLauncherWebHost::willCloseFrame):
- (WinLauncherWebHost::windowScriptObjectAvailable):
- * WinLauncher/WinLauncher.ico: Added.
- * WinLauncher/WinLauncher.rc: Added.
- * WinLauncher/WinLauncher.vcproj: Added.
- * WinLauncher/resource.h: Added.
- * WinLauncher/small.ico: Added.
- * WinLauncher/stdafx.cpp: Added.
- * WinLauncher/stdafx.h: Added.
-
-2008-02-19 Brady Eidson <beidson@apple.com>
-
- Reviewed by Geoff
-
- Fixed a bug in DRT --threaded mode
-
- * DumpRenderTree/pthreads/JavaScriptThreadingPthreads.cpp:
- (startJavaScriptThreads): Don't detach the newly created thread. The later call to stopJavaScriptThreads() tries
- to pthread_join() each thread that had been created, but you can't join a detached thread!
-
-2008-02-18 Brady Eidson <beidson@apple.com>
-
- Changes by Geoff Garen, Reviewed by Darin
-
- Fix for <rdar://5747529> - ObjC Exception can cause JSLock to never be released
-
- DRT changes for test: platform/mac/plugins/webScriptObject-exception-deadlock.html
-
- [WebScriptObject valueForKey:] might throw an exception, and previously might have "leaked" the global JSLock
- This test calls valueForKey, then runs some arbitrary Javascript on a 2ndary thread. If the lock has leaked,
- this series of method calls will deadlock. If things are good, it will complete successfully.
-
- * DumpRenderTree/mac/ObjCController.m:
- (runJavaScriptThread):
- (+[ObjCController isSelectorExcludedFromWebScript:]):
- (+[ObjCController webScriptNameForSelector:]):
- (-[ObjCController testValueForKey]):
-
-2008-02-18 Matt Lilek <webkit@mattlilek.com>
-
- Reviewed by Adam.
-
- Remove FindSafari's Release configuration.
-
- * FindSafari/FindSafari.vcproj:
-
-2008-02-15 Adam Roben <aroben@apple.com>
-
- Fix a typo that broke the Mac build
-
- Reviewed by Mark.
-
- * Scripts/build-webkit:
-
-2008-02-14 Adam Roben <aroben@apple.com>
-
- Turn on cross-document messaging support by default
-
- Reviewed by Darin Adler.
-
- * Scripts/build-webkit:
-
-2008-02-14 Adam Roben <aroben@apple.com>
-
- Conditionalize cross-document messaging support
-
- The cross-document messaging parts of HTML 5 are in flux and we want
- ports to be able to turn off the support as needed.
-
- Note that the support is turned off by default right now. A subsequent
- commit will turn it on by default.
-
- Reviewed by Darin Adler.
-
- * Scripts/build-webkit:
-
-2008-02-14 Darin Adler <darin@apple.com>
-
- - fix Windows build
-
- * DumpRenderTree/win/UIDelegate.cpp:
- (UIDelegate::setStatusText): Update parameter types to match declaration.
-
-2008-02-14 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff G and Weinig.
-
- Add ability for DRT to report tests setting the status text.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (dumpStatusCallbacksCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:setStatusText:]):
- * DumpRenderTree/win/UIDelegate.cpp:
- * DumpRenderTree/win/UIDelegate.h:
-
-2008-02-13 Adam Roben <aroben@apple.com>
-
- Windows build fix
-
- * DumpRenderTree/ForwardingHeaders/wtf/MathExtras.h: Added.
-
-2008-02-13 Adam Roben <aroben@apple.com>
-
- Windows/GTK+ build fix
-
- * DumpRenderTree/LayoutTestController.cpp: #include MathExtras.h to
- get isnan.
-
-2008-02-13 Brady Eidson <beidson@apple.com>
-
- Reviewed by Darin Adler
-
- Add some much needed Database support to DRT
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (dumpDatabaseCallbacksCallback): Flag to control if the UIDelegate methods related to
- databases are called
- (clearAllDatabasesCallback): Allow a test to delete all databases
- (setDatabaseQuotaCallback): Allow a test to set the quota new origins will get
- (LayoutTestController::staticFunctions):
-
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::dumpDatabaseCallbacks):
- (LayoutTestController::setDumpDatabaseCallbacks):
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::clearAllDatabases):
- (LayoutTestController::setDatabaseQuota):
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::clearAllDatabases): Stubbed out
- (LayoutTestController::setDatabaseQuota): Ditto
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::clearAllDatabases): Stubbed out with error message
- (LayoutTestController::setDatabaseQuota): Ditto
-
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:frame:exceededDatabaseQuotaForSecurityOrigin:database:]): Print a
- message with details about the event then return a 5mb quota like before
-
-
-2008-02-12 Steve Falkenburg <sfalken@apple.com>
-
- Changes to support merged MIDL output.
-
- All COM interfaces are now generated to WebKit.h.
-
- Reviewed by Sam, Ada.
-
- * Drosera/win/BaseDelegate.h:
- * Drosera/win/DebuggerClient.cpp:
- * Drosera/win/DebuggerDocumentPlatform.cpp:
- * Drosera/win/Drosera.cpp:
- * Drosera/win/ServerConnection.cpp:
- * Drosera/win/ServerConnection.h:
- * DumpRenderTree/win/DumpRenderTree.cpp:
- * DumpRenderTree/win/EditingDelegate.h:
- * DumpRenderTree/win/EventSender.cpp:
- * DumpRenderTree/win/FrameLoadDelegate.cpp:
- * DumpRenderTree/win/FrameLoadDelegate.h:
- * DumpRenderTree/win/GCControllerWin.cpp:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- * DumpRenderTree/win/PolicyDelegate.h:
- * DumpRenderTree/win/ResourceLoadDelegate.h:
- * DumpRenderTree/win/UIDelegate.cpp:
- * DumpRenderTree/win/UIDelegate.h:
- * DumpRenderTree/win/WorkQueueItemWin.cpp:
-
-2008-02-10 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Oliver Hunt.
-
- - fix a memory leak
-
- * DumpRenderTree/cg/ImageDiffCG.cpp:
- (getDifferenceBitmap): Use a static CFMutableData instead of allocating
- and leaking the buffer each time.
-
-2008-02-07 Adam Roben <aroben@apple.com>
-
- Fix error in bisect-builds when responding "broken" for the first
- build
-
- Reviewed by Dave Kilzer.
-
- * Scripts/bisect-builds: Only try to test the build if the nightly
- info for the current index has not been deleted.
-
-2008-02-07 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Alexey Proskuryakov.
-
- Fixed two minor typos in the --root option, to get it working.
-
- * Scripts/run-sunspider:
- 1. Actually assign the function argument to our local variable.
- 2. Actually set the $root variable, so we don't try to build later.
-
-2008-02-05 Oliver Hunt <oliver@apple.com>
-
- RS=Eric.
-
- Re-enable foreignObject by default as it is needed for a number of non-fO
- related SVG tests and none of the old known crashes occur anymore.
-
- * Scripts/build-webkit:
-
-2008-02-05 Steve Falkenburg <sfalken@apple.com>
-
- Build fix. Don't override intermediate directory.
-
- * Drosera/win/Drosera.vcproj/Drosera.vcproj:
-
-2008-02-05 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Build fix for Windows. willCloseFrame is a pure virtual and we are
- forced to have an implementation.
-
- This partially reverts r30014.
-
- * DumpRenderTree/win/FrameLoadDelegate.cpp:
- (FrameLoadDelegate::willCloseFrame):
- * DumpRenderTree/win/FrameLoadDelegate.h:
-
-2008-02-05 Nikolas Zimmermann <zimmermann@kde.org>
-
- Reviewed by Holger.
-
- Don't build wrapper for SVGTestCase.js (special file for svg/dynamic-updates)
-
- * Scripts/make-js-test-wrappers:
-
-2008-02-05 Holger Freyther <zecke@selfish.org>
-
- Reviewed by Darin Adler.
-
- In http://bugs.webkit.org/show_bug.cgi?id=16853 it was identified that the
- the output of the willCloseFrame and didClearWindowObject FrameLoadDelegate
- depends on the order the tests are executed.
-
- Propose to remove willCloseFrame and didlCearWindowObject output from the
- FrameLoadDelegate and update the test results. The output of didClearWindowObject
- is not interesting for any of the current tests and we have other ways to find
- out if a frame was closed or not.
-
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- * DumpRenderTree/win/FrameLoadDelegate.cpp:
- (FrameLoadDelegate::didClearWindowObject):
- * DumpRenderTree/win/FrameLoadDelegate.h:
-
-2008-02-04 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Workaround for http://bugs.webkit.org/show_bug.cgi?id=16842
- Bug 16842: Hang in DRT in leaks mode due to signal handler doing unsafe things
-
- Don't install the signal handler unless we are running the pixel tests.
- It is currently only used to restore the color profile, but by catching
- signals we can trigger a deadlock in DRT while running leak tests.
- The deadlock is tracked by http://bugs.webkit.org/show_bug.cgi?id=16842,
- and a more complete fix will need to be developed to address this for
- pixel tests as well.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dumpRenderTree):
-
-2008-02-04 Mark Rowe <mrowe@apple.com>
-
- Gtk qmake build fix.
-
- * Scripts/webkitdirs.pm: Fix perl's complaint about an odd number of elements in anonymous hash.
-
-2008-02-04 Jan Michael Alonzo <jmalonzo@unpluggable.com>
-
- Reviewed by Alp Toker and Mark Rowe.
-
- http://bugs.webkit.org/show_bug.cgi?id=16618
- [GTK] build-webkit and run-webkit-tests autootools support
-
- * Scripts/build-webkit: added --database and --icon-database options
- * Scripts/run-launcher:
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
-
-2008-02-04 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Steve F.
-
- Partial fix for <rdar://5621244> Drag & Drop doesn't work correctly in DRT
-
- Implement required DRT functionality to allow majority of Drag and Drop testcases to work.
- Issues include:
- * Uses Sleep() to implement leapForward reliably.
- * 3 DND tests still fail for reasons that i have not yet determined
- * Has to explicitly ignore an extraneous WM_MOUSELEAVE that i am at a loss to explain
-
- * DumpRenderTree/win/EventSender.cpp:
- (leapForwardCallback):
- (mouseDownCallback):
- (doMouseUp):
- (mouseUpCallback):
- (doMouseMove):
- (mouseMoveToCallback):
- Minor updates to these functions to handle the different message queue structure.
-
- (replaySavedEvents):
- More complicated now. Where possible we just use the old while-loop model of execution,
- but when leapForward has been used we have to jump through some hoops and set up an
- inner event loop so that we can ensure messages get the correct time stamp.
-
- * DumpRenderTree/win/UIDelegate.cpp:
- (UIDelegate::doDragDrop):
- Call replaySavedEvents directly to force synchronous handling of drag and drop.
-
-2008-02-04 Rodney Dawes <dobey@wayofthemonkey.com>
-
- Reviewed by Alp Toker and Mark Rowe.
-
- Fix http://bugs.webkit.org/show_bug.cgi?id=17175.
- Bug 17175: Use of C++ compiler flags in CFLAGS
-
- * GNUmakefile.am: Use global_cxxflags as well as global_cflags in CXXFLAGS.
-
-2008-02-04 Darin Adler <darin@apple.com>
-
- Reviewed by Geoff.
-
- * Scripts/make-js-test-wrappers: Look at the whole LayoutTests tree, not just the fast
- and svg subdirectories. Added some more exceptions for the benefit of the fast/dom
- subdirectory.
-
-2008-02-04 Adam Roben <aroben@apple.com>
-
- Windows Apple-only build fix
-
- * DumpRenderTree/win/DumpRenderTree.vcproj: Added a new include
- directory.
-
-2008-02-04 Alp Toker <alp@atoker.com>
-
- Rubber-stamped by Mark Rowe.
-
- Remove all trailing whitespace in the GTK+ port and related
- components.
-
- * DumpRenderTree/gtk/DumpRenderTreeGtk.h:
- * DumpRenderTree/gtk/GCControllerGtk.cpp:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- * GNUmakefile.am:
-
-2008-02-01 Eric Seidel <eric@webkit.org>
-
- Reviewed by Oliver.
-
- Also search LayoutTests/svg for js-based tests.
-
- * Scripts/make-js-test-wrappers:
-
-2008-01-31 Alp Toker <alp@atoker.com>
-
- Rubber-stamped by Adam Roben.
-
- http://bugs.webkit.org/show_bug.cgi?id=17006
- [GTK] Header path should be webkit/webkit.h
-
- Move the GTK+ API sources as needed and update the build systems.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- * DumpRenderTree/gtk/DumpRenderTreeGtk.h:
- * DumpRenderTree/gtk/WorkQueueItemGtk.cpp:
- * GNUmakefile.am:
- * GtkLauncher/main.c:
-
-2008-01-30 Stephanie <slewis@apple.com>
-
- Reviewed by Geoff.
-
- Add an option to run-webkit-tests to merge leaks results and print the number of unique leaks found under a certain call depth. This should make it easier for the buildbots to track new leaks.
-
- * Scripts/run-webkit-tests:
-
-2008-01-30 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Adam Roben.
-
- One more debug (external) fix.
-
- * DumpRenderTree/win/DumpRenderTree.cpp: TestNetscapePlugin is built with a _debug suffix in both DebugInternal
- and Debug configurations.
-
-2008-01-29 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig. Sam Weinig.
-
- Fixed <rdar://problem/5692566> fast/encoding/mailto-always-utf-8.html
- fails when run after fast/dom/Window/window-property-shadowing.html (16902)
-
- Modified our policy delegates not to output window.name. Since a
- previous test may have explicitly set window.name, we can't rely on its
- implicit value in test results.
-
- * DumpRenderTree/mac/PolicyDelegate.mm:
- (-[PolicyDelegate webView:decidePolicyForNavigationAction:request:frame:decisionListener:]):
-
- * DumpRenderTree/win/PolicyDelegate.cpp:
- (PolicyDelegate::decidePolicyForNavigationAction):
-
-2008-01-29 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Tim Hatcher.
-
- <rdar://problem/5600926> WebCore on Tiger must link to its own copy of SQLite 3.4 or newer (so HTML database behavior will be correct).
-
- * Scripts/build-webkit: Copy SQLite static library and headers into the build directory.
-
-2008-01-29 David Kilzer <ddkilzer@apple.com>
-
- Refactor ChangeLog path code
-
- Reviewed by Adam.
-
- * Scripts/prepare-ChangeLog: Simplify code in one foreach() loop, and extract
- duplicate code in another foreach() loop.
-
-2008-01-29 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin Adler.
-
- <rdar://problem/5710692> All storage tests fail/crash
-
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:frame:exceededDatabaseQuotaForSecurityOrigin:database:]): Set an
- arbitrary quota of 5 megabytes.
-
- (-[UIDelegate webView:frame:quotaForSecurityOrigin:toCreateDatabase:withEstimatedSize:]):
- (-[UIDelegate webView:frame:quotaForSecurityOrigin:fromProposedQuota:database:]):
- Removed unused (I think) code.
-
- * DumpRenderTree/win/UIDelegate.cpp:
- (UIDelegate::QueryInterface): IWebUIDelegatePrivate3 is now supported.
- (UIDelegate::webViewPainted): A stub implementation.
- (UIDelegate::exceededDatabaseQuota): Set an arbitrary quota of 5 megabytes.
- * DumpRenderTree/win/UIDelegate.h:
-
-2008-01-27 Jan Michael Alonzo <jmalonzo@unpluggable.com>
-
- GTK+ DRT build fix for breakage introduced in r29822.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setPersistentUserStyleSheetLocation):
- (LayoutTestController::clearPersistentUserStyleSheet):
-
-2008-01-27 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Darin Adler.
-
- - add support for directory prologues and epilogues to run-webkit-tests
- - allow setting a persistent user style sheet in DumpRenderTree
- - activate the WebKit Layout Tests font in Windows DumpRenderTree
-
- * DumpRenderTree/LayoutTestController.cpp:
- (clearPersistentUserStyleSheetCallback): Added.
- (setPersistentUserStyleSheetLocationCallback): Added.
- (LayoutTestController::staticFunctions): Added.
- clearPersistentUserStyleSheet and setPersistentUserStyleSheet.
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (setPersistentUserStyleSheetLocation): Added.
- (resetWebViewToConsistentStateBeforeTesting): Added the user style sheet
- to the set of things this function resets. Now it either disables the
- user style sheet or sets it to the persistent user style sheet and
- enables it.
- * DumpRenderTree/mac/DumpRenderTreeMac.h:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setPersistentUserStyleSheetLocation): Added.
- (LayoutTestController::clearPersistentUserStyleSheet): Added.
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (setPersistentUserStyleSheetLocation): Added.
- (initialize): Added the WebKit Layout Tests font to the set of fonts to
- install.
- (resetWebViewToConsistentStateBeforeTesting): See DumpRenderTree.mm.
- * DumpRenderTree/win/DumpRenderTreeWin.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setPersistentUserStyleSheetLocation): Added.
- (LayoutTestController::clearPersistentUserStyleSheet): Added.
- * Scripts/run-webkit-tests: Changed to look for, and if found process in
- DumpRenderTree, files named run-webkit-tests-prologue.html and
- run-webkit-tests-epilogue.html in the resources subdirectory of any
- test directory and platform test results directory. The prologues are
- processed before the first test from the directory (and its
- subdirectories) is run, and the epilogues are processed after the last
- test from the directory is run. Platform-specific prologues and
- epilogues are processed in order of specificity.
-
-2008-01-25 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Mark Rowe.
-
- <rdar://problem/5699933> http/tests/security/cross-frame-access-get.html is still failing
-
- * DumpRenderTree/win/DumpRenderTree.cpp: (main): Clear HTTP cache to ensure consistent test environment
- (matching Mac DRT).
- * DumpRenderTree/win/DumpRenderTree.vcproj: Link to CFNetwork.
-
-2008-01-24 Sam Weinig <sam@webkit.org>
-
- Reviewed by Ada Chan.
-
- Fix for <rdar://5131975> DumpRenderTree doesn't support undo/redo
-
- - Adds simplified UndoManager to windows DRT to allow testing the
- undo/redo code paths in WebCore and WebKit. This is a temporary
- solution to an issue that should eventually be solved by having a
- shared UndoManager in WebKit.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (runTest):
- * DumpRenderTree/win/UIDelegate.cpp:
- (DRTUndoObject::DRTUndoObject):
- (DRTUndoObject::invoke):
- (DRTUndoStack::~DRTUndoStack):
- (DRTUndoStack::isEmpty):
- (DRTUndoStack::clear):
- (DRTUndoStack::push):
- (DRTUndoStack::pop):
- (DRTUndoManager::canRedo):
- (DRTUndoManager::canUndo):
- (DRTUndoManager::DRTUndoManager):
- (DRTUndoManager::removeAllActions):
- (DRTUndoManager::registerUndoWithTarget):
- (DRTUndoManager::redo):
- (DRTUndoManager::undo):
- (UIDelegate::UIDelegate):
- (UIDelegate::resetUndoManager):
- (UIDelegate::registerUndoWithTarget):
- (UIDelegate::removeAllActionsWithTarget):
- (UIDelegate::setActionTitle):
- (UIDelegate::undo):
- (UIDelegate::redo):
- (UIDelegate::canUndo):
- (UIDelegate::canRedo):
- * DumpRenderTree/win/UIDelegate.h:
-
-2008-01-23 Adam Roben <aroben@apple.com>
-
- Allow directories containing ChangeLogs to be passed to
- resolve-ChangeLogs
-
- Reviewed by David Kilzer.
-
- * Scripts/resolve-ChangeLogs:
- (sub findChangeLog): Return a ChangeLog contained within the specified
- directory if one exists.
-
-2008-01-23 Steve Falkenburg <sfalken@apple.com>
-
- <rdar://problem/5698732> Copyright strings should include 2008
-
- Reviewed by Sam.
-
- * Drosera/win/Drosera.vcproj/Drosera.rc:
- * DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.rc:
-
-2008-01-23 Alp Toker <alp@atoker.com>
-
- Rubber-stamped by Mark Rowe.
-
- Remove whitespace after -I in automake include lists.
-
- * GNUmakefile.am:
-
-2008-01-23 Michael Goddard <michael.goddard@trolltech.com>
-
- Reviewed by Lars Knoll <lars@trolltech.com>.
-
- Reworked the JavaScriptCore Qt bindings:
-
- * Update JS DRT controller for Qt JS binding changes.
- There were two functions that needed some changes
- so that the layout tests would work, so this makes
- a few tests pass again.
-
- * Bump the timeout for layout tests up to 11s.
- At least some tests have an internal timeout of
- 10 seconds, so make the waitUntilDone approach
- wait at least 11s. fast/dom/open-and-close-by-DOM.html
- is one of these - now the failure message is more
- accurate.
-
-
- * DumpRenderTree/qt/jsobjects.cpp:
- (LayoutTestController::waitUntilDone):
- * DumpRenderTree/qt/jsobjects.h:
-
-2008-01-22 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Darin and Adam.
-
- <rdar://problem/5688975>
- div element on microsoft site has wrong left offset.
-
- Add new method for testing the return vale of NPN_GetProperty.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (pluginInvoke):
-
-2008-01-22 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Adam Roben.
-
- <rdar://problem/5670257> editing/selection/4895428-3.html makes editing/selection/5131716-2.html fail
-
- * DumpRenderTree/win/EventSender.cpp: (makeEventSender): Reset static variables for a new test.
-
-2008-01-21 Jan Michael Alonzo <jmalonzo@unpluggable.com>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=16955
- Get errors when cross-compile webkit-gtk
-
- * GNUmakefile.am: Removed ICU_CFLAGS
-
-2008-01-21 Darin Adler <darin@apple.com>
-
- Reviewed by Mitz and Adam.
-
- * Scripts/svn-create-patch: Sort ChangeLog files first. Also slightly improved the
- sorting speed by doing all sort criteria in a single pass instead of three sorts.
-
-2008-01-21 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Holger.
-
- Fix focus chain handling and cycling through focusable objects (links) using tab/backtab.
-
- * Fix GraphicsContext::drawFocusRing to also draw single focus rects.
- * Implemented QWebPage::focusNextPrevChild by sending fake tab/shift-tab events
- and make the return value depend on whether we successfully determined a focusable
- node or not.
- * Changed QWebView::focusNextPrevChild() to call the base QWidget implementation correctly
- if we could not handle the focus chain ourselves.
- * Changed the focus policy of QWebView to correctly use WheelFocus instead of ClickFocus.
- * Made ChromeClientQt::canTakeFocus() and takeFocus() dummy method since they are only
- used to control the situation of stepping out of the focus chain inside the page.
- * Made inclusion of links in the focus chain configurable through QWebSettings::LinksIncludedInFocusChain.
- The layout tests expect this to be disabled but for the user it seems sensible to have it
- on by default, hence the default in qwebsettings.cpp
-
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::WebPage::WebPage):
-
-2008-01-19 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Alp Toker.
-
- Allow the --http flag to run-webkit-tests to override
- the default behaviour of disabling HTTP tests for Qt,
- Gtk and Wx.
-
- * Scripts/run-webkit-tests:
-
-2008-01-19 David Kilzer <ddkilzer@apple.com>
-
- <rdar://problem/5695344> check-for-global-initializers script never checks any object files
-
- Reviewed by Darin Adler.
-
- We now touch a check-for-global-initializers.timestamp file in
- the TARGET_TEMP_DIR directory to determine when new object files
- have been compiled and thus need to be checked. If the timestamp
- file doesn't exist, all object files will be checked.
-
- Previously the modification time of the "executable" (the
- framework binary, e.g., WebKit.framework/WebKit) was used, but
- since this was the last file modified at the end of the compile
- phase, no object files would ever get checked!
-
- Also added JSCustomSQLTransactionCallback.o to the list of files
- since it has static initializers in Debug builds of WebCore.
-
- * Scripts/check-for-global-initializers:
-
-2008-01-18 Adam Roben <aroben@apple.com>
-
- Build fix
-
- * Scripts/build-webkit:
-
-2008-01-18 Beth Dakin <bdakin@apple.com>
-
- Reviewed by Oliver.
-
- Update build-webkit to account for foreign-object being disabled by
- default.
-
- * Scripts/build-webkit:
-
-2008-01-18 Adam Roben <aroben@apple.com>
-
- Updated for method renames
-
- Reviewed by Adele.
-
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate webView:didCommitLoadForFrame:]):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setMainFrameIsFirstResponder):
- (LayoutTestController::setWindowIsKey):
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webViewFocus:]):
- * DumpRenderTree/win/FrameLoadDelegate.cpp:
- (FrameLoadDelegate::didCommitLoadForFrame):
-
-2008-01-18 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Adam Roben.
-
- Fix plugin-related tests in Debug_Internal configuration, which are failing because of CRT version mismatch
- between DRT and TestNetscapePlugin.
-
- * DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj: Added a Debug_Internal configuration.
- * DumpRenderTree/DumpRenderTree.sln: Use this configuration.
-
-2008-01-18 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Holger.
-
- Fix fast/dom/Window/window-resize.html
-
- In DRT connect the page's geometryChangeRequest signal to a slot that
- sets the geometry of the view widget.
-
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::WebPage::setViewGeometry):
- (WebCore::WebPage::WebPage):
-
-2008-01-17 Steve Falkenburg <sfalken@apple.com>
-
- Build fix.
-
- * Drosera/DroseraWin.make:
-
-2008-01-17 Darin Adler <darin@apple.com>
-
- * Scripts/run-webkit-tests: Fixed a bug number.
-
-2008-01-17 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Adam Roben.
-
- http://bugs.webkit.org/show_bug.cgi?id=16908
- run-webkit-tests complains about missing FindSafari.exe
-
- * Scripts/webkitdirs.pm: Append _debug as appropriate.
-
-2008-01-17 Steve Falkenburg <sfalken@apple.com>
-
- Re-add DEBUG_WEBKIT_HAS_SUFFIX.
-
- Rubber-stamped by Jon Honeycutt.
-
- * DumpRenderTree/win/DumpRenderTree.vcproj:
-
-2008-01-16 Alp Toker <alp@atoker.com>
-
- Reviewed by Mark Rowe.
-
- http://bugs.webkit.org/show_bug.cgi?id=16218
- [GTK] API: Should this entry point be called go_back rather than go_backward?
-
- Track back/forward API changes in the tools.
-
- * DumpRenderTree/gtk/WorkQueueItemGtk.cpp:
- (BackForwardItem::invoke):
- * GtkLauncher/main.c:
- (go_back_cb):
-
-2008-01-16 Adam Roben <aroben@apple.com>
-
- Windows build fix after r29488
-
- * DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj:
- Build into a subdirectory of $WebKitOutputDir\bin to match where DRT
- expects to find the plugin.
-
-2008-01-11 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Fixed the waitUntilDone watchdog timer -- the old code never added the
- timer to the run loop, so it didn't do anything.
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setWaitToDump):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setWaitToDump):
-
-2008-01-14 Steve Falkenburg <sfalken@apple.com>
-
- Use shared vsprops for most vcproj properties.
-
- Reviewed by Darin Adler.
-
- * Drosera/win/Drosera.vcproj/Drosera.vcproj:
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/ImageDiff.vcproj:
- * DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj:
- * FindSafari/FindSafari.vcproj:
-
-2008-01-14 Stephanie <slewis@apple.com>
-
- Reviewed by NOBODY.
-
- revert accidental character.
-
- * Scripts/run-webkit-tests:
-
-2008-01-14 Stephanie <slewis@apple.com>
-
- RS=Oliver
-
- add Quicktime PPC only leaks to Leopard exclude list. See <rdar://problem/5667132>
-
- * Scripts/run-webkit-tests:
-
-2008-01-14 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: Queue up another rename.
-
-2008-01-14 Holger Hans Peter Freyther <holger.freyther@trolltech.com>
-
- Reviewed by Darin Adler.
-
- * Allow to run the tests in reverse order to spot test cases where the result depends on the order
- the tests were ran.
- * This is from http://bugs.webkit.org/show_bug.cgi?id=16869
-
- * Scripts/run-webkit-tests:
-
-2008-01-14 Holger Hans Peter Freyther <holger.freyther@trolltech.com>
-
- Reviewed by Darin Adler.
-
- * Randomize tests array to spot test cases where the results depends on the order
- the tests are ran.
- * This is from http://bugs.webkit.org/show_bug.cgi?id=16869
-
- * Scripts/run-webkit-tests:
-
-2008-01-14 Darin Adler <darin@apple.com>
-
- * Scripts/run-webkit-tests: More ignore list tweaking.
-
-2008-01-14 Darin Adler <darin@apple.com>
-
- * Scripts/run-webkit-tests: Add another leak to the ignore list.
-
-2008-01-14 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Adam Roben.
-
- - try to fix failure in fast/dom/Window/window-onFocus.html seen on the
- build bots
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting): Focus the web view.
-
-2008-01-13 Steve Falkenburg <sfalken@apple.com>
-
- Share common files across projects.
-
- Unify vsprops files
- Debug: common.vsprops, debug.vsprops
- Debug_Internal: common.vsprops, debug.vsprops, debug_internal.vsprops
- Release: common.vsprops, release.vsprops
-
- Shared properties can go into common.vsprops, shared debug settings can go into debug.vsprops.
- debug_internal.vsprops will be mostly empty except for file path prefix modifiers.
-
- Pull auto-version.sh, VERSION, and PRODUCTVERSION from tools.
-
- Reviewed by Adam Roben.
-
- * Drosera/win/Drosera.vcproj/Drosera.vcproj:
- * Drosera/win/Drosera.vcproj/PRODUCTVERSION: Removed.
- * Drosera/win/Drosera.vcproj/VERSION: Removed.
- * Drosera/win/Drosera.vcproj/auto-version.sh: Removed.
- * Drosera/win/Drosera.vcproj/debug.vsprops: Removed.
- * Drosera/win/Drosera.vcproj/debug_internal.vsprops: Removed.
- * Drosera/win/Drosera.vcproj/release.vsprops: Removed.
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj:
- * DumpRenderTree/win/debug.vsprops: Removed.
- * DumpRenderTree/win/debug_internal.vsprops: Removed.
- * DumpRenderTree/win/release.vsprops: Removed.
-
-2008-01-13 Brent Fulgham <bfulgham@gmail.com>
-
- Reviewed by Maciej.
-
- - http://bugs.webkit.org/show_bug.cgi?id=16314
- Script to launch Drosera
-
- * Scripts/gdb-drosera: Added.
- * Scripts/run-drosera: Added.
- * Scripts/run-drosera-nightly.cmd: Added.
- * Scripts/webkitdirs.pm: Added runDrosera function.
-
-2008-01-13 Dan Bernstein <mitz@apple.com>
-
- - fix breakage due to last-minute change
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (runTest): Declare the loop variable.
-
-2008-01-13 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Adam Roben.
-
- - fix <rdar://problem/5132009> Windows DRT does not support multiple windows
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (DumpRenderTreeWndProc):
- (initialize):
- (dumpBackForwardList):
- (dumpBackForwardListForAllWindows):
- (dump):
- (resetWebViewToConsistentStateBeforeTesting): Factored out of
- runTest().
- (runTest):
- (allWindows): Added. Returns a vector of all open windows.
- (windowToWebViewMap): Added. Returns a map from open windows to their
- WebViews.
- (createWebViewAndOffscreenWindow): Factored out of main() to be
- reusable for creating extra windows.
- (main):
- * DumpRenderTree/win/DumpRenderTreeWin.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::windowCount): Implemented.
- * DumpRenderTree/win/UIDelegate.cpp:
- (UIDelegate::createWebViewWithRequest): Implemented.
- (UIDelegate::webViewClose): Implemented.
- * DumpRenderTree/win/UIDelegate.h:
-
-2008-01-12 Alp Toker <alp@atoker.com>
-
- Reviewed by Mark Rowe.
-
- Hide non-public symbols in GTK+/autotools release builds.
-
- * GNUmakefile.am:
-
-2008-01-12 Holger Hans Peter Freyther <holger.freyther@trolltech.com>
-
- Reviewed by Ap.
-
- * Make launching of the WebKit httpd work on GNU/Debian/Linux
-
- The configuration of Apache2 and installation does not depend on
- the kernel but on the distribution policy. Make launching of httpd
- work for Debian derived distributions.
-
- * Scripts/run-webkit-httpd:
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
-
-2008-01-12 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Fix crash in http/tests/security/local-JavaScript-from-remote.html under guard malloc.
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm: Retain string before returning it to
- match the callers expectations that it can take ownership of the string.
-
-2008-01-11 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Adam Roben.
-
- <rdar://problem/5667275> fast/dynamic/layer-hit-test-crash.html is failing
-
- * DumpRenderTree/win/DumpRenderTree.cpp: (runTest): Ignore WM_MOUSELEAVE events,
- as these are only posted because the test window is not a normal visible one, and
- they confuse drag&drop machinery.
-
-2008-01-11 Adam Roben <aroben@apple.com>
-
- Fix a crash when pathToLocalResource fails and a leak
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (pathToLocalResourceCallback): Dont leak the JSStringRef, and make
- sure not to pass null to JSValueMakeString.
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::pathToLocalResource): Print an error message if
- the conversion fails so it's clear what happened.
-
-2008-01-11 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by John Sullivan.
-
- * DumpRenderTree/mac/GCControllerMac.mm:
- (GCController::collectOnAlternateThread): Updated for name change.
-
-2008-01-10 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix. Don't build dftables any longer since it's now a Perl
- script.
-
- * wx/build-wxwebkit:
-
-2008-01-10 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Make DRT track open windows instead of allocated windows so that
- we can avoid ASSERTION due to late deallocs out of our control.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dumpBackForwardListForAllWindows):
- (runTest):
- * DumpRenderTree/mac/DumpRenderTreeMac.h:
- * DumpRenderTree/mac/DumpRenderTreeWindow.h:
- * DumpRenderTree/mac/DumpRenderTreeWindow.mm:
- (+[DumpRenderTreeWindow openWindows]):
- (-[DumpRenderTreeWindow initWithContentRect:styleMask:backing:defer:]):
- (-[DumpRenderTreeWindow close]):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::windowCount):
-
-2008-01-10 Ada Chan <adachan@apple.com>
-
- Meta key is not the same as Alt key on windows.
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/win/EventSender.cpp:
- (keyDownCallback):
-
-2008-01-09 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Darin, Sam and Adam.
-
- -<rdar://problem/5654486> REGRESSION (Safari 3.0.4-TOT): clicking on
- link in gmail message displays JavaScript alert falsely complaining
- about pop-up blocking.
- - Added the ability to enable the pop-up blocker via the
- LayoutTestController.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setPopupBlockingEnabledCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (setDefaultsToConsistentValuesForTesting):
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setPopupBlockingEnabled):
-
-2008-01-10 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Simon.
-
- rename QWebPageHistory to QWebHistory.
-
-
- * DumpRenderTree/qt/jsobjects.cpp:
-
-2008-01-09 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin Adler.
-
- - add some more renames, adjust some
-
- * Scripts/do-webcore-rename:
-
-2008-01-07 Nikolas Zimmermann <zimmermann@kde.org>
-
- Reviewed by Oliver.
-
- Enable SVG Fonts support by default.
-
- * Scripts/build-webkit:
-
-2008-01-07 Nikolas Zimmermann <zimmermann@kde.org>
-
- Reviewed by Adam.
-
- Fixes: http://bugs.webkit.org/show_bug.cgi?id=16244
- DRT doesn't handle platform specific pixel test results correctly.
-
- <test>-expected.txt files and <test>-expected.png files may now live
- in different directories (ie. a cross-platform <test>-expected.txt file
- and a platform-specific <test>-expected.png file).
-
- * Scripts/run-webkit-tests:
-
-2008-01-04 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Darin Adler.
-
- - <rdar://problem/5666914> fast/regex/test{1,4}.html are failing
- DRT did not correctly handle printing the '\0' char. Now it does.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (dumpFramesAsText):
- (dump):
-
-2008-01-07 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Lars.
-
- Ported of the network backend of the Qt platform to Qt 4.4's new networking API.
-
-
- * DumpRenderTree/qt/main.cpp:
- * DumpRenderTree/qt/testplugin.cpp:
- * DumpRenderTree/qt/testplugin.h:
-
-2008-01-05 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Alp Toker.
-
- Fix hang in fast/frames/frame-display-none-focus.html during Gtk layout tests.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (processWork): Process pending work.
- (webViewLoadFinished): Schedule processing of pending work.
- * DumpRenderTree/gtk/WorkQueueItemGtk.cpp: Use webkit_web_frame_reload.
-
-2008-01-05 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: Some more renaming plans.
-
-2008-01-04 Alice Liu <alice.liu@apple.com>
-
- Reviewed by Alexey and Darin.
-
- Adding "home" and "end" to DRT's keydown since
- DOM key events can't handle keyIdentifiers at this point.
-
- * DumpRenderTree/mac/EventSendingController.mm:
- (-[EventSendingController keyDown:withModifiers:]):
- * DumpRenderTree/win/EventSender.cpp:
- (keyDownCallback):
-
-2008-01-04 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Simon.
-
- fix DRT after the changes to QWebPage.
-
- The great thing is that we actually don't have
- any regressions from the QWebPage change :)
-
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
-
-2008-01-04 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Simon.
-
- make QWebPage a QObject and get things to compile.
-
- Nothing works currently though.
-
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
-
-2008-01-04 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Simon.
-
- take a QString as identifier in QWebFrame::addToJSWindowObject.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::initJSObjects):
-
-2008-01-04 Alp Toker <alp@atoker.com>
-
- GTK+ DRT build fix for breakage introduced in r29149.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::execCommand):
-
-2008-01-03 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin Adler.
-
- <rdar://problem/5463489> A number of layout tests should be using execCommand instead of textInputController
-
- Added layoutTestController.execCommand to access editor commands that are not available
- via document.execCommand.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (execCommandCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::execCommand):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::queueLoad):
- (LayoutTestController::execCommand):
-
-2008-01-03 Alice Liu <alice.liu@apple.com>
-
- Reviewed by Darin, Mitz.
-
- fixed <rdar://5130762> mousedowns in different locations increase the clickcount incorrectly
-
- the clickcount should not increase if the last click was at a different location. it's a new click.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (runTest):
- * DumpRenderTree/mac/EventSendingController.h:
- * DumpRenderTree/mac/EventSendingController.mm:
- (-[EventSendingController mouseDown]):
- (-[EventSendingController mouseUp]):
-
-2008-01-03 Darin Adler <darin@apple.com>
-
- Reviewed by Adam.
-
- * Scripts/update-webkit: Make this work a little better for the people at Apple
- who have a directory named Internal.
-
-2008-01-03 Adam Roben <aroben@apple.com>
-
- Use HTTP::Date instead of Date::Parse because it's installed by Cygwin by default
-
- Rubberstamped by Mark.
-
- * Scripts/update-webkit-auxiliary-libs:
-
-2008-01-03 Adam Roben <aroben@apple.com>
-
- Fix Bug 15663: update-webkit re-downloads WebKitAuxiliaryLibrary unnecessarily
-
- http://bugs.webkit.org/show_bug.cgi?id=15663
-
- Added a fuzz factor into the Last-Modified comparison for downloading
- WebKitAuxiliaryLibrary.zip.
-
- The zip file is served from a set of mirrors who give Last-Modified
- times that are off by 1-3 seconds from each other. This was causing
- the build bots to redownload WebKitAuxiliaryLibrary for every build,
- which would then cause all of WebCore to rebuild each time.
-
- Reviewed by Mark.
-
- * Scripts/update-webkit-auxiliary-libs: Check if the new zip file is
- at least 30 seconds newer than the old one -- otherwise we assume that
- the difference in time is due to the mirrors being slightly offset
- from each other.
- (sub lastModifiedToUnixTime): Added.
-
-2008-01-03 Alexey Proskuryakov <ap@webkit.org>
-
- Windows build fix.
-
- * DumpRenderTree/ForwardingHeaders/wtf/HashTraits.h: Added (needed by COMPtr.h).
-
-2008-01-03 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Lars.
-
- Moved QWebPage::open to QWebFrame::load and added setHtml.
-
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::open):
-
-2008-01-03 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Lars.
-
- Added the first revision of QWebView and started moving functionality from QWebPave over to QWebView and QWebFrame.
-
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
-
-2008-01-02 Sam Weinig <sam@webkit.org>
-
- * Scripts/do-webcore-rename: Yet more renaming ideas.
-
-2008-01-02 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: More renaming ideas. (Maciej, please merge yours with mine.)
-
-2008-01-02 Alice Liu <alice.liu@apple.com>
-
- Reviewed by Sam Weinig.
-
- fixing assertion hit with editing/selection/move-begin-end.html
-
- * DumpRenderTree/ForwardingHeaders/wtf/ASCIICType.h: Added.
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/EventSender.cpp:
- (keyDownCallback):
- using isupper will cause an assertion for inputs outside of ascii range. use isASCIIUpper instead.
-
-2008-01-02 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: Some more name change plans.
-
-2008-01-02 Alice Liu <alice.liu@apple.com>
-
- Reviewed by Maciej.
-
- Added handling for page up and page down in EventSender
-
- * DumpRenderTree/mac/EventSendingController.mm:
- (-[EventSendingController keyDown:withModifiers:]):
- * DumpRenderTree/win/EventSender.cpp:
- (keyDownCallback):
-
-2008-01-02 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin Adler.
-
- Fix fast/events/arrow-keys-on-body.html for real.
-
- * DumpRenderTree/win/EventSender.cpp: (keyDownCallback): Pass proper keyData for WM_KEYUP, too.
-
-2008-01-02 Luca Bruno <lethalman88@gmail.com>
-
- Reviewed by Darin Adler.
-
- http://bugs.webkit.org/show_bug.cgi?id=16674
- [GTK] run-launcher sets wrong LD_LIBRARY_PATH
-
- * Scripts/run-launcher:
-
-2007-12-31 Darin Adler <darin@apple.com>
-
- Suggested by Antti.
-
- * Scripts/webkitdirs.pm: Turned off the QuickTime requirement for Windows until
- we get it installed on the build bots.
-
-2007-12-30 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- * Scripts/do-webcore-rename: Add a few more planned renames s/(\w+)Imp/\1/
-
-2007-12-29 Darin Adler <darin@apple.com>
-
- Reviewed by Oliver.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=16663
- leak bot shows createCStringFromNPVariant result leaking
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (pluginInvoke): Added a missing free.
-
-2007-12-26 Jan Michael Alonzo <jmalonzo@unpluggable.com>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=16390
- Use autotools or GNU make as the build system for the GTK port
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp: include glib.h
- * GNUmakefile.am: Added.
-
-2007-12-24 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Oliver.
-
- Fix fast/events/arrow-keys-on-body.html, failing on Windows.
-
- * DumpRenderTree/win/EventSender.cpp:
- (keyDownCallback): Add KF_EXTENDED flag to arrow keys. Also add a count
- of 1, even though WebKit currently ignores it.
-
-2007-12-23 Kevin Ollivier <kevino@theolliviers.com>
-
- wx buildbot fix. Update libpng dl script to the latest version.
-
- * wx/install-unix-extras:
-
-2007-12-22 Antti Koivisto <antti@apple.com>
-
- Fix a typo.
-
- * Scripts/webkitdirs.pm:
-
-2007-12-21 Sam Weinig <sam@webkit.org>
-
- Reviewed by Mark Rowe.
-
- - Disable the back/forward cache using the new WebPreferences API
- instead of through the BackForwardList. This makes us match what
- we do on Windows.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (createWebViewAndOffscreenWindow):
- (setDefaultsToConsistentValuesForTesting):
-
-2007-12-21 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Mark Rowe.
-
- - disable the back/forward cache in Windows DumpRenderTree. It is
- already disabled in Mac DumpRenderTree.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (initializePreferences):
-
-2007-12-13 Antti Koivisto <antti@apple.com>
-
- Reviewed by Darin and Steve.
-
- - check for QuickTime SDK on Windows.
- - build media support on Windows by default
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
-
-2007-12-21 Kevin Ollivier <kevino@theolliviers.com>
-
- Build script fix for buildbot.
-
- * wx/build-wxwebkit:
-
-2007-12-20 Eric Seidel <eric@webkit.org>
-
- Reviewed by mjs.
-
- * Scripts/run-sunspider: change --runs default to 10 for better accuracy
-
-2007-12-20 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Steve.
-
- - <rdar://5656485> Drosera: Win: Nightly does not reliably connect to
- WebKit.
-
- - Drosera and Safari need to use the same ProgIDs in order for
- CoCreateInstance to work properly. The most robust way to do this is
- for WebKit to dynamically publish those ProgIDs.
-
- * Drosera/win/DebuggerClient.cpp: Use the published ProgIDs
- (DebuggerClient::createWebViewWithRequest):
- * Drosera/win/Drosera.cpp: Use the published ProgIDs and rename some
- statics.
- (Drosera::initUI):
- (Drosera::attach):
- (Drosera::attemptToCreateServerConnection):
- * Drosera/win/Drosera.vcproj/Drosera.vcproj: Fix a runtime failure.
- * Drosera/win/ServerConnection.cpp: Reformat the connection function and
- make use of the published ProgIDs.
- (ServerConnection::attemptToCreateServerConnection):
-
-2007-12-20 Kevin McCullough <kmccullough@apple.com>
-
- - <rdar://problem/5658317> REGRESSION: 20+ leaks seen on buildbots.
- - Build bot and leak fix.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (pathToLocalResourceCallback):
-
-2007-12-19 David Kilzer <ddkilzer@apple.com>
-
- Make svn-apply/svn-unapply work with patches from git-format-patch.
-
- Reviewed by Darin Adler.
-
- * Scripts/svn-apply:
- (patch): If 'Index:' can't be found in the text passed in, print it
- out with a warning and return early.
- * Scripts/svn-unapply:
- (patch): Ditto.
-
-2007-12-18 Kevin Ollivier <kevino@theolliviers.com>
-
- Reviewed by Alp Toker.
-
- Build related fixes.
-
- * wx/build-wxwebkit:
- - Check to make sure the user is running a supported wx port
- - More robust checks for Cygwin
- - Only run install-unix-extras on Mac, it's not the right solution
- for Linux distros.
- - Remove outdated Linux instructions after successful build
- - Clean Bakefile-generated files during a clean operation
-
-2007-12-18 Darin Adler <darin@apple.com>
-
- * Scripts/make-js-test-wrappers: Don't generate a wrapper for select-options-remove.js.
-
-2007-12-18 Steve Falkenburg <sfalken@apple.com>
-
- Add script to run Drosera as part of the nightly.
-
- Reviewed by Kevin M.
-
- * Scripts/run-drosera.cmd: Added.
-
-2007-12-18 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: Remove a stray K.
-
-2007-12-18 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: Plan more renaming.
-
-2007-12-14 Juan A. Suarez Romero <jasuarez@igalia.com>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=16042
- [GTK] Eliminate webkit_init()
-
- Moving webkit initialization to WebView class init.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (main):
- * GtkLauncher/main.c:
- (main):
-
-2007-12-17 Luca Bruno <lethalman88@gmail.com>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=13542
- gdklauncher doesnt change URL in adress GTKEntry.
-
- * GtkLauncher/main.c:
- (load_commit_cb): added
- (title_change_cb):
- (create_browser):
-
-2007-12-16 Dimitri Glazkov <dimitri@glazkov.com>
-
- Reviewed by Adam Roben.
-
- Remove the double-quotes around the PATH variable value, in order to make it work in Windows shell.
-
- * FindSafari/FindSafari.cpp:
- (_tmain):
-
-2007-12-16 Brent Fulgham <bfulgham@gmail.com>
-
- Reviewed by Adam Roben.
-
- http://bugs.webkit.org/show_bug.cgi?id=16315
- FindSafari needs a path-only option.
-
- * FindSafari/FindSafari.cpp:
- (_tmain):
-
-2007-12-16 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin Adler.
-
- http://bugs.webkit.org/show_bug.cgi?id=16462
- REGRESSION: access keys broken on Windows
-
- * DumpRenderTree/win/EventSender.cpp: (keyDownCallback): Send system key events
- if Alt is pressed.
-
-2007-12-15 Sam Weinig <sam@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Fix urlSuitableForTestResult to correctly identify wstring::npos as
- the case when wstring.find doesn't find anything.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (urlSuitableForTestResult):
-
-2007-12-15 Alp Toker <alp@atoker.com>
-
- GTK+ DRT build fix for GLib < 2.14.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setWaitToDump):
-
-2007-12-05 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Alp Toker.
-
- Add a watchdog timer to Gtk DumpRenderTree, and implement alert/prompt/confirm. This prevents
- many layout tests from hanging while waiting on user responses to dialogs.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (invalidateAnyPreviousWaitToDumpWatchdog):
- (webViewScriptAlert):
- (webViewScriptPrompt):
- (webViewScriptConfirm):
- (main):
- * DumpRenderTree/gtk/DumpRenderTreeGtk.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (waitToDumpWatchdogFired):
- (LayoutTestController::setWaitToDump):
-
-2007-12-05 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Alp Toker.
-
- Flesh out DumpRenderTree for Gtk. After these changes, the majority of the tests in fast/js pass.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (dumpFramesAsText): Don't print the frame name when dumping the main frame as text.
- (dump):
- (runTest):
- (webViewLoadStarted): Store the top frame when it starts loading so we can use it to determine when to dump.
- (webViewLoadFinished): Dump when the top frame load completes if we're not waiting for a JS callback and the
- work queue is empty.
- (webViewWindowObjectCleared): Set up window.layoutTestController.
- (webViewConsoleMessage): Match the console message format expected by the layout test results.
- (main): Hook up the new signals.
- * DumpRenderTree/gtk/DumpRenderTreeGtk.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp: Only notify done if the top frame has completed loading to avoid
- dumping multiple times.
- * Scripts/build-dumprendertree: Ensure build-dumprendertree is a no-op for Gtk too.
- * Scripts/run-webkit-tests: Teach run-webkit-tests that Gtk is like Qt in many ways. Use run-launcher to open test results.
-
-2007-12-14 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Brady.
-
- Assert that a web frame that's loading a resource always has either a data source or
- a provisional data source.
-
- * DumpRenderTree/mac/ResourceLoadDelegate.mm:
- (-[ResourceLoadDelegate webView:identifierForInitialRequest:fromDataSource:]):
-
-2007-12-14 Darin Adler <darin@apple.com>
-
- - fix mistake causing nearly all tests to fail on Windows
-
- * DumpRenderTree/win/UIDelegate.cpp:
- (UIDelegate::webViewAddMessageToConsole): Need to compare the result of find with
- npos, not 0. Also pass URL in to URL function rather than passing the entire message.
-
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:addMessageToConsole:]): Pass path only to path function rather
- than passing the entire message.
-
-2007-12-14 Darin Adler <darin@apple.com>
-
- - fix Tiger build
-
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:addMessageToConsole:]): Re-implement this without using any
- new-to-Leopard methods.
-
-2007-12-14 Darin Adler <darin@apple.com>
-
- * DumpRenderTree/mac/FrameLoadDelegate.mm: Don't implement didReceiveIcon delegate method
- since it now triggers unwanted icon loading. We only had it because we implemented "all"
- delegate methods here.
-
-2007-12-14 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Darin and Geoff.
-
- <rdar://problem/5619295>
- REGRESSION: 303-304: Embedded YouTube video fails to render- JS errors (16150) (Flash 9)
-
- Add property getting methods to the plug-in.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (pluginInvoke):
-
-2007-12-14 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Darin Adler.
-
- - Layout test fix for mac. When dumped to the console local file paths
- now only show the name of the resource not the whole path. This is to
- make the results machine and OS independent.
-
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:addMessageToConsole:]):
-
-2007-12-13 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam.
-
- - Layout tests fix. We need a way to remove machine-dependent
- information from paths in layout test results. The UIDelegate now does
- this.
-
- * DumpRenderTree/DumpRenderTree.h:
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (urlSuitableForTestResult):
- * DumpRenderTree/win/DumpRenderTreeWin.h:
- * DumpRenderTree/win/ResourceLoadDelegate.cpp:
- * DumpRenderTree/win/UIDelegate.cpp:
- (UIDelegate::webViewAddMessageToConsole):
-
-2007-12-13 Alp Toker <alp@atoker.com>
-
- Build fix for DRT breakage introduced in r28690.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::pathToLocalResource):
-
-2007-12-12 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Alice and Sam.
-
- - <rdar://5621435> Need a way to specify local resources (being loaded
- from HTTP tests) on Windows.
- - Implemented pathToLocalResource which exposes the functionality of
- converting a given unix path to the correct location on Windows.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (pathToLocalResourceCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::pathToLocalResource):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::pathToLocalResource):
-
-2007-12-12 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam.
-
- <rdar://problem/5132003>
- dumpResourceLoadCallbacks is not implemented in DRT on Windows.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (main):
- Set the resource load delegate.
-
- * DumpRenderTree/win/DumpRenderTree.vcproj:
-
- * DumpRenderTree/win/ResourceLoadDelegate.cpp: Added.
- * DumpRenderTree/win/ResourceLoadDelegate.h: Added.
-
-2007-12-12 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Adam Roben.
-
- Fix conversion from double to LPARAM in dispatchMessage().
-
- * DumpRenderTree/win/EventSender.cpp:
- (dispatchMessageCallback):
-
-2007-12-11 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Mark Rowe and Sam Weinig too!
-
- - added Helvetica Oblique and Helvetica Bold Oblique to the list of
- fonts DumpRenderTree registers.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (initialize):
-
-2007-12-11 Brady Eidson <beidson@apple.com>
-
- Reviewed by Anders
-
- Make DumpRenderTree on mac use its own path for Databases testing
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (setDefaultsToConsistentValuesForTesting): Keep a string to ~/Library/Application Support/DumpRenderTree
- for future DRT-only use, then use it to construct the Databases path and set that default
-
-2007-12-07 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin Adler.
-
- <rdar://problem/5535636>
- Have to press 4 times instead of 2 times to get the expected result of ^^ with german keyboard.
-
- http://bugs.webkit.org/show_bug.cgi?id=13916
- JavaScript detects Tab as a character input on a textfield validation
-
- * DumpRenderTree/mac/EventSendingController.mm:
- (-[EventSendingController keyDown:withModifiers:]): Added a few more named keys.
- Dispatch a keyup to better match what happens when a key is physically pressed.
-
- * DumpRenderTree/win/EventSender.cpp:
- (keyDownCallback): Ditto. Also make sure that WM_CHAR is consistently dispatched before
- returning from keyDown().
- (getConstantCallback): Fixed a couple copy/paste mistakes.
-
-2007-12-07 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Oliver.
-
- - <rdar://5599845> Drosera: Does not show loal files in the file list
- on the left side.
-
- * Drosera/debugger.js: - Updated url dividing regex to handle %s and :s.
- * Drosera/win/Drosera.vcproj/Drosera.vcproj: - Updated Debug settings
- so the open source community can build.
-
-2007-12-10 Brady Eidson <beidson@apple.com>
-
- Rubberstamped by Sam Weinig
-
- Update DRT Mac to reflect the new UI Delegate methods I just checked into WebKit/mac
-
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:frame:quotaForSecurityOrigin:toCreateDatabase:withEstimatedSize:]):
- (-[UIDelegate webView:frame:quotaForSecurityOrigin:fromProposedQuota:database:]):
-
-2007-12-08 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Sam W.
-
- Split the ENABLE_SVG_EXPERIMENTAL_FEATURES flag into separate flags.
-
- Fixes <rdar://problem/5620249> Must disable SVG animation
- <rdar://problem/5612772> Disable SVG filters on Mac to match Windows behavior
-
- In order to allow finer grained control over the set of SVG features
- this patch splits ENABLE_SVG_EXPERIMENTAL_FEATURES into the following
- distinct flags:
- ENABLE_SVG_ANIMATION
- ENABLE_SVG_FILTERS
- ENABLE_SVG_FONTS
- ENABLE_SVG_AS_IMAGE
- ENABLE_SVG_USE
-
- by default only ENABLE_SVG_AS_IMAGE and ENABLE_SVG_USE are set.
-
- Script handles all the new build flags, and allows --svg-experimental
- to automatically enable all features.
-
- * Scripts/build-webkit:
-
-2007-12-07 Steve Falkenburg <sfalken@apple.com>
-
- Fix version parsing.
-
- Rubber-stamped by Oliver.
-
- * Drosera/win/Drosera.vcproj/auto-version.sh:
-
-2007-12-07 Steve Falkenburg <sfalken@apple.com>
-
- Build modifications for Drosera.
-
- Reviewed by Adam.
-
- * Drosera/DroseraWin.make: Added.
- * Drosera/win/Drosera.vcproj/Drosera.rc:
- * Drosera/win/Drosera.vcproj/Drosera.vcproj:
- * Drosera/win/Drosera.vcproj/PRODUCTVERSION: Added.
- * Drosera/win/Drosera.vcproj/VERSION: Added.
- * Drosera/win/Drosera.vcproj/auto-version.sh: Added.
-
-2007-12-06 Adam Roben <aroben@apple.com>
-
- Explicitly turn on the Mac font ascent hack on Windows
-
- This keeps our font metrics matching those from Mac.
-
- Reviewed by Hyatt.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (main):
-
-2007-12-06 Anders Carlsson <andersca@apple.com>
-
- Rename main.c to main.cpp here too.
-
- * DumpRenderTree/win/TestNetscapePlugin/main.cpp: Copied from DumpRenderTree/win/TestNetscapePlugin/main.c.
-
-2007-12-06 Sam Weinig <sam@webkit.org>
-
- Rubber stamped by Geoff.
-
- * Scripts/do-webcore-rename: Don't rename kjs_css twice.
-
-2007-12-06 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: Some more renaming plans.
-
-2007-12-06 Anders Carlsson <andersca@apple.com>
-
- Restore implementation of testGetIntIdentifier that was accidentally
- removed somehow (possibly when I made PluginObject be a cpp file).
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (pluginInvoke):
-
-2007-12-05 Anders Carlsson <andersca@apple.com>
-
- Make the entry points extern "C".
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp:
-
-2007-12-05 Anders Carlsson <andersca@apple.com>
-
- C++ warning fixes.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp:
- (NPP_New):
- (NPP_Destroy):
- (NPP_SetWindow):
- (NPP_NewStream):
- (NPP_HandleEvent):
- (NPP_URLNotify):
- (NPP_GetValue):
-
-2007-12-05 Anders Carlsson <andersca@apple.com>
-
- Add the .cpp files to the TestNetscapePlugIn target.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
-
-2007-12-05 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Geoff.
-
- Rename the TestNetscapePlugIn .c files to be .cpp.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c: Removed.
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp: Copied from DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c.
- * DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.c: Removed.
- * DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.cpp: Copied from DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.c.
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.c: Removed.
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp: Copied from DumpRenderTree/TestNetscapePlugIn.subproj/main.c.
- * DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj:
-
-2007-12-05 Adam Roben <aroben@apple.com>
-
- Fix case of keypresses from the Windows implementation of eventSender.keyDown
-
- This fixes several regression tests.
-
- Reviewed by Alice.
-
- * DumpRenderTree/win/EventSender.cpp:
- (keyDownCallback): Virtual keycodes for ASCII characters are always
- uppercase, so we need to check the case of the original character
- passed in to eventSender.keyDown.
-
-2007-12-05 Adam Roben <aroben@apple.com>
-
- Learn from Tim's mistakes
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (runTest): Reset the authorAndUserStylesEnabled preference for each
- test.
-
-2007-12-05 Alp Toker <alp@atoker.com>
-
- Reviewed by Mark Rowe.
-
- Initialize GTK+ and WebKit so the tests can run.
-
- Reorganize the headers a little.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (main):
-
-2007-12-04 Anders Carlsson <andersca@apple.com>
-
- Remove IWebScriptScope include.
-
- * Drosera/win/DebuggerDocumentPlatform.cpp:
-
-2007-12-04 Sam Weinig <sam@webkit.org>
-
- Rubber stamped by Mark Rowe.
-
- Define CF as platform for mac and revert r28409
-
- * DumpRenderTree/DumpRenderTree.h:
- * DumpRenderTree/mac/DumpRenderTreeMac.h:
-
-2007-12-04 Sam Weinig <sam@webkit.org>
-
- Define CF as platform for windows.
-
- Reviewed by Adam Roben.
-
- * DumpRenderTree/win/DumpRenderTreeWin.h:
-
-2007-12-04 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam and Darin.
-
- - Removed a needless BSTR cleanup.
-
- * Drosera/win/DebuggerDocumentPlatform.cpp:
- (DebuggerDocument::getPlatformCurrentFunctionStack):
-
-2007-11-27 Adam Roben <aroben@apple.com>
-
- Fix <rdar://5614497> setAuthorAndUserStylesEnabled is not implemented in DRT
-
- Reviewed by Maciej.
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setAuthorAndUserStylesEnabled): Implemented.
-
-2007-12-04 Alp Toker <alp@atoker.com>
-
- Prospective Win DRT build fix.
-
- * DumpRenderTree/DumpRenderTree.h:
-
-2007-12-04 Alp Toker <alp@atoker.com>
-
- Fix a clobbered copyright header.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
-
-2007-12-04 Xan Lopez <xan@gnome.org>
-
- Reviewed by Alp Toker.
-
- http://bugs.webkit.org/show_bug.cgi?id=15561
- GTK port needs DumpRenderTree implementation
-
- Start work on the GTK+ DRT.
-
- This does not work yet, and there are a few lingering style issues
- (nothing major) but this patch has been stuck in the bug tracker for
- too long already.
-
- * DumpRenderTree/DumpRenderTree.h:
- * DumpRenderTree/gtk: Added.
- * DumpRenderTree/gtk/DumpRenderTree.cpp: Added.
- (autocorrectURL):
- (shouldLogFrameLoadDelegates):
- (dumpFrameScrollPosition):
- (displayWebView):
- (appendString):
- (dumpFramesAsText):
- (dumpRenderTreeAsText):
- (dump):
- (runTest):
- (main):
- * DumpRenderTree/gtk/DumpRenderTree.pro: Added.
- * DumpRenderTree/gtk/DumpRenderTreeGtk.h: Added.
- * DumpRenderTree/gtk/GCControllerGtk.cpp: Added.
- (GCController::collect):
- (GCController::collectOnAlternateThread):
- (GCController::getJSObjectCount):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp: Added.
- (LayoutTestController::~LayoutTestController):
- (LayoutTestController::addDisallowedURL):
- (LayoutTestController::clearBackForwardList):
- (LayoutTestController::copyDecodedHostName):
- (LayoutTestController::copyEncodedHostName):
- (LayoutTestController::display):
- (LayoutTestController::keepWebHistory):
- (LayoutTestController::notifyDone):
- (LayoutTestController::queueBackNavigation):
- (LayoutTestController::queueForwardNavigation):
- (LayoutTestController::queueLoad):
- (LayoutTestController::queueReload):
- (LayoutTestController::queueScript):
- (LayoutTestController::setAcceptsEditing):
- (LayoutTestController::setCustomPolicyDelegate):
- (LayoutTestController::setMainFrameIsFirstResponder):
- (LayoutTestController::setTabKeyCyclesThroughElements):
- (LayoutTestController::setUseDashboardCompatibilityMode):
- (LayoutTestController::setUserStyleSheetEnabled):
- (LayoutTestController::setUserStyleSheetLocation):
- (LayoutTestController::setWindowIsKey):
- (LayoutTestController::setWaitToDump):
- (LayoutTestController::windowCount):
- (LayoutTestController::setPrivateBrowsingEnabled):
- (LayoutTestController::setAuthorAndUserStylesEnabled):
- * DumpRenderTree/gtk/WorkQueueItemGtk.cpp: Added.
- (JSStringCopyUTF8CString):
- (LoadItem::invoke):
- (ReloadItem::invoke):
- (ScriptItem::invoke):
- (BackForwardItem::invoke):
-
-2007-12-03 Sam Weinig <sam@webkit.org>
-
- Move JavaScriptCore thread testing code to pthread specific directory
- and remove the dependance on CoreFoundation by using WTF::HashSet.
-
- Reviewed by Geoff and Oliver.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/ForwardingHeaders/wtf/HashMap.h: Added.
- * DumpRenderTree/ForwardingHeaders/wtf/HashSet.h: Added.
- * DumpRenderTree/ForwardingHeaders/wtf/Vector.h: Added.
- * DumpRenderTree/JavaScriptThreading.h: Copied from DumpRenderTree/mac/JavaScriptThreading.h.
- * DumpRenderTree/mac/JavaScriptThreading.cpp: Removed.
- * DumpRenderTree/mac/JavaScriptThreading.h: Removed.
- * DumpRenderTree/pthreads: Added.
- * DumpRenderTree/pthreads/JavaScriptThreadingPthreads.cpp: Copied from DumpRenderTree/mac/JavaScriptThreading.cpp.
- (javaScriptThreads):
- (runJavaScriptThread):
- (startJavaScriptThreads):
- (stopJavaScriptThreads):
-
-2007-12-03 Andrew Bonventre <andybons@google.com>
-
- Reviewed by Darin Adler.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=16267
- Symbol lookup menu broken in debugger view
-
- * Drosera/debugger.js: Fixed javascript error where document property
- should have been used instead of contentDocument in switchFunction that
- was breaking the select symbol dropdown menu. This is because
- window.frames will return a Window object and not a frame object like
- the author was originally expecting.
-
-2007-12-03 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam.
-
- - <rdar://5618942> Drosera: Console window does not process everything
- correctly.
- - <rdar://5619005> Drosera: could be sped up by moving the
- WebScriptScope stuff into the WebScriptCallFrame.
- - Now the console can correctly process objects and does not receive
- notifications from JavaScriptCore about the JavaScript in Drosera's
- own process.
-
- * Drosera/win/DebuggerDocumentPlatform.cpp:
- (DebuggerDocument::getPlatformLocalScopeVariableNamesForCallFrame):
- (DebuggerDocument::platformValueForScopeVariableNamed):
-
-2007-12-03 Stephanie <slewis@apple.com>
-
- Reviewed by Darin Adler.
-
- Check to see if we are building a debug root
-
- * Scripts/check-for-global-initializers:
-
-2007-12-03 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Darin Adler.
-
- - added a testGetIntIdentifier() method to TestNetscapePlugIn
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c:
- (pluginInvoke):
-
-2007-12-03 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Oliver.
-
- Added eventSender.dispatchMessage() - will be used to test Windows keyboard input
- in a more fine-grained manner than eventSender.keyDown().
-
- * DumpRenderTree/win/EventSender.cpp:
- (getConstantCallback):
- (dispatchMessageCallback):
-
-2007-12-02 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: More planned renaming.
-
-2007-12-02 Sam Weinig <sam@webkit.org>
-
- Rubber stamped by Anders.
-
- Use [NSURL absoluteString] instead of [NSURL description] in order to get
- more uniform results cross platform.
-
- * DumpRenderTree/mac/ResourceLoadDelegate.mm:
- (-[NSURL _drt_descriptionSuitableForTestResult]):
-
-2007-12-02 Sam Weinig <sam@webkit.org>
-
- Rubber stamped by Niko.
-
- Rename FrameLoaderDelegate.h/cpp to FrameLoadDelegate.h/cpp.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/FrameLoadDelegate.cpp: Copied from DumpRenderTree/win/FrameLoaderDelegate.cpp.
- * DumpRenderTree/win/FrameLoadDelegate.h: Copied from DumpRenderTree/win/FrameLoaderDelegate.h.
- * DumpRenderTree/win/FrameLoaderDelegate.cpp: Removed.
- * DumpRenderTree/win/FrameLoaderDelegate.h: Removed.
-
-2007-12-01 Alp Toker <alp@atoker.com>
-
- Reviewed by Adam Roben.
-
- Make use of the newly introduced webkit.h convenience header.
-
- * GtkLauncher/main.c:
-
-2007-12-01 Adam Treat <treat@kde.org>
-
- Reviewed by Simon.
-
- * Check to see if the directory exists and exit if not.
-
- * DumpRenderTree/qt/main.cpp:
- (main):
-
-2007-12-01 Adam Treat <treat@kde.org>
-
- Reviewed by Simon.
-
- * Don't hide symbols when in Debug mode
- * On Linux (glibc) provide a backtrace in the test output for debugging purposes
-
-
- * DumpRenderTree/qt/main.cpp:
- (messageHandler):
-
-2007-11-30 Alp Toker <alp@atoker.com>
-
- Reviewed by Adam Roben.
-
- http://bugs.webkit.org/show_bug.cgi?id=15691
- [GTK] Public API does not follow GTK+ conventions
-
- Refactor the WebKit/GTK+ public API. Changes:
- WebKitPage -> WebKitWebView
- WebKitFrame -> WebKitWebFrame
-
- Public API source and header names have been updated to mirror the API
- changes.
-
- The API is now kept in WebKit/gtk/WebView to match other ports in the
- same class such as Mac and Win.
-
- * GtkLauncher/main.c:
- (activate_uri_entry_cb):
- (link_hover_cb):
- (title_change_cb):
- (progress_change_cb):
- (go_back_cb):
- (go_forward_cb):
- (create_browser):
- (main):
-
-2007-11-30 Adam Roben <aroben@apple.com>
-
- Hopefully the final build fix
-
- * Drosera/win/Drosera.vcproj/Drosera.vcproj: Link against WTF.lib to
- pull in WTF's assertion/logging functions.
-
-2007-11-30 Adam Roben <aroben@apple.com>
-
- Another build fix
-
- * Drosera/win/Drosera.vcproj/Drosera.vcproj: Use the right suffix for
- WebKit.lib.
-
-2007-11-30 Adam Roben <aroben@apple.com>
-
- Debug build fix
-
- * Drosera/win/Drosera.vcproj/Drosera.vcproj: Added a Debug_Internal
- configuration.
- * Drosera/win/Drosera.vcproj/debug.vsprops: Updated to match other
- projects.
- * Drosera/win/Drosera.vcproj/release.vsprops: Ditto.
- * Drosera/win/Drosera.vcproj/debug_internal.vsprops: Copied from
- WebKitTools/DumpRenderTree/win/debug_internal.vsprops.
-
-2007-11-30 Sam Weinig <sam@webkit.org>
-
- Reviewed by Adam Roben.
-
- Fix drawSelectionRect to actually draw the selection rect.
-
- * DumpRenderTree/cg/PixelDumpSupportCG.cpp:
- (drawSelectionRect):
-
-2007-11-30 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: WildFox already did the TextStyle -> FontStyle one.
-
-2007-11-30 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: Get ready for some future renaming.
-
-2007-11-29 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam.
-
- - Removed some unnecessary functions and changed an unused return type.
-
- * Drosera/win/DebuggerClient.cpp:
- (registerConsoleClass):
- * Drosera/win/DebuggerClient.h:
- * Drosera/win/Drosera.cpp:
- (registerDroseraClass):
-
-2007-11-28 Alp Toker <alp@atoker.com>
-
- Reviewed by Timothy Hatcher.
-
- http://bugs.webkit.org/show_bug.cgi?id=16174
- [GTK] Use "URI" not "URL" in public API
-
- Replace use of the term "URL" with "URI" in public headers,
- documentation and some internal code to match GLib/GTK+ convention.
-
- This is now mentioned in the API guidelines:
- http://trac.webkit.org/projects/webkit/wiki/HackingGtk
-
- * GtkLauncher/main.c:
- (activate_uri_entry_cb):
- (title_change_cb):
- (create_toolbar):
- (main):
-
-2007-11-29 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam.
-
- <rdar://problem/5230478>
- FrameLoadDelegate callbacks are not dumped in DRT.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (shouldLogFrameLoadDelegates):
- (runTest):
- (main):
- * DumpRenderTree/win/FrameLoaderDelegate.cpp:
- (BSTRtoString):
- (descriptionSuitableForTestResult):
- (FrameLoadDelegate::QueryInterface):
- (FrameLoadDelegate::didStartProvisionalLoadForFrame):
- (FrameLoadDelegate::didFailProvisionalLoadWithError):
- (FrameLoadDelegate::didCommitLoadForFrame):
- (FrameLoadDelegate::didFinishLoadForFrame):
- (FrameLoadDelegate::willCloseFrame):
- (FrameLoadDelegate::didClearWindowObject):
- (FrameLoadDelegate::didFinishDocumentLoadForFrame):
- (FrameLoadDelegate::didHandleOnloadEventsForFrame):
- * DumpRenderTree/win/FrameLoaderDelegate.h:
- (FrameLoadDelegate::windowScriptObjectAvailable):
- (FrameLoadDelegate::didFirstLayoutInFrame):
-
-2007-11-29 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders.
-
- Add database quota UIDelegates methods to DRT UIDelegate.
-
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:quotaForSecurityOrigin:toCreateDatabase:withEstimatedSize:]):
- (-[UIDelegate webView:quotaForSecurityOrigin:fromProposedQuota:database:]):
-
-2007-11-29 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Sam.
-
- - <rdar://5618976> Drosera: should listen for the WebScriptDebugServer
- dying and vice versa.
- - This fix will allow Drosera and Safari to reconnect if either of them
- closes correctly, but does not fix the case where one of them dies
- silently.
-
- * Drosera/win/ServerConnection.cpp:
- (ServerConnection::attemptToCreateServerConnection): Added a safety
- check, because it's possilbe to try to connect to a server that's dying.
- (ServerConnection::serverDidDie): Implemented. This resets Drosera when
- the server has died.
- * Drosera/win/ServerConnection.h: Added the new function and removed
- an unnecessary member.
-
-2007-11-29 Anders Carlsson <andersca@apple.com>
-
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- Add shlwapi.lib to all configurations.
-
-2007-11-29 Kevin McCullough <kmccullough@apple.com>
-
- - Build fix. Added additional includes for VS Express to the Release
- project.
-
- * Drosera/win/Drosera.vcproj/Drosera.vcproj:
-
-2007-11-29 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Adam.
-
- <rdar://problem/5132005>
- setUserStyleSheetEnabled is not fully implemented in Windows DRT.
-
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- Add shlwapi.lib
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setUserStyleSheetEnabled):
- Implement this.
-
- (appendComponentToPath):
- New method which wraps the Win32 API PathAppend.
-
- (followShortcuts):
- New method which checks if a file points to a shortcut and
- follows the shortcut.
-
- (resolveCygwinPath):
- New method that takes a cygwin unix-style path and returns the Win32 path.
-
- (cfStringRefToWString):
-
- (LayoutTestController::setUserStyleSheetLocation):
- Implement this.
-
-2007-11-29 Alice Liu <alice.liu@apple.com>
-
- Reviewed by Adam.
-
- Fixed <rdar://5133828> fast/frames/iframe-window-focus.html output is lowercase
-
- * DumpRenderTree/win/EventSender.cpp:
- (keyDownCallback):
- uppercase letters were being sent as lowercase letters without the shift key down.
-
-2007-11-29 Kevin McCullough <kmccullough@apple.com>
-
- - Windows build fix. VS express needs some love.
-
- * Drosera/win/Drosera.vcproj/Drosera.vcproj:
-
-2007-11-28 Darin Adler <darin@apple.com>
-
- Reviewed by Adam Roben.
-
- * DumpRenderTree/mac/EventSendingController.mm:
- (-[EventSendingController keyDown:withModifiers:]):
- Send capital letters through as lowercase letters with the shift key down
- rather than sending them as if they were highly unusual "capital letter keys".
-
- * Scripts/update-javascriptcore-test-results: Add a "--force" option for cases
- where you need to update results and more tests are failing than before.
-
-2007-11-28 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Darin Adler.
-
- <rdar://problem/5132001>
- contextClick is not implemented in DRT on Windows.
-
- * DumpRenderTree/win/EventSender.cpp:
- (contextClickCallback):
- Add a callback for contextClick, which sends a WM_RBUTTONDOWN message followed
- by a WM_RBUTTONUP message.
-
- * DumpRenderTree/win/UIDelegate.cpp:
- (UIDelegate::hasCustomMenuImplementation):
- (UIDelegate::trackCustomPopupMenu):
- * DumpRenderTree/win/UIDelegate.h:
- Add a no-op implementation of trackCustomPopupMenu, to prevent the default popup
- menu from being shown (and causing the DRT to hang).
-
-2007-11-27 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin Adler.
-
- Fix DumpRenderTree ObjC bug comparing strings.
-
- * DumpRenderTree/mac/ObjCController.m:
- (-[ObjCController identityIsEqual::]): Compare strings with string
- equality instead of identiy equality.
-
-2007-11-27 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Sam.
-
- Reset the authorAndUserStylesEnabled preference
- back to YES for each test. Fixes the broken tests.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetWebViewToConsistentStateBeforeTesting):
-
-2007-11-27 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam.
-
- - Drosera now displays the console window, although it cannot currently
- process JavaScript.
-
- * Drosera/win/DebuggerClient.cpp: Shows the console window.
- (registerConsoleClass): Implemented.
- (consoleWndProc): Implemented.
- (DebuggerClient::onSize): Implemented.
- (DebuggerClient::createWebViewWithRequest): Implemented, now creates a
- new window.
- * Drosera/win/DebuggerClient.h: Added needed method and members for
- creating and maintaining a new window.
- * Drosera/win/Drosera.cpp: Fixed some minor bugs, and moved a couple of
- lines of code to more appropriate places.
- (Drosera::handleCommand):
- (Drosera::initUI):
- (Drosera::onSize):
- (Drosera::attach):
-
-2007-11-27 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Dave Hyatt.
-
- <rdar://problem/5569233> Add the ability to disable author and user CSS styles
-
- Add support for disabling author and user styles for testing.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/LayoutTestController.cpp:
- (setAuthorAndUserStylesEnabledCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setAuthorAndUserStylesEnabled):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setAuthorAndUserStylesEnabled):
-
-2007-11-26 Dan Bernstein <mitz@apple.com>
-
- - Tiger build fix.
-
- * DumpRenderTree/mac/Configurations/Base.xcconfig:
-
-2007-11-26 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Maciej.
-
- - Implemented displaying variables for Drosera on Win.
-
- * Drosera/win/DebuggerDocumentPlatform.cpp: Changed Drosera functions
- that retrieve variables to not hold onto the return value since it's
- not returned. Also changed to use the new signatures of the retrieval
- functions.
- (DebuggerDocument::getPlatformLocalScopeVariableNamesForCallFrame):
- (DebuggerDocument::platformValueForScopeVariableNamed):
- * Drosera/win/Drosera.cpp: Removed a needless TODO.
- (droseraWndProc):
-
-2007-11-26 Sam Weinig <sam@webkit.org>
-
- Cleanup names of painting and repainting functions.
-
- Reviewed by Adam Roben.
-
- * DumpRenderTree/cg/PixelDumpSupportCG.cpp:
- (drawSelectionRect): was drawSelectionRectIntoContext.
- (dumpWebViewAsPixelsAndCompareWithExpected):
- * DumpRenderTree/cg/PixelDumpSupportCG.h:
- * DumpRenderTree/mac/PixelDumpSupportMac.mm:
- (paintWebView): was drawWebViewIntoContext.
- (repaintWebView): was repaintWithVerticalSweep and repaintWithHorizontalSweep.
-
-2007-11-26 Sam Weinig <sam@webkit.org>
-
- Reviewed by Dan Bernstein.
-
- - Leopard build fix
-
- * DumpRenderTree/mac/Configurations/Base.xcconfig:
-
-2007-11-26 Sam Weinig <sam@webkit.org>
-
- Fix for http://bugs.webkit.org/show_bug.cgi?id=16136
- Use shared PixelDumpSupport for Mac DRT
-
- Reviewed by Adam Roben.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/PixelDumpSupport.h: Copied from DumpRenderTree/win/PixelDumpSupport.h.
- * DumpRenderTree/cg/ImageDiffCG.cpp:
- * DumpRenderTree/cg/PixelDumpSupportCG.cpp:
- (drawSelectionRectIntoContext):
- (dumpWebViewAsPixelsAndCompareWithExpected):
- * DumpRenderTree/cg/PixelDumpSupportCG.h:
- * DumpRenderTree/mac/Configurations/Base.xcconfig:
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dump):
- * DumpRenderTree/mac/ImageDiff.m: Removed.
- * DumpRenderTree/mac/PixelDumpSupport.h: Removed.
- * DumpRenderTree/mac/PixelDumpSupport.mm: Removed.
- * DumpRenderTree/mac/PixelDumpSupportMac.mm: Copied from DumpRenderTree/mac/PixelDumpSupport.mm.
- (setDefaultColorProfileToRGB):
- (getBitmapContextFromWebView):
- (drawWebViewIntoContext):
- (repaintWithVerticalSweep):
- (repaintWithHorizontalSweep):
- (getSelectionRect):
- * DumpRenderTree/win/PixelDumpSupport.h: Removed.
-
-2007-11-25 David D. Kilzer <ddkilzer@webkit.org>
-
- Bug 16052: prepare-ChangeLog doesn't report deleted files
- <http://bugs.webkit.org/show_bug.cgi?id=16052>
-
- Reviewed by Sam.
-
- * Scripts/prepare-ChangeLog: Fixed logic that checks for removed files.
-
-2007-11-25 David Kilzer <ddkilzer@webkit.org>
-
- Bug 15864: Replace merge-changelog with resolve-ChangeLogs
- <http://bugs.webkit.org/show_bug.cgi?id=15864>
-
- Reviewed by Adam.
-
- Roll functionality of merge-changelog into resolve-ChangeLogs
- script. The script now checks for ChangeLog.rej and
- ChangeLog.orig files first. If it finds them, it uses the
- ChangeLog.rej file as a patch (in old contextual diff format) to
- apply with --fuzz=3.
-
- * Scripts/merge-changelog: Removed.
- * Scripts/resolve-ChangeLogs: Handle traditional rejected patches.
-
-2007-11-25 Sam Weinig <sam@webkit.org>
-
- Add .xcconfig files for the ImageDiff and TestNetscapePlugIn targets of the DumpRenderTree.
-
- Reviewed by Mark Rowe.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/mac/Configurations/Base.xcconfig:
- * DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig:
- * DumpRenderTree/mac/Configurations/ImageDiff.xcconfig: Added.
- * DumpRenderTree/mac/Configurations/TestNetscapePlugIn.xcconfig: Added.
-
-2007-11-25 Sam Weinig <sam@webkit.org>
-
- Convert DumpRenderTree to ues .xcconfig files.
-
- Reviewed by Mark Rowe.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/mac/Configurations: Added.
- * DumpRenderTree/mac/Configurations/Base.xcconfig: Added.
- * DumpRenderTree/mac/Configurations/DebugRelease.xcconfig: Added.
- * DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig: Added.
-
-2007-11-25 Sam Weinig <sam@webkit.org>
-
- Add ForwardingHeaders to wtf for DumpRenderTree.
-
- Reviewed by Mark Rowe.
-
- * DumpRenderTree/DumpRenderTree.h:
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/ForwardingHeaders: Added.
- * DumpRenderTree/ForwardingHeaders/wtf: Added.
- * DumpRenderTree/ForwardingHeaders/wtf/Assertions.h: Added.
- * DumpRenderTree/ForwardingHeaders/wtf/Noncopyable.h: Added.
- * DumpRenderTree/ForwardingHeaders/wtf/OwnPtr.h: Added.
- * DumpRenderTree/ForwardingHeaders/wtf/Platform.h: Added.
- * DumpRenderTree/ForwardingHeaders/wtf/RetainPtr.h: Added.
- * DumpRenderTree/ForwardingHeaders/wtf/StringExtras.h: Added.
- * DumpRenderTree/LayoutTestController.cpp:
- * DumpRenderTree/WorkQueue.cpp:
- * DumpRenderTree/mac/DumpRenderTree.mm:
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- * DumpRenderTree/mac/JavaScriptThreading.cpp:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- * DumpRenderTree/mac/ObjCController.m:
- * DumpRenderTree/mac/UIDelegate.mm:
- * DumpRenderTree/mac/WorkQueueItemMac.mm:
-
-2007-11-25 Adam Roben <aroben@apple.com>
-
- Fix some test failures caused by r28019
-
- Now that stdout is in binary mode, we need to always use printf
- instead of wprintf. Otherwise we'll end up with UTF-16 characters in
- the output.
-
- Reviewed by Sam.
-
- * DumpRenderTree/win/UIDelegate.cpp: Replaced uses of wprintf with
- printf.
- (UIDelegate::runJavaScriptAlertPanelWithMessage):
- (UIDelegate::runJavaScriptConfirmPanelWithMessage):
- (UIDelegate::runJavaScriptTextInputPanelWithPrompt):
- (UIDelegate::webViewAddMessageToConsole):
-
-2007-11-25 Adam Roben <aroben@apple.com>
-
- Set the font smoothing preference in DRT
-
- This makes the pixel results on Windows closer to the Mac results.
-
- Reviewed by Mitz.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (initializePreferences):
-
-2007-11-25 Adam Roben <aroben@apple.com>
-
- Port ImageDiff to CG and C++
-
- Final part of http://bugs.webkit.org/show_bug.cgi?id=16133
- <rdar://5071708>
-
- Reviewed by Sam.
-
- * DumpRenderTree/DumpRenderTree.sln: Added ImageDiff.vcproj.
- * DumpRenderTree/cg/ImageDiffCG.cpp: Added.
- (main):
- (createImageFromStdin):
- (compareImages):
- (getDifferenceBitmap):
- (computePercentageDifferent):
- * DumpRenderTree/win/ImageDiff.vcproj: Added.
-
-2007-11-25 Adam Roben <aroben@apple.com>
-
- Fix image diff link generation on Windows
-
- Reviewed by Sam.
-
- * Scripts/run-webkit-tests: Removed unnecessary and incorrect calls
- to toURL.
-
-2007-11-25 Adam Roben <aroben@apple.com>
-
- Implement pixel dumping in Windows DRT
-
- Part of http://bugs.webkit.org/show_bug.cgi?id=16133
- <rdar://5071708>
-
- Reviewed by Sam.
-
- * DumpRenderTree/cg/PixelDumpSupportCG.cpp: Added.
- (printPNG): Dumps a CGImageRef as a PNG to stdout, along with a
- Content-Length header.
- (getMD5HashStringForBitmap):
- (dumpWebViewAsPixelsAndCompareWithExpected):
- * DumpRenderTree/cg/PixelDumpSupportCG.h: Copied from WebKitTools/DumpRenderTree/mac/DumpRenderTreePasteboard.h.
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (dump): Do a pixel dump if requested.
- (main): Parse pixel test options.
- * DumpRenderTree/win/DumpRenderTree.vcproj: Added new files and added
- the cg/ subdirectory to the include path.
- * DumpRenderTree/win/MD5.cpp: Added. Windows MD5 functions aren't
- available in a header or import library, so we have to go through this
- LoadLibrary/GetProcAddress dance to use them.
- (cryptDLL):
- (init):
- (update):
- (final):
- (MD5_Init):
- (MD5_Update):
- (MD5_Final):
- * DumpRenderTree/win/MD5.h: Added.
- * DumpRenderTree/win/PixelDumpSupport.h: Added. This file should be
- moved up to the top level to share it with Mac eventually.
- * DumpRenderTree/win/PixelDumpSupportWin.cpp: Added.
- (getBitmapContextFromWebView): Forces the WebView to paint using a
- WM_PRINTCLIENT message, and puts the result in a CGBitmapContext.
-
-2007-11-25 Adam Roben <aroben@apple.com>
-
- Clean up Windows DRT's option parsing a little bit
-
- Reviewed by Sam.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (main): Put non-option arguments into a Vector.
-
-2007-11-25 Adam Roben <aroben@apple.com>
-
- Make Windows DRT stop changing LF into CRLF
-
- Reviewed by Sam.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (main): Put stdout in binary mode.
- * Scripts/run-webkit-tests: Remove the CRLF hack.
-
-2007-11-24 David Kilzer <ddkilzer@webkit.org>
-
- Removed empty directory.
-
- * Scripts/resources: Removed.
-
-2007-11-23 David D. Kilzer <ddkilzer@webkit.org>
-
- Fix bisect-builds to work with recent WebKit nightly builds.
-
- Reviewed by Dan.
-
- * Scripts/bisect-builds: Check for the
- WebKit.app/Contents/Frameworks/10.[45] directory. If it exists, use
- it for the DYLD_FRAMEWORK_PATH environment variable, else fallback
- to WebKit.app/Contents/Resources.
-
-2007-11-23 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Maciej.
-
- <rdar://problem/5539306> REGRESSION: redirect fails when subframe's document is opened but
- not closed (affects digg.com)
-
- * DumpRenderTree/mac/DumpRenderTree.mm: (runTest): Replace the current document with a blank
- one after finishing with a test to avoid having its delayed onload handler firing when
- replaced with the next one. This is ugly and still unreliable (see LayoutTests ChangeLog),
- but it helps somewhat.
-
-2007-11-22 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Alp Toker.
-
- Fix build-webkit to propagate make's exit status if it fails.
-
- * Scripts/webkitdirs.pm:
-
-2007-11-22 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Mark Rowe.
-
- - fix crash when running pixel tests
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dumpRenderTree): Parse the command line options before setting up the
- environment so that we know if we need to set up the pixel dump
- machinery.
-
-2007-11-21 Eric Seidel <eric@webkit.org>
-
- Speculative build fix for Tiger.
-
- * DumpRenderTree/mac/PixelDumpSupport.mm: include unistd.h
-
-2007-11-21 Eric Seidel <eric@webkit.org>
-
- Reviewed by Tim Hatcher.
-
- Break out more of DumpRenderTree.mm into individual files
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/mac/CheckedMalloc.cpp: Added.
- (checkedMalloc):
- (checkedRealloc):
- (makeLargeMallocFailSilently):
- * DumpRenderTree/mac/CheckedMalloc.h: Added.
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (crashHandler):
- (dump):
- * DumpRenderTree/mac/DumpRenderTreeMac.h:
- * DumpRenderTree/mac/DumpRenderTreePasteboard.h:
- * DumpRenderTree/mac/DumpRenderTreePasteboard.m:
- * DumpRenderTree/mac/DumpRenderTreeWindow.h:
- * DumpRenderTree/mac/DumpRenderTreeWindow.mm:
- * DumpRenderTree/mac/JavaScriptThreading.cpp: Added.
- (javaScriptThreads):
- (runJavaScriptThread):
- (startJavaScriptThreads):
- (stopJavaScriptThreads):
- * DumpRenderTree/mac/JavaScriptThreading.h: Added.
- * DumpRenderTree/mac/PixelDumpSupport.h: Added.
- * DumpRenderTree/mac/PixelDumpSupport.mm: Added.
- (restoreColorSpace):
- (setDefaultColorProfileToRGB):
- (initializeColorSpaceAndScreeBufferForPixelTests):
- (md5HashStringForBitmap):
- (dumpWebViewAsPixelsAndCompareWithExpected):
-
-2007-11-21 Kevin Ollivier <kevino@theolliviers.com>
-
- Move install-unix-extras to wx directory as it seems only to be used by that
- port now. It now supports universal binaries on Mac and adds libpng and libjpeg.
- Also, have build-wxwebkit run it in order to fix the Mac buildbot, and
- have install-unix-extras install into WebKitLibraries as per
- convention.
-
- Reviewed by Mark Rowe.
-
- * Scripts/install-unix-extras: Removed.
- * wx/build-wxwebkit:
- * wx/install-unix-extras: Copied from WebKitTools/Scripts/install-unix-extras.
-
-2007-11-21 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam.
-
- More refactoring for greater code readability
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (initializeGlobalsFromCommandLineOptions):
- (initializeColorSpaceAndScreeBufferForPixelTests):
- (addTestPluginsToPluginSearchPath):
- (useLongRunningServerMode):
- (runTestingServerLoop):
- (prepareConsistentTestingEnvironment):
- (dumpRenderTree):
- (main):
- (dumpFramesAsText):
- (dumpBackForwardListForWebView):
- (sizeWebViewForCurrentTest):
- (methodNameStringForFailedTest):
- (dumpBackForwardListForAllWindows):
- (dumpWebViewAsPixelsAndCompareWithExpected):
- (invalidateAnyPreviousWaitToDumpWatchdog):
- (dump):
- * DumpRenderTree/mac/DumpRenderTreeMac.h:
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:createWebViewWithRequest:]):
-
-2007-11-21 Eric Seidel <eric@webkit.org>
-
- Reviewed by Tim Hatcher.
-
- Abstract more of DRT into static methods
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (setDefaultsToConsistentValuesForTesting):
- (setupSignalHandlers):
- (allocateGlobalControllers):
- (releaseAndZero):
- (releaseGlobalControllers):
- (dumpRenderTree):
- (shouldLogFrameLoadDelegates):
- (createCFURLFromPathOrURL):
- (resetWebViewToConsistentStateBeforeTesting):
- (runTest):
-
-2007-11-21 Eric Seidel <eric@webkit.org>
-
- Reviewed by Tim Hatcher.
-
- Pull DumpRenderTreeWindow and DumpRenderTreePasteboard out into their own files
-
- * DumpRenderTree/DumpRenderTree.h:
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dumpRenderTree):
- (dump):
- (runTest):
- * DumpRenderTree/mac/DumpRenderTreePasteboard.h: Added.
- * DumpRenderTree/mac/DumpRenderTreePasteboard.m: Added.
- (+[DumpRenderTreePasteboard _pasteboardWithName:]):
- (+[DumpRenderTreePasteboard releaseLocalPasteboards]):
- (-[DumpRenderTreePasteboard declareType:owner:]):
- (+[LocalPasteboard alloc]):
- (-[LocalPasteboard init]):
- (-[LocalPasteboard dealloc]):
- (-[LocalPasteboard name]):
- (-[LocalPasteboard releaseGlobally]):
- (-[LocalPasteboard declareTypes:owner:]):
- (-[LocalPasteboard addTypes:owner:]):
- (-[LocalPasteboard changeCount]):
- (-[LocalPasteboard types]):
- (-[LocalPasteboard availableTypeFromArray:]):
- (-[LocalPasteboard setData:forType:]):
- (-[LocalPasteboard dataForType:]):
- (-[LocalPasteboard setPropertyList:forType:]):
- (-[LocalPasteboard setString:forType:]):
- * DumpRenderTree/mac/DumpRenderTreeWindow.h: Added.
- * DumpRenderTree/mac/DumpRenderTreeWindow.mm: Added.
- (+[DumpRenderTreeWindow allWindows]):
- (-[DumpRenderTreeWindow initWithContentRect:styleMask:backing:defer:]):
- (-[DumpRenderTreeWindow dealloc]):
- (-[DumpRenderTreeWindow isKeyWindow]):
- (-[DumpRenderTreeWindow keyDown:]):
-
-2007-11-20 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix for Windows. Don't use WebCore/move-js-headers.sh as
- it indiscriminately copies any headers inside JavaScriptCore,
- which includes Tiger ICU headers.
-
- * wx/build-wxwebkit:
- Don't run WebCore/move-js-headers.sh any longer.
-
-2007-11-20 Adam Treat <treat@kde.org>
-
- Reviewed by David Kilzer.
-
- * Prepend git branch name to $baseProductDir
-
- * Scripts/VCSUtils.pm:
- * Scripts/webkitdirs.pm:
-
-2007-11-20 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Simon Hausmann.
-
- * Scripts/build-webkit: Pass "clean" flag down into buildQMakeProject.
- * Scripts/webkitdirs.pm: Respect the "clean" flag passed down from build-webkit.
- Have it trigger a "make distclean" rather than "make clean" to ensure that the
- built product and generated Makefile's are removed.
-
-2007-11-19 Alp Toker <alp@atoker.com>
-
- Reviewed by Mark Rowe.
-
- http://bugs.webkit.org/show_bug.cgi?id=16040
- [GTK] GtkLauncher should be written in C
-
- Port GtkLauncher to plain C.
-
- Use a more conventional GTK+ coding style.
-
- Use a toolbar instead of menus.
-
- Various signature fixes and cleanups.
-
- Add a license header. Assume all previous modifications were copyright
- assigned to Apple Inc. by default.
-
- * GtkLauncher/GtkLauncher.pro:
- * GtkLauncher/main.c: Added.
- (activate_url_entry_cb):
- (update_title):
- (link_hover_cb):
- (title_change_cb):
- (progress_change_cb):
- (destroy_cb):
- (go_back_cb):
- (go_forward_cb):
- (create_browser):
- (create_statusbar):
- (create_toolbar):
- (create_window):
- (main):
- * GtkLauncher/main.cpp: Removed.
-
-2007-11-19 Kevin Ollivier <kevino@theolliviers.com>
-
- Build script fixes to ensure they do the right thing for the
- wx port, and update build-wxwebkit to reflect the way the
- build scripts now work.
-
- Reviewed by Adam.
-
- * Scripts/build-testkjs:
- * Scripts/build-webkit:
- * Scripts/run-javascriptcore-tests:
- * Scripts/webkitdirs.pm:
- * wx/build-wxwebkit:
-
-2007-11-18 Eric Seidel <eric@webkit.org>
-
- Reviewed by Anders.
-
- Make run-javascriptcore-tests report failures on exit (to support git bisect)
-
- * Scripts/run-javascriptcore-tests:
-
-2007-11-18 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Adam Roben.
-
- Make run-webkit-tests work with Windows debug build.
-
- * DumpRenderTree/win/DumpRenderTree.cpp: (main): Only use memory checks with debug CRT.
- * DumpRenderTree/win/DumpRenderTree.vcproj: Switched Debug configuration to release CRT,
- as it is supposed to run with release Apple libraries. Removed _DEBUG preprocessor
- symbol, as it goes with debug CRT (AFAIK, it is supposed to be added automatically,
- and shouldn't be needed in Debug_internal configuration, but I didn't dare to change that).
-
-2007-11-18 Kevin Ollivier <kevino@theolliviers.com>
-
- Add wxWebKit sample and build script, and integrate it with
- build-webkit. Also make build-webkit --clean work for all
- ports.
-
- Reviewed by Darin Adler.
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
- * wx: Added.
- * wx/browser: Added.
- * wx/browser/browser.bkl: Added.
- * wx/browser/browser.cpp: Added.
- * wx/build-wxwebkit: Added.
-
-2007-11-17 Adam Roben <aroben@apple.com>
-
- Make it easy to run Safari in the debugger on Windows
-
- I've added a new script, debug-safari, which launches Safari in the
- debugger. On OS X it just calls gdb-safari.
-
- Reviewed by Mark Rowe.
-
- * FindSafari/FindSafari.cpp:
- (_tmain): Added a /debugger flag, which in combination with
- /printSafariLauncher will print a script that launches Safari in the
- debugger.
- * Scripts/debug-safari: Added.
- * Scripts/run-safari: Changed to call runSafari().
- * Scripts/run-webkit-nightly.cmd: Prepends the launcher script with
- vsvars32.bat, which will let us find VS/VC++ Express, and passes the
- first argument along to FindSafari.
- * Scripts/webkitdirs.pm:
- (sub runSafari): Added.
-
-2007-11-16 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Adam Roben.
-
- * Scripts/run-webkit-tests: Avoid an uninitialized warning if WEBKIT_TESTFONTS is not defined.
-
-2007-11-16 Ryan Leavengood <leavengood@gmail.com>
-
- Reviewed by David Kilzer.
-
- The git config command was renamed to repo-config at some point. This
- change tries git config and then git repo-config if the first fails.
-
- * Scripts/prepare-ChangeLog:
- (gitConfig):
-
-2007-11-16 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Darin Adler and Sam Weinig.
-
- - fix <rdar://problem/5134075> fast/forms/select-type-ahead-non-latin.html fails on Windows
-
- * DumpRenderTree/win/EventSender.cpp:
- (keyDownCallback): For characters that cannot be entered on the active
- keyboard layout, send a WM_CHAR message with the character along with
- a WM_KEYDOWN message with a virtual key code of 255.
-
-2007-11-16 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Tim Hatcher.
-
- Don't weak link against WebCore now that it is a sub-framework of WebKit in all configurations.
-
- * Drosera/mac/Drosera.xcodeproj/project.pbxproj:
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
-
-2007-11-15 Adam Roben <aroben@apple.com>
-
- Make run-safari actually work on Windows
-
- * Scripts/run-safari: Fixed the order of arguments to cp, and added a
- chdir call.
-
-2007-11-14 Adam Roben <aroben@apple.com>
-
- Updates to Safari launching now that 3.0.4 is released
-
- Reviewed by Sam.
-
- * FindSafari/FindSafari.cpp:
- (getWebViewCLSID): Use version-independent ProgID.
- * Scripts/run-safari: Use run-webkit-nightly.cmd.
-
-2007-11-14 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Adam.
-
- <rdar://problem/5309081>
- In DRT, "plugin.logDestroy = true" not working on Windows.
-
- * DumpRenderTree/win/TestNetscapePlugin/main.c:
- (NPP_Destroy):
-
-2007-11-14 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam.
-
- * Scripts/run-sunspider: add --shark-cache for L2 Cache Miss profiling
-
-2007-11-14 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Adam.
-
- <rdar://problem/5141186>
- window.layoutTestController.setWindowIsKey is not implemented in DRT.
-
- Implement setWindowIsKey.
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setWindowIsKey):
-
-2007-11-13 Sam Weinig <sam@webkit.org>
-
- Reviewed by Adam Roben.
-
- Fix for <rdar://problem/5382579>
- http/tests/security/cross-frame-access-put.html reports large
- negative numbers for screenLeft and screenTop (Mac reports "0")
-
- * DumpRenderTree/win/UIDelegate.cpp:
- (UIDelegate::UIDelegate): Initialize the RECT.
- (UIDelegate::setFrame): copy the contents of the rect, not the pointer.
- (UIDelegate::webViewFrame): ditto.
- * DumpRenderTree/win/UIDelegate.h: Use a RECT not a RECT*
-
-2007-11-13 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam.
-
- - Make Drosera show source, source URLs, and function stack on Windows,
- and some minor fixes.
-
- * Drosera/DebuggerDocument.cpp: Force source to always update display.
- (DebuggerDocument::updateFileSource):
- * Drosera/debugger.js: Force source to always update display.
- * Drosera/win/DebuggerClient.cpp: Create the needed functions for the
- menu controls.
- (DebuggerClient::resume):
- (DebuggerClient::pause):
- (DebuggerClient::stepInto):
- (DebuggerClient::stepOver):
- (DebuggerClient::stepOut):
- (DebuggerClient::showConsole):
- (DebuggerClient::closeCurrentFile):
- * Drosera/win/DebuggerClient.h: Ditto.
- * Drosera/win/DebuggerDocumentPlatform.cpp: Changed
- getPlatformCurrentFunctionStack to not use an unecessary HRESULT and
- removed two bugs. 1) caller could be in a bad state when asked to
- assign into it. 2) BSTRs were not created correctly.
- (DebuggerDocument::getPlatformCurrentFunctionStack):
- * Drosera/win/Drosera.cpp: Hook up the menu controls.
- (droseraWndProc):
- (handleCommand):
- (Drosera::resume):
- (Drosera::pause):
- (Drosera::stepInto):
- (Drosera::stepOver):
- (Drosera::stepOut):
- (Drosera::showConsole):
- (Drosera::closeCurrentFile):
- * Drosera/win/Drosera.h: Hook up the menu controls.
- * Drosera/win/ServerConnection.cpp: Removed unncessary server connection
- functions, added a null check, and fixed another bug where caller could
- be in a bad state when asked to assign into it.
- (ServerConnection::didLoadMainResourceForDataSource):
- (ServerConnection::getCallerFrame):
- * Drosera/win/ServerConnection.h: Safety first.
-
-2007-11-13 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Darin Adler.
-
- - fix <http://bugs.webkit.org/show_bug.cgi?id=13371>
- DumpRenderTree --pixel-tests renders each test twice
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dumpRenderTree): Removed the --paint option because the painting code
- is always exercised as a result of
- -[FrameLoadDelegate webView:didFinishLoadFromFrame:]
- calling -displayIfNeeded.
- (dump): Changed to always grab the image from the window since the view
- is always displayed.
- (runTest):
- (displayWebView):
- * Scripts/run-webkit-tests: No need to pass --paint to DumpRenderTree
- because it always paints.
-
-2007-11-12 Antti Koivisto <antti@apple.com>
-
- Reviewed by Adele.
-
- Add support for http media tests
-
- * Scripts/run-webkit-tests:
-
-2007-11-12 Sam Weinig <sam@webkit.org>
-
- Reviewed by Adam Roben.
-
- Implement LayoutTestController.setPrivateBrowsingEnabled(bool) for windows.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (runTest):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setPrivateBrowsingEnabled):
-
-2007-11-12 Adam Roben <aroben@apple.com>
-
- * Scripts/update-webkit-localizable-strings: Changed to only scan the
- mac and win subdirectories.
-
-2007-11-11 Adam Roben <aroben@apple.com>
-
- Fix <rdar://5133816> keepWebHistory is not implemented
-
- Fixes fast/history/clicked-link-is-visited.html.
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (runTest): Clear the optionalSharedHistory.
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::keepWebHistory): Set the optionalSharedHistory.
-
-2007-11-10 Sam Weinig <sam@webkit.org>
-
- Reviewed by Tim Hatcher.
-
- Follow up to <rdar://problem/5394877> Safari should not log unsafe JavaScript
- attempts when in private browsing mode (only an issue if Log JavaScript Exceptions
- is turned on)
-
- - Add LayoutTestController.setPrivateBrowsingEnabled(bool) (stub out implementation for windows)
-
- Added test: http/tests/security/cross-frame-access-private-browsing.html
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setPrivateBrowsingEnabledCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (runTest): Default to private browsing disabled.
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setPrivateBrowsingEnabled):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setPrivateBrowsingEnabled):
-
-2007-11-08 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam.
-
- - Changed the vcproj file to use Drosera's ForwardingHeaders and not
- WebCore's!
-
- * Drosera/ForwardingHeaders/wtf/Assertions.h: Added.
- * Drosera/ForwardingHeaders/wtf/HashTraits.h: Added.
- * Drosera/ForwardingHeaders/wtf/Noncopyable.h: Added.
- * Drosera/ForwardingHeaders/wtf/OwnPtr.h: Added.
- * Drosera/ForwardingHeaders/wtf/RetainPtr.h: Added.
- * Drosera/win/Drosera.cpp:
- * Drosera/win/Drosera.vcproj/Drosera.vcproj:
-
-2007-11-08 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Sam.
-
- - Use the new IWebFrame [local] function signature and get the shared
- server correctly.
-
- * Drosera/win/DebuggerClient.cpp:
- (DebuggerClient::didFinishLoadForFrame):
- * Drosera/win/ServerConnection.cpp:
- (ServerConnection::attemptToCreateServerConnection):
-
-2007-11-07 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Darin Adler.
-
- - add an option to run-webkit-tests to ignore pixel test failures where
- all pixels differ by no more than a specified threshold
-
- * DumpRenderTree/mac/ImageDiff.m:
- (main):
- (compareImages):
- (computePercentageDifferent):
- * Scripts/run-webkit-tests:
-
-2007-11-07 Simon Hausmann <hausmann@kde.org>
-
- Reviewed by Lars.
-
- Make the setting of letting Javascript access the clipboard configurable through QWebSettings, turn it off by default and turn it on in DumpRenderTree.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
-
-2007-11-07 Simon Hausmann <hausmann@kde.org>
-
- Reviewed by Lars.
-
- Reworked the QWebSettings API.
- QWebPage now returns a pointer to its mutable QWebSettings object and the settings of newly created QWebPageObjects are initialized from QWebSettings::defaultSettings().
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
-
-2007-11-07 Simon Hausmann <hausmann@kde.org>
-
- Reviewed by Lars.
-
- Make QWebHistory an explicitly shared object, returned as a pointer by QWebPage::history().
-
- * DumpRenderTree/qt/jsobjects.cpp:
-
-2007-11-07 Simon Hausmann <hausmann@kde.org>
-
- Reviewed by Lars Knoll <lars@trolltech.com>.
-
- Add a QWebPage::frameCreated() signal and fix DRT
-
- The removal of createFrame in QWebPage broke the re-implementation
- in DumpRenderTree. Instead emit a frameCreated() signal and
- connect to it in DumpRenderTree.
-
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::WebPage::WebPage):
- (WebCore::DumpRenderTree::dump):
- (WebCore::DumpRenderTree::connectFrame):
- * DumpRenderTree/qt/DumpRenderTree.h:
-
-2007-11-07 Simon Hausmann <hausmann@kde.org>
-
- Reviewed by Lars Knoll <lars@trolltech.com>.
-
- Moved all the event handlers from QWebFrame into QWebPage.
-
- This cleans up the public API and allows us to remove the
- HackWebFrame hack in DumpRenderTree.
-
-
- * DumpRenderTree/qt/jsobjects.cpp:
- (EventSender::mouseDown):
- (EventSender::mouseUp):
- (EventSender::mouseMoveTo):
-
-2007-11-07 Simon Hausmann <hausmann@kde.org>
-
- Reviewed by Mark.
-
- Implemented the two Javascript prompt callbacks in qt/DumpRenderTree
- to prevent the default implementation from popping up messageboxes.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::WebPage::javaScriptConfirm):
- (WebCore::WebPage::javaScriptPrompt):
-
-2007-11-06 Eric Seidel <eric@webkit.org>
-
- * Scripts/build-testkjs: build fix... too many $$
-
-2007-11-06 Eric Seidel <eric@webkit.org>
-
- Reviewed by Mark Rowe.
-
- * Scripts/build-testkjs: return xcodebuild's exit status, instead of grep's
-
-2007-11-05 Adam Roben <aroben@apple.com>
-
- Add support on Windows for WEBKIT_TESTFONTS
-
- This environment variable lets you specify where the fonts to be used
- by DumpRenderTree reside. The Qt port is already using this, so I'm
- just following their lead.
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (exePath): Refactored code out of initialize().
- (fontsPath): Returns either $WEBKIT_TESTFONTS or
- DumpRenderTree.resources.
- (initialize): Use the new fontsPath function.
- (main): Use the new exePath function.
- * Scripts/run-webkit-tests: Propagate the WEBKIT_TESTFONTS environment
- variable to DRT, like Qt does.
-
-2007-11-05 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Alp Toker.
-
- Remove buggy "autocomplete" from GtkLauncher as it causes more problems than it solves.
-
- * GtkLauncher/main.cpp:
- (goToURLBarText):
- (main):
-
-2007-11-04 David D. Kilzer <ddkilzer@webkit.org>
-
- bisect-builds doesn't work with nightly build r19992 or newer on Leopard
- <http://bugs.webkit.org/show_bug.cgi?id=15830>
-
- Reviewed by Timothy.
-
- Restrict the range of nightly builds used by the bisect-builds script
- based on the version of Safari and the version of Mac OS X being used.
-
- Mac OS X 10.4: Safari 2.0: r11976 or newer
- Mac OS X 10.4: Safari 3.0: r19992 or newer
-
- Mac OS X 10.5: Safari 2.0: r19594 or newer
- Mac OS X 10.5: Safari 3.0: r25124 or newer
-
- * Scripts/bisect-builds:
- (findMacOSXVersion): Added.
- (makeNightlyList): Added argument to provide version of Mac OS X.
- Restrict range of nightly builds based on Safari and Mac OS X versions.
-
-2007-11-04 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Maciej.
-
- - This patch involves several changes, all of them were noticed that
- they were needed by the work being done in WebKit to get Drosera and
- WebKit working together on Windows.
- - The changes are:
- 1) Added a debugger console for output messages.
- 2) Drosera now listens for the WebKit server (before, the server would
- have to be running before Drosera was started.)
- 3) Fixed a bug where the WebView started out as 0x0 pixels.
- 4) Fixed a bug when there is no scope.
- 5) Added the HTML, JS, and CSS to the project file to make them easy to
- find.
- 6) Made the ServerConnection functions virtual.
-
- * Drosera/win/DebuggerClient.cpp: This is part of how Drosera listens
- for the WebKit server.
- (DebuggerClient::DebuggerClient):
- (DebuggerClient::~DebuggerClient):
- (DebuggerClient::didFinishLoadForFrame):
- (DebuggerClient::serverConnected):
- (DebuggerClient::attemptToCreateServerConnection):
- * Drosera/win/DebuggerClient.h: Ditto.
- * Drosera/win/DebuggerDocumentPlatform.cpp: Fixed a bug when there is no
- scope.
- (DebuggerDocument::getPlatformLocalScopeVariableNamesForCallFrame):
- (DebuggerDocument::platformValueForScopeVariableNamed):
- * Drosera/win/Drosera.cpp:
- (_tWinMain): Added a console in debug for output messages.
- (Drosera::Drosera): Listen for server.
- (Drosera::initUI): The server now Initializes COM.
- (Drosera::serverConnected): Part of the listening for the server.
- (Drosera::attemptToCreateServerConnection): Ditto.
- * Drosera/win/Drosera.h: New interface for listening for the server.
- * Drosera/win/Drosera.vcproj/Drosera.vcproj: Added HTML, JS, and CSS
- files to the VS project.
- * Drosera/win/ServerConnection.cpp: Part of listening for the server
- connection.
- (ServerConnection::ServerConnection):
- (ServerConnection::attemptToCreateServerConnection):
- * Drosera/win/ServerConnection.h: Ditto and virtualized the Interface
- methods.
- (ServerConnection::serverConnected):
-
-2007-11-04 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Maciej.
-
- http://bugs.webkit.org/show_bug.cgi?id=15832
- fast/dom/gc-10.html crashes when run alone
-
- Check for !done before using objects that can be already deallocated.
-
- * DumpRenderTree/mac/EditingDelegate.mm:
- (-[EditingDelegate webView:shouldBeginEditingInDOMRange:]):
- (-[EditingDelegate webView:shouldEndEditingInDOMRange:]):
- (-[EditingDelegate webView:shouldInsertNode:replacingDOMRange:givenAction:]):
- (-[EditingDelegate webView:shouldInsertText:replacingDOMRange:givenAction:]):
- (-[EditingDelegate webView:shouldDeleteDOMRange:]):
- (-[EditingDelegate webView:shouldChangeSelectedDOMRange:toDOMRange:affinity:stillSelecting:]):
- (-[EditingDelegate webView:shouldApplyStyle:toElementsInDOMRange:]):
- (-[EditingDelegate webView:shouldChangeTypingStyle:toStyle:]):
- (-[EditingDelegate webViewDidBeginEditing:]):
- (-[EditingDelegate webViewDidChange:]):
- (-[EditingDelegate webViewDidEndEditing:]):
- (-[EditingDelegate webViewDidChangeTypingStyle:]):
- (-[EditingDelegate webViewDidChangeSelection:]):
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate webView:didStartProvisionalLoadForFrame:]):
- (-[FrameLoadDelegate webView:didCommitLoadForFrame:]):
- (-[FrameLoadDelegate webView:didFailProvisionalLoadWithError:forFrame:]):
- (-[FrameLoadDelegate webView:didFinishLoadForFrame:]):
- (-[FrameLoadDelegate webView:didFailLoadWithError:forFrame:]):
- (-[FrameLoadDelegate webView:windowScriptObjectAvailable:]):
- (-[FrameLoadDelegate webView:didClearWindowObject:forFrame:]):
- (-[FrameLoadDelegate webView:didReceiveTitle:forFrame:]):
- (-[FrameLoadDelegate webView:didReceiveServerRedirectForProvisionalLoadForFrame:]):
- (-[FrameLoadDelegate webView:didReceiveIcon:forFrame:]):
- (-[FrameLoadDelegate webView:didChangeLocationWithinPageForFrame:]):
- (-[FrameLoadDelegate webView:willPerformClientRedirectToURL:delay:fireDate:forFrame:]):
- (-[FrameLoadDelegate webView:didCancelClientRedirectForFrame:]):
- (-[FrameLoadDelegate webView:willCloseFrame:]):
- (-[FrameLoadDelegate webView:didFinishDocumentLoadForFrame:]):
- (-[FrameLoadDelegate webView:didHandleOnloadEventsForFrame:]):
- * DumpRenderTree/mac/ResourceLoadDelegate.mm:
- (-[ResourceLoadDelegate webView:identifierForInitialRequest:fromDataSource:]):
- (-[ResourceLoadDelegate webView:resource:willSendRequest:redirectResponse:fromDataSource:]):
- (-[ResourceLoadDelegate webView:resource:didReceiveResponse:fromDataSource:]):
- (-[ResourceLoadDelegate webView:resource:didFinishLoadingFromDataSource:]):
- (-[ResourceLoadDelegate webView:resource:didFailLoadingWithError:fromDataSource:]):
- (-[ResourceLoadDelegate webView:resource:willCacheResponse:fromDataSource:]):
-
-2007-11-04 Mark Rowe <mrowe@apple.com>
-
- Build fix. Don't use Carbon.h as the prefix header as it triggers
- warnings that would otherwise be suppressed due to it being a system header.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
-
-2007-11-03 Maciej Stachowiak <mjs@apple.com>
-
- Rubber stamped by Adam.
-
- - Turn off deprecated function warnings for TestNetscapePlugin because Carbon.h triggers them
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
-
-2007-11-03 David D. Kilzer <ddkilzer@webkit.org>
-
- Sort files(...); sections of Xcode project files.
-
- Rubber-stamped by Darin Adler.
-
- * DrawTest/DrawTest.xcodeproj/project.pbxproj:
- * Drosera/mac/Drosera.xcodeproj/project.pbxproj:
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * WebKitLauncher/WebKitLauncher.xcodeproj/project.pbxproj:
-
-2007-11-03 David D. Kilzer <ddkilzer@webkit.org>
-
- Script to sort "files(...);" sections in Xcode project.pbxproj files.
-
- Reviewed by Darin Adler.
-
- * Scripts/sort-Xcode-project-file: Added.
-
-2007-11-02 Darin Adler <darin@apple.com>
-
- * Scripts/run-sunspider: Changed "--base" to "--set-baseline".
-
-2007-11-02 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- * Scripts/run-sunspider: Pass the "--base" option through.
-
- * Scripts/sunspider-compare-results: Don't check the number of parameters; let
- the real script do that. Default configuration to Release to match run-sunspider
- so we don't end up building Debug just to compare results.
-
-2007-11-01 Adam Roben <aroben@apple.com>
-
- Make changes in WebKit/win show up under "WebKit/win:" instead of just "win:"
-
- Reviewed by Sam.
-
- * Scripts/commit-log-editor: Show all the directories beneath the
- source root, instead of just the last one.
-
-2007-11-01 Kevin Ollivier <kevino@theolliviers.com>
-
- Reviewed by Adam Roben.
-
- Print out an error message when the Windows build fails
- and provide guidance on how to find out what went wrong.
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
-
-2007-11-01 Alexey Proskuryakov <ap@webkit.org>
-
- Rubber-stamped by Adam Roben.
-
- Rolled out r27326 - debug CRT seems to cause no problems after all.
-
- * DumpRenderTree/win/DumpRenderTree.vcproj:
-
-2007-10-31 Adam Roben <aroben@apple.com>
-
- Switch the Debug configuration to using the non-debug CRT
-
- This matches WebKit.
-
- Reviewed by Steve.
-
- * DumpRenderTree/win/DumpRenderTree.vcproj:
-
-2007-10-31 Antti Koivisto <antti@apple.com>
-
- Reviewed by bdash.
-
- Disable media tests when doing leak checking on Tiger.
- They crash in QuickTime (rdar://problem/5537157).
-
- * Scripts/run-webkit-tests:
-
-2007-10-29 Antti Koivisto <antti@apple.com>
-
- Reviewed by Maciej.
-
- Build media support by default on OSX only.
-
- * Scripts/build-webkit:
-
-2007-10-30 Kevin McCullough <kmccullough@apple.com>
-
- - Made Adam the reviewer for a previous checkin. Not sure how it didn't
- get caught by the pre-commit hooks.
-
-2007-10-30 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam.
-
- - This is a collection of relatively unrelated changes and cleanups
- to Drosera to prepare it for interacting with WebKit. A lot of these
- changes are just correcting mistakes, for example removing included
- headers that are no longer needed.
-
- * Drosera/DebuggerDocument.h: Added accessor for the ServerConnection
- this will be needed by the DebuggerClient.
- (DebuggerDocument::server):
- * Drosera/win/BaseDelegate.h: Removed unnecessary include.
- * Drosera/win/DebuggerClient.cpp:
- (DebuggerClient::didFinishLoadForFrame): Finished implementing.
- (DebuggerClient::didReceiveTitle): Added comment about its purpose.
- (DebuggerClient::createWebViewWithRequest): Added comment about its
- purpose.
- * Drosera/win/DebuggerClient.h: Removed unnecessary include, and forward
- declarations.
- (DebuggerClient::webViewLoaded): Moved.
- * Drosera/win/Drosera.cpp: Moved a function from the HelperFunctions
- file, since this was the only place it was used.
- (cfStringToBSTR):
- * Drosera/win/Drosera.h: Cleaned up the includes.
- * Drosera/win/Drosera.vcproj/Drosera.vcproj: Removed HelperFunctions.h
- * Drosera/win/HelperFunctions.h: Removed.
-
-2007-10-30 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam.
-
- - Small cleanup in the ServerConnection class.
-
- * Drosera/win/ServerConnection.cpp: Added comments, moved some functions
- and added an include.
- (ServerConnection::currentFrame):
- (ServerConnection::getCallerFrame):
- * Drosera/win/ServerConnection.h: Added comments, moved some functions,
- made a pointer into a COMPtr, and cleaned up the includes.
-
-2007-10-29 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by John Sullivan.
-
- - Place the Localizable.strings file in mac or win directories
- if that location exists.
- - Also look for UI_STRING in .c files.
-
- * Scripts/extract-localizable-strings:
-
-2007-10-30 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam.
-
- - Set the eol-style to native and made all the line endings the same
- so that I avoid messy diffs that show eol changes.
-
- * Drosera/win/ServerConnection.cpp:
- (ServerConnection::didParseSource):
- (ServerConnection::didEnterCallFrame):
- (ServerConnection::willExecuteStatement):
- (ServerConnection::willLeaveCallFrame):
- (ServerConnection::exceptionWasRaised):
-
-2007-10-30 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam.
-
- * Drosera/win/DebuggerDocumentPlatform.cpp:Implemented much of the
- functionality that could not have existed previously without the new
- interfaces.
- (JSValueRefCreateWithBSTR): Added a helper function to easily convert
- from a BSTR to a JSValueRef.
- (DebuggerDocument::platformEvaluateScript): Implemented.
- (DebuggerDocument::getPlatformCurrentFunctionStack): Implemented.
- (DebuggerDocument::getPlatformLocalScopeVariableNamesForCallFrame):
- Implemented.
- (DebuggerDocument::platformValueForScopeVariableNamed): Implemented.
- * Drosera/win/HelperFunctions.h: Cleaned up some comments.
- * Drosera/win/ServerConnection.cpp: Added a helper function.
- (ServerConnection::getCallerFrame):
- * Drosera/win/ServerConnection.h: Added a helper function.
-
-2007-10-29 Kevin McCullough <kmccullough@apple.com>
-
- updated reviewers for my previous changelog.
-
-2007-10-29 Kevin McCullough <kmccullough@apple.com>
- Reviewed by Maciej and Adam and Geoff.
-
- - Minor mac-side improvements including moving a function to a more
- appropriate location, fixing a warning, and correctly checking
- exceptions.
-
- * Drosera/DebuggerDocument.cpp: Corrected the exception checking.
- (DebuggerDocument::willExecuteStatement):
- (DebuggerDocument::didEnterCallFrame):
- (DebuggerDocument::willLeaveCallFrame):
- (DebuggerDocument::windowScriptObjectAvailable):
- (DebuggerDocument::callFunctionOnObject):
- * Drosera/mac/DebuggerClient.mm: Fixes a warning.
- * Drosera/mac/DebuggerDocumentPlatform.mm: Moved
- webScriptAttributeKeysForScriptObject to DebuggerDocumentPlatform
- because it doesn't require the ServerConnection at all.
- (NSStringCreateWithJSStringRef): Made an argument const.
- (JSValueRefCreateWithNSString): Made an argument const.
- (+[WebScriptObject webScriptAttributeKeysForScriptObject:]):
- (DebuggerDocument::getPlatformLocalScopeVariableNamesForCallFrame):
- * Drosera/mac/ServerConnection.h: Moved aforementioned function.
- * Drosera/mac/ServerConnection.mm: Ditto.
- (-[ServerConnection webView:didLoadMainResourceForDataSource:]):
-
-2007-10-29 Sam Weinig <sam@webkit.org>
-
- Reviewed by Adam Roben.
-
- Add a globalFlag property to the LayoutTestController to allow cross-domain indications.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (getGlobalFlagCallback):
- (setGlobalFlagCallback):
- (LayoutTestController::getJSClass):
- (LayoutTestController::staticValues):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::globalFlag):
- (LayoutTestController::setGlobalFlag):
-
-2007-10-29 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- * Scripts/run-sunspider: Added --shark20 option, to run Shark at its highest sample
- resolution instead of its default.
-
-2007-10-29 David Kilzer <ddkilzer@webkit.org>
-
- Fixed showStatus() to print status for successfully resolved conflicts when using git.
-
- Reviewed by Mark Rowe.
-
- Previously showStatus() would run "git diff --name-status" after a ChangeLog conflict
- was successfully resolved, but this would not show any status because the change had
- already been cached in the index using "git add". The solution is to add an optional
- second argument to showStatus() which adds the "--cached" switch to the command.
-
- * Scripts/resolve-ChangeLogs:
- (showStatus):
-
-2007-10-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by Maciej and Geoff, in unison.
-
- * Scripts/run-webkit-tests: remove broken --svg option
-
-2007-10-28 Darin Adler <darin@apple.com>
-
- Reviewed by Adam.
-
- * Scripts/run-sunspider: Default to "Release" configuration rather than
- defaulting to the last configuration used as other scripts do. This can
- still be overriden on the command line with "--debug" if there's some
- reason to do so. Also fix a typo.
-
- * Scripts/sunspider-compare-results: Fix a typo.
-
-2007-10-26 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam.
-
- - Implemented the WebScriptDebugListener functions now that the
- WebScriptDebugServer exists
-
- * Drosera/win/ServerConnection.cpp: Implemented WebScriptDebugListener
- functions.
- (ServerConnection::currentFrame):
- (ServerConnection::didLoadMainResourceForDataSource):
- (ServerConnection::didParseSource):
- (ServerConnection::failedToParseSource):
- (ServerConnection::didEnterCallFrame):
- (ServerConnection::willExecuteStatement):
- (ServerConnection::willLeaveCallFrame):
- (ServerConnection::exceptionWasRaised):
- * Drosera/win/ServerConnection.h: Removed unused arguments from the
- members arguments list.
-
-2007-10-26 David Kilzer <ddkilzer@webkit.org>
-
- prepare-ChangeLog and update-webkit create needless ChangeLog conflicts
- <http://bugs.webkit.org/show_bug.cgi?id=15600>
-
- Reviewed by Darin Adler.
-
- The resolve-ChangeLog script merges conflicted ChangeLogs in svn or git by creating
- a patch of the local changes and applying it with a fuzz level of 3 to the new file.
- If the patch is successful, it runs 'svn resolved' or 'git add' on the new ChangeLog
- file. Note that it may also be used as a stand-alone script.
-
- * Scripts/prepare-ChangeLog: Call resolve-ChangeLogs for conflicted ChangeLog files.
- * Scripts/resolve-ChangeLogs: Added.
- * Scripts/update-webkit: Call resolve-ChangeLogs for conflicted ChangeLog files.
-
-2007-10-26 Mark Rowe <mrowe@apple.com>
-
- Qt build fix. r27084 added a destructor implementation for LayoutTestController
- to the Qt port on the assumption that it was an implementation of the cross-platform
- LayoutTestController class. It is not, so it did not need to be changed.
-
- * DumpRenderTree/qt/jsobjects.cpp: Remove empty destructor.
-
-2007-10-25 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Maciej.
-
- Fix builds with code coverage enabled.
-
- * Scripts/build-webkit: Don't overwrite the existing value of OTHER_LDFLAGS.
-
-2007-10-25 Darin Adler <darin@apple.com>
-
- Reviewed by Mark Rowe.
-
- * Scripts/make-js-test-wrappers: Don't generate a wrapper for intersectsNode.js.
- * Scripts/prepare-ChangeLog: Add a special case for prefix of empty string.
-
-2007-10-25 Stephanie <slewis@apple.com>
-
- build Fix
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
-
-2007-10-25 Stephanie <slewis@apple.com>
-
- Reviewed by Mark Rowe, Adam Roben.
-
- Weak link against WebCore so DumpRenderTree can be bundled with production roots.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
-
-2007-10-25 Alice Liu <alice.liu@apple.com>
-
- Reviewed by Adam.
-
- Fixed <rdar://5549689> 2 tests in fast/forms fail when run with other tests on Windows
-
- Moving destructor into platform-specific files
- * DumpRenderTree/LayoutTestController.cpp:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::~LayoutTestController):
- * DumpRenderTree/qt/jsobjects.cpp:
- (LayoutTestController::~LayoutTestController):
-
- LayoutTestController wasn't being destroyed
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (runTest):
-
- Added declspec
- * DumpRenderTree/win/EditingDelegate.h:
-
- Reset certain values on the webview (or related delegate) that might
- have changed while running a test
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::~LayoutTestController):
-
-2007-10-25 Adam Roben <aroben@apple.com>
-
- Make sunspider-compare-results work with relative paths
-
- Reviewed by Sam.
-
- * Scripts/sunspider-compare-results: Convert arguments to absolute
- paths before we chdir.
-
-2007-10-25 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Sam.
-
- - Implemented server calls now the WebScriptDebugServer exists.
- - Also removed no longer needed call to initialize CG.
-
- * Drosera/win/Drosera.cpp: No longer initializes CG because this happens
- automatically now.
- (_tWinMain):
- * Drosera/win/ServerConnection.cpp: Now uses the COM class.
- (ServerConnection::ServerConnection):
- (ServerConnection::~ServerConnection):
- (ServerConnection::pause):
- (ServerConnection::resume):
- (ServerConnection::stepInto):
- (ServerConnection::applicationTerminating):
- (ServerConnection::serverConnectionDidDie):
- * Drosera/win/ServerConnection.h: Now uses the COM class.
-
-2007-10-24 George Staikos <staikos@kde.org>
-
- Unbreak Qt build.
-
- * Scripts/build-webkit:
-
-2007-10-24 Adam Roben <aroben@apple.com>
-
- Remove now-unnecessary call to InitializeCoreGraphics
-
- WebKit takes care of this now.
-
- Reviewed by Ada.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (initialize):
-
-2007-10-24 Adam Roben <aroben@apple.com>
-
- Use WebTextRenderer in DRT
-
- Reviewed by Ada.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (initialize): Use WebTextRenderer instead of using AddFontResourceEx.
-
-2007-10-24 Sven Herzberg <sven@imendio.com>
-
- Reviewed by Mark Rowe.
-
- Fixes http://bugs.webkit.org/show_bug.cgi?id=15614
- Bug 15614: [GTK] qmake based backends don't build on OS X
-
- * Scripts/build-webkit: set QMAKESPEC correctly if building the QT or
- GTK backend on a Mac
- * Scripts/webkitdirs.pm: extracted the darwin-test from isOSX() into
- isDarwin() to make it reusable in other places (like the workaround-
- for-prebuilt-qmake in build-webkit)
-
-2007-10-24 David Kilzer <ddkilzer@webkit.org>
-
- Refurbish update-webkit script.
-
- Reviewed by Adam.
-
- * Scripts/update-webkit: Add -h|--help switch and usage statement. Check result of
- GetOptions() call. Fix -q|--quiet switch to be passed to svn command properly. Use
- multi-argument version of system() for flexibility and security. Check for existence
- of Internal directory using -d test instead of -x.
-
-2007-10-24 David Kilzer <ddkilzer@webkit.org>
-
- Minor clean-up of prepare-ChangeLog script.
-
- Reviewed by Adam.
-
- * Scripts/prepare-ChangeLog: Keep list of updated ChangeLog files in an array instead
- of a string. Use multi-argument versions of open() and system() for flexibility and
- security.
-
-2007-10-24 Alice Liu <alice.liu@apple.com>
-
- Reviewed by Oliver.
-
- Fix <rdar://5410959> editing/selection/drag-to-contenteditable-iframe.html fails on Windows
-
- Move the call to replaySavedEvents from doDragDrop to doMouseMove because we don't want to
- replay the saved events when we're still processing the mousedown that starts the drag
- * DumpRenderTree/win/EventSender.cpp:
- (doMouseMove):
- * DumpRenderTree/win/UIDelegate.cpp:
- (UIDelegate::doDragDrop):
-
-2007-10-24 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Sam, Steve and Darin.
-
- - Stubbed out the WebScriptDebugListener functionality in the Server
- Connection class to prepare it for receiving those callbacks.
- - Also I changed the instantiation of DebuggerClient, DebuggerDocument
- and the ServerConnection to not need to be initialized with a server
- name, since that is not the way we connect to the WebKit server.
-
- * Drosera/DebuggerDocument.cpp: Fixed a bug where I was always logging
- no exception. Now it only loggs when there is an exception
- (DebuggerDocument::willExecuteStatement):
- (DebuggerDocument::didEnterCallFrame):
- (DebuggerDocument::willLeaveCallFrame):
- (DebuggerDocument::windowScriptObjectAvailable):
- (DebuggerDocument::callFunctionOnObject):
- * Drosera/win/DebuggerClient.cpp: No longer needs the ServerConnection
- to be instantiated with a server's name.
- (DebuggerClient::DebuggerClient):
- (DebuggerClient::didFinishLoadForFrame):
- * Drosera/win/DebuggerClient.h: Removed unsued variable.
- * Drosera/win/Drosera.cpp: Client no longer needs to be initialized with
- a server name.
- (Drosera::init):
- (Drosera::initServer):
- * Drosera/win/Drosera.h: No longer need the ServerConnection to be
- instantiated with a server's name.
- * Drosera/win/ServerConnection.cpp:
- (ServerConnection::ServerConnection): No longer needs a server name
- (ServerConnection::~ServerConnection): Only release the global context
- if there is one.
- (ServerConnection::serverConnectionDidDie): Stub for
- IWebScriptDebugListener
- (ServerConnection::QueryInterface): ditto
- (ServerConnection::AddRef): ditto
- (ServerConnection::Release): ditto
- (ServerConnection::didLoadMainResourceForDataSource): ditto
- (ServerConnection::didParseSource): ditto
- (ServerConnection::failedToParseSource): ditto
- (ServerConnection::didEnterCallFrame): ditto
- (ServerConnection::willExecuteStatement): ditto
- (ServerConnection::willLeaveCallFrame): ditto
- (ServerConnection::exceptionWasRaised): ditto
- * Drosera/win/ServerConnection.h: Stubbed out the
- IWebScriptDebugListener functions, and this class no longer needs to be
- instantiated with a server name.
-
-2007-10-24 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Simon.
-
- add a layoutTestController.dumpSelectionRect() dummy. It only has an effect on mac pixel tests anyway. Makes us pass another 5 test cases.
-
- * DumpRenderTree/qt/jsobjects.h:
-
-2007-10-24 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Simon.
-
- add another command.
-
- * DumpRenderTree/qt/jsobjects.cpp:
- (TextInputController::doCommand):
-
-2007-10-24 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Simon.
-
- add empty eventSender.clearKillRing(), and map some of the special keys used in eventSender.keyDown() to things that work on Qt/X11.
-
- * DumpRenderTree/qt/jsobjects.cpp:
- (EventSender::keyDown):
- * DumpRenderTree/qt/jsobjects.h:
-
-2007-10-24 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Simon.
-
- implement eventSender.keyDown().
-
- * DumpRenderTree/qt/jsobjects.cpp:
- (EventSender::keyDown):
-
-2007-10-24 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Simon.
-
- some smaller fixes to the editing support in DRT. Makes another few tests pass.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::initJSObjects):
- * DumpRenderTree/qt/jsobjects.cpp:
- (TextInputController::doCommand):
-
-2007-10-24 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Simon.
-
- first bit of implementation for the textinputcontroller.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- * DumpRenderTree/qt/DumpRenderTree.h:
- * DumpRenderTree/qt/jsobjects.cpp:
- (TextInputController::TextInputController):
- (TextInputController::doCommand):
- * DumpRenderTree/qt/jsobjects.h:
-
-2007-10-24 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Simon.
-
- make the man webpage believe it has focus, so the editing tests work correctly.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
-
-2007-10-24 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Simon.
-
- implement layoutTestController.dumpEditingCallbacks() correctly.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- * DumpRenderTree/qt/jsobjects.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::dumpEditingCallbacks):
-
-2007-10-24 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Simon.
-
- Implement support for testing editing.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
-
-2007-10-23 Sam Weinig <sam@webkit.org>
-
- Check for null BSTR that can be passed to the UIDelegate methods
- from javascript null and undefined. Fixes a failing test case on
- Windows (fast/dom/Window/alert-undefined.html)
-
- Reviewed by Eric Seidel.
-
- * DumpRenderTree/win/UIDelegate.cpp:
- (UIDelegate::runJavaScriptAlertPanelWithMessage):
- (UIDelegate::runJavaScriptConfirmPanelWithMessage):
- (UIDelegate::runJavaScriptTextInputPanelWithPrompt):
- (UIDelegate::webViewAddMessageToConsole):
-
-2007-10-23 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin Adler.
-
- Don't print a massive pile of setenvs from tools that automatically build testkjs.
-
- * Scripts/build-testkjs:
-
-2007-10-23 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin Adler.
-
- - add wrapper that finds the right copy of testkjs
-
- * Scripts/sunspider-compare-results: Added.
-
-2007-10-23 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Sam.
-
- - After talking with Steve I now see that the WebKit server must be
- running for DCOM to create the distributed objects, which makes sense
- and currently WebKit only allows one instance to be running at a time
- which avoids accidentally connecting to the wrong server
- - In light of this I have removed the code for the attach box and
- NotificationServer and known server names, since they are all extranious
- now.
-
- * Drosera/win/Drosera.cpp: Removed notification classes and known server
- names.
- (_tWinMain): Uses init instead of initUI.
- (droseraWndProc): No longer creats an attach dialog box.
- (Drosera::Drosera): Does the OleInitialize so COM is ready to go and
- it's not manditory to call init before doing COM stuff.
- (Drosera::init): calls initUI and will call attach when the
- functionality exists.
- (Drosera::initUI): Has changed very little.
- (Drosera::attach): Changed the signature to reflect that we no longer
- need the dictionary of known server names.
- * Drosera/win/Drosera.h: Removed notification classes and known server
- names. Also renamed and moved some functions.
- * Drosera/win/Drosera.vcproj/Drosera.rc: Removed the Attach box.
- * Drosera/win/Drosera.vcproj/Drosera.vcproj: Moved resource.h from the
- headers to the resources folder.
- * Drosera/win/resource.h: Removed the Attach box.
-
-2007-10-22 Adam Roben <aroben@apple.com>
-
- Windows build fix
-
- * Scripts/build-dumprendertree: Fix path to DumpRenderTree.sln.
-
-2007-10-22 Kevin McCullough <kmccullough@apple.com>
-
- - Removed a leak that was fixed.
-
- * Scripts/run-webkit-tests:
-
-2007-10-19 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Darin Adler.
-
- - Changed the Client so that the DebuggerDocument now own the
- ServerConnection. This simplifies ownership and cleanup.
-
- * Drosera/win/DebuggerClient.cpp: The DebuggerDocument now owns the
- ServerConnection.
- (DebuggerClient::initWithServerName):
- (DebuggerClient::didFinishLoadForFrame):
- * Drosera/win/DebuggerClient.h: DebuggerDocument now owns the
- ServerConnection.
- * Drosera/win/Drosera.cpp: Moved some WebFrame initialization logic to
- until after we have a server which we are attached to.
- (Drosera::initUI):
- (Drosera::attach):
- * Drosera/win/Drosera.h: Removed two needless pointers I forgot to take
- out previously.
-
-2007-10-22 Simon Hausmann <hausmann@kde.org>
-
- Reviewed by Nikolas.
-
- When running build-testkjs make sure it's called through the perl interpreter, to fix the build for Qt/Windows.
-
- * Scripts/run-javascriptcore-tests:
-
-2007-10-22 Simon Hausmann <hausmann@kde.org>
-
- Reviewed by Nikolas.
-
- Wrap WEXITSTATUS with a little exitStatus() helper function that falls back to the use of $returnvalue >> 8 on Windows to determine the exit status on platforms without WEXITSTATUS.
-
- * Scripts/build-drosera:
- * Scripts/build-dumprendertree:
- * Scripts/build-testkjs:
- * Scripts/build-webkit:
- * Scripts/run-javascriptcore-tests:
- * Scripts/run-sunspider:
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
-
-2007-10-22 Andrew Wellington <proton@wiretapped.net>
-
- Reviewed by Mark Rowe.
-
- Fix for local database support after r26879
- Ensure that ENABLE_DATABASE and ENABLE_ICONDATABASE are correctly set
-
- * Scripts/build-webkit:
-
-2007-10-22 Holger Freyther <zecke@selfish.org>
-
- Reviewed by Simon Hausmann <hausmann@kde.org>.
-
- - Do not build testkjs as an application bundle. This is
- needed for run-javascriptcore-tests on OSX.
- - Also, based on r26633, allow to test the WebKit/Qt port on OSX.
- - Set DYLD_LIBRARY_PATH if it was set in the environment. It must be set
- as we do not have -rpath on OSX.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * Scripts/run-webkit-tests:
-
-2007-10-22 Simon Hausmann <hausmann@kde.org>
-
- Reviewed by aroben.
-
- Fix support for Signed-off-by detection in prepare-ChangeLog
- --git-commit. The Signed-off-by tag does not appear in the header
- but usually at the end.
-
- * Scripts/prepare-ChangeLog:
-
-2007-10-21 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Eric.
-
- Fix run-javascriptcore-tests for Gtk.
-
- * Scripts/build-testkjs: testkjs is built by build-webkit for Gtk.
-
-2007-10-20 Eric Seidel <eric@webkit.org>
-
- Reviewed by aroben.
-
- * Scripts/find-extra-includes: fix path matching regex to not match ".patch"
-
-2007-10-20 Eric Seidel <eric@webkit.org>
-
- Reviewed by darin.
-
- Add improved argument handling to run-sunspider, including
- --runs=<number>, --shell=<path>, --tests=<pattern>, --shark, and --help
- Also re-factor code into subroutines
-
- * Scripts/build-dumprendertree: removed bogus comments
- * Scripts/build-testkjs: Added.
- * Scripts/run-javascriptcore-tests: use build-testkjs
- * Scripts/run-sunspider: improved argument handling, abstraction
- * Scripts/run-webkit-tests: improved abstraction
-
-2007-10-20 Matt Lilek <webkit@mattlilek.com>
-
- Not reviewed, Windows build fix.
-
- * DumpRenderTree/win/EventSender.cpp:
- (keyDownCallback):
-
-2007-10-20 Darin Adler <darin@apple.com>
-
- Reviewed by Tim Hatcher.
-
- - http://bugs.webkit.org/show_bug.cgi?id=15544
- <rdar://problem/5076426> fast/events/arrow-navigation.html needs to
- not rely on Apple-specific key codes
-
- * DumpRenderTree/mac/EventSendingController.mm:
- (-[EventSendingController keyDown:withModifiers:]):
- Added named key "rightArrow". Later we could have a whole table of these.
- Also tweaked modifiers code a little.
-
- * DumpRenderTree/win/EventSender.cpp: (keyDownCallback): Ditto.
-
-2007-10-19 Darin Adler <darin@apple.com>
-
- Reviewed by Eric.
-
- - http://bugs.webkit.org/show_bug.cgi?id=15566
- possible fix for leak seen in DumpRenderTree
-
- * DumpRenderTree/WorkQueue.cpp: (WorkQueue::queue):
- Delete the item if it's not put on the queue, since the caller has
- no way of knowing that. Would be better to have the parameter type
- be auto_ptr to express the fact that we take ownership.
-
- - unrelated change
-
- * Drosera/mac/main.m: Add missing include.
-
-2007-10-19 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam.
-
- - This change should be identical but for some reason was not working
- on my machine.
-
- * Scripts/prepare-ChangeLog:
-
-2007-10-19 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Oliver and Tim.
-
- - Made use of RetainPtr to avoid retain and release issues and moved the
- log function to DebuggerDocumentPlatform, which seems to be a more
- logical place for it to live.
- - Also moved knownServers from the ServerConnection to
- DebuggerApplication to match the Windows code and because it makes sense
- that a connection knows its own server but not all of them.
-
- * Drosera/mac/DebuggerClient.h: Moved the log function to
- DebuggerDocumentPlatform.
- * Drosera/mac/DebuggerClient.mm: Ditto. Also do not release the server
- Because it's owned by an own Ptr in DebuggerDocument. Also moved the
- call for the server name up from the ServerConnection class.
- (-[DebuggerClient dealloc]):
- (-[DebuggerClient webView:didReceiveTitle:forFrame:]): Moved the call
- for the server name up from the ServerConnection.
- * Drosera/mac/DebuggerDocumentPlatform.mm: Made the server an OwnPtr.
- (DebuggerDocument::platformPause):
- (DebuggerDocument::platformResume):
- (DebuggerDocument::platformStepInto):
- (DebuggerDocument::platformEvaluateScript):
- (DebuggerDocument::getPlatformCurrentFunctionStack):
- (DebuggerDocument::getPlatformLocalScopeVariableNamesForCallFrame):
- (DebuggerDocument::platformValueForScopeVariableNamed):
- (DebuggerDocument::platformLog): Log directly from here. No need to call
- DebuggerClient.
- * Drosera/mac/ServerConnection.h: Removed the knownServers function. The
- way I see it, a ServerConnection should only know about its connection
- and the group of all possible servers should be kept by the
- application.
- * Drosera/mac/ServerConnection.mm: Removed knownServer but added
- currentServerName, it makes sense that the connection should know that
- name.
- (-[ServerConnection currentServerName]):
-
-2007-10-19 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam.
-
- - Integrated changes from mac drosera. Recently I've encapsulated
- out the server connection object from the rest of Drosera because
- it is very platform dependent right now and RPC is not implemented on
- windows. This functionality, of communicating with the WebKit server
- is the next area I will be focusing on in Windows.
-
- - Other changes and cleanup were made to organize the code and add notes
- on which parts still need work. Also some mac code is added and
- commented out, to act as pseudocode for the logic of those parts.
-
- * Drosera/DebuggerDocument.h: Make the ServerConnection live in a smart
- pointer.
- * Drosera/config.h: Added whitespace.
- * Drosera/win/DebuggerApplication.cpp: Removed. The functionality of
- these files got moved into Drosera.h/cpp
- * Drosera/win/DebuggerApplication.h: Removed.
- * Drosera/win/DebuggerClient.cpp: Lots of cleanup and restructuring
- happened here to better match the logic flow of the same code on the
- mac side and to use the new ServerConnection class.
- (DebuggerClient::DebuggerClient): Constructor that takes a server name.
- (DebuggerClient::initWithServerName): Initializer that will set up the
- class to use a ServerConnection object. This was necessary so I could
- create a DebuggerClient without having to initilaize it at
- construction.
- (DebuggerClient::QueryInterface): Moved from Drosera.cpp, the Client
- will be the UIDelegate and FrameLoadDelegate.
- (DebuggerClient::AddRef): For IUnknown.
- (DebuggerClient::Release): For IUnknown.
- (DebuggerClient::didFinishLoadForFrame): Part of the FrameLoadDelegate
- this still needs to set the global context of the server, but
- IWebFrame does not have an accessor for the global context yet.
- (DebuggerClient::windowScriptObjectAvailable): Part of FrameLoadDelegate
- this is a pass through for the same function in the document.
- (DebuggerClient::didReceiveTitle): Unimplemented part of
- FrameLoadDelegate this would change the title of the window.
- (DebuggerClient::createWebViewWithRequest): Part of the
- FrameLoadDelegate. This is about new windows via Window.open() and
- how their delegates are set.
- (DebuggerClient::runJavaScriptAlertPanelWithMessage): Part of the
- UIDelegate. Just a debug function for printing messages.
- * Drosera/win/DebuggerClient.h: Moved functionality from Drosera.h
- because the Client should be the UIDelegate and FrameLoadDelegate
- to match the delegates on mac.
- (DebuggerClient::webViewLoaded): Added accessor method.
- * Drosera/win/DebuggerDocumentPlatform.cpp: Added. I had apperently
- forgotten to add this file before. This is where the platform
- dependent versions of the Documents functions live. Most of these are
- unimplemented because some piece of functionality does not exist on
- Windows yet.
- (DebuggerDocument::platformPause):
- (DebuggerDocument::platformResume):
- (DebuggerDocument::platformStepInto):
- (DebuggerDocument::platformEvaluateScript):
- (DebuggerDocument::getPlatformCurrentFunctionStack):
- (DebuggerDocument::getPlatformLocalScopeVariableNamesForCallFrame):
- (DebuggerDocument::platformValueForScopeVariableNamed):
- (DebuggerDocument::platformLog):
- * Drosera/win/Drosera.cpp: Removed UIDelegate and FrameLoadDelegate
- responsibilities becaue they belong in the Client. Also I laid the
- groundwork for attaching Drosera to a WebKit process
- (attachWndProc): Now if a server is selected the Client becomes it's
- delegate.
- (Drosera::Drosera): Added the construction of the Client and dictionary
- of server names.
- (Drosera::initUI): This is no longer the delegates, the Client is.
- (Drosera::webViewLoaded): Now asks the Client instead of holding local
- state.
- (Drosera::applicationDidFinishLaunching): Placeholder for needed
- notification registration when it's possible to implement.
- (Drosera::serverLoaded): Ditto
- (Drosera::serverUnloaded): Ditto
- (Drosera::attach): Attach Drosera to the WebKit server.
- * Drosera/win/Drosera.h: Ditto for Drosera.cpp comment.
- (Drosera::getInst):
- (Drosera::setInst):
- (Drosera::knownServers):
- * Drosera/win/Drosera.vcproj/Drosera.vcproj: Removed DebuggerApplication
- and added the ServerConnection.
- * Drosera/win/DroseraPrefix.h: Added an ifndef check.
- * Drosera/win/ServerConnection.cpp: Added. This is the interesting part
- Most of the functions are completely unimlemented because they cannot
- connect with the WebKit server, because one does not exist on Windows
- yet.
- (ServerConnection::initWithServerName):
- (ServerConnection::~ServerConnection):
- (ServerConnection::setGlobalContext):
- (ServerConnection::pause):
- (ServerConnection::resume):
- (ServerConnection::stepInto):
- (ServerConnection::switchToServerNamed):
- (ServerConnection::applicationTerminating):
- (ServerConnection::serverConnectionDidDie):
- (ServerConnection::currentFrame):
- * Drosera/win/ServerConnection.h: Added. Ditto.
- (ServerConnection::ServerConnection):
-
-2007-10-19 Alice Liu <alice.liu@apple.com>
-
- Reviewed by Darin Adler.
-
- Fix for these broken layout tests on Windows:
-
- fast/forms/focus-selection-input.html
- fast/forms/focus-selection-textarea.html
- fast/forms/select-accesskey.html
-
- * DumpRenderTree/win/EventSender.cpp:
- (keyDownCallback):
- correct the VK code for alt key.
-
-2007-10-19 Eric Seidel <eric@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Make the GtkLauncher code slightly more readable.
-
- * GtkLauncher/main.cpp:
- (setupMainMenu): Added.
- (setupMainWindowUI): Added.
- (main):
-
-2007-10-19 Maciej Stachowiak <mjs@apple.com>
-
- Rubber stamped by Adam.
-
- - don't delay-load WebKit in DumpRenderTree.
-
- * DumpRenderTree/win/DumpRenderTree.vcproj:
-
-2007-10-18 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Adam Roben.
-
- - fix <rdar://problem/5313523>
- REGRESSION(Leopard): http/tests/incremental/slow-utf8-text.pl fails on Leopard
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dump): Changed to use _responseMIMEType.
-
-2007-10-17 Adam Roben <aroben@apple.com>
-
- Make it possible to have Windows-specific tests and results
-
- When searching for tests to run and the Skipped file, we will only
- look in platform/win and the cross-platform directory. When looking
- for expected results, we will look in platform/win, then
- platform/mac-leopard, then platform/mac, then finally the
- cross-platform directory.
-
- Reviewed by Sam.
-
- * Scripts/run-webkit-tests:
- (sub expectedDirectoryForTest): Search in mac-leopard and mac before
- searching in the cross-platform directory.
- (sub buildPlatformHierarchy): Removed some unneeded calls to
- dirname/basename.
-
-2007-10-17 Adam Roben <aroben@apple.com>
-
- Add back the call to register WebKit that we had before WebKitInitializer existed
-
- This is needed to ensure that the right WebKit is used when
- instantiating COM objects.
-
- Reviewed by Oliver.
-
- * DumpRenderTree/win/debug_internal.vsprops: Define
- DEBUG_WEBKIT_HAS_SUFFIX.
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (initialize):
-
-2007-10-17 Adam Roben <aroben@apple.com>
-
- Import File::Basename in webkitdirs since we use it
-
- * Scripts/webkitdirs.pm:
-
-2007-10-17 Kevin McCullough <kmccullough@apple.com>
-
- - Updated the tiger leaks list to make the internal bots green.
-
- * Scripts/run-webkit-tests:
-
-2007-10-17 Adam Roben <aroben@apple.com>
-
- Build fix for VC++ Express
-
- * FindSafari/FindSafari.vcproj: Explicitly link against advapi32.lib
- and ole32.lib.
-
-2007-10-16 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Sam.
-
- - Minor mac improvements based on observations I made while implementing the
- Windows code.
-
- * Drosera/mac/DebuggerApplication.mm: Attach does not need to create the server
- then hand it to the Client who will retain it, it should just be the client who
- creates and owns the server.
- (-[DebuggerApplication attach:]):
- * Drosera/mac/DebuggerClient.h: Can now be created with just a server name.
- * Drosera/mac/DebuggerClient.mm: Creates the server.
- (-[DebuggerClient initWithServerName:]):
- * Drosera/mac/ServerConnection.mm: Does not need to include 2 header files, but
- can instead forward declare what it needs.
-
-2007-10-16 Darin Adler <darin@apple.com>
-
- Reviewed by Geoff Garen.
-
- * Scripts/run-webkit-tests: Added --add-platform-exceptions; useful when you
- want to turn failing tests into platform-specific test results. Also did a
- number of tweaks, including fixing a potential bug where expectedDirectoryForTest
- would take the type of results into account only some of the time.
-
-2007-10-16 Adam Roben <aroben@apple.com>
-
- Add a new nightly launcher script for Windows
-
- This new script is for versions of Safari that don't delay-load
- WebKit. I had to make FindSafari be able to print out the nightly
- launcher script on stdout because Windows shell scripts can't capture
- the output from a command into an environment variable.
-
- Reviewed by Steve.
-
- * FindSafari/FindSafari.cpp:
- (_tmain): Added /printSafariLauncher option.
- * Scripts/run-webkit-nightly.cmd: Added.
-
-2007-10-16 Adam Roben <aroben@apple.com>
-
- Replace WebKitInitializer with FindSafari
-
- We now rely on setting the PATH environment variable to tell Windows
- where to find WebKit and its dependencies (similar to
- DYLD_FRAMEWORK_PATH on Mac).
-
- This change also make DumpRenderTree no longer delay-load WebKit.
-
- Reviewed by Sam.
-
- * DumpRenderTree/DumpRenderTree.sln: Removed WebKitInitializer, added
- FindSafari.
- * DumpRenderTree/win/DumpRenderTree.cpp: Don't use WebKitInitializer.
- * DumpRenderTree/win/DumpRenderTree.vcproj: Don't link against
- WebKitInitializer, don't delay-load WebKit.
- * Scripts/run-javascriptcore-tests: Call setPathForRunningWebKitApp.
- * Scripts/run-webkit-tests: Ditto.
- * Scripts/webkitdirs.pm:
- (sub setPathForRunningWebKitApp): Added.
- * WebKitInitializer/WebKitInitializer.cpp: Removed.
- * WebKitInitializer/WebKitInitializer.h: Removed.
- * WebKitInitializer/WebKitInitializer.vcproj: Removed.
- * WebKitInitializer/debug.vsprops: Removed.
- * WebKitInitializer/debug_internal.vsprops: Removed.
- * WebKitInitializer/release.vsprops: Removed.
-
-2007-10-16 Adam Roben <aroben@apple.com>
-
- Fix Bug 15532: run-safari fails if Safari is installed in a non-default location
-
- http://bugs.webkit.org/show_bug.cgi?id=15532
-
- FindSafari simply prints the location of an installed Safari.exe on
- stdout.
-
- Reviewed by Darin Adler.
-
- * FindSafari/FindSafari.cpp: Copied from WebKitTools/WebKitInitializer/WebKitInitializer.cpp.
- (getStringValue):
- (getWebViewCLSID):
- (getInstalledWebKitDirectory):
- (_tmain):
- * FindSafari/FindSafari.vcproj: Added.
- * Scripts/webkitdirs.pm:
- (sub installedSafariPath): Added. Calls FindSafari on Windows.
-
-2007-10-16 Adam Roben <aroben@apple.com>
-
- Updated for rename of WebKit_debug.dll to WebKit.dll for the Debug configuration
-
- Reviewed by Kevin McCullough.
-
- * DumpRenderTree/win/DumpRenderTree.vcproj: Use WebKitDLLConfigSuffix
- when referring to WebKit.dll.
- * DumpRenderTree/win/debug.vsprops: Added WebKitDLLConfigSuffix.
- * DumpRenderTree/win/debug_internal.vsprops: Ditto.
- * DumpRenderTree/win/release.vsprops: Ditto.
- * Scripts/run-safari: Don't pass /debug to Safari anymore because we
- never have a _debug suffix on WebKit.dll.
- * WebKitInitializer/WebKitInitializer.cpp:
- (initializeWebKit): Only use the _debug suffix for WebKit.dll when
- specified.
- * WebKitInitializer/debug_internal.vsprops: Added
- DEBUG_WEBKIT_HAS_SUFFIX preprocessor definition.
-
-2007-10-16 Darin Adler <darin@apple.com>
-
- Reviewed by Adele.
-
- * DumpRenderTree/win/EventSender.cpp: (keyDownCallback):
- Remove now-unneeded control/alt key hack; the tests have been updated.
-
-2007-10-16 Kevin McCullough <kmccullough@apple.com>
-
- - Updated leaks list because our internal bot upgraded it's version of leopard and
- one of the leaks was fixed between that revision and the bot's previous version of
- leopard.
-
- * Scripts/run-webkit-tests:
-
-2007-10-15 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Tim.
-
- - I encapsulated out the server connecton functionality because it is a specific part
- of Drosera that will be platform dependant until the WebScriptDebugServer can be moved
- into WebCore and C++. But if it is encapsulated out it can be easily replaced on
- Windows. So the majority of this patch is moving preexisting functionality.
-
- - Also I removed the prefix header and changed to use config.h because it is more
- standard on how we use config.h in windows and it didn't make much sense to keep
- the prefix header and the config.h
-
- * Drosera/DebuggerDocument.cpp:
- (DebuggerDocument::DebuggerDocument):
- * Drosera/DebuggerDocument.h:
- * Drosera/config.h:
- * Drosera/mac/DebuggerApplication.mm:
- (-[DebuggerApplication attach:]):
- * Drosera/mac/DebuggerClient.h:
- * Drosera/mac/DebuggerClient.mm:
- (-[DebuggerClient initWithServerConnection:]):
- (-[DebuggerClient dealloc]):
- (-[DebuggerClient windowDidLoad]):
- (-[DebuggerClient windowWillClose:]):
- (-[DebuggerClient webView:didFinishLoadForFrame:]):
- (-[DebuggerClient webView:didReceiveTitle:forFrame:]):
- * Drosera/mac/DebuggerDocumentPlatform.mm:
- (DebuggerDocument::platformPause):
- (DebuggerDocument::platformResume):
- (DebuggerDocument::platformStepInto):
- (DebuggerDocument::platformEvaluateScript):
- (DebuggerDocument::getPlatformCurrentFunctionStack):
- (DebuggerDocument::getPlatformLocalScopeVariableNamesForCallFrame):
- (DebuggerDocument::platformValueForScopeVariableNamed):
- (DebuggerDocument::platformLog):
- * Drosera/mac/Drosera.pch: Removed.
- * Drosera/mac/Drosera.xcodeproj/project.pbxproj:
- * Drosera/mac/ServerConnection.h: Added.
- * Drosera/mac/ServerConnection.mm: Added.
- (-[ServerConnection initWithServerName:]):
- (-[ServerConnection dealloc]):
- (-[ServerConnection setGlobalContext:]):
- (-[ServerConnection pause]):
- (-[ServerConnection resume]):
- (-[ServerConnection stepInto]):
- (-[ServerConnection switchToServerNamed:]):
- (-[ServerConnection applicationTerminating:]):
- (-[ServerConnection serverConnectionDidDie:]):
- (-[ServerConnection webView:didLoadMainResourceForDataSource:]):
- (-[ServerConnection webView:didParseSource:baseLineNumber:fromURL:sourceId:forWebFrame:]):
- (-[ServerConnection webView:failedToParseSource:baseLineNumber:fromURL:withError:forWebFrame:]):
- (-[ServerConnection webView:didEnterCallFrame:sourceId:line:forWebFrame:]):
- (-[ServerConnection webView:willExecuteStatement:sourceId:line:forWebFrame:]):
- (-[ServerConnection webView:willLeaveCallFrame:sourceId:line:forWebFrame:]):
- (-[ServerConnection webView:exceptionWasRaised:sourceId:line:forWebFrame:]):
- (-[ServerConnection currentFrame]):
- (-[ServerConnection webScriptAttributeKeysForScriptObject:]):
- (-[ServerConnection knownServers]):
-
-2007-10-15 David Kilzer <ddkilzer@webkit.org>
-
- Reviewed by Eric.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=15002
- Script to automatically search nightly builds for regressions (bisect-builds)
-
- * Scripts/bisect-builds: Added.
-
-2007-10-14 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin Adler.
-
- - New JavaScript benchmark
- http://bugs.webkit.org/show_bug.cgi?id=15515
-
- * Scripts/run-sunspider: Added. Wrapper to run sunspider on the
- current development or release build of JavaScriptCore.
-
-2007-10-15 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Sam.
-
- Fix 'run-webkit-tests --qt' complaining about the --qt argument.
-
- * Scripts/webkitdirs.pm:
- - Change checkArgv to remove the options from @ARGV to prevent
- them from interfering with further option processing.
- - Fix logic error in determineIsQt that would prevent it from bailing out early.
- - Change isOSX to mean OS X and not Qt or Gtk. Most of our uses of isOSX assume that this is the meaning
- already, so this change fixes several broken areas of the scripts including 'run-webkit-tests --qt' on a Mac
- incorrectly using the Mac results, and 'run-webkit-tests --gtk' attempting to build the Mac DumpRenderTree.
-
-2007-10-15 Darin Adler <darin@apple.com>
-
- Reviewed by Sam.
-
- - added logging of window.prompt and window.confirm
-
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:]):
- Implement the recommended delegate rather than the deprecated one.
- (-[UIDelegate webView:runJavaScriptConfirmPanelWithMessage:initiatedByFrame:]):
- Added.
- (-[UIDelegate webView:runJavaScriptTextInputPanelWithPrompt:defaultText:initiatedByFrame:]):
- Added.
-
- * DumpRenderTree/win/UIDelegate.h:
- * DumpRenderTree/win/UIDelegate.cpp:
- (UIDelegate::runJavaScriptAlertPanelWithMessage): Got rid of unnecessary check for null string.
- (UIDelegate::runJavaScriptConfirmPanelWithMessage): Added.
- (UIDelegate::runJavaScriptTextInputPanelWithPrompt): Added.
- (UIDelegate::webViewAddMessageToConsole): Got rid of unnecessary check for null string.
-
-2007-10-15 Alice Liu <alice.liu@apple.com>
-
- Reviewed by Sam Weinig.
-
- Fixed <rdar://5382546> layoutTestController.setCustomPolicyDelegate is unimplemented causing tests to fail
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (runTest): Like on mac, before running each test, set the webview's policy delegate to null
- (main): allocate the global policy delegate for DRT's custom use
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- Adding files to project
- * DumpRenderTree/win/DumpRenderTreeWin.h: declaring global DRT policy delegate
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setCustomPolicyDelegate):
- set the webview's policy delegate to DRT's custom one if the test requests it.
- * DumpRenderTree/win/PolicyDelegate.cpp: Added.
- Implementation is a direct port of DumpRenderTree/mac/PolicyDelegate.mm
- (PolicyDelegate::PolicyDelegate):
- (PolicyDelegate::QueryInterface):
- (PolicyDelegate::AddRef):
- (PolicyDelegate::Release):
- (PolicyDelegate::decidePolicyForNavigationAction):
- * DumpRenderTree/win/PolicyDelegate.h: Added.
- (PolicyDelegate::decidePolicyForNewWindowAction):
- (PolicyDelegate::decidePolicyForMIMEType):
- (PolicyDelegate::unableToImplementPolicyWithError):
-
-2007-10-14 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by Mark.
-
- * Scripts/webkitdirs.pm: Use qmake binary specified via --qmake on command-line
- when querying for QMAKE_MKSPECS.
-
-2007-10-14 Andrew Wellington <proton@wiretapped.net>
-
- Reviewed by Adam Roben.
-
- Fix run-webkit-tests is too greedy calculating platform hierarchy
- http://bugs.webkit.org/show_bug.cgi?id=15465
-
- Fix run-webkit-tests being too greedy in trying to split the platform name up
- causing it to try and find tests in every directory above the first "-" in the
- path to the LayoutTests
-
- * Scripts/run-webkit-tests:
-
-2007-10-14 Oleg Sukhodolsky <son.two@gmail.com>
-
- Reviewed by Darin Adler.
-
- http://bugs.webkit.org/show_bug.cgi?id=15006
- Refactoring of buildQMakeGdkProject()/buildQMakeQtProject() and isGdk()/isQt()
- to reduce code duplication.
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
- buildQMakeProject() renamed to buildQMakeQtProject().
- buildQMakeGdkProject()/buildQMakeQtProject() now take just one parameter (directory),
- unused $colorize has been removed.
-
-=== Start merge of feature-branch 2007-10-12 ===
-
-2007-10-08 Eric Seidel <eric@webkit.org>
-
- Reviewed by Mark Rowe.
-
- * Scripts/build-webkit: add --help, remove unused --color
-
-2007-10-07 Eric Seidel <eric@webkit.org>
-
- Reviewed by darin.
-
- * Drosera/mac/DebuggerDocumentPlatform.mm:
- (DebuggerDocument::platformEvaluateScript): null check before trying to make a JSString
-
-2007-10-03 Rob Buis <buis@kde.org>
-
- Reviewed by Olliej.
-
- Adapt to changed location of Ahem font.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
-
-2007-10-02 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Roben.
-
- Make pixel tests more useful!
- Finally fix the image diff 0.00% mystery problem
- Highlight any image differences in the image diff.
- Add a link from image diffs back to original test file.
-
- * DumpRenderTree/mac/ImageDiff.m:
- (compareImages): highlight any differences
- (computePercentageDifferent): round to two decimal places
- * Scripts/run-webkit-tests: add a few more toURL calls for the windows folks
-
-2007-10-02 Eric Seidel <eric@webkit.org>
-
- Reviewed by Alexey Proskuryakov.
-
- * Scripts/run-webkit-tests: print the % image difference on main results page
-
-2007-10-02 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver.
-
- Update WebKitLauncher to notify you of new builds from the correct branch, rather than always checking trunk.
-
- * BuildSlaveSupport/build-launcher-app: Generate a file named BRANCH into WebKit.app so that it knows which branch it was built from.
- * WebKitLauncher/start.html: Use the new URL format that includes the branch we were built from.
-
-2007-10-01 Mark Rowe <mrowe@apple.com>
-
- * BuildSlaveSupport/build-launcher-dmg: Tweak once more to handle nightly builds for branches.
-
-2007-09-25 Eric Seidel <eric@webkit.org>
-
- Reviewed by Mark Rowe.
-
- DerivedSources.make was finding "ENABLE_SVG" in the string
- "ENABLE_SVG_EXPERIMENTAL_FEATURES" thus --no-svg wasn't functioning
- quite correctly.
-
- * Scripts/build-webkit: make --no-svg imply --no-svg-experimental
-
-2007-09-25 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Eric.
-
- * BuildSlaveSupport/build-launcher-dmg: Allow the platform tag to be specified on the command line.
- This makes it possible to automate nightly builds for the feature-branch.
-
-2007-07-11 Nikolas Zimmermann <zimmermann@kde.org>
-
- Rubber stamped by Mark.
-
- Enable svg experimental features as default here in feature-branch.
-
- * Scripts/build-webkit:
-
-2007-06-29 Antti Koivisto <antti@apple.com>
-
- Reviewed by Weinig.
-
- Add VIDEO flag for timed media features
-
- * Scripts/build-webkit
-
-=== End merge of feature-branch 2007-10-12 ===
-
-2007-10-11 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Darin Adler.
-
- - Updated rational for the leaks list to be more clear.
-
- * Scripts/run-webkit-tests:
-
-2007-10-11 Kevin McCullough <kmccullough@apple.com>
-
- Rubber Stamp by Sam.
-
- Adding a known Leopard leak that is already fixed but the bot is on an old version of Leopard.
- I believe there was a radar on this leak, it looks familiar to me, but I could not find it.
-
- * Scripts/run-webkit-tests:
-
-2007-10-10 Simon Hausmann <hausmann@kde.org>
-
- Reviewed by Lars.
-
- Fix compilation using gcc 4.3. Header files have been reorganized and as a result some extra
- includes are needed for INT_MAX, std::auto_ptr and the like.
-
- * DumpRenderTree/qt/main.cpp:
-
-2007-10-09 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Simon.
-
- implement layoutTestController.encode/decodeHostName. We still don't pass fast/encoding/idn-security.html, since our QUrl::from/toACE is somewhat stricter than ICU.
-
- * DumpRenderTree/qt/jsobjects.cpp:
- (LayoutTestController::encodeHostName):
- (LayoutTestController::decodeHostName):
- * DumpRenderTree/qt/jsobjects.h:
-
-2007-10-09 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Simon.
-
- Don't set up connections inside QWebPage::createFrame, as users might be reimplementing that method. Make sure we get only one titleChanged() signal per title change, and implement the support for testing this in DRT.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::WebPage::createFrame):
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::titleChanged):
- * DumpRenderTree/qt/DumpRenderTree.h:
- * DumpRenderTree/qt/jsobjects.cpp:
- (LayoutTestController::reset):
- * DumpRenderTree/qt/jsobjects.h:
-
-2007-10-09 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Simon.
-
- add a dummy implementation for layoutTestController.display() and implement layoutTestController.clearBackForwardList().
-
- * DumpRenderTree/qt/DumpRenderTree.h:
- * DumpRenderTree/qt/jsobjects.cpp:
- (LayoutTestController::clearBackForwardList):
- * DumpRenderTree/qt/jsobjects.h:
-
-2007-10-09 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Simon.
-
- make --git-reviewer work again.
-
- * Scripts/prepare-ChangeLog:
-
-2007-10-07 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Rubber stamped by Eric.
-
- Connect to the "hovering-over-link" signal emitted by WebKitPage and
- show the current link inside the statusbar.
- This shows how to make use of this signal and allows to easily test
- http://bugs.webkit.org/show_bug.cgi?id=15299.
-
- * GtkLauncher/main.cpp:
- (hoveringOverLink):
- (main):
-
-2007-10-05 Lars Knoll <lars@trolltech.com>
-
- add proper error messages to the FrameLoaderClient.
- Implement ChromeClientQt::closeWindowSoon and
- FrameLoaderClientQt::dispatchCreatePage (which should go away IMO).
- Some fixes in DRT to make it work correctly with multiple windows.
-
- Reviewed by Maciej.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::createWindow):
- (WebCore::DumpRenderTree::windowCount):
- * DumpRenderTree/qt/DumpRenderTree.h:
- * DumpRenderTree/qt/jsobjects.cpp:
- (LayoutTestController::maybeDump):
- (LayoutTestController::windowCount):
- * DumpRenderTree/qt/jsobjects.h:
-
-2007-10-05 Lars Knoll <lars@trolltech.com>
-
- Add a dummy plugin to DRT to fix fast/dom/Window/Plug-Ins.html.
- Add support for layoutTextController.setCanOpenWindows() to DRT
- fixing another 2 test cases in fast/dom/Window.
-
- Reviewed by Maciej.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::WebPage::WebPage):
- (WebCore::WebPage::createWindow):
- (WebCore::DumpRenderTree::resetJSObjects):
- (WebCore::DumpRenderTree::createWindow):
- * DumpRenderTree/qt/DumpRenderTree.h:
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/jsobjects.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::reset):
- * DumpRenderTree/qt/jsobjects.h:
- * DumpRenderTree/qt/main.cpp:
- * DumpRenderTree/qt/testplugin.cpp: Added.
- * DumpRenderTree/qt/testplugin.h: Added.
-
-2007-10-04 Sam Weinig <sam@webkit.org>
-
- Rubber stamped by Adam.
-
- Remove empty directories.
-
- * DumpRenderTree/DumpRenderTree.qtproj: Removed.
- * DumpRenderTree/DumpRenderTree.qtproj/fonts: Removed.
-
-2007-10-03 Darin Adler <darin@apple.com>
-
- Reviewed by Adam.
-
- * Scripts/webkitdirs.pm: Automatically use "Debug_Internal" if
- we find the internal libraries in the libraries directory. This
- is helpful for Safari team engineers at Apple.
-
-2007-10-03 Adam Roben <aroben@apple.com>
-
- Update the location of AHEM___.TTF after r25968
-
- Reviewed by Sam.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
-
-2007-10-03 Alp Toker <alp@atoker.com>
-
- Reviewed by Adam.
-
- http://bugs.webkit.org/show_bug.cgi?id=14726
- [gtk] API design. Mapping the WebView delegates to signals.
-
- Change the API namespace of the Gtk+ port from 'WebKitGtk' to 'WebKit'.
-
- * GtkLauncher/main.cpp:
- (goToURLBarText):
- (titleChanged):
- (progressChanged):
- (menuMainBackCallback):
- (menuMainForwardCallback):
- (main):
-
-2007-10-03 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Rob.
-
- This fixes --strict mode in run-webkit-tests again after
- the platform dependent test results have been moved.
-
- * Scripts/run-webkit-tests:
-
-2007-10-03 Lars Knoll <lars@trolltech.com>
-
- Reviewed by bdash.
-
- remove the hack in run-webkit-tests that forced text only test
- to be taken from the platform independent dir. It was only left
- there from early days.
-
- Remove platform dependent results for tests that are text only nowadays,
- and add one platform dependent result for a text only test that requires it.
-
- * Scripts/run-webkit-tests:
-
-2007-10-03 Lars Knoll <lars@trolltech.com>
-
- Reviewed by olliej.
-
- Move the Qt version of DRT into the correct place and put the binary into BUILDDIR/bin.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp: Renamed from WebKitTools/DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp.
- (WebCore::WebFrame::WebFrame):
- (WebCore::WebPage::WebPage):
- (WebCore::WebPage::createFrame):
- (WebCore::WebPage::javaScriptAlert):
- (WebCore::WebPage::javaScriptConsoleMessage):
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::~DumpRenderTree):
- (WebCore::DumpRenderTree::open):
- (WebCore::DumpRenderTree::readStdin):
- (WebCore::DumpRenderTree::resetJSObjects):
- (WebCore::DumpRenderTree::initJSObjects):
- (WebCore::DumpRenderTree::dumpFramesAsText):
- (WebCore::DumpRenderTree::dump):
- * DumpRenderTree/qt/DumpRenderTree.h: Renamed from WebKitTools/DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.h.
- (WebCore::DumpRenderTree::layoutTestController):
- (WebCore::DumpRenderTree::eventSender):
- * DumpRenderTree/qt/DumpRenderTree.pro: Renamed from WebKitTools/DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.pro.
- * DumpRenderTree/qt/fonts.conf: Renamed from WebKitTools/DumpRenderTree/DumpRenderTree.qtproj/fonts.conf.
- * DumpRenderTree/qt/fonts/AHEM____.TTF: Renamed from WebKitTools/DumpRenderTree/DumpRenderTree.qtproj/fonts/AHEM____.TTF.
- * DumpRenderTree/qt/jsobjects.cpp: Renamed from WebKitTools/DumpRenderTree/DumpRenderTree.qtproj/jsobjects.cpp.
- (HackWebFrame::mousePressEvent):
- (HackWebFrame::mouseReleaseEvent):
- (HackWebFrame::mouseMoveEvent):
- (HackWebFrame::HackWebFrame):
- (HackWebFrame::~HackWebFrame):
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::reset):
- (LayoutTestController::maybeDump):
- (LayoutTestController::waitUntilDone):
- (LayoutTestController::notifyDone):
- (LayoutTestController::dumpEditingCallbacks):
- (LayoutTestController::queueReload):
- (LayoutTestController::provisionalLoad):
- (LayoutTestController::timerEvent):
- (EventSender::EventSender):
- (EventSender::mouseDown):
- (EventSender::mouseUp):
- (EventSender::mouseMoveTo):
- (EventSender::leapForward):
- (EventSender::keyDown):
- (EventSender::frameUnderMouse):
- * DumpRenderTree/qt/jsobjects.h: Renamed from WebKitTools/DumpRenderTree/DumpRenderTree.qtproj/jsobjects.h.
- (LayoutTestController::isLoading):
- (LayoutTestController::setLoading):
- (LayoutTestController::shouldDumpAsText):
- (LayoutTestController::shouldDumpChildrenAsText):
- (LayoutTestController::shouldWaitUntilDone):
- (LayoutTestController::dumpAsText):
- (LayoutTestController::dumpChildFramesAsText):
- * DumpRenderTree/qt/main.cpp: Renamed from WebKitTools/DumpRenderTree/DumpRenderTree.qtproj/main.cpp.
- (messageHandler):
- (crashHandler):
- (main):
- * Scripts/run-webkit-tests:
-
-2007-10-03 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Alp Toker.
-
- Fix build-webkit when both QTDIR and --gtk are set. The presence of --gtk
- should take precedence over QTDIR when determining which port we are working with.
-
- * Scripts/webkitdirs.pm:
-
-2007-10-02 Adam Roben <aroben@apple.com>
-
- Add keychain to the list of default packages to install
-
- Rubberstamped by Sam.
-
- * CygwinDownloader/cygwin-downloader.py:
- * CygwinDownloader/cygwin-downloader.zip: Regenerated.
-
-2007-10-02 David Kilzer <ddkilzer@webkit.org>
-
- Reviewed by Adam.
-
- Make "--git-commit trunk..HEAD" work with prepare-ChangeLog.
- Also makes WebCore regression test case logic work when using git.
-
- * Scripts/prepare-ChangeLog:
- (reviewerAndDescriptionForGitCommit): Added.
-
-2007-10-02 Lars Knoll <lars@trolltech.com>
-
- Reviewed by bdash.
-
- Add API to retrieve the frame name from QWebFrame.
- Implement support for DRT::dumpChildrenAsText.
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::dumpFramesAsText):
- (WebCore::DumpRenderTree::dump):
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.h:
- * DumpRenderTree/DumpRenderTree.qtproj/jsobjects.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::reset):
- * DumpRenderTree/DumpRenderTree.qtproj/jsobjects.h:
-
-2007-10-02 Lars Knoll <lars@trolltech.com>
-
- Reviewed by bdash.
-
- Fix the handling of the response header for data urls. Make sure we always pass absolute URLs to WebKit from both DRT and QtLauncher.
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::readStdin):
-
-2007-10-02 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver.
-
- Update WebKitLauncher to notify you of new builds from the correct branch, rather than always checking trunk.
-
- * BuildSlaveSupport/build-launcher-app: Generate a file named BRANCH into WebKit.app so that it knows which branch it was built from.
- * WebKitLauncher/start.html: Use the new URL format that includes the branch we were built from.
-
-2007-10-02 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Maciej.
-
- Configuration changes from build.webkit.org. The major change is refactoring to work
- with Buildbot 0.7.6, but it does include other smaller changes that have been made in the
- last few weeks.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- * BuildSlaveSupport/build.webkit.org-config/webkit/auth.py:
- * BuildSlaveSupport/build.webkit.org-config/webkit/basesteps.py:
- * BuildSlaveSupport/build.webkit.org-config/webkit/builders.py:
- * BuildSlaveSupport/build.webkit.org-config/webkit/factories.py:
- * BuildSlaveSupport/build.webkit.org-config/webkit/schedulers.py:
- * BuildSlaveSupport/build.webkit.org-config/webkit/status.py:
- * BuildSlaveSupport/build.webkit.org-config/webkit/steps.py:
-
-2007-10-02 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Maciej.
-
- Add support for eventSender.mouseMove to DRT.
- Fixes fast/css/hover-affects-child.html
-
- * DumpRenderTree/DumpRenderTree.qtproj/jsobjects.cpp:
- (EventSender::mouseMoveTo):
-
-2007-10-01 Mark Rowe <mrowe@apple.com>
-
- * BuildSlaveSupport/build-launcher-dmg: Tweak once more to handle nightly builds for branches.
-
-2007-10-01 David Kilzer <ddkilzer@webkit.org>
-
- Reviewed by Hyatt.
-
- Make svn-apply and svn-unapply work with added files in git-diff formatted patches.
-
- * Scripts/svn-apply:
- (gitdiff2svndiff): Ignore lines beginning with "new file".
- * Scripts/svn-unapply:
- (gitdiff2svndiff): Ditto.
-
-2007-09-30 George Staikos <staikos@kde.org>
-
- Qt build fix (Mac OS X specific)
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.pro:
-
-2007-09-29 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by Mark.
-
- -Fix http://bugs.webkit.org/show_bug.cgi?id=13226.
- Remove Bakefiles from svn.
-
- * GtkLauncher/Bakefiles.bkgen: Removed.
- * GtkLauncher/ENV: Removed.
- * GtkLauncher/gdklauncher.bkl: Removed.
- * GtkLauncher/mk: Removed.
- * Scripts/regenerate-makefiles: Removed.
-
-2007-09-25 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by John.
-
- - Updating leopard leak list to refelct bugs that have been fixed and no longer leak.
-
- * Scripts/run-webkit-tests:
-
-2007-09-26 Adam Roben <aroben@apple.com>
-
- Make not finding an installed WebKit non-fatal
-
- What really matters is that we are able to load WebKit and its
- dependencies, not whether we think we've found an installed WebKit.
-
- Reviewed by Sam.
-
- * WebKitInitializer/WebKitInitializer.cpp:
- (getWebViewCLSID): Use new LOG_WARNING macro.
- (getInstalledWebKitDirectory): Ditto.
- (initializeWebKit): Don't die if we didn't find an installed WebKit,
- and use new macros.
- * WebKitInitializer/WebKitInitializer.vcproj: Disabled a warning.
-
-2007-09-26 Adam Roben <aroben@apple.com>
-
- Committed this file before saving it
-
- * WebKitInitializer/debug_internal.vsprops:
-
-2007-09-26 Adam Roben <aroben@apple.com>
-
- Load WebKit and its dependencies manually so they come from DllDirectory
-
- I had to change WebKitInitializer to use malloc/free instead of
- new/delete to avoid pulling in WebKit (and its dependencies) early
- through use of fastMalloc.
-
- Reviewed by Oliver.
-
- * WebKitInitializer/WebKitInitializer.cpp:
- (getStringValue): Changed to use malloc/free.
- (getInstalledWebKitDirectory): Ditto.
- (initializeWebKit): Call SetDllDirectory first, then load all of
- WebKit's dependencies manually, finally followed by WebKit itself.
- * WebKitInitializer/WebKitInitializer.vcproj: Added a new
- configuration to match our other projects.
- * WebKitInitializer/debug_internal.vsprops: Added.
-
-2007-09-25 Adam Roben <aroben@apple.com>
-
- Actually define DEBUG/NDEBUG so that we load WebKit correctly
-
- Rubberstamped by Sam.
-
- * WebKitInitializer/WebKitInitializer.vcproj:
-
-2007-09-25 Adam Roben <aroben@apple.com>
-
- Make DumpRenderTree delay-load its dependencies
-
- This lets WebKitInitializer re-route the dependencies to be loaded out
- of the Safari installation directory.
-
- Also replaced all uses of kCFAllocatorDefault with 0 (which means the
- same thing), since we can't import the kCFAllocatorDefault symbol when
- delay-loading CoreFoundation.dll.
-
- Rubberstamped by Sam.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (runTest):
- (javaScriptThreads):
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setWaitToDump):
-
-2007-09-25 Adam Roben <aroben@apple.com>
-
- Pull ole32.lib into WebKitInitializer
-
- Rubberstamped by Sam.
-
- * WebKitInitializer/WebKitInitializer.vcproj:
-
-2007-09-25 David Kilzer <ddkilzer@webkit.org>
-
- Reviewed by Adam.
-
- - Fix http://bugs.webkit.org/show_bug.cgi?id=14885
- LGPL'ed files contain incorrect FSF address
-
- * Drosera/config.h:
-
-2007-09-25 David Kilzer <ddkilzer@webkit.org>
-
- Reviewed by Adam.
-
- Make svn-apply and svn-unapply work with git-diff formatted patches.
-
- * Scripts/svn-apply: Apply a filter to the input if we find a git-diff marker before a patch.
- (gitdiff2svndiff): Added.
- * Scripts/svn-unapply: Ditto.
- (gitdiff2svndiff): Added.
-
-2007-09-25 Adam Roben <aroben@apple.com>
-
- Pull advapi32.lib into WebKitInitializer
-
- This is needed to get the registry functions we use.
-
- Rubberstamped by Sam.
-
- * WebKitInitializer/WebKitInitializer.vcproj:
-
-2007-09-25 Adam Roben <aroben@apple.com>
-
- Add python and rsync to cygwin-downloader
-
- Our build slaves need this, and it can't hurt for everyone else to
- have it, too.
-
- Reviewed by Sam.
-
- * CygwinDownloader/cygwin-downloader.py: Added python and rsync.
- * CygwinDownloader/cygwin-downloader.zip: Regenerated.
-
-2007-09-25 Adam Roben <aroben@apple.com>
-
- Add WebKitInitializer and use it in DumpRenderTree
-
- WebKitInitializer is a static library that has one function,
- initializeWebKit(). This registers WebKit and sets up the DLL search
- path so that WebKit's dependencies that are installed with Safari can
- be found.
-
- Reviewed by Sam.
-
- * DumpRenderTree/DumpRenderTree.sln: Added WebKitInitializer and made
- DumpRenderTree depend on it.
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (initialize): Call initializeWebKit.
- * DumpRenderTree/win/DumpRenderTree.vcproj: Link against
- WebKitInitializer.lib.
- * WebKitInitializer/WebKitInitializer.cpp: Added.
- (getStringValue):
- (getWebViewCLSID):
- (getInstalledWebKitDirectory):
- (initializeWebKit):
- * WebKitInitializer/WebKitInitializer.h: Added.
- * WebKitInitializer/WebKitInitializer.vcproj: Added.
- * WebKitInitializer/debug.vsprops: Added.
- * WebKitInitializer/release.vsprops: Added.
-
-2007-09-25 Adam Roben <aroben@apple.com>
-
- Make run-webkit-tests respect set-webkit-configuration
-
- Reviewed by Sam.
-
- * Scripts/run-webkit-tests: Initialize $configuration to whatever
- set-webkit-configuration was last set to.
-
-2007-09-25 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Eric.
-
- * BuildSlaveSupport/build-launcher-dmg: Allow the platform tag to be specified on the command line.
- This makes it possible to automate nightly builds for the feature-branch.
-
-2007-09-25 Adam Roben <aroben@apple.com>
-
- A couple of fixes/enhancements to update-webkit-*-libs
-
- You can now specify WEBKITSUPPORTLIBRARIESZIPDIR=C:\my\special\place
- to tell update-webkit-support-libraries where it should find the
- WebKitSupportLibrary.zip file you downloaded.
-
- These scripts also now correctly interpret WEBKITLIBRARIESDIR as a
- Windows-style path.
-
- Reviewed by Sam.
-
- * Scripts/update-webkit-auxiliary-libs: Also renamed $supportLibsURL
- to $auxiliaryLibsURL and removed an irrelevant comment.
- * Scripts/update-webkit-support-libs:
-
-2007-09-25 Adam Treat <treat@kde.org>
-
- Reviewed by Simon and Lars.
-
- Refactors and cleans up Qt DRT member variable names, member variable
- initialization, style fixes and general code cleanup.
-
- Adds queueReload slot to LayoutTestController that some tests require.
-
- Subclasses QWebFrame to make sure that all frames have an associated
- LayoutTestController JS window object.
-
- Takes advantage of new QWebFrame provisionalLoad signal to ensure frames
- aren't dumped twice.
-
- EOF fixes.
-
- Together, this patch fixes some 20+ layout tests in QtWebKit.
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::WebFrame::WebFrame):
- (WebCore::WebPage::WebPage):
- (WebCore::WebPage::createFrame):
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::open):
- (WebCore::DumpRenderTree::readStdin):
- (WebCore::DumpRenderTree::initJSObjects):
- (WebCore::DumpRenderTree::dump):
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.h:
- (WebCore::DumpRenderTree::layoutTestController):
- (WebCore::DumpRenderTree::eventSender):
- * DumpRenderTree/DumpRenderTree.qtproj/jsobjects.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::reset):
- (LayoutTestController::maybeDump):
- (LayoutTestController::waitUntilDone):
- (LayoutTestController::notifyDone):
- (LayoutTestController::queueReload):
- (LayoutTestController::provisionalLoad):
- (EventSender::EventSender):
- (EventSender::mouseDown):
- (EventSender::mouseUp):
- (EventSender::mouseMoveTo):
- (EventSender::frameUnderMouse):
- * DumpRenderTree/DumpRenderTree.qtproj/jsobjects.h:
- (LayoutTestController::isLoading):
- (LayoutTestController::setLoading):
- (LayoutTestController::dumpAsText):
- * DumpRenderTree/DumpRenderTree.qtproj/main.cpp:
- (main):
-
-2007-09-24 Kevin McCullough <kmccullough@apple.com>
-
-
- - Reverted an accidentally checked in file.
-
- * Drosera/win/DebuggerDocumentPlatform.cpp: Removed.
-
-2007-09-24 Kevin McCullough <kmccullough@apple.com>
- Reviewed by Sam.
-
- - Updated project files to not use Edit and Continue for Debug Information since it doesn't work and breaks some functionality.
-
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj:
-
-2007-09-20 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Rubber stamped by Adam.
-
- * GdkLauncher: Removed.
- * GdkLauncher/Bakefiles.bkgen: Removed.
- * GdkLauncher/ENV: Removed.
- * GdkLauncher/GdkLauncher.pro: Removed.
- * GdkLauncher/gdklauncher.bkl: Removed.
- * GdkLauncher/main.cpp: Removed.
- * GdkLauncher/mk: Removed.
- * GdkLauncher/simple.svg: Removed.
- * GdkLauncher/text.html: Removed.
- * GtkLauncher: Added.
- * GtkLauncher/GdkLauncher.pro: Removed.
- * GtkLauncher/GtkLauncher.pro: Added.
- * GtkLauncher/main.cpp:
- (updateWindowTitle):
- (main):
- * Scripts/build-webkit:
- * Scripts/regenerate-makefiles:
- * Scripts/run-javascriptcore-tests:
- * Scripts/run-launcher:
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
-
-2007-09-21 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Darin Adler.
-
- <rdar://problem/5491013> REGRESSION: -[WebView windowScriptObject] returns a dummy object or nil if a page hasn't loaded (breaks EA Sports Online)
-
- Assert that the -[WebScriptObject JSObject] return value is only NULL for non-window objects.
- This is tested by plugins/root-object-premature-delete-crash.html.
-
- * DumpRenderTree/mac/ObjCController.m:
- (-[ObjCController accessStoredWebScriptObject]):
-
-2007-09-21 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Oliver.
-
- - We need to initialize the ref count to 1 at initialization so that objects are not garbage collected. (actual patch written by Oliver)
-
- * DumpRenderTree/win/FrameLoaderDelegate.cpp:
- (FrameLoadDelegate::FrameLoadDelegate):
-
-2007-09-20 Julien Chaffraix <julien.chaffraix@gmail.com>
-
- Reviewed by Adam.
-
- Fix: http://bugs.webkit.org/show_bug.cgi?id=15223
- webkitdir.pm::isQt() is not working properly in run-webkit-tests under Linux/Qt
-
- Added determineIsQt() and determineIsGdk() to webkitdirs.pm.
- Now isQt() and isGdk() use global variables that are only set once.
-
- An array of all the parameters is now given to build-dumprender which includes
- the platform on linux.
-
- * Scripts/build-dumprendertree:
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
-
-2007-09-19 Adam Roben <aroben@apple.com>
-
- Rubberstamped by Hyatt.
-
- * Spinneret: Removed.
-
-2007-09-19 Tuukka Hastrup <Tuukka.Hastrup@iki.fi>
-
- Reviewed by David Kilzer.
-
- * Scripts/webkitdirs.pm: On Gdk and Qt, check that flex, bison, gperf are available.
-
-2007-09-18 Sam Weinig <sam@webkit.org>
-
- Add JSRetainPtr.h #include to fix some builds.
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
-
-2007-09-18 Mike Hommey <glandium@debian.org>
-
- Reviewed by Adam.
-
- * Scripts/prepare-ChangeLog:
- - Properly parse GECOS field.
- - Use git configuration for user name and email when appropriate.
-
-2007-09-17 Sam Weinig <sam@webkit.org>
-
- Build fix.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
-
-2007-09-17 Sam Weinig <sam@webkit.org>
-
- Reviewed by Adam Roben.
-
- Share more code between mac and windows DRT.
- - GCController is now shared.
- - Rename WaitUntilDoneDelegate to FrameLoadDelegate for consistency.
-
- * DumpRenderTree/GCController.cpp:
- * DumpRenderTree/win/DumpRenderTree.cpp:
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/FrameLoaderDelegate.cpp: Copied from DumpRenderTree/win/WaitUntilDoneDelegate.cpp.
- (FrameLoadDelegate::FrameLoadDelegate):
- (FrameLoadDelegate::~FrameLoadDelegate):
- (FrameLoadDelegate::windowScriptObjectAvailable):
- * DumpRenderTree/win/FrameLoaderDelegate.h: Copied from DumpRenderTree/win/WaitUntilDoneDelegate.h.
- * DumpRenderTree/win/GCController.cpp: Removed.
- * DumpRenderTree/win/GCController.h: Removed.
- * DumpRenderTree/win/GCControllerWin.cpp: Copied from DumpRenderTree/win/GCController.cpp.
- (GCController::collect):
- (GCController::collectOnAlternateThread):
- (GCController::getJSObjectCount):
- * DumpRenderTree/win/WaitUntilDoneDelegate.cpp: Removed.
- * DumpRenderTree/win/WaitUntilDoneDelegate.h: Removed.
-
-2007-09-17 Sam Weinig <sam@webkit.org>
-
- Reviewed by Adam Roben.
-
- Begin sharing code between mac and windows DRT.
- - both now share LayoutTestController.h/cpp and implement platform dependant
- operations in LayoutTestControllerMac/Win.
- - DumpRenderTree.h is now shared.
- - WorkQueue and WorkQueueItem are also shared.
-
- * DumpRenderTree/DumpRenderTree.h:
- * DumpRenderTree/LayoutTestController.cpp:
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (displayWebView):
- (dumpFrameScrollPosition):
- (dumpFramesAsText):
- (dump):
- (runTest):
- * DumpRenderTree/win/DumpRenderTree.h: Removed.
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/DumpRenderTreeWin.h: Copied from DumpRenderTree/win/DumpRenderTree.h.
- * DumpRenderTree/win/EditingDelegate.cpp:
- (EditingDelegate::shouldBeginEditingInDOMRange):
- (EditingDelegate::shouldEndEditingInDOMRange):
- (EditingDelegate::shouldInsertNode):
- (EditingDelegate::shouldInsertText):
- (EditingDelegate::shouldDeleteDOMRange):
- (EditingDelegate::shouldChangeSelectedDOMRange):
- (EditingDelegate::shouldApplyStyle):
- (EditingDelegate::shouldChangeTypingStyle):
- (EditingDelegate::doPlatformCommand):
- (EditingDelegate::webViewDidBeginEditing):
- (EditingDelegate::webViewDidChange):
- (EditingDelegate::webViewDidEndEditing):
- (EditingDelegate::webViewDidChangeTypingStyle):
- (EditingDelegate::webViewDidChangeSelection):
- * DumpRenderTree/win/LayoutTestController.cpp: Removed.
- * DumpRenderTree/win/LayoutTestController.h: Removed.
- * DumpRenderTree/win/LayoutTestControllerWin.cpp: Copied from DumpRenderTree/win/LayoutTestController.cpp.
- (LayoutTestController::addDisallowedURL):
- (LayoutTestController::clearBackForwardList):
- (LayoutTestController::copyDecodedHostName):
- (LayoutTestController::copyEncodedHostName):
- (LayoutTestController::display):
- (LayoutTestController::keepWebHistory):
- (LayoutTestController::notifyDone):
- (LayoutTestController::queueBackNavigation):
- (LayoutTestController::queueForwardNavigation):
- (jsStringRefToWString):
- (LayoutTestController::queueLoad):
- (LayoutTestController::queueReload):
- (LayoutTestController::queueScript):
- (LayoutTestController::setAcceptsEditing):
- (LayoutTestController::setCustomPolicyDelegate):
- (LayoutTestController::setMainFrameIsFirstResponder):
- (LayoutTestController::setTabKeyCyclesThroughElements):
- (LayoutTestController::setUseDashboardCompatibilityMode):
- (LayoutTestController::setUserStyleSheetEnabled):
- (LayoutTestController::setUserStyleSheetLocation):
- (LayoutTestController::setWindowIsKey):
- (waitUntilDoneWatchdogFired):
- (LayoutTestController::setWaitToDump):
- (LayoutTestController::windowCount):
- * DumpRenderTree/win/WaitUntilDoneDelegate.cpp:
- (FrameLoadDelegate::didReceiveTitle):
- (FrameLoadDelegate::processWork):
- (FrameLoadDelegate::locationChangeDone):
- (FrameLoadDelegate::windowScriptObjectAvailable):
- * DumpRenderTree/win/WorkQueue.cpp: Removed.
- * DumpRenderTree/win/WorkQueue.h: Removed.
- * DumpRenderTree/win/WorkQueueItem.cpp: Removed.
- * DumpRenderTree/win/WorkQueueItem.h: Removed.
- * DumpRenderTree/win/WorkQueueItemWin.cpp: Copied from DumpRenderTree/win/WorkQueueItem.cpp.
- (jsStringRefToWString):
- (LoadItem::invoke):
- (ScriptItem::invoke):
-
-2007-09-17 Sam Weinig <sam@webkit.org>
-
- Reviewed by Adam Roben.
-
- - Move Windows DumpRenderTree and TestNetscapePlugin to WebCoreTools/DumpRenderTree/win
-
- * DumpRenderTree/DumpRenderTree.sln: Copied from DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree.sln.
- * DumpRenderTree/DumpRenderTree.vcproj: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree.sln: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DraggingInfo.h: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.cpp: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.h: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.vcproj: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/EditingDelegate.cpp: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/EditingDelegate.h: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/EventSender.cpp: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/EventSender.h: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/GCController.cpp: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/GCController.h: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/LayoutTestController.cpp: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/LayoutTestController.h: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/UIDelegate.cpp: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/UIDelegate.h: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/WaitUntilDoneDelegate.cpp: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/WaitUntilDoneDelegate.h: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/WorkQueue.cpp: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/WorkQueue.h: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/WorkQueueItem.cpp: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/WorkQueueItem.h: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/debug.vsprops: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/debug_internal.vsprops: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/release.vsprops: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/TestNetscapePlugin: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/TestNetscapePlugin/TestNetscapePlugin.def: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/TestNetscapePlugin/TestNetscapePlugin.rc: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/TestNetscapePlugin/TestNetscapePlugin.vcproj: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/TestNetscapePlugin/main.c: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/TestNetscapePlugin/resource.h: Removed.
- * DumpRenderTree/win: Added.
- * DumpRenderTree/win/DraggingInfo.h: Copied from DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DraggingInfo.h.
- * DumpRenderTree/win/DumpRenderTree.cpp: Copied from DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.cpp.
- * DumpRenderTree/win/DumpRenderTree.h: Copied from DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.h.
- * DumpRenderTree/win/DumpRenderTree.vcproj: Copied from DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.vcproj.
- * DumpRenderTree/win/EditingDelegate.cpp: Copied from DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/EditingDelegate.cpp.
- * DumpRenderTree/win/EditingDelegate.h: Copied from DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/EditingDelegate.h.
- * DumpRenderTree/win/EventSender.cpp: Copied from DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/EventSender.cpp.
- * DumpRenderTree/win/EventSender.h: Copied from DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/EventSender.h.
- * DumpRenderTree/win/GCController.cpp: Copied from DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/GCController.cpp.
- * DumpRenderTree/win/GCController.h: Copied from DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/GCController.h.
- * DumpRenderTree/win/LayoutTestController.cpp: Copied from DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/LayoutTestController.cpp.
- * DumpRenderTree/win/LayoutTestController.h: Copied from DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/LayoutTestController.h.
- * DumpRenderTree/win/TestNetscapePlugin: Copied from DumpRenderTree/DumpRenderTree.vcproj/TestNetscapePlugin.
- * DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj:
- * DumpRenderTree/win/UIDelegate.cpp: Copied from DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/UIDelegate.cpp.
- * DumpRenderTree/win/UIDelegate.h: Copied from DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/UIDelegate.h.
- * DumpRenderTree/win/WaitUntilDoneDelegate.cpp: Copied from DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/WaitUntilDoneDelegate.cpp.
- * DumpRenderTree/win/WaitUntilDoneDelegate.h: Copied from DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/WaitUntilDoneDelegate.h.
- * DumpRenderTree/win/WorkQueue.cpp: Copied from DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/WorkQueue.cpp.
- * DumpRenderTree/win/WorkQueue.h: Copied from DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/WorkQueue.h.
- * DumpRenderTree/win/WorkQueueItem.cpp: Copied from DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/WorkQueueItem.cpp.
- * DumpRenderTree/win/WorkQueueItem.h: Copied from DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/WorkQueueItem.h.
- * DumpRenderTree/win/debug.vsprops: Copied from DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/debug.vsprops.
- * DumpRenderTree/win/debug_internal.vsprops: Copied from DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/debug_internal.vsprops.
- * DumpRenderTree/win/release.vsprops: Copied from DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/release.vsprops.
- * Scripts/run-webkit-tests: Update to point to the new location of the sln.
-
-2007-09-15 Mark Rowe <mrowe@apple.com>
-
- Build fix for DumpRenderTree.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Reinstate -Wno-deprecated-declarations on DumpRenderTree.mm.
-
-2007-09-14 Sam Weinig <sam@webkit.org>
-
- Rubber stamped by Adam Roben.
-
- Split the WaitUntilDoneDelegate into a UIDelegate and a FrameLoadDelegate.
- - The UIDelegate was put into a new file while the FrameLoadDelegate was
- kept in the WaitUntilDoneDelegate file for the time being.
-
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.vcproj:
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/UIDelegate.cpp: Added.
- (UIDelegate::QueryInterface):
- (UIDelegate::AddRef):
- (UIDelegate::Release):
- (UIDelegate::hasCustomMenuImplementation):
- (UIDelegate::setFrame):
- (UIDelegate::webViewFrame):
- (UIDelegate::runJavaScriptAlertPanelWithMessage):
- (UIDelegate::webViewAddMessageToConsole):
- (UIDelegate::doDragDrop):
- (UIDelegate::webViewGetDlgCode):
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/UIDelegate.h: Added.
- (UIDelegate::UIDelegate):
- (UIDelegate::createWebViewWithRequest):
- (UIDelegate::webViewShow):
- (UIDelegate::webViewClose):
- (UIDelegate::webViewFocus):
- (UIDelegate::webViewUnfocus):
- (UIDelegate::webViewFirstResponder):
- (UIDelegate::makeFirstResponder):
- (UIDelegate::setStatusText):
- (UIDelegate::webViewStatusText):
- (UIDelegate::webViewAreToolbarsVisible):
- (UIDelegate::setToolbarsVisible):
- (UIDelegate::webViewIsStatusBarVisible):
- (UIDelegate::setStatusBarVisible):
- (UIDelegate::webViewIsResizable):
- (UIDelegate::setResizable):
- (UIDelegate::setContentRect):
- (UIDelegate::webViewContentRect):
- (UIDelegate::runJavaScriptConfirmPanelWithMessage):
- (UIDelegate::runJavaScriptTextInputPanelWithPrompt):
- (UIDelegate::runBeforeUnloadConfirmPanelWithMessage):
- (UIDelegate::runOpenPanelForFileButtonWithResultListener):
- (UIDelegate::mouseDidMoveOverElement):
- (UIDelegate::contextMenuItemsForElement):
- (UIDelegate::validateUserInterfaceItem):
- (UIDelegate::shouldPerformAction):
- (UIDelegate::dragDestinationActionMaskForDraggingInfo):
- (UIDelegate::willPerformDragDestinationAction):
- (UIDelegate::dragSourceActionMaskForPoint):
- (UIDelegate::willPerformDragSourceAction):
- (UIDelegate::contextMenuItemSelected):
- (UIDelegate::trackCustomPopupMenu):
- (UIDelegate::measureCustomMenuItem):
- (UIDelegate::drawCustomMenuItem):
- (UIDelegate::addCustomMenuDrawingData):
- (UIDelegate::cleanUpCustomMenuDrawingData):
- (UIDelegate::canTakeFocus):
- (UIDelegate::takeFocus):
- (UIDelegate::registerUndoWithTarget):
- (UIDelegate::removeAllActionsWithTarget):
- (UIDelegate::setActionTitle):
- (UIDelegate::undo):
- (UIDelegate::redo):
- (UIDelegate::canUndo):
- (UIDelegate::canRedo):
- (UIDelegate::webViewResizerRect):
- (UIDelegate::webViewDrawResizer):
- (UIDelegate::webViewScrolled):
- (UIDelegate::webViewShouldInterruptJavaScript):
- (UIDelegate::webViewReceivedFocus):
- (UIDelegate::webViewLostFocus):
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/WaitUntilDoneDelegate.cpp:
- (FrameLoadDelegate::QueryInterface):
- (FrameLoadDelegate::AddRef):
- (FrameLoadDelegate::Release):
- (FrameLoadDelegate::didStartProvisionalLoadForFrame):
- (FrameLoadDelegate::didCommitLoadForFrame):
- (FrameLoadDelegate::didReceiveTitle):
- (FrameLoadDelegate::processWork):
- (processWorkTimer):
- (FrameLoadDelegate::locationChangeDone):
- (FrameLoadDelegate::didFinishLoadForFrame):
- (FrameLoadDelegate::didFailLoadWithError):
- (FrameLoadDelegate::windowScriptObjectAvailable):
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/WaitUntilDoneDelegate.h:
- (FrameLoadDelegate::FrameLoadDelegate):
-
-2007-09-14 Sam Weinig <sam@webkit.org>
-
- Reviewed by Kevin McCullough.
-
- Move mac specific globals in to mac/DumpRenderTreeMac.h
-
- * DumpRenderTree/DumpRenderTree.h:
- * DumpRenderTree/DumpRenderTree.mm: Removed.
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/mac/DumpRenderTree.mm: Copied from DumpRenderTree/DumpRenderTree.mm.
- * DumpRenderTree/mac/DumpRenderTreeMac.h: Added.
-
-2007-09-14 Brady Eidson <beidson@apple.com>
-
- Rubberstamped by Weinig
-
- You know, Sam, some of us use case-sensitve filesystems...
-
- * DumpRenderTree/DumpRenderTree.h:
- * DumpRenderTree/mac/UIDelegate.mm:
-
-2007-09-14 Sam Weinig <sam@webkit.org>
-
- Rubber stamped by Adam Roben.
-
- - Move dump state data to LayoutTestContoller and add getter/setters to accommodate.
- - Move mac specific DumpRenderTree files to DumpRenderTree/mac
-
- * DumpRenderTree/AppleScriptController.h: Removed.
- * DumpRenderTree/AppleScriptController.m: Removed.
- * DumpRenderTree/DumpRenderTree.h:
- * DumpRenderTree/DumpRenderTree.mm:
- (startJavaScriptThreads):
- (stopJavaScriptThreads):
- (activateAhemFont):
- (setDefaultColorProfileToRGB):
- (makeLargeMallocFailSilently):
- (dumpFrameScrollPosition):
- (dumpFramesAsText):
- (dump):
- (runTest):
- (-[DumpRenderTreeWindow isKeyWindow]):
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/DumpRenderTreeDraggingInfo.h: Removed.
- * DumpRenderTree/DumpRenderTreeDraggingInfo.m: Removed.
- * DumpRenderTree/EditingDelegate.h: Removed.
- * DumpRenderTree/EditingDelegate.m: Removed.
- * DumpRenderTree/EventSendingController.h: Removed.
- * DumpRenderTree/EventSendingController.m: Removed.
- * DumpRenderTree/FrameLoadDelegate.h: Removed.
- * DumpRenderTree/FrameLoadDelegate.mm: Removed.
- * DumpRenderTree/GCController.mm: Removed.
- * DumpRenderTree/ImageDiff.m: Removed.
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (dumpAsTextCallback):
- (dumpBackForwardListCallback):
- (dumpChildFramesAsTextCallback):
- (dumpChildFrameScrollPositionsCallback):
- (dumpDOMAsWebArchiveCallback):
- (dumpEditingCallbacksCallback):
- (dumpFrameLoadCallbacksCallback):
- (dumpResourceLoadCallbacksCallback):
- (dumpSelectionRectCallback):
- (dumpSourceAsWebArchiveCallback):
- (dumpTitleChangesCallback):
- (repaintSweepHorizontallyCallback):
- (setCallCloseOnWebViewsCallback):
- (setCanOpenWindowsCallback):
- (setCloseRemainingWindowsWhenCompleteCallback):
- (testRepaintCallback):
- (addFileToPasteboardOnDragCallback):
- (waitUntilDoneCallback):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::dumpAsText):
- (LayoutTestController::setDumpAsText):
- (LayoutTestController::dumpBackForwardList):
- (LayoutTestController::setDumpBackForwardList):
- (LayoutTestController::dumpChildFrameScrollPositions):
- (LayoutTestController::setDumpChildFrameScrollPositions):
- (LayoutTestController::dumpChildFramesAsText):
- (LayoutTestController::setDumpChildFramesAsText):
- (LayoutTestController::dumpDOMAsWebArchive):
- (LayoutTestController::setDumpDOMAsWebArchive):
- (LayoutTestController::dumpSelectionRect):
- (LayoutTestController::setDumpSelectionRect):
- (LayoutTestController::dumpSourceAsWebArchive):
- (LayoutTestController::setDumpSourceAsWebArchive):
- (LayoutTestController::dumpTitleChanges):
- (LayoutTestController::setDumpTitleChanges):
- (LayoutTestController::dumpEditingCallbacks):
- (LayoutTestController::setDumpEditingCallbacks):
- (LayoutTestController::dumpResourceLoadCallbacks):
- (LayoutTestController::setDumpResourceLoadCallbacks):
- (LayoutTestController::dumpFrameLoadCallbacks):
- (LayoutTestController::setDumpFrameLoadCallbacks):
- (LayoutTestController::addFileToPasteboardOnDrag):
- (LayoutTestController::setAddFileToPasteboardOnDrag):
- (LayoutTestController::callCloseOnWebViews):
- (LayoutTestController::setCallCloseOnWebViews):
- (LayoutTestController::canOpenWindows):
- (LayoutTestController::setCanOpenWindows):
- (LayoutTestController::closeRemainingWindowsWhenComplete):
- (LayoutTestController::setCloseRemainingWindowsWhenComplete):
- (LayoutTestController::testRepaint):
- (LayoutTestController::setTestRepaint):
- (LayoutTestController::testRepaintSweepHorizontally):
- (LayoutTestController::setTestRepaintSweepHorizontally):
- (LayoutTestController::waitToDump):
- (LayoutTestController::windowIsKey):
- * DumpRenderTree/LayoutTestControllerMac.mm: Removed.
- * DumpRenderTree/NavigationController.h: Removed.
- * DumpRenderTree/NavigationController.m: Removed.
- * DumpRenderTree/ObjCController.h: Removed.
- * DumpRenderTree/ObjCController.m: Removed.
- * DumpRenderTree/ObjCPlugin.h: Removed.
- * DumpRenderTree/ObjCPlugin.m: Removed.
- * DumpRenderTree/ObjCPluginFunction.h: Removed.
- * DumpRenderTree/ObjCPluginFunction.m: Removed.
- * DumpRenderTree/PolicyDelegate.h: Removed.
- * DumpRenderTree/PolicyDelegate.m: Removed.
- * DumpRenderTree/ResourceLoadDelegate.h: Removed.
- * DumpRenderTree/ResourceLoadDelegate.m: Removed.
- * DumpRenderTree/TextInputController.h: Removed.
- * DumpRenderTree/TextInputController.m: Removed.
- * DumpRenderTree/UIDelegate.h: Removed.
- * DumpRenderTree/UIDelegate.mm: Removed.
- * DumpRenderTree/WorkQueueItemMac.mm: Removed.
- * DumpRenderTree/mac: Added.
- * DumpRenderTree/mac/AppleScriptController.h: Copied from DumpRenderTree/AppleScriptController.h.
- * DumpRenderTree/mac/AppleScriptController.m: Copied from DumpRenderTree/AppleScriptController.m.
- * DumpRenderTree/mac/DumpRenderTreeDraggingInfo.h: Copied from DumpRenderTree/DumpRenderTreeDraggingInfo.h.
- * DumpRenderTree/mac/DumpRenderTreeDraggingInfo.mm: Copied from DumpRenderTree/DumpRenderTreeDraggingInfo.m.
- * DumpRenderTree/mac/EditingDelegate.h: Copied from DumpRenderTree/EditingDelegate.h.
- * DumpRenderTree/mac/EditingDelegate.mm: Copied from DumpRenderTree/EditingDelegate.m.
- (-[EditingDelegate webView:shouldBeginEditingInDOMRange:]):
- (-[EditingDelegate webView:shouldEndEditingInDOMRange:]):
- (-[EditingDelegate webView:shouldInsertNode:replacingDOMRange:givenAction:]):
- (-[EditingDelegate webView:shouldInsertText:replacingDOMRange:givenAction:]):
- (-[EditingDelegate webView:shouldDeleteDOMRange:]):
- (-[EditingDelegate webView:shouldChangeSelectedDOMRange:toDOMRange:affinity:stillSelecting:]):
- (-[EditingDelegate webView:shouldApplyStyle:toElementsInDOMRange:]):
- (-[EditingDelegate webView:shouldChangeTypingStyle:toStyle:]):
- (-[EditingDelegate webViewDidBeginEditing:]):
- (-[EditingDelegate webViewDidChange:]):
- (-[EditingDelegate webViewDidEndEditing:]):
- (-[EditingDelegate webViewDidChangeTypingStyle:]):
- (-[EditingDelegate webViewDidChangeSelection:]):
- * DumpRenderTree/mac/EventSendingController.h: Copied from DumpRenderTree/EventSendingController.h.
- * DumpRenderTree/mac/EventSendingController.mm: Copied from DumpRenderTree/EventSendingController.m.
- * DumpRenderTree/mac/FrameLoadDelegate.h: Copied from DumpRenderTree/FrameLoadDelegate.h.
- * DumpRenderTree/mac/FrameLoadDelegate.mm: Copied from DumpRenderTree/FrameLoadDelegate.mm.
- (-[FrameLoadDelegate init]):
- (-[FrameLoadDelegate dealloc]):
- (-[FrameLoadDelegate processWork:]):
- (-[FrameLoadDelegate webView:locationChangeDone:forDataSource:]):
- (-[FrameLoadDelegate webView:didStartProvisionalLoadForFrame:]):
- (-[FrameLoadDelegate webView:didCommitLoadForFrame:]):
- (-[FrameLoadDelegate webView:didFailProvisionalLoadWithError:forFrame:]):
- (-[FrameLoadDelegate webView:didFinishLoadForFrame:]):
- (-[FrameLoadDelegate webView:didFailLoadWithError:forFrame:]):
- (-[FrameLoadDelegate webView:windowScriptObjectAvailable:]):
- (-[FrameLoadDelegate webView:didClearWindowObject:forFrame:]):
- (-[FrameLoadDelegate webView:didReceiveTitle:forFrame:]):
- (-[FrameLoadDelegate webView:didReceiveServerRedirectForProvisionalLoadForFrame:]):
- (-[FrameLoadDelegate webView:didReceiveIcon:forFrame:]):
- (-[FrameLoadDelegate webView:didChangeLocationWithinPageForFrame:]):
- (-[FrameLoadDelegate webView:willPerformClientRedirectToURL:delay:fireDate:forFrame:]):
- (-[FrameLoadDelegate webView:didCancelClientRedirectForFrame:]):
- (-[FrameLoadDelegate webView:willCloseFrame:]):
- (-[FrameLoadDelegate webView:didFinishDocumentLoadForFrame:]):
- (-[FrameLoadDelegate webView:didHandleOnloadEventsForFrame:]):
- * DumpRenderTree/mac/GCControllerMac.mm: Copied from DumpRenderTree/GCController.mm.
- * DumpRenderTree/mac/ImageDiff.m: Copied from DumpRenderTree/ImageDiff.m.
- * DumpRenderTree/mac/LayoutTestControllerMac.mm: Copied from DumpRenderTree/LayoutTestControllerMac.mm.
- (LayoutTestController::notifyDone):
- (LayoutTestController::setWindowIsKey):
- (LayoutTestController::setWaitToDump):
- * DumpRenderTree/mac/NavigationController.h: Copied from DumpRenderTree/NavigationController.h.
- * DumpRenderTree/mac/NavigationController.m: Copied from DumpRenderTree/NavigationController.m.
- * DumpRenderTree/mac/ObjCController.h: Copied from DumpRenderTree/ObjCController.h.
- * DumpRenderTree/mac/ObjCController.m: Copied from DumpRenderTree/ObjCController.m.
- * DumpRenderTree/mac/ObjCPlugin.h: Copied from DumpRenderTree/ObjCPlugin.h.
- * DumpRenderTree/mac/ObjCPlugin.m: Copied from DumpRenderTree/ObjCPlugin.m.
- * DumpRenderTree/mac/ObjCPluginFunction.h: Copied from DumpRenderTree/ObjCPluginFunction.h.
- * DumpRenderTree/mac/ObjCPluginFunction.m: Copied from DumpRenderTree/ObjCPluginFunction.m.
- * DumpRenderTree/mac/PolicyDelegate.h: Copied from DumpRenderTree/PolicyDelegate.h.
- * DumpRenderTree/mac/PolicyDelegate.mm: Copied from DumpRenderTree/PolicyDelegate.m.
- * DumpRenderTree/mac/ResourceLoadDelegate.h: Copied from DumpRenderTree/ResourceLoadDelegate.h.
- * DumpRenderTree/mac/ResourceLoadDelegate.mm: Copied from DumpRenderTree/ResourceLoadDelegate.m.
- (-[ResourceLoadDelegate webView:identifierForInitialRequest:fromDataSource:]):
- (-[ResourceLoadDelegate webView:resource:willSendRequest:redirectResponse:fromDataSource:]):
- (-[ResourceLoadDelegate webView:resource:didReceiveResponse:fromDataSource:]):
- (-[ResourceLoadDelegate webView:resource:didFinishLoadingFromDataSource:]):
- (-[ResourceLoadDelegate webView:resource:didFailLoadingWithError:fromDataSource:]):
- (-[ResourceLoadDelegate webView:resource:willCacheResponse:fromDataSource:]):
- * DumpRenderTree/mac/TextInputController.h: Copied from DumpRenderTree/TextInputController.h.
- * DumpRenderTree/mac/TextInputController.m: Copied from DumpRenderTree/TextInputController.m.
- * DumpRenderTree/mac/UIDelegate.h: Copied from DumpRenderTree/UIDelegate.h.
- * DumpRenderTree/mac/UIDelegate.mm: Copied from DumpRenderTree/UIDelegate.mm.
- (-[UIDelegate webView:dragImage:at:offset:event:pasteboard:source:slideBack:forView:]):
- (-[UIDelegate webViewFocus:]):
- (-[UIDelegate webView:createWebViewWithRequest:]):
- (-[UIDelegate webViewClose:]):
- * DumpRenderTree/mac/WorkQueueItemMac.mm: Copied from DumpRenderTree/WorkQueueItemMac.mm.
-
-2007-09-14 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam.
-
- - Changing Win version of Drosera work with recent changes.
-
- * Drosera/DebuggerDocument.cpp:
- * Drosera/DebuggerDocument.h:
- * Drosera/mac/DebuggerDocumentPlatform.mm:
- (NSStringCreateWithJSStringRef):
- (JSValueRefCreateWithNSString):
- * Drosera/win/DebuggerClient.cpp:
- (DebuggerClient::stepInto):
- * Drosera/win/Drosera.vcproj/Drosera.vcproj:
-
-2007-09-13 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Tim.
-
- - Moved isPaused into the JS for efficiency and simplicity.
-
- * Drosera/DebuggerDocument.cpp:
- (DebuggerDocument::DebuggerDocument):
- (DebuggerDocument::pauseCallback):
- (DebuggerDocument::resumeCallback):
- (DebuggerDocument::isPaused):
- (DebuggerDocument::staticFunctions):
- * Drosera/DebuggerDocument.h:
- * Drosera/console.js:
- * Drosera/debugger.js:
- * Drosera/mac/DebuggerClient.mm:
- (-[DebuggerClient validateUserInterfaceItem:]):
-
-2007-09-13 Sam Weinig <sam@webkit.org>
-
- Rubber stamped by Darin Adler.
-
- Make DumpRenderTree more cross platform ready.
- - Convert GCController to use the JSCore API instead of the WebScriptObject.
- - Use CF types instead of NS objects.
- - General cleanup.
-
- * DumpRenderTree/DumpRenderTree.h:
- * DumpRenderTree/DumpRenderTree.mm:
- (dumpRenderTree):
- (dump):
- (runTest):
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/EditingDelegate.m:
- * DumpRenderTree/FrameLoadDelegate.h:
- * DumpRenderTree/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate init]):
- (-[FrameLoadDelegate dealloc]):
- (-[FrameLoadDelegate webView:didClearWindowObject:forFrame:]):
- * DumpRenderTree/GCController.cpp: Added.
- (GCController::GCController):
- (GCController::~GCController):
- (collectCallback):
- (collectOnAlternateThreadCallback):
- (getJSObjectCountCallback):
- (GCController::makeWindowObject):
- (GCController::getJSClass):
- (GCController::staticFunctions):
- * DumpRenderTree/GCController.h:
- * DumpRenderTree/GCController.mm:
- (GCController::collect):
- (GCController::collectOnAlternateThread):
- (GCController::getJSObjectCount):
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::makeWindowObject):
- (LayoutTestController::getJSClass):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/LayoutTestControllerMac.mm:
- (LayoutTestController::addDisallowedURL):
- (waitUntilDoneWatchdogFired):
- (LayoutTestController::waitUntilDone):
- * DumpRenderTree/ResourceLoadDelegate.m:
- (-[ResourceLoadDelegate webView:resource:willSendRequest:redirectResponse:fromDataSource:]):
-
-2007-09-12 Sam Weinig <sam@webkit.org>
-
- Reviewed by Stephanie.
-
- Fix leaks in mac DumpRenderTree.
-
- * DumpRenderTree/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate init]): Initalize in the correct order.
- (-[FrameLoadDelegate processWork:]): Delete WorkQueueItem's after dequeueing them.
- * DumpRenderTree/LayoutTestController.cpp:
- (decodeHostNameCallback): Put return value in a temporary JSRetainPtr to ensure it gets released.
- (encodeHostNameCallback): ditto.
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/LayoutTestControllerMac.mm:
- (LayoutTestController::copyDecodedHostName): Rename function to signal that it follows the Create rule.
- (LayoutTestController::copyEncodedHostName): ditto
- (LayoutTestController::queueLoad): Use a JSRetainPtr to ensure the url gets released.
-
-2007-09-12 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Geof.
-
- - Updated Leopard leak list to include a leak which appears to be fixed in 9A549 but not the version the bot is on. This will allow us to get the bot green, but later we should remove it.
-
- * Scripts/run-webkit-tests:
-
-2007-09-12 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Darin Adler.
-
- - Simplified code paths and extracted out functions to increase encapsulation.
-
- * Drosera/DebuggerDocument.cpp:
- (DebuggerDocument::breakpointEditorHTMLCallback):
- (DebuggerDocument::isPausedCallback):
- (DebuggerDocument::pauseCallback):
- (DebuggerDocument::resumeCallback):
- (DebuggerDocument::stepIntoCallback):
- (DebuggerDocument::evaluateScriptCallback):
- (DebuggerDocument::currentFunctionStackCallback):
- (DebuggerDocument::localScopeVariableNamesForCallFrameCallback):
- (DebuggerDocument::valueForScopeVariableNamedCallback):
- (DebuggerDocument::logCallback):
- * Drosera/DebuggerDocument.h:
- (DebuggerDocument::getPaused):
- * Drosera/mac/DebuggerClient.mm:
- (-[DebuggerClient pause:]):
- (-[DebuggerClient resume:]):
- (-[DebuggerClient stepInto:]):
- (-[DebuggerClient stepOver:]):
- (-[DebuggerClient stepOut:]):
- (-[DebuggerClient showConsole:]):
- (-[DebuggerClient closeCurrentFile:]):
- (-[DebuggerClient validateUserInterfaceItem:]):
- * Drosera/mac/DebuggerDocumentPlatform.mm: Added.
- (+[NSString stringOrNilFromWebScriptResult:]):
- (DebuggerDocument::platformPause):
- (DebuggerDocument::platformResume):
- (DebuggerDocument::platformStepInto):
- (DebuggerDocument::platformEvaluateScript):
- (DebuggerDocument::getPlatformCurrentFunctionStack):
- (DebuggerDocument::getPlatformLocalScopeVariableNamesForCallFrame):
- (DebuggerDocument::platformValueForScopeVariableNamed):
- (DebuggerDocument::platformLog):
- * Drosera/mac/Drosera.xcodeproj/project.pbxproj:
-
-2007-09-12 Sam Weinig <sam@webkit.org>
-
- Build fix for Buildbot.
-
- * DumpRenderTree/DumpRenderTree.mm:
- (dump):
-
-2007-09-12 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Geoff.
-
- - Updated the leaks list for leopard to help identify regressions.
-
- * Scripts/run-webkit-tests:
-
-2007-09-12 Sam Weinig <sam@webkit.org>
-
- Rubber stamped by Darin Adler.
-
- Convert the LayoutTestController to use the JSCore API instead of WebScriptObject.
-
- * DumpRenderTree/DumpRenderTree.h: Re-order variables.
- * DumpRenderTree/DumpRenderTree.m: Removed.
- * DumpRenderTree/DumpRenderTree.mm: Copied from DumpRenderTree/DumpRenderTree.m.
- (stopJavaScriptThreads): Fix initialization.
- (setDefaultColorProfileToRGB): Add explicit cast from void*.
- (dumpRenderTree): Ditto.
- (runTest):
- Used the WorkQueue from the windows DRT instead of the old NSMutableArray one.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/FrameLoadDelegate.h: Add LayoutTestController instance variable.
- * DumpRenderTree/FrameLoadDelegate.m: Removed.
- * DumpRenderTree/FrameLoadDelegate.mm: Copied from DumpRenderTree/FrameLoadDelegate.m.
- (-[FrameLoadDelegate init]):
- (-[FrameLoadDelegate dealloc]):
- (-[FrameLoadDelegate processWork:]):
- (-[FrameLoadDelegate webView:locationChangeDone:forDataSource:]):
- (-[FrameLoadDelegate webView:didClearWindowObject:forFrame:]):
- Convert to use the new JSCore based LayoutTestController and the new WorkQueue.
-
- * DumpRenderTree/LayoutTestController.cpp: Added.
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::~LayoutTestController):
- (dumpAsTextCallback):
- (dumpBackForwardListCallback):
- (dumpChildFramesAsTextCallback):
- (dumpChildFrameScrollPositionsCallback):
- (dumpDOMAsWebArchiveCallback):
- (dumpEditingCallbacksCallback):
- (dumpFrameLoadCallbacksCallback):
- (dumpResourceLoadCallbacksCallback):
- (dumpSelectionRectCallback):
- (dumpSourceAsWebArchiveCallback):
- (dumpTitleChangesCallback):
- (repaintSweepHorizontallyCallback):
- (setCallCloseOnWebViewsCallback):
- (setCanOpenWindowsCallback):
- (setCloseRemainingWindowsWhenCompleteCallback):
- (testRepaintCallback):
- (addFileToPasteboardOnDragCallback):
- (addDisallowedURLCallback):
- (clearBackForwardListCallback):
- (decodeHostNameCallback):
- (displayCallback):
- (encodeHostNameCallback):
- (keepWebHistoryCallback):
- (notifyDoneCallback):
- (queueBackNavigationCallback):
- (queueForwardNavigationCallback):
- (queueLoadCallback):
- (queueReloadCallback):
- (queueScriptCallback):
- (setAcceptsEditingCallback):
- (setCustomPolicyDelegateCallback):
- (setMainFrameIsFirstResponderCallback):
- (setTabKeyCyclesThroughElementsCallback):
- (setUseDashboardCompatibilityModeCallback):
- (setUserStyleSheetEnabledCallback):
- (setUserStyleSheetLocationCallback):
- (setWindowIsKeyCallback):
- (waitUntilDoneCallback):
- (windowCountCallback):
- (LayoutTestController::makeWindowObject):
- (LayoutTestController::getLayoutTestControllerJSClass):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h: Replaced.
- * DumpRenderTree/LayoutTestController.m: Removed.
- * DumpRenderTree/LayoutTestControllerMac.mm: Added.
- (LayoutTestController::dumpAsText):
- (LayoutTestController::dumpBackForwardList):
- (LayoutTestController::dumpChildFramesAsText):
- (LayoutTestController::dumpChildFrameScrollPositions):
- (LayoutTestController::dumpDOMAsWebArchive):
- (LayoutTestController::dumpEditingCallbacks):
- (LayoutTestController::dumpFrameLoadCallbacks):
- (LayoutTestController::dumpResourceLoadCallbacks):
- (LayoutTestController::dumpSelectionRect):
- (LayoutTestController::dumpSourceAsWebArchive):
- (LayoutTestController::dumpTitleChanges):
- (LayoutTestController::repaintSweepHorizontally):
- (LayoutTestController::setCallCloseOnWebViews):
- (LayoutTestController::setCanOpenWindows):
- (LayoutTestController::setCloseRemainingWindowsWhenComplete):
- (LayoutTestController::testRepaint):
- (LayoutTestController::addFileToPasteboardOnDrag):
- (LayoutTestController::addDisallowedURL):
- (LayoutTestController::clearBackForwardList):
- (LayoutTestController::decodeHostName):
- (LayoutTestController::encodeHostName):
- (LayoutTestController::display):
- (LayoutTestController::keepWebHistory):
- (LayoutTestController::notifyDone):
- (LayoutTestController::queueBackNavigation):
- (LayoutTestController::queueForwardNavigation):
- (LayoutTestController::queueLoad):
- (LayoutTestController::queueReload):
- (LayoutTestController::queueScript):
- (LayoutTestController::setAcceptsEditing):
- (LayoutTestController::setCustomPolicyDelegate):
- (LayoutTestController::setMainFrameIsFirstResponder):
- (LayoutTestController::setTabKeyCyclesThroughElements):
- (LayoutTestController::setUseDashboardCompatibilityMode):
- (LayoutTestController::setUserStyleSheetEnabled):
- (LayoutTestController::setUserStyleSheetLocation):
- (LayoutTestController::setWindowIsKey):
- (+[WaitToDumpWatchdog waitUntilDoneWatchdogFired]):
- (LayoutTestController::waitUntilDone):
- (LayoutTestController::windowCount):
- Use the JSCore API to implement the LayoutTestController.
-
- * DumpRenderTree/ObjCController.h:
- * DumpRenderTree/ObjCController.m:
- (+[ObjCController isSelectorExcludedFromWebScript:]):
- (+[ObjCController webScriptNameForSelector:]):
- (-[ObjCController accessStoredWebScriptObject]):
- (-[ObjCController storeWebScriptObject:]):
- (-[ObjCController dealloc]):
- (-[ObjCController invokeUndefinedMethodFromWebScript:withArguments:]):
- Move WebScriptObject tests to ObjCController.
-
- * DumpRenderTree/UIDelegate.m: Removed.
- * DumpRenderTree/UIDelegate.mm: Copied from DumpRenderTree/UIDelegate.m.
-
- * DumpRenderTree/WorkQueue.cpp: Copied from DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/WorkQueue.cpp.
- * DumpRenderTree/WorkQueue.h: Copied from DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/WorkQueue.h.
- * DumpRenderTree/WorkQueueItem.h: Copied from DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/WorkQueueItem.h.
- (WorkQueueItem::~WorkQueueItem):
- (LoadItem::LoadItem):
- (LoadItem::url):
- (LoadItem::target):
- (ScriptItem::ScriptItem):
- (ScriptItem::script):
- * DumpRenderTree/WorkQueueItemMac.mm: Added.
- (LoadItem::invoke):
- (ReloadItem::invoke):
- (ScriptItem::invoke):
- (BackForwardItem::invoke):
- Copy WorkQueue and WorkQueueItem from windows DRT. Changed the WorkQueueItem to use JSStringRefs instead of wstrings
- to avoid conversion until the last possible moment. These changes will be merged with the windows DRT when we start
- sharing code.
-
-2007-09-11 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Maciej.
-
- - Updated Win side to take advantage of the platform separating changes.
-
- * Drosera/DebuggerDocument.cpp:
- (DebuggerDocument::localScopeVariableNamesForCallFrame):
- * Drosera/DebuggerDocument.h:
- * Drosera/win/DebuggerClient.cpp:
- (DebuggerClient::pause):
- (DebuggerClient::resume):
- (DebuggerClient::stepInto):
- (DebuggerDocument::platformPause):
- (DebuggerDocument::platformResume):
- (DebuggerDocument::platformStepInto):
- (DebuggerDocument::platformEvaluateScript):
- (DebuggerDocument::getPlatformCurrentFunctionStack):
- (DebuggerDocument::getPlatformLocalScopeVariableNamesForCallFrame):
- (DebuggerDocument::platformValueForScopeVariableNamed):
- (DebuggerDocument::platformLog):
- * Drosera/win/DebuggerClient.h:
- * Drosera/win/Drosera.cpp:
- (Drosera::Drosera):
- (Drosera::windowScriptObjectAvailable):
- (Drosera::initWithServerName):
- (Drosera::switchToServerNamed):
- * Drosera/win/Drosera.h:
- * Drosera/win/Drosera.vcproj/Drosera.vcproj:
-
-2007-09-11 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam.
-
- - Just doing the moves in a separate patch so the changes are easier to see.
-
- * Drosera/win/DebuggerClient.cpp: Copied from Drosera/win/DebuggerDocumentWin.cpp.
- * Drosera/win/DebuggerClient.h: Copied from Drosera/win/DebuggerDocumentWin.h.
- * Drosera/win/DebuggerDocumentWin.cpp: Removed.
- * Drosera/win/DebuggerDocumentWin.h: Removed.
- * Drosera/win/Drosera.vcproj/Drosera.vcproj:
-
-2007-09-11 Sven Herzberg <sven@imendio.com>
-
- Don't overwrite LD_LIBRARY_PATH, prepend to it. Fixes:
- http://bugs.webkit.org/show_bug.cgi?id=15176
-
- * Scripts/run-launcher: don't replace LD_LIBRARY_PATH with
- $projectDir, but prepend $projectDir to LD_LIBRARY_PATH (to preserve
- other paths eg. from jhbuild)
-
-2007-09-10 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam.
-
- - Made an order-of-deletion mistake.
-
- * Drosera/DebuggerDocument.h:
- * Drosera/ForwardingHeaders/wtf/Assertions.h: Removed.
- * Drosera/ForwardingHeaders/wtf/Noncopyable.h: Removed.
- * Drosera/ForwardingHeaders/wtf/OwnPtr.h: Removed.
- * Drosera/mac/DebuggerClient.mm:
- (DebuggerDocument::platformPause):
- (DebuggerDocument::platformResume):
- (DebuggerDocument::platformStepInto):
- (DebuggerDocument::platformEvaluateScript):
- (DebuggerDocument::getPlatformCurrentFunctionStack):
- (DebuggerDocument::getPlatformLocalScopeVariableNamesForCallFrame):
- (DebuggerDocument::platformValueForScopeVariableNamed):
- * Drosera/mac/Drosera.xcodeproj/project.pbxproj:
-
-2007-09-10 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Darin Adler.
-
- - Renaming DebuggerDocument[platform] to DebuggerClient to be more clear.
-
- * Drosera/DebuggerDocument.cpp:
- (DebuggerDocument::DebuggerDocument):
- * Drosera/DebuggerDocument.h:
- * Drosera/ForwardingHeaders/wtf/Assertions.h: Added.
- * Drosera/ForwardingHeaders/wtf/Noncopyable.h: Added.
- * Drosera/ForwardingHeaders/wtf/OwnPtr.h: Added.
- * Drosera/mac/DebuggerApplication.mm:
- (-[DebuggerApplication attach:]):
- * Drosera/mac/DebuggerClient.h: Copied from Drosera/mac/DebuggerDocumentMac.h.
- * Drosera/mac/DebuggerClient.mm: Copied from Drosera/mac/DebuggerDocumentMac.mm.
- (DebuggerDocument::platformPause):
- (DebuggerDocument::platformResume):
- (DebuggerDocument::platformStepInto):
- (DebuggerDocument::platformEvaluateScript):
- (DebuggerDocument::getPlatformCurrentFunctionStack):
- (DebuggerDocument::getPlatformLocalScopeVariableNamesForCallFrame):
- (DebuggerDocument::platformValueForScopeVariableNamed):
- (DebuggerDocument::platformLog):
- * Drosera/mac/DebuggerDocumentMac.h: Removed.
- * Drosera/mac/DebuggerDocumentMac.mm: Removed.
- * Drosera/mac/Drosera.xcodeproj/project.pbxproj:
-
-2007-09-09 Sam Weinig <sam@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Remove 'objC' prefix from methods now in the ObjCController.
-
- * DumpRenderTree/ObjCController.m:
- (+[ObjCController isSelectorExcludedFromWebScript:]):
- (+[ObjCController webScriptNameForSelector:]):
- (-[ObjCController classNameOf:]):
- (-[ObjCController objectOfClass:]):
- (-[ObjCController identityIsEqual::]):
- (-[ObjCController longLongRoundTrip:]):
- (-[ObjCController unsignedLongLongRoundTrip:]):
-
-2007-09-09 Sam Weinig <sam@webkit.org>
-
- Reviewed by Oliver.
-
- Initial refactor of DumpRenderTree in preparation of making it more platform independent.
- - Move LayoutTestController into its own file.
- - Move Objective-C only functions on LayoutTestController into a new controller called the
- ObjCController.
-
- * DumpRenderTree/DumpRenderTree.h:
- * DumpRenderTree/DumpRenderTree.m:
- (displayWebView):
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/FrameLoadDelegate.m:
- (-[FrameLoadDelegate webView:didClearWindowObject:forFrame:]):
- * DumpRenderTree/LayoutTestController.h: Added.
- * DumpRenderTree/LayoutTestController.m: Added.
- (+[LayoutTestController isSelectorExcludedFromWebScript:]):
- (+[LayoutTestController webScriptNameForSelector:]):
- (-[LayoutTestController clearBackForwardList]):
- (-[LayoutTestController setUseDashboardCompatibilityMode:]):
- (-[LayoutTestController setCloseRemainingWindowsWhenComplete:]):
- (-[LayoutTestController setCustomPolicyDelegate:]):
- (-[LayoutTestController keepWebHistory]):
- (-[LayoutTestController setCallCloseOnWebViews:]):
- (-[LayoutTestController setCanOpenWindows]):
- (-[LayoutTestController waitUntilDone]):
- (-[LayoutTestController waitUntilDoneWatchdogFired]):
- (-[LayoutTestController notifyDone]):
- (-[LayoutTestController dumpAsText]):
- (-[LayoutTestController addFileToPasteboardOnDrag]):
- (-[LayoutTestController addDisallowedURL:]):
- (-[LayoutTestController setUserStyleSheetLocation:]):
- (-[LayoutTestController setUserStyleSheetEnabled:]):
- (-[LayoutTestController dumpDOMAsWebArchive]):
- (-[LayoutTestController dumpSourceAsWebArchive]):
- (-[LayoutTestController dumpSelectionRect]):
- (-[LayoutTestController dumpTitleChanges]):
- (-[LayoutTestController dumpBackForwardList]):
- (-[LayoutTestController windowCount]):
- (-[LayoutTestController dumpChildFrameScrollPositions]):
- (-[LayoutTestController dumpChildFramesAsText]):
- (-[LayoutTestController dumpEditingCallbacks]):
- (-[LayoutTestController dumpResourceLoadCallbacks]):
- (-[LayoutTestController dumpFrameLoadCallbacks]):
- (-[LayoutTestController setWindowIsKey:]):
- (-[LayoutTestController setMainFrameIsFirstResponder:]):
- (-[LayoutTestController display]):
- (-[LayoutTestController testRepaint]):
- (-[LayoutTestController repaintSweepHorizontally]):
- (-[LayoutTestController invokeUndefinedMethodFromWebScript:withArguments:]):
- (-[LayoutTestController _addWorkForTarget:selector:arg1:arg2:]):
- (-[LayoutTestController _doLoad:target:]):
- (-[LayoutTestController _doBackOrForwardNavigation:]):
- (-[LayoutTestController queueBackNavigation:]):
- (-[LayoutTestController queueForwardNavigation:]):
- (-[LayoutTestController queueReload]):
- (-[LayoutTestController queueScript:]):
- (-[LayoutTestController queueLoad:target:]):
- (-[LayoutTestController setAcceptsEditing:]):
- (-[LayoutTestController setTabKeyCyclesThroughElements:]):
- (-[LayoutTestController storeWebScriptObject:]):
- (-[LayoutTestController accessStoredWebScriptObject]):
- (-[LayoutTestController dealloc]):
- (-[LayoutTestController decodeHostName:]):
- (-[LayoutTestController encodeHostName:]):
- * DumpRenderTree/ObjCController.h: Added.
- * DumpRenderTree/ObjCController.m: Added.
- (+[ObjCController isSelectorExcludedFromWebScript:]):
- (+[ObjCController webScriptNameForSelector:]):
- (-[ObjCController objCClassNameOf:]):
- (-[ObjCController objCObjectOfClass:]):
- (-[ObjCController objCIdentityIsEqual::]):
- (-[ObjCController objCLongLongRoundTrip:]):
- (-[ObjCController objCUnsignedLongLongRoundTrip:]):
- (-[ObjCController testWrapperRoundTripping:]):
-
-2007-09-07 Sam Weinig <sam@webkit.org>
-
- Reviewed by Alice.
-
- Strip trailing and leading space/newline characters from skiplist file names.
-
- * Scripts/run-webkit-tests:
-
-2007-09-06 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Maciej.
-
- - Changed Drosera to take advantage of the JSRetainPtr changes.
-
- * Drosera/DebuggerDocument.cpp:
- (DebuggerDocument::breakpointEditorHTML):
- (DebuggerDocument::evaluateScript):
- (DebuggerDocument::valueForScopeVariableNamed):
- (DebuggerDocument::log):
- (DebuggerDocument::windowScriptObjectAvailable):
- (DebuggerDocument::toJSArray):
- (DebuggerDocument::callFunctionOnObject):
- (DebuggerDocument::logException):
- * Drosera/mac/DebuggerDocumentMac.mm:
- (-[DebuggerClientMac webView:didLoadMainResourceForDataSource:]):
- (-[DebuggerClientMac webView:didParseSource:baseLineNumber:fromURL:sourceId:forWebFrame:]):
- (DebuggerDocument::platformEvaluateScript):
- (DebuggerDocument::getPlatformCurrentFunctionStack):
- (DebuggerDocument::getPlatformLocalScopeVariableNamesForCallFrame):
- (DebuggerDocument::platformValueForScopeVariableNamed):
-
-2007-09-05 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam, Sam, Darin.
-
- - Separated what is platform dependant from what is not. Creating the structure needed for Drosera for Win.
-
- * Drosera/Debugger.h: Added.
- * Drosera/DebuggerDocument.cpp:
- (DebuggerDocument::breakpointEditorHTMLCallback):
- (DebuggerDocument::isPausedCallback):
- (DebuggerDocument::pauseCallback):
- (DebuggerDocument::resumeCallback):
- (DebuggerDocument::stepIntoCallback):
- (DebuggerDocument::evaluateScriptCallback):
- (DebuggerDocument::currentFunctionStackCallback):
- (DebuggerDocument::localScopeVariableNamesForCallFrameCallback):
- (DebuggerDocument::valueForScopeVariableNamedCallback):
- (DebuggerDocument::logCallback):
- (DebuggerDocument::breakpointEditorHTML):
- (DebuggerDocument::isPaused):
- (DebuggerDocument::pause):
- (DebuggerDocument::resume):
- (DebuggerDocument::stepInto):
- (DebuggerDocument::evaluateScript):
- (DebuggerDocument::currentFunctionStack):
- (DebuggerDocument::localScopeVariableNamesForCallFrame):
- (DebuggerDocument::valueForScopeVariableNamed):
- (DebuggerDocument::log):
- (DebuggerDocument::toolbarPause):
- (DebuggerDocument::toolbarResume):
- (DebuggerDocument::toolbarStepInto):
- (DebuggerDocument::toolbarStepOver):
- (DebuggerDocument::toolbarStepOut):
- (DebuggerDocument::toolbarShowConsole):
- (DebuggerDocument::toolbarCloseCurrentFile):
- (DebuggerDocument::updateFileSource):
- (DebuggerDocument::didParseScript):
- (DebuggerDocument::willExecuteStatement):
- (DebuggerDocument::didEnterCallFrame):
- (DebuggerDocument::willLeaveCallFrame):
- (DebuggerDocument::exceptionWasRaised):
- (DebuggerDocument::windowScriptObjectAvailable):
- (DebuggerDocument::toJSArray):
- (DebuggerDocument::callGlobalFunction):
- (DebuggerDocument::callFunctionOnObject):
- (DebuggerDocument::getDroseraJSClass):
- (DebuggerDocument::staticFunctions):
- (DebuggerDocument::logException):
- * Drosera/DebuggerDocument.h:
- (DebuggerDocument::DebuggerDocument):
- * Drosera/ForwardingHeaders: Added.
- * Drosera/ForwardingHeaders/wtf: Added.
- * Drosera/ForwardingHeaders/wtf/Platform.h: Added.
- * Drosera/config.h:
- * Drosera/console.html:
- * Drosera/console.js:
- * Drosera/debugger.js:
- * Drosera/mac/DebuggerApplication.mm:
- (-[DebuggerApplication attach:]):
- * Drosera/mac/DebuggerDocumentMac.h:
- * Drosera/mac/DebuggerDocumentMac.mm:
- (+[NSString stringOrNilFromWebScriptResult:]):
- (+[DebuggerClientMac log:]):
- (-[DebuggerClientMac initWithServerName:]):
- (-[DebuggerClientMac dealloc]):
- (-[DebuggerClientMac pause]):
- (-[DebuggerClientMac resume]):
- (-[DebuggerClientMac pause:]):
- (-[DebuggerClientMac resume:]):
- (-[DebuggerClientMac stepInto:]):
- (-[DebuggerClientMac stepOver:]):
- (-[DebuggerClientMac stepOut:]):
- (-[DebuggerClientMac showConsole:]):
- (-[DebuggerClientMac closeCurrentFile:]):
- (-[DebuggerClientMac validateUserInterfaceItem:]):
- (-[DebuggerClientMac webView:windowScriptObjectAvailable:]):
- (-[DebuggerClientMac webView:didEnterCallFrame:sourceId:line:forWebFrame:]):
- (-[DebuggerClientMac webView:willExecuteStatement:sourceId:line:forWebFrame:]):
- (-[DebuggerClientMac webView:willLeaveCallFrame:sourceId:line:forWebFrame:]):
- (-[DebuggerClientMac webView:exceptionWasRaised:sourceId:line:forWebFrame:]):
- (DebuggerDocument::platformPause):
- (DebuggerDocument::platformResume):
- (DebuggerDocument::platformStepInto):
- (DebuggerDocument::platformEvaluateScript):
- (DebuggerDocument::platformCurrentFunctionStack):
- (DebuggerDocument::platformLocalScopeVariableNamesForCallFrame):
- (DebuggerDocument::platformValueForScopeVariableNamed):
- (DebuggerDocument::platformLog):
- * Drosera/mac/Drosera.xcodeproj/project.pbxproj:
-
-2007-09-06 Sam Weinig <sam@webkit.org>
-
- Reviewed by Adam Roben.
-
- Register the WebKit DLL on initialization of the DumpRenderTree.
-
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.cpp:
- (initialize):
-
-2007-09-05 Sam Weinig <sam@webkit.org>
-
- Reviewed by Oliver.
-
- Fix many layout test failures caused by r25364.
- Set text size to standand size at the begining of each test matching the mac.
-
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.cpp:
- (runTest):
-
-2007-09-04 Sam Weinig <sam@webkit.org>
-
- Reviewed by Adam.
-
- Fix for <rdar://problem/5382277>
- Implement eventSender.textZoomIn and eventSender.textZoomOut for windows DRT.
-
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/EventSender.cpp:
- (textZoomInCallback):
- (textZoomOutCallback):
-
-2007-08-29 David Kilzer <ddkilzer@apple.com>
-
- Reviewed by Adam.
-
- Added case-insensitivity to checks for adding regression tests.
-
- * Scripts/prepare-ChangeLog:
- (generateFileList):
-
-2007-08-28 David Kilzer <ddkilzer@apple.com>
-
- Reviewed by Maciej.
-
- Ignore files in /resources/ subdirectories when creating a list of added tests.
-
- * Scripts/prepare-ChangeLog:
- (generateFileList):
-
-2007-08-27 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by John.
-
- - Removed Leopard leaks list since all of those radars were fixed.
-
- * Scripts/run-webkit-tests:
-
-2007-08-27 Adam Roben <aroben@apple.com>
-
- Rubberstamped by Mark.
-
- * Scripts/pdevenv: Pass arguments along to devenv.com.
-
-2007-08-26 David Kilzer <ddkilzer@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Update prepare-ChangeLog to generate the datestamp in the correct timezone.
-
- * Scripts/prepare-ChangeLog:
- (changeLogDate): Added.
-
-2007-08-24 Sam Weinig <sam@webkit.org>
-
- Revert r25216 which renamed the COM DOM bindings to use Deprecated prefix.
-
-2007-08-24 Sam Weinig <sam@webkit.org>
-
- Rubber-stamped by Adam Roben.
-
- <rdar://problem/5434593> Deprecate current manually written COM DOM bindings in anticipation of autogeneration
-
- Rename COM DOM bindings to use Deprecated prefix.
-
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.cpp:
- (dumpFramesAsText):
- (dump):
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/EditingDelegate.cpp:
- (dumpPath):
- (dump):
- (EditingDelegate::shouldBeginEditingInDOMRange):
- (EditingDelegate::shouldEndEditingInDOMRange):
- (EditingDelegate::shouldInsertNode):
- (EditingDelegate::shouldInsertText):
- (EditingDelegate::shouldDeleteDOMRange):
- (EditingDelegate::shouldChangeSelectedDOMRange):
- (EditingDelegate::shouldApplyStyle):
- (EditingDelegate::shouldChangeTypingStyle):
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/EditingDelegate.h:
-
-2007-08-24 Oliver Hunt <oliver@apple.com>
-
- Reviewed by John H.
-
- WebDataSource::response can legitimately have a null response, so we
- must check that case.
-
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/LayoutTestController.cpp:
- (queueLoadCallback):
-
-2007-08-23 Mitz Pettel <mitz@webkit.org>
-
- Reviewed by Darin and Adam.
-
- - DumpRenderTree changes to allow testing for
- http://bugs.webkit.org/show_bug.cgi?id=11756
- REGRESSION: link targeting a frame in another window does not work
- <rdar://problem/5286420>
-
- Use a frame group name for all WebViews created by DumpRenderTree to
- allow testing of cross-page frame lookup.
-
- * DumpRenderTree/DumpRenderTree.m:
- (createWebView): Pass group name to -[WebView initWithFrame:frameName:groupName:].
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.cpp:
- (main): Pass group name to WebView::initWithFrame(RECT, BSTR, BSTR).
-
-2007-08-23 David Kilzer <ddkilzer@webkit.org>
-
- Reviewed by Adam.
-
- Quote the $sslCertificate path in case it contains a space.
-
- * Scripts/run-webkit-httpd:
- * Scripts/run-webkit-tests:
-
-2007-08-22 Oliver Hunt <oliver@apple.com>
-
- Reviewed by John and Adam.
-
- WebDataSource::response can legitimately have a null response, so we
- must check that case.
-
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.cpp:
- (dump):
-
-2007-08-21 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Geof.
-
- - Changing the usage to be more clear.
-
- * Scripts/run-testkjs:
-
-2007-08-20 John Sullivan <sullivan@apple.com>
-
- Reviewed by Adam Roben
-
- * DumpRenderTree/DumpRenderTree.m:
- (runTest):
- call new +[WebView _setUsesTestModeFocusRingColor:YES] so we get the same focus ring colors
- in layout tests on Tiger and Leopard
-
-2007-08-20 Adam Roben <aroben@apple.com>
-
- Put LayoutTests after all other ChangeLogs in commit logs
-
- We use "~" to sort LayoutTests after all the other ChangeLogs because
- "~" is the last ASCII character (other than "DEL").
-
- Reviewed by Sam.
-
- * Scripts/commit-log-editor:
-
-2007-08-20 Adam Roben <aroben@apple.com>
-
- Detect that DRT crashed even if a crash dialog is running
-
- On Windows, when DRT crashes a crash dialog commonly appears. The DRT
- process is still running at this point, so run-webkit-tests wouldn't
- detect that DRT had crashed. We now record the crash in our SIGPIPE
- handler so that we know if DRT crashed even if the crash dialog is up.
-
- Reviewed by Sam.
-
- * Scripts/run-webkit-tests:
- (sub catch_pipe): Set the crashed bit.
- (sub openDumpTool): Reset the crashed bit.
- (sub dumpToolDidCrash): Check the crashed bit.
-
-2007-08-20 Adam Roben <aroben@apple.com>
-
- Fix Bug 15026: prepare-ChangeLog should list new tests in WebCore/ChangeLog
-
- http://bugs.webkit.org/show_bug.cgi?id=15026
-
- Reviewed by David Kilzer and Darin Adler.
-
- * Scripts/prepare-ChangeLog:
- (sub isModifiedStatus): Split out from isModifiedOrAddedStatus.
- (sub isAddedStatus): Ditto.
- (sub testListForChangeLog): Added.
-
-2007-08-19 Oleg Sukhodolsky <son.two@gmail.com>
-
- Reviewed by Mark.
-
- -fixes http://bugs.webkit.org/show_bug.cgi?id=14632
-
- * Scripts/webkitdirs.pm:
- qt and gtk ports now explicitly pass debug (or release) mode to qmake.
-
-2007-08-17 Darin Adler <darin@apple.com>
-
- Reviewed by Oliver Hunt.
-
- - don't look for Apple-style localizable strings in the GTK version of WebKit
-
- * Scripts/extract-localizable-strings: Add a feature where you can pass in the
- name of subdirectories to skip.
- * Scripts/update-webkit-localizable-strings: Pass WebKit/gtk as a subdirectory
- to skip.
-
-2007-08-17 Anders Carlsson <andersca@apple.com>
-
- Build fix.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.c:
- (NPP_SetWindow):
-
-2007-08-17 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Dave Hyatt.
-
- <rdar://problem/5379040>
- REGRESSION (Tiger-Leopard): ADOBE: Safari calls NPP_SetWindow with bad values sometimes
-
- Add a way for the plug-in to dump the width and height when it gets its NPP_SetWindow call.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c:
- (pluginAllocate):
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h:
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.c:
- (NPP_New):
- (NPP_SetWindow):
-
-2007-08-16 Alice Liu <alice.liu@apple.com>
-
- Reviewed by Maciej.
-
- Fix <rdar://problem/5360135> REGRESSION (Leopard only): editing/selection/5354455-1.html is causing subsequent tests to fail
-
- * DumpRenderTree/DumpRenderTree.m:
- (createWebView):
- Create a DumpRenderTreeWindow instead of a NSWindow, now that a DumpRenderTreeWindow no longer poses as a NSWindow.
- (dumpRenderTree):
- Don't pose as a NSWindow, since when the spelling panel gets created, it creates an NSWindow which ends up creating a DumpRenderTreeWindow.
-
-2007-08-16 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam.
-
- - Added tests for regressions in other components. In this case we also need to add a skipped list for Tiger since this functionality didn't exist in 10.4.
-
- * Scripts/run-webkit-tests:
-
-2007-08-15 Timothy Hatcher <timothy@apple.com>
-
- Look for the new Xcode 3 preference key (PBXApplicationwideBuildSettings) for the global build locations.
- The value of PBXApplicationwideBuildSettings is a dictionary, so we have to pull the SYMROOT out of it.
-
- Also pass xcodebuild OBJROOT with the same value as SYMROOT if we fallback to the default WebKitBuild,
- this prevents making "build" directories in each project folder.
-
- * Scripts/webkitdirs.pm:
-
-2007-08-14 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Kevin Mccullough.
-
- Removed special case that didn't belong. (It would allow a global
- initializer to sneak into production builds, which would cause a
- system-wide performance regression on Mac OS X.)
-
- * Scripts/check-for-global-initializers:
-
-2007-08-14 Justin Garcia <justin.garcia@apple.com>
-
- Reviewed by Tim.
-
- <rdar://problem/5408255> REGRESSION: In Mail, clicking the containing element's UI closebox doesn't delete element
-
- * DumpRenderTree/EditingDelegate.m:
- (-[EditingDelegate webView:shouldShowDeleteInterfaceForElement:]): Added, return YES
- only for elements with the class needsDeletionUI.
-
-2007-08-14 David Kilzer <ddkilzer@webkit.org>
-
- Reviewed by Darin Adler.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=14965
- svn-create-patch uses deprecated tail switch
-
- * Scripts/svn-create-patch: Use 'tail -n +3' instead of 'tail +3'.
-
-2007-08-13 Sam Weinig <sam@webkit.org>
-
- Reviewed by Adam Roben.
-
- Use the cygwin specific Apache config file under cygwin.
-
- * Scripts/run-webkit-httpd:
-
-2007-08-12 Adam Roben <aroben@apple.com>
-
- Generate results for new tests in a more logical location
-
- New platform-specific tests always have their results generated right
- next to the test. New cross-platform tests will have their results
- generated a) in the cross-platform directory, if they are text-only,
- or b) in the least-specific platform directory, if they are render
- tree dumps.
-
- Reviewed by Lars.
-
- * Scripts/run-webkit-tests:
-
-2007-08-12 Adam Roben <aroben@apple.com>
-
- Print the actual directory where new results are generated.
-
- Before, we were printing an unpredictable, context-specific substring
- of the directory.
-
- Reviewed by Lars.
-
- * Scripts/run-webkit-tests:
-
-2007-08-12 Adam Roben <aroben@apple.com>
-
- Factor some common code into a stripExtension() subroutine.
-
- Reviewed by Lars.
-
- * Scripts/run-webkit-tests: Also removed some debugging output.
-
-2007-08-11 Matt Lilek <pewtermoose@gmail.com>
-
- Reviewed over and over and over by Adam Roben.
-
- Bug 14740: Hierarchical layout tests and platform organization
- http://bugs.webkit.org/show_bug.cgi?id=14740
-
- Add support for platform-specific layout tests and results.
-
- * Scripts/run-webkit-tests:
-
-2007-08-11 David Kilzer <ddkilzer@webkit.org>
-
- Reviewed by Adam.
-
- Refactored svn-create-path to use a hash-of-hashes data structure to keep
- track of changed files. In the top level hash, keys are paths to files and
- values are 'fileData' hashes with the following keys and values:
-
- - isBinary: boolean value (set to true for non-text files like images, etc.)
- - isTestFile: boolean value (set to true if file exists within a known test
- directory)
- - modificationType: string equal to one of 'addition', 'additionWithHistory',
- 'modification' or 'deletion'
- - path: string equal to the path to the file (this may seem redundant, but it
- is required to use the second-level 'fileData' hash independent of the
- top-level hash)
- - sourceFile: [optional] string equal to the path of the original file that was
- copied or moved
- - sourceRevision: [optional] string equal to the revision of the original file
- that was copied or moved
-
- * Scripts/svn-create-patch: Moved call to GetOptions() to its own statement
- that saves the return value in $result, then checks it before printing help.
- Combined sourceFiles, %testFiles, and %binaryFiles into single %diffFiles hash
- and eliminated two for() loops.
- (binarycmp): Added. Used with sort() to order non-binary files before binary
- files.
- (findBaseUrl): Added. Extracted from findSourceFileAndRevision().
- (findMimeType): Added optional second argument that takes a revision number.
- (generateDiff): Updated to take one fileData argument instead of three ($file,
- $modificationType, $isBinary).
- (generateFileList): Updated to take one hash ref argument (%diffFiles)
- instead of three (%sourceFiles, %testFiles, %binaryFiles). Populates
- %diffFiles using paths for keys and fileData hashes for values.
- (manufacturePatchForAdditionWithHistory): Updated to take one fileData
- argument.
- (pathcmp): Updated to take two fileData arguments instead of two strings.
- (testfilecmp): Added. Used with sort() to order non-test files before test
- files.
-
-2007-08-11 Darin Adler <darin@apple.com>
-
- * Scripts/run-webkit-tests: Give a different message when only the pixel test failed.
-
-2007-08-06 Nigel Tao <nigeltao@gnome.org>
-
- Reviewed by David Kilzer.
-
- Fix bug 14745: WebKitTools/Scripts/run-launcher doesn't speak --gdk
- http://bugs.webkit.org/show_bug.cgi?id=14745
-
- * Scripts/run-launcher:
- Scrub the "--gdk" out of the command line args, if given, so that
- GdkLauncher doesn't try to interpret it as a URL.
-
-2007-08-03 Adam Roben <aroben@apple.com>
-
- Catch SIGPIPE on Windows so that run-webkit-tests doesn't quit when DRT crashes
-
- Reviewed by Sam.
-
- * Scripts/run-webkit-tests: Also close ERROR when we finish running the tests.
-
-2007-08-03 Sam Weinig <sam@webkit.org>
-
- Reviewed by Darin Adler.
-
- Recursively dump all frames as text using new
- layoutTestController.dumpChildFramesAsText() function.
-
- * DumpRenderTree/DumpRenderTree.m:
- (dumpFramesAsText):
- (dump):
- (+[LayoutTestController isSelectorExcludedFromWebScript:]):
- (-[LayoutTestController dumpChildFramesAsText]):
- (runTest):
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.cpp:
- (dumpFramesAsText):
- (dump):
- (runTest):
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.h:
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/LayoutTestController.cpp:
- (dumpChildFramesAsTextCallback):
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
-
-2007-08-02 Adam Roben <aroben@apple.com>
-
- Fix fast/dom/Window/alert-undefined.html
-
- Reviewed by Sam.
-
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/WaitUntilDoneDelegate.cpp:
- (WaitUntilDoneDelegate::runJavaScriptAlertPanelWithMessage): Don't let
- Windows translate a null BSTR into "(null)"
-
-2007-08-02 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Tim.
-
- - It would help if I actually called the right function.
-
- * Drosera/DebuggerDocument.cpp:
- (DebuggerDocument::showConsole):
-
-2007-08-02 Adam Roben <aroben@apple.com>
-
- Don't delete the stderr file right after creating it
-
- * Scripts/run-webkit-tests:
-
-2007-08-01 Adam Roben <aroben@apple.com>
-
- When DRT crashes, record stderr and restart DRT
-
- This prevents a DRT crash from causing the next few hundred tests to
- "fail" because DRT is no longer running.
-
- I also changed the terminology that run-webkit-tests uses in its
- output a bit, so that crashing tests are referred to as "crashes"
- instead of "failures".
-
- Reviewed by Mark.
-
- * Scripts/run-webkit-tests: Detect a crash and record it as a tool
- failure.
- (sub openDumpTool): Use open3 so that we can access stderr.
- (sub dumpToolCrashed): Added.
- (sub printFailureMessageForTest): Added.
- (sub htmlForExpectedAndActualResults): Added.
- (sub deleteExpectedAndActualResults): Added.
- (sub recordActualResultsAndDiff): Added.
-
-2007-07-30 Darin Adler <darin@apple.com>
-
- Reviewed by Tim Hatcher.
-
- * DumpRenderTree/DumpRenderTree.m: (dump): Fix dumping for documents that include null
- characters. This turned out not to be needed for the test case that motivated me to
- do it, but it's nice to have this for the future.
-
-2007-07-30 Simon Hausmann <hausmann@kde.org>
-
- Reviewed by Lars.
-
- Link QtLauncher into $$OUTPUT_DIR/bin
-
- * Scripts/run-launcher:
-
-2007-07-27 David Kilzer <ddkilzer@apple.com>
-
- Reviewed by Geoff and Darin.
-
- Use a subroutine for validating the --skipped switch.
-
- * Scripts/run-webkit-tests:
-
-2007-07-27 Darin Adler <darin@apple.com>
-
- Reviewed by Sam.
-
- * Scripts/run-webkit-tests: Remove exception for leaks bug that has been fixed on Leopard.
-
-2007-07-27 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by Mark.
-
- Correct the path of GdkLauncher and make checkFrameworks work on OSX
- when building the Qt or Gtk+ port.
-
- * GdkLauncher/GdkLauncher.pro: Don't create an app bundle on OSX
- * Scripts/run-launcher:
- * Scripts/webkitdirs.pm: Don't add WebKit if we build the Qt or Gtk+ port.
-
-2007-07-27 Simon Hausmann <hausmann@kde.org>
-
- Done with and reviewed by Lars and Zack.
-
- Fix build-webkit for the Qt build on Windows with msvc/nmake by trying to detect the Qt mkspec and using "nmake" instead of "make" as build command.
-
- * Scripts/webkitdirs.pm:
-
-2007-07-27 Simon Hausmann <hausmann@kde.org>
-
- Done with and reviewed by Lars and Zack.
-
- For detecting the SVG support for the Qt build don't do the nm hack. Just always claim SVG support is enabled because that's what it is. The nm hack doesn't work on Windows anyway.
-
- * Scripts/webkitdirs.pm:
-
-2007-07-26 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Darin, Geoff, Sam.
-
- - <rdar://problem/5150461> Resizing the window larger than the screen causes no resize.
-
- - Added delegate methods to intercept and fake the frame location so methods like resizeTo and moveTo can change the window location without actually making the window appear on-screen.
-
- * DumpRenderTree/UIDelegate.h:
- * DumpRenderTree/UIDelegate.m:
- (-[UIDelegate webView:setFrame:]):
- (-[UIDelegate webViewFrame:]):
-
-2007-07-26 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam.
-
- - Lars wanted this check for Qt but it breaks platform specific layout tests.
-
- * Scripts/run-webkit-tests:
-
-2007-07-25 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Tim, Darin, Oliver.
-
- - <rdar://problem/5329440> REGRESSION: Clicking links with the feed:// protocol in Safari 3 does nothing
- - Change DRT to be able to intercept the requst to load so it can check if a scheme was allowed or not.
-
- * ChangeLog:
- * DumpRenderTree/DumpRenderTree.m:
- (createWebView):
- (dumpRenderTree):
- (+[LayoutTestController isSelectorExcludedFromWebScript:]):
- (+[LayoutTestController webScriptNameForSelector:]):
- (-[LayoutTestController setCustomPolicyDelegate:]):
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/FrameLoadDelegate.h:
- * DumpRenderTree/PolicyDelegate.h: Added.
- * DumpRenderTree/PolicyDelegate.m: Added.
- (-[PolicyDelegate webView:decidePolicyForNavigationAction:request:frame:decisionListener:]):
- * DumpRenderTree/ResourceLoadDelegate.h:
-
-2007-07-25 Adam Treat <treat@kde.org>
-
- Reviewed by Niko.
-
- Fix build for some reported systems.
-
- * DumpRenderTree/DumpRenderTree.qtproj/jsobjects.cpp:
-
-2007-07-23 Adam Treat <treat@kde.org>
-
- Reviewed by Nikolas.
-
- Fix qt DRT to suppress js popup alerts and log instead.
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::WebPage::javaScriptAlert):
-
-2007-07-22 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by Adam.
-
- Make the GdkLauncher use the new WebKit/Gtk API. Change webkitdirs.pm to
- honor --qmakearg for the Gdk/Gtk build as well.
-
- * GdkLauncher/main.cpp: Switch to the new API
- * Scripts/webkitdirs.pm: Allow to specify --qmakearg, e.g. to control the WEBKIT_{INC,LIB}_DIR
-
-2007-07-22 Darin Adler <darin@apple.com>
-
- * DumpRenderTree/TextInputController.m: (-[TextInputController interpretKeyEvents:withSender:]):
- Fix a leak by releasing the array used here.
-
-2007-07-22 David Kilzer <ddkilzer@webkit.org>
-
- Reviewed by Darin Adler.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=14713
- Script to update iExploder cssproperties.in file based on CSSPropertyNames.in
-
- Added script to update WebKitTools/iExploder/htdocs/cssproperties.in based on the contents
- of WebCore/css/CSSPropertyNames.in. Also updated cssproperties.in.
-
- * Scripts/update-iexploder-cssproperties: Added.
- * iExploder/htdocs/cssproperties.in: Updated by running update-iexploder-cssproperties script.
- Added new CSS3 property section and Moved box-sizing property to it.
-
-2007-07-22 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Darin Adler.
-
- http://bugs.webkit.org/show_bug.cgi?id=14710
-
- Add preliminary support for testing Input Method/WebKit behaviour and interaction
- in DRT. This provides the NSTextInput API which is most of what should be necessary
- to mimic the event sequences Input Methods trigger.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/TextInputController.h:
- * DumpRenderTree/TextInputController.m:
- (-[WebHTMLView interpretKeyEvents:]):
- (+[TextInputController isSelectorExcludedFromWebScript:]):
- (+[TextInputController webScriptNameForSelector:]):
- (-[TextInputController initWithWebView:]):
- (-[TextInputController dealloc]):
- (-[TextInputController textInput]):
- (-[TextInputController setInputMethodHandler:]):
- (-[TextInputController interpretKeyEvents:withSender:]):
-
-2007-07-20 Adam Roben <aroben@apple.com>
-
- * Scripts/commit-log-editor: Small fix to make an all-whitespace log
- message not count as an existing log.
-
-2007-07-19 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- Updated DumpRenderTree for <rdar://problem/5348384> Restore old return
- value behavior of stringByEvaluatingJavaScriptFromString
-
- * DumpRenderTree/DumpRenderTree.m:
- (testStringByEvaluatingJavaScriptFromString):
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
-
-2007-07-19 Adam Roben <aroben@apple.com>
-
- Make commit-log-editor work with git
-
- Reviewed by Sam.
-
- * Scripts/commit-log-editor: Use VCSUtils and accept a git-style
- commit message template. Also removed the unused $breakPoint variable.
-
-2007-07-19 Adam Roben <aroben@apple.com>
-
- Move generally-useful VCS code into a new VCSUtils.pm module
-
- This is in preparation for making commit-log-editor git-friendly.
-
- Reviewed by Sam.
-
- * Scripts/VCSUtils.pm: Added. Code moved here from prepare-ChangeLog.
- * Scripts/prepare-ChangeLog: Use VCSUtils.
-
-2007-07-19 Lars Knoll <lars@trolltech.com>
-
- Fix a crash on exit when running DRT against a current
- Qt 4.4 snapshot.
-
- Reviewed by Zack
-
- * DumpRenderTree/DumpRenderTree.qtproj/main.cpp:
- (main):
-
-2007-07-18 Adam Roben <aroben@apple.com>
-
- Don't try to use an SSL certificate on Windows until <rdar://problem/5345985> is fixed
-
- Reviewed by Mark.
-
- * Scripts/run-webkit-httpd:
- * Scripts/run-webkit-tests:
-
-2007-07-18 Adam Roben <aroben@apple.com>
-
- More git friendliness for prepare-ChangeLog
-
- The overall change is to remove the use of git-status and replace it
- with git-diff --name-status (which we were already using in the
- --git-commit case).
-
- This lets us respect directories specified on the command line when
- using git, just as we do for Subversion. It also speeds things up a
- bit, especially in the subdirectory case, as git-status is pretty slow.
-
- I also fixed some issues where we wouldn't detect copied files and
- would reverse the new filename and the original filename for renamed files.
-
- Reviewed by Mark.
-
- * Scripts/prepare-ChangeLog:
- (sub diffFromToString): Added.
- (sub diffCommand): Don't append the paths in the --git-commit case, as
- we should be operating on the entire commit.
- (sub statusCommand): Always use git-diff --name-status, and added an
- extra -C option to git-diff to make it find a few more copied files.
- (sub createPatchCommand): Collapsed the two git cases a bit, and added
- the extra -C option as above.
- (sub generateFileList): Remove the git-status codepath, and recognize
- file copies in the --name-status output.
- (sub isModifiedOrAddedStatus): Collapsed the status codes into one
- dictionary.
- (sub isConflictStatus): Updated the git dictionary.
- (sub statusDescription): Updated the git dictionary.
-
-2007-07-18 Timothy Hatcher <timothy@apple.com>
-
- * Scripts/build-drosera: Update where we look for the Xcode project.
-
-2007-07-18 Adam Treat <treat@kde.org>
-
- Reviewed by bdash.
-
- Use the old wording for Safari.
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
-
-2007-07-18 Adam Treat <treat@kde.org>
-
- Reviewed by bdash.
-
- Add convenience script for launching test apps for Qt and Gdk ports.
- Change the build-webkit script accordingly.
-
- * Scripts/build-webkit:
- * Scripts/run-launcher: Added.
- * Scripts/webkitdirs.pm:
-
-2007-07-18 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Adam.
-
- Make the Page with the now required InspectorClient.
-
- * GdkLauncher/main.cpp:
- (main):
-
-2007-07-18 Timothy Hatcher <timothy@apple.com>
-
- Remove the redundant copies of Makefile.shared and the new Makefile.Drosera.
- Now included the main Makefile.shared and change the SCRIPTS_PATH variable as needed.
-
- * Drosera/Makefile: Added.
- * Drosera/mac/Makefile:
- * DumpRenderTree/Makefile:
- * Makefile:
- * Makefile.Drosera: Removed.
- * Makefile.shared: Removed.
-
-2007-07-18 Timothy Hatcher <timothy@apple.com>
-
- The console log was 20px down from the top for no reason, move it up.
-
- * Drosera/console.css:
-
-2007-07-18 Timothy Hatcher <timothy@apple.com>
-
- Use contentDocument to get the source view's iframe document.
- Also adds a null/undefined check for localVariableNames.
-
- * Drosera/debugger.js:
-
-2007-07-18 Lars Knoll <lars@trolltech.com>
-
- We really don't want to compare non text only tests to the
- Mac results if we don't have a result for Qt, as this would
- give a failure and not a notification that the test is new.
-
- Reviewed by Zack
-
- * Scripts/run-webkit-tests:
-
-2007-07-18 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Zack & Simon
-
- Adjust to changed API in QWebFrame
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
-
-2007-07-18 Mark Rowe <mrowe@apple.com>
-
- Update path to the Drosera Xcode project now that it has moved into a subdirectory.
-
- * BuildSlaveSupport/build-launcher-app:
-
-2007-07-17 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Antti Koivisto.
-
- Added watchdog timer to waitUntilDone to prevent a run-away test from
- hanging the test harness.
-
- * DumpRenderTree/DumpRenderTree.m:
- (dump):
- (-[LayoutTestController waitUntilDone]):
- (-[LayoutTestController waitUntilDoneWatchdogFired]):
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
-
-2007-07-17 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam.
-
- - Implemented cross-platform code for functions calling into the JavaScript.
-
- * Drosera/DebuggerDocument.cpp:
- (DebuggerDocument::callAsFunction):
- (DebuggerDocument::pauseJS):
- (DebuggerDocument::resumeJS):
- (DebuggerDocument::stepIntoJS):
- (DebuggerDocument::stepOverJS):
- (DebuggerDocument::stepOutJS):
- (DebuggerDocument::showConsoleJS):
- (DebuggerDocument::closeCurrentFileJS):
- (DebuggerDocument::updateFileSource):
- (DebuggerDocument::didParseScript):
- (DebuggerDocument::willExecuteStatement):
- (DebuggerDocument::didEnterCallFrame):
- (DebuggerDocument::willLeaveCallFrame):
- (DebuggerDocument::exceptionWasRaised):
- * Drosera/DebuggerDocument.h:
- * Drosera/mac/DebuggerDocumentMac.mm:
- (-[DebuggerDocumentMac pause:]):
- (-[DebuggerDocumentMac resume:]):
- (-[DebuggerDocumentMac stepInto:]):
- (-[DebuggerDocumentMac stepOver:]):
- (-[DebuggerDocumentMac stepOut:]):
- (-[DebuggerDocumentMac showConsole:]):
- (-[DebuggerDocumentMac closeCurrentFile:]):
- (-[DebuggerDocumentMac webView:didLoadMainResourceForDataSource:]):
- (-[DebuggerDocumentMac webView:didParseSource:baseLineNumber:fromURL:sourceId:forWebFrame:]):
- (-[DebuggerDocumentMac webView:didEnterCallFrame:sourceId:line:forWebFrame:]):
- (-[DebuggerDocumentMac webView:willExecuteStatement:sourceId:line:forWebFrame:]):
- (-[DebuggerDocumentMac webView:willLeaveCallFrame:sourceId:line:forWebFrame:]):
- (-[DebuggerDocumentMac webView:exceptionWasRaised:sourceId:line:forWebFrame:]):
-
-2007-07-16 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Darin Adler.
-
- - Continued x-platform modifications.
-
- * Drosera/win/DebuggerDocumentWin.cpp: Copied from Drosera/win/DebuggerObjectCallbacks.cpp.
- * Drosera/win/DebuggerDocumentWin.h: Copied from Drosera/win/DebuggerObjectCallbacks.h.
- * Drosera/win/DebuggerObjectCallbacks.cpp: Removed.
- * Drosera/win/DebuggerObjectCallbacks.h: Removed.
- * Drosera/win/Drosera.cpp:
- * Drosera/win/Drosera.vcproj/Drosera.vcproj:
- * Drosera/win/stdafx.cpp: Removed.
- * Drosera/win/stdafx.h: Removed.
-
-2007-07-16 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Sam.
-
- - Modified files to use cross-platform code.
-
- * Drosera/DebuggerDocument.cpp: Added.
- (DebuggerDocument::breakpointEditorHTML):
- (DebuggerDocument::isPaused):
- (DebuggerDocument::pause):
- (DebuggerDocument::resume):
- (DebuggerDocument::stepInto):
- (DebuggerDocument::evaluateScript):
- (DebuggerDocument::currentFunctionStack):
- (DebuggerDocument::localScopeVariableNamesForCallFrame):
- (DebuggerDocument::valueForScopeVariableNamed):
- * Drosera/DebuggerDocument.h: Added.
- (DebuggerDocument::DebuggerDocument):
- * Drosera/config.h: Added.
- * Drosera/mac/DebuggerApplication.mm:
- (-[DebuggerApplication attach:]):
- * Drosera/mac/DebuggerDocument.h: Removed.
- * Drosera/mac/DebuggerDocument.mm: Removed.
- * Drosera/mac/DebuggerDocumentMac.h: Copied from Drosera/mac/DebuggerDocument.h.
- * Drosera/mac/DebuggerDocumentMac.mm: Copied from Drosera/mac/DebuggerDocument.mm.
- (-[DebuggerDocumentMac initWithServerName:]):
- (-[DebuggerDocumentMac dealloc]):
- (-[DebuggerDocumentMac breakpointEditorHTML]):
- (-[DebuggerDocumentMac isPaused]):
- (-[DebuggerDocumentMac pause]):
- (-[DebuggerDocumentMac resume]):
- * Drosera/mac/Drosera.xcodeproj/project.pbxproj:
- * Drosera/win/DebuggerApplication.cpp:
- * Drosera/win/DebuggerObjectCallbacks.cpp:
- (breakpointEditorHTMLCallback):
- (currentFunctionStackCallback):
- (evaluateScript_inCallFrame_Callback):
- (isPausedCallback):
- (localScopeVariableNamesForCallFrame_Callback):
- (pauseCallback):
- (resumeCallback):
- (stepIntoCallback):
- (valueForScopeVariableNamed_inCallFrame_Callback):
- (staticFunctions):
- * Drosera/win/Drosera.cpp:
- * Drosera/win/DroseraPrefix.cpp: Added.
- * Drosera/win/DroseraPrefix.h: Added.
-
-2007-07-16 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam, Sam and Tim.
-
- - Moving files to prepare for cross-platform architecture.
-
- * Drosera/DebuggerApplication.h: Removed.
- * Drosera/DebuggerApplication.m: Removed.
- * Drosera/DebuggerDocument.h: Removed.
- * Drosera/DebuggerDocument.m: Removed.
- * Drosera/Drosera.pch: Removed.
- * Drosera/Drosera.xcodeproj: Removed.
- * Drosera/Drosera.xcodeproj/project.pbxproj: Removed.
- * Drosera/Info.plist: Removed.
- * Drosera/LauncherInfo.plist: Removed.
- * Drosera/Makefile: Removed.
- * Drosera/launcher.m: Removed.
- * Drosera/mac: Added.
- * Drosera/mac/DebuggerApplication.h: Copied from Drosera/DebuggerApplication.h.
- * Drosera/mac/DebuggerApplication.mm: Copied from Drosera/DebuggerApplication.m.
- * Drosera/mac/DebuggerDocument.h: Copied from Drosera/DebuggerDocument.h.
- * Drosera/mac/DebuggerDocument.mm: Copied from Drosera/DebuggerDocument.m.
- * Drosera/mac/Drosera.pch: Copied from Drosera/Drosera.pch.
- * Drosera/mac/Drosera.xcodeproj: Copied from Drosera/Drosera.xcodeproj.
- * Drosera/mac/Drosera.xcodeproj/project.pbxproj:
- * Drosera/mac/Info.plist: Copied from Drosera/Info.plist.
- * Drosera/mac/LauncherInfo.plist: Copied from Drosera/LauncherInfo.plist.
- * Drosera/mac/Makefile: Copied from Drosera/Makefile.
- * Drosera/mac/launcher.m: Copied from Drosera/launcher.m.
- * Drosera/mac/main.m: Copied from Drosera/main.m.
- * Drosera/main.m: Removed.
- * Makefile:
- * Makefile.Drosera: Added.
-
-2007-07-15 Mark Rowe <mrowe@apple.com>
-
- * Scripts/generate-coverage-data: Don't fail if WebKitBuild directory does not exist.
-
-2007-07-13 Sam Weinig <sam@webkit.org>
-
- Reviewed by Geoff Garen.
-
- Add support for running SSL tests over HTTPS.
-
- * DumpRenderTree/DumpRenderTree.m:
- (runTest):
- * DumpRenderTree/FrameLoadDelegate.m:
- (-[FrameLoadDelegate webView:didFailProvisionalLoadWithError:forFrame:]):
- * Scripts/run-webkit-httpd:
- * Scripts/run-webkit-tests:
-
-2007-07-13 David Kilzer <ddkilzer@apple.com>
-
- Reviewed by Darin Adler.
-
- Added support for -h|--help argument and verify that all command line arguments parse
- correctly.
-
- * Scripts/run-webkit-httpd:
-
-2007-07-12 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Ada.
-
- Remove leak suppression for xmlDocPtrForString now that <rdar://problem/5329877> is fixed.
-
- * Scripts/run-webkit-tests:
-
-2007-07-12 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Made the leaks tests pass on Leopard.
-
- * Scripts/run-webkit-tests: Added some leaks to exclude on Leopard.
- * Scripts/run-leaks: Updated parser for slight change in text output.
-
-2007-07-11 David Kilzer <ddkilzer@apple.com>
-
- Reviewed by Maciej.
-
- Update the iExploder list of CSS properties after box-sizing was renamed to
- -webkit-box-sizing in r21026 to fix <rdar://problem/4667227>.
-
- * iExploder/htdocs/cssproperties.in: Added -webkit-box-sizing. Both box-sizing and
- -moz-box-sizing remain.
-
-2007-07-10 Darin Adler <darin@apple.com>
-
- * Scripts/run-webkit-tests: Add an ignore item for a leak in Tiger's
- Foundation's multipart/mixed-replace support -- I already verified that
- the bug has been fixed.
-
-2007-07-10 Alice Liu <alice.liu@apple.com>
-
- rubber stamped by Maciej.
-
- fixed <rdar://5137972> editing/selection/editable-links.html fails on Windows
-
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.cpp:
- (initializePreferences):
- set editable link behavior to match Mac DRT.
-
-2007-07-10 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Tim Hatcher.
-
- Ignore Page.o in debug builds because it now has a static PageCounter
- object.
-
- * Scripts/check-for-global-initializers:
-
-2007-07-09 Darin Adler <darin@apple.com>
-
- * Scripts/run-webkit-tests: Moved leaks from Tiger that are marked as fixed in Leopard to a Tiger-only section.
-
-2007-07-09 Alice Liu <alice.liu@apple.com>
-
- Reviewed by Adam Roben.
-
- setting DOM Paste Allowed Pref
-
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.cpp:
- (initializePreferences):
-
-2007-07-05 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Adam, Sam, and Ada.
-
- - Inital checkin of Drosera for Win. This isn't pretty and doesn't connect to Safari but debug builds and runs.
-
- * Drosera/Images/Drosera.ico: Added.
- * Drosera/Images/small.ico: Added.
- * Drosera/win: Added.
- * Drosera/win/BaseDelegate.h: Added.
- (BaseDelegate::QueryInterface):
- (BaseDelegate::didFinishLoadForFrame):
- (BaseDelegate::windowScriptObjectAvailable):
- (BaseDelegate::didStartProvisionalLoadForFrame):
- (BaseDelegate::didReceiveServerRedirectForProvisionalLoadForFrame):
- (BaseDelegate::didFailProvisionalLoadWithError):
- (BaseDelegate::didCommitLoadForFrame):
- (BaseDelegate::didReceiveTitle):
- (BaseDelegate::didReceiveIcon):
- (BaseDelegate::didFailLoadWithError):
- (BaseDelegate::didChangeLocationWithinPageForFrame):
- (BaseDelegate::willPerformClientRedirectToURL):
- (BaseDelegate::didCancelClientRedirectForFrame):
- (BaseDelegate::willCloseFrame):
- (BaseDelegate::createWebViewWithRequest):
- (BaseDelegate::webViewShow):
- (BaseDelegate::webViewClose):
- (BaseDelegate::webViewFocus):
- (BaseDelegate::webViewUnfocus):
- (BaseDelegate::webViewFirstResponder):
- (BaseDelegate::makeFirstResponder):
- (BaseDelegate::setStatusText):
- (BaseDelegate::webViewStatusText):
- (BaseDelegate::webViewAreToolbarsVisible):
- (BaseDelegate::setToolbarsVisible):
- (BaseDelegate::webViewIsStatusBarVisible):
- (BaseDelegate::setStatusBarVisible):
- (BaseDelegate::webViewIsResizable):
- (BaseDelegate::setResizable):
- (BaseDelegate::setFrame):
- (BaseDelegate::webViewFrame):
- (BaseDelegate::setContentRect):
- (BaseDelegate::webViewContentRect):
- (BaseDelegate::runJavaScriptAlertPanelWithMessage):
- (BaseDelegate::runJavaScriptConfirmPanelWithMessage):
- (BaseDelegate::runJavaScriptTextInputPanelWithPrompt):
- (BaseDelegate::runBeforeUnloadConfirmPanelWithMessage):
- (BaseDelegate::runOpenPanelForFileButtonWithResultListener):
- (BaseDelegate::mouseDidMoveOverElement):
- (BaseDelegate::contextMenuItemsForElement):
- (BaseDelegate::validateUserInterfaceItem):
- (BaseDelegate::shouldPerformAction):
- (BaseDelegate::dragDestinationActionMaskForDraggingInfo):
- (BaseDelegate::willPerformDragDestinationAction):
- (BaseDelegate::dragSourceActionMaskForPoint):
- (BaseDelegate::willPerformDragSourceAction):
- (BaseDelegate::contextMenuItemSelected):
- (BaseDelegate::hasCustomMenuImplementation):
- (BaseDelegate::trackCustomPopupMenu):
- (BaseDelegate::measureCustomMenuItem):
- (BaseDelegate::drawCustomMenuItem):
- (BaseDelegate::addCustomMenuDrawingData):
- (BaseDelegate::cleanUpCustomMenuDrawingData):
- (BaseDelegate::canTakeFocus):
- (BaseDelegate::takeFocus):
- (BaseDelegate::registerUndoWithTarget):
- (BaseDelegate::removeAllActionsWithTarget):
- (BaseDelegate::setActionTitle):
- (BaseDelegate::undo):
- (BaseDelegate::redo):
- (BaseDelegate::canUndo):
- (BaseDelegate::canRedo):
- * Drosera/win/DebuggerApplication.cpp: Added.
- (DebuggerApplication::serverLoaded):
- (DebuggerApplication::serverUnloaded):
- (DebuggerApplication::attach):
- (DebuggerApplication::numberOfRowsInTableView):
- (DebuggerApplication::tableView):
- * Drosera/win/DebuggerApplication.h: Added.
- (DebuggerApplication::DebuggerApplication):
- (DebuggerApplication::knownServers):
- * Drosera/win/DebuggerObjectCallbacks.cpp: Added.
- (breakpointEditorHTMLCallback):
- (currentFunctionStackCallback):
- (doubleClickMillisecondsCallback):
- (evaluateScript_inCallFrame_Callback):
- (isPausedCallback):
- (localScopeVariableNamesForCallFrame_Callback):
- (pauseCallback):
- (resumeCallback):
- (stepIntoCallback):
- (valueForScopeVariableNamed_inCallFrame_Callback):
- (staticFunctions):
- * Drosera/win/DebuggerObjectCallbacks.h: Added.
- * Drosera/win/Drosera.cpp: Added.
- (_tWinMain):
- (RegisterDroseraClass):
- (DroseraWndProc):
- (About):
- (Attach):
- (Drosera::Drosera):
- (Drosera::initUI):
- (Drosera::QueryInterface):
- (Drosera::AddRef):
- (Drosera::Release):
- (Drosera::didFinishLoadForFrame):
- (getDroseraJSClass):
- (Drosera::windowScriptObjectAvailable):
- (Drosera::webViewClose):
- (Drosera::validateUserInterfaceItem):
- (Drosera::runJavaScriptAlertPanelWithMessage):
- (Drosera::onSize):
- * Drosera/win/Drosera.h: Added.
- (Drosera::webViewLoaded):
- * Drosera/win/Drosera.vcproj: Added.
- * Drosera/win/Drosera.vcproj/Drosera.rc: Added.
- * Drosera/win/Drosera.vcproj/Drosera.vcproj: Added.
- * Drosera/win/Drosera.vcproj/debug.vsprops: Added.
- * Drosera/win/Drosera.vcproj/release.vsprops: Added.
- * Drosera/win/HelperFunctions.h: Added.
- (CFStringToBSTR):
- * Drosera/win/Info.plist: Added.
- * Drosera/win/resource.h: Added.
- * Drosera/win/stdafx.cpp: Added.
- * Drosera/win/stdafx.h: Added.
-
-2007-07-09 Adam Treat <adam@staikos.net>
-
- Reviewed by George Staikos.
-
- Convert QWebFrame from a QFrame to a pure QObject to eliminate all
- traces of widgets.
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
-
-2007-07-09 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Oliver.
-
- <rdar://problem/4954319>
- Acrobat 7 / Safari crash: CrashTracer: 99 crashes in Safari at
- com.apple.WebCore: WebCore::NetscapePlugInStreamLoader::isDone const + 0
-
- If the src url is "data:application/x-webkit-test-netscape,returnerrorfromnewstream",
- return an error from NPP_NewStream.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c:
- (pluginAllocate):
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h:
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.c:
- (NPP_New):
- (NPP_NewStream):
-
-2007-07-08 Mark Rowe <mrowe@apple.com>
-
- Change name from WebKit/Qt to WebKit.
-
- * CodeCoverage/regenerate-coverage-display:
-
-2007-07-08 Rob Buis <buis@kde.org>
-
- Reviewed by Mitz.
-
- http://bugs.webkit.org/show_bug.cgi?id=14209
- DRT should be able to deal with text zoom
-
- Allow increasing/decreasing text zoom using eventSender.
-
- * DumpRenderTree/DumpRenderTree.m:
- (runTest):
- * DumpRenderTree/EventSendingController.m:
- (+[EventSendingController initialize]):
- (+[EventSendingController isSelectorExcludedFromWebScript:]):
- (-[EventSendingController textZoomIn]):
- (-[EventSendingController textZoomOut]):
-
-2007-07-07 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver.
-
- * DumpRenderTree/DumpRenderTree.m:
- (convertWebResourceResponseToDictionary): Fix leak of two NSMutableString's introduced in r24076.
-
-2007-07-06 Anders Carlsson <andersca@apple.com>
-
- Reviewed by David Kilzer.
-
- <rdar://problem/5313502>
- Many webarchive tests fail due to different NSURLResponse serialization on Leopard
-
- Don't dump the serialized form of NSURLResponse. Instead, create a dictionary with the
- response's attributes. Also change the JavaScript MIME type to be "text/javascript".
-
- * DumpRenderTree/DumpRenderTree.m:
- (convertMIMEType):
- (convertWebResourceDataToString):
- (convertWebResourceResponseToDictionary):
- (serializeWebArchiveToXML):
-
-2007-07-06 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Oliver.
-
- Initialize the NSMutableAttributedString directly instead of creating
- a NSAttributedString first.
-
- * DumpRenderTree/TextInputController.m:
- (-[TextInputController attributedStringWithString:]):
-
-2007-07-06 Anders Carlsson <andersca@apple.com>
-
- Reviewed by David Kilzer.
-
- Replace "Apple Computer" with "Apple" in the DTD declaration.
-
- * DumpRenderTree/DumpRenderTree.m:
- (serializeWebArchiveToXML):
-
-2007-07-06 Adam Treat <adam@staikos.net>
-
- Reviewed by George Staikos.
-
- Adjust for conversion of QWebFrame to a QFrame from a scroll area.
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
-
-2007-07-06 George Staikos <staikos@kde.org>
-
- Reviewed by Anders.
-
- Allow passing of additional arguments to qmake with --qmakearg=
-
- * Scripts/webkitdirs.pm:
-
-2007-07-05 George Staikos <staikos@kde.org>
-
- Reviewed by Maciej.
-
- Add --qt and --qmake= to force Qt even when QTDIR isn't present and to
- give a path to a specific qmake binary. Both are optional.
-
- * Scripts/webkitdirs.pm:
-
-2007-07-05 Adam Roben <aroben@apple.com>
-
- Warn about tests in the Skipped file that succeeded
-
- * Scripts/run-webkit-tests:
-
-2007-07-05 Adam Roben <aroben@apple.com>
-
- Removed unused install-win-extras script
-
- Rubberstamped by Mark.
-
- * Scripts/install-win-extras: Removed.
-
-2007-07-05 Adam Roben <aroben@apple.com>
-
- Show the test's extension in the results page
-
- * Scripts/run-webkit-tests:
-
-2007-07-05 Adam Roben <aroben@apple.com>
-
- Add more options for controlling the interpretation of the Skipped file
-
- Reviewed by Mark.
-
- * Scripts/run-webkit-tests:
-
-2007-07-04 Adam Roben <aroben@apple.com>
-
- Add --skipped-only option to run-webkit-tests
-
- When this option is specified, only those tests listed in the Skipped
- file are run.
-
- Reviewed by Mark.
-
- * Scripts/run-webkit-tests:
-
-2007-07-04 Adam Roben <aroben@apple.com>
-
- Clean up/alphabetize the run-webkit-tests help message
-
- * Scripts/run-webkit-tests:
-
-2007-07-04 Adam Roben <aroben@apple.com>
-
- Enable a Leopard-specific Skipped list.
-
- Reviewed by Mark.
-
- * Scripts/run-webkit-tests: Check for Leopard.
- * Scripts/webkitdirs.pm: Added isTiger/isLeopard.
-
-2007-07-03 Adam Roben <aroben@apple.com>
-
- Fixed update-webkit-localizable-strings to work with new extract-localizable-strings
-
- Got rid of extract-webkit-localizable-strings because it was trying to
- do update-webkit-localizable-strings' job.
-
- Rubberstamped by Darin Adler.
-
- * Scripts/extract-webkit-localizable-strings: Removed.
- * Scripts/update-webkit-localizable-strings: Renamed from
- extract-localizable-strings.
-
-2007-07-03 Adam Roben <aroben@apple.com>
-
- Modify scripts to keep Mac/Windows localized strings in sync
-
- extract-webkit-localizable-strings now handles extracting strings from
- both the Mac and Windows WebKit ports and updating their respective
- Localizable.strings files. extract-localizable-strings is now really a
- piece of plumbing rather than a top-level tool.
-
- Reviewed by Darin and Anders.
-
- * Scripts/extract-localizable-strings: Changed to handle multiple
- directories.
- * Scripts/extract-webkit-localizable-strings: Added.
-
-2007-07-03 Adele Peterson <adele@apple.com>
-
- Reviewed by Darin Adler.
-
- Extended DumpRenderTree to test encoding and decoding host names.
-
- * DumpRenderTree/DumpRenderTree.m:
- (+[LayoutTestController isSelectorExcludedFromWebScript:]): Added cases for encodeHostName and decodeHostName.
- (+[LayoutTestController webScriptNameForSelector:]): ditto.
- (-[LayoutTestController decodeHostName:]): Added.
- (-[LayoutTestController encodeHostName:]): Added.
-
-2007-07-03 Sam Weinig <sam@webkit.org>
-
- Reviewed by Darin Adler.
-
- Eleventh round of fixes for implicit 64-32 bit conversion errors.
- <rdar://problem/5292262>
-
- Add functions to test long long and unsigned long long.
-
- * DumpRenderTree/DumpRenderTree.m:
- (+[LayoutTestController isSelectorExcludedFromWebScript:]):
- (+[LayoutTestController webScriptNameForSelector:]):
- (-[LayoutTestController objCLongLongRoundTrip:]):
- (-[LayoutTestController objCUnsignedLongLongRoundTrip:]):
-
-2007-07-01 Adam Roben <aroben@apple.com>
-
- Fix some paths to make http tests work again on Windows
-
- Rubberstamped by Sam.
-
- * Scripts/run-webkit-tests:
-
-2007-06-28 Stephanie <slewis@apple.com>
-
- Reviewed by Adam,
-
- Allow tests to use pre-built roots instead of building the tests.
-
- * Scripts/run-javascriptcore-tests: added --root option
- * Scripts/run-webkit-tests: added --root option
- * Scripts/webkitdirs.pm: added support for using a root
-
-2007-06-25 Adam Roben <aroben@apple.com>
-
- Fix Bug 14405: LayoutTestResults/qt should be in LayoutTests/qt
- http://bugs.webkit.org/show_bug.cgi?id=14405
-
- Reviewed by Anders.
-
- * Scripts/run-webkit-tests:
-
-2007-06-25 Adam Roben <aroben@apple.com>
-
- Enable running the regression tests on Windows.
-
- These changes were developed alongside the Windows WebKit port and
- have been well tested.
-
- Rubberstamped by Sam.
-
- * Scripts/run-webkit-tests:
-
-2007-06-25 Adam Roben <aroben@apple.com>
-
- Fix Bug 14403: prepare-ChangeLog --git-commit doesn't support --diff
- http://bugs.webkit.org/show_bug.cgi?id=14403
-
- Reviewed by Mark Rowe.
-
- * Scripts/prepare-ChangeLog: Don't spew to stdout, use stderr instead.
- (sub createPatchCommand): Generate a correct diff in the $gitCommit
- case.
-
-2007-06-25 Adam Roben <aroben@apple.com>
-
- Land pdevenv and supporting scripts/programs
-
- pdevenv is a script that will open an instance of Visual Studio that
- can compile multiple files in parallel, similar to make -jN. It uses
- the following scripts/programs to accomplish this:
-
- CLWrapper: Compiles to vcbin/cl.exe. Calls Scripts/parallelcl.
-
- parallelcl: Actually performs the parallel compilation by forking
- multiple instances of the Microsoft-supplied cl.exe.
-
- MIDLWrapper: Compiles to vcbin/midl.exe. Calls through to the
- Microsoft-supplied midl.exe. This avoids having to invoke perl for
- every invocation of midl.exe, which would be quite slow.
-
- Rubberstamped by Sam.
-
- * CLWrapper/CLWrapper.cpp: Added.
- (wmain):
- * CLWrapper/CLWrapper.sln: Added.
- * CLWrapper/CLWrapper.vcproj: Added.
- * MIDLWrapper/MIDLWrapper.cpp: Added.
- (wmain):
- * MIDLWrapper/MIDLWrapper.sln: Added.
- * MIDLWrapper/MIDLWrapper.vcproj: Added.
- * Scripts/parallelcl: Added.
- * Scripts/pdevenv: Added.
- * vcbin/cl.exe: Added.
- * vcbin/midl.exe: Added.
-
-2007-06-23 Adam Roben <aroben@apple.com>
-
- Land num-cpus for the Windows build.
-
- Reviewed by Mark Rowe.
-
- * Scripts/num-cpus: Added.
-
-2007-06-22 Simon Hausmann <hausmann@kde.org>
-
- Reviewed by Adam Roben.
-
- Added support for populating ChangeLog entries from given git commits
- using --git-commit=<commitish> and --git-reviewer=<name>.
-
- * Scripts/prepare-ChangeLog:
-
-2007-06-22 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Anders.
-
- <rdar://problem/5228168> Leopard regression test failures: fast/applescript
-
- There were some changes in Leopard that made our test output inconsistent with Tiger.
-
- NSAppleEventDescriptor no longer returns a stringValue for typeType descriptors
- on Leopard, so output our own readable string for typeType descriptors.
-
- NSArray's description also changed on Leopard to output more whitespace, so
- make our own string representation for typeAEList descriptors. This requires
- a special case typeUnicodeText too, so the output is a quoted string.
-
- * DumpRenderTree/AppleScriptController.m:
- (convertAEDescToObject):
-
-2007-06-21 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Geoff.
-
- Don't dump didFirstLayout callbacks, they happen intermittently.
-
- * DumpRenderTree/FrameLoadDelegate.m:
-
-2007-06-21 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Simon.
-
- look for the Qt library in the installed location
-
- * Scripts/webkitdirs.pm:
-
-2007-06-20 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Adele Peterson, Oliver Hunt, Anders Carlsson.
-
- Added tests for stringByEvaluatingJavaScriptFromString.
-
- * DumpRenderTree/DumpRenderTree.m:
- (testStringByEvaluatingJavaScriptFromString):
- (dumpRenderTree):
-
-2007-06-19 Andrew Wellington <proton@wiretapped.net>
-
- Reviewed by Mark Rowe.
-
- Support applications with spaces or special characters in their names
-
- * Scripts/run-webkit-app:
-
-2007-06-18 Anders Carlsson <andersca@apple.com>
-
- Reviewed by John Sullivan.
-
- Assert that the frame has a dataSource.
-
- * DumpRenderTree/FrameLoadDelegate.m:
- (-[FrameLoadDelegate webView:didFinishLoadForFrame:]):
-
-2007-06-18 Adam Treat <adam@staikos.net>
-
- Reviewed by George.
-
- Reflect the library name change.
-
- * Scripts/webkitdirs.pm:
-
-2007-06-18 Jake Helfert <jake@jakeonthenet.com>
-
- Reviewed by Adam.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=14154
- Spinneret doesn't build against the new Win32 port.
-
- * Spinneret/Spinneret/Spinneret.cpp:
- (_tWinMain):
- -Changed IWebViewExt to IWebViewPrivate
- -Changed Co[Un]initialize to Ole[Un]initialize because WebKit now calls
- the WIN32 function RegisterDragDrop which requires the Ole* calls.
- * Spinneret/Spinneret/Spinneret.h:
- (SpinneretWebHost::didReceiveIcon): Updated method signature.
- (SpinneretWebHost::willPerformClientRedirectToURL): Updated method signature.
- (SpinneretWebHost::windowScriptObjectAvailable): Updated method signature.
-
-2007-06-14 Sam Weinig <sam@webkit.org>
-
- Reviewed by Brady.
-
- Update set of files to download for cygwin to include
- diffutils and regenerate the zip file. This should fix
- an issue on vista where svn-create-patch doesn't work.
-
- * CygwinDownloader/cygwin-downloader.py:
- * CygwinDownloader/cygwin-downloader.zip:
-
-2007-06-14 Mark Rowe <mrowe@apple.com>
-
- Update script to match new nightly.webkit.org infrastructure.
-
- * BuildSlaveSupport/build-launcher-dmg: Upload to the live web server, not the caching proxy. Let the server know it's a Mac build.
-
-2007-06-12 Adam Roben <aroben@apple.com>
-
- Land CygwinDownloader.
-
- Rubberstamped by Hyatt.
-
- * CygwinDownloader/cygwin-downloader.py: Added.
- * CygwinDownloader/cygwin-downloader.zip: Added.
- * CygwinDownloader/make-zip.sh: Added.
- * CygwinDownloader/setup.py: Added.
-
-2007-06-06 Vladimir Olexa <vladimir.olexa@gmail.com>
-
- Reviewed by Mark Rowe.
-
- Fixes Bug 13996: http://bugs.webkit.org/show_bug.cgi?id=13996
- [Drosera] Items in the file list don't get un-highlighted when
- files are selected from the file drop-down
-
- * Drosera/debugger.js: currentFile was getting modified before file in the file
- browser got un-highlighted. Changed the order in which the functions execute.
-
-2007-06-06 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Maciej.
-
- http://bugs.webkit.org/show_bug.cgi?id=13988
- Bug 13988: Colon in file path crashes WebKit Nightly
-
- The WebKit launcher makes use of two `dyld' variables to coerce Safari into running with
- the bundled WebKit framework. Both of these variables are interpreted as containing a
- colon-delimited list of paths. There is no escaping mechanism defined, so if we detect
- a path with a colon in it we need to bail out to prevent `dyld' from throwing an error
- when we execute Safari.
-
- * WebKitLauncher/main.m:
- (main):
-
-2007-06-05 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Anders.
-
- * WebKitLauncher/Info.plist: Update CFBundleGetInfoString, and add CFBundleShortVersionString.
-
-2007-05-30 Alp Toker <alp.toker@collabora.co.uk>
-
- Reviewed by Brady.
-
- Enable logging in the Gdk port.
- http://bugs.webkit.org/show_bug.cgi?id=13936
-
- * GdkLauncher/main.cpp:
- (main):
-
-2007-05-29 Holger Freyther <zecke@selfish.org>
-
- Reviewed by Anders.
-
- Create a GtkLayout and pass it to the FrameView/ScrollView. Embed the GtkLayout into a GtkScrolledWindow
- to provide ScrollBars for the FrameView.
-
- * GdkLauncher/main.cpp:
- (registerRenderingAreaEvents):
- (layout_realize_callback): Only after realization we can access the GtkLayout::bin_window
- (frameResizeCallback): Inform the ScrollView about its new viewport size, and ask the FrameView to adjust
- (main):
-
-2007-05-29 David Kilzer <ddkilzer@webkit.org>
-
- Reviewed by Darin Adler.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=13901
- run-pageloadtest does not obey testName on command-line
-
- * Scripts/run-pageloadtest: Grab $testName from the command-line if it is present,
- otherwise default to "svg". Added dummy check to make sure $testName.pltsuite
- exists.
-
-2007-05-29 David Kilzer <ddkilzer@webkit.org>
-
- Reviewed by Darin Adler.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=13900
- svnStatus($) subroutine in svn-[un]apply does not work properly with directories
-
- This patch also fixes an instance of the "broken pipe" warning that happened when
- a directory contained modified files that were not part of an applied or unapplied
- patch.
-
- * Scripts/svn-apply:
- (svnStatus($)): If we're trying to get status on a directory (instead of a file),
- make sure we actually get the directory's status (if it has one), not the first
- file's status reported within the directory. Fix "broken pipe" warnings by
- reading all of the output from the SVN filehandle before closing it.
- * Scripts/svn-unapply:
- (svnStatus($)): Ditto.
-
-2007-05-28 David Kilzer <ddkilzer@webkit.org>
-
- Reviewed by Darin Adler.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=10342
- prepare-ChangeLog only shows removed files but not added files when files are moved
- - fix prepare-ChangeLog part of http://bugs.webkit.org/show_bug.cgi?id=13408
- prepare-ChangeLog and svn-create-patch don't show replaced files
-
- Switched method used to find list of changed files from "diff" to "status". This
- makes added and replaced files with history appear in the changed file list for svn.
- Added check for "+" in output from the svn status command to detect file history, and
- handle it in the generateFileList(\@\@\%) and in statusDescription($$) subroutines.
-
- * Scripts/prepare-ChangeLog:
- (diffCommand(@)): Switched argument from hash ref to array to match statusCommand(@).
- (statusCommand(@)): Switched argument from array ref to array. Necessary to use
- the output of "keys $paths" without creating a temporary array variable.
- (findOriginalFileFromSvn($)): Added. Based on findSourceFileAndRevision($)
- subroutine in svn-create-patch.
- (generateFileList(\@\@\%)): Added. Extracted from main body of script. Runs status
- command using command-line arguments instead of list of changed files from the diff
- command. Changed svn regex to only accept file statuses that we know how to handle.
- Identify original file when an added/replaced status with history is present.
- (statusDescription($$)): Handled added/replaced statuses with history. Added
- fall-through return statement.
-
-2007-05-28 Holger Freyther <zecke@selfish.org>
-
- Reviewed by Mark Rowe.
-
- Add scripts and data to generate a coverage data for WebKit.
-
- * CodeCoverage/README: Added.
- * CodeCoverage/amber.png: Added.
- * CodeCoverage/cov.py: Added.
- * CodeCoverage/emerald.png: Added.
- * CodeCoverage/gcov.css: Added.
- * CodeCoverage/glass.png: Added.
- * CodeCoverage/regenerate-coverage-display: Added.
- * CodeCoverage/ruby.png: Added.
- * CodeCoverage/run-generate-coverage-data: Added.
- * CodeCoverage/snow.png: Added.
- * Scripts/build-webkit: Add --coverage by Niko
- * Scripts/check-for-global-initializers: Skip the check on coverage builds
- * Scripts/generate-coverage-data: Added.
- * Scripts/run-javascriptcore-tests: Add --coverage by Niko
-
-2007-05-29 Mark Rowe <mrowe@apple.com>
-
- Build fix after r21745.
-
- * Scripts/check-for-global-initializers: Skip CachedPage.o as it now has a global initializer in debug builds.
-
-2007-05-25 Anders Carlsson <andersca@apple.com>
-
- Fix build.
-
- * DumpRenderTree/DumpRenderTree.m:
- * DumpRenderTree/FrameLoadDelegate.m:
-
-2007-05-25 Simon Hausmann <hausmann@kde.org>
-
- Reviewed by Zack.
-
- For the keyDown binding use QStringList instead of QList<QString>. The former is a default
- registered metatype. Also print out critical messages in dumprendertree's qt message handler.
-
- * DumpRenderTree/DumpRenderTree.qtproj/jsobjects.cpp:
- * DumpRenderTree/DumpRenderTree.qtproj/jsobjects.h:
- * DumpRenderTree/DumpRenderTree.qtproj/main.cpp:
-
-2007-05-20 David Kilzer <ddkilzer@webkit.org>
-
- Reviewed by Adam Roben.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=13565
- Change svn-create-patch to put LayoutTests in the end
-
- In addition to reordering test files under the LayoutTests directory so that they
- appear after source code files, this patch fixes an issue with prepare-ChangeLog
- if the first argument passed to it is a file name instead of a directory name.
-
- * Scripts/prepare-ChangeLog:
- (isGIT()): If first value in @dirs array is a file, use dirname() to get the directory.
- (isSVN()): Ditto.
- * Scripts/svn-create-patch:
- (generateFileList($\%\%\%)): Differentiate test files in the LayoutTests directory from
- source code files.
-
-2007-05-18 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver.
-
- Force LC_ALL to C when parsing locale-specific strings in 'svn' output.
-
- * Scripts/svn-create-patch:
- * Scripts/webkitdirs.pm:
-
-2007-05-18 Holger Freyther <zecke@selfish.org>
-
- Reviewed by Maciej.
-
- * GdkLauncher/main.cpp: Call setGtkWidget
- (main):
-
-2007-05-18 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by Mark Rowe.
-
- * GdkLauncher/main.cpp:
- (main): Call Frame::init to catch up with Maciej's changes.
- * Scripts/run-javascriptcore-tests: Remove --gdk from the command line
- passed to the helper scripts.
-
-2007-05-16 Brady Eidson <beidson@apple.com>
-
- Build fix for some dev configurations
-
- * DumpRenderTree/DumpRenderTree.m:
-
-2007-05-16 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Justin.
-
- - created a new mechanism to log FrameLoadDelegate callbacks in directories named "loading"
-
- The reason for doing things in this slightly odd way is to make sure we don't miss the load delegates
- that happen before the load commits.
-
- Basically I moved WaitUntilDoneDelegate into a separate file (FrameLoadDelegate.m) and added
- optional logging for every FrameLoadDelegate callback, including SPI callbacks.
-
- * DumpRenderTree/DumpRenderTree.h:
- * DumpRenderTree/DumpRenderTree.m:
- (createWebView):
- (dumpRenderTree):
- (dump):
- (+[LayoutTestController isSelectorExcludedFromWebScript:]):
- (-[LayoutTestController clearBackForwardList]):
- (-[LayoutTestController setUseDashboardCompatibilityMode:]):
- (-[LayoutTestController dumpFrameLoadCallbacks]):
- (-[LayoutTestController setWindowIsKey:]):
- (-[LayoutTestController setMainFrameIsFirstResponder:]):
- (-[LayoutTestController _doLoad:target:]):
- (-[LayoutTestController _doBackOrForwardNavigation:]):
- (-[LayoutTestController queueReload]):
- (-[LayoutTestController queueScript:]):
- (-[LayoutTestController queueLoad:target:]):
- (-[LayoutTestController setAcceptsEditing:]):
- (-[LayoutTestController setTabKeyCyclesThroughElements:]):
- (shouldLogFrameLoadDelegates):
- (runTest):
- (displayWebView):
- (+[DumpRenderTreeEvent mouseLocation]):
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/DumpRenderTreeDraggingInfo.m:
- (-[DumpRenderTreeDraggingInfo draggingDestinationWindow]):
- * DumpRenderTree/EventSendingController.m:
- (-[EventSendingController mouseDown]):
- (-[EventSendingController mouseUp]):
- (-[EventSendingController mouseMoveToX:Y:]):
- (-[EventSendingController contextClick]):
- * DumpRenderTree/FrameLoadDelegate.h: Added.
- * DumpRenderTree/FrameLoadDelegate.m: Added.
- (-[WebFrame _drt_descriptionSuitableForTestResult]):
- (-[FrameLoadDelegate processWork:]):
- (-[FrameLoadDelegate webView:locationChangeDone:forDataSource:]):
- (-[FrameLoadDelegate webView:didStartProvisionalLoadForFrame:]):
- (-[FrameLoadDelegate webView:didCommitLoadForFrame:]):
- (-[FrameLoadDelegate webView:didFailProvisionalLoadWithError:forFrame:]):
- (-[FrameLoadDelegate webView:didFinishLoadForFrame:]):
- (-[FrameLoadDelegate webView:didFailLoadWithError:forFrame:]):
- (-[FrameLoadDelegate webView:windowScriptObjectAvailable:]):
- (-[FrameLoadDelegate webView:didClearWindowObject:forFrame:]):
- (-[FrameLoadDelegate webView:didReceiveTitle:forFrame:]):
- (-[FrameLoadDelegate webView:didReceiveServerRedirectForProvisionalLoadForFrame:]):
- (-[FrameLoadDelegate webView:didReceiveIcon:forFrame:]):
- (-[FrameLoadDelegate webView:didChangeLocationWithinPageForFrame:]):
- (-[FrameLoadDelegate webView:willPerformClientRedirectToURL:delay:fireDate:forFrame:]):
- (-[FrameLoadDelegate webView:didCancelClientRedirectForFrame:]):
- (-[FrameLoadDelegate webView:willCloseFrame:]):
- (-[FrameLoadDelegate webView:didFirstLayoutInFrame:]):
- (-[FrameLoadDelegate webView:didFinishDocumentLoadForFrame:]):
- (-[FrameLoadDelegate webView:didHandleOnloadEventsForFrame:]):
- * DumpRenderTree/ResourceLoadDelegate.m:
- (-[NSURL _drt_descriptionSuitableForTestResult]):
- * DumpRenderTree/UIDelegate.m:
- (-[UIDelegate webViewFocus:]):
-
-2007-05-16 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Darin and Geoff.
-
- - rdar://problem/4981886
- - Now windows opened by the DOM can be closed by JS.
-
- * DumpRenderTree/DumpRenderTree.m:
- (+[LayoutTestController isSelectorExcludedFromWebScript:]):
- (-[LayoutTestController windowCount]):
-
-2007-05-15 Adam Roben <aroben@apple.com>
-
- Reviewed by David Kilzer.
-
- http://bugs.webkit.org/show_bug.cgi?id=13732
- prepare-ChangeLog should work with git
-
- * Scripts/prepare-ChangeLog: Added support for Git.
-
-2007-05-15 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Zack
-
- Add the EventSender object to DRT. Currently it implements
- mouseDown, mouseUp and mouseMoveTo.
-
- Make run-webkit-tests --strict work somewhat better for form elements.
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::initJSObjects):
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.h:
- * DumpRenderTree/DumpRenderTree.qtproj/jsobjects.cpp:
- (HackWebFrame::mousePressEvent):
- (HackWebFrame::mouseReleaseEvent):
- (EventSender::EventSender):
- (EventSender::mouseDown):
- (EventSender::mouseUp):
- (EventSender::mouseMoveTo):
- (EventSender::leapForward):
- (EventSender::keyDown):
- (EventSender::frameUnderMouse):
- * DumpRenderTree/DumpRenderTree.qtproj/jsobjects.h:
- * Scripts/run-webkit-tests:
-
-2007-05-12 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Hyatt.
-
- Add new api to DRT to allow us to test a file being dragged
- onto <input type="file">
-
- * DumpRenderTree/DumpRenderTree.h:
- * DumpRenderTree/DumpRenderTree.m:
- (+[LayoutTestController isSelectorExcludedFromWebScript:]):
- (-[LayoutTestController addFileToPasteboardOnDrag]):
- (runTest):
- * DumpRenderTree/UIDelegate.m:
- (-[UIDelegate webView:dragImage:at:offset:event:pasteboard:source:slideBack:forView:]):
-
-2007-05-11 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by Maciej.
-
- Bug 13656: [gdk] Resize the drawing area of the GdkLauncher
- http://bugs.webkit.org/show_bug.cgi?id=13656
-
- * GdkLauncher/main.cpp: Handle resizing the drawing area
- (frameResizeCallback):
- (main):
-
-2007-05-11 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- Updated test now that +[WebScriptObject scriptObjectForJSObject:frame:]
- is gone.
-
- * DumpRenderTree/DumpRenderTree.m:
- (-[WaitUntilDoneDelegate webView:didClearWindowObject:forFrame:]):
- (+[LayoutTestController isSelectorExcludedFromWebScript:]):
- (+[LayoutTestController webScriptNameForSelector:]):
- (-[LayoutTestController testWrapperRoundTripping:]):
-
-2007-05-08 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - don't clear events whenever an EventSendingController goes away, only do it at predictable times,
- since destroying a subframe can make one go away
-
- (Discovered while fixing:
-
- <rdar://problem/5063277> blank screen after login to Citibank Online (accessing document before frame starts loading cancels load)
- <rdar://problem/5159541> REGRESSION (r20972): Wall Street Journal pages replaced by advertisements (13465)
-
- * DumpRenderTree/DumpRenderTree.m:
- (runTest): explicitly clear saved events after every page load
- * DumpRenderTree/EventSendingController.h:
- * DumpRenderTree/EventSendingController.m:
- (-[EventSendingController dealloc]): don't clear saved events here...
- (+[EventSendingController clearSavedEvents]): do it here
- * Scripts/check-for-global-initializers:
-
-2007-05-10 Mark Rowe <mrowe@apple.com>
-
- Build fix for DumpRenderTree. Enable Objective-C exceptions in Release configuration.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
-
-2007-05-09 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Added support for testing ObjC/JS type bridging.
-
- Added ASSERT that -JSObject returns nil when the underlying JSObject
- is no longer GC protected.
-
- * DumpRenderTree/DumpRenderTree.m:
- (returnThisCallback):
- (returnThisClass):
- (-[WaitUntilDoneDelegate webView:didClearWindowObject:forFrame:]):
- (+[LayoutTestController isSelectorExcludedFromWebScript:]):
- (+[LayoutTestController webScriptNameForSelector:]):
- (-[LayoutTestController accessStoredWebScriptObject]):
- (-[LayoutTestController testWrapperRoundTripping]):
- (-[LayoutTestController objCClassNameOf:]):
- (-[LayoutTestController objCObjectOfClass:]):
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
-
-2007-05-10 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Simon
-
- Move setting of the DPI value a few lines up. Should fix
- the last two remaining failures in the layout tests.
-
- * DumpRenderTree/DumpRenderTree.qtproj/main.cpp:
- (main):
-
-2007-05-09 Holger Freyther <zecke@selfish.org>
-
- Reviewed by Mark Rowe.
-
- * GdkLauncher/main.cpp: Always include config.h.
-
-2007-05-08 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- Added support for testing ObjC object identity.
-
- Added ASSERT to verify that you can round-trip the object passed to you
- in -didClearWindowObject:forFrame:.
-
- * DumpRenderTree/DumpRenderTree.m:
- (-[WaitUntilDoneDelegate webView:didClearWindowObject:forFrame:]):
- (+[LayoutTestController isSelectorExcludedFromWebScript:]):
- (+[LayoutTestController webScriptNameForSelector:]):
- (-[LayoutTestController accessStoredWebScriptObject]):
- (-[LayoutTestController objCIdentityIsEqual::]):
-
-2007-05-07 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Added tests for new APIs: -[WebFrame windowObject], -[WebFrame globalContext],
- and - (void)webView:(WebView *)webView didClearWindowObject:(WebScriptObject *)windowObject
- forFrame:(WebFrame *)frame, in the form of ASSERTs.
-
- * DumpRenderTree/DumpRenderTree.m:
- (runJavaScriptThread): Fixed quote mismatch that prepare-changelog likes
- to complain about.
-
- (-[WaitUntilDoneDelegate webView:windowScriptObjectAvailable:]):
- (-[WaitUntilDoneDelegate webView:didClearWindowObject:forFrame:]):
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
-
-2007-05-08 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Zack.
-
- Dump JavaScript console messages as well. Also requires a slight
- change in run-webkit-tests, so we still correctly differentiate
- between text only and rendertree tests.
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::WebPage::WebPage):
- (WebCore::WebPage::javaScriptConsoleMessage):
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::dump):
- * Scripts/run-webkit-tests:
-
-2007-05-08 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Zack
-
- Specify what the serif, sans-serif and monospace aliases
- should map to and explicitly select the Gui style of
- DRT to be plastique.
-
- Fixes most of the test failures still seen on the build bot.
-
- * DumpRenderTree/DumpRenderTree.qtproj/fonts.conf:
- * DumpRenderTree/DumpRenderTree.qtproj/main.cpp:
- (main):
-
-2007-05-07 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Zack
-
- Fix the default font to 9pt Sans Serif.
-
- * DumpRenderTree/DumpRenderTree.qtproj/main.cpp:
- (main):
-
-2007-05-04 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Zack
-
- Revert on line of the last commit. We still want to keep the RPATH
- support in the pro file.
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.pro:
-
-2007-05-04 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Zack
-
- Remove the old bitmap fonts I tried using to get reliable results from
- DumpRenderTree on X11. Instead we now use the URW Type1 fonts from
- ghostscript. I've added a mirror to simply check them out at
- svn://labs.trolltech.com/svn/webkit/testfonts.
-
- Fixed DumpRenderTree to make sure these fonts are the only ones we use
- on X11 and added a fonts.conf file to get a well defined fontconfig
- configuration.
-
- Made sure run-webkit-tests forwards the WEBKIT_TESTFONTS environment variable
- I use to find the fonts to DumpRenderTree.
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.pro:
- * DumpRenderTree/DumpRenderTree.qtproj/fontoverload.cpp: Removed.
- * DumpRenderTree/DumpRenderTree.qtproj/fonts/COPYING: Removed.
- * DumpRenderTree/DumpRenderTree.qtproj/fonts/CourierBold.ttf: Removed.
- * DumpRenderTree/DumpRenderTree.qtproj/fonts/CourierBoldOblique.ttf: Removed.
- * DumpRenderTree/DumpRenderTree.qtproj/fonts/CourierMedium.ttf: Removed.
- * DumpRenderTree/DumpRenderTree.qtproj/fonts/CourierMediumOblique.ttf: Removed.
- * DumpRenderTree/DumpRenderTree.qtproj/fonts/HelveticaBold.ttf: Removed.
- * DumpRenderTree/DumpRenderTree.qtproj/fonts/HelveticaBoldOblique.ttf: Removed.
- * DumpRenderTree/DumpRenderTree.qtproj/fonts/HelveticaMedium.ttf: Removed.
- * DumpRenderTree/DumpRenderTree.qtproj/fonts/HelveticaMediumOblique.ttf: Removed.
- * DumpRenderTree/DumpRenderTree.qtproj/fonts/SymbolMedium.ttf: Removed.
- * DumpRenderTree/DumpRenderTree.qtproj/fonts/TimesBold.ttf: Removed.
- * DumpRenderTree/DumpRenderTree.qtproj/fonts/TimesBoldItalic.ttf: Removed.
- * DumpRenderTree/DumpRenderTree.qtproj/fonts/TimesMedium.ttf: Removed.
- * DumpRenderTree/DumpRenderTree.qtproj/fonts/TimesMediumItalic.ttf: Removed.
- * DumpRenderTree/DumpRenderTree.qtproj/fonts.conf: Added.
- * DumpRenderTree/DumpRenderTree.qtproj/main.cpp:
- (main):
- * Scripts/run-webkit-tests:
-
-2007-05-03 Holger Freyther <freyther@kde.org>
-
- Reviewed by Zack, landed by Simon.
- This is bugzilla bug 13499.
-
- * GdkLauncher/GdkLauncher.pro: Build the GdkLauncher using qmake
- * GdkLauncher/main.cpp: We don't have a config.h with the qmake build
- * Scripts/build-webkit: Add --gdk for the Gdk port
- * Scripts/webkitdirs.pm: Add helper methods for the Gdk port
-
-2007-05-03 Geoffrey Garen <ggaren@apple.com>
-
- Build fix: Add AllInOneFile.o to the ignore list, since it includes files
- in the ignore list.
-
- * Scripts/check-for-global-initializers:
-
-2007-05-02 Holger Freyther <freyther@kde.org>
-
- Reviewed by Mark Rowe.
-
- * Scripts/build-webkit: Remove the CMake call.
- * Scripts/webkitdirs.pm: Remove isQtWithQMake as QMake is now the only
- buildsystem for the Qt port.
-
-2007-04-27 Kevin McCullough <kmccullough@apple.com>
-
- - Removed debugging statements and took out the removal of the deletion
- of the symlink. This is because multiple instances of run-webkit-tests
- can be running at the same time.
- * Scripts/run-webkit-tests:
-
-2007-04-27 Adam Roben <aroben@apple.com>
-
- Reviewed by Maciej.
-
- Cleaned up prepare-ChangeLog
-
- * Scripts/prepare-ChangeLog: No code changes, but style now matches
- the prevalent style of our perl scripts.
-
-2007-04-27 Nazar Kulyk <schamane@myeburg.net>
-
- Reviewed by Mark Rowe.
-
- Basic auto-correction of user-entered URLs.
-
- * GdkLauncher/main.cpp:
- (autocorrectURL):
- (goToURLBarText):
- (main):
-
-2007-04-28 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Anders.
-
- Rename some methods and variables to match the style guidelines.
-
- * GdkLauncher/main.cpp:
- (stringIsEmpty):
- (stringIsEqual):
- (goToURLBarText):
- (goButtonClickedCallback):
- (urlBarEnterCallback):
- (frameResizeCallback):
- (frameDestroyCallback):
- (menuMainBackCallback):
- (menuMainForwardCallback):
- (menuMainQuitCallback):
- (main):
-
-2007-04-27 Holger Freyther <freyther@kde.org>
-
- Reviewed by Maciej.
-
- Remove unmaintained CMake build system.
-
- * DumpRenderTree/DumpRenderTree.qtproj/CMakeLists.txt: Removed.
- * Scripts/build-webkit: Remove references to CMake.
- * Scripts/webkitdirs.pm: Remove references to CMake.
-
-2007-04-26 Alp Toker <alp@atoker.com>
-
- Reviewed by Mark Rowe.
-
- * GdkLauncher/main.cpp:
- (main): Avoid use of deprecated API.
-
-2007-04-26 Kevin McCullough <kmccullough@apple.com>
-
- - Changed debugging statements for more information.
-
- * Scripts/run-webkit-tests:
-
-2007-04-26 Kevin McCullough <kmccullough@apple.com>
-
- - Adding debugging statements to see why these tests fail. These will be removed.
-
- * Scripts/run-webkit-tests:
-
-2007-04-25 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Mitz.
-
- Add a setUseDashboardCompatibilityMode method to LayoutTestController which is used to toggle
- the dashboard compatibility mode.
-
- * DumpRenderTree/DumpRenderTree.m:
- (+[LayoutTestController isSelectorExcludedFromWebScript:]):
- (+[LayoutTestController webScriptNameForSelector:]):
- (-[LayoutTestController setUseDashboardCompatibilityMode:]):
- (runTest):
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
-
-2007-04-24 Timothy Hatcher <timothy@apple.com>
-
- Setting the valid architectures to 32-bit only, so these projects
- will ignore requests to build them 64-bit. Once they can be built 64-bit,
- the valid architectures can be updated.
-
- * Drosera/Drosera.xcodeproj/project.pbxproj:
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
-
-2007-04-23 Adam Roben <aroben@apple.com>
-
- Reviewed by Mark Rowe and David Kilzer.
-
- * Scripts/build-webkit: Print the path to the run-safari script when
- finished building so that users can copy-and-paste the command to
- execute it.
-
-2007-04-23 Darin Adler <darin@apple.com>
-
- Reviewed by Hyatt.
-
- - rename box-sizing to -webkit-box-sizing
-
- * Drosera/console.css: Here.
- * Drosera/debugger.css: And here.
- * Drosera/viewer.css: And here.
-
-2007-04-21 Mitz Pettel <mitz@webkit.org>
-
- Reviewed by Darin Adler.
-
- - http://bugs.webkit.org/show_bug.cgi?id=13350
- Build Ahem into DumpRenderTree
-
- * DumpRenderTree/DumpRenderTree.m:
- (activateAhemFont): Added. Activates the copy of Ahem included in the
- DumpRenderTree binary.
- (dumpRenderTree): Replaced the check that Ahem is available with a call
- to activateAhemFont().
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- Added linker options to include Ahem in the data section of the
- DumpRenderTree binary.
-
-2007-04-20 Adam Roben <aroben@apple.com>
-
- Reviewed by Darin Adler.
-
- http://bugs.webkit.org/show_bug.cgi?id=13421
- Bug 13421: prepare-ChangeLog should use svn-create-patch when spewing diffs
-
- * Scripts/prepare-ChangeLog: Use svn-create-patch instead of svn diff.
-
-2007-04-18 Brady Eidson <beidson@apple.com>
-
- Reviewed by Tim
-
- <rdar://problem/5008925>
- Expose the NSURLConnection delegate willCacheResponse API to WebResourceLoadDelegate
-
- * DumpRenderTree/ResourceLoadDelegate.m:
- (-[ResourceLoadDelegate webView:resource:willCacheResponse:fromDataSource:]):
- Add the willCacheResponse delegate call
-
-2007-04-18 Adam Roben <aroben@apple.com>
-
- Reviewed by David Kilzer.
-
- * Scripts/webkitdirs.pm:
- (sub setConfiguration): Added an optional argument to set the
- configuration instead of parsing it from ARGV.
-
-2007-04-17 Adam Roben <aroben@apple.com>
-
- * Scripts/find-included-framework-headers: Search Obj-C and Obj-C++
- files as well.
-
-2007-04-17 Adam Roben <aroben@apple.com>
-
- Added a simple shell script to find all the headers from a specified
- framework or frameworks that are included by files beneath the working
- directory.
-
- * Scripts/find-included-framework-headers: Added.
-
-2007-04-16 Timothy Hatcher <timothy@apple.com>
-
- * Drosera/debugger.css: hide the borders for iframes
-
-2007-04-13 Adam Roben <aroben@apple.com>
-
- Rubberstamped by Anders.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c: #include
- stdio.h so that snprintf is defined.
-
-2007-04-13 Brady Eidson <beidson@apple.com>
-
- Reviewed by Anders
-
- Add the ability to dump the back/forward history of all windows open at the end of a test
-
- * DumpRenderTree/DumpRenderTree.m:
- (dumpBackForwardListForWebView): Dump B/F list for the given WebView
- (dump): Call dumpBackForwardListForWebView for each WebView open after the test
-
-2007-04-13 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Brady.
-
- By default, close any windows that have been opened during a test. This can be overridden by
- calling setCloseRemainingWindowsWhenComplete(false).
-
- Change the windows set to an array so we can gurantee the enumeration order.
-
- * DumpRenderTree/DumpRenderTree.m:
- (+[LayoutTestController isSelectorExcludedFromWebScript:]):
- (+[LayoutTestController webScriptNameForSelector:]):
- (-[LayoutTestController setCloseRemainingWindowsWhenComplete:]):
- (runTest):
- (-[DumpRenderTreeWindow initWithContentRect:styleMask:backing:defer:]):
- (-[DumpRenderTreeWindow dealloc]):
-
-2007-04-13 Geoffrey Garen <ggaren@apple.com>
-
- Build fix.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c:
- (handleCallback): Explicitly cast the void* returned by malloc.
-
-2007-04-12 Deneb Meketa <dmeketa@adobe.com>
-
- Reviewed by Darin Adler.
-
- http://bugs.webkit.org/show_bug.cgi?id=13029
- rdar://problem/4994849
- Bug 13029: Permit NPAPI plug-ins to see HTTP response headers.
- Changes in WebKitTools are only for the NPAPI test plugin.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c: main test logic.
- (pluginInvoke): support null window argument for NPStream creation.
- (pluginAllocate): initialization.
- (pluginDeallocate): cleanup.
- (handleCallback): add second JS callback arg: header dump.
- (notifyStream): added; hook from NPP_NewStream to record headers.
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h: declarations.
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.c: call new header hook.
- (NPP_NewStream): call new header hook.
-
-2007-04-09 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Fixed fast/forms/textarea-paste-newline.html.
-
- This failure was pretty funny. run-webkit-tests kills and respawns
- DumpRenderTree once every 1000 runs. Adding a few tests caused
- textarea-paste-newline.html to run right at the beginning of DumpRenderTree's
- lifetime, before any render tree dumps had occurred. However, WebCore
- used a render tree dump as the hook that set a global flag to allow
- pasting through the DOM API, so running before any render tree dumps had
- occurred caused this test to fail.
-
- * DumpRenderTree/DumpRenderTree.m:
- (dumpRenderTree): Explicitly tell WebKit to allow pasting through the DOM
- API, instead of hoping it will read the tea leaves.
-
-2007-04-07 Mark Rowe <mrowe@apple.com>
-
- Not reviewed. Update to match some configuration changes that have been active on build.webkit.org.
-
- * BuildSlaveSupport/build.webkit.org-config/webkit/status.py:
-
-2007-04-05 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Adam.
-
- Add support for opening new windows in DumpRenderTree.
-
- (+[LayoutTestController isSelectorExcludedFromWebScript:]):
- (+[LayoutTestController webScriptNameForSelector:]):
- (-[LayoutTestController setCallCloseOnWebViews:]):
- (-[LayoutTestController setCanOpenWindows]):
- Add two new methods callable from JavaScript. setCanOpenWindows controls whether a test
- can open new windows, and setCallCloseOnWebViews controls whether -[WebView close] should be called on
- web views that are about to be closed.
-
- (runTest):
- Make sure that only the main window is around when a test has finished running.
-
- (-[DumpRenderTreeWindow initWithContentRect:styleMask:backing:defer:]):
- (-[DumpRenderTreeWindow dealloc]):
- Manage the set of windows.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c:
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h:
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.c:
- (NPP_Destroy):
- Add a "logDestroy" property which controls whether plugins should print when they are destroyed or not.
-
- * DumpRenderTree/UIDelegate.m:
- (-[UIDelegate webView:createWebViewWithRequest:]):
- Create new windows.
-
- (-[UIDelegate webViewClose:]):
- Close windows.
-
-2007-04-05 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Maciej.
-
- Move WebView and NSWindow creation to a separate function in preparation of supporting opening new
- windows in DRT.
-
- * DumpRenderTree/DumpRenderTree.m:
- (createWebView):
- (dumpRenderTree):
-
-2007-04-03 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Darin Adler.
-
- Add the notion of a "disallowed URL", which the resource loader won't allow to be loaded.
-
- * DumpRenderTree/DumpRenderTree.h:
- * DumpRenderTree/DumpRenderTree.m:
- (dumpRenderTree):
- (+[LayoutTestController isSelectorExcludedFromWebScript:]):
- (+[LayoutTestController webScriptNameForSelector:]):
- (-[LayoutTestController addDisallowedURL:]):
- (runTest):
- * DumpRenderTree/ResourceLoadDelegate.m:
- (-[ResourceLoadDelegate webView:resource:willSendRequest:redirectResponse:fromDataSource:]):
-
-2007-04-03 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Antti.
-
- * BuildSlaveSupport/build-launcher-dmg: Use bzip2 compression in nightly build disk images rather than gzip.
-
-2007-04-02 Anders Carlsson <andersca@apple.com>
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h:
- Don't use #import in a header included by C files.
-
-2007-03-31 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Mitz.
-
- Fix http://bugs.webkit.org/show_bug.cgi?id=13239
- Bug 13239: REGRESSION (r20343): Drosera hits exception trying to call "count" cross-process
-
- Use -[WebScriptObject valueForKey:@"length"] to retrieve the length of a JavaScript array
- rather than -[WebScriptObject count].
-
- * Drosera/DebuggerDocument.m:
- (-[DebuggerDocument webScriptAttributeKeysForScriptObject:]):
-
-2007-03-30 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Geoff.
-
- Add an "onstreamload" attribute to the plugin which is called when a stream starts loading.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h:
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.c:
- (NPP_New):
- Look for the onstreamload attribute.
-
- (NPP_Destroy):
- Free the onstreamload attribute.
-
- (NPP_NewStream):
- Call the onstreamload handler.
-
-2007-03-30 Geoffrey Garen <ggaren@apple.com>
-
- Removing an assertion I just added because it's crashing the Leopard
- buildbot. The related layout test will still report a failure, so we
- don't really need this assertion.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c:
- (pluginInvoke):
-
-2007-03-30 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Geoff.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.c:
- (testAllocate):
- (testEnumerate):
- Add casts.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.h:
- Don't use #import, use #include.
-
-2007-03-30 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Alexey.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c:
- (pluginInvoke):
- Free the identifier string.
-
-2007-03-30 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Geoff.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- Add TestObject.c and TestObject.h
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c:
- (pluginGetProperty):
- Implement the testObject property.
-
- (pluginInvoke):
- Implement testEnumerate which takes an object and an array and enumerates
- the properties of the object and adds them to the array.
-
- (pluginAllocate):
- Allocate the test object.
-
- (pluginDeallocate):
- Free the test object.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.c: Added.
- * DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.h: Added.
- Add a test object with two enumerable properties.
-
-2007-03-29 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Beth Dakin.
-
- Layout test for <rdar://problem/5091330> REGRESSION: Repro crash in
- -[WebBaseNetscapePluginView(WebNPPCallbacks) destroyStream:reason:]
- navigating away from page with DivX movie plug-in (13203)
-
- Added hasStream property and destroyStream function, used by layout test.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c:
- (pluginGetProperty):
- (pluginInvoke):
- (pluginAllocate):
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h:
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.c:
- (NPP_NewStream):
-
-2007-03-27 Anders Carlsson <acarlsson@apple.com>
-
- Reviewed by Geoff.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c:
- (pluginInvoke):
- Add new function which takes a function and calls it using NPN_InvokeDefault.
-
-2007-03-27 Adele Peterson <adele@apple.com>
-
- Adding comment.
-
- * DumpRenderTree/DumpRenderTree.m:
- (-[WaitUntilDoneDelegate webView:didFinishLoadForFrame:]):
-
-2007-03-27 Adele Peterson <adele@apple.com>
-
- Fix svg tests by calling displayIfNeeded.
-
- * DumpRenderTree/DumpRenderTree.m:
- (-[WaitUntilDoneDelegate webView:didFinishLoadForFrame:]):
-
-2007-03-26 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Sam Weinig.
-
- Upload crash logs from DumpRenderTree as part of the test results to ease debugging
- of hard-to-reproduce crashes.
-
- * BuildSlaveSupport/build.webkit.org-config/webkit/steps.py:
-
-2007-03-23 Adam Treat <adam@staikos.net>
-
- Reviewed and committed by George.
-
- Patch by Adam Treat. Removes hardcoded path to .pro file.
-
-2007-03-22 Adam Roben <aroben@apple.com>
-
- Reviewed by Geoff.
-
- Removed eventSender.mouseClick because it was only useful for AppKit
- controls, which we don't use anymore.
-
- * DumpRenderTree/EventSendingController.m:
- (+[EventSendingController isSelectorExcludedFromWebScript:]): Removed
- mouseClick.
-
-2007-03-22 Adam Roben <aroben@apple.com>
-
- Reviewed by Ada.
-
- Make eventSender.mouseClick actually send a mouse up event.
-
- * DumpRenderTree/EventSendingController.m:
- (-[EventSendingController mouseClick]):
-
-2007-03-19 David Hyatt <hyatt@apple.com>
-
- Update the minimum font size pref to match the actual default setting in Safari. It should have been 1
- all this time and not 9.
-
- Reviewed by aroben
-
- * DumpRenderTree/DumpRenderTree.m:
- (dumpRenderTree):
-
-2007-03-18 Dan Waylonis <waylonis@mac.com>
-
- Reviewed by Tim Hatcher.
-
- DumpRenderTree changes for http://bugs.webkit.org/show_bug.cgi?id=13005
- Bug 13005: WebScriptObject +throwException needs NULL check.
-
- Add tests to ensure that a plugin can safely throw an exception in dealloc.
-
- * DumpRenderTree/ObjCPlugin.h:
- * DumpRenderTree/ObjCPlugin.m:
- (+[ObjCPlugin webScriptNameForKey:]):
- (+[ObjCPlugin isKeyExcludedFromWebScript:]):
- (-[ObjCPlugin dealloc]):
-
-2007-03-13 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Maciej.
-
- Have the nightly launcher prefer Safari found in /Applications or ~/Applications
- if present, otherwise fall back on using LaunchServices to locate it elsewhere
- on the system. The motivation for this is to make the behaviour of the nightly
- builds more predictable on machines with multiple copies of Safari present.
-
- * WebKitLauncher/main.m:
- (locateSafariBundle):
- (main):
-
-2007-03-12 Darin Adler <darin@apple.com>
-
- Reviewed by Tim Hatcher.
-
- - add a DumpRenderTree feature where you can get the Objective-C
- class name of a JavaScript object
-
- * DumpRenderTree/DumpRenderTree.m:
- (+[LayoutTestController isSelectorExcludedFromWebScript:]): Add the
- objCClassNameOf: selector.
- (+[LayoutTestController webScriptNameForSelector:]): Add the
- objCClassNameOf: selector, with the name "objCClassName".
- (-[LayoutTestController objCClassNameOf:]): Added.
-
-2007-03-11 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Beefed up --threaded mode in light of <rdar://problem/4681051> Installer
- crashes in KJS::Collector::markOtherThreadConservatively(KJS::Collector::Thread*)
- trying to install iLife 06 using Rosetta on an Intel Machine
-
- --threaded mode now runs a bunch of different JavaScript threads, randomly
- killing and respawning them. This was sufficient for reproducing the
- bug on my MacBook Pro.
-
- * DumpRenderTree/DumpRenderTree.m:
- (javaScriptThreads):
- (runJavaScriptThread):
- (startJavaScriptThreads):
- (stopJavaScriptThreads):
- (dumpRenderTree):
-
-2007-03-11 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
-
- Reviewed by Brady Eidson.
-
- Add forward/backward/quit menus for easier testing.
-
- * GdkLauncher/main.cpp:
- (menuMainBackCb):
- (menuMainForwardCb):
- (menuMainQuitCb):
- (main):
-
-2007-03-09 Andrew Wellington <proton@wiretapped.net>
-
- Reviewed by Darin Adler.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=13007
- svn-create-patch doesn't handle UTF files with BOMs as text
-
- Force diff to treat files that svn-create-patch thinks are text as text.
-
- * Scripts/svn-create-patch: Added -a switch to diff command.
-
-2007-03-09 Mark Rowe <mrowe@apple.com>
-
- Unreviewed. Use the new SVN URL on the buildbot.
-
- * BuildSlaveSupport/build.webkit.org-config/webkit/steps.py:
-
-2007-03-08 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Antti.
-
- Fix compiler warnings when building Drosera as 64-bit.
-
- * Drosera/DebuggerDocument.m:
- (-[DebuggerDocument breakpointEditorHTML]): Move away from deprecated NSString method.
- (-[DebuggerDocument scriptConfirmSheetDidEnd:returnCode:contextInfo:]): Update type.
- (-[DebuggerDocument webView:runJavaScriptConfirmPanelWithMessage:initiatedByFrame:]): Update type to accommodate constant.
-
-2007-03-07 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Maciej.
-
- Update check-for-global-initializers to ignore new debug initializers in bidi.o and kjs_events.o.
-
- * Scripts/check-for-global-initializers:
-
-2007-03-07 Anders Carlsson <acarlsson@apple.com>
-
- Reviewed by Adam.
-
- Add some assertions.
-
- * DumpRenderTree/DumpRenderTree.m:
- (-[WaitUntilDoneDelegate webView:didStartProvisionalLoadForFrame:]):
- (-[WaitUntilDoneDelegate webView:didCommitLoadForFrame:]):
- (-[WaitUntilDoneDelegate webView:didFailProvisionalLoadWithError:forFrame:]):
- (-[WaitUntilDoneDelegate webView:didFailLoadWithError:forFrame:]):
-
-2007-03-07 David Kilzer <ddkilzer@webkit.org>
-
- Reviewed by Darin Adler.
-
- - WebKitTools part of fix for http://bugs.webkit.org/show_bug.cgi?id=12463
- WebArchiver - attempt to insert nil exception when archive empty iframe
-
- The dumpDOMAsWebArchive() test method uses the DOMDocument as a basis for creating
- a webarchive while the dumpSourceAsWebArchive() test method uses the original
- dataSource (page source) to create a webarchive. Most tests currently use
- dumpDOMAsWebArchive() since this is what Safari does when saving a web page as a
- webarchive.
-
- * DumpRenderTree/DumpRenderTree.m: Renamed dumpAsWebArchive to dumpDOMAsWebArchive.
- Added dumpSourceAsWebArchive.
- (dump):
- (+[LayoutTestController isSelectorExcludedFromWebScript:]):
- (-[LayoutTestController dumpDOMAsWebArchive]):
- (-[LayoutTestController dumpSourceAsWebArchive]):
- (runTest):
-
-2007-03-05 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Mark and Dave H.
-
- - rdar://problem/4922454
- - This fixes a security issue by making remote referrers not able to access local
- resources, unless they register their schemes to be treated as local. The result is
- that those schemes can access local resources and cannot be accessed by remote
- referrers.
- Because this behavior is new a link-on-or-after check is made to determine if the
- app should use the older, less safe, behavior.
-
- * DumpRenderTree/DumpRenderTree.m: Add ability to set user style sheet to DRT.
- (+[LayoutTestController isSelectorExcludedFromWebScript:]):
- (+[LayoutTestController webScriptNameForSelector:]):
- (-[LayoutTestController setUserStyleSheetLocation:]):
- (-[LayoutTestController setUserStyleSheetEnabled:]):
-
-2007-03-05 Anders Carlsson <acarlsson@apple.com>
-
- Reviewed by Adam, Darin.
-
- <rdar://problem/5025212>
- In Mail, a crash occurs at WebCore::Frame::tree() when clicking on embedded flash object
-
- Add a "getURLNotify" method to the plugin object. This lets you pass a URL, a target and a callback function
- to be run when the URL has finished (or failed) loading.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c:
- (pluginInvoke):
- (handleCallback):
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h:
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.c:
- (NPP_URLNotify):
-
-2007-03-04 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
-
- Reviewed by Nikolas Zimmermann.
-
- Load a url given on a command line in a way that also
- works for local (file://) urls.
-
- * GdkLauncher/main.cpp:
- (main):
-
-2007-03-02 Geoffrey Garen <ggaren@apple.com>
-
- Tweaked parse-malloc-history to work with new malloc_history output format.
-
- * Scripts/parse-malloc-history:
-
-2007-02-28 Vladimir Olexa <vladimir.olexa@gmail.com>
-
- Reviewed by Tim H.
-
- Fixes: http://bugs.webkit.org/show_bug.cgi?id=12887
- Bug#12887: [Drosera] Add ability to close loaded files
-
- * Drosera/DebuggerDocument.h:
- * Drosera/DebuggerDocument.m:
- (-[DebuggerDocument closeCurrentFile:]): Adds delegation to call a JS script to close files
- * Drosera/Drosera.xcodeproj/project.pbxproj:
- * Drosera/English.lproj/MainMenu.nib/classes.nib:
- * Drosera/English.lproj/MainMenu.nib/info.nib:
- * Drosera/English.lproj/MainMenu.nib/keyedobjects.nib: Adds Close Current File menu item
- * Drosera/debugger.html: Changed "no files loaded" to "<No files loaded>" to match Xcode style
- * Drosera/debugger.js: Adds implementation of closeFile() to unload currently loaded file
-
-2007-02-28 Nikolas Zimmermann <zimmermann@kde.org>
-
- Reviewed by Maciej.
-
- Add new flags to build-webkit to be able to switch on/off xpath, xslt, etc. easily.
-
- * Scripts/build-webkit:
-
-2007-02-27 Geoffrey Garen <ggaren@apple.com>
-
- Small tweak to run-webkit-tests.
-
- * Scripts/run-webkit-tests: Allow people with lots of RAM to run more than
- 1000 MallocStackLogging tests at a time.
-
-2007-02-26 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Lars.
-
- - set ENABLE_XSLT even when compiling without SVG support, since that is no
- longer hardcoded into config.h.
-
- * Scripts/build-webkit:
-
-2007-02-26 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
-
- Reviewed by Adam Roben.
-
- Rename *_SUPPORT defines to ENABLE_*.
-
- * GdkLauncher/gdklauncher.bkl:
-
-2007-02-24 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- * Scripts/run-webkit-tests: Stop ignoring BidiRun leaks, now that they're
- fixed.
-
-2007-02-24 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
-
- Reviewed by Adam Roben.
-
- Improve gdklauncher: add text field for entering url.
-
- * GdkLauncher/gdklauncher.bkl:
- * GdkLauncher/main.cpp:
- (strEmpty):
- (strEq):
- (handleGdkEvent):
- (goToUrlBarText):
- (goButtonClickedCb):
- (urlBarEnterCb):
- (registerRenderingAreaEvents):
- (frameResizeCb):
- (frameDestroyCb):
- (main):
-
-2007-02-22 Vladimir Olexa <vladimir.olexa@gmail.com>
-
- Reviewed by Tim H.
-
- Fixes: http://bugs.webkit.org/show_bug.cgi?id=12852
- Bug#12852: Drosera should select function name, not "function" keyword when selecting from function list pop-up
- * Drosera/debugger.js: Fixed some logic errors resulting in generating double IDs and names.
-
-2007-02-22 Adele Peterson <adele@apple.com>
-
- Reviewed by Darin Adler.
-
- Added option in layoutTestController to setTabKeyCyclesThroughElements, so we
- can test <rdar://problem/5014970> 9A374: Tabs don't work in the message body
-
- * DumpRenderTree/DumpRenderTree.m:
- (+[LayoutTestController isSelectorExcludedFromWebScript:]):
- (+[LayoutTestController webScriptNameForSelector:]):
- (-[LayoutTestController setTabKeyCyclesThroughElements:]):
-
-2007-02-22 Geoffrey Garen <ggaren@apple.com>
-
- Used svn merge -r19786:19785 to roll out previous hack to work around
- SVG painting issue in DRT.
-
- Implemented new work-around, which makes --paint paint *after* dumping
- the render tree instead of before, so that painting doesn't influence
- the SVG render tree.
-
- This should fix the ~400 new pixel failures introduced in r19786.
-
- * DumpRenderTree/DumpRenderTree.m:
- (dump):
- * Scripts/run-webkit-tests:
-
-2007-02-22 Geoffrey Garen <ggaren@apple.com>
-
- Resetting --leaks mode default to run 1000 tests at a time because setting it
- to 750 didn't stop the stack logging related crashes, and running more tests
- at a time is faster. The crashes seem to be a real bug in stack logging,
- not an out of memory condition.
-
- * Scripts/run-webkit-tests:
-
-2007-02-21 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Adam Roben.
-
- Added hack to force painting when running an SVG test. This is a work-around
- for http://bugs.webkit.org/show_bug.cgi?id=12849 SVG renderers update at
- paint time instead of style resolution time.
-
- We need this so that --leaks mode, which always paints, doesn't appear to
- fail SVG tests. We also need this if we ever want to test style application
- in SVG, since many SVGs don't apply style to their renderers until they paint.
-
- * Scripts/run-webkit-tests:
-
-2007-02-21 Geoffrey Garen <ggaren@apple.com>
-
- Reduced --leaks mode to running only 750 tests at a time, in the hopes
- of fixing intermittent crasher that may be caused by out of memory
- conditions.
-
- * Scripts/run-webkit-tests:
-
-2007-02-21 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- Made DRT paint when running run-webkit-tests in --leaks mode, to check
- for painting leaks.
-
- * DumpRenderTree/DumpRenderTree.m: Removed some "NO" initializations, since
- that's the default for statics.
- (dumpRenderTree): Added --paint command line option, which specifies that
- DRT should paint at the end of every test.
- (displayWebView): New function, called by dump() and -[LayoutTestController display].
- * Scripts/run-webkit-tests: Use the --paint command line option when checking
- for leaks.
-
- * Scripts/run-webkit-tests: Added a new, painting leak to the ignore list.
- Removed stale comment about THRD leaks -- we now ignore them reliably.
-
-2007-02-21 Geoffrey Garen <ggaren@apple.com>
-
- Tools tweak. No review necessary.
-
- * Scripts/parse-malloc-history: Enabled multiple merge-regexp command line
- arguments. Changed command line argument variables from special implicit
- no-op values to specific empty values that we test explicitly.
-
-2007-02-21 Vladimir Olexa <vladimir.olexa@gmail.com>
-
- Reviewed by Tim H.
-
- Bug 12834: Drosera should remember scroll position of open files like Xcode
- http://bugs.webkit.org/show_bug.cgi?id=12834
-
- * Drosera/debugger.js: Implemented scrolling memory
-
-2007-02-20 Geoffrey Garen <ggaren@apple.com>
-
- Tools tweak. No review necessary.
-
- Made parse-malloc-history executable. (Oops!)
-
- Made parse-malloc-history parse 'leaks' output in addition to 'malloc_history"
- output.
-
- Added the ability to merge callstacks by regexp, not just depth, so you
- can ask questions like, "How many of these allocations were due to that one
- call to ...?"
-
- * Scripts/parse-malloc-history:
-
-2007-02-20 Geoffrey Garen <ggaren@apple.com>
-
- * Scripts/parse-malloc-history: Added copyright info.
-
-2007-02-20 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- New script to parse the output from malloc_history, so we can determine
- what's using memory in WebKit.
-
- * Scripts/parse-malloc-history: Added.
-
-2007-02-20 Graham Dennis <graham.dennis@gmail.com>
-
- Reviewed by Darin Adler.
-
- Fix for http://bugs.webkit.org/show_bug.cgi?id=12802
- WebKit.framework is built with SVG_SUPPORT for No-SVG build
-
- * Scripts/build-webkit: Pass the "FEATURE_DEFINES=" option when building WebKit as well.
-
-2007-02-19 Geoffrey Garen <ggaren@apple.com>
-
- Build fix.
-
- * Scripts/check-for-global-initializers: Ignore the global counter I added
- for SubresourceLoaders.
-
-2007-02-19 Darin Adler <darin@apple.com>
-
- Reviewed by Tim Hatcher.
-
- * Scripts/check-for-global-initializers: Delete the linked executable if the check fails.
- Without this, you only see the global initializer error once, which makes it very easy
- to miss them.
-
-2007-02-16 Mark Rowe <mrowe@apple.com>
-
- Not reviewed.
-
- <rdar://problem/4982312> leaks bot should run in normal mode, rather than quiet mode
-
- * BuildSlaveSupport/build.webkit.org-config/webkit/steps.py: Switch back to default verbosity for output of leaks tests.
-
-2007-02-15 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Beth Dakin.
-
- * DumpRenderTree/DumpRenderTree.m: Don't ignore NSAttributedString WebCore::Node
- leaks anymore, either, since r19486 fixed them, too.
- (shouldIgnoreWebCoreNodeLeaks):
-
-2007-02-15 Darin Adler <darin@apple.com>
-
- * Scripts/run-webkit-tests: Don't ignore NSAttributedString leaks any more. Those were
- fixed by change 19486.
-
-2007-02-15 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Beth Dakin.
-
- Ignore another leak, seen recently on the buildbot.
-
- * Scripts/run-webkit-tests:
-
-2007-02-14 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Beth Dakin.
-
- Ignore another leak, seen recently on the buildbot.
-
- * Scripts/run-webkit-tests:
-
-2007-02-13 Darin Adler <darin@apple.com>
-
- * Scripts/run-webkit-tests: Fix a bug where --reset-results output would all go in one
- giant line.
-
-2007-02-11 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Mitz.
-
- - add contextClick() operation to eventSender to be able to test this
-
- * DumpRenderTree/EventSendingController.m:
- (+[EventSendingController isSelectorExcludedFromWebScript:]):
- (-[EventSendingController contextClick]):
-
-2007-02-11 Darin Adler <darin@apple.com>
-
- * Scripts/check-for-global-initializers: Fix case where executable doesn't exist at all
- so it doesn't give a perl exception (happens in clean builds, for example).
-
-2007-02-10 David Kilzer <ddkilzer@webkit.org>
-
- Reviewed by Adam.
-
- * Scripts/svn-create-patch:
- (findSourceFileAndRevision($)): Use File::Spec->abs2rel() instead of substr() to generate
- a relative path to the copied file.
-
-2007-02-10 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Sam Weinig.
-
- * Drosera/Drosera.icns: updated the icon with 512px and 256px variants
-
-2007-02-10 David Kilzer <ddkilzer@webkit.org>
-
- Reviewed by Timothy.
-
- * Scripts/svn-apply:
- (handleBinaryChange($$)): Binary patches don't need a trailing newline after the base64
- encoded text.
-
-2007-02-10 Brady Eidson <beidson@apple.com>
-
- Reviewed by Maciej
-
- <rdar://problem/4965133> WebKit sends file:// url referrers
-
- * Scripts/run-webkit-tests: Enhanced the http tests so that we can run layout tests
- on local files, but have an httpd for remote resources
-
-2007-02-08 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Beth Dakin.
-
- Ignore another false leak report.
-
- * Scripts/run-webkit-tests:
-
-2007-02-08 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Kevin McCullough.
-
- * Scripts/run-webkit-tests: Don't try to create /tmp/LayoutTests if it
- already exists, to avoid confusing error message.
-
- Also, remove /tmp/LayoutTests after running so unsupecting fools don't
- try to rm -rf it, only later to discover that they have completely hosed
- their machines.
-
-2007-02-08 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
-
- Reviewed by Adam Roben.
-
- Linux/gdk build fixes.
-
- * GdkLauncher/main.cpp: Add -exit-after-loading and
- -dump-render-tree as debugging aid.
- (strEq):
- (main):
-
-2007-02-08 Geoffrey Garen <ggaren@apple.com>
-
- Minor fixup based on Maciej's review last night.
-
- * Scripts/run-webkit-tests: Use normal "increment at end of loop" behavior,
- and do a little math to make it work.
-
-2007-02-08 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
-
- Reviewed by Adam Roben.
-
- Linux/gdk build fixes.
-
- * GdkLauncher/gdklauncher.bkl:
-
-2007-02-08 Kevin McCullough <KMcCullough@apple.com>
-
- - Fix layout test failures.
-
- * Scripts/run-webkit-tests:
-
-2007-02-08 Darin Adler <darin@apple.com>
-
- Reviewed by Anders.
-
- * Scripts/check-for-global-initializers: For speed, only check files that
- have been modified since the last time we linked. For tidiness, capture
- stderr from nm, and prevent "nm: no name list" messages from going out.
-
-2007-02-08 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak, Adam Roben.
-
- Added 'nthly' support to run-webkit-tests. It's like 'singly', for an
- arbitrary number n.
-
- Plus some renames:
- - DumpRenderTree => "dumpTool" (to match abstraction elsewhere)
- - checkLeaks => "shouldCheckLeaks" (to match style guidelines)
- - tool => dumpTool (to match abstraction elsewhere)
- - httpdOpen => isHttpdOpen (to match style guidelines)
-
- Plus a few logic fixups:
- - Don't check isDumpToolOpen when we know we've called openDumpTool().
- - Use a single code path to decide when to shut down dumpTool and
- when to check for leaks, since the operations are coincidental.
- - Use a single code path for running the leaks tool, since the only
- thing that varies between configurations is the output file name.
- - Increment $count after each test finishes, instead of at the end
- of the loop, to help with comparing to the length of the array
- and %-ing by n.
- - Use a more robust test inside the loop to determine if we need to
- close dumpTool, instead of copying the closing code outside the loop.
-
- Layout tests pass.
-
- * Scripts/run-webkit-tests:
-
-2007-02-06 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Beth Dakin, evil twin to Bethany P. Dakin.
-
- Ignore known leaks in CFRunLoop. Exclude THRD leaks by type so that we can
- catch all reports of them, not just those inside pthread_create.
-
- Also, use "\\" instead of "\" because we need the actual \ to get into the
- regexp string if it's going to do any escaping. (Oops!)
-
- * Scripts/run-webkit-tests:
-
-2007-02-06 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Bethany P. Dakin.
-
- The 's' is optional when the leaks tool reports 'leaks'.
-
- * Scripts/run-leaks:
-
-2007-02-06 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Bethany P. Dakin.
-
- Hooked up run-webkit-tests to the run-leaks script. No change in behavior yet.
-
- * Scripts/run-webkit-tests: Changed symbol names to valid regular expressions.
-
-2007-02-06 David Smith <catfish.man@gmail.com>
-
- Reviewed by Darin Adler.
-
- Patch for http://bugs.webkit.org/show_bug.cgi?id=12566
- [Drosera] Console history fixups
-
- * Drosera/console.js: assorted cleanups and fixes
-
-2007-02-05 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- New script that allows you to ignore leaks by regular expression.
-
- * Scripts/run-leaks: Added.
-
-2007-02-03 Sam Weinig <sam@webkit.org>
-
- Reviewed by Mark.
-
- Patch for http://bugs.webkit.org/show_bug.cgi?id=12555
- Drosera doesn't handle CR ( carriage returns ) well
-
- - Normalize all the line endings.
-
- * Drosera/debugger.js:
-
-2007-02-02 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- Added some more known leaks to the leaks ignore list.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Why does XCode
- hate itself so much?
- * Scripts/run-webkit-tests:
-
-2007-02-02 Geoffrey Garen <ggaren@apple.com>
-
- Even better build fix than the last.
-
- * ChangeLog:
- * DumpRenderTree/DumpRenderTree.m:
- (shouldIgnoreWebCoreNodeLeaks):
-
-2007-02-02 Geoffrey Garen <ggaren@apple.com>
-
- Fixed build. Added work-around for GCC bug.
-
- * DumpRenderTree/DumpRenderTree.m:
- (shouldIgnoreWebCoreNodeLeaks):
-
-2007-02-01 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Added support for selectively ignoring WebCore::Node leaks during layout
- tests, so that we can ignore known leaks in other components.
-
- * DumpRenderTree/DumpRenderTree.m:
- (shouldIgnoreWebCoreNodeLeaks): Implements a black list of tests whose
- WebCore::Node leaks we have to ignore. Does this CFString gobbledy-gook
- confuse anyone else?
- (runTest):
-
-2007-02-01 Anders Carlsson <acarlsson@apple.com>
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/UIDelegate.m:
- (-[UIDelegate webView:addMessageToConsole:]):
- Dump console messages.
-
-2007-01-31 Anders Carlsson <acarlsson@apple.com>
-
- * DumpRenderTree/ResourceLoadDelegate.m:
- (-[ResourceLoadDelegate webView:identifierForInitialRequest:fromDataSource:]):
- Use an NSString here so we can guarantee that -description always returns the same value.
-
-2007-01-31 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- Added Selection::toRange to the leaks -exclude list, since it comes up
- as a false positive (Radar 4967949).
-
- Also added RangeCounter to the global initializer exclude list. I added
- a RangeCounter since leaks won't detect all Range leaks anymore.
-
- * Scripts/check-for-global-initializers:
- * Scripts/run-webkit-tests:
-
-2007-01-31 Anders Carlsson <acarlsson@apple.com>
-
- * DumpRenderTree/ResourceLoadDelegate.m:
- (-[ResourceLoadDelegate webView:identifierForInitialRequest:fromDataSource:]):
- Don't try to create an identifier if resource loads shouldn't be dumped.
-
-2007-01-31 Anders Carlsson <acarlsson@apple.com>
-
- Reviewed by Geoff.
-
- Add dumping of resource loads. This isn't completely tweaked yet since the test results would
- rely on resources being delivered in the same order which might not always be true. However, it works good
- enough for the simple webarchive tests I want to do right now.
-
- * DumpRenderTree/DumpRenderTree.h:
- * DumpRenderTree/DumpRenderTree.m:
- (dumpRenderTree):
- (+[LayoutTestController isSelectorExcludedFromWebScript:]):
- (-[LayoutTestController dumpResourceLoadCallbacks]):
- (runTest):
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/ResourceLoadDelegate.h: Added.
- * DumpRenderTree/ResourceLoadDelegate.m: Added.
- Add new resource load delegate.
-
-2007-01-31 Geoffrey Garen <ggaren@apple.com>
-
- Backing out the CFRunLoopRunSpecific exclude command because it was overly
- broad. We'll either need to work around this leak in DRT, or do some
- custom grep-based leak ignoring.
-
- * Scripts/run-webkit-tests:
-
-2007-01-30 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Beth Dakin.
-
- Filed some more Radars in other components, added some more leaks to the
- exclusion list.
-
- * Scripts/run-webkit-tests: Ignore leaks in CFNotificationCenterAddObserver,
- CFRunLoopRunSpecific, and NSSpellChecker.
-
-2007-01-30 David Kilzer <ddkilzer@webkit.org>
-
- Reviewed by Darin Adler.
-
- http://bugs.webkit.org/show_bug.cgi?id=11882
- Need a way to regression test .webarchive output files
-
- Implement layoutTestController.dumpAsWebArchive() to test WebArchive format.
- Alters WebResourceResponse and WebResourceURL properties within WebArchive format
- to normalize URLs to remove path where WebKit was checked out. Also converts
- WebDataResource properties from data to string if the corresponding
- WebResourceMIMEType property starts with "text/" or equals
- "application/x-javascript".
-
- * DumpRenderTree/DumpRenderTree.m:
- (convertWebResourceDataToString): Added.
- (normalizeWebResourceURL): Added.
- (normalizeWebResourceResponse): Added.
- (serializeWebArchiveToXML): Added.
- (dump):
- (+[LayoutTestController isSelectorExcludedFromWebScript:]):
- (-[LayoutTestController dumpAsWebArchive]): Added.
- (runTest):
-
-2007-01-30 David Kilzer <ddkilzer@webkit.org>
-
- Reviewed by Mark Rowe.
-
- http://bugs.webkit.org/show_bug.cgi?id=12470
- svn-create-patch creates duplicate patches for files within an added/modified directory
-
- * Scripts/svn-create-patch:
- (sub generateFileList($\%\%)): Ignore directories when generating the file list.
-
-2007-01-29 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Fixed <rdar://problem/4485644> REGRESSION: JavaScriptCore has init routines
-
- No more mollycoddling for you, FastMalloc.o!
-
- * Scripts/check-for-global-initializers:
-
-2007-01-29 Graham Dennis <graham.dennis@gmail.com>
-
- Reviewed by Maciej.
-
- Enables layout test for: http://bugs.webkit.org/show_bug.cgi?id=10725
- Image data in from RTFD clipboard data thrown away
-
- - This method is needed because NSArrays are bridged to JS Arrays,
- which in turn are bridged back to WebScriptObjects when passed from
- JS to ObjC. Hence it is not possbile to pass an NSArray from JS.
-
- * DumpRenderTree/DumpRenderTree.m:
- (-[DumpRenderTreePasteboard declareType:owner:]): Added a convenience method for JS.
-
-2007-01-25 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Added support for test for <rdar://problem/4608404> WebScriptObject's
- _rootObject lack of ownership policy causes crashes (e.g., in Dashcode)
-
- * DumpRenderTree/DumpRenderTree.m:
- (+[LayoutTestController isSelectorExcludedFromWebScript:]):
- (+[LayoutTestController webScriptNameForSelector:]):
- (-[LayoutTestController storeWebScriptObject:]):
- (-[LayoutTestController accessStoredWebScriptObject]):
- (-[LayoutTestController dealloc]):
-
-2007-01-26 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Zack
-
- Small hack to ensure that our top level frame actually has the
- correct size. Unfortunately this means I'll have to regenerate
- all test cases :/
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
-
-2007-01-25 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Darin and Zack
-
- Move the test results for Qt into a directory of it's own
- (WebKit/LayoutTestResults/qt). Leave the Mac results where
- they are for now and share the text only results between
- Mac and Qt.
-
- Add support for a LayoutTestResults/platform/Skipped file
- to run-webkit-tests to be able to ignore certain tests
-
- Remove the old tests-skipped.txt from Qts DumpRenderTree
- implementation.
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::open):
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.h:
- * DumpRenderTree/DumpRenderTree.qtproj/tests-skipped.txt: Removed.
- * Scripts/run-webkit-tests:
-
-2007-01-24 Darin Adler <darin@apple.com>
-
- Reviewed by Oliver.
-
- - fix crash seen in layout tests
-
- * DumpRenderTree/EventSendingController.m: (-[EventSendingController dealloc]):
- Add back the line of code that sets savedMouseEvents to nil. I thought it was
- a field of the EventSendingController, but it's actually a global.
-
-2007-01-24 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - changed dragMode to be a property instead of a function
-
- * DumpRenderTree/EventSendingController.h: Renamed inDragMode to dragMode.
- * DumpRenderTree/EventSendingController.m:
- (+[EventSendingController isSelectorExcludedFromWebScript:]): Removed setDragMode.
- (+[EventSendingController isKeyExcludedFromWebScript:]): Added dragMode.
- (-[EventSendingController init]): Updated for name change.
- (-[EventSendingController leapForward:]): Ditto.
- (-[EventSendingController mouseUp]): Ditto.
- (-[EventSendingController mouseMoveToX:Y:]): Ditto.
-
-2007-01-24 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - made the deferral of mouse events until drag completes conditional
- it's needed for drag testing, and harmful for selection testing
-
- * DumpRenderTree/EventSendingController.h: Added inDragMode boolean.
- * DumpRenderTree/EventSendingController.m:
- (+[EventSendingController isSelectorExcludedFromWebScript:]): Added setDragMode:.
- (+[EventSendingController webScriptNameForSelector:]): Added name for setDragMode,
- and remove unneeded clearKillRing name.
- (-[EventSendingController init]): Initialize inDragMode to true.
- (-[EventSendingController dealloc]): Removed overzealous assertions -- we should
- not be asserting things that are dependent on the test content!
- (-[EventSendingController leapForward:]): Only queue events in drag mode.
- (-[EventSendingController setDragMode:]): Added.
- (-[EventSendingController mouseDown]): Removed overzealous assertion.
- (-[EventSendingController mouseUp]): Removed overzealous assertions.
- Only queue events in drag mode.
- (-[EventSendingController mouseMoveToX:Y:]): Only queue events in drag mode.
-
-2007-01-24 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Zack
-
- Add a signal handler, always dump immediately if we get an
- error during a page load and raise the timeout to 5 seconds
- (as we get a lot less such failures now)
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::maybeDump):
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.h:
- * DumpRenderTree/DumpRenderTree.qtproj/jsobjects.cpp:
- (LayoutTestController::waitUntilDone):
- * DumpRenderTree/DumpRenderTree.qtproj/main.cpp:
- (crashHandler):
- (main):
- * DumpRenderTree/DumpRenderTree.qtproj/tests-skipped.txt:
-
-2007-01-22 Darin Adler <darin@apple.com>
-
- Reviewed by Mitz.
-
- - a couple tiny tweaks to make --reset-results work better
-
- * Scripts/run-webkit-tests: Always generate results when --reset-results is specified.
- Don't make a separate "new" entry while generating results when --reset-results
- is specified since new results are the norm in that case.
-
-2007-01-21 Sanjay Madhav <sanjay12@gmail.com>
-
- Reviewed by Darin Adler.
-
- Test support for: <rdar://problem/4928583> Memory usage grows when reloading google.com/ig
-
- This adds a getJSObjectCount test-accessible function to allow test scripts to track JSObject usage.
-
- * DumpRenderTree/GCController.h:
- * DumpRenderTree/GCController.mm:
- (+[GCController isSelectorExcludedFromWebScript:]):
- (-[GCController getJSObjectCount]):
-
-2007-01-20 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Maciej.
-
- * BuildSlaveSupport/build.webkit.org-config/webkit/steps.py: Track the output of run-javascriptcore-tests,
- catch single regressions, and don't generate tests results for new tests.
-
-2007-01-20 Adam Roben <aroben@apple.com>
-
- Rubberstamped by Maciej.
-
- * Scripts/run-webkit-tests: Change the default behavior back to
- generating results for new tests (this can be disabled with
- --no-new-test-results)
-
-2007-01-19 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Adam Roben.
-
- run-webkit-tests does now not generate new results by default anymore.
- You'll have to pass the --new-tests flag to it to force it to do so.
-
- This is required to make it possible to have tests running on multiple
- platforms peacefully together.
-
- * Scripts/run-webkit-tests:
-
-2007-01-18 Darin Adler <darin@apple.com>
-
- Reviewed by John Sullivan.
-
- * Scripts/run-webkit-tests: Fix handling of configuration so it
- does the right thing when no explicit configuration is passed in.
- The old code assumed that the result of setConfiguration() was the
- configuration, but it's undefined when no configuration is
- explicitly passed in. The correct function to use is
- configuration(), and I also streamlined the code.
-
-2007-01-17 Lars Knoll <lars@trolltech.com>
-
- Fix my last commit to actually work in all cases.
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::readStdin):
-
-2007-01-17 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Maciej
-
- Make sure DumpRenderTree exits when run-webkit-tests
- is done.
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::readStdin):
-
-2007-01-17 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Zack
-
- Small fixes in DumpRenderTree, so we don't by
- accident dump twice for the same test.
-
- Exclude one more test as it currently causes DumpRenderTree to
- hang forever.
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::readStdin):
- (WebCore::DumpRenderTree::dump):
- * DumpRenderTree/DumpRenderTree.qtproj/jsobjects.cpp:
- (LayoutTestController::notifyDone):
- * DumpRenderTree/DumpRenderTree.qtproj/tests-skipped.txt:
-
-2007-01-17 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Zack
-
- Add a message handler to DumpRenderTree that will
- suppress all debug output coming from qDebug() statements.
- Like this we can get rid of all the noise coming
- from the notImplemented() macro when running the
- layout tests. You can get it back by adding -v to
- DumpRenderTree's command line.
-
- Changed run-webkit-tests slightly, so we by default
- don't fail anymore when our output differs from what
- is generated on the Mac. Added a --strict option, so
- that we can still see this cases and fix them one by one.
-
- * DumpRenderTree/DumpRenderTree.qtproj/main.cpp:
- (messageHandler):
- (main):
- * Scripts/run-webkit-tests:
-
-2007-01-16 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Zack
-
- Use the new public API for the Qt build, and don't rely on
- WebKit internals anymore.
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::~DumpRenderTree):
- (WebCore::DumpRenderTree::open):
- (WebCore::DumpRenderTree::readStdin):
- (WebCore::DumpRenderTree::initJSObjects):
- (WebCore::DumpRenderTree::dump):
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.h:
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.pro:
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTreeClient.cpp: Removed.
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTreeClient.h: Removed.
- * DumpRenderTree/DumpRenderTree.qtproj/jsobjects.cpp:
- (LayoutTestController::notifyDone):
- (LayoutTestController::timerEvent):
- * DumpRenderTree/DumpRenderTree.qtproj/main.cpp:
- (main):
- * DumpRenderTree/DumpRenderTree.qtproj/tests-skipped.txt:
-
-2007-01-15 Justin Garcia <justin.garcia@apple.com>
-
- Reviewed by mjs
-
- <rdar://problem/4810960>
- Gmail Editor: window.focus() called on keyDown (9640)
-
- * DumpRenderTree/EventSendingController.m: Send the keyDown event
- to the firstResponder, not the event's locationInWindow. A
- key press's locationInWindow is meaningless and just a dummy
- coordinate.
-
-2007-01-15 Eric Seidel <eric@webkit.org>
-
- Reviewed by bdash.
-
- Add a script to keep our header guards squeaky clean.
-
- * Scripts/clean-header-guards: Added.
-
-2007-01-15 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Zack
-
- Fix a few smaller issues in here, and update
- our list of skipped tests.
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::readStdin):
- (WebCore::DumpRenderTree::dump):
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.h:
- * DumpRenderTree/DumpRenderTree.qtproj/jsobjects.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::reset):
- (LayoutTestController::waitUntilDone):
- (LayoutTestController::notifyDone):
- (LayoutTestController::dumpEditingCallbacks):
- (LayoutTestController::timerEvent):
- * DumpRenderTree/DumpRenderTree.qtproj/jsobjects.h:
- * DumpRenderTree/DumpRenderTree.qtproj/tests-skipped.txt:
-
-2007-01-14 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Adam.
-
- <rdar://problem/4908909> Need to create Leopard nightly build
-
- * WebKitLauncher/WebKitLauncher.xcodeproj/project.pbxproj: Always use the 10.4 Universal SDK. The disk images don't mount pre-10.4 so we aren't losing anything here.
- * WebKitLauncher/WebKitNightlyEnabler.m:
- (poseAsWebKitApp): Simplify CoreFoundation-related hackery by using _CFGetProcessPath instead of walking the mach-o symbol tables. The smaller timeframe where the
- CFProcessPath environment variable is set allows this to work correctly on Leopard where the old code failed.
- (enableWebKitNightlyBehaviour):
- * WebKitLauncher/main.m:
- (main): Pass executable path as WebKitAppPath rather than CFProcessPath to prevent it being picked up too early by CoreFoundation.
- * Drosera/launcher.m:
- (main): Ditto
-
-2007-01-12 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Zack
-
- Get DumpRenderTree to work again for the Qt build.
-
- Make run-webkit-tests a little less verbose when testing
- Qt, and add an option to run DumpRenderTree inside valgrind
- (useful for debugging)
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::~DumpRenderTree):
- (WebCore::DumpRenderTree::open):
- (WebCore::DumpRenderTree::dump):
- (WebCore::DumpRenderTree::maybeDump):
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.h:
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTreeClient.cpp:
- (WebCore::DumpRenderTreeClient::dispatchDidHandleOnloadEvents):
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTreeClient.h:
- * DumpRenderTree/DumpRenderTree.qtproj/tests-skipped.txt:
- * Scripts/run-webkit-tests:
-
-2007-01-12 Zack Rusin <zack@kde.org>
-
- Add WEBKIT_FULLBUILD env variable to get the
- build do a make clean before make to cleanout the
- stale depenendencies (for buildbot mainly).
-
- * Scripts/webkitdirs.pm:
-
-2007-01-11 Mitz Pettel <mitz@webkit.org>
-
- Reviewed by Hyatt.
-
- - http://bugs.webkit.org/show_bug.cgi?id=10249
- Temporarily disable tests that are causing kernel panics
-
- Changed the ImageDiff tool not to use CoreImage filters.
-
- * DumpRenderTree/ImageDiff.m:
- (main):
- (createImageFromStdin):
- (compareImages):
- (getDifferenceBitmap):
-
-2007-01-11 Lars Knoll <lars@trolltech.com>
-
- Fix compilation
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.pro:
-
-2007-01-11 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Darin Adler.
-
- Adjust to loader changes.
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
-
-2007-01-06 George Staikos <staikos@kde.org>
-
- This doesn't build on all unix platforms!
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.pro:
-
-2007-01-05 Zack Rusin <zack@kde.org>
-
- Reviewed by Simon.
-
- Fix the undefined warnings and try to detect
- the DISPLAY properly.
-
- * Scripts/run-webkit-tests:
-
-2007-01-05 David Kilzer <ddkilzer@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Speed up svn-create-patch for copied and moved files.
-
- * Scripts/svn-create-patch:
- (manufacturePatchForAdditionWithHistory($$)): Use 'svn cat' instead of 'svn cat -rNNNNN'
- so svn pulls original from local disk.
-
-2007-01-04 Lars Knoll <lars@trolltech.com>
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.pro:
- Link with RPATH to (hopefully) get the automatic tests working.
-
-2007-01-03 Mark Rowe <bdash@webkit.org>
-
- Reviewed by Anders.
-
- * Scripts/run-webkit-tests: Launch Safari using the same WebKit build configuration as the layout tests used.
-
-2007-01-02 Zack Rusin <zack@kde.org>
-
- Make it work after javascriptcore/bindings changes.
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::initJSObjects):
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.pro:
-
-2007-01-01 David Kilzer <ddkilzer@webkit.org>
-
- Reviewed by Darin Adler.
-
- http://bugs.webkit.org/show_bug.cgi?id=12023
- svn-create-patch and friends should handle moved/copied files
-
- * Scripts/svn-apply: Identify copied files and handle those before all other patches.
- * Scripts/svn-create-patch: Generate patches with subtle changes for copied files.
- (findMimeType($)): Added.
- (findModificationTime($)): Added.
- (findSourceFileAndRevision($)): Added.
- (generateDiff($$$)): Changed to use svn stat instead of svn diff.
- (isBinaryMimeType($)): Added.
- (manufacturePatchForAdditionWithHistory($$)): Added.
- * Scripts/svn-unapply: Identify copied files and handle those after unapplying all other patches.
-
-2006-12-29 Eric Seidel <eric@webkit.org>
-
- Reviewed by olliej.
-
- Stop DumpRenderTree from reporting false Frame/Node leaks due to new SVGImage
-
- * DumpRenderTree/DumpRenderTree.m:
- (dumpRenderTree): clear WebCore cache before exiting
-
-2006-12-29 David Kilzer <ddkilzer@webkit.org>
-
- Reverted last commit until WebResourceData issue is fixed.
-
- http://bugs.webkit.org/show_bug.cgi?id=11882
- Need a way to regression test .webarchive output files
-
- * DumpRenderTree/DumpRenderTree.m:
- (serializeWebArchiveToXML): Removed.
- (dump):
- (+[LayoutTestController isSelectorExcludedFromWebScript:]):
- (-[LayoutTestController dumpAsWebArchive]): Removed.
- (runTest):
-
-2006-12-28 David Kilzer <ddkilzer@webkit.org>
-
- Reviewed by Darin Adler.
-
- http://bugs.webkit.org/show_bug.cgi?id=11882
- Need a way to regression test .webarchive output files
-
- Implement layoutTestController.dumpAsWebArchive() to test WebArchive format.
- Saves WebArchive plist in xml format, then alters file:// URLs to remove path
- where WebKit was checked out.
-
- * DumpRenderTree/DumpRenderTree.m:
- (serializeWebArchiveToXML): Added.
- (dump):
- (+[LayoutTestController isSelectorExcludedFromWebScript:]):
- (-[LayoutTestController dumpAsWebArchive]): Added.
- (runTest):
-
-2006-12-28 George Staikos <staikos@kde.org>
-
- Reviewed by Olliej.
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.pro: don't build on non-X11
-
-2006-12-27 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Eric Seidel. Prose edited by Mitz Pettel.
-
- Some cleanup I did while debugging the regression in plugins/netscape-dom-access.html.
-
- No behavior change. Layout tests pass.
-
- * DumpRenderTree/DumpRenderTree.h: Exported the done BOOL in place of the
- doneLoading() accessor function. This matches the rest of DRT's exports and
- makes it easier to search for clients who check (!done).
-
- * DumpRenderTree/DumpRenderTree.m: Moved fflush() call to runTest() so
- it would cover both code paths for calling runTest().
-
- (dumpRenderTree): "doneLoading()" => "done"
- (dump): ditto
- * DumpRenderTree/EditingDelegate.m: ditto
- (-[EditingDelegate webView:shouldBeginEditingInDOMRange:]): ditto
- (-[EditingDelegate webView:shouldEndEditingInDOMRange:]): ditto
- (-[EditingDelegate webView:shouldInsertNode:replacingDOMRange:givenAction:]): ditto
- (-[EditingDelegate webView:shouldInsertText:replacingDOMRange:givenAction:]): ditto
- (-[EditingDelegate webView:shouldDeleteDOMRange:]): ditto
- (-[EditingDelegate webView:shouldChangeSelectedDOMRange:toDOMRange:affinity:stillSelecting:]): ditto
- (-[EditingDelegate webView:shouldApplyStyle:toElementsInDOMRange:]): ditto
- (-[EditingDelegate webView:shouldChangeTypingStyle:toStyle:]): ditto
- (-[EditingDelegate webViewDidBeginEditing:]): ditto
- (-[EditingDelegate webViewDidChange:]): ditto
- (-[EditingDelegate webViewDidEndEditing:]): ditto
- (-[EditingDelegate webViewDidChangeTypingStyle:]): ditto
- (-[EditingDelegate webViewDidChangeSelection:]): ditto
- * DumpRenderTree/UIDelegate.m: ditto
- (-[UIDelegate webView:runJavaScriptAlertPanelWithMessage:]): ditto
-
-2006-12-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by bradee-oh.
-
- Add very simple run-pageloadtest script for running SVG page load test.
-
- * Scripts/run-pageloadtest: Added.
-
-2006-12-26 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Eric Seidel.
-
- Some cleanup in preparation for fixing <rdar://problem/4740328> Safari
- crash on quit in _NPN_ReleaseObject from KJS::Bindings::CInstance::~CInstance
-
- (dumpRenderTree): Renamed "installedPlugins" to "sharedDatabase."
-
-2006-12-23 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Added --threaded support to run-webkit-tests and DumpRenderTree.
-
- In "threaded" mode, DRT runs a concurrent JavaScript thread with each test,
- stressing the thread safety of JavaScriptCore and the JavaScriptCore/WebCore
- interface. This is useful for tracking down bugs you might see on a system
- configured to use a PAC file.
-
- Ironically, I can proudly state that very few layout tests pass.
-
- * DumpRenderTree/DumpRenderTree.m: Added javaScriptThread and helper functions
- for starting and stopping it.
- (runJavaScriptThread): helper function
- (startJavaScriptThread): helper function
- (stopJavaScriptThread): helper function
-
- (dumpRenderTree): Added --threaded command line argument.
- * Scripts/run-webkit-tests: ditto
-
-2006-12-22 Mark Rowe <bdash@webkit.org>
-
- Reviewed by Brady.
-
- Fix for <rdar://problem/4265976>
- prepare-ChangeLog sometimes lists the wrong Objective-C class name for a changed method
-
- * Scripts/prepare-ChangeLog: Treat @end as the end of both the interface and the method declaration.
-
-2006-12-21 Mark Rowe <bdash@webkit.org>
-
- Reviewed by Tim Hatcher.
-
- http://bugs.webkit.org/show_bug.cgi?id=11922
- Bug 11922: REGRESSION(r17128): Drosera no longer shows local variables in stack frame
-
- * Drosera/DebuggerDocument.m:
- (-[WebScriptObject webScriptAttributeKeysForScriptObject:]): Use an anonymous function with function.call to
- ensure that the properties are being retrieved from the correct scope object.
-
-2006-12-21 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Zack
-
- Add support for the layoutTestController JavaScript object
- to be able to get textOnly dumps.
- Added a Qt specific hack to always get the same fonts (the ones
- added in this submit) and the same dpi when running the layout tests.
- Modified the run-webkit-tests script to also do a comparison to the
- Mac generated outputs (by stripping out positioning information).
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::open):
- (WebCore::DumpRenderTree::resetJSObjects):
- (WebCore::DumpRenderTree::initJSObjects):
- (WebCore::DumpRenderTree::dump):
- (WebCore::DumpRenderTree::checkLoaded):
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.h:
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.pro:
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTreeClient.cpp:
- (WebCore::DumpRenderTreeClient::DumpRenderTreeClient):
- (WebCore::DumpRenderTreeClient::partClearedInBegin):
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTreeClient.h:
- * DumpRenderTree/DumpRenderTree.qtproj/fontoverload.cpp: Added.
- (QX11Info::appDpiY):
- (QX11Info::appDpiX):
- (qt_x11ft_convert_pattern):
- (LayoutTestController::LayoutTestController):
- * DumpRenderTree/DumpRenderTree.qtproj/jsobjects.h: Added.
- * DumpRenderTree/DumpRenderTree.qtproj/jsobjects.cpp: Added.
- (LayoutTestController::shouldDumpAsText):
- (LayoutTestController::shouldWaitUntilDone):
- (LayoutTestController::reset):
- (LayoutTestController::dumpAsText):
- (LayoutTestController::waitUntilDone):
- (LayoutTestController::notifyDone):
- * DumpRenderTree/DumpRenderTree.qtproj/fonts/AHEM____.TTF: Added.
- * DumpRenderTree/DumpRenderTree.qtproj/fonts/COPYING: Added.
- * DumpRenderTree/DumpRenderTree.qtproj/fonts/CourierBold.ttf: Added.
- * DumpRenderTree/DumpRenderTree.qtproj/fonts/CourierBoldOblique.ttf: Added.
- * DumpRenderTree/DumpRenderTree.qtproj/fonts/CourierMedium.ttf: Added.
- * DumpRenderTree/DumpRenderTree.qtproj/fonts/CourierMediumOblique.ttf: Added.
- * DumpRenderTree/DumpRenderTree.qtproj/fonts/HelveticaBold.ttf: Added.
- * DumpRenderTree/DumpRenderTree.qtproj/fonts/HelveticaBoldOblique.ttf: Added.
- * DumpRenderTree/DumpRenderTree.qtproj/fonts/HelveticaMedium.ttf: Added.
- * DumpRenderTree/DumpRenderTree.qtproj/fonts/HelveticaMediumOblique.ttf: Added.
- * DumpRenderTree/DumpRenderTree.qtproj/fonts/SymbolMedium.ttf: Added.
- * DumpRenderTree/DumpRenderTree.qtproj/fonts/TimesBold.ttf: Added.
- * DumpRenderTree/DumpRenderTree.qtproj/fonts/TimesBoldItalic.ttf: Added.
- * DumpRenderTree/DumpRenderTree.qtproj/fonts/TimesMedium.ttf: Added.
- * DumpRenderTree/DumpRenderTree.qtproj/fonts/TimesMediumItalic.ttf: Added.
- * Scripts/run-webkit-tests:
-
-2006-12-21 Mark Rowe <bdash@webkit.org>
-
- Reviewed by Geoff.
-
- http://bugs.webkit.org/show_bug.cgi?id=11888
- Bug 11888: REGRESSION (r18320): Web Inspector panes broken
-
- * Drosera/debugger.js: Use removeProperty to reset a style property to its initial value.
-
-2006-12-18 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Beth Dakin.
-
- Updated EventSender to be able to send mouse up events outside the WebView.
- This is a minor tweak to a hackish implementation. The real solution
- should be to use NSApplication's event sending model instead of rolling
- our own, but I don't have time for that right now.
-
- * DumpRenderTree/EventSendingController.m:
- (-[EventSendingController mouseUp]):
-
-2006-12-15 Marvin Decker <marv.decker@gmail.com>
-
- Reviewed by Darin and Alexey.
-
- Fix the Windows build, move various Client implementations out of
- WebCore and into WebKit.
-
- * Spinneret/Spinneret.sln:
-
-2006-12-14 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Brady.
-
- * Makefile.shared: use $PIPESTATUS[0] and a sub-shell to exit with xcodebuild's exit status
-
-2006-12-13 Zack Rusin <zack@kde.org>
-
- Reviewed by rwlbuis
-
- Use the qmake build by default with Qt - it's the one that works
- currently.
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
-
-2006-12-10 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Zack
-
- Some more fixes to the dumprendertree application.
- Fix the run-webkit-tests script for Qt.
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::open):
- (WebCore::DumpRenderTree::readStdin):
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.h:
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.pro: Added.
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
-
-2006-12-10 Rob Buis <buis@kde.org>
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/DumpRenderTree.m:
- (dump):
-
-2006-12-10 Lars Knoll <lars@trolltech.com>
-
- Reviewed by Zack
-
- Get the DumpRenderTree app to compile again
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::open):
- (WebCore::DumpRenderTree::readStdin):
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.pro: Added.
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTreeClient.cpp:
- (WebCore::DumpRenderTreeClient::DumpRenderTreeClient):
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTreeClient.h:
- * DumpRenderTree/DumpRenderTree.qtproj/main.cpp:
- (main):
-
-2006-12-09 George Staikos <staikos@kde.org>
-
- Reviewed by Zack.
-
- Repair QMake build on OS X.
-
- * Scripts/build-webkit:
-
-2006-12-09 Zack Rusin <zack@kde.org>
-
- Fixing small mistakes in the build scripts for
- the qmake builds.
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
-
-2006-12-09 Simon Hausmann <hausmann@kde.org>
-
- Reviewed by hyatt.
-
- Add support for a QMake build using build-webkit --qmake
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
-
-2006-12-09 George Staikos <staikos@kde.org>
-
- Reviewed by Zack.
-
- Remove reference to Unity.
-
- * Scripts/webkitdirs.pm:
-
-2006-12-08 Zack Rusin <zack@kde.org>
-
- Reviewed by Maciej.
-
- Fix the compile after recent API changes.
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- * DumpRenderTree/DumpRenderTree.qtproj/main.cpp:
- (main):
-
-2006-12-08 George Staikos <staikos@kde.org>
-
- Reviewed by Maciej.
-
- Build Qt webkit on non-linux, and prefer it if $QTDIR is set
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
-
-2006-12-06 Steve Falkenburg <sfalken@apple.com>
-
- Support C strings for localization
-
- * Scripts/extract-localizable-strings:
-
-2006-12-04 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by Darin Adler.
-
- Make extract-localizable-strings compatible with cpp file extensions.
-
- * Scripts/extract-localizable-strings:
-
-2006-11-21 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - a couple changes to reduce the chance of false positives on the leakbot
-
- * DumpRenderTree/DumpRenderTree.m:
- (dumpRenderTree): Move the main function into a separate function so we can run
- a final garbage collect afterward without any stray values on the stack. Replaced
- the old way of closing down a WebView (setting the delegates to nil) with the new
- way (calling the close method), which does a more complete job of shutting
- everything down without waiting for the WebView object to be deallocated.
- (main): Put auto-release pool here and added an explicit call to garbage collect.
- With a separate function, we greatly reduce the chance that a stray address on the
- stack will keep an object alive.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Let Xcode do its thing,
- because I don't have what it takes to fight the power.
-
-2006-11-17 Zack Rusin <zack@kde.org>
-
- Reviewed by Mitz. Landed by Niko.
-
- Fixing compilation.
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree): Adding
- ContextMenuClient to the constructor
-
-2006-11-12 Mark Rowe <bdash@webkit.org>
-
- Reviewed by Mitz.
-
- Clean up of GdkLauncher bakefile.
-
- * GdkLauncher/gdklauncher.bkl:
-
-2006-11-11 Nikolas Zimmermann <zimmermann@kde.org>
-
- Reviewed and landed by Anders.
-
- Make DRT work again on Qt/Linux.
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
-
-2006-11-10 Zack Rusin <zack@kde.org>
-
- Reviewed and landed by Anders.
-
- Adjusting to the recent loader changes, making it compile
- and work.
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::checkLoaded):
- * DumpRenderTree/DumpRenderTree.qtproj/main.cpp:
-
-2006-11-10 Zack Rusin <zack@kde.org>
-
- Reviewed by Anders.
-
- Making the Qt code work after refactorings in WebCore.
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::checkLoaded):
- * DumpRenderTree/DumpRenderTree.qtproj/main.cpp:
-
-2006-11-08 Darin Adler <darin@apple.com>
-
- Reviewed by Anders.
-
- - same change as below, only tested this time
-
- * DumpRenderTree/DumpRenderTree.m: (main): Explicitly turn "tab to links"
- mode off. I think we need to do this because WebPreferences saves things
- for us automatically. It would be good to turn that off for DumpRenderTree,
- but for now lets handle this like the other preferences (set it explicitly
- each time).
-
-2006-11-08 Darin Adler <darin@apple.com>
-
- Reviewed by Anders.
-
- * DumpRenderTree/DumpRenderTree.m: (main): Get rid of code to turn on
- "tab to links" mode. No current tests depend on this, and there's a new
- test I want to land that depends on the default setting.
-
-2006-11-06 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
-
- Reviewed by Maciej.
-
- Linux\gdk build fixes.
-
- * GdkLauncher/main.cpp:
- (LauncherFrameGdk::LauncherFrameGdk):
- (main):
-
-2006-11-06 Alexey Proskuryakov <ap@nypop.com>
-
- Build fix, approved in principle by Tim H.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- Disable deprecated warnings for main.c (TestNetscapePlugin),
- as it now uses QuickDraw to convert mouse event coordinates.
-
-2006-11-05 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Maciej.
-
- Bug 11525: [Drosera] function menu doesn't understand object.method = function() {} syntax
- http://bugs.webkit.org/show_bug.cgi?id=11525
-
- * Drosera/debugger.js: imporved the function name code
-
-2006-11-06 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Maciej.
-
- Make sure that alerts and delegate output made after notifyDone() are ignored, rather than
- being attributed to the next test.
-
- * DumpRenderTree/EditingDelegate.m:
- (-[EditingDelegate webView:shouldBeginEditingInDOMRange:]):
- (-[EditingDelegate webView:shouldEndEditingInDOMRange:]):
- (-[EditingDelegate webView:shouldInsertNode:replacingDOMRange:givenAction:]):
- (-[EditingDelegate webView:shouldInsertText:replacingDOMRange:givenAction:]):
- (-[EditingDelegate webView:shouldDeleteDOMRange:]):
- (-[EditingDelegate webView:shouldChangeSelectedDOMRange:toDOMRange:affinity:stillSelecting:]):
- (-[EditingDelegate webView:shouldApplyStyle:toElementsInDOMRange:]):
- (-[EditingDelegate webView:shouldChangeTypingStyle:toStyle:]):
- (-[EditingDelegate webViewDidBeginEditing:]):
- (-[EditingDelegate webViewDidChange:]):
- (-[EditingDelegate webViewDidEndEditing:]):
- (-[EditingDelegate webViewDidChangeTypingStyle:]):
- (-[EditingDelegate webViewDidChangeSelection:]):
- * DumpRenderTree/UIDelegate.m:
- (-[UIDelegate webView:runJavaScriptAlertPanelWithMessage:]):
-
-2006-11-06 Mark Rowe <bdash@webkit.org>
-
- Reviewed by Alexey.
-
- Fix "Undefined subroutine &main::WEXITSTATUS" when build-dumprendertree fails.
-
- * Scripts/run-webkit-tests: import the POSIX module.
-
-2006-11-06 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Maciej.
-
- Test for http://bugs.webkit.org/show_bug.cgi?id=11517
- REGRESSION: Flash clicks/interactivity not working properly
-
- Teach TestNetscapePlugin to log events passed to it. To enable, set eventLoggingEnabled to true:
-
- <embed name="plg" type="application/x-webkit-test-netscape" width=100 height=100></embed>
- <script>
- plg.eventLoggingEnabled = true;
- // use eventSender to simulate events...
- </script>
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c:
- (pluginGetProperty):
- (pluginSetProperty):
- (pluginAllocate):
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h:
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.c:
- (NPP_HandleEvent):
-
-2006-11-04 David Smith <catfish.man@gmail.com>
-
- Reviewed by Tim H.
-
- Fixes: http://bugs.webkit.org/show_bug.cgi?id=11521
- Bug 11521: [Drosera] Breakpoint editor UI behaves incorrectly when multiple editors are open
-
- * Drosera/debugger.js: Use .// instead of // so that it doesn't root the search at the document.
-
-2006-11-04 David Smith <catfish.man@gmail.com>
-
- Reviewed by Tim H.
-
- Fixes: http://bugs.webkit.org/show_bug.cgi?id=11513
- Bug 11513: [Drosera] Function popup fails to appear when clicking supposedly valid areas.
-
- * Drosera/debugger.css: Stick a min-width on the menu to keep it from becoming smaller than the control.
-
-2006-11-04 David Smith <catfish.man@gmail.com>
-
- Reviewed by Tim H.
-
- Fixes: http://bugs.webkit.org/show_bug.cgi?id=11512
- Bug 11512: [Drosera] Scrolling via keyboard breaks after clicking in function popup.
-
- * Drosera/debugger.js: blur() the function popup when we're done with it.
-
-2006-11-04 Mark Rowe <bdash@webkit.org>
-
- Reviewed by Darin Adler.
-
- Fix use of uninitialized value in pattern match.
-
- * Scripts/webkitdirs.pm:
-
-2006-11-04 Darin Adler <darin@apple.com>
-
- Reviewed by Tim Hatcher.
-
- * Scripts/webkitdirs.pm: Don't try to use the Xcode build setting if it's project-relative.
-
-2006-11-03 David Smith <catfish.man@gmail.com>
-
- Reviewed by Tim H.
-
- Fixes: http://bugs.webkit.org/show_bug.cgi?id=11510
- Bug 11510: [Drosera] Doubleclicking the attach table should attach to the clicked item.
-
- * Drosera/DebuggerApplication.m:
- (-[DebuggerApplication showAttachPanel:]): Set the doubleAction for the table view
-
-2006-11-03 Vladimir Olexa <vladimir.olexa@gmail.com>
-
- Reviewed by Tim H.
-
- Fixes: http://bugs.webkit.org/show_bug.cgi?id=9596
- Bug 9596: [Drosera] add a function popup to the source pane
-
- * Drosera/debugger.css: Added styles for function popup
- * Drosera/debugger.html: Added function popup button and select
- * Drosera/debugger.js: Added function popup functionality
-
-2006-11-03 Michael Emmel <mike.emmel@gmail.com>
-
- Reviewed by Maciej.
-
- http://bugs.webkit.org/show_bug.cgi?id=9671
-
- * Scripts/wkstyle:
- Adds astyle sed script formats according to most of the style guidelines.
-
-2006-11-03 Alexey Proskuryakov <ap@nypop.com>
-
- Reviewed by Adele.
-
- http://bugs.webkit.org/show_bug.cgi?id=7323
- REGRESSION (10.4.4): ondrag* events don't fire on page in a frame
-
- When dragging, do not send EventSendingController's events immediately. Dragging
- is supposed to be modal, so we need to perform it from within the delegate, without
- returning to JS to make the next mouse movement.
-
- When the mouse is down, mouse events are now recorded, and executed when mouseUp is sent.
-
- * DumpRenderTree/EventSendingController.h:
- * DumpRenderTree/EventSendingController.m:
- (-[EventSendingController dealloc]):
- (-[EventSendingController leapForward:]):
- (-[EventSendingController mouseDown]):
- (-[EventSendingController mouseUp]):
- (-[EventSendingController mouseMoveToX:Y:]):
- (+[EventSendingController saveEvent:]):
- (+[EventSendingController replaySavedEvents]):
- * DumpRenderTree/UIDelegate.m:
- (-[UIDelegate webView:dragImage:at:offset:event:pasteboard:source:slideBack:forView:]):
-
-2006-11-02 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Justin Garcia.
-
- Made dumping of editing callbacks opt-in, so that editing spew doesn't
- cloud non-editing tests.
-
- * DumpRenderTree/DumpRenderTree.m:
- (+[LayoutTestController isSelectorExcludedFromWebScript:]):
- (-[LayoutTestController shouldDumpEditingCallbacks]):
- (runTest):
- * DumpRenderTree/EditingDelegate.m:
- (-[EditingDelegate webView:shouldBeginEditingInDOMRange:]):
- (-[EditingDelegate webView:shouldEndEditingInDOMRange:]):
- (-[EditingDelegate webView:shouldInsertNode:replacingDOMRange:givenAction:]):
- (-[EditingDelegate webView:shouldInsertText:replacingDOMRange:givenAction:]):
- (-[EditingDelegate webView:shouldDeleteDOMRange:]):
- (-[EditingDelegate webView:shouldChangeSelectedDOMRange:toDOMRange:affinity:stillSelecting:]):
- (-[EditingDelegate webView:shouldApplyStyle:toElementsInDOMRange:]):
- (-[EditingDelegate webView:shouldChangeTypingStyle:toStyle:]):
- (-[EditingDelegate webViewDidBeginEditing:]):
- (-[EditingDelegate webViewDidChange:]):
- (-[EditingDelegate webViewDidEndEditing:]):
- (-[EditingDelegate webViewDidChangeTypingStyle:]):
- (-[EditingDelegate webViewDidChangeSelection:]):
-
-2006-11-02 Alexey Proskuryakov <ap@nypop.com>
-
- Reviewed by Maciej, landed by Anders.
-
- - http://bugs.webkit.org/show_bug.cgi?id=7802
- devenv.com not available in VC++ Express installations
-
- * Scripts/webkitdirs.pm: Make Windows build work with Visual C++ Express.
- * Scripts/install-win-extras: Make setx.exe actually run.
-
-2006-11-01 Stephanie Lewis <slewis@apple.com>
-
- Reviewed by Kevin.
-
- Fixed bug where additional arguments got fed to xcode and jsdriver.pl
- Since testkjs is being built before the tests are run, we don't need
- to build it with webkit.
-
- Fixes bugs
- http://bugs.webkit.org/show_bug.cgi?id=11462
- http://bugs.webkit.org/show_bug.cgi?id=6168
-
- * Scripts/build-webkit:
- * Scripts/run-javascriptcore-tests:
-
-2006-11-01 Brady Eidson <beidson@apple.com>
-
- Reviewed by Tim Hatcher
-
- Added accessor to get the source directory for use in client scripts
-
- * Scripts/webkitdirs.pm:
-
-2006-11-01 Mark Rowe <bdash@webkit.org>
-
- Reviewed by Mitz.
-
- Update references to webkit.opendarwin.org to webkit.org in Spinneret and WebKit.app.
-
- * Spinneret/Spinneret/Spinneret.cpp:
- (_tWinMain):
- * WebKitLauncher/WebKitNightlyEnabler.m:
- (cleanUpAfterOurselves):
-
-2006-10-31 Mark Rowe <bdash@webkit.org>
-
- Reviewed by Stephanie.
-
- Limit build slaves to a single build to prevent concurrent builds on a single slave from significantly increasing build time.
-
- * BuildSlaveSupport/build.webkit.org-config/webkit/builders.py: Adjust slave distribution, and make use of a SlaveLock.
- * BuildSlaveSupport/build.webkit.org-config/webkit/factories.py: Remove unused Qt build factory.
-
-2006-10-31 Darin Adler <darin@apple.com>
-
- * DumpRenderTree/DumpRenderTree.m: Instead of allocating a single local
- pasteboard, allocate any number of local pasteboards.
- (main): Allocate the dictionary of pasteboards.
- (+[DumpRenderTreePasteboard _pasteboardWithName:]): Allocate a pasteboard,
- given a name.
- (+[LocalPasteboard alloc]): Added, so we don't have to call NSAllocateObject
- explicitly elsewhere.
- (-[LocalPasteboard addTypes:owner:]): Added a check that the owner responds
- to the selector rather than calling unconditionally.
-
-2006-10-30 Darin Adler <darin@apple.com>
-
- - fixed build
-
- * DumpRenderTree/DumpRenderTree.m: (-[LocalPasteboard setString:forType:]):
- Don't use CFPasteboard.
-
-2006-10-30 Vladimir Olexa <vladimir.olexa@gmail.com>
-
- Reviewed by Tim H.
-
- Fixes: http://bugs.webkit.org/show_bug.cgi?id=11353
-
- * Drosera/debugger.js: ParsedURL() object now recognizes local files
-
-2006-10-30 Darin Adler <darin@apple.com>
-
- Reviewed by Tim Hatcher.
-
- * DumpRenderTree/DumpRenderTree.m: Changed to allocate a local pasteboard.
- This should make our buildbot tests no longer need a pasteboard server.
-
-2006-10-30 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Beth.
-
- Reorganized project file into Delegates and Controllers groups, and split
- UIDelegate stuff into a UIDelegate class.
-
- A little birdy told me that I might end up adding some UIDelegate methods
- to DRT soon.
-
- * DumpRenderTree/DumpRenderTree.m:
- (main):
- (runTest):
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
-
-2006-10-31 Nikolas Zimmermann <zimmermann@kde.org>
-
- Reviewed by Oliver.
-
- Add new platform/graphics include directory.
-
- * DumpRenderTree/DumpRenderTree.qtproj/CMakeLists.txt:
-
-2006-10-30 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Stephanie.
-
- Add a special case for the Internal makefiles, so it can find the OepnSource.
-
- * Scripts/webkitdirs.pm:
-
-2006-10-30 Stephanie Lewis <slewis@apple.com>
-
- Reviewed by Darin Adler.
-
- Change Makefiles to return non-zero when module make fails.
- Fix bug where if xcode options are not set, modules can build in the
- wrong directory.
-
- * Makefile:
- * Scripts/webkitdirs.pm:
-
-2006-10-30 Matt Lilek <pewtermoose@gmail.com>
-
- Reviewed by Tim H.
-
- Fix for http://bugs.webkit.org/show_bug.cgi?id=10468
- [Drosera] The Console toolbar button should bring the console window to the front.
-
- The console now gets focus when its activated but already open. Command + L also
- now activates/focuses the console.
-
- * Drosera/English.lproj/MainMenu.nib/classes.nib:
- * Drosera/English.lproj/MainMenu.nib/info.nib:
- * Drosera/English.lproj/MainMenu.nib/keyedobjects.nib:
- * Drosera/debugger.js:
-
-2006-10-29 Darin Adler <darin@apple.com>
-
- * Scripts/do-file-rename: Renames done, ready for the next round.
- * Scripts/do-webcore-rename: Ditto.
-
-2006-10-29 Darin Adler <darin@apple.com>
-
- * Scripts/do-file-rename: And again.
-
-2006-10-29 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: Tweaked plans for renaming again.
-
-2006-10-29 Darin Adler <darin@apple.com>
-
- Reviewed by Mitz.
-
- * DumpRenderTree/DumpRenderTree.m: (-[DumpRenderTreeWindow keyDown:]):
- Added. Does nothing, which prevents a beep.
-
- * Scripts/do-webcore-rename: Tweaked plans for renaming a bit.
-
-2006-10-27 Brady Eidson <beidson@apple.com>
-
- Rubber stamped by Tim Hatcher
-
- Added "make universal" to build universal binaries
-
- * Makefile:
- * Makefile.shared:
-
-2006-10-26 Sam Weinig <sam.weinig@gmail.com>
-
- Reviewed by Geoff.
-
- Fix for http://bugs.webkit.org/show_bug.cgi?id=11419
- REGRESSION (r17299): Assertion failure in -[WebHTMLView(WebPrivate) _topHTMLView]
- ([view isKindOfClass:[WebHTMLView class]]) when running the layout tests
-
- * DumpRenderTree/EventSendingController.m:
- (-[EventSendingController mouseMoveToX:Y:]):
-
-2006-10-26 Nikolas Zimmermann <zimmermann@kde.org>
-
- Reviewed by Darin Adler.
-
- Fix Qt/Linux build.
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::open):
-
-2006-10-24 Stephanie Lewis <slewis@apple.com>
-
- Reviewed by Maciej.
-
- - Changed run-javascriptcore tests to build testkjs before running.
-
- * Scripts/run-javascriptcore-tests:
-
-2006-10-24 Nikolas Zimmermann <zimmermann@kde.org>
-
- Reviewed by Maciej.
-
- Fix Qt/Linux build.
-
- - Remove BrowserExtensionQt, move it's methods to Page/FrameQt.
- - Fix CMakeLists.txt to include platform/network.
-
- * DumpRenderTree/DumpRenderTree.qtproj/CMakeLists.txt:
-
-2006-10-24 David Smith <catfish.man@gmail.com>
-
- Reviewed by Tim H.
-
- Bug 11382: [Drosera] Dragging breakpoints onto each other can mess up inline editor
- http://bugs.webkit.org/show_bug.cgi?id=11382
-
- * Drosera/debugger.js: Breakpoint dragging now ensures that editors aren't orphaned.
-
-2006-10-21 Darin Adler <darin@apple.com>
-
- * Scripts/commit-log-editor: Use baseProductDir() to find the base product directory.
- This was still using "symroots" so it almost never worked!
-
-2006-10-21 Darin Adler <darin@apple.com>
-
- * Makefile: Build DumpRenderTree too.
- * Scripts/do-webcore-rename: Removed bogus comment.
-
-2006-10-20 David Smith <catfish.man@gmail.com>
-
- Reviewed by Tim H.
-
- Bug 11367: Inline Breakpoint Editor Improvements: Act III
- http://bugs.webkit.org/show_bug.cgi?id=11367
-
- Major breakpoint editor changes:
- * Breakpoints can now either pause or log to console
- * Code cleanup through use of XPath and converting breakpoints to objects
- * Breakpoints now track how many times they've been reached
- * UI tweaks
- * The breakpoint editor now saves changes as they're entered
- * Because changes are auto-saved now, the save button has been converted to a close button (images from PSMTabBarControl, BSD licensed)
- * If an expression with no return is entered as a condition, it will be wrapped transparently with a return statement.
-
- * Drosera/DebuggerDocument.m:
- (-[WebScriptObject breakpointEditorHTML]): A way of loading this from an external file, as it was getting too complex to include inline.
- * Drosera/Drosera.xcodeproj/project.pbxproj:
- * Drosera/Images/close.tif: Added.
- * Drosera/Images/close_active.tif: Added.
- * Drosera/Images/close_hover.tif: Added.
- * Drosera/breakpointEditor.html: Added.
- * Drosera/console.js: Added a way to append messages from outside the console window.
- * Drosera/debugger.js:
- * Drosera/viewer.css:
- * Drosera/viewer.html:
-
-2006-10-18 David Smith <catfish.man@gmail.com>
-
- Reviewed by Tim H.
-
- Improve the doubleclick behavior of breakpoints, and make breakpoints with no custom condition set appear blank instead of return [-1, 1] depending on enabled state.
-
- * Drosera/DebuggerDocument.m:
- (-[WebScriptObject getDoubleClickMillis]): Add an ObjC wrapper for GetDblTime() so that JS can call it
- * Drosera/Drosera.xcodeproj/project.pbxproj: link Carbon for GetDblTime()
- * Drosera/debugger.js:
-
-2006-10-18 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Anders.
-
- Bug 10851: Crash with Drosera
- http://bugs.webkit.org/show_bug.cgi?id=10851
-
- This crash results in an assert in debug builds.
-
- assert(implementsCall());
-
- The __drosera_introspection propery was not callable. Now we just assign
- this.__drosera_introspection in the evaluateWebScript call.
- This change also removes one DO message.
-
- * Drosera/DebuggerDocument.m:
- (-[WebScriptObject webScriptAttributeKeysForScriptObject:]):
-
-2006-10-18 Mark Rowe <bdash@webkit.org>
-
- Reviewed by Tim H.
-
- http://bugs.webkit.org/show_bug.cgi?id=11304
- Bug 11304: Drosera fails to link as universal binary on PowerPC machine
-
- * Drosera/Drosera.xcodeproj/project.pbxproj: Use -weak_framework to link against JavaScriptCore and WebCore directly
- when they are not part of the WebKit umbrella framework.
-
-2006-10-18 Adam Roben <aroben@apple.com>
-
- fixo el buildo II: Release's Pride.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
-
-2006-10-18 Geoffrey Garen <ggaren@apple.com>
-
- fixo el buildo.
-
- Work around #import of <PDFKit/PDFView.h>.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
-
-2006-10-18 David Smith <catfish.man@gmail.com>
-
- Reviewed by Tim H.
-
- Add Xcode 3 style inline breakpoint editor. Credit to xenon for the CSS wizardry to get the appearance working properly.
-
- * Drosera/Drosera.xcodeproj/project.pbxproj:
- * Drosera/Images/breakpointeditor.png: Added.
- * Drosera/breakpointEditor.css: Removed.
- * Drosera/breakpointEditor.html: Removed.
- * Drosera/breakpointEditor.js: Removed.
- * Drosera/debugger.js:
- * Drosera/viewer.css:
-
-2006-10-18 David Harrison <harrison@apple.com>
-
- Reviewed by Tim H.
-
- Bug 11341: REGRESSION (r16760): editing/selection/editable-links is failing
- http://bugs.webkit.org/show_bug.cgi?id=11341
-
- Link editing behavior became a preference. DumpRenderTree needs to specify the
- non-default behavior it wants (WebKitEditableLinkOnlyLiveWithShiftKey).
-
- * DumpRenderTree/DumpRenderTree.m:
- (main):
-
-2006-10-15 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
-
- Reviewed by Anders.
-
- Make compiler not complain about unused gk. SpinneretWebHost was not setting
- initial refcount upon creation, so it is completely bogus.
-
- * GdkLauncher/main.cpp:
- (main):
- * Spinneret/Spinneret/Spinneret.h:
- (SpinneretWebHost::SpinneretWebHost):
-
-2006-10-15 Nikolas Zimmermann <zimmermann@kde.org>
-
- Reviewed by Oliver.
-
- Add another hanging test, to the "to be skipped" list.
-
- * DumpRenderTree/DumpRenderTree.qtproj/tests-skipped.txt:
-
-2006-10-14 Nikolas Zimmermann <zimmermann@kde.org>
-
- Reviewed by Anders.
-
- Some fixes to get the Qt BuildSlave to run the LayoutTests.
-
- * Scripts/build-dumprendertree: No need to call cmake again.
- * Scripts/run-webkit-tests: Expose LD_LIBRARY_PATH.
-
-2006-10-13 Nikolas Zimmermann <zimmermann@kde.org>
-
- Reviewed by Eric.
-
- Force --no-http on Qt/Linux.
-
- * Scripts/run-webkit-tests:
-
-2006-10-13 Kevin McCullough <KMcCullough@apple.com>
-
- Reviewed by Adam.
-
- Gets JavaScripCore tests running on windows.
-
- * Scripts/run-javascriptcore-tests:
- * Scripts/webkitdirs.pm:
-
-2006-10-12 Nikolas Zimmermann <zimmermann@kde.org>
-
- Reviewed by Maciej.
-
- Exclude some tests which crash or hang from Qt/Linux DRT.
- These are known to fail, and will be fixed at some point :-)
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::open):
- (WebCore::DumpRenderTree::readStdin):
- (WebCore::DumpRenderTree::readSkipFile):
- (WebCore::DumpRenderTree::checkLoaded):
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.h:
- * DumpRenderTree/DumpRenderTree.qtproj/tests-skipped.txt: Added.
-
-2006-10-12 Nikolas Zimmermann <zimmermann@kde.org>
-
- Reviewed by Maciej.
-
- Specialization of alert() for DumpRenderTree - just log the output, don't show any message box.
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTreeClient.cpp:
- (WebCore::DumpRenderTreeClient::runJavaScriptAlert):
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTreeClient.h:
-
-2006-10-12 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
-
- Reviewed by Maciej.
-
- Also regenerate GdkLauncher makefiles, since not doing that might
- lead to mismatch between WebCore and GdkLauncher compiler settings.
-
- * Scripts/regenerate-makefiles:
-
-2006-10-10 David Smith <catfish.man@gmail.com>
-
- Reviewed by Tim H.
-
- Bug 11246: Minor Drosera code cleanup
- http://bugs.webkit.org/show_bug.cgi?id=11246
-
- * Drosera/debugger.js: Change [has, add, remove]StyleClass to be a function on Element rather than taking an Element as an argument.
-
-2006-10-10 Vladimir Olexa <vladimir.olexa@gmail.com>
-
- Reviewed by Tim H.
-
- Bug 9778: http://bugs.webkit.org/show_bug.cgi?id=9778
-
- * Drosera/Drosera.xcodeproj/project.pbxproj: Added files
- * Drosera/English.lproj/Debugger.nib/info.nib: Resized the main window and WebView
- * Drosera/English.lproj/Debugger.nib/keyedobjects.nib: Resized the main window and WebView
- * Drosera/Images/SourceArrowOpen.png: Added.
- * Drosera/Images/fileIcon.jpg: Added.
- * Drosera/Images/siteCollapsed.tif: Added.
- * Drosera/Images/siteExpanded.tif: Added.
- * Drosera/Images/siteIcon.tif: Added.
- * Drosera/debugger.css: Added File Browser styles
- * Drosera/debugger.html: Added File Browser UI
- * Drosera/debugger.js: Added File Browser functionality
-
-2006-10-10 Darin Adler <darin@apple.com>
-
- * Scripts/do-file-rename: Added.
-
-2006-10-09 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
-
- Reviewed by Geoff.
-
- Add -exit-after-loading option to make gdklauncher quit after fully loading and rendering
- a page. This allows automatic testing via e.g. valgrind.
-
- * GdkLauncher/gdklauncher.bkl:
- * GdkLauncher/main.cpp:
- (LauncherFrameGdk::LauncherFrameGdk):
- (LauncherFrameGdk::setExitAfterLoading):
- (LauncherFrameGdk::handledOnloadEvents):
- (handle_event):
- (main):
-
-2006-10-06 David Smith <catfish.man@gmail.com>
-
- Reviewed by Timothy.
-
- Bug 9665: [Drosera] Conditional breakpoints. http://bugs.webkit.org/show_bug.cgi?id=9665
-
- * Drosera/Drosera.xcodeproj/project.pbxproj: Added new files
- * Drosera/breakpointEditor.css: Added.
- * Drosera/breakpointEditor.html: Added.
- * Drosera/breakpointEditor.js: Added.
- * Drosera/debugger.js: Added conditional breakpoint support, and the ability to open the breakpoint editor window on option-clicking a breakpoint.
-
-2006-10-06 Nikolas Zimmermann <zimmermann@kde.org>
-
- Reviewed by Tim H.
-
- Fix Qt/Linux build by adapting the s/ScrollBar/Scrollbar/ changes.
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
-
-2006-10-05 Oliver Hunt <ohunt@apple.com>
-
- Reviewed by Anders.
-
- * Scripts/run-webkit-tests:
- Fix pixel tests.
-
-2006-10-04 Anders Carlsson <acarlsson@apple.com>
-
- Reviewed by Darin Adler.
-
- * Scripts/run-webkit-tests:
- Add an environment variable, WebKitExpectedTestResultsDirectory, which controls where expected test
- results should be.
-
-2006-10-05 Nikolas Zimmermann <zimmermann@kde.org>
-
- Reviewed and landed by ap.
-
- Cmake: make it possible to install the libraries after having built using 'build-webkit'.
- Just set the "WebKitInstallationPrefix" environment variable to your desired prefix.
-
- * Scripts/webkitdirs.pm:
-
-2006-10-04 Mark Rowe <bdash@webkit.org>
-
- Reviewed by Stephanie.
-
- Switch the Qt buildbot to the standard set of build steps.
- Have JavaScriptCoreTest check the output of run-javascriptcore-tests to
- see if any regressions were spotted, and fail the test if so.
-
- * BuildSlaveSupport/build.webkit.org-config/webkit/builders.py:
- * BuildSlaveSupport/build.webkit.org-config/webkit/factories.py:
- * BuildSlaveSupport/build.webkit.org-config/webkit/steps.py:
-
-2006-10-04 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Mitz Pettel!
-
- Bug 10708: [Drosera] Make the console input plaintext-only
- http://bugs.webkit.org/show_bug.cgi?id=10708
-
- Change the console input -webkit-user-modify property to
- read-write-plaintext-only.
-
- * Drosera/console.css:
-
-2006-10-04 David Smith <catfish.man@gmail.com>
-
- Reviewed by Tim H.
-
- Bug 10473: [Drosera] Overlapping text in JavaScript Console
- http://bugs.webkit.org/show_bug.cgi?id=10473
-
- Using min-height instead of height to avoid overlapping text.
-
- * Drosera/console.css:
-
-2006-10-04 David Smith <catfish.man@gmail.com>
-
- Reviewed by Tim H.
-
- Added a bash-style command history.
-
- * Drosera/console.js:
-
-2006-10-03 Anders Carlsson <acarlsson@apple.com>
-
- Reviewed by Adam and Brady.
-
- * DumpRenderTree/DumpRenderTree.m:
- (main):
- Update URL to Ahem.ttf
-
-2006-10-03 Darin Adler <darin@apple.com>
-
- * Scripts/commit-log-editor: Added missing "close" call. Oops!
-
-2006-10-03 Nikolas Zimmermann <zimmermann@kde.org>
-
- Reviewed by eseidel. Landed by eseidel.
-
- Offer a way for BuildBot to not colorize the cmake output, when building
- with the 'build-webkit' script. Add "--color" / "--no-color" option pair.
-
- Default is colorize output, though only Qt platform handles this for now.
-
- * Scripts/build-dumprendertree:
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
-
-2006-10-03 Nikolas Zimmermann <zimmermann@kde.org>
-
- Reviewed by eseidel. Landed by eseidel.
-
- Make all important scripts work with Qt/Linux.
-
- You can safely use this now:
- set-configuration-release --debug && build-webkit && run-javascriptcore-tests && run-webkit-tests
-
- * Scripts/build-dumprendertree:
- * Scripts/run-javascriptcore-tests:
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
-
-2006-10-03 Nikolas Zimmermann <zimmermann@kde.org>
-
- Reviewed by Eric.
-
- build-webkit tweak: Use WebKitBuild/$config as output dir (Release/Debug).
-
- * Scripts/webkitdirs.pm:
-
-2006-10-02 Nikolas Zimmermann <zimmermann@kde.org>
-
- Reviewed/landed by Adam.
-
- Proper build-webkit support for Qt/Linux.
-
- Compilation process is similar to OSX now, aka.
- the build directory is RootCheckoutDir/WebKitBuild now.
-
- * Scripts/build-webkit: Recognize Qt.
- * Scripts/webkitdirs.pm: Add buildCMakeProject() logic.
-
-2006-10-01 Mark Rowe <opendarwin.org@bdash.net.nz>
-
- Reviewed by Maciej.
-
- Add QT build slave to Buildbot.
-
- * BuildSlaveSupport/build.webkit.org-config/webkit/builders.py: Add QT build slave, fix existing errors.
- * BuildSlaveSupport/build.webkit.org-config/webkit/factories.py: Add QT build factory.
- * BuildSlaveSupport/build.webkit.org-config/webkit/status.py: Disable forcing of builds via web interface to prevent spamming. Use the IRC bot in #webkit-build instead.
- * BuildSlaveSupport/build.webkit.org-config/webkit/steps.py: Add CMake build step.
-
-2006-09-28 David Harrison <harrison@apple.com>
-
- Suggested by Darin Adler.
-
- Moved an extern declaration from inside a method to the top of the file.
-
- * DumpRenderTree/EventSendingController.m:
- (-[EventSendingController clearKillRing]):
-
-2006-09-28 David Harrison <harrison@apple.com>
-
- Reviewed by Justin.
-
- Add clearKillRing so we can test emacs support with empty kill ring.
-
- * DumpRenderTree/EventSendingController.m:
- (+[EventSendingController isSelectorExcludedFromWebScript:]):
- (+[EventSendingController webScriptNameForSelector:]):
- (-[EventSendingController clearKillRing]):
-
-2006-09-27 MorganL <morganl.webkit@yahoo.com>
-
- Reviewed by Maciej, landed by Brady
-
- Fix URL bar updating.
-
- * Spinneret/Spinneret/Spinneret.h:
- (SpinneretWebHost::didStartProvisionalLoadForFrame):
- (SpinneretWebHost::didCommitLoadForFrame):
- (SpinneretWebHost::didFinishLoadForFrame):
-
-2006-09-23 Sam Weinig <sam.weinig@gmail.com>
-
- Reviewed by Eric.
-
- Build Fix.
-
- * DumpRenderTree/EventSendingController.m:
- (-[EventSendingController enableDOMUIEventLogging:]):
-
-2006-09-22 Justin Garcia <justin.garcia@apple.com>
-
- Reviewed by darin
-
- * Scripts/do-webcore-rename:
-
-2006-09-21 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Adam.
-
- Bug 10923: Frame scroll layout test failures on the buildbot
- http://bugs.webkit.org/show_bug.cgi?id=10923
-
- Added a new method that will toggle on the recursive dump of
- child frame scroll positions.
-
- * DumpRenderTree/DumpRenderTree.m:
- (dumpFrameScrollPosition):
- (+[LayoutTestController isSelectorExcludedFromWebScript:]):
- (-[LayoutTestController dumpChildFrameScrollPositions]):
-
-2006-09-19 Krzysztof Kowalczyk <kkowalczyk@gmail.com>
-
- Reviewed by eseidel. Landed by eseidel.
-
- Detect that close button was pressed and exit cleanly.
-
- * GdkLauncher/main.cpp:
- (handle_event):
- (main):
-
-2006-09-17 Adam Roben <aroben@apple.com>
-
- Reviewed by hyatt, sfalken.
-
- Get DumpRenderTree compiling and limping along on Windows.
-
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.cpp:
- (loadResourceIntoArray): Added this function that WebCore::ImageWin needs from WebKit
- (main): Add NULL argument to Page constructor.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.vcproj: Remove incorrect "wininet.dll" argument to CC, fix JavaScriptCore.lib path, add *_SECURE_NO_DEPRECATE #defines
- * Scripts/webkitdirs.pm: Fix JavaScriptCore.lib path
-
-2006-09-15 Mark Rowe <opendarwin.org@bdash.net.nz>
-
- Reviewed by Brady.
-
- http://bugs.webkit.org/show_bug.cgi?id=10635
- Bug 10635: Buildbot configuration in SVN is out of sync with build.webkit.org
-
- * BuildSlaveSupport/build.webkit.org-config/webkit/builders.py: Reorder build slaves within build factories in an attempt to spread the load evenly.
- * BuildSlaveSupport/build.webkit.org-config/webkit/status.py: Return to sending status emails to <svnuser>@opensource.apple.com addresses.
- * BuildSlaveSupport/build.webkit.org-config/webkit/steps.py: Update configuration to match changes in Buildbot. Always do clean SVG builds.
-
-2006-09-09 Sam Weinig <sam.weinig@gmail.com>
-
- Reviewed by Eric.
-
- Patch for http://bugs.webkit.org/show_bug.cgi?id=10791
- Even More Objective-C DOM auto-generation cleanup
-
- - Change to use new, more Objectice-C'ish version of
- DOMKeyboardEvent's initKeyboardEvent. Fixes an error with
- regression test for fast/events/dblclick-addEventListener.html.
-
- * DumpRenderTree/EventSendingController.m:
- (-[EventSendingController fireKeyboardEventsToElement:]):
-
-2006-09-04 Nikolas Zimmermann <zimmermann@kde.org>
-
- Reviewed by Tim H.
-
- Fixes last part of: http://bugs.webkit.org/show_bug.cgi?id=10644
- Move QtLauncher down to WebKitQt.
-
- * QtLauncher/CMakeLists.txt: Removed.
- * QtLauncher/main.cpp: Removed.
-
-2006-09-04 Nikolas Zimmermann <zimmermann@kde.org>
-
- Reviewed by Darin Adler.
-
- Fixes parts of: http://bugs.webkit.org/show_bug.cgi?id=10644
- Adjust DumpRenderTree to the FrameQtClient changes.
-
- * DumpRenderTree/DumpRenderTree.qtproj/CMakeLists.txt:
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::~DumpRenderTree):
- (WebCore::DumpRenderTree::frame):
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.h:
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTreeClient.cpp: Added.
- (WebCore::DumpRenderTreeClient::DumpRenderTreeClient):
- (WebCore::DumpRenderTreeClient::~DumpRenderTreeClient):
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTreeClient.h: Added.
-
-2006-09-03 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: More renaming plans.
-
-2006-09-03 Alexey Proskuryakov <ap@nypop.com>
-
- Reviewed by Tim H.
-
- http://bugs.webkit.org/show_bug.cgi?id=10693
- Convert JavaScript arrays to AppleScript lists
-
- * DumpRenderTree/AppleScriptController.m:
- (convertAEDescToObject):
- (-[AppleScriptController doJavaScript:]): Support printing AEDescLists.
-
-2006-08-31 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: Prepare for another round of renaming.
-
-2006-08-29 Dan Waylonis <waylonis@google.com>
-
- Reviewed by ggaren.
-
- - Verification of exceptions thrown in a plugin. Test for bug 10114.
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/ObjCPlugin.m:
- (+[ObjCPlugin isSelectorExcludedFromWebScript:]):
- (+[ObjCPlugin webScriptNameForSelector:]):
- (-[ObjCPlugin throwIfArgumentIsNotHello:]):
-
-2006-08-30 Nikolas Zimmermann <zimmermann@kde.org>
-
- Reviewed by Tim H.
-
- Commit KDE related tweaks, to be able to
- differentiate between a Qt-only or a KDE build.
-
- * DumpRenderTree/DumpRenderTree.qtproj/CMakeLists.txt: Add ksvg2/ includes.
- * QtLauncher/CMakeLists.txt: Add ksvg2/ includes.
-
-2006-08-29 Darin Adler <darin@apple.com>
-
- Reviewed by Tim Hatcher.
-
- * Scripts/gdb-safari: Set DYLD_FRAMEWORK_PATH inside gdb instead of setting it in gdb's environment
- to work around what seems to be a bug in some versions of gdb.
-
-2006-08-16 Tim Omernick <timo@apple.com>
-
- Reviewed by John Sullivan.
-
- Part of <rdar://problem/4481553> NetscapeMoviePlugIn example code scripting doesn't work in Firefox (4319)
- <http://bugs.webkit.org/show_bug.cgi?id=4319>: NetscapeMoviePlugIn example code scripting doesn't work
- in Firefox
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.c:
- (NPP_GetValue):
- WebKit's NPP_GetValue() reference counting behavior has been changed to match Firefox. NPObject return values
- are expected to be retained by the plug-in, and released by the caller.
-
-2006-08-28 Nikolas Zimmermann <zimmermann@kde.org>
-
- Reviewed by Tim Hatcher.
-
- Fixes one chunk of: http://bugs.webkit.org/show_bug.cgi?id=10604
-
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::checkLoaded): Faster polling for isLoaded() in
- Qt's DumpRenderTree.
-
- * Scripts/run-webkit-tests:
- Use -expected-qt.txt etc.. output in run-webkit-test if isQt().
-
-2006-08-28 Darin Adler <darin@apple.com>
-
- Reviewed by Tim Hatcher.
-
- * Scripts/build-drosera: Fix behavior when there are multiple options.
-
-2006-08-27 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Anders.
-
- Drosera will be built when you type make.
-
- * Drosera/Makefile: Added.
- * Makefile: Added.
- * Makefile.shared: Added.
-
-2006-08-27 Anders Carlsson <acarlsson@apple.com>
-
- Forgot to add these.
-
- * DumpRenderTree/DumpRenderTree.qtproj/CMakeLists.txt: Added.
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp: Added.
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::~DumpRenderTree):
- (WebCore::DumpRenderTree::open):
- (WebCore::DumpRenderTree::readStdin):
- (WebCore::DumpRenderTree::checkLoaded):
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.h: Added.
- * DumpRenderTree/DumpRenderTree.qtproj/main.cpp: Added.
- (main):
-
-2006-08-27 Nikolas Zimmermann <zimmermann@kde.org>
-
- Reviewed by Eric, landed by Anders.
-
- Add DumpRenderTree support for Qt/Linux.
-
- * DumpRenderTree/DumpRenderTree.qtproj/CMakeLists.txt: Added.
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp: Added.
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::~DumpRenderTree):
- (WebCore::DumpRenderTree::open):
- (WebCore::DumpRenderTree::readStdin):
- (WebCore::DumpRenderTree::checkLoaded):
- * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.h: Added.
- * DumpRenderTree/DumpRenderTree.qtproj/main.cpp: Added.
- (main):
- * Scripts/build-dumprendertree:
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
-
-2006-08-24 Nikolas Zimmermann <zimmermann@kde.org>
-
- Reviewed by Eric. Landed by rwlbuis.
-
- Add QtLauncher (was testunity before), which provides a
- standalone "browser" to test the Qt platform stuff.
-
- * QtLauncher/CMakeLists.txt: Added.
- * QtLauncher/main.cpp: Added.
- (main):
-
-2006-08-22 Trey Matteson <trey@usa.net>
-
- Reviewed by ggaren.
-
- Added support for a new set of browser navigation tests. The main feature
- is the ability for a test to queue up a set of future actions that will
- happen after that first page is loaded. This is used to simulate a sequence
- of user actions such as filling out forms, loading additional pages or
- going back. In addition we can now dump out the state of the back/forward
- list, and the scroll position is dumped if not at 0,0.
-
- * DumpRenderTree/DumpRenderTree.m:
- (main): Init new state
- (compareHistoryItems): New utility to support sorting.
- (dumpHistoryItem): Write out a WebHistoryItem and kids.
- (dumpFrameScrollPosition): Write out the scroll position.
- (dump): Optionally write b/f list or scroll position.
- (-[WaitUntilDoneDelegate processWork:]): Perform queued work.
- (-[WaitUntilDoneDelegate webView:locationChangeDone:forDataSource:]):
- Kick off any queued actions. Fixed for the case of loads started in
- a subframe instead of the root frame.
- (-[WaitUntilDoneDelegate webView:didStartProvisionalLoadForFrame:]):
- Grab the topmost frame that is being loaded. Do this as early as possible,
- instead of in didCommitLoadForFrame.
- (-[WaitUntilDoneDelegate webView:didCommitLoadForFrame:]):
- Noting a load has started now happens in previous method.
- (+[LayoutTestController isSelectorExcludedFromWebScript:]): Boilerplate
- (+[LayoutTestController webScriptNameForSelector:]): Boilerplate
- (-[LayoutTestController notifyDone]): readyToDump var is subsumed by
- topFrameLoading
- (-[LayoutTestController dumpBackForwardList]): New impl, just set a bit.
- (-[LayoutTestController _addWorkForTarget:selector:arg1:arg2:]):
- Add new work to the queue.
- (-[LayoutTestController _doLoad:target:]): Do a queued load.
- (-[LayoutTestController _doBackOrForwardNav:]): Do a queued back/forward.
- (-[LayoutTestController scheduleBackNav:]): Ways for scripts to queue actions
- (-[LayoutTestController scheduleForwardNav:]):
- (-[LayoutTestController scheduleReload]):
- (-[LayoutTestController scheduleScript:]):
- (-[LayoutTestController scheduleLoad:target:]):
- (runTest): Clear new state for each test. Renamed from "dumpRenderTree"
- since it's not one of the functions that does any dumping.
-
-2006-08-15 Jonas Witt <jonas.witt@gmail.com>
-
- Reviewed by Darin Adler.
-
- - added a function to create a few DOMKeyboardEvents and dispatch
- them to a specified HTML element
- http://bugs.webkit.org/show_bug.cgi?id=9736
-
- * DumpRenderTree/EventSendingController.m:
- (+[EventSendingController isSelectorExcludedFromWebScript:]):
- (+[EventSendingController webScriptNameForSelector:]):
- (-[EventSendingController fireKeyboardEventsToElement:]):
-
-2006-08-15 Duncan Wilcox <duncan@mclink.it>
-
- Reviewed and tweaked by Darin Adler.
-
- - added DumpRenderTree support so editing delegate can be made to refuse edits
- to enable tests for http://bugs.webkit.org/show_bug.cgi?id=10129
-
- * DumpRenderTree/DumpRenderTree.m:
- (+[LayoutTestController isSelectorExcludedFromWebScript:]): Add setAcceptsEditing:
- to the list of methods.
- (+[LayoutTestController webScriptNameForSelector:]): Use the name setAcceptsEditing,
- without the colon, for the JavaScript name.
- (-[LayoutTestController setAcceptsEditing:]): Added. Calls through to the editing
- delegate.
- (dumpRenderTree): Set the acceptsEditing flag to YES before each test.
-
- * DumpRenderTree/EditingDelegate.h: Added an "acceptsEditing" flag and getter and
- setter methods to the class.
- * DumpRenderTree/EditingDelegate.m:
- (-[EditingDelegate init]): Initialize acceptsEditing to YES.
- (-[EditingDelegate webView:shouldBeginEditingInDOMRange:]): Instead of always returning YES,
- return the value of acceptsEditing.
- (-[EditingDelegate webView:shouldEndEditingInDOMRange:]): Ditto.
- (-[EditingDelegate webView:shouldInsertNode:replacingDOMRange:givenAction:]): Ditto.
- (-[EditingDelegate webView:shouldInsertText:replacingDOMRange:givenAction:]): Ditto.
- (-[EditingDelegate webView:shouldDeleteDOMRange:]): Ditto.
- (-[EditingDelegate webView:shouldChangeSelectedDOMRange:toDOMRange:affinity:stillSelecting:]):
- Ditto.
- (-[EditingDelegate webView:shouldApplyStyle:toElementsInDOMRange:]): Ditto.
- (-[EditingDelegate webView:shouldChangeTypingStyle:toStyle:]): Ditto.
- (-[EditingDelegate setAcceptsEditing:]): Added.
-
-2006-08-03 Mark Rowe <opendarwin.org@bdash.net.nz>
-
- Reviewed by Darin Adler.
-
- Bug 10224: [Drosera] Drosera icon should be set on DroseraLauncher so it appears in nightly builds
- http://bugs.webkit.org/show_bug.cgi?id=10224
-
- * Drosera/Drosera.xcodeproj/project.pbxproj:
- * Drosera/LauncherInfo.plist:
-
-2006-08-03 Mitz Pettel <opendarwin.org@mitzpettel.com>
-
- - fix ASSERTION FAILURE: draggingDocumentView == nil in -[WebViewPrivate dealloc]
- when a test performs an unsuccessful drag and drop operation.
-
- * DumpRenderTree/EventSendingController.m:
- (-[EventSendingController mouseUp]): Added a call to -draggingExited: if the
- drag operation for the mouse release is NSDragOperationNone.
-
-2006-08-02 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Darin Adler.
-
- Bug 9632: [Drosera] syntax highlighting is slow (reproducible 40 second hang)
- http://bugs.webkit.org/show_bug.cgi?id=9632
-
- Do not change the file source when normalizing the line endings.
- We use this file source to compare against new versions of the source
- as it comes in, so we can skip re-syntax highlighting if they are the same.
- The problem is apparent on yahoo.com since they have mixed line endings and
- once we normalize them the source will always be different. This was
- compounded by the fact that yahoo has around 40 inline scripts. Each
- inline script causes us to check if the main document has more loaded,
- that is when we compare the source strings. Since they are always different
- we would syntax highlight yahoo.com 40 times! We do check source length before
- doing a more expensive string comparison, but the lengths were the same.
-
- * Drosera/debugger.js:
-
-2006-08-02 Niels Leenheer <niels.leenheer@gmail.com>
-
- Reviewed by Timothy.
-
- Bug 9931: [Drosera] Needs a cool icon
- http://bugs.webkit.org/show_bug.cgi?id=9931
-
- * Drosera/Drosera.icns: Added.
- * Drosera/Drosera.xcodeproj/project.pbxproj:
- * Drosera/Info.plist:
-
-2006-08-01 Darin Adler <darin@apple.com>
-
- - fix a bug in my recent change where the mouse position at the end of
- the last test would affect the results of the next test
-
- * DumpRenderTree/DumpRenderTree.m: (dumpRenderTree): Set lastMousePosition to 0.
-
-2006-07-31 Mark Rowe <opendarwin.org@bdash.net.nz>
-
- Reviewed by Maciej.
-
- http://bugs.webkit.org/show_bug.cgi?id=10182
- Bug 10182: [Drosera] Evaluating expressions in Console is slow when current frame has many variables
-
- * Drosera/console.js: String.indexOf returns -1 when the string is not found.
- Correct the logic to not reload local variable list unless an '=' character is in the expression.
-
-2006-07-31 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=10171
- REGRESSION: failing layout test: fast/events/objc-event-api.html
-
- * DumpRenderTree/DumpRenderTree.m:
- (main): Add pose so we can implement +[NSEvent mouseLocation]. Put the window at a predictable
- location in flipped coordinates, since those are the coordinates that we use.
- (+[DumpRenderTreeEvent mouseLocation]): Implement this, since it's used for mouse event handling
- inside WebHTMLView.
-
- * DumpRenderTree/EventSendingController.m:
- (+[EventSendingController initialize]): Removed unused webkitDomEventProperties array.
- (-[EventSendingController init]): Removed, since the whole thing was a no-op.
- (-[EventSendingController mouseMoveToX:Y:]): Convert the x,y pair to window coordinates. The old code
- probably worked OK, but this is needed to be correct.
- (-[EventSendingController handleEvent:]): Put clientX/Y before screenX/Y and removed the flipping
- code from screenY. We didn't really need to flip screenY -- what was actually happening was that the
- position that DumpRenderTree chose was in non-flipped coordinates, and with that fixed we can just
- dump the screenY as-is.
-
-2006-07-31 Mark Rowe <opendarwin.org@bdash.net.nz>
-
- Reviewed by Darin Adler.
-
- http://bugs.webkit.org/show_bug.cgi?id=10178
- Bug 10178: [Drosera] Selecting a frame in the stack list should take you to that location in the source
-
- * Drosera/debugger.js: Keep a stack that contains the source file and line number references for outer
- frames. Use this stack to determine which file and line to highlight when a stack frame is selected.
-
-2006-07-31 Mark Rowe <opendarwin.org@bdash.net.nz>
-
- Reviewed by Darin Adler.
-
- http://bugs.webkit.org/show_bug.cgi?id=10175
- Bug 10175: [Drosera] Anonymous functions show up as "(global scope)" in stack list
-
- * Drosera/DebuggerDocument.m:
- (-[WebScriptObject currentFunctionStack]): If the frame has a caller it isn't the global scope.
-
-2006-07-31 Mark Rowe <opendarwin.org@bdash.net.nz>
-
- Reviewed by Darin Adler.
-
- http://bugs.webkit.org/show_bug.cgi?id=10167
- Bug 10167: REGRESSION(r15688): ASSERTION FAILED: _private->mouseDownEvent != nil in layout tests
-
- * DumpRenderTree/EventSendingController.m: Don't set the mouse down flag
- in keyDown handler.
-
-2006-07-30 Mark Rowe <opendarwin.org@bdash.net.nz>
-
- Reviewed by Maciej.
-
- Bug 9686: [Drosera] Need the ability to break into Drosera on Javascript exceptions
- http://bugs.webkit.org/show_bug.cgi?id=9686
-
- * Drosera/DebuggerDocument.m:
- (-[WebScriptObject switchToServerNamed:]): Remove as listener before resuming to
- ensure that the server does not try and notify us of events related to the resumption.
- (-[WebScriptObject webView:exceptionWasRaised:sourceId:line:forWebFrame:]): Delegate
- call through to JavaScript.
- * Drosera/debugger.js: Pause debugger when exception is raised.
-
-2006-07-29 Mike Emmel <mike.emmel@gmail.com>
-
- Reviewed by Darin Adler.
-
- - fixes for Linux build
-
- * GdkLauncher/mk: Added call to bakefile_gen before calling make.
- * GdkLauncher/gdklauncher.bkl: Tweak comment.
-
-2006-07-24 Dan Waylonis <waylonis@google.com>
-
- Reviewed and tweaked a bit by Darin Adler.
-
- * DumpRenderTree/ObjCPlugin.m:
- (+[ObjCPlugin isSelectorExcludedFromWebScript:]): Added "echo:".
- (+[ObjCPlugin webScriptNameForSelector:]): Use the name "echo" for
- "echo:" so it's nice to call from JavaScript.
- (-[ObjCPlugin echo:]): Just returns the same object -- can be used
- to test a round trip through Objective-C types.
-
-2006-07-24 Alexey Proskuryakov <ap@nypop.com>
-
- Reviewed by Darin Adler.
-
- Fix http://bugs.webkit.org/show_bug.cgi?id=10060
- Improve iExploder results parsing
-
- * Scripts/run-iexploder-tests: Fix Apach logs parsing to produce a correct results
- in random mode, too.
-
-2006-07-18 David Kilzer <ddkilzer@kilzer.net>
-
- Reviewed by Timothy.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=9964
- Add switch to prepare-ChangeLog to skip svn update of ChangeLog files
-
- * Scripts/prepare-ChangeLog: Added --[no-]update switch.
-
-2006-07-16 David Kilzer <ddkilzer@kilzer.net>
-
- Reviewed by Darin Adler.
-
- * BuildSlaveSupport/build.webkit.org-config/buildbot.css:
- Removed "No newline at end of file" that snuck in as part of the "apply patch" process.
- * GdkLauncher/mk:
- Removed "Property changes" that snuck in as part of the "apply patch" process.
-
-2006-07-16 David Kilzer <ddkilzer@kilzer.net>
-
- Reviewed by Darin Adler.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=9875
- Teach svn-apply and svn-unapply to use patch(1) for additions and deletions
-
- * Scripts/svn-apply:
- (addDirectoriesIfNeeded): Don't try to add a directory that's already in svn.
- (checksum): Added.
- (patch): Use patch(1) for non-binary additions and deletions.
- * Scripts/svn-unapply:
- (checksum): Added.
- (patch): Use patch(1) for reverting non-binary additions and deletions.
- (revertDirectories): Don't try to revert a directory that hasn't changed in svn.
-
-2006-07-13 Mark Rowe <opendarwin.org@bdash.net.nz>
-
- Reviewed by Timothy.
-
- Bug 9889: [Drosera] Stepping out when paused after last statement in function skips a frame
- http://bugs.webkit.org/show_bug.cgi?id=9889
-
- * Drosera/debugger.js: Track whether we paused during the execution of willLeaveFrame. If
- so, have stepOut pause on the next call to willExecuteStatement rather than second.
-
-2006-07-12 David Kilzer <ddkilzer@kilzer.net>
-
- Reviewed by Darin Adler.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=9848
- Teach svn-create-patch and friends to fix ChangeLog patches
-
- * Scripts/svn-apply: Added fixChangeLogPatch() and invoked it in the proper place.
- * Scripts/svn-create-patch: Ditto.
- * Scripts/svn-unapply: Ditto.
-
-2006-07-12 Mark Rowe <opendarwin.org@bdash.net.nz>
-
- Reviewed by ggaren.
-
- Bug 9869: [Drosera] JS Console fails to evaluate input when paused in global scope
- http://bugs.webkit.org/show_bug.cgi?id=9869
-
- * Drosera/DebuggerDocument.m:
- (-[WebScriptObject currentFunctionStack]): Include the global frame in the stack.
-
-2006-07-12 Mark Rowe <opendarwin.org@bdash.net.nz>
-
- Reviewed by ggaren.
-
- Bug 9863: Drosera needs to show something at launch
- http://bugs.webkit.org/show_bug.cgi?id=9863
-
- * Drosera/DebuggerApplication.m:
- (-[DebuggerApplication applicationDidFinishLaunching:]): Show the attach window on launch.
-
-2006-07-12 Mark Rowe <opendarwin.org@bdash.net.nz>
-
- Reviewed by Timothy.
-
- Lets Drosera build universal for the nightlies. Right now it is not
- possible to build a universal binary on a PPC machine because of a
- conflict with the universal SDK.
-
- * BuildSlaveSupport/build-launcher-app:
- * WebKitLauncher/WebKitLauncher.xcodeproj/project.pbxproj:
-
-2006-07-11 Alexey Proskuryakov <ap@nypop.com>
-
- Reviewed by Tim O.
-
- - test for http://bugs.webkit.org/show_bug.cgi?id=7808
- Assertion failure in -[WebBaseNetscapePluginStream dealloc] when requesting an invalid URL
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c:
- (pluginInvoke): treat getURL() with one parameter as if the second parameter were NULL -
- should open a new stream and deliver the data to the current instance.
-
-2006-07-11 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Darin Adler.
-
- Bug 9598: [Drosera] add a JavaScript evaluator console
- http://bugs.webkit.org/show_bug.cgi?id=9598
-
- * Drosera/DebuggerApplication.h:
- * Drosera/DebuggerApplication.m:
- (-[DebuggerApplication knownServers]):
- * Drosera/DebuggerDocument.h:
- * Drosera/DebuggerDocument.m:
- (-[WebScriptObject evaluateScript:inCallFrame:]):
- (-[WebScriptObject showConsole:]):
- (-[WebScriptObject toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:]):
- (-[WebScriptObject toolbarDefaultItemIdentifiers:]):
- (-[WebScriptObject toolbarAllowedItemIdentifiers:]):
- (-[WebScriptObject webView:createWebViewWithRequest:]):
- (-[WebScriptObject webViewShow:]):
- (-[WebScriptObject webViewAreToolbarsVisible:]):
- (-[WebScriptObject webView:setToolbarsVisible:]):
- (-[WebScriptObject webView:setResizable:]):
- (-[WebScriptObject webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:]):
- (-[WebScriptObject scriptConfirmSheetDidEnd:returnCode:contextInfo:]):
- (-[WebScriptObject webView:runJavaScriptConfirmPanelWithMessage:initiatedByFrame:]):
- (-[WebScriptObject webView:windowScriptObjectAvailable:]):
- (-[WebScriptObject webView:didFinishLoadForFrame:]):
- (-[WebScriptObject webView:didReceiveTitle:forFrame:]):
- * Drosera/Drosera.xcodeproj/project.pbxproj:
- * Drosera/Images/console.png: Added.
- * Drosera/console.css: Added.
- * Drosera/console.html: Added.
- * Drosera/console.js: Added.
-
-2006-07-11 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by a tired Geoff.
-
- Bug 9597: [Drosera] hook up the variables table to show stack variables
- http://bugs.webkit.org/show_bug.cgi?id=9597
-
- * Drosera/DebuggerDocument.m:
- (-[WebScriptObject isSelectorExcludedFromWebScript:]):
- (-[WebScriptObject webScriptAttributeKeysForScriptObject:]):
- (-[WebScriptObject localScopeVariableNamesForCallFrame:]):
- (-[WebScriptObject valueForScopeVariableNamed:inCallFrame:]):
- (-[WebScriptObject webView:didReceiveTitle:forFrame:]):
- (-[WebScriptObject webView:didLoadMainResourceForDataSource:]):
- (-[WebScriptObject webView:didParseSource:baseLineNumber:fromURL:sourceId:forWebFrame:]):
- (-[WebScriptObject webView:didEnterCallFrame:sourceId:line:forWebFrame:]):
- (-[WebScriptObject webView:willExecuteStatement:sourceId:line:forWebFrame:]):
- (-[WebScriptObject webView:willLeaveCallFrame:sourceId:line:forWebFrame:]):
- * Drosera/debugger.css:
- * Drosera/debugger.html:
- * Drosera/debugger.js:
-
-2006-07-10 Tim Omernick <timo@apple.com>
-
- Reviewed by Beth Dakin.
-
- <http://bugs.webkit.org/show_bug.cgi?id=9844>:
- Add DOM access test to DumpRenderTree's Netscape plug-in
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c:
- (testDOMAccess):
- (pluginInvoke):
-
-2006-07-10 Mark Rowe <opendarwin.org@bdash.net.nz>
-
- Reviewed by Darin Adler.
-
- - http://bugs.webkit.org/show_bug.cgi?id=9839
- Bug 9839: Nightly launcher fails to detect extensions when extension causes crash on load
-
- Now track three states: initializing, running, and closed. If we are launched and the previous
- state was initializing then we likely just experienced a crash on launch.
-
- * WebKitLauncher/WebKitNightlyEnabler.m:
- (myApplicationWillFinishLaunching): Improve wording of dialog. Update to set new running state.
- (myApplicationWillTerminate): Update to use new states.
- (cleanUpAfterOurselves): Display alert if previous state was initializing. Set state as
- initializing as early as practical.
- (symbol_lookup): Bring code up to speed with formatting guidelines.
- (GDSymbolLookup): Ditto.
-
-2006-07-10 Darin Adler <darin@apple.com>
-
- - try to fix Windows build
-
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.vcproj:
- Remove include paths with "khtml" in them. Add one for "html" subdir or WebCore.
-
-2006-07-09 David Kilzer <ddkilzer@kilzer.net>
-
- Build fix.
-
- - Backed out http://bugs.webkit.org/show_bug.cgi?id=7802
- devenv.com not available in VC++ Express installations
-
- * Scripts/webkitdirs.pm: Backed out previous change.
-
-2006-07-09 David Kilzer <ddkilzer@kilzer.net>
-
- Reviewed by Darin Adler.
-
- - http://bugs.webkit.org/show_bug.cgi?id=9693
- svn-apply should set ChangeLog date correctly when applying patches
-
- * Scripts/svn-apply: Set the ChangeLog entry date using a configurable timezone
- before applying the patch.
- * Scripts/svn-unapply: Reset the ChangeLog entry date before unapplying the patch.
-
-2006-07-09 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: Final version of this round of renaming for posterity.
-
-2006-07-09 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: Next round of renaming. (Last round was done.)
-
-2006-07-09 David Kilzer <ddkilzer@kilzer.net>
-
- - http://bugs.webkit.org/show_bug.cgi?id=7802
- devenv.com not available in VC++ Express installations
-
- * Scripts/webkitdirs.pm: Restore Hyatt's original logic to make buildbot
- work again. Add VC++ Express check as the fallback.
-
-2006-07-09 Bjoern Graf <bjoern.graf@gmail.com>
-
- Reviewed by Timothy Hatcher.
-
- - http://bugs.webkit.org/show_bug.cgi?id=7802
- devenv.com not available in VC++ Express installations
-
- * Scripts/webkitdirs.pm: Make Windows build work with Visual C++ Express.
-
-2006-07-09 Joost de Valk <jdevalk@opendarwin.org>
-
- Reviewed by Eric.
-
- Fixes bug http://bugs.webkit.org/show_bug.cgi?id=9804 .
- Patch by coldwinter@katamail.com.
-
- In the congratulations message, "capatibilies" should be "capabilities".
-
- * Scripts/build-webkit:
-
-2006-07-09 David Kilzer <ddkilzer@kilzer.net>
-
- Reviewed by Timothy Hatcher.
-
- - http://bugs.webkit.org/show_bug.cgi?id=9794
- Teach run-webkit-tests how to ignore tests with performance improvements
-
- * Scripts/run-webkit-tests: Speed up test list generation, implement --ignore-tests
- feature, and minor clean up.
-
-2006-07-08 Darin Adler <darin@apple.com>
-
- Reviewed by Geoff (well, half of it at least).
-
- - http://bugs.webkit.org/show_bug.cgi?id=9788
- storage leaks in Objective-C tests
-
- * DumpRenderTree/DumpRenderTree.m: (-[LayoutTestController keepWebHistory]):
- * DumpRenderTree/ObjCPlugin.m: (-[ObjCPlugin removeBridgeRestrictions:]):
- Add a release to fix a storage leak.
-
-2006-07-08 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: A few more.
-
-2006-07-08 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: Another cut at renames. About ready to go (later today).
-
-2006-07-04 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin Adler.
-
- http://bugs.webkit.org/show_bug.cgi?id=9734
- - add support for dumping non-HTML as text - in this case use textContent
- instead of innerText
-
- * DumpRenderTree/DumpRenderTree.m:
- (dump):
-
-2006-07-02 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Eric.
-
- Bug 9631: [Drosera] Add "Step Over" and "Step Out"
- http://bugs.webkit.org/show_bug.cgi?id=9631
-
- Adds step over and step out. Along with a little code cleanup
- that was minor enough to piggyback on this fix.
-
- * Drosera/DebuggerDocument.h:
- * Drosera/DebuggerDocument.m:
- (-[DebuggerDocument stepOver:]):
- (-[DebuggerDocument stepOut:]):
- (-[DebuggerDocument windowDidLoad]):
- (-[DebuggerDocument windowWillClose:]):
- (-[DebuggerDocument toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:]):
- (-[DebuggerDocument toolbarDefaultItemIdentifiers:]):
- (-[DebuggerDocument toolbarAllowedItemIdentifiers:]):
- (-[DebuggerDocument validateUserInterfaceItem:]):
- * Drosera/Drosera.xcodeproj/project.pbxproj:
- * Drosera/debugger.html:
- * Drosera/debugger.js:
- * Drosera/viewer.css:
-
-2006-07-02 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Eric.
-
- Bug 9628: [Drosera] Split Views acting oddly
- http://bugs.webkit.org/show_bug.cgi?id=9628
-
- Only update the last X or Y coordinate if the new
- size was not constrained. Also adds the resize cursor to
- the body during the drag incase there is a constrained
- over drag off of the resizer element.
-
- * Drosera/debugger.js:
-
-2006-07-02 Mark Rowe <opendarwin.org@bdash.net.nz>
-
- Reviewed by Alexey Proskuryakov.
-
- Bug 9692: Warning about Safari extensions on every launch is obnoxious
- http://bugs.webkit.org/show_bug.cgi?id=9692
-
- * WebKitLauncher/WebKitNightlyEnabler.m:
- (myApplicationWillTerminate): Note that we are exiting cleanly.
- (cleanUpAfterOurselves): Install bundle load tracking only if we failed
- to exit cleanly on our last invocation. This doesn't play nicely with
- multiple concurrent instances of WebKit.app so it can be disabled via
- defaults write com.apple.Safari WKNEShouldMonitorShutdowns -bool NO.
-
-2006-07-02 Mark Rowe <opendarwin.org@bdash.net.nz>
-
- Reviewed by Alexey Proskuryakov.
-
- Bug 9654: Refresh Loop when accessing feed URLs
- http://bugs.webkit.org/show_bug.cgi?id=9654
-
- * WebKitLauncher/Info.plist: Don't claim to handle feed:// URLs.
-
-2006-07-02 Mark Rowe <opendarwin.org@bdash.net.nz>
-
- Reviewed by Timothy Hatcher.
-
- Bug 9689: Nightly builds should warn a user about potential problems when using
- "Safari extensions"
- http://bugs.webkit.org/show_bug.cgi?id=9689
-
- * WebKitLauncher/WebKitLauncher.xcodeproj/project.pbxproj:
- * WebKitLauncher/WebKitNightlyEnabler.m:
- (myBundleDidLoad): Keep track of if any bundles that are loaded.
- (myApplicationWillFinishLaunching): Notify user if any bundles are loaded.
- (cleanUpAfterOurselves): Register for NSBundleDidLoadNotification and
- NSApplicationWillFinishLaunchingNotification notifications so that we can
- track bundle loads and notify the user at launch completion.
-
-2006-06-30 Mike Emmel <mike.emmel@gmail.com>
-
- Reviewed by Darin Adler.
-
- - first check-in of a Gdk shell for testing WebKit
-
- * GdkLauncher: Added.
-
-2006-06-29 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Darin Adler.
-
- Need to call window close so WebView tears-down completly.
-
- * DumpRenderTree/DumpRenderTree.m:
- (main): call [window close]
-
-2006-06-29 Mark Rowe <opendarwin.org@bdash.net.nz>
-
- Reviewed by Darin Adler.
-
- Bug 9615: Buildbot configuration should be in SVN repository
- http://bugs.webkit.org/show_bug.cgi?id=9615
-
- Import BuildBot configuration files as used by build.webkit.org.
- auth.py has been stubbed out so that slave passwords are not disclosed.
-
- * BuildSlaveSupport/build.webkit.org-config/Makefile: Added.
- * BuildSlaveSupport/build.webkit.org-config/buildbot.css: Added.
- * BuildSlaveSupport/build.webkit.org-config/buildbot.tac: Added.
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: Added.
- * BuildSlaveSupport/build.webkit.org-config/webkit/__init__.py: Added.
- * BuildSlaveSupport/build.webkit.org-config/webkit/auth.py: Added.
- * BuildSlaveSupport/build.webkit.org-config/webkit/basesteps.py: Added.
- * BuildSlaveSupport/build.webkit.org-config/webkit/builders.py: Added.
- * BuildSlaveSupport/build.webkit.org-config/webkit/factories.py: Added.
- * BuildSlaveSupport/build.webkit.org-config/webkit/schedulers.py: Added.
- * BuildSlaveSupport/build.webkit.org-config/webkit/status.py: Added.
- * BuildSlaveSupport/build.webkit.org-config/webkit/steps.py: Added.
-
-2006-06-29 Mark Rowe <opendarwin.org@bdash.net.nz>
-
- Reviewed by Darin Adler.
-
- Bug 9614: Nightly builds should notify user if a newer build is available
- http://bugs.webkit.org/show_bug.cgi?id=9614
-
- * BuildSlaveSupport/build-launcher-app: Write revision number to WebKit.app's VERSION file.
- * BuildSlaveSupport/build-launcher-dmg: Pass revision number to server-side nightly maintenance
- script so it can keep track of the latest revision.
- * Scripts/run-webkit-tests: Pass build-dumprendertree's exit status through correctly.
- * WebKitLauncher/VERSION: Added. Placeholder for SVN revision number
- * WebKitLauncher/WebKitLauncher.xcodeproj/project.pbxproj:
- * WebKitLauncher/start.html: Retrieve revision number from VERSION file, and pass it through to
- the nightly start page.
-
-2006-06-26 Jonas Witt <jonas.witt@gmail.com>
-
- Reviewed by Darin Adler.
-
- Bug 9579: LayoutTests/fast/events/objc-event-api.html failing due to screenY output
- http://bugs.webkit.org/show_bug.cgi?id=9579
-
- Report screenY values as (height of zero screen - screenY)
-
- * DumpRenderTree/EventSendingController.m: (-[EventSendingController handleEvent:]):
-
-2006-06-25 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Geoff.
-
- Bug 9591: [Drosera] breakpoints should be dragable and deletable by dragging off the gutter
- http://bugs.webkit.org/show_bug.cgi?id=9591
-
- Makes breakpoints dragable. If dragged off the gutter they are deleted.
-
- * Drosera/debugger.js:
- * Drosera/viewer.css:
-
-2006-06-25 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Darin Adler.
-
- Bug 9568: assertion failure in Safari after quitting Drosera
- http://bugs.webkit.org/show_bug.cgi?id=9568
-
- Call switchToServerNamed:nil and not removeLister to make sure
- the server object is set to nil to prevent further removeListener calls.
-
- * Drosera/DebuggerDocument.m:
- (-[DebuggerDocument applicationTerminating:]):
-
-2006-06-25 David Kilzer <ddkilzer@kilzer.net>
-
- Reviewed by Darin Adler.
-
- * Scripts/svn-apply: Speed up isDirectoryEmptyForRemoval() by returning as soon as we find
- that the directory is not empty instead of reading in every single file and directory first,
- then checking the count. Avoid warning in removeDirectoriesIfNeeded() if $svnOutput is not
- defined.
-
-2006-06-25 Darin Adler <darin@apple.com>
-
- * Scripts/svn-apply: Tweak comments.
- * Scripts/svn-create-patch: Ditto.
- * Scripts/svn-unapply: Ditto.
-
-2006-06-25 David Kilzer <ddkilzer@kilzer.net>
-
- Formatting fix per Bug 9571 Comment #2.
-
- http://bugs.webkit.org/show_bug.cgi?id=9571#c2
-
- * Scripts/svn-apply: Formatting fix.
-
-2006-06-25 David Kilzer <ddkilzer@kilzer.net>
-
- Reviewed by Darin Adler.
-
- http://bugs.webkit.org/show_bug.cgi?id=9571
- Teach svn-apply and svn-unapply to handle directory adds and removes better
-
- * Scripts/svn-apply: Handle directory adds more intelligently. Handle directory removes.
- * Scripts/svn-unapply: Handle undoing both directory adds and removes.
-
-2006-06-25 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Darin Adler.
-
- Bug 9574: Drosera should show inline scripts within the original HTML
- http://bugs.webkit.org/show_bug.cgi?id=9574
-
- Refactor the JavaScript code to have a distinction between files
- and scripts. Show the script in the context of the HTML file if
- it's URL is the same as the frame's main resource. At the time of
- the disParseScript callback the main resource might not be completely
- loaded, but Drosera needs to show whatever we have at the time. Once
- the main resource is finished, update the file source and reload the file.
-
- * Drosera/DebuggerDocument.m:
- (-[DebuggerDocument pause]):
- (-[DebuggerDocument webView:didLoadMainResourceForDataSource:]):
- (-[DebuggerDocument webView:didParseSource:baseLineNumber:fromURL:sourceId:forWebFrame:]):
- (-[DebuggerDocument webView:failedToParseSource:baseLineNumber:fromURL:withError:forWebFrame:]):
- * Drosera/debugger.css:
- * Drosera/debugger.js:
-
-2006-06-24 David Kilzer <ddkilzer@kilzer.net>
-
- Reviewed by Darin Adler.
-
- http://bugs.webkit.org/show_bug.cgi?id=9570
- Teach prepare-ChangeLog to operate on a list of files or directories
-
- * Scripts/prepare-ChangeLog: Accept a list of files and/or directories when running.
- * Scripts/svn-create-patch: Code refactoring.
-
-2006-06-24 James G. Speth <speth@end.com>
-
- Reviewed by Darin Adler.
-
- - http://bugs.webkit.org/show_bug.cgi?id=8843
- add a way to build Objective-C test cases in HTML
-
- Tests running in DumpRenderTree can choose to relax some restrictions of the JavaScript/Objective-C bridge
- allowing more extensive testing of the Obj-C API. (and by more extensive, I mean this lets scripts do
- pretty much whatever they want, including acting as delegates, generating events, instantiating obj-c
- objects, etc... )
-
- * DumpRenderTree/ObjCPlugin.h:
- * DumpRenderTree/ObjCPlugin.m: this ability is only exposed to scripts running in DumpRenderTree
- (+[ObjCPlugin isSelectorExcludedFromWebScript:]):
- (+[ObjCPlugin webScriptNameForSelector:]):
- (-[ObjCPlugin removeBridgeRestrictions:]): scripts call this to open up obj-c for extensive testing
- (+[NSObject setAllowsScriptsFullAccess:]): makes NSObject allow all selectors to be invoked from script
- (+[NSObject allowsScriptsFullAccess]):
- (+[NSObject isSelectorExcludedFromWebScript:]): when full access is enabled, no selector is excluded
- (+[NSObject webScriptNameForSelector:]): always return nil for the default selector mutation
- (-[JSObjC classNameOfObject:isSelectorExcludedFromWebScript:]):
- (+[JSObjC webScriptNameForSelector:]):
- (-[JSObjC invokeDefaultMethodWithArguments:]): shortcut for accessing classes
- (-[JSObjC lookUpClass:]): allow scripts to retrieve obj-c classes by name
- (-[JSObjC log:]): access to NSLog function
- (-[JSObjC retainObject:]): useful obj-c functions that are otherwise hard to reach from javascript
- (-[JSObjC classOfObject:]):
- (-[JSObjC classNameOfObject:]):
-
-2006-06-24 David Kilzer <ddkilzer@kilzer.net>
-
- Reviewed by Timothy.
-
- * DrawTest/Info.plist: Added copyright statement.
- * Drosera/Info.plist: Ditto.
- * DumpRenderTree/TestNetscapePlugIn.subproj/Info.plist: Ditto.
- * WebKitLauncher/Info.plist: Ditto.
-
-2006-06-24 David Kilzer <ddkilzer@kilzer.net>
-
- Build fix.
-
- - Backed out http://bugs.webkit.org/show_bug.cgi?id=7802
- devenv.com not available in VC++ Express installations
-
- * Scripts/webkitdirs.pm: Backed out previous change.
-
-2006-06-24 Bjoern Graf <bjoern.graf@gmail.com>
-
- Reviewed by Maciej.
-
- - http://bugs.webkit.org/show_bug.cgi?id=7802
- devenv.com not available in VC++ Express installations
-
- * Scripts/webkitdirs.pm: Make Windows build work with Visual C++ Express.
-
-2006-06-24 Alexey Proskuryakov <ap@nypop.com>
-
- Reviewed by Darin Adler.
-
- - http://bugs.webkit.org/show_bug.cgi?id=9564
- A bunch of fixes to run-webkit-httpd
-
- - Add an -all-interfaces (-a) flag to bind to all interfaces, not just
- 127.0.0.1. Useful for testing with WinIE running on another machine;
- - don't call checkFrameworks() - we do not need a built WebKit here;
- - changed tabs to spaces;
- - disable HTTP keepalive (since Apache doesn't spawn sub-processes in
- interactive mode, they were a hassle when testing with several browsers, as one
- had to wait for connection to expire);
- - remove httpd.pid when done, so that Apache doesn't complain next time.
-
- * Scripts/run-webkit-httpd:
-
-2006-06-24 Jonas Witt <jonas.witt@gmail.com>
-
- Reviewed by ggaren, landed by ap.
-
- - http://bugs.webkit.org/show_bug.cgi?id=9181
- Complete DOMUIEvent Obj-C API to reflect UIEvent
-
- Add function to enable logging of all events of one DOM node to stdout.
-
- * DumpRenderTree/EventSendingController.h:
- * DumpRenderTree/EventSendingController.m:
- (+[EventSendingController initialize]):
- (+[EventSendingController isSelectorExcludedFromWebScript:]):
- (+[EventSendingController webScriptNameForSelector:]):
- (-[EventSendingController enableDOMUIEventLogging:]):
- (-[EventSendingController handleEvent:]):
-
-2006-06-23 Kevin Decker <kdecker@apple.com>
-
- Reviewed by Tim Hatcher.
-
- - Made column headers in Drosera resizable.
-
-2006-06-22 Alexey Proskuryakov <ap@nypop.com>
-
- Reviewed by ggaren.
-
- - see http://bugs.webkit.org/show_bug.cgi?id=9539
- Another case error preventing build
-
- * Scripts/webkitdirs.pm: Building WebKit now requires Xcode 2.3.
-
-2006-06-22 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Eric.
-
- Adds a native toolbar to Drosera to be a good citizen.
- Adds a Debug menu with key-commands for Continue, Pause and Step Into.
- Fixes a dragging bug from an earlier fix to the divider code.
- Fixes some poor indenting in debugger.js.
-
- * Drosera/DebuggerDocument.h:
- * Drosera/DebuggerDocument.m:
- (-[DebuggerDocument stepInto]):
- (-[DebuggerDocument pause:]):
- (-[DebuggerDocument resume:]):
- (-[DebuggerDocument stepInto:]):
- (-[DebuggerDocument windowDidLoad]):
- (-[DebuggerDocument toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:]):
- (-[DebuggerDocument toolbarDefaultItemIdentifiers:]):
- (-[DebuggerDocument toolbarAllowedItemIdentifiers:]):
- (-[DebuggerDocument validateUserInterfaceItem:]):
- * Drosera/English.lproj/MainMenu.nib/classes.nib:
- * Drosera/English.lproj/MainMenu.nib/info.nib:
- * Drosera/English.lproj/MainMenu.nib/keyedobjects.nib:
- * Drosera/debugger.css:
- * Drosera/debugger.html:
- * Drosera/debugger.js:
- * Drosera/viewer.html:
-
-2006-06-22 Kevin Decker <kdecker@apple.com>
-
- Reviewed by Anders.
-
- - Added pressed column header image.
- - Made column headers behave more like Xcode.
-
-2006-06-22 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Kevin Decker.
-
- Code clean up. Adds the stackframe and makes only the body
- of the tables scrollable keeping the header visible.
- Shows the current function stack when paused or stepping.
-
- * Drosera/DebuggerApplication.m:
- (-[DebuggerApplication awakeFromNib]):
- (-[DebuggerApplication numberOfRowsInTableView:]):
- (-[DebuggerApplication tableView:objectValueForTableColumn:row:]):
- * Drosera/DebuggerDocument.h:
- * Drosera/DebuggerDocument.m:
- (-[DebuggerDocument dealloc]):
- (-[DebuggerDocument currentFrame]):
- (-[DebuggerDocument currentFrameFunctionName]):
- (-[DebuggerDocument currentFunctionStack]):
- (-[DebuggerDocument log:]):
- (-[DebuggerDocument windowWillClose:]):
- (-[DebuggerDocument webView:didEnterCallFrame:sourceId:line:forWebFrame:]):
- (-[DebuggerDocument webView:willLeaveCallFrame:sourceId:line:forWebFrame:]):
- * Drosera/Drosera.xcodeproj/project.pbxproj:
- * Drosera/debugger.css:
- * Drosera/debugger.html:
- * Drosera/debugger.js:
-
-2006-06-22 Alexey Proskuryakov <ap@nypop.com>
-
- Reviewed by Anders.
-
- Teach run-webkit-httpd to properly look for webkitdirs.pm.
-
- * Scripts/run-webkit-httpd:
-
-2006-06-22 Kevin Decker <kdecker@apple.com>
-
- Reviewed by Tim Hatcher.
-
- - More progress toward Javascript Debugger.
- - Added some new images to the project.
-
-2006-06-21 Alexey Proskuryakov <ap@nypop.com>
-
- Reviewed by Anders.
-
- - http://bugs.webkit.org/show_bug.cgi?id=9516
- Would like a script to run a httpd server with the same configuration as run-webkit-tests http
-
- * Scripts/run-webkit-httpd: Added.
-
-2006-06-20 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Eric.
-
- Builds Drosera and a launcher to include with the nightly.
-
- * BuildSlaveSupport/build-launcher-app:
- * BuildSlaveSupport/build-launcher-dmg:
- * Drosera/Drosera.xcodeproj/project.pbxproj:
- * Drosera/Info.plist:
- * Drosera/LauncherInfo.plist: Added.
- * Drosera/launcher.m: Added.
- (displayErrorAndQuit):
- (checkMacOSXVersion):
- (myExecve):
- (main):
- * Scripts/build-drosera
- * WebKitLauncher/WebKitLauncher.xcodeproj/project.pbxproj:
- * WebKitLauncher/main.m:
- (main):
-
-2006-06-20 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Darin Adler.
-
- Adds a JavaScript debugger, called Drosera. Named after
- a genus of bug eating plants.
-
- * Drosera/DebuggerApplication.h: Added.
- * Drosera/DebuggerApplication.m: Added.
- (-[DebuggerApplication applicationDidFinishLaunching:]):
- (-[DebuggerApplication serverLoaded:]):
- (-[DebuggerApplication serverUnloaded:]):
- (-[DebuggerApplication awakeFromNib]):
- (-[DebuggerApplication showAttachPanel:]):
- (-[DebuggerApplication attach:]):
- (-[DebuggerApplication numberOfRowsInTableView:]):
- (-[DebuggerApplication tableView:objectValueForTableColumn:row:]):
- (-[DebuggerApplication tableView:willDisplayCell:forTableColumn:row:]):
- (-[DebuggerApplication tableViewSelectionDidChange:]):
- * Drosera/DebuggerDocument.h: Added.
- * Drosera/DebuggerDocument.m: Added.
- (+[WebScriptCallFrame isSelectorExcludedFromWebScript:]):
- (+[WebScriptCallFrame isKeyExcludedFromWebScript:]):
- (+[DebuggerDocument isSelectorExcludedFromWebScript:]):
- (+[DebuggerDocument isKeyExcludedFromWebScript:]):
- (-[DebuggerDocument initWithServerName:]):
- (-[DebuggerDocument windowWillClose:]):
- (-[DebuggerDocument dealloc]):
- (-[DebuggerDocument isPaused]):
- (-[DebuggerDocument pause]):
- (-[DebuggerDocument resume]):
- (-[DebuggerDocument step]):
- (-[DebuggerDocument windowNibName]):
- (-[DebuggerDocument windowDidLoad]):
- (-[DebuggerDocument switchToServerNamed:]):
- (-[DebuggerDocument applicationTerminating:]):
- (-[DebuggerDocument serverConnectionDidDie:]):
- (-[DebuggerDocument webView:windowScriptObjectAvailable:]):
- (-[DebuggerDocument webView:didFinishLoadForFrame:]):
- (-[DebuggerDocument webView:didParseSource:fromURL:sourceId:forWebFrame:]):
- (-[DebuggerDocument webView:didEnterCallFrame:sourceId:line:forWebFrame:]):
- (-[DebuggerDocument webView:willExecuteStatement:sourceId:line:forWebFrame:]):
- (-[DebuggerDocument webView:willLeaveCallFrame:sourceId:line:forWebFrame:]):
- * Drosera/Drosera.pch: Added.
- * Drosera/Drosera.xcodeproj/project.pbxproj: Added.
- * Drosera/English.lproj/Debugger.nib/classes.nib: Added.
- * Drosera/English.lproj/Debugger.nib/info.nib: Added.
- * Drosera/English.lproj/Debugger.nib/keyedobjects.nib: Added.
- * Drosera/English.lproj/MainMenu.nib/classes.nib: Added.
- * Drosera/English.lproj/MainMenu.nib/info.nib: Added.
- * Drosera/English.lproj/MainMenu.nib/keyedobjects.nib: Added.
- * Drosera/Images/breakPoint.tif: Added.
- * Drosera/Images/breakPointDisabled.tif: Added.
- * Drosera/Images/continue.tif: Added.
- * Drosera/Images/finishFunction.tif: Added.
- * Drosera/Images/glossyFooterFill.tif: Added.
- * Drosera/Images/glossyHeader.png: Added.
- * Drosera/Images/gradientBackground.png: Added.
- * Drosera/Images/gutter.png: Added.
- * Drosera/Images/navLeftDisabled.png: Added.
- * Drosera/Images/navLeftNormal.png: Added.
- * Drosera/Images/navLeftPressed.png: Added.
- * Drosera/Images/navRightDisabled.png: Added.
- * Drosera/Images/navRightNormal.png: Added.
- * Drosera/Images/navRightPressed.png: Added.
- * Drosera/Images/pause.tif: Added.
- * Drosera/Images/popUpArrows.png: Added.
- * Drosera/Images/programCounter.tif: Added.
- * Drosera/Images/programCounterBreakPoint.tif: Added.
- * Drosera/Images/programCounterBreakPointDisabled.tif: Added.
- * Drosera/Images/run.tif: Added.
- * Drosera/Images/splitterBar.tif: Added.
- * Drosera/Images/splitterDimple.tif: Added.
- * Drosera/Images/step.tif: Added.
- * Drosera/Images/stepOver.tif: Added.
- * Drosera/Images/stop.tif: Added.
- * Drosera/Images/toolbarBackground.png: Added.
- * Drosera/Info.plist: Added.
- * Drosera/debugger.css: Added.
- * Drosera/debugger.html: Added.
- * Drosera/debugger.js: Added.
- * Drosera/main.m: Added.
- (main):
- * Drosera/viewer.css: Added.
- * Drosera/viewer.html: Added.
-
-2006-06-18 David Kilzer <ddkilzer@kilzer.net>
-
- Reviewed by darin.
-
- http://bugs.webkit.org/show_bug.cgi?id=9485
- Teach svn-apply and svn-unapply to use full path names
-
- * Scripts/svn-apply: Changed to use full path names. Cleaned up code.
- * Scripts/svn-unapply: Ditto.
-
-2006-06-18 David Kilzer <ddkilzer@kilzer.net>
-
- Reviewed by ggaren.
-
- - http://bugs.webkit.org/show_bug.cgi?id=9150
- DumpRenderTree should be able to keep URL history during runs
-
- Test: LayoutTests/fast/history/clicked-link-is-visited.html
-
- * DumpRenderTree/DumpRenderTree.m: Add keepWebHistory function to layoutTestController
- (+[LayoutTestController isSelectorExcludedFromWebScript:]): Updated for keepWebHistory.
- (-[LayoutTestController keepWebHistory]): Added. We only set optional shared history if
- it is currently nil since keepWebHistory() might be called more than once incidentally
- for the same test.
- (dumpRenderTree): Set optional shared history in WebHistory to nil by default.
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Xcode 2.3 clean up.
-
-2006-06-11 David Kilzer <ddkilzer@kilzer.net>
-
- Reviewed by darin.
-
- http://bugs.webkit.org/show_bug.cgi?id=9395
- Make prepare-ChangeLog faster
-
- * Scripts/prepare-ChangeLog: Use "svn diff" instead of "svn stat" to find changed files,
- then save the diff output for reuse. Keep a status variable if changes are made to
- LayoutTests so "svn diff LayoutTests" doesn't have to be run to check for changes when
- WebCore is updated. Added -h|--help command-line switch and help message. Move test
- for no changed files closer to the beginning of the program.
-
-2006-06-10 Mitz Pettel <opendarwin.org@mitzpettel.com>
-
- Reviewed and landed by ap.
-
- - make DumpRenderTree build
-
- * DumpRenderTree/DumpRenderTree.m:
- (-[WaitUntilDoneDelegate webView:didCommitLoadForFrame:]): Changed _updateFocusState to _updateActiveState
- (-[WaitUntilDoneDelegate webViewFocus:]): Ditto.
- (-[LayoutTestController setWindowIsKey:]): Ditto.
- (-[LayoutTestController setMainFrameIsFirstResponder:]): Ditto.
-
-2006-06-09 David Kilzer <ddkilzer@kilzer.net>
-
- Reviewed by Darin, landed by Geoff.
-
- http://bugs.webkit.org/show_bug.cgi?id=9350
- Use pathcmp() when sorting paths in svn-create-patch
-
- * Scripts/run-webkit-tests: Fixed splitpath() to use File::Basename subroutines instead of regex.
- * Scripts/svn-create-patch: Copied numericcmp(), pathcmp() and splitpath() from run-webkit-tests.
- Changed sort() functions to use pathcmp(). Added subroutine prototypes. Added -h command-line
- switch and printUsage() subroutine.
-
-2006-06-06 David Kilzer <ddkilzer@kilzer.net>
-
- Reviewed by darin.
-
- http://bugs.webkit.org/show_bug.cgi?id=9322
- Teach svn-create-patch to sort its output
-
- * Scripts/svn-create-patch: Clean up perl code. Sort patch output alphabetically
- by text files first, then by binary files.
-
-2006-06-04 David Kilzer <ddkilzer@kilzer.net>
-
- Reviewed by darin.
-
- http://bugs.webkit.org/show_bug.cgi?id=9299
- Teach svn-create-patch and friends to work with binary files
-
- * Scripts/svn-apply: Updated to use base64-encoded text for binary files when applying patches.
- * Scripts/svn-create-patch: Updated to include binary file content as base64-encoded text in patches.
- * Scripts/svn-unapply: Updated to recognize binary files when unapplying patches.
-
-2006-06-03 David Kilzer <ddkilzer@kilzer.net>
-
- Reviewed by Maciej.
-
- http://bugs.webkit.org/show_bug.cgi?id=9296
- Performance improvement for svn-create-patch
-
- * Scripts/svn-create-patch: Undef $indexPath after all paths have been fixed for a given patch.
-
-2006-06-03 David Kilzer <ddkilzer@kilzer.net>
-
- Reviewed by darin.
-
- http://bugs.webkit.org/show_bug.cgi?id=9290
- Teach svn-apply and svn-unapply to patch ChangeLogs cleanly
-
- * Scripts/svn-apply: Fixed to apply ChangeLog patches without failing.
- * Scripts/svn-unapply: Ditto. Also simplified reversing a deletion.
-
-2006-06-03 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by hyatt.
-
- Switch Spinneret to new hosting mechanism
-
- * Spinneret/Spinneret.sln:
- * Spinneret/Spinneret/Spinneret.cpp:
- (SpinneretWebHost::updateAddressBar):
- (SpinneretWebHost::QueryInterface):
- (SpinneretWebHost::AddRef):
- (SpinneretWebHost::Release):
- (resizeSubViews):
- (_tWinMain):
- (WndProc):
- (MyEditProc):
- (About):
- (loadURL):
- * Spinneret/Spinneret/Spinneret.h:
- (SpinneretWebHost::didStartProvisionalLoadForFrame):
- (SpinneretWebHost::didReceiveServerRedirectForProvisionalLoadForFrame):
- (SpinneretWebHost::didFailProvisionalLoadWithError):
- (SpinneretWebHost::didCommitLoadForFrame):
- (SpinneretWebHost::didReceiveTitle):
- (SpinneretWebHost::didReceiveIcon):
- (SpinneretWebHost::didFinishLoadForFrame):
- (SpinneretWebHost::didFailLoadWithError):
- (SpinneretWebHost::didChangeLocationWithinPageForFrame):
- (SpinneretWebHost::willPerformClientRedirectToURL):
- (SpinneretWebHost::didCancelClientRedirectForFrame):
- (SpinneretWebHost::willCloseFrame):
- (SpinneretWebHost::windowScriptObjectAvailable):
- * Spinneret/Spinneret/Spinneret.vcproj:
-
-2006-06-02 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by darin.
-
- Updated build script
-
- * Scripts/build-webkit:
-
-2006-06-01 Anders Carlsson <acarlsson@apple.com>
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/DumpRenderTree.m:
- (+[LayoutTestController isSelectorExcludedFromWebScript:]):
- (-[LayoutTestController clearBackForwardList]):
- Add clearBackForwardList function to layoutTestController
-
-2006-06-01 Anders Carlsson <acarlsson@apple.com>
-
- Reviewed by Darin Adler.
-
- http://bugs.webkit.org/show_bug.cgi?id=8996
- slow-utf8-text layout test case failing (no longer deterministic?)
-
- * DumpRenderTree/DumpRenderTree.m:
- (dump):
- Dump as text when the response MIME type is text/plain
-
-2006-05-26 Steve Falkenburg <sfalken@apple.com>
-
- Build fixes/tweaks
-
- * Spinneret/Spinneret.sln:
- * Spinneret/Spinneret/Spinneret.vcproj:
-
-2006-05-24 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by mjs.
-
- Added 'GCController' to DRT to support garbage collection layout tests.
-
- GCController.collect() and GCController.collectOnAlternateThread() do
- what you would expect. The latter takes a boolean argument sepcifying
- whether to wait for garbage collection to finish before continuing to
- execute script.
-
- * DumpRenderTree/DumpRenderTree.m:
- (-[WaitUntilDoneDelegate webView:windowScriptObjectAvailable:]):
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/GCController.h: Added.
- * DumpRenderTree/GCController.mm: Added.
- (+[GCController isSelectorExcludedFromWebScript:]):
- (+[GCController webScriptNameForSelector:]):
- (-[GCController collect]):
- (-[GCController collectOnAlternateThread:]):
-
-2006-05-23 John Sullivan <sullivan@apple.com>
-
- Reviewed by Maciej.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- Newer Xcode removed some obsolete cruft
-
- * DumpRenderTree/TextInputController.m:
- (-[TextInputController textInput]):
- added (id) cast to make newer compiler happy
-
-2006-05-22 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by adele.
-
- Fix build.
-
- * Spinneret/Spinneret.sln:
-
-2006-05-18 Darin Adler <darin@apple.com>
-
- - try to fix no-SVG, no-XPATH build, again
-
- * Scripts/build-webkit: Use FEATURE_DEFINES= instead of FEATURE_DEFINES=''.
-
-2006-05-18 Darin Adler <darin@apple.com>
-
- - try to fix no-SVG, no-XPATH build
-
- * Scripts/build-webkit: Pass FEATURE_DEFINES rather than GCC_PREPROCESSOR_DEFINITIONS,
- since the former is what's used in the WebCore project now.
-
-2006-05-17 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: Some more future renames.
-
-2006-05-16 Adele Peterson <adele@apple.com>
-
- Reviewed by Hyatt.
-
- * Scripts/do-webcore-rename: Added RenderTextField => RenderTextControl and
- HTMLTextFieldInnerElement => HTMLTextControlInnerElement to list for future renames.
-
-2006-05-15 Alexey Proskuryakov <ap@nypop.com>
-
- * Scripts/install-unix-extras: Changed to be executable and removed
- text in the file generated by "svn diff".
- * Scripts/regenerate-makefiles: Ditto.
-
-2006-05-13 Kevin M. Ollivier <kevino@theolliviers.com>
-
- Reviewed by Darin, landed by ap.
-
- - http://bugs.webkit.org/show_bug.cgi?id=8528
- Bakefiles (and generated Makefiles) for wx and gdk ports
-
- * Scripts/install-unix-extras: Added.
- * Scripts/regenerate-makefiles: Added.
-
-2006-05-10 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by Maciej.
-
- Fix registry usage from perl script. Turns out libwin32's
- SetRegValueEx, even for REG_DWORD, always takes its value as a string!
-
- * Scripts/install-win-extras:
-
-2006-05-09 Steve Falkenburg <sfalken@apple.com>
-
- Fix Windows build.
- Add load ended callback.
-
- Reviewed by kevin.
-
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.vcproj: Fix include paths
- * Scripts/build-webkit: Build WebKitWin instead of WebCore/JavaScriptCore (WebKitWin builds those indirectly).
- * Spinneret/Spinneret/Spinneret.cpp:
- (SpinneretWebHost::loadEnd): Add callback for loadEnd() to determine success/failure of page load.
- (_tWinMain): Load built-in test content here instead of in lower-level code.
- * Spinneret/Spinneret/Spinneret.h: Add loadEnd() callback.
-
-2006-05-08 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Anders.
-
- * Scripts/extract-localizable-strings: Update for correct names of log macros.
-
-2006-05-09 Anders Carlsson <acarlsson@apple.com>
-
- Reviewed by Maciej.
-
- * Scripts/check-dom-results:
- Add XPath to the list of results.
-
-2006-05-08 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: Add another rename.
-
-2006-05-01 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by eric.
-
- Spinneret now links against the new separate lib.
-
- * Spinneret/Spinneret.sln:
- * Spinneret/Spinneret/Spinneret.cpp:
- (SpinneretWebHost::updateLocationBar):
- (_tWinMain):
- * Spinneret/Spinneret/Spinneret.h:
- * Spinneret/Spinneret/Spinneret.vcproj:
- * Spinneret/Spinneret/WebFrame.cpp: Removed.
- * Spinneret/Spinneret/WebFrame.h: Removed.
- * Spinneret/Spinneret/WebView.cpp: Removed.
- * Spinneret/Spinneret/WebView.h: Removed.
-
-2006-04-28 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by kdecker
-
- Modify error reporting registry keys to disable Dr. Watson.
- This allows Javascript test cases to complete without blocking UI.
-
- * Scripts/install-win-extras:
- - Use Perl Win32 registry functions to disable blocking UI
-
-
-2006-04-28 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by eric.
-
- Turned off C++ exceptions, fixed memory leaks
-
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.vcproj:
- * Spinneret/Spinneret.sln:
- * Spinneret/Spinneret/Spinneret.cpp:
- (_tWinMain):
- * Spinneret/Spinneret/Spinneret.vcproj:
- * Spinneret/Spinneret/WebFrame.cpp:
- (WebKit::WebFrame::WebFramePrivate::~WebFramePrivate):
- (WebKit::WebFrame::WebFrame):
- (WebKit::WebFrame::~WebFrame):
- (WebKit::WebFrame::impl):
- * Spinneret/Spinneret/WebFrame.h:
- * Spinneret/Spinneret/WebView.cpp:
- * Spinneret/Spinneret/stdafx.h:
-
-2006-04-28 Alexey Proskuryakov <ap@nypop.com>
-
- Reviewed by Darin Adler.
-
- - http://bugs.webkit.org/show_bug.cgi?id=8633
- DumpRenderTree should reset the URL cache
-
- * DumpRenderTree/DumpRenderTree.m:
- (main): Call [[NSURLCache sharedURLCache] removeAllCachedResponses].
-
-2006-04-28 Eric Seidel <eseidel@apple.com>
-
- Reviewed by andersca.
-
- * Scripts/do-webcore-rename: rename KCanvasContainer too
- * Scripts/run-webkit-tests: output total time
-
-2006-04-26 Mitz Pettel <opendarwin.org@mitzpettel.com>
-
- Reviewed by hyatt. Landed by eseidel.
-
- - http://bugs.webkit.org/show_bug.cgi?id=8549
- Enable detection of excessive repainting with DumpRenderTree
-
- * DumpRenderTree/DumpRenderTree.m:
- (-[LayoutTestController display]):
-
-2006-04-23 Mitz Pettel <opendarwin.org@mitzpettel.com>
-
- Reviewed by Darin Adler.
-
- - http://bugs.webkit.org/show_bug.cgi?id=6905
- DumpRenderTree needs a way to force painting (to allow invalidation tests)
-
- * DumpRenderTree/DumpRenderTree.m:
- (dump): If display() has been called during the test, grab the pixels from
- the view, after letting it repaint invalidated rects.
- (+[LayoutTestController isSelectorExcludedFromWebScript:]):
- (-[LayoutTestController display]): Added. Calls -display on the view
- and changes the subsequent behavior of dump().
- (dumpRenderTree):
-
-2006-04-22 Alexey Proskuryakov <ap@nypop.com>
-
- Reviewed by Maciej.
-
- - http://bugs.webkit.org/show_bug.cgi?id=8532
- Update iExploder to 1.3.2
-
- Test case numbers are not compatible with iExploder 1.2.
-
- * Scripts/run-iexploder-tests: Print the numbers of the last five tests that were accessed.
-
- * iExploder/CHANGELOG.txt: Added.
- * iExploder/LICENSE.txt: Changed to a standard zlib/png license.
- * iExploder/README.txt: Added some performance hints.
-
- * iExploder/htdocs/config.rb: Added.
- * iExploder/htdocs/cssproperties.in:
- * iExploder/htdocs/cssvalues.in:
- * iExploder/htdocs/htmlattrs.in:
- * iExploder/htdocs/htmltags.in:
- * iExploder/htdocs/iexploder.cgi:
- - Updated to support the latest HTML & CSS tags, properties, and values from both
- the WebKit and Mozilla CVS tree
- - cssproperties.in cleanup
- - Modularized the code a little bit.
- - Fix subtest bug that was causing last 5 tags to be missed
- - new subtest algorithm to deal better with larger tag counts
- - default HTML_MAX_TAGS increased from 32 to 96
-
- * iExploder/htdocs/index.html: Updated version to 1.3.2.
- * iExploder/htdocs/webserver.rb: Added. New standalone webserver, can be used as an
- alternative to our run-iexploder-tests.
- * iExploder/tools/showtest.rb: Added. Similar to run-iexploder-tests --get.
- * iExploder/htdocs/iexploder.rb: Added. Used by webserver.rb.
- * iExploder/tools/osx_last_crash.rb: Find logs modified in the last two days.
-
-2006-04-22 Alexey Proskuryakov <ap@nypop.com>
-
- - commit Scripts/run-mangleme-tests (missed it the previous time).
-
-2006-04-18 Darin Adler <darin@apple.com>
-
- - attempt to fix Windows buildbot
-
- * Scripts/install-win-extras: Temporarily changed URLs to fr.rpmfind.net.
- We need a better long-term solution for this.
-
-2006-04-17 Alexey Proskuryakov <ap@nypop.com>
-
- Reviewed by Darin Adler.
-
- - http://bugs.webkit.org/show_bug.cgi?id=8444
- Integrate mangleme test script.
-
- Works in a similar way to run-iexploder-tests.
-
- * Scripts/run-mangleme-tests: Added.
- * mangleme: Added.
- * mangleme/Makefile: Added.
- * mangleme/README: Added.
- * mangleme/mangle.cgi.c: Added.
- * mangleme/remangle.cgi.c: Added.
- * mangleme/tags.h: Added.
-
-2006-04-17 Alexey Proskuryakov <ap@nypop.com>
-
- Reviewed by Darin Adler.
-
- - http://bugs.webkit.org/show_bug.cgi?id=8443
- An easier way to save iExploder tests.
-
- * Scripts/run-iexploder-tests: Added a --get option to save a test into a file.
-
-2006-04-17 Alexey Proskuryakov <ap@nypop.com>
-
- Reviewed by Darin Adler.
-
- - http://bugs.webkit.org/show_bug.cgi?id=8421
- Integrate iExploder test script.
-
- This script generates artificially mangled HTML documents, to test that the browser
- doesn't crash when handling ill-formed code.
-
- How to use:
- run-iexploder-tests Open an interactive test page in Safari+ToT.
- run-iexploder-tests nnnnn Open test #nnnnn.
-
- Command line options:
- --guard-malloc (-g) Use Guard Malloc.
- --port=nnnn Run Apache on port nnnn (default is 8000).
-
- To save a crashing test, you can use curl while the crash reporter dialog is on the screen
- (thus, Apache is still running), e.g.:
- curl -o iexploder293.html "http://127.0.0.1:8000/iexploder.cgi?lookup=1&test=293"
-
- Additionally, there are some useful scripts in WebKitTools/iExploder/tools directory.
-
- * Scripts/run-iexploder-tests: Added.
- * iExploder: Added.
- * iExploder/LICENSE.txt: Added.
- * iExploder/README.txt: Added.
- * iExploder/htdocs: Added.
- * iExploder/htdocs/cssproperties.in: Added.
- * iExploder/htdocs/cssvalues.in: Added.
- * iExploder/htdocs/htmlattrs.in: Added.
- * iExploder/htdocs/htmltags.in: Added.
- * iExploder/htdocs/htmlvalues.in: Added.
- * iExploder/htdocs/iexploder.cgi: Added.
- * iExploder/htdocs/index.html: Added.
- * iExploder/tools: Added.
- * iExploder/tools/lasthit.rb: Added.
- * iExploder/tools/osx_last_crash.rb: Added.
-
-2006-04-16 Alexey Proskuryakov <ap@nypop.com>
-
- Reviewed by Darin Adler.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=8412
- Restore color profile after a crash
-
- * DumpRenderTree/DumpRenderTree.m:
- (crashHandler): Added a handler for signals that are raised on a crash. Keeping separate
- from the existing handler for manual interruption (SIGINT/SIGHUP/SIGTERM), because
- I'm trying to find a way to prevent the Crash Reporter dialog from appearing on crash,
- and this code may change significantly.
-
- (main): Install crashHandler.
-
- (setDefaultColorProfileToRGB): Properly convert CFStringRef to a char buffer
- (CFStringGetCStringPtr should NEVER EVER be used!).
-
-2006-04-15 Darin Adler <darin@apple.com>
-
- Reviewed by Eric.
-
- * Scripts/install-win-extras: Try to fix the Windows build by fixing the URLs here.
- Seems xmlsoft.org's HTTP no longer has what we need.
-
-2006-04-13 Mark Rowe <opendarwin.org@bdash.net.nz>
-
- Rubber-stamped by Darin Adler.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=8348
- upload-disk-image stage on buildslaves fail with "No space left on device"
-
- * BuildSlaveSupport/build-launcher-dmg: Use the -srcfolder option to
- 'hdiutil create'. This creates the initial disk image based on the size of
- the source folder, and copies the contents to the new disk image. The file
- extension on the temporary uncompressed disk image has also been altered from
- ".uncompressed" to ".uncompressed.dmg" as hdiutil on 10.4.6 Intel fails when
- the extension is not ".dmg".
-
-2006-04-12 Eric Seidel <eseidel@apple.com>
-
- Reviewed by Tim H.
-
- * Scripts/update-webkit: Make this return non-zero when svn fails.
-
-2006-04-10 Alexey Proskuryakov <ap@nypop.com>
-
- Reviewed by Darin Adler.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=8157
- Make HTTP tests using Perl use .pl extension
-
- * Scripts/run-webkit-tests: Added support for running .pl and .php tests,
- removed support for .text. Reduced the number of places that explicitly list supported
- extensions. Some of the changes come from bug 8121, the patch for which got landed only
- partially.
-
-2006-04-06 Darin Adler <darin@apple.com>
-
- Changes requested by Mark Rowe.
-
- * BuildSlaveSupport/build-launcher-app: Set executable bit, removed property change
- trash at the end of the file.
- * BuildSlaveSupport/build-launcher-dmg: Ditto.
-
- * WebKitLauncher/main.m: Removed trash at end of file.
-
- * WebKitLauncher/WebKitLauncher.xcodeproj/project.pbxproj: Let Xcode update comments
- to make name match.
-
-2006-04-06 Mark Rowe <opendarwin.org@bdash.net.nz>
-
- Reviewed by Darin, landed by Maciej.
-
- * BuildSlaveSupport/build-launcher-app: Added. Builds WebKit.app from WebKitLauncher
- and bundles the WebKit frameworks inside it.
- * BuildSlaveSupport/build-launcher-dmg: Added. Builds, and optionally uploads, a disk image
- containing WebKit.app.
- * BuildSlaveSupport/run-performance-tests: Use currentSVNRevision.
- * Scripts/webkitdirs.pm: Add currentSVNRevision to retrieve the revision
- number of the SVN working copy.
- * WebKitLauncher: Added.
- * WebKitLauncher/Info.plist: Added.
- * WebKitLauncher/WebKitLauncher.xcodeproj: Added.
- * WebKitLauncher/WebKitLauncher.xcodeproj/project.pbxproj: Added.
- * WebKitLauncher/WebKitNightlyEnabler.m: Added. This makes
- up the WebKitNightlyEnabler dylib which is loaded into Safari's address space
- to cause LaunchServices to treat Safari.app as WebKit.app when it is run from
- the nightly launcher.
- * WebKitLauncher/main.m: Added. The WebKit.app launcher.
- It sets up the environment to have Safari use the bundled frameworks
- and load the WebKitNightlyEnabler dylib before exec'ing Safari
- * WebKitLauncher/start.html: Added.
- * WebKitLauncher/webkit.icns: Added.
-
-2006-04-05 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- * Scripts/check-for-global-initializers: Remove StringImpl from the list of files that
- are allowed to have global initializers.
-
-2006-04-05 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by OMG BETH
-
- * Scripts/run-testkjs:
- - pipe STDERR to /dev/null by default; new --verbose option overrides
- this behavior
- - set DYLD_FRAMEWORK_PATH to the webkit-configured path
- - output run command in a format that can be copied and pasted into the
- terminal to run manually
-
-2006-04-03 Justin Garcia <justin.garcia@apple.com>
-
- Reviewed by harrison
-
- <http://bugs.webkit.org/show_bug.cgi?id=7567>
- A drag and drop in DumpRenderTree copies the source, instead of cutting it
-
- Tell the source that the drag is over after the drag is performed, not before.
-
- * DumpRenderTree/EventSendingController.m:
- (-[EventSendingController mouseUp]):
-
-2006-04-01 Darin Adler <darin@apple.com>
-
- Reviewed by Justin.
-
- * DumpRenderTree/EventSendingController.m: (-[EventSendingController keyDown:withModifiers:]):
- Fixed keyDown function so that it will work if you don't pass an array of modifiers or if
- elements in that array are not strings.
-
-2006-03-31 Darin Adler <darin@apple.com>
-
- Reviewed by John Sullivan.
-
- - added a "--reset-results" option to run-webkit-tests so you can reset
- the results without first deleting expected results
- - <rdar://problem/4185878> add scroll position to dumpRenderTree
-
- * Scripts/run-webkit-tests: Rearranged the code a bit to make the sequence
- more logical. Moved all the subroutines to the end of the file. Added a
- "--force" option.
-
- * DumpRenderTree/DumpRenderTree.m:
- (main): Added a new --dump-all-pixels option, used when forcing run-webkit-tests
- to generate new output for all tests it runs.
- (dump): Dump the scroll position if it's non-zero. Always dump the image when
- the --dump-all-pixels option is passed. Also tightened up the image dumping
- code and replaced the incorrect use of +[NSGraphicsContext saveGraphicsState]
- with code to save and restore the context.
-
- * DumpRenderTree/DumpRenderTree.h: Tweaked includes a bit and added (void).
- * DumpRenderTree/EventSendingController.m: Added now-needed include.
-
-2006-03-30 Tim Omernick <timo@apple.com>
-
- * DumpRenderTree/ObjCPlugin.h:
- Fixed copyright.
- * DumpRenderTree/ObjCPlugin.m: ditto
- * DumpRenderTree/ObjCPluginFunction.h: ditto
- * DumpRenderTree/ObjCPluginFunction.m: ditto
-
-2006-03-30 Tim Omernick <timo@apple.com>
-
- Reviewed by Geoff.
-
- * DumpRenderTree/DumpRenderTree.m:
- (-[WaitUntilDoneDelegate webView:windowScriptObjectAvailable:]):
- Add "objCPlugin", "objCPluginFunction" properties to the window. objCPlugin simulates
- an Objective C object exposed to JS; objCPluginFunction simulates an Objective C method
- exposed to JS as a callable object.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- Added ObjCPlugin.[hm], ObjCPluginFunction.[hm].
-
- * DumpRenderTree/ObjCPlugin.h: Added.
- * DumpRenderTree/ObjCPlugin.m: Added.
- * DumpRenderTree/ObjCPluginFunction.h: Added.
- * DumpRenderTree/ObjCPluginFunction.m: Added.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c:
- Added a new method, "removeDefaultMethod", which removes the default method from the
- plugin object's class. The effect is that the plugin object is mutated from a callable
- function to a simple object.
- (pluginInvoke):
- Handle "removeDefaultMethod".
- (pluginInvokeDefault):
- Made the default method actually do something (return 1).
-
-2006-03-30 Eric Seidel <eseidel@apple.com>
-
- Reviewed by ggaren.
-
- Remove WebFrame::viewImpl(), setMainFrame on page.
-
- * Spinneret/Spinneret/WebFrame.cpp:
- (WebKit::WebFrame::WebFrame):
- * Spinneret/Spinneret/WebFrame.h:
- * Spinneret/Spinneret/WebView.cpp:
- (WebKit::WebView::mouseMoved):
- (WebKit::WebView::mouseDown):
- (WebKit::WebView::mouseUp):
- (WebKit::WebView::mouseDoubleClick):
- (WebKit::WebViewWndProc):
-
-2006-03-30 Eric Seidel <eseidel@apple.com>
-
- Reviewed by hyatt.
-
- Fix html editing input & basic form submission.
-
- * Spinneret/Spinneret/WebFrame.cpp:
- (WebKit::WebFrame::submitForm):
- (WebKit::WebFrame::loadURL):
- * Spinneret/Spinneret/WebFrame.h:
- * Spinneret/Spinneret/WebView.cpp:
- (WebKit::WebView::keyPress):
- (WebKit::WebViewWndProc):
-
-2006-03-28 Justin Garcia <justin.garcia@apple.com>
-
- Reviewed by darin
-
- <rdar://problem/4402375>
- REGRESSION (417.8-TOT): selectionRect sometimes includes adjacent images
-
- Added an option to draw the selectionRect.
-
- * DumpRenderTree/DumpRenderTree.m:
- (dump):
- (+[LayoutTestController isSelectorExcludedFromWebScript:]):
- (-[LayoutTestController dumpSelectionRect]):
- (dumpRenderTree):
-
-2006-03-29 Darin Adler <darin@apple.com>
-
- Reviewed by Tim Hatcher.
-
- - make the global initializer check work on Xcode 2.1 (although it's better on 2.2)
-
- * Scripts/check-for-global-initializers: Use NATIVE_ARCH if there is no CURRENT_ARCH.
-
-2006-03-28 Eric Seidel <eseidel@apple.com>
-
- Reviewed by darin.
-
- * Scripts/check-for-global-initializers: remove svg exceptions.
-
-2006-03-28 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Darin Adler.
-
- Exit gracefully if $ENV{'CURRENT_ARCH'} is undefined. Rolling out my previous change.
-
- * Scripts/check-for-global-initializers:
-
-2006-03-28 Timothy Hatcher <timothy@apple.com>
-
- Build fix. Turn off uninitialized warnings for the first block of code.
-
- * Scripts/check-for-global-initializers:
-
-2006-03-28 Darin Adler <darin@apple.com>
-
- Reviewed by Geoff.
-
- * Scripts/check-for-global-initializers: Added.
-
-2006-03-24 Mitz Pettel <opendarwin.org@mitzpettel.com>
-
- Reviewed by darin. Landed by eseidel.
-
- - http://bugs.webkit.org/show_bug.cgi?id=7947
- Add repaint testing support to run-webkit-tests
-
- * DumpRenderTree/DumpRenderTree.m:
- (main): Added --repaint and --horizontal-sweep options.
- (dump): Repaint line-by-line or column-by-column when the appropriate option
- is selected.
- (+[LayoutTestController isSelectorExcludedFromWebScript:]): Added testRepaint()
- and repaintSweepHorizontally() methods to layoutTestController.
- (-[LayoutTestController testRepaint]):
- (-[LayoutTestController repaintSweepHorizontally]):
- (dumpRenderTree):
- * Scripts/run-webkit-tests: Added --repaint and --horizontal-sweep options
- to force these settings on tests that do not ask for them.
-
-2006-03-24 Eric Seidel <eseidel@apple.com>
-
- Reviewed by mjs.
-
- Build fix.
-
- * Spinneret/Spinneret/WebFrame.cpp:
- (WebKit::WebFrame::openURL): replace QString with DeprecatedString
-
-2006-03-21 Beth Dakin <bdakin@apple.com>
-
- Reviewed by Maciej
-
- Add support for keyDown() to DumpRenderTree.
-
- * DumpRenderTree/DumpRenderTree.m:
- (main): Set the preference for tabbing to links.
- * DumpRenderTree/EventSendingController.m:
- (+[EventSendingController isSelectorExcludedFromWebScript:]):
- (+[EventSendingController webScriptNameForSelector:]):
- (-[EventSendingController keyDown:withModifiers:]):
-
-2006-03-20 Eric Seidel <eseidel@apple.com>
-
- Reviewed by hyatt.
-
- Fix win32 build.
-
- * Spinneret/Spinneret/Spinneret.vcproj:
- * Spinneret/Spinneret/WebFrame.h:
- * Spinneret/Spinneret/WebView.cpp:
- (WebKit::WebView::mouseMoved):
- (WebKit::WebView::mouseDown):
- (WebKit::WebView::mouseUp):
- (WebKit::WebView::mouseDoubleClick):
- (WebKit::WebView::keyPress):
- (WebKit::WebViewWndProc):
-
-2006-03-19 Darin Adler <darin@apple.com>
-
- Reviewed by Anders.
-
- * DumpRenderTree/DumpRenderTree.m: (main): Turn on pop-up blocking so that
- we can test it in layout tests. We don't really need tests that run with
- pop-up blocking off at the moment. If we do some day, we can add some
- API for turning it off in the layout test controller.
-
- * Scripts/run-webkit-tests: Since we don't use NSLanguage at all any more,
- don't ignore the leak; it should no longer show up.
-
-2006-03-17 Anders Carlsson <andersca@mac.com>
-
- Reviewed by Eric.
-
- * Scripts/install-win-extras:
- Fetch "Program Files" location from the environment.
-
-2006-03-17 Eric Seidel <eseidel@apple.com>
-
- Reviewed by ggaren.
-
- Fix Spinneret to pass Events as const & not as pointers.
-
- * Spinneret/Spinneret/WebView.cpp:
- (WebKit::WebView::mouseMoved):
- (WebKit::WebView::mouseDown):
- (WebKit::WebView::mouseUp):
- (WebKit::WebView::mouseDoubleClick):
- (WebKit::WebView::keyPress):
-
-2006-03-17 Eric Seidel <eseidel@apple.com>
-
- Reviewed by justing.
-
- Add support for basic HTML editing.
-
- * Spinneret/Spinneret/WebView.cpp:
- (WebKit::WebView::WebView):
- (WebKit::WebView::keyPress):
-
-2006-03-17 Eric Seidel <eseidel@apple.com>
-
- Rubber-stamped by ggaren.
-
- Break DumpRenderTree.m up into several files to make the code more readable.
-
- * DumpRenderTree/DumpRenderTree.h: Added.
- * DumpRenderTree/DumpRenderTree.m:
- (doneLoading): new accessor function for "done" global.
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/DumpRenderTreeDraggingInfo.h: Added.
- * DumpRenderTree/DumpRenderTreeDraggingInfo.m: Added.
- * DumpRenderTree/EditingDelegate.h: Added.
- * DumpRenderTree/EditingDelegate.m: Added.
- (-[EditingDelegate webViewDidChangeSelection:]):
- * DumpRenderTree/EventSendingController.h: Added.
- * DumpRenderTree/EventSendingController.m: Added.
-
-2006-03-16 Eric Seidel <eseidel@apple.com>
-
- Reviewed by darin.
-
- Add resize, scroll event support.
-
- * Spinneret/Spinneret/WebView.cpp:
- (WebKit::WebView::mouseMoved):
- (WebKit::WebView::mouseDown):
- (WebKit::WebView::mouseUp):
- (WebKit::WebView::mouseDoubleClick):
- (WebKit::WebView::keyPress):
- (WebKit::WebViewWndProc):
- * Spinneret/Spinneret/WebView.h:
-
-2006-03-16 Eric Seidel <eseidel@apple.com>
-
- Reviewed by darin.
-
- Make build-webkit print correctly to stdout on windows.
-
- * Scripts/webkitdirs.pm: Fix to use devenv.com instead of devenv.exe
-
-2006-03-15 Eric Seidel <eseidel@apple.com>
-
- Reviewed by mjs.
-
- Fix eventSender.mouseClick() to update lastClick timestamp.
-
- * DumpRenderTree/DumpRenderTree.m:
- (-[EventSendingController mouseClick]):
-
-2006-03-15 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Fix path
- that had a lowercase "i" in it so this builds on case-sensitive
- file systems.
-
-2006-03-15 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Eric.
-
- Added run-testkjs and compare-timing-files scripts, to support super
- accurate JS iBench.
-
- * Scripts/compare-timing-files: Added.
- * Scripts/run-testkjs: Added.
-
-2006-03-14 Eric Seidel <eseidel@apple.com>
-
- Reviewed by mjs.
-
- Make the URL bar relinquish focus on page load.
-
- * Spinneret/Spinneret/Spinneret.cpp:
- (MyEditProc):
-
-2006-03-14 Eric Seidel <eseidel@apple.com>
-
- Reviewed by mjs.
-
- Fix WebView to allow KeyFocus.
- Add handling of space and shift-space for scrolling.
-
- * Spinneret/Spinneret/WebView.cpp:
- (WebKit::scrollMessageForKey):
- (WebKit::WebViewWndProc):
-
-2006-03-10 Eric Seidel <eseidel@apple.com>
-
- Reviewed by hyatt.
-
- Add scrolling support into Spinneret.
-
- * Spinneret/Spinneret/WebFrame.cpp:
- (WebKit::WebFrame::paint):
- * Spinneret/Spinneret/WebView.cpp:
- (WebKit::WebView::createWebView):
- (WebKit::calculateScrollDelta):
- (WebKit::scrollMessageForKey):
- (WebKit::WebViewWndProc):
-
-2006-03-13 Eric Seidel <eseidel@apple.com>
-
- Reviewed by mjs.
-
- Fix checksum generation on Intel machines.
- Also moved to CGImage APIs instead of NSBitmapImageRep, may possibly
- give a small speed boost now that it uses a shared buffer.
-
- * DumpRenderTree/DumpRenderTree.m:
- (main):
- (dump):
- (md5HashStringForBitmap):
- * DumpRenderTree/ImageDiff.m:
- (computePercentageDifferent):
-
-2006-03-13 Darin Adler <darin@apple.com>
-
- Reviewed by Tim Hatcher.
-
- * Scripts/run-webkit-tests: Fix httpd handling to work on systems that
- have it named httpd-1.3 instead.
-
-2006-03-13 Alexey Proskuryakov <ap@nypop.com>
-
- Fix proposed by Mitz Pettel, reviewed by Darin Adler.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=7718
- run-webkit-tests fast/dom/HTMLObjectElement/ hangs
-
- * Scripts/run-webkit-tests: Make test paths canonical, to form proper URLs
- (sequences of slashes are equivalent to a single slash in POSIX paths, but not
- in URLs).
-
-2006-03-09 Darin Adler <darin@apple.com>
-
- Reviewed by John Sullivan.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=7681
- memory leak in the plug-in tests
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.c:
- (NPP_Destroy): Added code to release the plug-in object. This is the leak fix.
- (NPP_SetWindow): Remove unneeded code to store the window pointer.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c:
- Moved the browser global in here since it's declared in this file's header.
- Changed the code to set up the pluginClass structure to not use function
- pointer casts. Those are dangerous because they can hide many types of mismatch.
- And indeed when I did this I discovered that many functions were missing their
- boolean return values or had parameter declarations with the wrong types.
- (pluginGetProperty): Use STRINGZ_TO_NPVARIANT macro for greater simplicity and
- clarity. Added boolean return value: return true when successful and false when not.
- (pluginSetProperty): Added boolean return value, return false since we have no
- properties we can set.
- (pluginInvoke): Added boolean return value. Return true when successful and false
- when not. Use NPVARIANT macros where appropriate. Added a missing release for the
- return value from calling the browser. Changed code to put the strings in malloc
- buffers instead of relying on GCC's extension that allows variable-sized arrays
- on the stack.
- (pluginInvokeDefault): Added boolean return value, return false since we have no
- default function to call.
- (pluginInvalidate): Added missing parameter. Removed comment.
- (pluginAllocate): Removed unneeded cast. This is C code, not C++, so you don't have
- to cast the result of malloc.
- (pluginDeallocate): Removed uneeded cast.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h: Removed some unneeded
- includes. Changed our PluginObject to use NPObject instead of re-declaring fields
- that match NPObject's fields. Removed unused NPWindow pointer.
-
-2006-03-09 Mitz Pettel <opendarwin.org@mitzpettel.com>
-
- Test: fast/events/event-sender-mouse-click.html
-
- Reviewed by Darin Adler.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=7583
- DRT hangs when doing eventSender.mouseDown on native widgets
-
- * DumpRenderTree/DumpRenderTree.m:
- (+[EventSendingController isSelectorExcludedFromWebScript:]):
- (-[EventSendingController mouseClick]): Simulates a click in a native
- widget by queueing a mouseUp before sending the mouseDown, so that
- the widget's mouse tracking event loop doesn't hang indefinitely.
-
-2006-03-09 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Eric.
-
- - make link clicks work by handling link click requests
- from WebCore
-
- * Spinneret/Spinneret/Spinneret.cpp:
- (updateLocationBar):
- * Spinneret/Spinneret/Spinneret.h:
- * Spinneret/Spinneret/WebFrame.cpp:
- (WebKit::WebFrame::WebFrame):
- (WebKit::WebFrame::openURL):
- (WebKit::WebFrame::loadURL):
- * Spinneret/Spinneret/WebFrame.h:
-
-2006-03-08 Eric Seidel <eseidel@apple.com>
-
- Reviewed by mjs.
-
- Focus URL bar on Spinneret launch, remove border from WebView.
- Stop WebFrame from deleting the job (prevent crash).
-
- * Spinneret/Spinneret/Spinneret.cpp:
- (_tWinMain):
- * Spinneret/Spinneret/WebFrame.cpp:
- (WebKit::WebFrame::receivedAllData):
- (WebKit::WebFrame::paint):
- * Spinneret/Spinneret/WebView.cpp:
- (WebKit::WebView::createWebView):
-
-2006-03-09 Alexey Proskuryakov <ap@nypop.com>
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c:
- (pluginInvoke): Added a method to test getURL.
-
-2006-03-08 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Eric.
-
- - load URLs, not file paths, in Spinneret
-
- * Spinneret/Spinneret/Spinneret.cpp:
- (MyEditProc):
- * Spinneret/Spinneret/Spinneret.vcproj:
- * Spinneret/Spinneret/WebFrame.cpp:
- (WebKit::WebFrame::loadURL):
- (WebKit::WebFrame::receivedData):
- (WebKit::WebFrame::receivedAllData):
- * Spinneret/Spinneret/WebFrame.h:
- * Spinneret/Spinneret/WebView.cpp:
- (WebKit::WebView::WebView):
-
-2006-03-08 Darin Adler <darin@apple.com>
-
- Reviewed by Eric.
-
- - fixed AppleScript layout test results to not be endian-dependent
- (Hyatt complained to me about this one)
-
- * DumpRenderTree/AppleScriptController.m: (-[AppleScriptController doJavaScript:]):
- Added specific code for dumping LongDateTime, instead of dumping the raw bytes
- (which are endian-dependent).
-
-2006-03-07 Darin Adler <darin@apple.com>
-
- Reviewed by Anders.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=7655
- unwanted output while running layout tests
-
- * DumpRenderTree/DumpRenderTree.m:
- (checkedMalloc): Added.
- (checkedRealloc): Added.
- (makeLargeMallocFailSilently): Added.
- (main): Call makeLargeMallocFailSilently.
-
-2006-03-06 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: Add some more planned renaming.
-
-2006-03-06 Eric Seidel <eseidel@apple.com>
-
- Reviewed by hyatt.
-
- * Spinneret/Spinneret/WebFrame.cpp:
- (WebKit::WebFrame::paint): force layout before painting
-
-2006-03-06 Justin Garcia <justin.garcia@apple.com>
-
- Reviewed by darin
-
- Sent the windowNumber when sending events.
- Added leapForward so that we don't have to spend time waiting
- in layout tests that do mouse operations that require delays.
-
- * DumpRenderTree/DumpRenderTree.m:
- (+[EventSendingController isSelectorExcludedFromWebScript:]):
- (+[EventSendingController webScriptNameForSelector:]):
- (-[EventSendingController currentEventTime]):
- (-[EventSendingController leapForward:]):
- (-[EventSendingController mouseDown]):
- (-[EventSendingController mouseUp]):
- (-[EventSendingController mouseMoveToX:Y:]):
-
-2006-03-05 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: Fix a couple of things found while testing.
- Script now works (after landing my two pending patches).
-
-2006-03-05 Darin Adler <darin@apple.com>
-
- - check in a script to do a "big" rename in WebCore
- (can be run whenever we're ready to do it)
-
- * Scripts/do-webcore-rename: Added.
-
-2006-03-05 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Eric.
-
- * Spinneret/Spinneret/WebFrame.cpp:
- (WebKit::WebFrame::loadFilePath): Close file when done.
-
-2006-03-05 Mitz Pettel <opendarwin.org@mitzpettel.com>
-
- Reviewed by Darin, landed by ap.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=7589
- Mouse moved events do not work in DumpRenderTree
-
- Test: fast/events/event-sender-mouse-moved.html
-
- * DumpRenderTree/DumpRenderTree.m:
- (-[EventSendingController mouseMoveToX:Y:]): Pass the correct windowNumber in the event.
-
-2006-03-04 Eric Seidel <eseidel@apple.com>
-
- Reviewed by hyatt.
-
- Take advantage of new GraphicsContext constructor to implement double buffering to avoid tearing.
- Disable background erase to avoid tearing.
- Fix potential memory smasher from extra long urls.
-
- * Spinneret/Spinneret/Spinneret.cpp:
- (MyRegisterClass):
- * Spinneret/Spinneret/Spinneret.vcproj:
- * Spinneret/Spinneret/WebFrame.cpp:
- (WebKit::WebFrame::loadFilePath):
- (WebKit::WebFrame::paint):
- * Spinneret/Spinneret/WebView.cpp:
- (WebKit::registerWebViewWithInstance):
-
-2006-03-04 Eric Seidel <eseidel@apple.com>
-
- Reviewed by ggaren.
-
- Hang WebView pointer off of HWND (gets rid of global hack).
- Remove MessageBox displayed on url change.
-
- * Spinneret/Spinneret/Spinneret.cpp:
- (WndProc):
- (MyEditProc):
- * Spinneret/Spinneret/WebView.cpp:
- (WebKit::registerWebViewWithInstance):
- (WebKit::WebView::createWebView):
- (WebKit::WebViewWndProc):
-
-2006-03-04 Alexey Proskuryakov <ap@nypop.com>
-
- Reviewed by Eric.
-
- Automatically kill httpd if it appears to be already running.
-
- * Scripts/run-webkit-tests:
-
-2006-03-04 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Eric.
-
- * Spinneret/Spinneret/WebFrame.cpp:
- (WebKit::WebFrame::loadFilePath): Improved local file loading.
-
-2006-03-03 Eric Seidel <eseidel@apple.com>
-
- Reviewed by hyatt.
-
- A few more fixes to make run-webkit-tests really work on win32.
-
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.cpp:
- (localFileTest):
- * Scripts/run-webkit-tests:
-
-2006-03-03 Eric Seidel <eseidel@apple.com>
-
- Reviewed by darin.
-
- Make run-webkit-tests work on win32.
-
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.cpp:
- (localFileTest):
- (dumpRenderTreeMain):
- (dumpRenderTreeToStdOut):
- (serializeToStdOut):
- (main):
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
- * Spinneret/Spinneret/WebView.cpp:
- (WebKit::WebView::WebView):
-
-2006-03-03 Eric Seidel <eseidel@apple.com>
-
- Reviewed by mjs.
-
- Add WebFrame class (to hold Frame and FrameView).
- Add Location bar support to Spinneret.
-
- * Spinneret/Spinneret/Spinneret.cpp:
- (resizeSubViews):
- (_tWinMain):
- (WndProc):
- (MyEditProc):
- * Spinneret/Spinneret/Spinneret.vcproj:
- * Spinneret/Spinneret/WebFrame.cpp: Added.
- (WebKit::WebFrame::WebFramePrivate::WebFramePrivate):
- (WebKit::WebFrame::WebFramePrivate::~WebFramePrivate):
- (WebKit::WebFrame::WebFrame):
- (WebKit::WebFrame::loadFilePath):
- (WebKit::WebFrame::loadHTMLString):
- (WebKit::WebFrame::paint):
- (WebKit::WebFrame::impl):
- (WebKit::WebFrame::viewImpl):
- * Spinneret/Spinneret/WebFrame.h: Added.
- * Spinneret/Spinneret/WebView.cpp:
- (WebKit::WebView::WebViewPrivate::~WebViewPrivate):
- (WebKit::WebView::WebView):
- (WebKit::WebView::windowHandle):
- (WebKit::WebView::mainFrame):
- (WebKit::WebView::mouseMoved):
- (WebKit::WebView::mouseDown):
- (WebKit::WebView::mouseUp):
- (WebKit::WebView::mouseDoubleClick):
- (WebKit::WebViewWndProc):
- * Spinneret/Spinneret/WebView.h:
-
-2006-03-02 Eric Seidel <eseidel@apple.com>
-
- Reviewed by ggaren.
-
- * Spinneret/Spinneret/WebView.cpp:
- (WebKit::registerWebViewWithInstance):
- (WebKit::WebView::WebView):
- (WebKit::WebView::mouseMoved):
- (WebKit::WebView::mouseDown):
- (WebKit::WebView::mouseUp):
- (WebKit::WebView::mouseDoubleClick):
- (WebKit::WebViewWndProc):
- * Spinneret/Spinneret/WebView.h:
-
-2006-03-01 Eric Seidel <eseidel@apple.com>
-
- Reviewed by andersca.
-
- Make spinneret take advantage of the new GraphicsContextCairo.
-
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.cpp:
- (main): updated to match style guidelines.
- * Spinneret/Spinneret/Spinneret.cpp:
- (_tWinMain):
- * Spinneret/Spinneret/WebView.cpp:
- (WebKit::registerWebViewWithInstance):
- (WebKit::WebView::WebView):
- (WebKit::WebView::~WebView):
- (WebKit::WebView::drawRect):
- (WebKit::WndProc):
- * Spinneret/Spinneret/WebView.h:
-
-2006-03-01 Justin Garcia <justin.garcia@apple.com>
-
- Reviewed by darin
-
- Give the events that eventSender sends a unique eventNumber
-
- * DumpRenderTree/DumpRenderTree.m:
- (-[EventSendingController mouseDown]):
- (-[EventSendingController mouseUp]):
- (-[EventSendingController mouseMoveToX:Y:]):
-
-2006-03-01 Eric Seidel <eseidel@apple.com>
-
- Reviewed by hyatt.
-
- Add a stub win32 application to test WebCore drawing on windows.
-
- * Spinneret: Added.
- * Spinneret/Spinneret: Added.
- * Spinneret/Spinneret.sln: Added.
- * Spinneret/Spinneret/Resource.h: Added.
- * Spinneret/Spinneret/Spinneret.cpp: Added.
- (_tWinMain):
- (MyRegisterClass):
- (InitInstance):
- (WndProc):
- (About):
- * Spinneret/Spinneret/Spinneret.h: Added.
- * Spinneret/Spinneret/Spinneret.ico: Added.
- * Spinneret/Spinneret/Spinneret.rc: Added.
- * Spinneret/Spinneret/Spinneret.vcproj: Added.
- * Spinneret/Spinneret/WebView.cpp: Added.
- (WebKit::WebView::WebViewPrivate::WebViewPrivate):
- (WebKit::WebView::WebViewPrivate::~WebViewPrivate):
- (WebKit::registerWebViewWithInstance):
- (WebKit::WebView::createWebView):
- (WebKit::WebView::WebView):
- (WebKit::WebView::~WebView):
- (WebKit::WebView::drawRect):
- (WebKit::WebView::windowHandle):
- (WebKit::WndProc):
- * Spinneret/Spinneret/WebView.h: Added.
- * Spinneret/Spinneret/small.ico: Added.
- * Spinneret/Spinneret/stdafx.cpp: Added.
- * Spinneret/Spinneret/stdafx.h: Added.
-
-2006-02-28 Eric Seidel <eseidel@apple.com>
-
- Reviewed by mjs.
-
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.cpp:
- (main): add ability to dump render tree and read from a local file.
-
-2006-02-27 Eric Seidel <eseidel@apple.com>
-
- Reviewed by darin.
-
- * Scripts/install-win-extras: fix dll permissions & download zlib too.
-
-2006-02-27 Eric Seidel <eseidel@apple.com>
-
- Reviewed by ggaren.
-
- Test new KConfig -> PlugInInfoStore change.
- http://bugs.webkit.org/show_bug.cgi?id=7498
-
- * DumpRenderTree/DumpRenderTree.m:
- (main): load test netscape plugin
- * Scripts/run-webkit-tests: style update
-
-2006-02-24 Eric Seidel <eseidel@apple.com>
-
- Reviewed by mjs.
-
- Make DumpRenderTree link against icu.
-
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.vcproj:
-
-2006-02-24 Eric Seidel <eseidel@apple.com>
-
- Reviewed by mjs.
-
- Make DumpRenderTree link against libxml, etc.
-
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.vcproj:
-
-2006-02-24 Mitz Pettel <opendarwin.org@mitzpettel.com>
-
- Reviewed and landed by Anders.
-
- Prevent rendering to the offscreen window. -[NSWindow displayIfNeeded] was
- getting called from the run loop, making the view render each test and thus slowing
- down the tests.
-
- * DumpRenderTree/DumpRenderTree.m:
- (main): Set the offscreen window to not autodisplay.
-
-2006-02-23 Alexey Proskuryakov <ap@nypop.com>
-
- Reviewed by Darin Adler.
-
- - Turn http tests back on by default.
- - Wait for Apache to actually start serving requests.
- - Get user id from a built-in variable rather than an external command;
- don't pass the group.
-
- * Scripts/run-webkit-tests:
-
-2006-02-23 Alexey Proskuryakov <ap@nypop.com>
-
- Suggested by Mitz Pettel, reviewed by Darin Adler.
-
- * Scripts/run-webkit-tests: Pass User and Group directives, so that Apache
- can run CGIs even if the permissions are 700 or 600.
-
-2006-02-23 Darin Adler <darin@apple.com>
-
- Collaborating with Alexey.
-
- - turn off http tests by default until we figure out how to get them
- to run even when permissions on CGI files are 700 instead of 755
-
- * Scripts/run-webkit-tests: Set $testHTTP to 0 instead of 1 for now.
-
-2006-02-23 Eric Seidel <eseidel@apple.com>
-
- Add *.user to ignore list.
-
-2006-02-23 Eric Seidel <eseidel@apple.com>
-
- Remove binary file which shouldn't have been commited (and add to ignore list).
-
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree.ncb: Removed.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree.suo: Removed.
-
-2006-02-22 Alexey Proskuryakov <ap@nypop.com>
-
- Reviewed by Eric.
-
- * Scripts/run-webkit-tests: Put Apache log files in the right directory.
-
-2006-02-22 Eric Seidel <eseidel@apple.com>
-
- Reviewed by Tim Hatcher.
-
- Fix install-win-extras to not try to re-install setx if installed.
-
- * Scripts/install-win-extras:
-
-2006-02-22 Eric Seidel <eseidel@apple.com>
-
- One more file possibly missing from previous commit?
-
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree.ncb:
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree.suo:
-
-2006-02-22 Eric Seidel <eseidel@apple.com>
-
- Reviewed by justing.
-
- Files missing from previous commit.
-
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree.suo:
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.vcproj:
-
-2006-02-22 Eric Seidel <eseidel@apple.com>
-
- Rubber-stamped by justing.
-
- Corrected path for DumpRenderTree.intermediate files
-
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree.suo:
-
-2006-02-22 Eric Seidel <eseidel@apple.com>
-
- Reviewed by justing.
-
- Fixed build-dumprendertree to exit with correct error codes.
-
- * Scripts/build-dumprendertree:
-
-2006-02-22 Eric Seidel <eseidel@apple.com>
-
- Reviewed by justing.
-
- Update build scripts to generalize building on Win32, and allow
- building of DumpRenderTree on Win32 from build-dumprendertree.
-
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.cpp:
- (main):
- * Scripts/build-dumprendertree:
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
-
-2006-02-22 Eric Seidel <eseidel@apple.com>
-
- Reviewed by hyatt.
-
- * DumpRenderTree/DumpRenderTree.vcproj: Added.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree: Added.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree.ncb: Added.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree.sln: Added.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree.suo: Added.
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.cpp: Added.
- (_tmain):
- * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.vcproj: Added.
- * Scripts/build-webkit: make build-webkit cleanup after itself
-
-2006-02-22 Alexey Proskuryakov <ap@nypop.com>
-
- Reviewed by Darin Adler.
-
- - http://bugs.webkit.org/show_bug.cgi?id=7409
- Some minor fixes to http tests.
-
- * Scripts/run-webkit-tests: Pass CustomLog and ErrorLog directives to httpd.
-
-2006-02-21 Alexey Proskuryakov <ap@nypop.com>
-
- Reviewed by Darin Adler.
-
- - http://bugs.webkit.org/show_bug.cgi?id=6197
- Would like to use locally installed Apache for testing.
-
- Added two run-webkit-tests options:
- --http (--nohttp) - whether to launch Apache (defaults to yes);
- --port - which port to listen on (defaults to 8000).
-
- Tests in LayoutTests/http are not run directly, and Apache is used instead.
- For example, http/tests/xmlhttprequest/post-content-type.html is loaded as
- http://127.0.0.1:8000/xmlhttprequest/post-content-type.html.
-
- Also added support for .shtml and .text files. Text files give an empty
- *-expected.txt, but a correct image.
-
- Apache only listens on the loopback interface. It writes logs to /tmp/WebKit.
-
- * Scripts/run-webkit-tests:
-
-2006-02-21 Darin Adler <darin@apple.com>
-
- Suggested by Mark Rowe.
-
- * Scripts/run-webkit-tests: Don't include the number of excluded leaks when
- reporting leak counts.
-
-2006-02-18 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin Adler.
-
- - Added install-win-extras script which installs some extra
- programs and libraries, and does Windows first-time setup.
-
- * Scripts/build-webkit: Add a newline between build results.
- * Scripts/install-win-extras: Added.
-
-2006-02-19 Alexey Proskuryakov <ap@nypop.com>
-
- Reviewed by Darin Adler.
-
- - http://bugs.webkit.org/show_bug.cgi?id=7308
- DumpRenderTree should be able to load files via HTTP
-
- * DumpRenderTree/DumpRenderTree.m: (dumpRenderTree):
- Handle tests starting with "http://" as real URLs, not file system paths.
-
-2006-02-19 Alexey Proskuryakov <ap@nypop.com>
-
- Reviewed by Maciej.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=7357
- REGRESSION: Warnings from WebKit scripts if PBXProductDirectory is undefined
-
- * Scripts/webkitdirs.pm: only call chomp if PBXProductDirectory is configured.
-
-2006-02-18 Darin Adler <darin@apple.com>
-
- * Scripts/commit-log-editor: Added.
-
-2006-02-17 Eric Seidel <eseidel@apple.com>
-
- Reviewed by hyatt.
-
- Make Win32 have the same default "WebKitBuild" directory behavior.
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
-
-2006-02-17 Eric Seidel <eseidel@apple.com>
-
- Reviewed by Beth.
-
- * Scripts/build-webkit: make win32 actually report errors
-
-2006-02-17 Eric Seidel <eseidel@apple.com>
-
- Reviewed by adele.
-
- * Scripts/run-webkit-tests: Ignore quicktime plugin leaks
-
-2006-02-17 Eric Seidel <eseidel@apple.com>
-
- Reviewed by adele.
-
- * Scripts/run-webkit-tests: Ignore flash leaks
-
-2006-02-15 Justin Garcia <justin.garcia@apple.com>
-
- Reviewed by darin
-
- <http://bugs.webkit.org/show_bug.cgi?id=7148>
- Add drag and drop support to DumpRenderTree
-
- Intercept the drag start using the new UI delegate method, package an NSDraggingInfo,
- and send dragging updates. Put DumpRenderTree's WebView into an offscreen window.
-
- * DumpRenderTree/DumpRenderTree.m:
- (main):
- (-[WaitUntilDoneDelegate webView:didCommitLoadForFrame:]):
- (-[WaitUntilDoneDelegate webView:dragImage:at:offset:event:pasteboard:source:slideBack:forView:]):
- (-[WaitUntilDoneDelegate webViewFocus:]):
- (+[LayoutTestController isSelectorExcludedFromWebScript:]):
- (+[LayoutTestController webScriptNameForSelector:]):
- (-[LayoutTestController setWindowIsKey:]):
- (-[LayoutTestController setMainFrameIsFirstResponder:]):
- (-[EventSendingController init]):
- (-[EventSendingController mouseDown]):
- (-[EventSendingController mouseUp]):
- (-[EventSendingController mouseMoveToX:Y:]):
- (dumpRenderTree):
- (-[DumpRenderTreeWindow isKeyWindow]):
- (-[DumpRenderTreeDraggingInfo initWithImage:offset:pasteboard:source:]):
- (-[DumpRenderTreeDraggingInfo dealloc]):
- (-[DumpRenderTreeDraggingInfo draggingDestinationWindow]):
- (-[DumpRenderTreeDraggingInfo draggingSourceOperationMask]):
- (-[DumpRenderTreeDraggingInfo draggingLocation]):
- (-[DumpRenderTreeDraggingInfo draggedImageLocation]):
- (-[DumpRenderTreeDraggingInfo draggedImage]):
- (-[DumpRenderTreeDraggingInfo draggingPasteboard]):
- (-[DumpRenderTreeDraggingInfo draggingSource]):
- (-[DumpRenderTreeDraggingInfo draggingSequenceNumber]):
- (-[DumpRenderTreeDraggingInfo slideDraggedImageTo:]):
- (-[DumpRenderTreeDraggingInfo namesOfPromisedFilesDroppedAtDestination:]):
- * DumpRenderTree/TextInputController.m:
- (-[TextInputController firstRectForCharactersFrom:length:]):
- (-[TextInputController characterIndexForPointX:Y:]):
-
-2006-02-15 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Eric.
-
- * DumpRenderTree/DumpRenderTree.m:
- (-[LayoutTestController invokeUndefinedMethodFromWebScript:withArguments:]):
- Added a dummy method for the sake of LayoutTests/plugins/
- undefined-property-crash.html. (It tests a crash due to fallback
- object use. WebCore won't create a fallback object if the method is
- not defined.)
-
-2006-02-14 Eric Seidel <eseidel@apple.com>
-
- Reviewed by adele.
-
- * Scripts/run-webkit-tests: added --results-directory (-o) option
-
-2006-02-09 Eric Seidel <eseidel@apple.com>
-
- Rubber-stamped by mjs.
-
- Renamed split-class to split-file-by-class.
-
- * Scripts/build-webkit: Updated copyright.
- * Scripts/split-class: Removed.
- * Scripts/split-file-by-class: Added.
-
-2006-02-08 Eric Seidel <eseidel@apple.com>
-
- Rubber-stamped by mjs.
-
- Adding new script for splitting multi-class files.
- Also adding supporting perl module with space removing heuristics.
-
- * Scripts/SpacingHeuristics.pm: Added.
- * Scripts/build-drawtest: updated copyright header
- * Scripts/split-class: Added.
-
-2006-02-08 Justin Garcia <justin.garcia@apple.com>
-
- Reviewed by thatcher
-
- Changes to test fix for:
- <http://bugs.webkit.org/show_bug.cgi?id=3982>
- webViewDidBeginEditing, webViewDidEndEditing notification methods not called on delegate
-
- * DumpRenderTree/DumpRenderTree.m:
- (-[WaitUntilDoneDelegate webView:didCommitLoadForFrame:]):
- (+[LayoutTestController isSelectorExcludedFromWebScript:]):
- (+[LayoutTestController webScriptNameForSelector:]):
- (-[LayoutTestController setWindowHasFocus:]):
- (-[LayoutTestController setDisplaysWithFocusAttributes:]):
-
-2006-02-07 Alexey Proskuryakov <ap@nypop.com>
-
- Reviewed by Timothy.
-
- Support automated testing of AppleScript "do JavaScript" command
- http://bugs.webkit.org/show_bug.cgi?id=7012
-
- * DumpRenderTree/AppleScriptController.h: Added.
- * DumpRenderTree/AppleScriptController.m: Added.
- * DumpRenderTree/DumpRenderTree.m:
- (-[WaitUntilDoneDelegate webView:windowScriptObjectAvailable:]):
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
-
-2006-02-06 Eric Seidel <eseidel@apple.com>
-
- Reviewed by hyatt.
-
- Fix build-webkit for use on win32 (unblocks buildbot usage).
- http://bugs.webkit.org/show_bug.cgi?id=7122
-
- * Scripts/build-webkit: use ifCygwin() to conditionalize builds
- * Scripts/webkitdirs.pm: add ifOSX() and ifCygwin()
-
-2006-02-06 Eric Seidel <eseidel@apple.com>
-
- Rubber-stamped by darin & mjs.
-
- Added new support directory for build slave scripts.
- Committing the first script, for use by the PLT's build slave.
- This script is used to kick of the PLT (Page Load Test) slave.
-
- * BuildSlaveSupport: Added.
- * BuildSlaveSupport/run-performance-tests: Added.
-
-2006-02-06 Eric Seidel <eseidel@apple.com>
-
- Rubber-stamped by darin.
-
- Adding setSourceDir for scripts stored in non-standard locations.
-
- * Scripts/webkitdirs.pm:
-
-2006-02-04 Darin Adler <darin@apple.com>
-
- * Scripts/webkitdirs.pm: Add a compatibilty hack for people with old
- Configuration files that say Development or Deployment in them.
-
-2006-02-04 Darin Adler <darin@apple.com>
-
- * Scripts/make-js-test-wrappers: Don't create a wrapper if there's a disabled
- wrapper already in the directory.
- * Scripts/svn-apply: Handle additions and deletions properly -- I've been noticing
- these haven't been working at all.
- * Scripts/svn-unapply: Ditto.
-
-2006-02-03 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Justin.
-
- Renamed configuration names to Debug, Release and Production.
-
- * DrawTest/DrawTest.xcodeproj/project.pbxproj:
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * Scripts/set-webkit-configuration:
- * Scripts/webkitdirs.pm:
-
-2006-02-02 Justin Garcia <justin.garcia@apple.com>
-
- Reviewed by thatcher
-
- Enabled spell checking for layout tests.
-
- * DumpRenderTree/DumpRenderTree.m:
- (main):
-
-2006-01-29 Darin Adler <darin@apple.com>
-
- * Scripts/svn-apply: Added comments about things we should do to improve.
- * Scripts/svn-create-patch: Ditto.
- * Scripts/svn-unapply: Ditto.
-
-2006-01-28 Darin Adler <darin@apple.com>
-
- * DumpRenderTree/DumpRenderTree.m: (dump): Dump the image if it's not
- already there, even if the checksum is correct.
-
-2006-01-27 Eric Seidel <eseidel@apple.com>
-
- Reviewed by adele.
-
- * Scripts/run-webkit-tests: make new tests use absolute urls
-
-2006-01-27 Eric Seidel <eseidel@apple.com>
-
- Reviewed by mjs.
-
- make run-webkit-tests output total leaks count
-
- * Scripts/run-webkit-tests:
-
-2006-01-27 Eric Seidel <eseidel@apple.com>
-
- Reviewed by mjs.
-
- run-webkit-test --leaks crashes (malloc logging runs out of memory)
- http://bugs.webkit.org/show_bug.cgi?id=6869
-
- * Scripts/run-webkit-tests: fix --leaks to not crash
-
-2006-01-26 Eric Seidel <eseidel@apple.com>
-
- Reviewed by darin.
-
- run-webkit-tests should produce a self-contained results directory
- http://bugs.webkit.org/show_bug.cgi?id=6864
-
- * Scripts/run-webkit-tests: copy failing items to results dir.
-
-2006-01-23 Darin Adler <darin@apple.com>
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=3608
- need script to update localizable strings file in WebKit
-
- * Scripts/update-webkit-localizable-strings: Added.
-
-2006-01-23 Darin Adler <darin@apple.com>
-
- - added a couple of scripts -- more about these two soon
-
- * Scripts/extract-localizable-strings: Added.
- * Scripts/merge-changelog: Added.
-
-2006-01-22 Mark Rowe <opendarwin.org@bdash.net.nz>
-
- Reviewed by Anders.
-
- Build fix. build-webkit dies with "invalid build action: (empty string)"
-
- * Scripts/build-webkit:
- Use svgOptions in an array context so xcodebuild doesn't choke on an empty argument.
-
-2006-01-22 Eric Seidel <eseidel@apple.com>
-
- Reviewed by anders.
-
- Fix --no-svg option to use XCode flags instead of gcc flags.
-
- * Scripts/build-webkit:
-
-2006-01-22 Eric Seidel <eseidel@apple.com>
-
- Reviewed by anders.
-
- Update build-webkit to use -USVG_SUPPORT instead of -no-SVG target.
-
- * Scripts/build-webkit:
-
-2006-01-20 David Kilzer <ddkilzer@kilzer.net>
-
- Reviewed by eseidel.
-
- - fix for http://bugs.webkit.org/show_bug.cgi?id=6682
- Call to checkWebCoreSVGSupport() broken in build-drawtest and run-drawtest
-
- * Scripts/build-drawtest: Changed bareword 'true' to 1.
- * Scripts/run-drawtest: Changed bareword 'true' to 1.
-
-2006-01-19 Darin Adler <darin@apple.com>
-
- * Scripts/report-include-statistics: Added a new script.
-
-2006-01-19 Timothy Hatcher <timothy@apple.com>
-
- * Scripts/build-webkit: include JavaScriptGlue in the build
-
-2006-01-19 Darin Adler <darin@apple.com>
-
- * Scripts/webkitdirs.pm: Changed SVG check to work even if the path has
- spaces in it by using the form of open that treats each argument as a string
- rather than backtick syntax for reading the output of the nm tool.
-
-2006-01-12 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin Adler.
-
- - make prepare-ChangeLog way faster by using svn diff instead of svn status to
- detect if there are any new tests
-
- * Scripts/prepare-ChangeLog:
-
-2006-01-12 Darin Adler <darin@apple.com>
-
- - removed some of the cvs-specific scripts -- not needed for this project any more
-
- * Scripts/cvs-abandon: Removed.
- * Scripts/cvs-apply: Removed.
- * Scripts/cvs-create-patch: Removed.
- * Scripts/cvs-unapply: Removed.
-
-2006-01-10 Mark Rowe <opendarwin.org@bdash.net.nz>
-
- Reviewed by eseidel. Committed by eseidel.
-
- - run-webkit-tests always launches Safari when tests fail
- http://bugs.webkit.org/show_bug.cgi?id=6456
-
- * Scripts/run-webkit-tests:
- Add a command-line flag to prevent Safari being launched to display failed
- tests. Always exit with non-zero status when tests have failed.
-
-2006-01-10 Mark Rowe <opendarwin.org@bdash.net.nz>
-
- Reviewed by eseidel. Committed by eseidel.
-
- - build-webkit should exit with non-zero status when build fails
- http://bugs.webkit.org/show_bug.cgi?id=6459
-
- * Scripts/build-webkit:
- Use correct bits of subprocess exit code when passing back through
- as build-webkit's exit code.
-
-2006-01-10 Eric Seidel <eseidel@apple.com>
-
- Restored corrupted nibs from TOT CVS.
-
- * DrawTest/English.lproj/DrawTestDocument.nib: Replaced.
- * DrawTest/English.lproj/DrawTestDocument.nib/classes.nib: Replaced.
- * DrawTest/English.lproj/DrawTestDocument.nib/info.nib: Replaced.
- * DrawTest/English.lproj/DrawTestDocument.nib/keyedobjects.nib: Replaced.
- * DrawTest/English.lproj/Inspector.nib: Replaced.
- * DrawTest/English.lproj/Inspector.nib/classes.nib: Replaced.
- * DrawTest/English.lproj/Inspector.nib/info.nib: Replaced.
- * DrawTest/English.lproj/Inspector.nib/keyedobjects.nib: Replaced.
- * DrawTest/English.lproj/MainMenu.nib: Replaced.
- * DrawTest/English.lproj/MainMenu.nib/classes.nib: Replaced.
- * DrawTest/English.lproj/MainMenu.nib/info.nib: Replaced.
- * DrawTest/English.lproj/MainMenu.nib/keyedobjects.nib: Replaced.
- * DrawTest/English.lproj/TestViewer.nib: Replaced.
- * DrawTest/English.lproj/TestViewer.nib/classes.nib: Replaced.
- * DrawTest/English.lproj/TestViewer.nib/info.nib: Replaced.
- * DrawTest/English.lproj/TestViewer.nib/keyedobjects.nib: Replaced.
-
-2006-01-10 Nefaur Khandker <nefaurk@gmail.com>
-
- Reviewed by eseidel. Committed by eseidel.
-
- DrawTestView now subclasses WebView instead of DrawView.
-
- * DrawTest/DrawTest.xcodeproj/project.pbxproj:
- * DrawTest/DrawTestDocument.h:
- * DrawTest/DrawTestDocument.m:
- (-[DrawTestDocument dealloc]):
- (-[DrawTestDocument readFromFile:ofType:]):
- (-[DrawTestDocument windowControllerDidLoadNib:]):
- (-[DrawTestDocument dumpSVGToConsole:]):
- (-[DrawTestDocument openSourceForSelection:]):
- (-[DrawTestDocument dataRepresentationOfType:]):
- * DrawTest/DrawTestToolbarController.h:
- * DrawTest/DrawTestToolbarController.m:
- (-[DrawTestToolbarController initWithDrawView:]):
- (-[DrawTestToolbarController clickedToolbarItem:]):
- (-[DrawTestToolbarController validateToolbarItem:]):
- * DrawTest/DrawTestView.h:
- * DrawTest/DrawTestView.m:
- (-[DrawTestView initWithFrame:]):
- (-[DrawTestView setDocument:]):
- * DrawTest/SVGTest.h:
- * DrawTest/SVGTest.m:
- (+[SVGTest sharedDrawView]):
- (-[SVGTest generateCompositeIfNecessary]):
- * DrawTest/TestController.h:
- * DrawTest/TestController.m:
- (-[TestController awakeFromNib]):
- (-[TestController setSelectedTest:]):
- (-[TestController openTestViewerForSelection:]):
- (-[TestController toggleViewersScaleRule:]):
- * DrawTest/TestViewerSplitView.m:
- (-[TestViewerSplitView drawRect:]):
-
-2006-01-10 Anders Carlsson <andersca@mac.com>
-
- Reviewed by Timothy.
-
- * DumpRenderTree/DumpRenderTree.m:
- (main): Set the default language to "en", so language tests will work.
-
-2006-01-08 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Eric.
-
- - script to generate HTML wrappers for JS tests
- http://bugs.webkit.org/show_bug.cgi?id=6441
-
- * Scripts/make-js-test-wrappers: Added.
-
-2006-01-08 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Eric.
-
- * Scripts/svn-create-patch: Fix to work when passed directory names.
-
-2006-01-08 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Eric.
-
- - Added back/forward navigation support to DumpRenderTree. Hopefully we
- can start writing automated loader tests now. I have one in the works.
-
- * DumpRenderTree/DumpRenderTree.m:
- (main): Construct global navigationController on entry, destroy on exit.
- Set frame to nil on exit too, to match all the other global objects.
- (Probably academic, since the process is exiting, anyway.)
- (-[WaitUntilDoneDelegate webView:didFinishLoadForFrame:]): Notify the
- navigationController, in case it wants to kick off a load.
- (-[WaitUntilDoneDelegate webView:windowScriptObjectAvailable:]): Expose
- the navigationController to scripting.
-
- New class, should be straightforward:
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/NavigationController.h: Added.
- * DumpRenderTree/NavigationController.m: Added.
-
- (+[NavigationController isSelectorExcludedFromWebScript:]):
- (+[NavigationController webScriptNameForSelector:]):
- (-[NavigationController setPendingScript:]):
- (-[NavigationController setPendingRequest:]):
- (-[NavigationController evaluateWebScript:afterBackForwardNavigation:]):
- (-[NavigationController webView:didFinishLoadForFrame:]):
- (-[NavigationController dealloc]):
-
-2006-01-08 Timothy Hatcher <timothy@apple.com>
-
- Removed this script, no longer needs with the Subversion switch.
-
- * checkout: Removed.
-
-2006-01-08 Timothy Hatcher <timothy@apple.com>
-
- Removes some stray tabs.
-
- * Scripts/update-webkit:
-
-2005-01-07 Eric Seidel <eseidel@apple.com>
-
- Reviewed by darin.
-
- build-webkit should pass on build arguments from command line
- http://bugs.webkit.org/show_bug.cgi?id=5854
-
- * Scripts/build-webkit:
-
-2006-01-07 Eric Seidel <eseidel@apple.com>
-
- Reviewed by mjs & xenon.
-
- * Scripts/update-webkit: support Internal updates as well
-
-2006-01-06 Geoffrey Garen <ggaren@apple.com>
-
- Temporarily rolling out plugin support from DumpRenderTree because it
- caused lots of layout test regressions.
-
- * DumpRenderTree/DumpRenderTree.m:
- (main): Remove invisible window added to support plugins.
-
-2006-01-06 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by darin.
-
- - Fixed http://bugs.webkit.org/show_bug.cgi?id=6361
- Add plugin support to DumpRenderTree
-
- Also wrote first test plugin.
-
- * DumpRenderTree/DumpRenderTree.m:
- (main):
- (1) Put the WebView in an invisible window, because PlugIns are
- optimized not to load if there's no parent window.
- (2) Tell WebKit to load any PlugIns in the directory from which we
- loaded. This means we can build nasty PlugIns alongside DumpRenderTree
- and they'll load automagically during layout testing, but they won't be
- added to the user's system, hosing apps like Safari.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Added new
- test PlugIn to project.
-
- PlugIn added to project:
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/Info.plist: Added.
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c: Added.
- (getPluginClass):
- (initializeIdentifiers):
- (pluginHasProperty):
- (pluginHasMethod):
- (pluginGetProperty):
- (pluginSetProperty):
- (pluginInvoke):
- (pluginInvokeDefault):
- (pluginInvalidate):
- (pluginAllocate):
- (pluginDeallocate):
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h: Added.
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.c: Added.
- (NP_Initialize):
- (NP_GetEntryPoints):
- (NP_Shutdown):
- (NPP_New):
- (NPP_Destroy):
- (NPP_SetWindow):
- (NPP_NewStream):
- (NPP_DestroyStream):
- (NPP_WriteReady):
- (NPP_Write):
- (NPP_StreamAsFile):
- (NPP_Print):
- (NPP_HandleEvent):
- (NPP_URLNotify):
- (NPP_GetValue):
- (NPP_SetValue):
-
-2006-01-04 Timothy Hatcher <timothy@apple.com>
-
- Reviewed by Darin Adler.
- Created by Eric.
- Tweaked and tested by me.
-
- New scripts to work with Subversion when the switch happens.
- These will replace cvs-apply, cvs-unapply, and cvs-create-patch.
-
- * Scripts/svn-apply: Added.
- * Scripts/svn-create-patch: Added.
- * Scripts/svn-unapply: Added.
-
-2005-12-30 Eric Seidel <eseidel@apple.com>
-
- Reviewed by mjs.
-
- Move WebView width/height logic into DumpRenderTree to support
- running the W3C SVG 1.1 tests along side other tests. The W3C
- SVG 1.1 tests require a 480x360 view.
-
- * DumpRenderTree/DumpRenderTree.m:
- (main): don't accept width/height
- (dump): override width/height for SVG/W3C
- * Scripts/run-webkit-tests: don't pass width/height
-
-2005-12-30 Eric Seidel <eseidel@apple.com>
-
- No review, only removing dead code.
-
- * DumpKCanvasTree/DumpKCanvasTree.m: Removed.
- * DumpKCanvasTree/DumpKCanvasTree.xcodeproj/project.pbxproj: Removed.
-
-2005-12-30 Eric Seidel <eseidel@apple.com>
-
- Reviewed by darin.
-
- DumpRenderTree should set a consistent color profile while running
- http://bugs.webkit.org/show_bug.cgi?id=6155
-
- Creates consistent colormatched renderings on every test machine
- using the only way possible with Tiger APIs: by setting the
- system color profile on the test machine for the duration of the
- tests. This will (unfortunately) cause colors to change while
- running DumpRenderTree. This can also cause "permanent" color
- changes to occur if DRT is to crash (SIGSEGV, etc.) while running.
- This is far from ideal, but it's be best way we've found to deal
- with the issue for now.
-
- * DumpRenderTree/DumpRenderTree.m:
- (restoreColorSpace):
- (setDefaultColorProfileToRGB):
- (main):
-
-2005-12-20 Alexey Proskuryakov <ap@nypop.com>
-
- Reviewed by Darin Adler.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=5846
- cvs-create-patch --include produces incorrect paths
-
- * Scripts/cvs-create-patch: Handle newly-added directories using chdir.
-
-2005-12-19 Eric Seidel <eseidel@apple.com>
-
- Reviewed by darin.
-
- * Scripts/run-webkit-tests: stop /etc/catalog warnings
-
-2005-12-19 Darin Adler <darin@apple.com>
-
- Reviewed by Eric Seidel.
-
- - fix http://bugs.webkit.org/show_bug.cgi?id=4990
- WebKit needs to use a local pasteboard during testing
-
- * DumpRenderTree/DumpRenderTree.m:
- (main): Call poseAs to substitute our NSPasteboard class for the default one.
- Create a local pasteboard (really a global one with a unique name) and release
- it when exiting from the function so we don't leave it in the pasteboard server.
- (dumpRenderTree): Added an autorelease pool around one small bit of code that
- ddn't have one. Fixed a leak in an unlikely error case.
- (+[DumpRenderTreePasteboard generalPasteboard]): Override the default version
- of this method to return our local pasteboard.
-
-2005-12-15 Eric Seidel <eseidel@apple.com>
-
- Reviewed by Tim Hatcher.
-
- * Scripts/build-webkit: --svg is now default!
-
-2005-12-15 Eric Seidel <eseidel@apple.com>
-
- Reviewed by mjs.
-
- Don't run svg test automatically if +SVG is built (yet).
-
- * Scripts/run-webkit-tests:
-
-2005-12-15 Darin Adler <darin@apple.com>
-
- * Scripts/run-webkit-tests: Don't run tests in directories named "svg" if SVG
- support is not compiled in. Report the 10 slowest tests if "--slowest" is
- passed on the command line.
-
-2005-12-06 John Sullivan <sullivan@apple.com>
-
- Reviewed by Darin Adler.
-
- * Scripts/prepare-ChangeLog:
- Remove special-case handling for nib files. This avoided trouble with cvs diff
- when we were using wrappers for nib files. Now that we aren't using wrappers,
- there's no reason to avoid adding the modified nib files to the file list that
- gets diffed.
-
-2005-12-05 Eric Seidel <eseidel@apple.com>
-
- Reviewed by mjs.
-
- Script updates for SVG files move (remove references to SVGSupport)
-
- * Scripts/build-webkit: remove SVGSupport
- * Scripts/run-webkit-tests: Resources -> resources for --svg
- * Scripts/update-webkit: remove SVGSupport
-
-2005-12-05 Eric Seidel <eseidel@apple.com>
-
- Reviewed mjs.
-
- * checkout: remove --svg support, SVG is now checked out by default
-
-2005-11-29 Eric Seidel <eseidel@apple.com>
-
- Reviewed by darin.
-
- Update scripts to run SVG tests automatically (w/o --svg) if
- WebCore is built with SVG support.
-
- * Scripts/build-drawtest: SVG support required
- * Scripts/build-dumpkcanvastree: Removed.
- * Scripts/run-drawtest: SVG support required to run
- * Scripts/run-webkit-tests: pass *.svg files if WebCore has support
- * Scripts/webkitdirs.pm: changed CheckWebCoreSVGSupport
-
-2005-11-28 Alexey Proskuryakov <ap@nypop.com>
-
- Reviewed by Darin Adler. Committed by Maciej.
-
- - fixed "DumpRenderTree should test for Ahem before doing anything else"
- (http://bugs.webkit.org/show_bug.cgi?id=5838)
-
- * DumpRenderTree/DumpRenderTree.m:
- (main):
-
-2005-11-28 Eric Seidel <eseidel@apple.com>
-
- Reviewed by sullivan and GGAREN.
-
- Minor additions to make error messages more clear from cvs-apply.
-
- * Scripts/cvs-apply: make errors more clear
-
-2005-11-27 Oliver Hunt <ojh16@student.canterbury.ac.nz>
-
- Reviewed and committed by Maciej.
-
- - fixed cvs-create-patch --include produces incorrect paths
- (http://bugs.webkit.org/show_bug.cgi?id=5846)
-
- * Scripts/cvs-create-patch: produce proper paths for new files.
-
-2005-11-21 Eric Seidel <eseidel@apple.com>
-
- Reviewed by hyatt.
-
- Some simple fixes to the build/test scripts now that SVG uses the
- WebCore DOM. JSC+SVG is no longer needed, nor is RTTI support
- or symlinks for KDOM.
-
- * Scripts/build-webkit: No longer builds JavaScriptCore+SVG
- * Scripts/prepare-ChangeLog: handles missing LayoutTests directory
- * Scripts/run-webkit-tests: now runs SVG tests using DRT
- * Scripts/webkitdirs.pm: use SVG symbols instead of RTTI
- * checkout: no longer symlink kdom
-
-2005-11-10 Eric Seidel <eseidel@apple.com>
-
- Reviewed by ggaren.
-
- * Scripts/build-webkit: Pass through options to xcodebuild
-
-2005-11-07 Darin Adler <darin@apple.com>
-
- * Scripts/cvs-apply: Fix case where the patch has files at the top level.
-
-2005-11-03 John Sullivan <sullivan@apple.com>
-
- Reviewed by Darin Adler.
-
- * Scripts/run-safari:
- changed message to say "Starting Safari" instead of odd "Start Safari"
- * Scripts/run-webkit-tests:
- changed the way we pass the file parameter to use -NSOpen rather than relying on
- unlabeled arguments being treated as files. This was failing on some machines that
- (mysteriously) had NSTreatUnknownArgumentsAsOpen set to NO in com.apple.Safari.plist.
-
-2005-10-27 Geoffrey Garen <ggaren@apple.com>
-
- Patch by Alexey Proskuryakov.
-
- Reviewed by Maciej.
-
- Fixes http://bugs.webkit.org/show_bug.cgi?id=5303
- TextInputController should support attributed strings
-
- * DumpRenderTree/TextInputController.m:
- (+[NSMutableAttributedString isSelectorExcludedFromWebScript:]):
- (+[NSMutableAttributedString webScriptNameForSelector:]):
- (-[NSMutableAttributedString getLength]):
- (-[NSMutableAttributedString attributeNamesAtIndex:]):
- (-[NSMutableAttributedString valueOfAttribute:atIndex:]):
- (-[NSMutableAttributedString addAttribute:value:]):
- (-[NSMutableAttributedString addAttribute:value:from:length:]):
- (-[NSMutableAttributedString addColorAttribute:red:green:blue:alpha:]):
- (-[NSMutableAttributedString addColorAttribute:red:green:blue:alpha:from:length:]):
- (-[NSMutableAttributedString addFontAttribute:fontName:size:]):
- (-[NSMutableAttributedString addFontAttribute:fontName:size:from:length:]):
- (+[TextInputController isSelectorExcludedFromWebScript:]):
- (+[TextInputController webScriptNameForSelector:]):
- (-[TextInputController insertText:]):
- (-[TextInputController attributedSubstringFrom:length:]):
- (-[TextInputController attributedStringWithString:]):
-
-2005-10-11 Eric Seidel <eseidel@apple.com>
-
- Reviewed by hyatt.
-
- Checks for leaks in ImageDiff too.
-
- * Scripts/run-webkit-tests:
-
-2005-10-09 Darin Adler <darin@apple.com>
-
- * Scripts/check-dom-results: Dump ".xhtml" for tests in the xhtml directory.
- * Scripts/cvs-apply: Handle added/deleted files in the current directory.
- * Scripts/cvs-unapply: Ditto.
- * Scripts/run-webkit-tests: Add a few more false-positive leaks.
-
-2005-10-08 Alexey Proskuryakov <ap@nypop.com>
-
- Reviewed, rearranged and landed by Darin Adler.
-
- - fixed http://bugs.webkit.org/show_bug.cgi?id=4707
- Need a way to automatically test for regressions in NSTextInput implementation
-
- * DumpRenderTree/DumpRenderTree.m:
- (-[WaitUntilDoneDelegate webView:windowScriptObjectAvailable:]):
- Create a text input controller and put it in a property of the window object.
-
- * DumpRenderTree/TextInputController.h: Added.
- * DumpRenderTree/TextInputController.m: Added.
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Added files.
-
-2005-10-06 Darin Adler <darin@apple.com>
-
- * Scripts/cvs-apply: Fixed merge option to work better when not all directories
- are controlled by cvs, or when changes cross multiple repositories.
- * Scripts/update-webkit: Don't print messages if the "quiet" flag is set.
-
-2005-10-03 Eric Seidel <eseidel@apple.com>
-
- Reviewed by mjs.
-
- Make mouseDown and mouseUp force layout before acting.
- This is used by a new test case for 4233558.
-
- * DumpRenderTree/DumpRenderTree.m:
- (-[EventSendingController mouseDown]): force layout
- (-[EventSendingController mouseUp]): force layout
-
-2005-09-30 Eric Seidel <eseidel@apple.com>
-
- Reviewed by xenon.
-
- Updated all the scripts for the move:
- WebCore/layout-tests -> LayoutTests
-
- * Scripts/check-dom-results:
- * Scripts/prepare-ChangeLog:
- * Scripts/run-webkit-tests:
- * Scripts/update-webkit: added --no-tests
- * checkout: added --no-tests
-
-2005-09-28 Darin Adler <darin@apple.com>
-
- - fixed http://bugs.webkit.org/show_bug.cgi?id=5144
- pixel test should run even if render trees differ
-
- * Scripts/run-webkit-tests: Don't check if the text dump matches.
-
-2005-09-27 Eric Seidel <eseidel@apple.com>
-
- No review needed, SVG build fix only.
-
- * DumpKCanvasTree/DumpKCanvasTree.m:
- Missed one in my previous checkin.
- http://bugs.webkit.org/show_bug.cgi?id=5141
-
-2005-09-26 Eric Seidel <eseidel@apple.com>
-
- No review needed, SVG build fix only.
-
- * DrawTest/DrawTestDocument.m:
- * DrawTest/DrawTestToolbarController.m:
- * DrawTest/DrawTestView.h:
- * DrawTest/DrawTestView.m:
- * DrawTest/SVGTest.m:
- * DrawTest/TestController.m:
- Updated for WebCore+SVG -> WebCore rename.
- http://bugs.webkit.org/show_bug.cgi?id=5141
-
-2005-09-26 Eric Seidel <eseidel@apple.com>
-
- Reviewed by hyatt.
-
- * DumpRenderTree/DumpRenderTree.m:
- (dump): updated error message
- * Scripts/check-dom-results: now includes xhtml
- Tool updates for xhtml.
- http://bugs.webkit.org/show_bug.cgi?id=4907
-
-2005-09-22 Duncan Wilcox <duncan@mclink.it>
-
- Reviewed by Maciej.
- Landed by Darin Adler.
-
- - patch for <http://bugs.webkit.org/show_bug.cgi?id=4963>
- "Would like to simulate human interaction with webview"
-
- * DumpRenderTree/DumpRenderTree.m:
- (-[WaitUntilDoneDelegate webView:windowScriptObjectAvailable:]):
- (+[EventSendingController isSelectorExcludedFromWebScript:]):
- (+[EventSendingController webScriptNameForSelector:]):
- (-[EventSendingController init]):
- (-[EventSendingController mouseDown]):
- (-[EventSendingController mouseUp]):
- (-[EventSendingController mouseMoveToX:Y:]):
- Add eventSender javascript object, that sends fake mouse events to the webview.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- link with Carbon.framework
-
-2005-09-22 Eric Seidel <eseidel@apple.com>
-
- Reviewed by mjs.
-
- Update tools for WebCore+SVG -> WebCore rename.
- Also fold several SVG specific tools into their original
- WebCore counterparts.
- http://bugs.webkit.org/show_bug.cgi?id=5003
-
- * DrawTest/DrawTest.xcodeproj/project.pbxproj:
- * DumpKCanvasTree/DumpKCanvasTree.xcodeproj/project.pbxproj:
- * Scripts/build-drawtest:
- * Scripts/build-dumpkcanvastree:
- * Scripts/build-webcore-svg: Removed.
- * Scripts/build-webkit: added --svg option
- * Scripts/run-drawtest:
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm: various additions.
- * checkout: added --svg option
- * checkout-svg: Removed.
-
-2005-09-19 Eric Seidel <eseidel@apple.com>
-
- Reviewed by darin.
-
- * Scripts/run-webkit-tests: added --guard-malloc option
- http://bugs.webkit.org/show_bug.cgi?id=4613
-
-2005-09-16 Justin Garcia <justin.garcia@apple.com>
-
- Reviewed by geoff
-
- Removed a script that is only used by apple internal developers
-
- * Scripts/update-webkitsysteminterface: Removed.
-
-2005-09-16 Adele Peterson <adele@apple.com>
-
- Reviewed by Maciej.
-
- * Scripts/prepare-ChangeLog: Allow semicolons for protocols too.
-
-2005-09-14 Darin Adler <darin@apple.com>
-
- - fixed http://bugs.webkit.org/show_bug.cgi?id=4291
- dumpAsText doesn't work with XHTML documents
-
- * DumpRenderTree/DumpRenderTree.m: (dump): Dump the innerText of the document element
- rather than of the body element. This works with typical XHTML documents. We can probably
- do something even better in the long run, but this fixes the immediate issue.
-
- - separate tweak
-
- * Scripts/run-webkit-tests: Show the results in the current built Safari by using
- run-safari instead of just using "open", which often runs another copy of Safari instead.
-
-2005-09-11 Mark Rowe <opendarwin.org@bdash.net.nz>
-
- Reviewed, tweaked, and landed by Darin Adler.
-
- - fixed http://bugs.webkit.org/show_bug.cgi?id=4286
- .Mac prefpane crashes when Safari using CVS WebKit is running
-
- * Scripts/run-safari: Set WEBKIT_UNSET_DYLD_FRAMEWORK_PATH.
- * Scripts/run-webkit-app: Ditto.
-
-2005-09-11 Darin Adler <darin@apple.com>
-
- * Scripts/run-webkit-tests: Oops. Use spaces, not tabs.
-
-2005-09-11 Darin Adler <darin@apple.com>
-
- Reviewed by Eric.
-
- * Scripts/run-webkit-tests: Sort tests with a new "pathcmp" function that's better in
- two ways: 1) puts all files in a directory before any files in a subdirectory, and
- 2) sort file names with numeric digits in them in a logical way, so test-33 will come
- before test-3.
-
-2005-09-08 Justin Garcia <justin.garcia@apple.com>
-
- Reviewed by darin
-
- * Scripts/update-webkitsysteminterface: Added.
- Builds webkitsysteminterface and moves the built product and header into WebKitLibraries
-
-2005-09-01 John Sullivan <sullivan@apple.com>
-
- * Scripts/run-webkit-tests:
- Excluded a known system leak to reduce noise; added comments about which leaks
- are being excluded.
-
-2005-09-01 Tim Omernick <tomernick@apple.com>
-
- Change made by Darin, reviewed by John and myself.
-
- - Allow semicolons at the end of method declarations (this is for method implementations; the semicolon is required for interface declarations).
-
- * Scripts/prepare-ChangeLog:
-
-2005-08-31 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin Adler.
-
- - set color variant and font settings to a consistent value.
- (http://bugs.webkit.org/show_bug.cgi?id=4769)
-
- * DumpRenderTree/DumpRenderTree.m:
- (main):
-
-2005-08-30 Eric Seidel <eseidel@apple.com>
-
- Reviewed by mjs.
-
- * Scripts/build-svg2png: Removed.
- * svg2png/ImageDiff.h: Removed.
- * svg2png/ImageDiff.m: Removed.
- * svg2png/svg2png.m: Removed.
- * svg2png/svg2png.xcodeproj/project.pbxproj: Removed.
- * svg2png/svg2png_Prefix.pch: Removed.
- svg2png is no longer needed.
-
-2005-08-30 Darin Adler <darin@apple.com>
-
- * Scripts/check-dom-results: Special case 100% to say something nice.
- * Scripts/cvs-apply: Added "--merge" which automatically rolls back the tree before
- applying the patch (need a better name).
- * Scripts/find-extra-includes: Added. Experimental tool to find unneeded includes.
-
-2005-08-30 Darin Adler <darin@apple.com>
-
- * Scripts/run-webkit-tests: Small formatting fix for leaks mode.
-
-2005-08-29 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin Adler.
-
- - fixed http://bugs.webkit.org/show_bug.cgi?id=4723
- (some pixel tests fail when AA settings are changed)
-
- * DumpRenderTree/DumpRenderTree.m:
- (main): set AA settings to the default values
-
-2005-08-29 Darin Adler <darin@apple.com>
-
- Reviewed by John Sullivan.
-
- * Scripts/run-webkit-tests: Added a mode where each test is run with a separate
- executable -- much slower but can help pinpoint leaks. Changed formatting of some
- messages too.
-
-2005-08-28 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Eric.
-
- - fixed http://bugs.webkit.org/show_bug.cgi?id=4720
- (webkit pixel tests don't give consistent results with changed scrollbar arrow setting)
-
- * DumpRenderTree/DumpRenderTree.m:
- (main): set scrollbar arrow setting to a consistent value
-
-2005-08-27 Jussi Hagman <juhagman@abo.fi>
-
- Reviewed and landed by Darin Adler.
-
- - fixed http://bugs.webkit.org/show_bug.cgi?id=4676
- output of update-webkit is too verbose
-
- * Scripts/update-webkit:
- Added option --quiet (-q) to decrease the amount of output.
-
-2005-08-27 Darin Adler <darin@apple.com>
-
- - fixed http://bugs.webkit.org/show_bug.cgi?id=4596
- cvs-create-patch --include-unknowns should ignore hidden files
-
- * Scripts/cvs-create-patch: Add code to check for files starting with ".".
-
-2005-08-25 Ben La Monica <ben.lamonica@gmail.com>
-
- Reviewed, tweaked, and landed by Darin Adler.
-
- - fixed http://bugs.webkit.org/show_bug.cgi?id=4585
- update-webkit doesn't notice when you have SVGSupport and update properly
-
- * Scripts/update-webkit: Build SVGSupport directory if it's present.
-
-2005-08-25 Anders Carlsson <andersca@mac.com>
-
- Reviewed and landed by Darin Adler.
-
- - fixed http://bugs.webkit.org/show_bug.cgi?id=4572
- layout test machinery can't handle tests with applets that have code attributes
-
- * DumpRenderTree/DumpRenderTree.m: (main): Disable Java while running tests.
-
-2005-08-24 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - fixed http://bugs.webkit.org/show_bug.cgi?id=4625
- DumpRenderTree --pixel-tests crash
- - landed some other small changes I had sitting in my tree
-
- * DumpRenderTree/DumpRenderTree.m:
- (main): Don't bother saving and restoring the preferences. Not sure
- why this was ever done since the preferences are specific to DumpRenderTree.
- Clear delegates before releasing the WebView, because you can't count on the
- order of object deallocation.
- (dumpRenderTree): Fix code that releases a string before storing it in a
- global variable.
-
- * Scripts/run-webkit-tests: Use "-s" rather than a function to get the size
- of a file. Fix lots of cases that were using tabs for indenting to use spaces instead.
-
-2005-08-23 Eric Seidel <eseidel@apple.com>
-
- Reviewed by mjs.
-
- * Scripts/run-webkit-tests:
- Made --leaks option more readable by printing to a file.
- http://bugs.webkit.org/show_bug.cgi?id=4590
-
-2005-08-22 Eric Seidel <eseidel@apple.com>
- Fix by Tobias Lidskog <tobiaslidskog@mac.com>
-
- Reviewed by darin.
-
- * Scripts/run-webkit-tests: hides "expected actual diffs" links
- when they are not needed (for pixel-only failures)
- http://bugs.webkit.org/show_bug.cgi?id=4584
-
-2005-08-22 Eric Seidel <eseidel@apple.com>
-
- Reviewed by darin.
-
- * Scripts/run-webkit-tests: Added the ability to display more than
- just two images as part of the image-diff "slideshow".
- Added display of "-w3c.png" baseline images for SVG.
- http://bugs.webkit.org/show_bug.cgi?id=4581
-
-2005-08-20 Eric Seidel <eseidel@apple.com>
-
- * Scripts/run-webkit-tests:
- "build" fix after committing incorrect version.
-
-2005-08-20 Eric Seidel <eseidel@apple.com>
-
- Reviewed by darin.
-
- * DumpRenderTree/DumpRenderTree.m:
- (main): cleans up delegates
- (dumpRenderTree): closes CFString/CFURL leak
- * Scripts/run-webkit-tests:
- Adds --leaks option to run-webkit-tests
- http://bugs.webkit.org/show_bug.cgi?id=4542
-
-2005-08-19 Ben La Monica <ben.lamonica@gmail.com>
-
- Reviewed by Darin Adler.
-
- * Scripts/cvs-create-patch: Add an --include-unknowns option that will cause
- new files to be included in the patch even without "cvs add".
-
-2005-08-19 Darin Adler <darin@apple.com>
-
- * Scripts/cvs-apply: Fix to not garble patches that are mix of cvs-style and
- non-cvs-generated patches. Anders has been creating these, so it's bad that
- the script can't handle them.
- * Scripts/cvs-unapply: Ditto.
-
-2005-08-18 Darin Adler <darin@apple.com>
-
- * Scripts/webkitdirs.pm: Fix version checking to work on Xcode versions with
- "." in them -- based on complaint by someone here at Apple.
-
-2005-08-18 Eric Seidel <eseidel@apple.com>
-
- Reviewed by mjs.
-
- * Scripts/run-webkit-tests:
- Made --svg imply --pixel-tests (pixel tests on-by-default for svg).
-
-2005-08-17 Maciej Stachowiak <mjs@apple.com>
-
- - add file that I forgot in the last checkin
-
- * DumpRenderTree/ImageDiff.m: Added.
- (main):
- (getImageFromStdin):
- (compareImages):
- (getDifferenceBitmap):
- (computePercentageDifferent):
-
-2005-08-17 Maciej Stachowiak <mjs@apple.com>
-
- Changes by Ben Lamonica and Eric Seidel, reviewed mostly by Eric and
- somewhat by me, and also tweaked by me a little bit.
-
- - better support for pixel-dumping
- - use checksums of the images so the tests are fast
- - change output format to make the tests run faster
- - don't dump pixel results for tests that dump as text
-
- * DumpKCanvasTree/DumpKCanvasTree.m:
- (main):
- (dumpRenderTree):
- (md5HashStringForBitmap):
- (dumpPixelTests):
- (constrainSizeToMaximum):
- (getBitmapImageRepForSVGDocument):
- * DumpKCanvasTree/DumpKCanvasTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/DumpRenderTree.m:
- (main):
- (dump):
- (dumpRenderTree):
- (md5HashStringForBitmap):
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * Scripts/run-webkit-tests:
-
-2005-08-17 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin Adler.
-
- - hacked DumpRenderTree to make the scrollbars appear and disappear properly.
-
- * DumpRenderTree/DumpRenderTree.m:
- (main):
-
-2005-08-14 Oliver Hunt <ojh16@student.canterbury.ac.nz>
-
- Reviewed and landed by Darin Adler.
-
- - fixed http://bugs.webkit.org/show_bug.cgi?id=4251
- Ideally would be able to pass arguments to apps using run-safari and run-webkit-app scripts
-
- * Scripts/run-safari: Pass arguments through to Safari on command line.
- * Scripts/run-webkit-app: Pass arguments through to "open" tool on command line.
-
-2005-08-11 Eric Seidel <eseidel@apple.com>
- Fix by Tobias Lidskog <tobiaslidskog@mac.com>
-
- Reviewed by eseidel.
-
- * DrawTest/TestController.m:
- (-[TestController imagePathForSVGPath:]):
- Fixed support for using TextViewer with the layout-tests.
- http://bugs.webkit.org/show_bug.cgi?id=4385
-
-2005-08-11 Maciej Stachowiak <mjs@apple.com>
-
- At Least Roughly Glanced At by Anders.
-
- - fix change with totally breaks the layout tests.
-
- * DumpRenderTree/DumpRenderTree.m:
- (-[WaitUntilDoneDelegate webView:didCommitLoadForFrame:]): Make tests unready if you start another
- load, to avoid dumping twice accidentally.
-
-2005-08-10 Eric Seidel <eseidel@apple.com>
- Fixed made by Mitz Pettel <opendarwin.org@mitzpettel.com>
-
- Reviewed by darin.
-
- * DumpRenderTree/DumpRenderTree.m:
- Added support for rendering to a PNG file.
- http://bugs.webkit.org/show_bug.cgi?id=3840
-
-2005-08-07 Eric Seidel <eseidel@apple.com>
-
- Reviewed by darin.
-
- * Scripts/run-webkit-tests: added --svg option
- * Scripts/run-webkit-tests-svg: Removed.
- http://bugs.webkit.org/show_bug.cgi?id=4300
-
-2005-08-07 Eric Seidel <eseidel@apple.com>
- Changes by Ben La Monica <ben.lamonica@gmail.com>
-
- Reviewed by darin.
-
- * svg2png/ImageDiff.h: Added.
- * svg2png/ImageDiff.m: Added.
- (getDifferenceBitmap):
- (computePercentageDifferent):
- (saveAnimatedGIFToFile):
- * svg2png/svg2png.m:
- (usage): added several new options
- (getBitmapForSVG): added NSBitmapImageRep generation
- (main): various argument changes.
- * svg2png/svg2png.xcodeproj/project.pbxproj:
- Several additions to provide image differencing functionality.
- http://bugs.webkit.org/show_bug.cgi?id=4193
-
-2005-08-07 Eric Seidel <eseidel@apple.com>
-
- Reviewed by darin.
-
- * Scripts/run-webkit-tests-svg: now uses WebCore/svg-tests
- * checkout-svg: links WebCore/svg-tests to SVGSupport/layout-tests
- Adding the first SVG layout tests:
- http://bugs.webkit.org/show_bug.cgi?id=4303
-
-2005-08-07 Darin Adler <darin@apple.com>
-
- * Scripts/cvs-create-patch: Do all the directories at once, for speed.
-
-2005-08-06 Eric Seidel <eseidel@apple.com>
-
- Reviewed by darin.
-
- * DumpKCanvasTree/DumpKCanvasTree.m: Added.
- * DumpKCanvasTree/DumpKCanvasTree.xcodeproj/project.pbxproj: Added.
- * Scripts/build-dumpkcanvastree: Added.
- * Scripts/run-webkit-tests-svg: Added.
- Adds a DumpRenderTree-like tool for SVG which allows us to do
- text-based layout regression testing. This (like most of the
- SVG specific stuff) is temporary and will be replaced by
- DumpRenderTree once the DOMs and RenderTrees merge.
- http://bugs.webkit.org/show_bug.cgi?id=3917
-
-2005-08-06 Eric Seidel <eseidel@apple.com>
-
- Reviewed by darin.
-
- * DrawTest/DrawTestView.m:
- (-[DrawTestView toggleFilterSupport:]): missing negation.
- One half of fix for toggling filter support.
- http://bugs.webkit.org/show_bug.cgi?id=4252
-
-2005-08-04 Eric Seidel <eseidel@apple.com>
-
- Reviewed by darin.
-
- * Scripts/build-drawtest:
- * Scripts/build-dumprendertree:
- * Scripts/build-svg2png:
- * Scripts/build-webcore-svg:
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm: added checkRequiredSystemConfig()
- Added checkRequiredSystemConfig and made all the build-* scripts
- use it to print a pretty warning when trying to compile on an
- unsupported system (less than 10.4, Xcode 2.1).
- http://bugs.webkit.org/show_bug.cgi?id=4280
-
-2005-08-04 Darin Adler <darin@apple.com>
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Bring this file back from
- the dead. It was removed by accident when someone was trying to work on the branch.
-
-2005-07-31 Darin Adler <darin@apple.com>
-
- - a little tools cleanup
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Moved options from target to
- project as a whole. Removed unused Default configuration.
-
- * Scripts/check-dom-results: Added license header, comment to explain purpose of tool.
-
-2005-07-31 Duncan Wilcox <duncan@mclink.it>
-
- Reviewed and landed by Darin Adler.
-
- Add logging of editing delegate calls for regression checking.
-
- * DumpRenderTree/DumpRenderTree.m:
- (main):
- setup editing delegate
-
- (-[DOMNode dumpPath]):
- (-[DOMRange dump]):
- utility for editing delegate logging
-
- (-[EditingDelegate webView:shouldBeginEditingInDOMRange:]):
- (-[EditingDelegate webView:shouldEndEditingInDOMRange:]):
- (-[EditingDelegate webView:shouldInsertNode:replacingDOMRange:givenAction:]):
- (-[EditingDelegate webView:shouldInsertText:replacingDOMRange:givenAction:]):
- (-[EditingDelegate webView:shouldDeleteDOMRange:]):
- (-[EditingDelegate webView:shouldChangeSelectedDOMRange:toDOMRange:affinity:stillSelecting:]):
- (-[EditingDelegate webView:shouldApplyStyle:toElementsInDOMRange:]):
- (-[EditingDelegate webView:shouldChangeTypingStyle:toStyle:]):
- (-[EditingDelegate webViewDidBeginEditing:]):
- (-[EditingDelegate webViewDidChange:]):
- (-[EditingDelegate webViewDidEndEditing:]):
- (-[EditingDelegate webViewDidChangeTypingStyle:]):
- log corresponding editing delegate methods
-
- (-[EditingDelegate webViewDidChangeSelection:]):
- log selection except when clearing selection after end of test (uses existing "done" flag)
-
- (dumpRenderTree):
- added clearing of selection after test
-
-2005-07-31 Eric Seidel <eseidel@apple.com>
-
- Reviewed by hyatt.
-
- * Scripts/build-drawtest: Added.
- * Scripts/build-svg2png: Added.
- * Scripts/build-webcore-svg: Added.
- * Scripts/run-drawtest: Added.
- * Scripts/webkitdirs.pm: added checkSVGFrameworks
- Made it much easier to build WebCore+SVG.
- http://bugs.webkit.org/show_bug.cgi?id=4208
-
-2005-07-29 Eric Seidel <eseidel@apple.com>
-
- Reviewed by vicki.
-
- * DrawTest/DrawTest.xcodeproj/project.pbxproj:
- Build fix. Removed bad path.
-
-2005-07-29 Eric Seidel <eseidel@apple.com>
-
- Reviewed by sullivan.
-
- * DrawTest/AppDelegate.h: Added.
- * DrawTest/AppDelegate.m: Added.
- * DrawTest/DrawTest.xcodeproj/project.pbxproj: Added.
- * DrawTest/DrawTestDocument.h: Added.
- * DrawTest/DrawTestDocument.m: Added.
- * DrawTest/DrawTestInspectorController.h: Added.
- * DrawTest/DrawTestInspectorController.m: Added.
- * DrawTest/DrawTestToolbarController.h: Added.
- * DrawTest/DrawTestToolbarController.m: Added.
- * DrawTest/DrawTestView.h: Added.
- * DrawTest/DrawTestView.m: Added.
- * DrawTest/DrawTest_Prefix.pch: Added.
- * DrawTest/English.lproj/DrawTestDocument.nib/classes.nib: Added.
- * DrawTest/English.lproj/DrawTestDocument.nib/info.nib: Added.
- * DrawTest/English.lproj/DrawTestDocument.nib/keyedobjects.nib: Added.
- * DrawTest/English.lproj/InfoPlist.strings: Added.
- * DrawTest/English.lproj/Inspector.nib/classes.nib: Added.
- * DrawTest/English.lproj/Inspector.nib/info.nib: Added.
- * DrawTest/English.lproj/Inspector.nib/keyedobjects.nib: Added.
- * DrawTest/English.lproj/MainMenu.nib/classes.nib: Added.
- * DrawTest/English.lproj/MainMenu.nib/info.nib: Added.
- * DrawTest/English.lproj/MainMenu.nib/keyedobjects.nib: Added.
- * DrawTest/English.lproj/TestViewer.nib/classes.nib: Added.
- * DrawTest/English.lproj/TestViewer.nib/info.nib: Added.
- * DrawTest/English.lproj/TestViewer.nib/keyedobjects.nib: Added.
- * DrawTest/Info.plist: Added.
- * DrawTest/SVGTest.h: Added.
- * DrawTest/SVGTest.m: Added.
- * DrawTest/ScalingImageView.h: Added.
- * DrawTest/ScalingImageView.m: Added.
- * DrawTest/TestController.h: Added.
- * DrawTest/TestController.m: Added.
- * DrawTest/TestViewerSplitView.h: Added.
- * DrawTest/TestViewerSplitView.m: Added.
- * DrawTest/main.m: Added.
- Adding simple cocoa app for testing SVG rendering, interaction.
- http://bugs.webkit.org/show_bug.cgi?id=4157
-
-2005-07-28 Eric Seidel <eseidel@apple.com>
-
- Reviewed by ggaren.
-
- * svg2png/svg2png.m: Added.
- * svg2png/svg2png.xcodeproj/project.pbxproj: Added.
- * svg2png/svg2png_Prefix.pch: Added.
- Added a simple test tool which dumps a PNG from an SVG using
- WebCore+SVG's SVG rendering support.
- http://bugs.webkit.org/show_bug.cgi?id=4156
-
-2005-07-26 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin Adler.
-
- - new script to review the DOM layout test results and see where we stand
- on actual success and failure
-
- * Scripts/check-dom-results: Added.
-
-2005-07-25 Darin Adler <darin@apple.com>
-
- * Scripts/webkitdirs.pm: Check in missing line of code.
-
-2005-07-25 Darin Adler <darin@apple.com>
-
- - fixed problem that was causing JavaScriptCore test to fail
- (except for people who had set DYLD_FRAMEWORK_PATH)
-
- * Scripts/run-javascriptcore-tests: Add code to set DYLD_FRAMEWORK_PATH.
- Add code to parse configuration parameter so you can pass --deployment if you like.
- * Scripts/run-webkit-tests: Add code to parse configuration parameter.
-
- * Scripts/update-javascriptcore-test-results: Add license header.
-
- * Scripts/webkitdirs.pm: Change code that reads configuration option to remove it
- from @ARGV. This lets us use this option in commands that take other options and
- pass them along to a subsequent tool.
-
-2005-07-25 Darin Adler <darin@apple.com>
-
- Reviewed by Geoff Garen.
-
- - Fixed run-safari and gdb-safari to use the Safari application in the build results
- directory, if any, falling back to the one in the Applications directory otherwise.
- Does no harm for open source contributors who don't build Safari, and helps out the
- Safari team, since we do build Safari.
-
- * Scripts/webkitdirs.pm: Added safariPath function that uses WEBKIT_SAFARI environment
- variable, and if that's not present, looks in either the build results directory or
- /Applications; factors code that was in both scripts before into a shared function.
- Also removed some Xcode 2.0 support which is no longer relevant since our projects are
- now in Xcode 2.1 format and incompatible with older versions of Xcode.
-
- * Scripts/gdb-safari: Use safariPath.
- * Scripts/run-safari: Use safariPath.
-
-2005-07-22 Geoffrey Garen <ggaren@apple.com>
-
- Moved Tools/Scripts/run-mozilla-tests to WebKitTools/Scripts/run-javascriptcore-tests.
- run-javascriptcore-tests now passes its command-line arguments to jsDriver.pl
-
- Moved Tools/Scripts/update-mozilla-js-test-results to
- WebKitTools/Scripts/update-javascriptcore-test-results.
-
- Reviewed by darin.
-
- * Scripts/run-javascriptcore-tests: Added.
-
-2005-07-21 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Darin Adler.
-
- * Scripts/build-dumprendertree: changed XCode 2.0 project file reference to 2.1
-
-2005-07-21 Geoffrey Garen <ggaren@apple.com>
-
- * DumpRenderTree/DumpRenderTree.xcode/.cvsignore: Removed.
-
-2005-07-21 Geoffrey Garen <ggaren@apple.com>
-
- * DumpRenderTree/DumpRenderTree.xcode/project.pbxproj: Removed.
-
-2005-07-21 Geoffrey Garen <ggaren@apple.com>
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/.cvsignore: Added.
-
-2005-07-21 Geoffrey Garen <ggaren@apple.com>
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Added.
-
-2005-07-21 Geoffrey Garen <ggaren@apple.com>
-
- * Scripts/build-webkit:
-
-2005-07-12 Eric Seidel <eseidel@apple.com>
-
- Reviewed by mjs.
-
- * checkout-svg: Fixed error with symlink creation.
-
-2005-07-12 Eric Seidel <eseidel@apple.com>
-
- Reviewed by mjs.
-
- * checkout-svg: Added.
- Script to check out WebCore+SVG
-
-2005-06-30 Darin Adler <darin@apple.com>
-
- Changes based on input from Michael Kahl.
-
- * Scripts/cvs-create-patch: Use "-f" so we are compatible with .cvsrc files that
- specify different style of "diff".
- * Scripts/webkitdirs.pm: Add missing call to determineBaseProductDir, so that
- determineConfigurationProductDir works in all cases.
-
-2005-06-29 Darin Adler <darin@apple.com>
-
- - fixed bug which would result in multiple unwanted dumps in a single layout test
-
- * DumpRenderTree/DumpRenderTree.m:
- (-[WaitUntilDoneDelegate webView:locationChangeDone:forDataSource:]): Set new
- "readyToDump" flag.
- (-[LayoutTestController waitUntilDone]): Update for name change.
- (-[LayoutTestController notifyDone]): Dump only if ready.
- (dumpRenderTree): Set up new boolean and update for name change.
-
-2005-06-29 Darin Adler <darin@apple.com>
-
- Changes by Timothy Hatcher.
- Reviewed by me.
-
- * Scripts/run-webkit-app: Added script to open an arbritrary application with
- a CVS built WebKit. Example: ./run-webkit-app Colloquy
-
- * Scripts/gdb-safari: Added support for WEBKIT_SAFARI environment variable to specify
- a custom location to the Safari.app bundle. This is optional, script defaults to the stock location.
- * Scripts/run-safari: Ditto.
-
-2005-06-26 Darin Adler <darin@apple.com>
-
- * Scripts/build-dumprendertree: Pass -project option so that having a second
- copy of the project (like the one Xcode 2.1 offers to make for you) that's
- out of date won't screw you up.
- * Scripts/build-webkit: Ditto.
-
-2005-06-23 Darin Adler <darin@apple.com>
-
- * Scripts/webkitdirs.pm: Fixed a regular expression in the code I just landed.
-
-2005-06-23 Darin Adler <darin@apple.com>
-
- Changes based on input from Michael Kahl.
-
- * Scripts/cvs-create-patch: Added code to handle getting changes in the top-level
- directory passed in.
-
- * Scripts/webkitdirs.pm: Eliminate use of changing the current directory and using
- getcwd() in the code to find the base product dir. Added code to handle unusual
- base product directory values that use SRCROOT.
-
-2005-06-22 Darin Adler <darin@apple.com>
-
- Change by Anders Carlsson.
-
- - added support for dumping title changes
-
- * DumpRenderTree/DumpRenderTree.m:
- (-[WaitUntilDoneDelegate webView:didReceiveTitle:forFrame:]): Added. Dump title change
- if requested by JavaScript.
- (+[LayoutTestController isSelectorExcludedFromWebScript:]): Added dumpTitleChanges.
- (-[LayoutTestController dumpTitleChanges]): Added, sets flag.
- (dumpRenderTree): Start flag as NO.
-
-2005-06-20 Darin Adler <darin@apple.com>
-
- Reviewed by Justin Garcia.
-
- * Scripts/run-webkit-tests: Report number of tests when they succeed.
-
-2005-06-18 Darin Adler <darin@apple.com>
-
- * DumpRenderTree/DumpRenderTree.m: (dumpRenderTree): Add more auto-release pools
- in the hope of making the tool use less memory and run faster.
-
-2005-06-18 Darin Adler <darin@apple.com>
-
- * Scripts/cvs-apply: Improve handling of patches with CR characters in them.
- * Scripts/cvs-unapply: Ditto.
-
-2005-06-17 Maciej Stachowiak <mjs@apple.com>
-
- - added prepare-ChangeLog script which we use internally to make ChangeLogs, for
- benefit of all WebKit hackerdom
-
- * Scripts/prepare-ChangeLog: Added.
-
-2005-06-16 Darin Adler <darin@apple.com>
-
- - recent changes to XcodeOptions made it depend on the current directory
- The intent was to have the WebKitBuild directory be next to WebKitTools,
- not inside the various build directories. Workaround for now is to call
- XcodeOptions when the directory is set to the WebKit directory.
-
- * Scripts/build-dumprendertree: Use a local variable for XcodeOptions and get it
- at the start of the script.
- * Scripts/build-webkit: Ditto.
-
-2005-06-15 Darin Adler <darin@apple.com>
-
- * Scripts/webkitdirs.pm: Recognize all 1.X versions of Xcode as old too, not just 2.0.
-
-2005-06-14 Darin Adler <darin@apple.com>
-
- Changes by Anders Carlsson.
- Reviewed by me.
-
- - fixed <http://bugs.webkit.org/show_bug.cgi?id=3496>
- Add gdb-safari script to launch Safari under gdb
-
- * Scripts/gdb-safari: Added.
-
-2005-06-12 Darin Adler <darin@apple.com>
-
- Changes by Stuart Morgan.
- Reviewed by me.
-
- * Scripts/cvs-abandon: Use cwd instead of `pwd`.
- * Scripts/cvs-apply: Ditto.
- * Scripts/cvs-create-patch: Ditto.
- * Scripts/cvs-unapply: Ditto.
- * Scripts/run-webkit-tests: Ditto.
- * Scripts/webkitdirs.pm: Ditto. Also improve handling when there's no "Configuration" file.
-
-2005-06-12 Darin Adler <darin@apple.com>
-
- * Scripts/cvs-apply: Handle case of an empty patch better.
- * Scripts/cvs-unapply: Ditto.
-
-2005-06-12 Darin Adler <darin@apple.com>
-
- Changes by Michael Gaiman.
- Reviewed by me.
-
- - fixed <http://bugs.webkit.org/show_bug.cgi?id=3487>
- WebKit no longer builds after configuration supporting build changes
-
- * Scripts/webkitdirs.pm: Chomp off the result of `pwd`, and don't die when no Configuration file.
-
-2005-06-12 Darin Adler <darin@apple.com>
-
- * Scripts/update-webkit: Make this script work when called from any directory.
-
-2005-06-12 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
- Includes changes by Stuart Morgan as well as my own.
-
- * Scripts/build-dumprendertree: Call the new setConfiguration function, and use XcodeOptions instead of
- symrootXcodeOptions to set the -buildstyle option.
- * Scripts/build-webkit: Ditto. Also remove the old way of supporting Xcode 2.1 and the old --debug option.
- The new --development option does the same thing.
- * Scripts/run-safari: Ditto.
- * Scripts/run-webkit-tests: Ditto.
- * Scripts/update-webkit: Ditto.
- * Scripts/set-webkit-configuration: Added. Sets the default configuration to Development or Deployment.
-
- * Scripts/webkitdirs.pm: use FindBin to find the WebKit directory; works no matter what the current
- directory is when invoking a script. Add code to determine the Xcode version so we can do the right
- thing for 2.0 and 2.1. Change the productDir function to return the appropriate per-configuration
- product directory. Read the default configuration from a file, overridable by a passed-in command-line
- option.
-
-2005-06-11 Darin Adler <darin@apple.com>
-
- * Scripts/cvs-create-patch: Improve handling of directories with mixed CVS roots by going into each directory
- to execute the cvs diff commands.
-
-2005-06-11 Darin Adler <darin@apple.com>
-
- - added first cuts at some cvs scripts
-
- cvs-abandon is for throwing away changes; discards any local changes, reverting to the state in CVS
- cvs-create-patch is for making patches; runs cvs diff with all the right options and handles added/deleted files
- cvs-apply is for applying patches; runs patch and cvs add and cvs rm
- cvs-unapply is for unapplying patches; does the opposite of cvs-apply
-
- An argument against these is "waste of time if we switch to Subversion", but they should be good for a while.
-
- * Scripts/cvs-abandon: Added.
- * Scripts/cvs-apply: Added.
- * Scripts/cvs-create-patch: Added.
- * Scripts/cvs-unapply: Added.
-
-2005-06-09 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - fixed http://bugs.webkit.org/show_bug.cgi?id=3397
- Build DumpRenderTree fails with unresolved NSAutoreleasePool, etc
-
- * DumpRenderTree/DumpRenderTree.xcode/project.pbxproj: Change type from "folder" to "wrapper.framework"
- for Foundation.framework. How was it ever wrong?
-
- - finally, I tested making the default build directory work; it works now
-
- * Scripts/webkitdirs.pm: Changed structure of the code a little bit, added symrootXcodeOptions function
- that sets SYMROOT on the command line in case there's no product directory set in Xcode preferences.
- * Scripts/build-webkit: Pass symrootXcodeOptions when invoking Xcode.
- * Scripts/build-dumprendertree: Ditto.
-
-2005-06-09 Darin Adler <darin@apple.com>
-
- * Scripts/webkitdirs.pm: Another try at making the default build directory of ~/WebKitBuild
- work. Someone should try building without setting the Xcode build product directory now,
- and let me know if it works.
-
-2005-06-08 Darin Adler <darin@apple.com>
-
- - quick fix to try to get build scripts working again
-
- * Scripts/build-dumprendertree: Add FindBin.
- * Scripts/build-webkit: Ditto.
- * Scripts/run-safari: Ditto.
- * Scripts/run-webkit-tests: Ditto.
- * Scripts/update-webkit: Ditto.
-
-2005-06-08 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej.
-
- - some build script enhancements
-
- * Scripts/build-dumprendertree: Changed to use webkitdirs.
- * Scripts/build-webkit: Changed to use webkitdirs, also only copy files from WebKitLibraries if
- they are newer.
- * Scripts/run-safari: Reduce number of log messages, change to respect "-d" flag and get Development
- before Deplyment in that case.
- * Scripts/run-webkit-tests: Changed to use webkitdirs.
- * Scripts/update-webkit: Changed to use webkitdirs.
-
- * Scripts/webkitdirs.pm: Added.
-
-2005-06-08 Maciej Stachowiak <mjs@apple.com>
-
- Code change by Toby Peterson <toby@opendarwin.org>
- Reviewed by me.
-
- * Scripts/run-safari: Fix to work with Xcode 2.0 again. The script would
- get confused because build-webkit now makes even 2.0 build directories look
- like 2.1.
-
-2005-06-07 Darin Adler <darin@apple.com>
-
- Reviewed by Adele Peterson.
-
- * DumpRenderTree/DumpRenderTree.xcode/project.pbxproj: Added Deployment build style.
- * Scripts/build-dumprendertree: For now, always use Deployment build style. This may fix things
- so we can run tests with Xcode 2.1.
-
-2005-06-07 Darin Adler <darin@apple.com>
-
- Reviewed by Adele Peterson.
-
- * Scripts/run-webkit-tests: Pass -L to find command to follow symlinks. This allows symlinks in the
- layout-tests directory to include additional sets of tests.
-
-2005-06-07 Darin Adler <darin@apple.com>
-
- * checkout: Added license.
- * Scripts/build-dumprendertree: Ditto.
- * Scripts/run-webkit-tests: Ditto.
- * Scripts/update-webkit: Ditto.
-
-2005-06-07 Darin Adler <darin@apple.com>
-
- Change by Toby Peterson <toby@opendarwin.org>.
- Reviewed by me.
-
- * Scripts/build-webkit: Changes so you can build with Xcode 2.1. (I also added a license to this file.)
- * Scripts/run-safari: Ditto.
-
-2005-06-06 Maciej Stachowiak <mjs@apple.com>
-
- * Scripts/build-webkit: run ranlib on libWebKitSystemInterface.a
-
-2005-06-06 Maciej Stachowiak <mjs@apple.com>
-
- * Scripts/build-webkit: Chop newline off of $productDir to avoid problems with logic to copy files ther.
-
-2005-06-06 Maciej Stachowiak <mjs@apple.com>
-
- * Scripts/build-webkit: Install WebKitSystemInterface stuff into build products dir.
-
-2005-06-05 Darin Adler <darin@apple.com>
-
- * DumpRenderTree/DumpRenderTree.xcode/project.pbxproj: Tweak, simplify.
- * Scripts/build-dumprendertree: Added.
- * Scripts/build-webkit: Build All in the JavaScriptCore directory.
- * Scripts/run-webkit-tests: Build DumpRenderTree before running.
-
-2005-06-05 Darin Adler <darin@apple.com>
-
- * Scripts/run-safari: Fix path to Safari executable. Add check for frameworks.
-
-2005-06-05 Darin Adler <darin@apple.com>
-
- - add run-webkit-tests script; not working yet but the pieces are there
-
- * Scripts/run-webkit-tests: Added.
-
- * DumpRenderTree/DumpRenderTree.m: Added.
- * DumpRenderTree/DumpRenderTree.xcode/.cvsignore: Added.
- * DumpRenderTree/DumpRenderTree.xcode/project.pbxproj: Added.
- * DumpRenderTree/DumpRenderTreePrefix.h: Added.
-
-2005-06-05 Darin Adler <darin@apple.com>
-
- - created module, first cut at Web Kit Open Source Project scripts
-
- * ChangeLog: Added.
- * Scripts/build-webkit: Added.
- * Scripts/run-safari: Added.
- * Scripts/update-webkit: Added.
- * checkout: Added.
-
-=== creation of WebKitTools module ===
diff --git a/WebKitTools/CodeCoverage/README b/WebKitTools/CodeCoverage/README
deleted file mode 100644
index 5315f4a..0000000
--- a/WebKitTools/CodeCoverage/README
+++ /dev/null
@@ -1,22 +0,0 @@
-Generate coverage on Mac
-
-call WebKitTools/Script/generate-coverage-data
-
-or by hand
-
-
-# delete
-find . -name '*.gcda' -delete
-
-# build, -framework CoreFoundation might suffice as well
-WebKitTools/Scripts/build-webkit GCC_GENERATE_TEST_COVERAGE_FILES=YES GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES EXTRA_LINK=" -ftest-coverage -fprofile-arcs" OTHER_CFLAGS=" -MD " OTHER_LDFLAGS=" -ftest-coverage -fprofile-arcs -framework AppKit"
-WebKitTools/Scripts/run-webkit-tests
-WebKitTools/Scripts/run-javascriptcore-tests GCC_GENERATE_TEST_COVERAGE_FILES=YES GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES EXTRA_LINK=" -ftest-coverage -fprofile-arcs" OTHER_CFLAGS=" -MD " OTHER_LDFLAGS=" -ftest-coverage -fprofile-arcs -framework AppKit"
-
-
-# Collect files
-WebKitTools/CodeCoverage/run-generate-coverage-data <RUN_ID> ../coverage-results/
-
-
-# Generate graph
-WebKitTools/CodeCoverage/regenerate-coverage-display ../coverage-results/ ../coverage-results/html
diff --git a/WebKitTools/CodeCoverage/amber.png b/WebKitTools/CodeCoverage/amber.png
deleted file mode 100644
index ee5d920..0000000
--- a/WebKitTools/CodeCoverage/amber.png
+++ /dev/null
Binary files differ
diff --git a/WebKitTools/CodeCoverage/cov.py b/WebKitTools/CodeCoverage/cov.py
deleted file mode 100644
index 443e601..0000000
--- a/WebKitTools/CodeCoverage/cov.py
+++ /dev/null
@@ -1,201 +0,0 @@
-# Copyright (C) 2004, 2005, 2006 Nathaniel Smith
-# Copyright (C) 2006, 2007 Holger Hans Peter Freyther
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import csv
-import time
-import os.path
-import shutil
-
-def analyze_coverage(possible_gcov_files, source_files, runid, data_dir, base):
-
- if not os.path.exists(data_dir):
- os.makedirs(data_dir)
-
- output = open(os.path.join(data_dir, runid + ".csv"), "w")
- w = csv.writer(output)
- # First row: id and time
- w.writerow([runid, time.time()])
-
- results = scan_gcov_files(possible_gcov_files, source_files)
- annotated_dir = os.path.join(data_dir, runid + ".annotated")
- if os.path.exists(annotated_dir):
- shutil.rmtree(annotated_dir)
-
- keys = results.keys()
- keys.sort()
- for path in keys:
- (total, covered, annotated_data) = results[path]
- path = path[path.find(base)+len(base):]
- # Rest of the rows: filename, total_lines, covered_lines
- w.writerow([path, total, covered])
-
- if path[:1] == "/":
- path = path[1:]
- annotated_path = os.path.join(annotated_dir, path)
- try:
- os.makedirs(os.path.dirname(annotated_path))
- except OSError:
- pass
- a = open(annotated_path, "w")
- a.write(annotated_data)
- a.close()
-
-
-# zecke's rewrite
-STATE_NOT_CODE = -1
-STATE_NOT_SEEN = -2
-STATE_TEST_CODE = -3
-
-def find_gcov(f, possible_gcovs):
- """
- Find .gcov files that could be of interest for us
- """
- try:
- return possible_gcovs[f]
- except:
- return []
-
-
-def parse_source_file(file):
- """
- Parse one source file and return a list of lines
- """
- f_source_list = []
- init_state = STATE_NOT_SEEN
- in_test_code = False
- nesting = 0
-
- for line in open(file, "r"):
- code = line.split(":", 2)[-1]
- if not in_test_code and code.startswith("#ifdef BUILD_UNIT_TESTS"):
- in_test_code = 1
- if in_test_code and code.startswith("#if"):
- nesting += 1
- if in_test_code and code.startswith("#endif"):
- nesting -= 1
- if not nesting:
- in_test_code = True
- if in_test_code:
- init_state = STATE_TEST_CODE
- else:
- init_state = STATE_NOT_SEEN
- f_source_list.append([init_state, line.split(":", 1)[1]])
-
- return f_source_list
-
-# Runner-up, 3rd annual "write Python that looks like Perl" competition,
-# Well, not really. It doesn't even use regexps.
-# He is right so I'm cleaning it up (zecke)
-def scan_gcov_files(possible_gcov_files, source_files):
- """Takes a list of gcov filenames and a list of source filenames.
-
- The gcov files should have names of the form foo.o##foo.cc.gcov, as
- created by 'gcov -l'.
-
- Returns a dict mapping source filenames to tuples
- (total_lines, tested_lines, gcov_annotated_source)
- which are a number, a number, and a very long string, respectively.
-
- The fun bit is that we merge .gcov output generated by different object
- files; this way we can provide accurate information for header files and
- for monotone's current unit test system."""
- results = {}
- for f in source_files:
- possible_gcovs = find_gcov(f, possible_gcov_files)
- base_name = os.path.splitext(os.path.basename(f))[0]
- if len(possible_gcovs) == 0:
- print "No gcov files found for: '%s' but it was compiled" % f
- continue
-
- (garbage,extension) = os.path.splitext(f)
- if extension in [".cc", ".c", ".moc", ".cpp", ".cxx", ".m", ".mm"]:
- lines = open(f, "r").readlines()
- results[f] = (len(lines), 0, "".join(lines))
- continue
- elif len(possible_gcovs) > 1:
- print "More than one gcov file for %s %d" % (f,len(possible_gcovs))
- base_gcov_lines = parse_source_file(possible_gcovs[0])
-
- # Now we will try hard to merge the results with others
- # Our requirement is that we have the same amount of lines as
- # as the original file
- for cov_file in possible_gcovs:
- lines = open(cov_file, "r").readlines()
-
- # e.g. with phonon we have visualisation.h and we can not know
- # which header file (foldername) it is refering to. This is a gcov
- # limitation and i have no workaround yet. We just hope we will pick
- # the right header file...
- if len(lines) != len(base_gcov_lines):
- print "Error Base: %s and Target: %s have different amount of lines" % (possible_gcovs[0],cov_file)
- continue
-
- # now do the merging of the file. If it has the same basename
- # and the same number of lines things might work out
- # In the future take a look at the header of the file
- i = 0
- for line in lines:
- accumulator = base_gcov_lines[i]
- if accumulator[0] != STATE_TEST_CODE:
- info = line.split(":", 1)[0]
- if info.endswith("-"):
- if accumulator[0] == STATE_NOT_SEEN:
- accumulator[0] = STATE_NOT_CODE
- else:
- if info.endswith("#"):
- num = 0
- else:
- num = int(info)
- if accumulator[0] in (STATE_NOT_SEEN, STATE_NOT_CODE):
- accumulator[0] = 0
- accumulator[0] += num
- i += 1
-
- # post processing of ths file
- (total_lines, total_covered) = (0, 0)
- annotated_lines = []
- for state, line in base_gcov_lines:
- if state == STATE_NOT_SEEN:
- desc = "?????"
- elif state == STATE_TEST_CODE:
- desc = "+"
- elif state == STATE_NOT_CODE:
- desc = "-"
- elif state == 0:
- desc = "#####"
- total_lines += 1
- else:
- desc = str(state)
- total_lines += 1
- total_covered += 1
- annotated_lines.append(":".join([desc.rjust(9), line]))
- results[f] = (total_lines, total_covered, "".join(annotated_lines))
- return results
-
-
-
- return results
diff --git a/WebKitTools/CodeCoverage/emerald.png b/WebKitTools/CodeCoverage/emerald.png
deleted file mode 100644
index 0e60294..0000000
--- a/WebKitTools/CodeCoverage/emerald.png
+++ /dev/null
Binary files differ
diff --git a/WebKitTools/CodeCoverage/gcov.css b/WebKitTools/CodeCoverage/gcov.css
deleted file mode 100644
index 71ca080..0000000
--- a/WebKitTools/CodeCoverage/gcov.css
+++ /dev/null
@@ -1,116 +0,0 @@
-body {
- color: black; background-color: white;
- font-family: Helvetica,Arial,sans-serif;
- margin: 0; padding: 0em;
- text-align: center;
-}
-
-.title {
- text-align:center;
- font-weight:bold;
- font-style:italic;
- font-size:1.8em;
- padding:10px;
-}
-
-.ruler {
- height:3px;
- background-color:#638AD6;
- margin-left:10px;
- margin-right:10px;
-}
-
-.headerItem {
- text-align:right;
- font-weight:bold;
-}
-
-.headerValue {
- text-align:left;
- font-weight:bold;
- color:#638AD6;
-}
-
-.tableHead {
- text-align:center;
- font-weight:bold;
- background-color:#638AD6;
- color:white;
-
-}
-
-.coverFile {
- font-family: Courier;
- background-color:#DEE7FF;
- padding:3px;
- width:70%;
-}
-
-.coverBar {
- background-color:#DEE7FF;
- padding:3px;
- width:5%;
-}
-
-.coverBarOutline {
-}
-
-.coverPerHi {
- font-family: Times;
- text-align:center;
- font-weight:bold;
- background-color:lightgreen;
- padding:3px;
- width:5%;
-}
-
-.coverNumHi {
- font-family: Times;
- text-align:right;
- background-color:lightgreen;
- padding:3px;
- width:25%;
-}
-
-.coverPerMed {
- font-family: Times;
- text-align:center;
- font-weight:bold;
- background-color:yellow;
- padding:3px;
-}
-
-.coverNumMed {
- font-family: Times;
- text-align:right;
- background-color:yellow;
- padding:3px;
-}
-
-.coverPerLo {
- font-family: Times;
- text-align:center;
- font-weight:bold;
- background-color:red;
- padding:3px;
-}
-
-.coverNumLo {
- font-family: Times;
- text-align:right;
- background-color:red;
- padding:3px;
-}
-
-.lineNum {
- background-color:#EFE384;
-}
-
-.lineCov {
- background-color:#CED7FF;
-}
-
-.lineNoCov {
- background-color:#FF6131;
-}
-
diff --git a/WebKitTools/CodeCoverage/glass.png b/WebKitTools/CodeCoverage/glass.png
deleted file mode 100644
index a4ba373..0000000
--- a/WebKitTools/CodeCoverage/glass.png
+++ /dev/null
Binary files differ
diff --git a/WebKitTools/CodeCoverage/regenerate-coverage-display b/WebKitTools/CodeCoverage/regenerate-coverage-display
deleted file mode 100644
index 9139c9a..0000000
--- a/WebKitTools/CodeCoverage/regenerate-coverage-display
+++ /dev/null
@@ -1,408 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright (C) 2004, 2005, 2006 Nathaniel Smith
-# Copyright (C) 2007 Holger Hans Peter Freyther
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#
-# HTML output inspired by the output of lcov as found on the GStreamer
-# site. I assume this is not copyrightable.
-#
-
-
-#
-# Read all CSV files and
-# Create an overview file
-#
-#
-
-
-import sys
-import csv
-import glob
-import time
-import os
-import os.path
-import datetime
-import shutil
-
-os.environ["TTFPATH"] = ":".join(["/usr/share/fonts/truetype/" + d
- for d in "ttf-bitstream-vera",
- "freefont",
- "msttcorefonts"])
-import matplotlib
-matplotlib.use("Agg")
-import matplotlib.pylab as m
-
-level_LOW = 10
-level_MEDIUM = 70
-
-def copy_files(dest_dir):
- """
- Copy the CSS and the png's to the destination directory
- """
- images = ["amber.png", "emerald.png", "glass.png", "ruby.png", "snow.png"]
- css = "gcov.css"
- (base_path, name) = os.path.split(__file__)
- base_path = os.path.abspath(base_path)
-
- shutil.copyfile(os.path.join(base_path,css), os.path.join(dest_dir,css))
- map(lambda x: shutil.copyfile(os.path.join(base_path,x), os.path.join(dest_dir,x)), images)
-
-def sumcov(cov):
- return "%.2f%% (%s/%s)" % (cov[1] * 100.0 / (cov[0] or 1), cov[1], cov[0])
-
-def create_page(dest_dir, name):
- index = open(os.path.join(dest_dir, name), "w")
- index.write("""<HTML>
- <HEAD>
- <TITLE>WebKit test coverage information</TITLE>
- <link rel="stylesheet" type="text/css" href="gcov.css">
- </HEAD>
- <BODY>
- """)
- return index
-
-def generate_header(file, last_time, total_lines, total_executed, path, image):
- product = "WebKit"
- date = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(last_time))
- covered_lines = sumcov((total_lines, total_executed))
-
- file.write("""<table width="100%%" border=0 cellspacing=0 cellpadding=0>
- <tr><td class="title">GCOV code coverage report</td></tr>
- <tr><td class="ruler"><img src="glass.png" width=3 height=3 alt=""></td></tr>
-
- <tr>
- <td width="100%%">
- <table cellpadding=1 border=0 width="100%%">
- <tr>
- <td class="headerItem" width="20%%">Current&nbsp;view:</td>
- <td class="headerValue" width="80%%" colspan=4>%(path)s</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%%">Test:</td>
- <td class="headerValue" width="80%%" colspan=4>%(product)s</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%%">Date:</td>
- <td class="headerValue" width="20%%">%(date)s</td>
- <td width="20%%"></td>
- <td class="headerItem" width="20%%">Instrumented&nbsp;lines:</td>
- <td class="headerValue" width="20%%">%(total_lines)s</td>
- </tr>
- <tr>
- <td class="headerItem" width="20%%">Code&nbsp;covered:</td>
- <td class="headerValue" width="20%%">%(covered_lines)s</td>
- <td width="20%%"></td>
- <td class="headerItem" width="20%%">Executed&nbsp;lines:</td>
- <td class="headerValue" width="20%%">%(total_executed)s</td>
- </tr>
- </table>
- </td>
- </tr>
- <tr><td class="ruler"><img src="glass.png" width=3 height=3 alt=""></td></tr>
- </table>""" % vars())
- # disabled for now <tr><td><img src="%(image)s"></td></tr>
-
-def generate_table_item(file, name, total_lines, covered_lines):
- covered_precise = (covered_lines*100.0)/(total_lines or 1.0)
- covered = int(round(covered_precise))
- remainder = 100-covered
- (image,perClass,numClass) = coverage_icon(covered_precise)
- site = "%s.html" % name.replace(os.path.sep,'__')
- file.write("""
- <tr>
- <td class="coverFile"><a href="%(site)s">%(name)s</a></td>
- <td class="coverBar" align="center">
- <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="%(image)s" width=%(covered)s height=10 alt="%(covered_precise).2f"><img src="snow.png" width=%(remainder)s height=10 alt="%(covered_precise).2f"></td></tr></table>
- </td>
- <td class="%(perClass)s">%(covered_precise).2f&nbsp;%%</td>
- <td class="%(numClass)s">%(covered_lines)s&nbsp;/&nbsp;%(total_lines)s&nbsp;lines</td>
- </tr>
- """ % vars())
-
-def generate_table_header_start(file):
- file.write("""<center>
- <table width="80%%" cellpadding=2 cellspacing=1 border=0>
-
- <tr>
- <td width="50%%"><br></td>
- <td width="15%%"></td>
- <td width="15%%"></td>
- <td width="20%%"></td>
- </tr>
-
- <tr>
- <td class="tableHead">Directory&nbsp;name</td>
- <td class="tableHead" colspan=3>Coverage</td>
- </tr>
- """)
-
-def coverage_icon(percent):
- if percent < level_LOW:
- return ("ruby.png", "coverPerLo", "coverNumLo")
- elif percent < level_MEDIUM:
- return ("amber.png", "coverPerMed", "coverNumMed")
- else:
- return ("emerald.png", "coverPerHi", "coverNumHi")
-
-def replace(text, *pairs):
- """
- From pydoc... almost identical at least
- """
- from string import split, join
- while pairs:
- (a,b) = pairs[0]
- text = join(split(text, a), b)
- pairs = pairs[1:]
- return text
-
-def escape(text):
- """
- Escape string to be conform HTML
- """
- return replace(text,
- ('&', '&amp;'),
- ('<', '&lt;' ),
- ('>', '&gt;' ) )
-
-def generate_table_header_end(file):
- file.write("""</table>
- </center>""")
-
-def write_title_page(dest_dir,plot_files, last_time, last_tot_lines, last_tot_covered, dir_series):
- """
- Write the index.html with a overview of each directory
- """
- index= create_page(dest_dir, "index.html")
- generate_header(index, last_time, last_tot_lines, last_tot_covered, "directory", "images/Total.png")
- # Create the directory overview
- generate_table_header_start(index)
- dirs = dir_series.keys()
- dirs.sort()
- for dir in dirs:
- (dir_files, total_lines, covered_lines,_) = dir_series[dir][-1]
- generate_table_item(index, dir, total_lines, covered_lines)
- generate_table_header_end(index)
-
- index.write("""</BODY></HTML>""")
- index.close()
-
-def write_directory_site(dest_dir, plot_files, dir_name, last_time, dir_series, file_series):
- escaped_dir = dir_name.replace(os.path.sep,'__')
- site = create_page(dest_dir, "%s.html" % escaped_dir)
- (_,tot_lines,tot_covered,files) = dir_series[dir_name][-1]
- generate_header(site, last_time, tot_lines, tot_covered, "directory - %s" % dir_name, "images/%s.png" % escaped_dir)
-
- files.sort()
-
- generate_table_header_start(site)
- for file in files:
- (lines,covered) = file_series[file][-1]
- generate_table_item(site, file, lines, covered)
-
- generate_table_header_end(site)
- site.write("""</BODY></HTML>""")
- site.close()
-
-def write_file_site(dest_dir, plot_files, file_name, last_time, data_dir, last_id, file_series):
- escaped_name = file_name.replace(os.path.sep,'__')
- site = create_page(dest_dir, "%s.html" % escaped_name)
- (tot_lines,tot_covered) = file_series[file_name][-1]
- generate_header(site, last_time, tot_lines, tot_covered, "file - %s" % file_name, "images/%s.png" % escaped_name)
-
- path = "%s/%s.annotated%s" % (data_dir,last_id,file_name)
-
- # In contrast to the lcov we want to show files that have been compiled
- # but have not been tested at all. This means we have sourcefiles with 0
- # lines covered in the path but they are not lcov files.
- # To identify them we check the first line now. If we see that we can
- # continue
- # -: 0:Source:
- try:
- file = open(path, "r")
- except:
- return
- all_lines = file.read().split("\n")
-
- # Convert the gcov file to HTML if we have a chanche to do so
- # Scan each line and see if it was covered or not and escape the
- # text
- if len(all_lines) == 0 or not "-: 0:Source:" in all_lines[0]:
- site.write("<p>The file was not excercised</p>")
- else:
- site.write("""</br><table cellpadding=0 cellspacing=0 border=0>
- <tr>
- <td><br></td>
- </tr>
- <tr>
- <td><pre class="source">
- """)
- for line in all_lines:
- split_line = line.split(':',2)
- # e.g. at the EOF
- if len(split_line) == 1:
- continue
- line_number = split_line[1].strip()
- if line_number == "0":
- continue
- covered = 15*" "
- end = ""
- if "#####" in split_line[0]:
- covered = '<span class="lineNoCov">%15s' % "0"
- end = "</span>"
- elif split_line[0].strip() != "-":
- covered = '<span class="lineCov">%15s' % split_line[0].strip()
- end = "</span>"
-
- escaped_line = escape(split_line[2])
- str = '<span class="lineNum">%(line_number)10s </span>%(covered)s: %(escaped_line)s%(end)s\n' % vars()
- site.write(str)
- site.write("</pre></td></tr></table>")
- site.write("</BODY></HTML>")
- site.close()
-
-def main(progname, args):
- if len(args) != 2:
- sys.exit("Usage: %s DATADIR OUTDIR" % progname)
-
- branch = "WebKit from trunk"
- datadir, outdir = args
-
- # First, load in all data from the data directory.
- data = []
- for datapath in glob.glob(os.path.join(datadir, "*.csv")):
- data.append(read_csv(datapath))
- # Sort by time
- data.sort()
-
- # Calculate time series for each file.
- times = [sample[0] for sample in data]
- times = [datetime.datetime.utcfromtimestamp(t) for t in times]
- times = m.date2num(times)
- all_files = {}
- all_dirs = {}
- for sample in data:
- t, i, tot_line, tot_cover, per_file, per_dir = sample
- all_files.update(per_file)
- all_dirs.update(per_dir)
- total_series = []
- file_serieses = dict([[k, [(0, 0)] * len(times)] for k in all_files.keys()])
- dir_serieses = dict([[k, [(0, 0, 0, [])] * len(times)] for k in all_dirs.keys()])
- data_idx = 0
- for sample in data:
- t, i, tot_line, tot_cover, per_file, per_dir = sample
- total_series.append([tot_line, tot_cover])
- for f, covinfo in per_file.items():
- file_serieses[f][data_idx] = covinfo
- for f, covinfo in per_dir.items():
- dir_serieses[f][data_idx] = covinfo
- data_idx += 1
-
-
- # Okay, ready to start outputting. First make sure our directories
- # exist.
- if not os.path.exists(outdir):
- os.makedirs(outdir)
- rel_imgdir = "images"
- imgdir = os.path.join(outdir, rel_imgdir)
- if not os.path.exists(imgdir):
- os.makedirs(imgdir)
-
- # Now plot the actual graphs
- plot_files = {}
- #plot_files["Total"] = plot_coverage(times, total_series, imgdir, "Total")
- #for dir, series in dir_serieses.items():
- # plot_files[dir] = plot_coverage(times, map(lambda (a,b,c,d):(b,c), series), imgdir, dir)
- #for f, series in file_serieses.items():
- # plot_files[f] = plot_coverage(times, series, imgdir, f)
-
- # And look up the latest revision id, and coverage information
- last_time, last_id, last_tot_lines, last_tot_covered = data[-1][:4]
-
- # Now start generating our html file
- copy_files(outdir)
- write_title_page(outdir, plot_files, last_time, last_tot_lines, last_tot_covered, dir_serieses)
-
- dir_keys = dir_serieses.keys()
- dir_keys.sort()
- for dir_name in dir_keys:
- write_directory_site(outdir, plot_files, dir_name, last_time, dir_serieses, file_serieses)
-
- file_keys = file_serieses.keys()
- for file_name in file_keys:
- write_file_site(outdir, plot_files, file_name, last_time, datadir, last_id, file_serieses)
-
-def read_csv(path):
- r = csv.reader(open(path, "r"))
- # First line is id, time
- for row in r:
- id, time_str = row
- break
- time = int(float(time_str))
- # Rest of lines are path, total_lines, covered_lines
- per_file = {}
- per_dir = {}
- grand_total_lines, grand_covered_lines = 0, 0
- for row in r:
- path, total_lines_str, covered_lines_str = row
- total_lines = int(total_lines_str)
- covered_lines = int(covered_lines_str)
- grand_total_lines += total_lines
- grand_covered_lines += covered_lines
- per_file[path] = [total_lines, covered_lines]
-
- # Update dir statistics
- dirname = os.path.dirname(path)
- if not dirname in per_dir:
- per_dir[dirname] = (0,0,0,[])
- (dir_files,dir_total_lines,dir_covered_lines, files) = per_dir[dirname]
- dir_files += 1
- dir_total_lines += total_lines
- dir_covered_lines += covered_lines
- files.append(path)
- per_dir[dirname] = (dir_files,dir_total_lines,dir_covered_lines,files)
- return [time, id, grand_total_lines, grand_covered_lines, per_file, per_dir]
-
-
-def plot_coverage(times, series, imgdir, name):
- percentages = [cov * 100.0 / (tot or 1) for tot, cov in series]
- m.plot_date(times, percentages, "b-")
- m.plot_date(times, percentages, "bo")
- m.title(name)
- m.ylim(0, 100)
- m.xlabel("Date")
- m.ylabel("Statement Coverage (%)")
- outfile_base = name.replace("/", "__") + ".png"
- outfile = os.path.join(imgdir, outfile_base)
- m.savefig(outfile, dpi=75)
- m.close()
- return outfile_base
-
-
-if __name__ == "__main__":
- import sys
- main(sys.argv[0], sys.argv[1:])
diff --git a/WebKitTools/CodeCoverage/ruby.png b/WebKitTools/CodeCoverage/ruby.png
deleted file mode 100644
index a582d35..0000000
--- a/WebKitTools/CodeCoverage/ruby.png
+++ /dev/null
Binary files differ
diff --git a/WebKitTools/CodeCoverage/run-generate-coverage-data b/WebKitTools/CodeCoverage/run-generate-coverage-data
deleted file mode 100644
index a87da1d..0000000
--- a/WebKitTools/CodeCoverage/run-generate-coverage-data
+++ /dev/null
@@ -1,240 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (C) 2004, 2005, 2006 Nathaniel Smith
-# Copyright (C) 2007 Holger Hans Peter Freyther
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import os, sys
-
-# from BitBake
-def mkdirhier(dir):
- """Create a directory like 'mkdir -p', but does not complain if
- directory already exists like os.makedirs
- """
- try:
- os.makedirs(dir)
- except OSError, e:
- if e.errno != 17: raise e
-
-def collect_base(src,match_array):
- """
- Collect all files that match the match_array.
- """
-
- sources = []
- for root, dirs, files in os.walk(src):
- if ".svn" in root:
- continue
-
- for file in files:
- base,ext = os.path.splitext(file)
- if ext in match_array:
- sources.append( os.path.join(root, file) )
-
- return sources
-
-def collect_depends(src):
- return collect_base(src, [".d"])
-
-def parse_dependency_file(src, base_dir, black_list):
- """
- Parse the .d files of the gcc
-
- Wow, the first time os.path.join is doing the right thing. We might
- have a relative path in the depends using os.path.join(dirname of .d, dep)
- we will end up in
- """
- file = open(src)
- file = file.read()
- file = file.replace('\\', '').replace('\n', '')
-
- # We now have object: dependencies splitted
- ar = file.split(':', 1)
- obj = ar[0].strip()
- dir = os.path.dirname(obj)
- deps = ar[1].split(' ')
-
- # Remove files outside WebKit, make path absolute
- deps = filter(lambda x: base_dir in x, deps)
- deps = map(lambda x: os.path.abspath(os.path.join(dir, x)), deps)
- return (obj, dir, deps)
-
-def collect_cov(base_path,targets):
- """
- Collect gcov files, collect_sources is not used as it also creates
- dirs and needs to do substituting.
- Actually we will build a mapping from source file to gcov files of
- interest. This is because we could have bytestream.h in many different
- subdirectories. And we would endup with bla.cpp##bytestream.h and we
- do not know which bytestream file was tested
- """
- def find_source_file(root,cov_file):
- """ Find a Source line or crash
-
- '#Users#ich#projekte#src#threadmessage.cpp###space#dports#include#qt3#qstring.h.gcov'
- '#Users#ich#projekte#src#threadmessage.cpp##..#^#src#threadmessage.cpp.gcov'
-
- ### is absolute path
- ##..#^# is relative path... well a gcov bug as well
- ## normal split file in the same directory
- """
- if '###' in cov_file:
- split = cov_file.split('###')
- if not len(split) == 2:
- raise "Unexpected split result"
- filepath = split[1][:-5].replace('#',os.path.sep)
- return os.path.join(os.path.sep,filepath)
- elif '##..#^#' in cov_file:
- split = cov_file.split('##..#^#')
- if not len(split) == 2:
- raise "Unexpected split result"
- filepath = split[1][:-5].replace('#',os.path.sep)
- return os.path.abspath(os.path.join(root,os.path.pardir,os.path.pardir,filepath))
- elif '##' in cov_file:
- split = cov_file.split('##')
- if not len(split) == 2:
- raise "Unexpected split result"
- filepath = split[1][:-5].replace('#',os.path.sep)
- return os.path.abspath(os.path.join(root,filepath))
- elif '#' in cov_file:
- # wow a not broken gcov on OSX
- basename=os.path.basename(cov_file).replace('#',os.path.sep)[:-5]
- return os.path.abspath(os.path.join(root,basename))
-
- else:
- raise "No source found %s" % cov_file
-
- def sanitize_path(path):
- """
- Well fix up paths once again /usr/lib/gcc/i486-linux-gnu/4.1.2/^/^/^/^/include/c++/4.1.2/bits/stl_pair.h
- according to gcov '^' is a relative path, we will now build one from this one. Somehow it depends
- on the gcov version if .. really gets replaced to ^....
- """
- import os
- split = path.split(os.path.sep)
- str = ""
- for part in split:
- if part == '':
- str = os.path.sep
- elif part == '^':
- str = "%s..%s" % (str,os.path.sep)
- else:
- str = "%s%s%s" % (str,part,os.path.sep)
- return os.path.abspath(str)
-
-
- gcov = {}
- for root, dirs, files in os.walk(base_path):
- if ".svn" in root:
- continue
- for file in files:
- base,ext = os.path.splitext(file)
- if ext in [".gcov"]:
- try:
- cov = os.path.join(root, file)
- src = find_source_file( root, cov )
- src = sanitize_path( src )
-
- if not src in gcov:
- gcov[src] = []
- gcov[src].append( cov )
- except Exception,e:
- print "Exception on ", e
- #import sys
- #sys.exit(0)
- pass
-
- #print gcov
- return gcov
-
-def generate_covs(candidates):
- """
- Generate gcov files in the right directory
-
- candidtaes contains the directories we have used when
- building. Each directory contains a set of files we will
- try to generate gcov files for.
- """
- print candidates.keys()
- for dir in candidates.keys():
- print "Trying in %s" % (dir)
- for dep in candidates[dir].keys():
- cmd = "cd %s; gcov -p -l %s" % (dir, dep)
- os.system("%s > /dev/null 2>&1 " % cmd)
-
-
-def analyze_coverage(sources,data,dirs,runid,base):
- """
- sources actual source files relative to src_dir e.g kdelibs/kdecore/klibloader.cpp
- data Where to put the stuff
- dirs Where to take a look for gcov files
- base The base directory for files. All files not inside base will be ignored
- """
- import cov
- print base
- gcov = collect_cov(base,dirs)
- result = cov.analyze_coverage(gcov, sources, runid, data, base)
- print result
-
-if __name__ == "__main__":
- #global targets
- if not len(sys.argv) == 3:
- print "This script needs three parameters"
- print "Call it with generate_cov RUNID ResultsDir"
- sys.exit(-1)
- runid = sys.argv[1]
- results = sys.argv[2]
-
- # create directories for out result
- mkdirhier(results)
-
- print "Collection Sources and preparing data tree"
- base_dir = os.path.abspath(os.path.curdir)
- depends = collect_depends(base_dir)
- candidates = map(lambda x: parse_dependency_file(x,base_dir,[]), depends)
-
- # Build a number of sources from the candidates. This is a Set for the poor
- # Two level dict. One for
- dirs = {}
- files = {}
- for (_,dir,deps) in candidates:
- if not dir in dirs:
- dirs[dir] = {}
- for dep in deps:
- if not dep in dirs[dir]:
- dirs[dir][dep] = dep
- if not dep in files:
- files[dep] = dep
-
- sources = files.keys()
-
- print "Found %d candidates" % (len(sources))
- print "Will run inefficient generation of gcov files now"
- generate_covs(dirs)
-
- print "Analyzing Gcov"
- analyze_coverage(sources, results, dirs.keys(), runid, base_dir)
- print "Done"
diff --git a/WebKitTools/CodeCoverage/snow.png b/WebKitTools/CodeCoverage/snow.png
deleted file mode 100644
index a4ba373..0000000
--- a/WebKitTools/CodeCoverage/snow.png
+++ /dev/null
Binary files differ
diff --git a/WebKitTools/CygwinDownloader/cygwin-downloader.py b/WebKitTools/CygwinDownloader/cygwin-downloader.py
deleted file mode 100644
index d87e0da..0000000
--- a/WebKitTools/CygwinDownloader/cygwin-downloader.py
+++ /dev/null
@@ -1,157 +0,0 @@
-#!/usr/bin/env python
-
-import os, random, sys, time, urllib
-
-#
-# Options
-#
-
-dry_run = len(sys.argv) > 1 and "--dry-run" in set(sys.argv[1:])
-quiet = len(sys.argv) > 1 and "--quiet" in set(sys.argv[1:])
-
-#
-# Functions and constants
-#
-
-def download_progress_hook(block_count, block_size, total_blocks):
- if quiet or random.random() > 0.5:
- return
- sys.stdout.write(".")
- sys.stdout.flush()
-
-def download_url_to_file(url, file, message):
- if not quiet:
- print message + " ",
- if not dry_run:
- dir = os.path.dirname(file)
- if len(dir) and not os.path.exists(dir):
- os.makedirs(dir)
- urllib.urlretrieve(url, file, download_progress_hook)
- if not quiet:
- print
-
-# This is mostly just the list of North America http mirrors from http://cygwin.com/mirrors.html,
-# but a few have been removed that seemed unresponsive from Cupertino.
-mirror_servers = ["http://cygwin.elite-systems.org/",
- "http://mirror.mcs.anl.gov/cygwin/",
- "http://cygwin.osuosl.org/",
- "http://mirrors.kernel.org/sourceware/cygwin/",
- "http://mirrors.xmission.com/cygwin/",
- "http://sourceware.mirrors.tds.net/pub/sourceware.org/cygwin/"]
-
-package_mirror_url = mirror_servers[random.choice(range(len(mirror_servers)))]
-
-def download_package(package, message):
- download_url_to_file(package_mirror_url + package["path"], package["path"], message)
-
-required_packages = frozenset(["apache",
- "bc",
- "bison",
- "curl",
- "diffutils",
- "e2fsprogs",
- "emacs",
- "flex",
- "gcc",
- "gperf",
- "keychain",
- "make",
- "nano",
- "openssh",
- "patch",
- "perl",
- "perl-libwin32",
- "python",
- "rebase",
- "rsync",
- "ruby",
- "subversion",
- "unzip",
- "vim",
- "zip"])
-
-#
-# Main
-#
-
-print "Using Cygwin mirror server " + package_mirror_url + " to download setup.ini..."
-
-urllib.urlretrieve(package_mirror_url + "setup.ini", "setup.ini.orig")
-
-downloaded_packages_file_path = "setup.ini.orig"
-downloaded_packages_file = file(downloaded_packages_file_path, "r")
-if not dry_run:
- modified_packages_file = file("setup.ini", "w")
-
-packages = {}
-current_package = ''
-for line in downloaded_packages_file.readlines():
- if line[0] == "@":
- current_package = line[2:-1]
- packages[current_package] = {"name": current_package, "needs_download": False, "requires": [], "path": ""}
- elif line[:10] == "category: ":
- if current_package in required_packages:
- line = "category: Base\n"
- if "Base" in set(line[10:-1].split()):
- packages[current_package]["needs_download"] = True
- elif line[:10] == "requires: ":
- packages[current_package]["requires"] = line[10:].split()
- packages[current_package]["requires"].sort()
- elif line[:9] == "install: " and not len(packages[current_package]["path"]):
- end_of_path = line.find(" ", 9)
- if end_of_path != -1:
- packages[current_package]["path"] = line[9:end_of_path]
- if not dry_run:
- modified_packages_file.write(line)
-
-downloaded_packages_file.close()
-os.remove(downloaded_packages_file_path)
-if not dry_run:
- modified_packages_file.close()
-
-names_to_download = set()
-package_names = packages.keys()
-package_names.sort()
-
-def add_package_and_dependencies(name):
- if name in names_to_download:
- return
- if not name in packages:
- return
- packages[name]["needs_download"] = True
- names_to_download.add(name)
- for dep in packages[name]["requires"]:
- add_package_and_dependencies(dep)
-
-for name in package_names:
- if packages[name]["needs_download"]:
- add_package_and_dependencies(name)
-
-downloaded_so_far = 0
-for name in package_names:
- if packages[name]["needs_download"]:
- downloaded_so_far += 1
- download_package(packages[name], "Downloading package %3d of %3d (%s)" % (downloaded_so_far, len(names_to_download), name))
-
-download_url_to_file("http://cygwin.com/setup.exe", "setup.exe", "Downloading setup.exe")
-
-seconds_to_sleep = 10
-
-print """
-Finished downloading Cygwin. In %d seconds,
-I will run setup.exe. Select the "Install
-from Local Directory" option and browse to
-"%s"
-when asked for the "Local Package Directory".
-""" % (seconds_to_sleep, os.getcwd())
-
-
-while seconds_to_sleep > 0:
- print "%d..." % seconds_to_sleep,
- sys.stdout.flush()
- time.sleep(1)
- seconds_to_sleep -= 1
-print
-
-if not dry_run:
- os.execl("setup.exe")
diff --git a/WebKitTools/CygwinDownloader/cygwin-downloader.zip b/WebKitTools/CygwinDownloader/cygwin-downloader.zip
deleted file mode 100644
index 9b9c0f0..0000000
--- a/WebKitTools/CygwinDownloader/cygwin-downloader.zip
+++ /dev/null
Binary files differ
diff --git a/WebKitTools/CygwinDownloader/make-zip.sh b/WebKitTools/CygwinDownloader/make-zip.sh
deleted file mode 100755
index 4a389a9..0000000
--- a/WebKitTools/CygwinDownloader/make-zip.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/sh
-
-PYTHONEXE=$(cygpath -u "${SYSTEMDRIVE}\\Python25\\python.exe")
-ZIPNAME="cygwin-downloader.zip"
-
-if [[ ! -f "${PYTHONEXE}" ]]; then
- echo "Couldn't find python.exe at ${PYTHONEXE}" 1>&2
- exit 1
-fi
-
-"${PYTHONEXE}" setup.py py2exe || {
- echo "Failed executing setup.py" 1>&2
- exit 1
-}
-
-rm -f "${ZIPNAME}"
-
-cd dist
-
-zip -r ../"${ZIPNAME}" * || {
- echo "Failed to create cygwin-downloader" 1>&2
- exit 1
-}
-
-cd ..
-
-rm -rf build dist || {
- echo "Failed to cleanup cygwin-downloader and build directories" 1>&2
- exit 1
-}
diff --git a/WebKitTools/CygwinDownloader/setup.py b/WebKitTools/CygwinDownloader/setup.py
deleted file mode 100644
index c3171d9..0000000
--- a/WebKitTools/CygwinDownloader/setup.py
+++ /dev/null
@@ -1,4 +0,0 @@
-from distutils.core import setup
-import py2exe
-
-setup(console=['cygwin-downloader.py'])
diff --git a/WebKitTools/DrawTest/AppDelegate.h b/WebKitTools/DrawTest/AppDelegate.h
deleted file mode 100644
index 7103bb8..0000000
--- a/WebKitTools/DrawTest/AppDelegate.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <Cocoa/Cocoa.h>
-
-
-@interface AppDelegate : NSObject {
- IBOutlet NSWindow *svgImageRepTestWindow;
-}
-
-- (IBAction)showTestsPanel:(id)sender;
-- (IBAction)showImageRepTestWindow:(id)sender;
-- (IBAction)showInspectorPanel:(id)sender;
-
-@end
diff --git a/WebKitTools/DrawTest/AppDelegate.m b/WebKitTools/DrawTest/AppDelegate.m
deleted file mode 100644
index 0f20b35..0000000
--- a/WebKitTools/DrawTest/AppDelegate.m
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#import "AppDelegate.h"
-
-#import "TestController.h"
-#import "DrawTestInspectorController.h"
-
-@implementation AppDelegate
-
-- (IBAction)showTestsPanel:(id)sender
-{
- [[TestController sharedController] showTestsPanel:sender];
-}
-
-- (IBAction)showImageRepTestWindow:(id)sender
-{
- [svgImageRepTestWindow makeKeyAndOrderFront:sender];
-}
-
-- (IBAction)showInspectorPanel:(id)sender
-{
- [[DrawTestInspectorController sharedInstance] showInspectorPanel:sender];
-}
-
-- (BOOL)applicationShouldOpenUntitledFile:(NSApplication *)sender
-{
- return NO;
-}
-
-@end
diff --git a/WebKitTools/DrawTest/DrawTest.xcodeproj/project.pbxproj b/WebKitTools/DrawTest/DrawTest.xcodeproj/project.pbxproj
deleted file mode 100644
index 3ac995b..0000000
--- a/WebKitTools/DrawTest/DrawTest.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,387 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 42;
- objects = {
-
-/* Begin PBXBuildFile section */
- 78662E6D096B4E1600907EA7 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 78662E6C096B4E1600907EA7 /* WebKit.framework */; };
- 8D11072A0486CEB800E47090 /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 29B97318FDCFA39411CA2CEA /* MainMenu.nib */; };
- 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
- 8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };
- 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
- A8C006CF0898634600BA5114 /* SVGTest.m in Sources */ = {isa = PBXBuildFile; fileRef = A8C006B00898634600BA5114 /* SVGTest.m */; };
- A8C006D00898634600BA5114 /* ScalingImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = A8C006B20898634600BA5114 /* ScalingImageView.m */; };
- A8C006D20898634600BA5114 /* DrawTestView.m in Sources */ = {isa = PBXBuildFile; fileRef = A8C006B50898634600BA5114 /* DrawTestView.m */; };
- A8C006D30898634600BA5114 /* DrawTestToolbarController.m in Sources */ = {isa = PBXBuildFile; fileRef = A8C006B70898634600BA5114 /* DrawTestToolbarController.m */; };
- A8C006D40898634600BA5114 /* DrawTestInspectorController.m in Sources */ = {isa = PBXBuildFile; fileRef = A8C006BB0898634600BA5114 /* DrawTestInspectorController.m */; };
- A8C006D50898634600BA5114 /* DrawTestDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = A8C006BD0898634600BA5114 /* DrawTestDocument.m */; };
- A8C006E10898634600BA5114 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = A8C006CA0898634600BA5114 /* AppDelegate.m */; };
- A8C006E20898634600BA5114 /* TestViewerSplitView.m in Sources */ = {isa = PBXBuildFile; fileRef = A8C006CC0898634600BA5114 /* TestViewerSplitView.m */; };
- A8C006E30898634600BA5114 /* TestController.m in Sources */ = {isa = PBXBuildFile; fileRef = A8C006CE0898634600BA5114 /* TestController.m */; };
- A8C006F3089865E900BA5114 /* DrawTestDocument.nib in Resources */ = {isa = PBXBuildFile; fileRef = A8C006ED089865E900BA5114 /* DrawTestDocument.nib */; };
- A8C006F4089865E900BA5114 /* Inspector.nib in Resources */ = {isa = PBXBuildFile; fileRef = A8C006EF089865E900BA5114 /* Inspector.nib */; };
- A8C006F5089865E900BA5114 /* TestViewer.nib in Resources */ = {isa = PBXBuildFile; fileRef = A8C006F1089865E900BA5114 /* TestViewer.nib */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXFileReference section */
- 089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
- 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
- 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; };
- 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
- 29B97319FDCFA39411CA2CEA /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/MainMenu.nib; sourceTree = "<group>"; };
- 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
- 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
- 32CA4F630368D1EE00C91783 /* DrawTest_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DrawTest_Prefix.pch; sourceTree = "<group>"; };
- 78662E6C096B4E1600907EA7 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = WebKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
- 8D1107320486CEB800E47090 /* DrawTest.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DrawTest.app; sourceTree = BUILT_PRODUCTS_DIR; };
- A8C006AF0898634600BA5114 /* TestController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestController.h; sourceTree = "<group>"; };
- A8C006B00898634600BA5114 /* SVGTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SVGTest.m; sourceTree = "<group>"; };
- A8C006B10898634600BA5114 /* SVGTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGTest.h; sourceTree = "<group>"; };
- A8C006B20898634600BA5114 /* ScalingImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ScalingImageView.m; sourceTree = "<group>"; };
- A8C006B30898634600BA5114 /* ScalingImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScalingImageView.h; sourceTree = "<group>"; };
- A8C006B50898634600BA5114 /* DrawTestView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DrawTestView.m; sourceTree = "<group>"; };
- A8C006B60898634600BA5114 /* DrawTestView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DrawTestView.h; sourceTree = "<group>"; };
- A8C006B70898634600BA5114 /* DrawTestToolbarController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DrawTestToolbarController.m; sourceTree = "<group>"; };
- A8C006B80898634600BA5114 /* DrawTestDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DrawTestDocument.h; sourceTree = "<group>"; };
- A8C006BA0898634600BA5114 /* DrawTestToolbarController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DrawTestToolbarController.h; sourceTree = "<group>"; };
- A8C006BB0898634600BA5114 /* DrawTestInspectorController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DrawTestInspectorController.m; sourceTree = "<group>"; };
- A8C006BC0898634600BA5114 /* DrawTestInspectorController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DrawTestInspectorController.h; sourceTree = "<group>"; };
- A8C006BD0898634600BA5114 /* DrawTestDocument.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DrawTestDocument.m; sourceTree = "<group>"; };
- A8C006CA0898634600BA5114 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
- A8C006CB0898634600BA5114 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
- A8C006CC0898634600BA5114 /* TestViewerSplitView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestViewerSplitView.m; sourceTree = "<group>"; };
- A8C006CD0898634600BA5114 /* TestViewerSplitView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestViewerSplitView.h; sourceTree = "<group>"; };
- A8C006CE0898634600BA5114 /* TestController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestController.m; sourceTree = "<group>"; };
- A8C006EE089865E900BA5114 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/DrawTestDocument.nib; sourceTree = "<group>"; };
- A8C006F0089865E900BA5114 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Inspector.nib; sourceTree = "<group>"; };
- A8C006F2089865E900BA5114 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/TestViewer.nib; sourceTree = "<group>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 8D11072E0486CEB800E47090 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
- 78662E6D096B4E1600907EA7 /* WebKit.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 080E96DDFE201D6D7F000001 /* Classes */ = {
- isa = PBXGroup;
- children = (
- A8C006E5089863A100BA5114 /* Viewer */,
- A8C006E6089863B100BA5114 /* Test Browser */,
- A8C006CA0898634600BA5114 /* AppDelegate.m */,
- A8C006CB0898634600BA5114 /* AppDelegate.h */,
- A8C006B20898634600BA5114 /* ScalingImageView.m */,
- A8C006B30898634600BA5114 /* ScalingImageView.h */,
- );
- name = Classes;
- sourceTree = "<group>";
- };
- 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {
- isa = PBXGroup;
- children = (
- 78662E6C096B4E1600907EA7 /* WebKit.framework */,
- 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
- );
- name = "Linked Frameworks";
- sourceTree = "<group>";
- };
- 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = {
- isa = PBXGroup;
- children = (
- 29B97324FDCFA39411CA2CEA /* AppKit.framework */,
- 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */,
- 29B97325FDCFA39411CA2CEA /* Foundation.framework */,
- );
- name = "Other Frameworks";
- sourceTree = "<group>";
- };
- 19C28FACFE9D520D11CA2CBB /* Products */ = {
- isa = PBXGroup;
- children = (
- 8D1107320486CEB800E47090 /* DrawTest.app */,
- );
- name = Products;
- sourceTree = "<group>";
- };
- 29B97314FDCFA39411CA2CEA /* DrawTest */ = {
- isa = PBXGroup;
- children = (
- 080E96DDFE201D6D7F000001 /* Classes */,
- 29B97315FDCFA39411CA2CEA /* Other Sources */,
- 29B97317FDCFA39411CA2CEA /* Resources */,
- 29B97323FDCFA39411CA2CEA /* Frameworks */,
- 19C28FACFE9D520D11CA2CBB /* Products */,
- );
- name = DrawTest;
- sourceTree = "<group>";
- };
- 29B97315FDCFA39411CA2CEA /* Other Sources */ = {
- isa = PBXGroup;
- children = (
- 32CA4F630368D1EE00C91783 /* DrawTest_Prefix.pch */,
- 29B97316FDCFA39411CA2CEA /* main.m */,
- );
- name = "Other Sources";
- sourceTree = "<group>";
- };
- 29B97317FDCFA39411CA2CEA /* Resources */ = {
- isa = PBXGroup;
- children = (
- 8D1107310486CEB800E47090 /* Info.plist */,
- 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */,
- 29B97318FDCFA39411CA2CEA /* MainMenu.nib */,
- A8C006ED089865E900BA5114 /* DrawTestDocument.nib */,
- A8C006EF089865E900BA5114 /* Inspector.nib */,
- A8C006F1089865E900BA5114 /* TestViewer.nib */,
- );
- name = Resources;
- sourceTree = "<group>";
- };
- 29B97323FDCFA39411CA2CEA /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,
- 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */,
- );
- name = Frameworks;
- sourceTree = "<group>";
- };
- A8C006E5089863A100BA5114 /* Viewer */ = {
- isa = PBXGroup;
- children = (
- A8C006BA0898634600BA5114 /* DrawTestToolbarController.h */,
- A8C006B70898634600BA5114 /* DrawTestToolbarController.m */,
- A8C006B60898634600BA5114 /* DrawTestView.h */,
- A8C006B50898634600BA5114 /* DrawTestView.m */,
- A8C006B80898634600BA5114 /* DrawTestDocument.h */,
- A8C006BD0898634600BA5114 /* DrawTestDocument.m */,
- );
- name = Viewer;
- sourceTree = "<group>";
- };
- A8C006E6089863B100BA5114 /* Test Browser */ = {
- isa = PBXGroup;
- children = (
- A8C006B00898634600BA5114 /* SVGTest.m */,
- A8C006B10898634600BA5114 /* SVGTest.h */,
- A8C006BB0898634600BA5114 /* DrawTestInspectorController.m */,
- A8C006BC0898634600BA5114 /* DrawTestInspectorController.h */,
- A8C006AF0898634600BA5114 /* TestController.h */,
- A8C006CE0898634600BA5114 /* TestController.m */,
- A8C006CC0898634600BA5114 /* TestViewerSplitView.m */,
- A8C006CD0898634600BA5114 /* TestViewerSplitView.h */,
- );
- name = "Test Browser";
- sourceTree = "<group>";
- };
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
- 8D1107260486CEB800E47090 /* DrawTest */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = A8C006740898624E00BA5114 /* Build configuration list for PBXNativeTarget "DrawTest" */;
- buildPhases = (
- 8D1107290486CEB800E47090 /* Resources */,
- 8D11072C0486CEB800E47090 /* Sources */,
- 8D11072E0486CEB800E47090 /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = DrawTest;
- productInstallPath = "$(HOME)/Applications";
- productName = DrawTest;
- productReference = 8D1107320486CEB800E47090 /* DrawTest.app */;
- productType = "com.apple.product-type.application";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 29B97313FDCFA39411CA2CEA /* Project object */ = {
- isa = PBXProject;
- buildConfigurationList = A8C006780898624E00BA5114 /* Build configuration list for PBXProject "DrawTest" */;
- compatibilityVersion = "Xcode 2.4";
- hasScannedForEncodings = 1;
- mainGroup = 29B97314FDCFA39411CA2CEA /* DrawTest */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- 8D1107260486CEB800E47090 /* DrawTest */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- 8D1107290486CEB800E47090 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- A8C006F3089865E900BA5114 /* DrawTestDocument.nib in Resources */,
- 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */,
- A8C006F4089865E900BA5114 /* Inspector.nib in Resources */,
- 8D11072A0486CEB800E47090 /* MainMenu.nib in Resources */,
- A8C006F5089865E900BA5114 /* TestViewer.nib in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 8D11072C0486CEB800E47090 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- A8C006E10898634600BA5114 /* AppDelegate.m in Sources */,
- A8C006D50898634600BA5114 /* DrawTestDocument.m in Sources */,
- A8C006D40898634600BA5114 /* DrawTestInspectorController.m in Sources */,
- A8C006D30898634600BA5114 /* DrawTestToolbarController.m in Sources */,
- A8C006D20898634600BA5114 /* DrawTestView.m in Sources */,
- A8C006CF0898634600BA5114 /* SVGTest.m in Sources */,
- A8C006D00898634600BA5114 /* ScalingImageView.m in Sources */,
- A8C006E30898634600BA5114 /* TestController.m in Sources */,
- A8C006E20898634600BA5114 /* TestViewerSplitView.m in Sources */,
- 8D11072D0486CEB800E47090 /* main.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXVariantGroup section */
- 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = {
- isa = PBXVariantGroup;
- children = (
- 089C165DFE840E0CC02AAC07 /* English */,
- );
- name = InfoPlist.strings;
- sourceTree = "<group>";
- };
- 29B97318FDCFA39411CA2CEA /* MainMenu.nib */ = {
- isa = PBXVariantGroup;
- children = (
- 29B97319FDCFA39411CA2CEA /* English */,
- );
- name = MainMenu.nib;
- sourceTree = "<group>";
- };
- A8C006ED089865E900BA5114 /* DrawTestDocument.nib */ = {
- isa = PBXVariantGroup;
- children = (
- A8C006EE089865E900BA5114 /* English */,
- );
- name = DrawTestDocument.nib;
- sourceTree = "<group>";
- };
- A8C006EF089865E900BA5114 /* Inspector.nib */ = {
- isa = PBXVariantGroup;
- children = (
- A8C006F0089865E900BA5114 /* English */,
- );
- name = Inspector.nib;
- sourceTree = "<group>";
- };
- A8C006F1089865E900BA5114 /* TestViewer.nib */ = {
- isa = PBXVariantGroup;
- children = (
- A8C006F2089865E900BA5114 /* English */,
- );
- name = TestViewer.nib;
- sourceTree = "<group>";
- };
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
- A8C006750898624E00BA5114 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = NO;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_ENABLE_FIX_AND_CONTINUE = YES;
- GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = DrawTest_Prefix.pch;
- GCC_TREAT_WARNINGS_AS_ERRORS = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- INFOPLIST_FILE = Info.plist;
- INSTALL_PATH = "$(HOME)/Applications";
- PREBINDING = NO;
- PRODUCT_NAME = DrawTest;
- WRAPPER_EXTENSION = app;
- ZERO_LINK = YES;
- };
- name = Debug;
- };
- A8C006760898624E00BA5114 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = YES;
- GCC_ENABLE_FIX_AND_CONTINUE = NO;
- GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = DrawTest_Prefix.pch;
- GCC_TREAT_WARNINGS_AS_ERRORS = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- INFOPLIST_FILE = Info.plist;
- INSTALL_PATH = "$(HOME)/Applications";
- PREBINDING = NO;
- PRODUCT_NAME = DrawTest;
- WRAPPER_EXTENSION = app;
- ZERO_LINK = NO;
- };
- name = Release;
- };
- A8C006790898624E00BA5114 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- DEBUG_INFORMATION_FORMAT = dwarf;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- };
- name = Debug;
- };
- A8C0067A0898624E00BA5114 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- DEBUG_INFORMATION_FORMAT = dwarf;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- A8C006740898624E00BA5114 /* Build configuration list for PBXNativeTarget "DrawTest" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- A8C006750898624E00BA5114 /* Debug */,
- A8C006760898624E00BA5114 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- A8C006780898624E00BA5114 /* Build configuration list for PBXProject "DrawTest" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- A8C006790898624E00BA5114 /* Debug */,
- A8C0067A0898624E00BA5114 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
-}
diff --git a/WebKitTools/DrawTest/DrawTestDocument.h b/WebKitTools/DrawTest/DrawTestDocument.h
deleted file mode 100644
index b0b16d9..0000000
--- a/WebKitTools/DrawTest/DrawTestDocument.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
- * Copyright (C) 2006 Nefaur Khandker <nefaurk@gmail.com> All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <Cocoa/Cocoa.h>
-
-@class DrawTestView;
-@class DrawTestToolbarController;
-
-@interface DrawTestDocument : NSDocument
-{
- IBOutlet DrawTestView *drawView;
- IBOutlet NSDrawer *debugDrawer;
-
- DrawTestToolbarController *toolbarController;
-}
-
-// Debug menu
-- (IBAction)dumpSVGToConsole:(id)sender;
-- (IBAction)toggleDebugDrawer:(id)sender;
-- (IBAction)runWindowResizeTest:(id)sender;
-
-@end
diff --git a/WebKitTools/DrawTest/DrawTestDocument.m b/WebKitTools/DrawTest/DrawTestDocument.m
deleted file mode 100644
index c71e7ad..0000000
--- a/WebKitTools/DrawTest/DrawTestDocument.m
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
- * Copyright (C) 2006 Nefaur Khandker <nefaurk@gmail.com> All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "DrawTestDocument.h"
-#import "DrawTestView.h"
-#import "DrawTestToolbarController.h"
-#import <WebKit/WebView.h>
-#import <WebKit/WebFrame.h>
-#import <WebKit/WebDataSource.h>
-
-@implementation DrawTestDocument
-
-- (id)initWithType:(NSString *)typeName error:(NSError **)outError
-{
- if (outError) {
- NSDictionary *errorInfo = [NSDictionary dictionaryWithObjectsAndKeys:
- @"No document could be created.", NSLocalizedDescriptionKey,
- @"New document creation not yet supported.", NSLocalizedFailureReasonErrorKey,
- nil];
- *outError = [NSError errorWithDomain:NSCocoaErrorDomain code:0 userInfo:errorInfo];
- }
- [self release];
- return nil;
-}
-
-- (void)dealloc
-{
- [toolbarController release];
- [super dealloc];
-}
-
-- (NSString *)windowNibName
-{
- return @"DrawTestDocument";
-}
-
-- (BOOL)readFromFile:(NSString *)filename ofType:(NSString *)docType
-{
- // TODO: Check the validity of the document before returning YES.
- return YES;
-}
-
-- (void)windowControllerDidLoadNib:(NSWindowController *)aController
-{
- [super windowControllerDidLoadNib:aController];
- toolbarController = [[DrawTestToolbarController alloc] initWithDrawView:drawView];
- [drawView setDocument:[self fileURL]];
-}
-
-- (IBAction)dumpSVGToConsole:(id)sender
-{
- WebDataSource* dataSource = [[drawView mainFrame] dataSource];
- NSLog(@"SVG Markup for file %@:\n%@", [self fileURL], [[dataSource representation] documentSource]);
-}
-
-- (IBAction)openSourceForSelection:(id)sender
-{
- // TODO: The "path" message (below) will not produce a valid pathname if we are dealing with a remote file.
- NSString *filename = [[self fileURL] path];
- [[NSWorkspace sharedWorkspace] openFile:filename withApplication:@"TextEdit"];
-}
-
-- (NSData *)dataRepresentationOfType:(NSString *)aType
-{
- WebDataSource* dataSource = [[drawView mainFrame] dataSource];
- return [dataSource data];
-}
-
-#pragma mark -
-#pragma mark Debug Methods
-
-- (IBAction)toggleDebugDrawer:(id)sender
-{
- [debugDrawer toggle:sender];
-}
-
-- (id)outlineView:(NSOutlineView *)outlineView child:(int)index ofItem:(id)item
-{
- return nil;
-}
-
-- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item
-{
- return NO;
-}
-
-- (int)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item
-{
- return 0;
-}
-
-- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item
-{
- return nil;
-}
-
-- (IBAction)runWindowResizeTest:(id)sender
-{
- NSWindow *window = [drawView window];
- NSScreen *screen = [window screen];
- float screenHeight = [screen visibleFrame].size.height;
- NSRect originalFrame = [window frame];
- // initial setup
- BOOL toolbarVisible = [[window toolbar] isVisible];
- if (toolbarVisible) [window toggleToolbarShown:self];
- [window setFrame:NSMakeRect(0,screenHeight-100,100,100) display:YES];
-
- // grab time.
- CFAbsoluteTime start = CFAbsoluteTimeGetCurrent();
-
- // run test
- for (int x = 0; x < 3; x++) {
- for (float size = 100; size < 500.f; size += 20.f) {
- [window setFrame:NSMakeRect(0, screenHeight-size, size, size) display:YES];
- }
- }
-
- double elapsed = CFAbsoluteTimeGetCurrent() - start;
-
- // log
- NSLog(@"Window resize test: %fs", elapsed);
-
- // restore
- if (toolbarVisible) [window toggleToolbarShown:self];
- [window setFrame:originalFrame display:YES];
-}
-
-@end
diff --git a/WebKitTools/DrawTest/DrawTestInspectorController.h b/WebKitTools/DrawTest/DrawTestInspectorController.h
deleted file mode 100644
index 43c06f0..0000000
--- a/WebKitTools/DrawTest/DrawTestInspectorController.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <Cocoa/Cocoa.h>
-
-
-@interface DrawTestInspectorController : NSObject {
- IBOutlet NSPanel *_inspectorPanel;
-}
-
-+ (id)sharedInstance;
-
-- (IBAction)showInspectorPanel:(id)sender;
-
-@end
diff --git a/WebKitTools/DrawTest/DrawTestInspectorController.m b/WebKitTools/DrawTest/DrawTestInspectorController.m
deleted file mode 100644
index 604bf03..0000000
--- a/WebKitTools/DrawTest/DrawTestInspectorController.m
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "DrawTestInspectorController.h"
-
-@implementation DrawTestInspectorController
-
-+ (id)sharedInstance
-{
- static DrawTestInspectorController *__sharedController = nil;
- if (!__sharedController) {
- __sharedController = [[self alloc] init];
- }
- return __sharedController;
-}
-
-- (IBAction)showInspectorPanel:(id)sender
-{
- if (!_inspectorPanel) {
- [NSBundle loadNibNamed:@"Inspector" owner:self];
- }
- [_inspectorPanel makeKeyAndOrderFront:self];
-}
-
-
-@end
diff --git a/WebKitTools/DrawTest/DrawTestToolbarController.h b/WebKitTools/DrawTest/DrawTestToolbarController.h
deleted file mode 100644
index a69fb57..0000000
--- a/WebKitTools/DrawTest/DrawTestToolbarController.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <Cocoa/Cocoa.h>
-
-@class WebView;
-
-@interface DrawTestToolbarController : NSObject {
- WebView *_drawView;
- NSMutableDictionary *_toolbarItems;
-}
-
-- (id)initWithDrawView:(WebView *)drawView;
-
-@end
diff --git a/WebKitTools/DrawTest/DrawTestToolbarController.m b/WebKitTools/DrawTest/DrawTestToolbarController.m
deleted file mode 100644
index 9190252..0000000
--- a/WebKitTools/DrawTest/DrawTestToolbarController.m
+++ /dev/null
@@ -1,354 +0,0 @@
-/*
- * Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
- * Copyright (C) 2006 Nefaur Khandker <nefaurk@gmail.com> All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "DrawTestToolbarController.h"
-
-enum
-{
- ToolbarBrowseToolTag = 0,
- ToolbarPanToolTag,
- ToolbarZoomToolTag,
-
- ToolbarPointerToolTag,
- ToolbarLineToolTag,
- ToolbarRectangleToolTag,
- ToolbarElipseToolTag,
- ToolbarTriangleToolTag,
- ToolbarPolyLineToolTag,
- ToolbarArcToolTag,
-
- ToolbarDeleteSelectionTag,
-
- ToolbarMoveForwardTag,
- ToolbarMoveBackwardTag,
- ToolbarMoveToFrontTag,
- ToolbarMoveToBackTag,
- ToolbarMiscItem
-};
-
-// Constants
-NSString *ToolbarIdentifier = @"Main Document Toolbar";
-
-NSString *ToolbarBrowseToolIdentifier = @"Browse";
-NSString *ToolbarPanToolIdentifier = @"Pan";
-NSString *ToolbarZoomToolIdentifier = @"Zoom";
-
-NSString *ToolbarPointerToolIdentifier = @"Pointer";
-NSString *ToolbarRectangleToolIdentifier = @"Rectangle";
-NSString *ToolbarElipseToolIdentifier = @"Oval";
-NSString *ToolbarTriangleToolIdentifier = @"Triangle";
-NSString *ToolbarPolyLineToolIdentifier = @"PolyLine";
-NSString *ToolbarArcToolIdentifier = @"Arc";
-
-NSString *ToolbarDeleteShapeIdentifier = @"Delete";
-NSString *ToolbarMoveForwardIdentifier = @"Forward";
-NSString *ToolbarMoveBackwardIdentifier = @"Backward";
-NSString *ToolbarMoveToFrontIdentifier = @"Front";
-NSString *ToolbarMoveToBackIdentifier = @"Back";
-
-NSString *ToolbarPointerToolImage = @"Toolbar_Pointer";
-NSString *ToolbarRectangleToolImage = @"Toolbar_Rectangle";
-NSString *ToolbarElipseToolImage = @"Toolbar_Oval";
-NSString *ToolbarTriangleToolImage = @"Toolbar_Triangle";
-
-NSString *ToolbarDeleteShapeImage = @"Toolbar_Delete";
-NSString *ToolbarMoveForwardImage = @"Toolbar_Forward";
-NSString *ToolbarMoveBackwardImage = @"Toolbar_Backward";
-NSString *ToolbarMoveToFrontImage = @"Toolbar_Front";
-NSString *ToolbarMoveToBackImage = @"Toolbar_Back";
-
-@interface DrawTestToolbarController (InternalMethods)
-- (void)setupToolbar;
-- (void)addToolbarItemWithIdentifier:(NSString *)identifier withImage:(NSString *)image withTag:(int)tag;
-- (void)addToolbarItemWithIdentifier:(NSString *)identifier withImage:(NSString *)image;
-- (void)addToolbarItem:(NSString *)identifier
- withLabel:(NSString *)label
- withPaletteLabel:(NSString *)paletteLabel
- withImage:(NSString *)imageName
- withToolTip:(NSString *)toolTip
- withTag:(int)tag;
-@end
-
-
-@implementation DrawTestToolbarController
-
-- (id)initWithDrawView:(WebView *)drawView
-{
- if (self = [super init]){
- _drawView = [drawView retain];
- [self setupToolbar]; // could be done lazily.
- }
- return self;
-}
-
-- (void)dealloc
-{
- [_toolbarItems release];
- [super dealloc];
-}
-
-
-- (void)addToolbarItemWithIdentifier:(NSString *)identifier withImage:(NSString *)image withTag:(int)tag
-{
-
- [self addToolbarItem:identifier
- withLabel:identifier
- withPaletteLabel:identifier
- withImage:image
- withToolTip:identifier
- withTag:tag];
-}
-
-- (void)addToolbarItemWithIdentifier:(NSString *)identifier withImage:(NSString *)image
-{
- [self addToolbarItemWithIdentifier:identifier withImage:image withTag:ToolbarMiscItem];
-}
-
-- (void)addToolbarItem:(NSString *)identifier
- withLabel:(NSString *)label
- withPaletteLabel:(NSString *)paletteLabel
- withImage:(NSString *)imageName
- withToolTip:(NSString *)toolTip
- withTag:(int)tag
-{
- NSToolbarItem *item = [[[NSToolbarItem alloc] initWithItemIdentifier:identifier] autorelease];
-
- [item setLabel:label];
- [item setPaletteLabel:paletteLabel];
- [item setToolTip:toolTip];
- [item setImage:[NSImage imageNamed:imageName]];
- [item setTarget:self];
- [item setAction:@selector(clickedToolbarItem:)];
- [item setTag:tag];
-
- [_toolbarItems setObject:item forKey:identifier];
-}
-
-- (void)setupToolbar
-{
- _toolbarItems = [[NSMutableDictionary alloc] init];
-
- [self addToolbarItemWithIdentifier:ToolbarBrowseToolIdentifier
- withImage:ToolbarPointerToolImage
- withTag:ToolbarBrowseToolTag];
- [[_toolbarItems objectForKey:ToolbarBrowseToolIdentifier] setImage:[[NSCursor pointingHandCursor] image]];
-
- [self addToolbarItemWithIdentifier:ToolbarPanToolIdentifier
- withImage:ToolbarPointerToolImage
- withTag:ToolbarPanToolTag];
- [[_toolbarItems objectForKey:ToolbarPanToolIdentifier] setImage:[[NSCursor openHandCursor] image]];
-
- [self addToolbarItemWithIdentifier:ToolbarZoomToolIdentifier
- withImage:ToolbarPointerToolImage
- withTag:ToolbarZoomToolTag];
-
-
- [self addToolbarItemWithIdentifier:ToolbarPointerToolIdentifier
- withImage:ToolbarPointerToolImage
- withTag:ToolbarPointerToolTag];
-
- [self addToolbarItemWithIdentifier:ToolbarRectangleToolIdentifier
- withImage:ToolbarRectangleToolImage
- withTag:ToolbarRectangleToolTag];
-
- [self addToolbarItemWithIdentifier:ToolbarElipseToolIdentifier
- withImage:ToolbarElipseToolImage
- withTag:ToolbarElipseToolTag];
-
- [self addToolbarItemWithIdentifier:ToolbarTriangleToolIdentifier
- withImage:ToolbarTriangleToolImage
- withTag:ToolbarTriangleToolTag];
-
- [self addToolbarItemWithIdentifier:ToolbarDeleteShapeIdentifier
- withImage:ToolbarDeleteShapeImage
- withTag:ToolbarDeleteSelectionTag];
-
- [self addToolbarItemWithIdentifier:ToolbarMoveForwardIdentifier
- withImage:ToolbarMoveForwardImage
- withTag:ToolbarMoveForwardTag];
-
- [self addToolbarItemWithIdentifier:ToolbarMoveBackwardIdentifier
- withImage:ToolbarMoveBackwardImage
- withTag:ToolbarMoveBackwardTag];
-
- [self addToolbarItemWithIdentifier:ToolbarMoveToFrontIdentifier
- withImage:ToolbarMoveToFrontImage
- withTag:ToolbarMoveToFrontTag];
-
- [self addToolbarItemWithIdentifier:ToolbarMoveToBackIdentifier
- withImage:ToolbarMoveToBackImage
- withTag:ToolbarMoveToBackTag];
-
-
- NSToolbar *toolbar = [[[NSToolbar alloc] initWithIdentifier:ToolbarIdentifier] autorelease];
-
- [toolbar setAllowsUserCustomization:YES];
- [toolbar setAutosavesConfiguration:YES];
- [toolbar setDisplayMode:NSToolbarDisplayModeIconAndLabel];
- [toolbar setSizeMode:NSToolbarSizeModeSmall];
- [toolbar setDisplayMode:NSToolbarDisplayModeLabelOnly];
- [toolbar setDelegate:self];
- [toolbar setSelectedItemIdentifier:ToolbarBrowseToolIdentifier];
- [toolbar setVisible:NO];
-
- [[_drawView window] setToolbar:toolbar];
-}
-
-
-- (void)clickedToolbarItem:(id)sender
-{
- int tag = [sender tag];
-
- switch(tag) {
-#if 0
- case ToolbarBrowseToolTag:
- [_drawView setToolMode:DrawViewToolBrowse];
- break;
- case ToolbarPanToolTag:
- [_drawView setToolMode:DrawViewToolPan];
- break;
- case ToolbarZoomToolTag:
- [_drawView setToolMode:DrawViewToolZoom];
- break;
- case ToolbarPointerToolTag:
- [_drawView setToolMode:DrawViewToolArrow];
- break;
- case ToolbarRectangleToolTag:
- [_drawView setToolMode:DrawViewToolRectangle];
- break;
- case ToolbarElipseToolTag:
- [_drawView setToolMode:DrawViewToolElipse];
- break;
- case ToolbarTriangleToolTag:
- [_drawView setToolMode:DrawViewToolTriangle];
- break;
- case ToolbarMoveForwardTag:
- [_drawView moveSelectionForward:sender];
- break;
- case ToolbarMoveBackwardTag:
- [_drawView moveSelectionBackward:sender];
- break;
- case ToolbarDeleteSelectionTag:
- [_drawView deleteSelection:sender];
- break;
-#endif
- default:
- NSLog(@"Toolbar item: %i not implemented!", tag);
- }
-
- [_drawView setNeedsDisplay:YES];
-}
-
-// NSToolbar delegate methods
-- (NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString *)itemIdent
- willBeInsertedIntoToolbar:(BOOL)willBeInserted
-{
- NSToolbarItem * toolbarItem = [_toolbarItems objectForKey:itemIdent];
-
- if( toolbarItem == nil )
- toolbarItem = [[[NSToolbarItem alloc] initWithItemIdentifier:itemIdent] autorelease];
-
- return toolbarItem;
-}
-
-- (NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar *)toolbar
-{
- return [NSArray arrayWithObjects:
- ToolbarBrowseToolIdentifier,
- ToolbarPanToolIdentifier,
- ToolbarZoomToolIdentifier,
- ToolbarPointerToolIdentifier,
- ToolbarRectangleToolIdentifier,
- ToolbarElipseToolIdentifier,
- ToolbarTriangleToolIdentifier,
- ToolbarDeleteShapeIdentifier,
- NSToolbarShowColorsItemIdentifier,
- ToolbarMoveForwardIdentifier,
- ToolbarMoveBackwardIdentifier,
- ToolbarMoveToFrontIdentifier,
- ToolbarMoveToBackIdentifier,
- NSToolbarCustomizeToolbarItemIdentifier,
- NSToolbarFlexibleSpaceItemIdentifier,
- NSToolbarSpaceItemIdentifier,
- NSToolbarSeparatorItemIdentifier, nil];
-}
-
-- (NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar *)toolbar
-{
- return [NSArray arrayWithObjects:
- ToolbarBrowseToolIdentifier,
- ToolbarPanToolIdentifier,
- //ToolbarZoomToolIdentifier,
- NSToolbarFlexibleSpaceItemIdentifier,
- ToolbarPointerToolIdentifier,
- ToolbarRectangleToolIdentifier,
- ToolbarElipseToolIdentifier,
- //ToolbarTriangleToolIdentifier,
- //NSToolbarSeparatorItemIdentifier,
- ToolbarDeleteShapeIdentifier,
- //ToolbarMoveForwardIdentifier,
- //ToolbarMoveBackwardIdentifier,
- //ToolbarMoveToFrontIdentifier,
- //ToolbarMoveToBackIdentifier,
- NSToolbarSeparatorItemIdentifier,
- //NSToolbarShowColorsItemIdentifier,
- //NSToolbarFlexibleSpaceItemIdentifier,
- NSToolbarCustomizeToolbarItemIdentifier,
- nil];
-}
-
-- (NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)toolbar
-{
- return [NSArray arrayWithObjects:
- ToolbarBrowseToolIdentifier,
- ToolbarPanToolIdentifier,
- ToolbarZoomToolIdentifier,
- ToolbarPointerToolIdentifier,
- ToolbarRectangleToolIdentifier,
- ToolbarElipseToolIdentifier,
- ToolbarTriangleToolIdentifier,
- nil];
-}
-
-- (BOOL)validateToolbarItem:(NSToolbarItem *)theItem
-{
- BOOL enabled = YES;
-
-#if 0
- switch([theItem tag]) {
- case ToolbarMoveForwardTag:
- case ToolbarMoveBackwardTag:
- case ToolbarMoveToFrontTag:
- case ToolbarMoveToBackTag:
- case ToolbarDeleteSelectionTag:
- enabled = ([[_drawView selectedCanvasItems] count] != 0);
- }
-#endif
-
- return enabled;
-}
-
-@end
diff --git a/WebKitTools/DrawTest/DrawTestView.h b/WebKitTools/DrawTest/DrawTestView.h
deleted file mode 100644
index 95d5956..0000000
--- a/WebKitTools/DrawTest/DrawTestView.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
- * Copyright (C) 2006 Nefaur Khandker <nefaurk@gmail.com> All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <Cocoa/Cocoa.h>
-
-#import <WebKit/WebView.h>
-
-@interface DrawTestView : WebView
-{
-
-}
-
-- (void)setDocument:(NSURL *)documentURL;
-
-@end
diff --git a/WebKitTools/DrawTest/DrawTestView.m b/WebKitTools/DrawTest/DrawTestView.m
deleted file mode 100644
index c865f99..0000000
--- a/WebKitTools/DrawTest/DrawTestView.m
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
- * Copyright (C) 2006 Nefaur Khandker <nefaurk@gmail.com> All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <WebKit/WebFrame.h>
-
-#import "DrawTestView.h"
-
-@implementation DrawTestView
-
-- (void)setDocument:(NSURL *)documentURL
-{
- [[self mainFrame] loadRequest:[NSURLRequest requestWithURL:documentURL]];
-}
-
-- (BOOL)acceptsFirstResponder
-{
- return YES;
-}
-
-@end
diff --git a/WebKitTools/DrawTest/DrawTest_Prefix.pch b/WebKitTools/DrawTest/DrawTest_Prefix.pch
deleted file mode 100644
index 8393f01..0000000
--- a/WebKitTools/DrawTest/DrawTest_Prefix.pch
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-//
-// Prefix header for all source files of the 'DrawTest' target in the 'DrawTest' project
-//
-
-#ifdef __OBJC__
-#import <Cocoa/Cocoa.h>
-
-#define foreacharray(__variable, __container) \
- for (int __variable##__i=0, __variable##__n=[__container count]; \
- __variable##__i < __variable##__n && (__variable = [__container objectAtIndex:__variable##__i]); \
- ++__variable##__i)
-#endif
diff --git a/WebKitTools/DrawTest/English.lproj/DrawTestDocument.nib/classes.nib b/WebKitTools/DrawTest/English.lproj/DrawTestDocument.nib/classes.nib
deleted file mode 100644
index 296ffc3..0000000
--- a/WebKitTools/DrawTest/English.lproj/DrawTestDocument.nib/classes.nib
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- IBClasses = (
- {
- ACTIONS = {toggleShowDebugAxes = id; toggleShowDebugString = id; };
- CLASS = DrawTestView;
- LANGUAGE = ObjC;
- SUPERCLASS = DrawView;
- },
- {
- ACTIONS = {
- deleteSelection = id;
- moveSelectionBackward = id;
- moveSelectionForward = id;
- zoomIn = id;
- zoomOriginal = id;
- zoomOut = id;
- zoomToFit = id;
- };
- CLASS = DrawView;
- LANGUAGE = ObjC;
- SUPERCLASS = NSView;
- },
- {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; },
- {
- ACTIONS = {dumpSVGToConsole = id; };
- CLASS = MyDocument;
- LANGUAGE = ObjC;
- OUTLETS = {drawView = KCanvasTestView; };
- SUPERCLASS = NSDocument;
- },
- {CLASS = NSSegmentedControl; LANGUAGE = ObjC; SUPERCLASS = NSControl; }
- );
- IBVersion = 1;
-} \ No newline at end of file
diff --git a/WebKitTools/DrawTest/English.lproj/DrawTestDocument.nib/info.nib b/WebKitTools/DrawTest/English.lproj/DrawTestDocument.nib/info.nib
deleted file mode 100644
index 3c96fd5..0000000
--- a/WebKitTools/DrawTest/English.lproj/DrawTestDocument.nib/info.nib
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>IBDocumentLocation</key>
- <string>86 30 356 240 0 0 1024 746 </string>
- <key>IBEditorPositions</key>
- <dict>
- <key>50</key>
- <string>377 327 270 342 0 0 1024 746 </string>
- </dict>
- <key>IBFramework Version</key>
- <string>437.0</string>
- <key>IBOpenObjects</key>
- <array>
- <integer>50</integer>
- <integer>5</integer>
- </array>
- <key>IBSystem Version</key>
- <string>8C42</string>
-</dict>
-</plist>
diff --git a/WebKitTools/DrawTest/English.lproj/DrawTestDocument.nib/keyedobjects.nib b/WebKitTools/DrawTest/English.lproj/DrawTestDocument.nib/keyedobjects.nib
deleted file mode 100644
index b78ff2c..0000000
--- a/WebKitTools/DrawTest/English.lproj/DrawTestDocument.nib/keyedobjects.nib
+++ /dev/null
Binary files differ
diff --git a/WebKitTools/DrawTest/English.lproj/Inspector.nib/classes.nib b/WebKitTools/DrawTest/English.lproj/Inspector.nib/classes.nib
deleted file mode 100644
index 725f5a4..0000000
--- a/WebKitTools/DrawTest/English.lproj/Inspector.nib/classes.nib
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- IBClasses = (
- {
- CLASS = DrawTestInspectorController;
- LANGUAGE = ObjC;
- OUTLETS = {"_inspectorPanel" = NSPanel; };
- SUPERCLASS = NSObject;
- },
- {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }
- );
- IBVersion = 1;
-} \ No newline at end of file
diff --git a/WebKitTools/DrawTest/English.lproj/Inspector.nib/info.nib b/WebKitTools/DrawTest/English.lproj/Inspector.nib/info.nib
deleted file mode 100644
index d930763..0000000
--- a/WebKitTools/DrawTest/English.lproj/Inspector.nib/info.nib
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>IBDocumentLocation</key>
- <string>261 184 356 240 0 0 1024 746 </string>
- <key>IBFramework Version</key>
- <string>437.0</string>
- <key>IBOpenObjects</key>
- <array>
- <integer>7</integer>
- </array>
- <key>IBSystem Version</key>
- <string>8B9</string>
-</dict>
-</plist>
diff --git a/WebKitTools/DrawTest/English.lproj/Inspector.nib/keyedobjects.nib b/WebKitTools/DrawTest/English.lproj/Inspector.nib/keyedobjects.nib
deleted file mode 100644
index 02869ca..0000000
--- a/WebKitTools/DrawTest/English.lproj/Inspector.nib/keyedobjects.nib
+++ /dev/null
Binary files differ
diff --git a/WebKitTools/DrawTest/English.lproj/MainMenu.nib/classes.nib b/WebKitTools/DrawTest/English.lproj/MainMenu.nib/classes.nib
deleted file mode 100644
index c0ca441..0000000
--- a/WebKitTools/DrawTest/English.lproj/MainMenu.nib/classes.nib
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- IBClasses = (
- {
- ACTIONS = {showImageRepTestWindow = id; showInspectorPanel = id; showTestsPanel = id; };
- CLASS = AppDelegate;
- LANGUAGE = ObjC;
- OUTLETS = {svgImageRepTestWindow = NSWindow; };
- SUPERCLASS = NSObject;
- },
- {
- ACTIONS = {
- dumpSVGToConsole = id;
- openSelectionInViewer = id;
- openSourceForSelection = id;
- runWindowResizeTest = id;
- showCompositeWindow = id;
- showImageRepTestWindow = id;
- showInspectorPanel = id;
- showTestsPanel = id;
- toggleDebugDrawer = id;
- toggleFilterSupport = id;
- toggleShowDebugAxes = id;
- toggleShowDebugString = id;
- toggleViewersScaleRule = id;
- zoomIn = id;
- zoomOriginal = id;
- zoomOut = id;
- zoomToContent = id;
- };
- CLASS = FirstResponder;
- LANGUAGE = ObjC;
- SUPERCLASS = NSObject;
- },
- {CLASS = KCanvasTestView; LANGUAGE = ObjC; SUPERCLASS = NSView; },
- {
- ACTIONS = {dumpSVGToConsole = id; };
- CLASS = MyDocument;
- LANGUAGE = ObjC;
- OUTLETS = {canvasView = KCanvasTestView; };
- SUPERCLASS = NSDocument;
- }
- );
- IBVersion = 1;
-} \ No newline at end of file
diff --git a/WebKitTools/DrawTest/English.lproj/MainMenu.nib/info.nib b/WebKitTools/DrawTest/English.lproj/MainMenu.nib/info.nib
deleted file mode 100644
index 9b783e0..0000000
--- a/WebKitTools/DrawTest/English.lproj/MainMenu.nib/info.nib
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>IBDocumentLocation</key>
- <string>274 58 356 240 0 0 1024 746 </string>
- <key>IBEditorPositions</key>
- <dict>
- <key>29</key>
- <string>128 678 355 44 0 0 1024 746 </string>
- </dict>
- <key>IBFramework Version</key>
- <string>439.0</string>
- <key>IBOpenObjects</key>
- <array>
- <integer>29</integer>
- </array>
- <key>IBSystem Version</key>
- <string>8C32</string>
-</dict>
-</plist>
diff --git a/WebKitTools/DrawTest/English.lproj/MainMenu.nib/keyedobjects.nib b/WebKitTools/DrawTest/English.lproj/MainMenu.nib/keyedobjects.nib
deleted file mode 100644
index 642b5ae..0000000
--- a/WebKitTools/DrawTest/English.lproj/MainMenu.nib/keyedobjects.nib
+++ /dev/null
Binary files differ
diff --git a/WebKitTools/DrawTest/English.lproj/TestViewer.nib/classes.nib b/WebKitTools/DrawTest/English.lproj/TestViewer.nib/classes.nib
deleted file mode 100644
index eb82ec7..0000000
--- a/WebKitTools/DrawTest/English.lproj/TestViewer.nib/classes.nib
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- IBClasses = (
- {CLASS = DrawView; LANGUAGE = ObjC; SUPERCLASS = NSView; },
- {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; },
- {CLASS = KCanvasTestView; LANGUAGE = ObjC; SUPERCLASS = NSView; },
- {CLASS = MyImageView; LANGUAGE = ObjC; SUPERCLASS = NSImageView; },
- {
- ACTIONS = {
- browse = id;
- jumpToParentDirectory = id;
- openSelectionInViewer = id;
- openSourceForSelection = id;
- openTestViewerForSelection = id;
- showCompositeWindow = id;
- showTestWindow = id;
- showTestsPanel = id;
- toggleViewersScaleRule = id;
- };
- CLASS = TestController;
- LANGUAGE = ObjC;
- OUTLETS = {
- "_compositeImageView" = NSImageView;
- "_compositeWindow" = NSWindow;
- "_parentDirectoryPopup" = NSPopUpButton;
- "_splitView" = TestViewerSplitView;
- "_testPanel" = NSPanel;
- "_testWindow" = NSWindow;
- "_testsArrayController" = NSArrayController;
- "_testsTableView" = NSTableView;
- };
- SUPERCLASS = NSObject;
- },
- {CLASS = TestViewerSplitView; LANGUAGE = ObjC; SUPERCLASS = NSView; }
- );
- IBVersion = 1;
-} \ No newline at end of file
diff --git a/WebKitTools/DrawTest/English.lproj/TestViewer.nib/info.nib b/WebKitTools/DrawTest/English.lproj/TestViewer.nib/info.nib
deleted file mode 100644
index ca801e8..0000000
--- a/WebKitTools/DrawTest/English.lproj/TestViewer.nib/info.nib
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>IBDocumentLocation</key>
- <string>263 119 356 240 0 0 1024 746 </string>
- <key>IBFramework Version</key>
- <string>437.0</string>
- <key>IBOpenObjects</key>
- <array>
- <integer>24</integer>
- <integer>60</integer>
- </array>
- <key>IBSystem Version</key>
- <string>8C26</string>
-</dict>
-</plist>
diff --git a/WebKitTools/DrawTest/English.lproj/TestViewer.nib/keyedobjects.nib b/WebKitTools/DrawTest/English.lproj/TestViewer.nib/keyedobjects.nib
deleted file mode 100644
index 46b8964..0000000
--- a/WebKitTools/DrawTest/English.lproj/TestViewer.nib/keyedobjects.nib
+++ /dev/null
Binary files differ
diff --git a/WebKitTools/DrawTest/Info.plist b/WebKitTools/DrawTest/Info.plist
deleted file mode 100644
index 0fd092b..0000000
--- a/WebKitTools/DrawTest/Info.plist
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleDocumentTypes</key>
- <array>
- <dict>
- <key>CFBundleTypeExtensions</key>
- <array>
- <string>svg</string>
- </array>
- <key>CFBundleTypeName</key>
- <string>SVG Document</string>
- <key>CFBundleTypeOSTypes</key>
- <array>
- <string>????</string>
- </array>
- <key>CFBundleTypeRole</key>
- <string>Editor</string>
- <key>LSTypeIsPackage</key>
- <false/>
- <key>NSDocumentClass</key>
- <string>DrawTestDocument</string>
- <key>NSPersistentStoreTypeKey</key>
- <string>Binary</string>
- </dict>
- </array>
- <key>CFBundleExecutable</key>
- <string>DrawTest</string>
- <key>CFBundleGetInfoString</key>
- <string>420+, Copyright 2005, 2006 Apple Computer, Inc.</string>
- <key>CFBundleIdentifier</key>
- <string>com.apple.DrawTest</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1.0</string>
- <key>NSMainNibFile</key>
- <string>MainMenu</string>
- <key>NSPrincipalClass</key>
- <string>NSApplication</string>
-</dict>
-</plist>
diff --git a/WebKitTools/DrawTest/SVGTest.h b/WebKitTools/DrawTest/SVGTest.h
deleted file mode 100644
index 70eed41..0000000
--- a/WebKitTools/DrawTest/SVGTest.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
- * Copyright (C) 2006 Nefaur Khandker <nefaurk@gmail.com> All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <Cocoa/Cocoa.h>
-
-@interface SVGTest : NSObject {
- NSString *_svgPath;
- NSString *_imagePath;
-
- NSImage *_image;
- NSImage *_compositeImage;
- BOOL _hasPassed;
-}
-
-+ (id)testWithSVGPath:(NSString *)svgPath imagePath:(NSString *)imagePath;
-- (id)initWithSVGPath:(NSString *)svgPath imagePath:(NSString *)imagePath;
-
-- (NSString *)imagePath;
-- (NSString *)svgPath;
-
-- (NSImage *)image;
-- (NSImage *)compositeImage;
-- (NSString *)name;
-
-@end
diff --git a/WebKitTools/DrawTest/SVGTest.m b/WebKitTools/DrawTest/SVGTest.m
deleted file mode 100644
index 4ea562d..0000000
--- a/WebKitTools/DrawTest/SVGTest.m
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
- * Copyright (C) 2006 Nefaur Khandker <nefaurk@gmail.com> All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "SVGTest.h"
-
-#import <WebKit/WebView.h>
-
-@implementation SVGTest
-
-+ (id)testWithSVGPath:(NSString *)svgPath imagePath:(NSString *)imagePath
-{
- SVGTest *test = [[self alloc] initWithSVGPath:svgPath imagePath:imagePath];
- return [test autorelease];
-}
-
-static WebView *__sharedDrawView = nil;
-+ (WebView *)sharedDrawView
-{
- if (!__sharedDrawView) {
- __sharedDrawView = [[WebView alloc] initWithFrame:NSMakeRect(0,0,0,0)];
- }
- return __sharedDrawView;
-}
-
-- (id)initWithSVGPath:(NSString *)svgPath imagePath:(NSString *)imagePath
-{
- if (self = [super init]) {
- _svgPath = [svgPath copy];
- _imagePath = [imagePath copy];
- }
- return self;
-}
-
-- (NSString *)imagePath
-{
- return _imagePath;
-}
-
-- (NSString *)svgPath
-{
- return _svgPath;
-}
-
-- (NSImage *)image
-{
- if (!_image && _imagePath) {
- _image = [[NSImage alloc] initByReferencingFile:_imagePath];
- }
- return _image;
-}
-
-- (NSString *)name
-{
- NSMutableString *name = [[[[_svgPath lastPathComponent] stringByDeletingPathExtension] mutableCopy] autorelease];
- [name replaceOccurrencesOfString:@"_" withString:@" " options:0 range:NSMakeRange(0, [name length])];
- return [name capitalizedString];
-}
-
-- (void)generateCompositeIfNecessary
-{
- if (!_compositeImage) {
- WebView *view = [SVGTest sharedDrawView];
- NSSize svgSize = [view bounds].size;
-
- NSImage *image = [self image];
- NSSize imageSize = [image size];
-
- NSBitmapImageRep *svgImage = [view bitmapImageRepForCachingDisplayInRect:[view bounds]];
- [view cacheDisplayInRect:[view bounds] toBitmapImageRep:svgImage];
-
- NSSize unionSize = NSMakeSize(MAX(svgSize.width, imageSize.width), MAX(svgSize.height, imageSize.height));
- _compositeImage = [[NSImage alloc] initWithSize:unionSize];
-
- [_compositeImage lockFocus];
- [svgImage drawInRect:NSMakeRect(0,0,svgSize.width,svgSize.height)];
- [image drawInRect:NSMakeRect(0,0,imageSize.width,imageSize.height)
- fromRect:NSMakeRect(0,0,imageSize.width,imageSize.height)
- operation:NSCompositeXOR fraction:1.0];
- [_compositeImage unlockFocus];
- }
-}
-
-- (NSImage *)compositeImage
-{
- [self generateCompositeIfNecessary];
- return _compositeImage;
-}
-
-
-@end
diff --git a/WebKitTools/DrawTest/ScalingImageView.h b/WebKitTools/DrawTest/ScalingImageView.h
deleted file mode 100644
index 4370ff5..0000000
--- a/WebKitTools/DrawTest/ScalingImageView.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <Cocoa/Cocoa.h>
-
-
-@interface ScalingImageView : NSImageView {
-
-}
-
-@end
diff --git a/WebKitTools/DrawTest/ScalingImageView.m b/WebKitTools/DrawTest/ScalingImageView.m
deleted file mode 100644
index 605397a..0000000
--- a/WebKitTools/DrawTest/ScalingImageView.m
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-#import "ScalingImageView.h"
-
-@implementation ScalingImageView
-
-/*
- This class offers two behaviors different from the standard NSImageView
- (and which were not available w/o subclassing)
- 1. Scale an image proportionally up to fit a larger view (NSImageView refuses)
- 2. Draw a background color w/o needing to show a bezel.
-*/
-
-- (void)drawRect:(NSRect)dirtyRect
-{
- [[NSColor whiteColor] set];
- NSRectFill(dirtyRect);
-
- NSSize imageSize = [[self image] size];
- float scale = 1.0f;
- if ([self imageScaling] == NSScaleProportionally && imageSize.width && imageSize.height) {
- float widthScale = [self bounds].size.width / imageSize.width;
- float heightScale = [self bounds].size.height / imageSize.height;
- scale = MIN(widthScale, heightScale);
- }
-
- float scaledHeight = imageSize.height * scale;
- NSRect destRect = NSMakeRect(0,[self bounds].size.height - scaledHeight,imageSize.width * scale, scaledHeight);
- [[self image] drawInRect:destRect
- fromRect:NSMakeRect(0,0,imageSize.width, imageSize.height) operation:NSCompositeSourceOver fraction:1.0];
-}
-
-@end
diff --git a/WebKitTools/DrawTest/TestController.h b/WebKitTools/DrawTest/TestController.h
deleted file mode 100644
index 1e781fe..0000000
--- a/WebKitTools/DrawTest/TestController.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
- * Copyright (C) 2006 Nefaur Khandker <nefaurk@gmail.com> All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <Cocoa/Cocoa.h>
-
-@class DrawTestView;
-@class SVGTest;
-@class TestViewerSplitView;
-
-@interface TestController : NSObject {
- IBOutlet NSPanel *_testPanel;
- IBOutlet NSWindow *_testWindow;
- IBOutlet TestViewerSplitView *_splitView;
-
- IBOutlet NSArrayController *_testsArrayController;
- IBOutlet NSPopUpButton *_parentDirectoryPopup;
- IBOutlet NSTableView *_testsTableView;
-
- IBOutlet NSWindow *_compositeWindow;
- IBOutlet NSImageView *_compositeImageView;
-
-@private
- NSString *_currentPath;
- NSArray *_tests;
- SVGTest *_selectedTest;
-
- DrawTestView *_drawView;
- NSImageView *_imageView;
-}
-
-+ (id)sharedController;
-
-- (IBAction)showTestsPanel:(id)sender;
-- (IBAction)showTestWindow:(id)sender;
-- (IBAction)showCompositeWindow:(id)sender;
-
-- (IBAction)browse:(id)sender;
-- (IBAction)jumpToParentDirectory:(id)sender;
-- (IBAction)openTestViewerForSelection:(id)sender;
-- (IBAction)openSourceForSelection:(id)sender;
-- (IBAction)openSelectionInViewer:(id)sender;
-- (IBAction)toggleViewersScaleRule:(id)sender;
-
-- (NSArray *)tests;
-- (NSString *)currentPath;
-- (void)setCurrentPath:(NSString *)newPath;
-- (NSArray *)directoryHierarchy;
-
-@end
diff --git a/WebKitTools/DrawTest/TestController.m b/WebKitTools/DrawTest/TestController.m
deleted file mode 100644
index 506920b..0000000
--- a/WebKitTools/DrawTest/TestController.m
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- * Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
- * Copyright (C) 2006 Nefaur Khandker <nefaurk@gmail.com> All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "TestController.h"
-#import "SVGTest.h"
-#import "TestViewerSplitView.h"
-#import "ScalingImageView.h"
-#import "DrawTestView.h"
-
-#import <WebKit/WebView.h>
-
-@interface NSArray (TestControllerAdditions)
-- (id)firstObject;
-@end
-
-@implementation NSArray (TestControllerAdditions)
-- (id)firstObject
-{
- if ([self count])
- return [self objectAtIndex:0];
- return nil;
-}
-@end
-
-static TestController *__sharedInstance = nil;
-
-@implementation TestController
-
-- (id)init
-{
- if (self = [super init]) {
- NSString *path = [[NSUserDefaults standardUserDefaults] objectForKey:@"TestDirectory"];
- BOOL isDirectory = NO;
- if (![[NSFileManager defaultManager] fileExistsAtPath:path isDirectory:&isDirectory] || !isDirectory) {
- path = [@"~" stringByStandardizingPath];
- }
- [self setCurrentPath:path];
- }
- return self;
-}
-
-+ (void)initialize
-{
- [self setKeys:[NSArray arrayWithObject:@"currentPath"] triggerChangeNotificationsForDependentKey:@"directoryHierarchy"];
- [self setKeys:[NSArray arrayWithObject:@"currentPath"] triggerChangeNotificationsForDependentKey:@"tests"];
-}
-
-+ (id)sharedController
-{
- if (!__sharedInstance) {
- __sharedInstance = [[self alloc] init];
- }
- return __sharedInstance;
-}
-
-- (void)loadNibIfNecessary
-{
- if (!_testPanel) {
- [NSBundle loadNibNamed:@"TestViewer" owner:self];
- }
-}
-
-- (void)awakeFromNib
-{
- [_testsTableView setTarget:self];
- [_testsTableView setDoubleAction:@selector(openTestViewerForSelection:)];
- _drawView = [[DrawTestView alloc] initWithFrame:NSZeroRect];
- _imageView = [[ScalingImageView alloc] initWithFrame:NSZeroRect];
- [_splitView addSubview:_drawView];
- [_splitView addSubview:_imageView];
-}
-
-- (IBAction)showTestsPanel:(id)sender
-{
- [self loadNibIfNecessary];
- [_testPanel makeKeyAndOrderFront:sender];
-}
-
-- (IBAction)showTestWindow:(id)sender
-{
- [self loadNibIfNecessary];
- [_testWindow makeKeyAndOrderFront:sender];
-}
-
-- (IBAction)showCompositeWindow:(id)sender
-{
- [self loadNibIfNecessary];
- NSLog(@"showCompositeWindow: %@", _compositeWindow);
- [_compositeWindow makeKeyAndOrderFront:sender];
-}
-
-- (IBAction)browse:(id)sender
-{
- NSOpenPanel *openPanel = [NSOpenPanel openPanel];
- [openPanel setCanChooseDirectories:YES];
- [openPanel setCanChooseFiles:NO];
- [openPanel beginSheetForDirectory:nil file:nil modalForWindow:_testPanel modalDelegate:self didEndSelector:@selector(openPanelDidEnd:returnCode:contextInfo:) contextInfo:NULL];
-}
-
-- (void)openPanelDidEnd:(NSOpenPanel *)openPanel returnCode:(int)returnCode contextInfo:(void *)contextInfo
-{
- if (returnCode == NSOKButton) {
- NSArray *folders = [openPanel filenames];
- NSString *selectedFolder = [folders firstObject];
- [self setCurrentPath:selectedFolder];
- }
-}
-
-- (IBAction)jumpToParentDirectory:(id)sender
-{
- int index = [_parentDirectoryPopup indexOfSelectedItem];
- NSArray *components = [_currentPath pathComponents];
- NSArray *newComponents = [components subarrayWithRange:NSMakeRange(0, [components count] - index)];
- NSString *newPath = [NSString pathWithComponents:newComponents];
- [self setCurrentPath:newPath];
-}
-
-- (void)setSelectedTest:(SVGTest *)selectedTest
-{
- id oldTest = _selectedTest;
- _selectedTest = [selectedTest retain];
- [oldTest release];
-
- if ([_testWindow isVisible]) {
- [_testWindow setTitle:[NSString stringWithFormat:@"Test Viewer - %@", [_selectedTest name]]];
- [_drawView setDocument:[NSURL fileURLWithPath:[_selectedTest svgPath]]];
- [_imageView setImage:[_selectedTest image]];
- if ([_compositeWindow isVisible])
- [_compositeImageView setImage:[_selectedTest compositeImage]];
- }
-}
-
-- (void)tableViewSelectionDidChange:(NSNotification *)aNotification
-{
- [self setSelectedTest:[[_testsArrayController selectedObjects] firstObject]];
-}
-
-- (IBAction)openTestViewerForSelection:(id)sender
-{
- [self showTestWindow:sender];
- [_drawView setDocument:[NSURL fileURLWithPath:[_selectedTest svgPath]]];
- [_imageView setImage:[_selectedTest image]];
-}
-
-- (IBAction)openSourceForSelection:(id)sender
-{
- [[NSWorkspace sharedWorkspace] openFile:[_selectedTest svgPath] withApplication:@"TextEdit"];
-}
-
-- (IBAction)openSelectionInViewer:(id)sender
-{
- [[NSWorkspace sharedWorkspace] openFile:[_selectedTest svgPath]];
-}
-
-- (NSString *)imagePathForSVGPath:(NSString *)svgPath
-{
- // eventually this code will build an array instead...
-
- NSString *currentDirectory = [self currentPath];
- NSString *parentDirectory = [currentDirectory stringByDeletingLastPathComponent];
-
- NSString *testName = [[svgPath lastPathComponent] stringByDeletingPathExtension];
- NSString *imageName, *imageDirectory, *imagePath;
-
- // first look in ../png/test.png -- SVG 1.1 baselines
- // The SVG 1.1 spec has various different pngs, we should allow the
- // tester to choose...
- imageName = [[@"full-" stringByAppendingString:testName] stringByAppendingPathExtension:@"png"];
- imageDirectory = [parentDirectory stringByAppendingPathComponent:@"png"];
- imagePath = [imageDirectory stringByAppendingPathComponent:imageName];
- if ([[NSFileManager defaultManager] fileExistsAtPath:imagePath]) return imagePath;
-
- // then look for ../name.png -- openclipart.org
- imageName = [testName stringByAppendingPathExtension:@"png"];
- imageDirectory = parentDirectory;
- imagePath = [imageDirectory stringByAppendingPathComponent:imageName];
- if ([[NSFileManager defaultManager] fileExistsAtPath:imagePath]) return imagePath;
-
- // then look for ./name-w3c.png -- WebCore tests
- imageName = [[testName stringByAppendingString:@"-w3c"] stringByAppendingPathExtension:@"png"];
- imageDirectory = currentDirectory;
- imagePath = [imageDirectory stringByAppendingPathComponent:imageName];
- if ([[NSFileManager defaultManager] fileExistsAtPath:imagePath]) return imagePath;
-
- // finally try name-baseline.png -- ksvg regression baselines
- imageName = [[testName stringByAppendingString:@"-baseline"] stringByAppendingPathExtension:@"png"];
- imageDirectory = currentDirectory;
- imagePath = [imageDirectory stringByAppendingPathComponent:imageName];
- if ([[NSFileManager defaultManager] fileExistsAtPath:imagePath]) return imagePath;
-
- return nil;
-}
-
-- (NSArray *)tests
-{
- if (!_tests) {
- NSMutableArray *newTests = [[NSMutableArray alloc] init];
- NSArray *files = [[NSFileManager defaultManager] directoryContentsAtPath:[self currentPath]];
- NSString *file = nil;
- foreacharray(file, files) {
- if ([[file pathExtension] isEqualToString:@"svg"]) {
- NSString *svgPath = [[self currentPath] stringByAppendingPathComponent:file];
- NSString *imagePath = [self imagePathForSVGPath:svgPath];
- [newTests addObject:[SVGTest testWithSVGPath:svgPath imagePath:imagePath]];
- }
- }
- [self setValue:newTests forKey:@"tests"];
- }
- return _tests;
-}
-
-- (NSArray *)directoryHierarchy
-{
- // A hackish way to reverse an array.
- return [[[_currentPath pathComponents] reverseObjectEnumerator] allObjects];
-}
-
-- (NSString *)currentPath
-{
- return _currentPath;
-}
-
-- (void)setCurrentPath:(NSString *)newPath
-{
- if (![newPath isEqualToString:_currentPath]) {
- [_currentPath release];
- _currentPath = [newPath copy];
- [self setValue:nil forKey:@"tests"];
- }
-
- [[NSUserDefaults standardUserDefaults] setObject:_currentPath forKey:@"TestDirectory"];
-}
-
-- (IBAction)toggleViewersScaleRule:(id)sender
-{
-#if 0
- if ([_drawView imageScaling] == NSScaleProportionally) {
- [_drawView setImageScaling:NSScaleNone];
- [_imageView setImageScaling:NSScaleNone];
- } else {
- [_drawView setImageScaling:NSScaleProportionally];
- [_imageView setImageScaling:NSScaleProportionally];
- }
-#endif
-}
-
-@end
diff --git a/WebKitTools/DrawTest/TestViewerSplitView.h b/WebKitTools/DrawTest/TestViewerSplitView.h
deleted file mode 100644
index e663f23..0000000
--- a/WebKitTools/DrawTest/TestViewerSplitView.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#import <Cocoa/Cocoa.h>
-
-@interface TestViewerSplitView : NSView {
- NSMutableArray *subviewLabels;
-}
-
-@end
diff --git a/WebKitTools/DrawTest/TestViewerSplitView.m b/WebKitTools/DrawTest/TestViewerSplitView.m
deleted file mode 100644
index 96f2055..0000000
--- a/WebKitTools/DrawTest/TestViewerSplitView.m
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "TestViewerSplitView.h"
-
-@implementation TestViewerSplitView
-
-- (void)drawRect:(NSRect)rect
-{
- NSArray *subviews = [self subviews];
- int subviewCount = [subviews count];
- for (int x=0; x < subviewCount; x++) {
- NSView *subview = [subviews objectAtIndex:x];
- [subview drawRect:rect];
-#if 0
- NSString *label = [subviewLabels objectAtIndex:0];
- [label drawAtPoint:[subview frame].origin withAttributes:NULL];
-#endif
- }
-}
-
-- (void)retileSubviews
-{
- NSRect bounds = [self bounds];
- NSArray *subviews = [self subviews];
- int subviewCount = [subviews count];
- if (!subviewCount) return;
- float subviewWidth = bounds.size.width / subviewCount;
-
- for (int x=0; x < subviewCount; x++) {
- [[subviews objectAtIndex:x] setFrame:NSMakeRect(x * subviewWidth, 0, subviewWidth, bounds.size.height)];
- }
-}
-
-- (void)didAddSubview:(NSView *)subview
-{
- [super didAddSubview:subview];
- [self retileSubviews];
-}
-
-- (void)willRemoveSubview:(NSView *)subview
-{
- [super willRemoveSubview:subview];
- [self retileSubviews];
-}
-
-- (void)setFrame:(NSRect)newFrame
-{
- // ideally we also want to catch when the bounds changes without the
- // frame changing, but we're not bothering with that now - ECS 7/29/05
- [super setFrame:newFrame];
- [self retileSubviews];
-}
-
-@end
diff --git a/WebKitTools/DrawTest/main.m b/WebKitTools/DrawTest/main.m
deleted file mode 100644
index 90337b6..0000000
--- a/WebKitTools/DrawTest/main.m
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-int main (int argc, const char *argv[])
-{
- return NSApplicationMain(argc, argv);
-}
diff --git a/WebKitTools/DumpRenderTree/AccessibilityController.cpp b/WebKitTools/DumpRenderTree/AccessibilityController.cpp
deleted file mode 100644
index d2ed2a6..0000000
--- a/WebKitTools/DumpRenderTree/AccessibilityController.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "AccessibilityController.h"
-
-#include "AccessibilityUIElement.h"
-#include <JavaScriptCore/JSRetainPtr.h>
-
-// Static Value Getters
-
-static JSValueRef getFocusedElementCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
-{
- AccessibilityController* controller = reinterpret_cast<AccessibilityController*>(JSObjectGetPrivate(thisObject));
- return AccessibilityUIElement::makeJSAccessibilityUIElement(context, controller->focusedElement());
-}
-
-static JSValueRef getRootElementCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
-{
- AccessibilityController* controller = reinterpret_cast<AccessibilityController*>(JSObjectGetPrivate(thisObject));
- return AccessibilityUIElement::makeJSAccessibilityUIElement(context, controller->rootElement());
-}
-
-// Object Creation
-
-void AccessibilityController::makeWindowObject(JSContextRef context, JSObjectRef windowObject, JSValueRef* exception)
-{
- JSRetainPtr<JSStringRef> accessibilityControllerStr(Adopt, JSStringCreateWithUTF8CString("accessibilityController"));
- JSValueRef accessibilityControllerObject = JSObjectMake(context, getJSClass(), this);
- JSObjectSetProperty(context, windowObject, accessibilityControllerStr.get(), accessibilityControllerObject, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete, exception);
-}
-
-JSClassRef AccessibilityController::getJSClass()
-{
- static JSStaticValue staticValues[] = {
- { "focusedElement", getFocusedElementCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "rootElement", getRootElementCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { 0, 0, 0, 0 }
- };
-
- static JSClassDefinition classDefinition = {
- 0, kJSClassAttributeNone, "AccessibilityController", 0, staticValues, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- };
-
- static JSClassRef accessibilityControllerClass = JSClassCreate(&classDefinition);
- return accessibilityControllerClass;
-}
diff --git a/WebKitTools/DumpRenderTree/AccessibilityUIElement.cpp b/WebKitTools/DumpRenderTree/AccessibilityUIElement.cpp
deleted file mode 100644
index 02d2dfa..0000000
--- a/WebKitTools/DumpRenderTree/AccessibilityUIElement.cpp
+++ /dev/null
@@ -1,303 +0,0 @@
-/*
- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "AccessibilityUIElement.h"
-
-#include <JavaScriptCore/JSRetainPtr.h>
-
-// Static Functions
-
-static AccessibilityUIElement* toAXElement(JSObjectRef object)
-{
- // FIXME: We should ASSERT that it is the right class here.
- return reinterpret_cast<AccessibilityUIElement*>(JSObjectGetPrivate(object));
-}
-
-static JSValueRef allAttributesCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- JSRetainPtr<JSStringRef> attributes(Adopt, toAXElement(thisObject)->allAttributes());
- return JSValueMakeString(context, attributes.get());
-}
-
-static JSValueRef attributesOfLinkedUIElementsCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- JSRetainPtr<JSStringRef> linkedUIDescription(Adopt, toAXElement(thisObject)->attributesOfLinkedUIElements());
- return JSValueMakeString(context, linkedUIDescription.get());
-}
-
-static JSValueRef attributesOfDocumentLinksCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- JSRetainPtr<JSStringRef> linkedUIDescription(Adopt, toAXElement(thisObject)->attributesOfDocumentLinks());
- return JSValueMakeString(context, linkedUIDescription.get());
-}
-
-static JSValueRef attributesOfChildrenCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- JSRetainPtr<JSStringRef> childrenDescription(Adopt, toAXElement(thisObject)->attributesOfChildren());
- return JSValueMakeString(context, childrenDescription.get());
-}
-
-static JSValueRef parameterizedAttributeNamesCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- JSRetainPtr<JSStringRef> parameterizedAttributeNames(Adopt, toAXElement(thisObject)->parameterizedAttributeNames());
- return JSValueMakeString(context, parameterizedAttributeNames.get());
-}
-
-static JSValueRef attributesOfColumnHeadersCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- JSRetainPtr<JSStringRef> attributesOfColumnHeaders(Adopt, toAXElement(thisObject)->attributesOfColumnHeaders());
- return JSValueMakeString(context, attributesOfColumnHeaders.get());
-}
-
-static JSValueRef attributesOfRowHeadersCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- JSRetainPtr<JSStringRef> attributesOfRowHeaders(Adopt, toAXElement(thisObject)->attributesOfRowHeaders());
- return JSValueMakeString(context, attributesOfRowHeaders.get());
-}
-
-static JSValueRef attributesOfColumnsCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- JSRetainPtr<JSStringRef> attributesOfColumns(Adopt, toAXElement(thisObject)->attributesOfColumns());
- return JSValueMakeString(context, attributesOfColumns.get());
-}
-
-static JSValueRef attributesOfRowsCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- JSRetainPtr<JSStringRef> attributesOfRows(Adopt, toAXElement(thisObject)->attributesOfRows());
- return JSValueMakeString(context, attributesOfRows.get());
-}
-
-static JSValueRef attributesOfVisibleCellsCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- JSRetainPtr<JSStringRef> attributesOfVisibleCells(Adopt, toAXElement(thisObject)->attributesOfVisibleCells());
- return JSValueMakeString(context, attributesOfVisibleCells.get());
-}
-
-static JSValueRef attributesOfHeaderCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- JSRetainPtr<JSStringRef> attributesOfHeader(Adopt, toAXElement(thisObject)->attributesOfHeader());
- return JSValueMakeString(context, attributesOfHeader.get());
-}
-
-static JSValueRef indexInTableCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- return JSValueMakeNumber(context, toAXElement(thisObject)->indexInTable());
-}
-
-static JSValueRef rowIndexRangeCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- JSRetainPtr<JSStringRef> rowIndexRange(Adopt, toAXElement(thisObject)->rowIndexRange());
- return JSValueMakeString(context, rowIndexRange.get());
-}
-
-static JSValueRef columnIndexRangeCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- JSRetainPtr<JSStringRef> columnIndexRange(Adopt, toAXElement(thisObject)->columnIndexRange());
- return JSValueMakeString(context, columnIndexRange.get());
-}
-
-static JSValueRef lineForIndexCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- int indexNumber = -1;
- if (argumentCount == 1)
- indexNumber = JSValueToNumber(context, arguments[0], exception);
-
- return JSValueMakeNumber(context, toAXElement(thisObject)->lineForIndex(indexNumber));
-}
-
-static JSValueRef boundsForRangeCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- unsigned location = UINT_MAX, length = 0;
- if (argumentCount == 2) {
- location = JSValueToNumber(context, arguments[0], exception);
- length = JSValueToNumber(context, arguments[1], exception);
- }
-
- JSRetainPtr<JSStringRef> boundsDescription(Adopt, toAXElement(thisObject)->boundsForRange(location, length));
- return JSValueMakeString(context, boundsDescription.get());
-}
-
-static JSValueRef childAtIndexCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- int indexNumber = -1;
- if (argumentCount == 1)
- indexNumber = JSValueToNumber(context, arguments[0], exception);
-
- return AccessibilityUIElement::makeJSAccessibilityUIElement(context, toAXElement(thisObject)->getChildAtIndex(indexNumber));
-}
-
-static JSValueRef cellForColumnAndRowCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- unsigned column = 0, row = 0;
- if (argumentCount == 2) {
- column = JSValueToNumber(context, arguments[0], exception);
- row = JSValueToNumber(context, arguments[1], exception);
- }
-
- return AccessibilityUIElement::makeJSAccessibilityUIElement(context, toAXElement(thisObject)->cellForColumnAndRow(column, row));
-}
-
-static JSValueRef titleUIElementCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- return AccessibilityUIElement::makeJSAccessibilityUIElement(context, toAXElement(thisObject)->titleUIElement());
-}
-
-static JSValueRef setSelectedTextRangeCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- unsigned location = UINT_MAX, length = 0;
- if (argumentCount == 2) {
- location = JSValueToNumber(context, arguments[0], exception);
- length = JSValueToNumber(context, arguments[1], exception);
- }
-
- toAXElement(thisObject)->setSelectedTextRange(location, length);
- return 0;
-}
-
-// Static Value Getters
-
-static JSValueRef getRoleCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
-{
- JSRetainPtr<JSStringRef> role(Adopt, toAXElement(thisObject)->role());
- return JSValueMakeString(context, role.get());
-}
-
-static JSValueRef getTitleCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
-{
- JSRetainPtr<JSStringRef> title(Adopt, toAXElement(thisObject)->title());
- return JSValueMakeString(context, title.get());
-}
-
-static JSValueRef getDescriptionCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
-{
- JSRetainPtr<JSStringRef> description(Adopt, toAXElement(thisObject)->description());
- return JSValueMakeString(context, description.get());
-}
-
-static JSValueRef getWidthCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
-{
- return JSValueMakeNumber(context, toAXElement(thisObject)->width());
-}
-
-static JSValueRef getHeightCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
-{
- return JSValueMakeNumber(context, toAXElement(thisObject)->height());
-}
-
-static JSValueRef getIntValueCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
-{
- return JSValueMakeNumber(context, toAXElement(thisObject)->intValue());
-}
-
-static JSValueRef getMinValueCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
-{
- return JSValueMakeNumber(context, toAXElement(thisObject)->minValue());
-}
-
-static JSValueRef getMaxValueCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
-{
- return JSValueMakeNumber(context, toAXElement(thisObject)->maxValue());
-}
-
-static JSValueRef getInsertionPointLineNumberCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
-{
- return JSValueMakeNumber(context, toAXElement(thisObject)->insertionPointLineNumber());
-}
-
-static JSValueRef getSelectedTextRangeCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
-{
- JSRetainPtr<JSStringRef> selectedTextRange(Adopt, toAXElement(thisObject)->selectedTextRange());
- return JSValueMakeString(context, selectedTextRange.get());
-}
-
-static JSValueRef getSupportsPressActionCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
-{
- return JSValueMakeBoolean(context, toAXElement(thisObject)->supportsPressAction());
-}
-
-// Destruction
-
-static void finalize(JSObjectRef thisObject)
-{
- delete toAXElement(thisObject);
-}
-
-// Object Creation
-
-JSObjectRef AccessibilityUIElement::makeJSAccessibilityUIElement(JSContextRef context, const AccessibilityUIElement& element)
-{
- return JSObjectMake(context, AccessibilityUIElement::getJSClass(), new AccessibilityUIElement(element));
-}
-
-JSClassRef AccessibilityUIElement::getJSClass()
-{
- static JSStaticValue staticValues[] = {
- { "role", getRoleCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "title", getTitleCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "description", getDescriptionCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "width", getWidthCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "height", getHeightCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "intValue", getIntValueCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "minValue", getMinValueCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "maxValue", getMaxValueCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "insertionPointLineNumber", getInsertionPointLineNumberCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "selectedTextRange", getSelectedTextRangeCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "supportsPressAction", getSupportsPressActionCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { 0, 0, 0, 0 }
- };
-
- static JSStaticFunction staticFunctions[] = {
- { "allAttributes", allAttributesCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "attributesOfLinkedUIElements", attributesOfLinkedUIElementsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "attributesOfDocumentLinks", attributesOfDocumentLinksCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "attributesOfChildren", attributesOfChildrenCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "parameterizedAttributeNames", parameterizedAttributeNamesCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "lineForIndex", lineForIndexCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "boundsForRange", boundsForRangeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "childAtIndex", childAtIndexCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "attributesOfColumnHeaders", attributesOfColumnHeadersCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "attributesOfRowHeaders", attributesOfRowHeadersCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "attributesOfColumns", attributesOfColumnsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "attributesOfRows", attributesOfRowsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "attributesOfVisibleCells", attributesOfVisibleCellsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "attributesOfHeader", attributesOfHeaderCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "indexInTable", indexInTableCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "rowIndexRange", rowIndexRangeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "columnIndexRange", columnIndexRangeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "cellForColumnAndRow", cellForColumnAndRowCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "titleUIElement", titleUIElementCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "setSelectedTextRange", setSelectedTextRangeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { 0, 0, 0 }
- };
-
- static JSClassDefinition classDefinition = {
- 0, kJSClassAttributeNone, "AccessibilityUIElement", 0, staticValues, staticFunctions,
- 0, finalize, 0, 0, 0, 0, 0, 0, 0, 0, 0
- };
-
- static JSClassRef accessibilityUIElementClass = JSClassCreate(&classDefinition);
- return accessibilityUIElementClass;
-}
diff --git a/WebKitTools/DumpRenderTree/AccessibilityUIElement.h b/WebKitTools/DumpRenderTree/AccessibilityUIElement.h
deleted file mode 100644
index 064829f..0000000
--- a/WebKitTools/DumpRenderTree/AccessibilityUIElement.h
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef AccessibilityUIElement_h
-#define AccessibilityUIElement_h
-
-#include <JavaScriptCore/JSObjectRef.h>
-#include <wtf/Vector.h>
-
-#if PLATFORM(MAC)
-#ifdef __OBJC__
-typedef id PlatformUIElement;
-#else
-typedef struct objc_object* PlatformUIElement;
-#endif
-#elif PLATFORM(WIN)
-#undef _WINSOCKAPI_
-#define _WINSOCKAPI_ // Prevent inclusion of winsock.h in windows.h
-
-#include <oleacc.h>
-#include <WebCore/COMPtr.h>
-
-typedef COMPtr<IAccessible> PlatformUIElement;
-#else
-typedef void* PlatformUIElement;
-#endif
-
-class AccessibilityUIElement {
-public:
- AccessibilityUIElement(PlatformUIElement);
- AccessibilityUIElement(const AccessibilityUIElement&);
- ~AccessibilityUIElement();
-
- PlatformUIElement platformUIElement() { return m_element; }
-
- static JSObjectRef makeJSAccessibilityUIElement(JSContextRef, const AccessibilityUIElement&);
-
- void getLinkedUIElements(Vector<AccessibilityUIElement>&);
- void getDocumentLinks(Vector<AccessibilityUIElement>&);
- void getChildren(Vector<AccessibilityUIElement>&);
- AccessibilityUIElement getChildAtIndex(unsigned);
- AccessibilityUIElement titleUIElement();
-
- // Methods - platform-independent implementations
- JSStringRef allAttributes();
- JSStringRef attributesOfLinkedUIElements();
- JSStringRef attributesOfDocumentLinks();
- JSStringRef attributesOfChildren();
- JSStringRef parameterizedAttributeNames();
-
- // Attributes - platform-independent implementations
- JSStringRef role();
- JSStringRef title();
- JSStringRef description();
- double width();
- double height();
- double intValue();
- double minValue();
- double maxValue();
- int insertionPointLineNumber();
- JSStringRef selectedTextRange();
- bool supportsPressAction();
-
- // Table-specific attributes
- JSStringRef attributesOfColumnHeaders();
- JSStringRef attributesOfRowHeaders();
- JSStringRef attributesOfColumns();
- JSStringRef attributesOfRows();
- JSStringRef attributesOfVisibleCells();
- JSStringRef attributesOfHeader();
- int indexInTable();
- JSStringRef rowIndexRange();
- JSStringRef columnIndexRange();
-
- // Parameterized attributes
- int lineForIndex(int);
- JSStringRef boundsForRange(unsigned location, unsigned length);
- void setSelectedTextRange(unsigned location, unsigned length);
-
- // Table-specific
- AccessibilityUIElement cellForColumnAndRow(unsigned column, unsigned row);
-
-private:
- static JSClassRef getJSClass();
-
- PlatformUIElement m_element;
-};
-
-#endif // AccessibilityUIElement_h
diff --git a/WebKitTools/DumpRenderTree/DumpRenderTree.h b/WebKitTools/DumpRenderTree/DumpRenderTree.h
deleted file mode 100644
index 9336a04..0000000
--- a/WebKitTools/DumpRenderTree/DumpRenderTree.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef DumpRenderTree_h
-#define DumpRenderTree_h
-
-// FIXME: Remove this when all platforms are using config.h
-#ifndef Config_H
-#include <wtf/Platform.h>
-#endif
-
-#if PLATFORM(MAC)
-#include "DumpRenderTreeMac.h"
-#elif PLATFORM(WIN)
-#include "DumpRenderTreeWin.h"
-#elif PLATFORM(GTK)
-#include "DumpRenderTreeGtk.h"
-#endif
-
-#if PLATFORM(CF)
-#include <CoreFoundation/CoreFoundation.h>
-extern CFRunLoopTimerRef waitToDumpWatchdog;
-#endif
-
-#include <string>
-
-#if !PLATFORM(OPENBSD)
-std::wstring urlSuitableForTestResult(const std::wstring& url);
-#endif
-
-class LayoutTestController;
-
-extern volatile bool done;
-
-// FIXME: This is a bad abstraction. We should insted pass this to other controller objects which need access to it.
-extern LayoutTestController* gLayoutTestController;
-
-void dump();
-void displayWebView();
-
-#endif // DumpRenderTree_h
diff --git a/WebKitTools/DumpRenderTree/DumpRenderTree.sln b/WebKitTools/DumpRenderTree/DumpRenderTree.sln
deleted file mode 100644
index 5a6a35f..0000000
--- a/WebKitTools/DumpRenderTree/DumpRenderTree.sln
+++ /dev/null
@@ -1,47 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual C++ Express 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DumpRenderTree", "win\DumpRenderTree.vcproj", "{6567DFD4-D6DE-4CD5-825D-17E353D160E1}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestNetscapePlugin", "win\TestNetscapePlugin\TestNetscapePlugin.vcproj", "{C0737398-3565-439E-A2B8-AB2BE4D5430C}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FindSafari", "..\FindSafari\FindSafari.vcproj", "{DA31DA52-6675-48D4-89E0-333A7144397C}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ImageDiff", "win\ImageDiff.vcproj", "{59CC0547-70AC-499C-9B19-EC01C6F61137}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug_Internal|Win32 = Debug_Internal|Win32
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Debug_Internal|Win32.ActiveCfg = Debug_Internal|Win32
- {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Debug_Internal|Win32.Build.0 = Debug_Internal|Win32
- {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Debug|Win32.ActiveCfg = Debug|Win32
- {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Debug|Win32.Build.0 = Debug|Win32
- {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Release|Win32.ActiveCfg = Release|Win32
- {6567DFD4-D6DE-4CD5-825D-17E353D160E1}.Release|Win32.Build.0 = Release|Win32
- {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Debug_Internal|Win32.ActiveCfg = Debug_Internal|Win32
- {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Debug_Internal|Win32.Build.0 = Debug_Internal|Win32
- {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Debug|Win32.ActiveCfg = Debug|Win32
- {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Debug|Win32.Build.0 = Debug|Win32
- {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Release|Win32.ActiveCfg = Release|Win32
- {C0737398-3565-439E-A2B8-AB2BE4D5430C}.Release|Win32.Build.0 = Release|Win32
- {DA31DA52-6675-48D4-89E0-333A7144397C}.Debug_Internal|Win32.ActiveCfg = Debug|Win32
- {DA31DA52-6675-48D4-89E0-333A7144397C}.Debug_Internal|Win32.Build.0 = Debug|Win32
- {DA31DA52-6675-48D4-89E0-333A7144397C}.Debug|Win32.ActiveCfg = Debug|Win32
- {DA31DA52-6675-48D4-89E0-333A7144397C}.Debug|Win32.Build.0 = Debug|Win32
- {DA31DA52-6675-48D4-89E0-333A7144397C}.Release|Win32.ActiveCfg = Release|Win32
- {DA31DA52-6675-48D4-89E0-333A7144397C}.Release|Win32.Build.0 = Release|Win32
- {59CC0547-70AC-499C-9B19-EC01C6F61137}.Debug_Internal|Win32.ActiveCfg = Debug|Win32
- {59CC0547-70AC-499C-9B19-EC01C6F61137}.Debug_Internal|Win32.Build.0 = Debug|Win32
- {59CC0547-70AC-499C-9B19-EC01C6F61137}.Debug|Win32.ActiveCfg = Debug|Win32
- {59CC0547-70AC-499C-9B19-EC01C6F61137}.Debug|Win32.Build.0 = Debug|Win32
- {59CC0547-70AC-499C-9B19-EC01C6F61137}.Release|Win32.ActiveCfg = Release|Win32
- {59CC0547-70AC-499C-9B19-EC01C6F61137}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/WebKitTools/DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj b/WebKitTools/DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj
deleted file mode 100644
index ca7bdcd..0000000
--- a/WebKitTools/DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,795 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 42;
- objects = {
-
-/* Begin PBXAggregateTarget section */
- A84F608D08B1370600E9745F /* All */ = {
- isa = PBXAggregateTarget;
- buildConfigurationList = A84F609208B1371400E9745F /* Build configuration list for PBXAggregateTarget "All" */;
- buildPhases = (
- );
- dependencies = (
- A84F609108B1370E00E9745F /* PBXTargetDependency */,
- A84F608F08B1370E00E9745F /* PBXTargetDependency */,
- 141BF238096A451E00E0753C /* PBXTargetDependency */,
- );
- name = All;
- productName = All;
- };
-/* End PBXAggregateTarget section */
-
-/* Begin PBXBuildFile section */
- 141BF435096A455900E0753C /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9335435F03D75502008635CE /* WebKit.framework */; };
- 141BF436096A455900E0753C /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A84F608908B136DA00E9745F /* Cocoa.framework */; };
- 141BF438096A455900E0753C /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A817090308B164D300CCB9FB /* JavaScriptCore.framework */; };
- 141BF439096A455900E0753C /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AE8257EF08D22389000507AB /* Carbon.framework */; };
- 141BF453096A45EB00E0753C /* PluginObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 141BF447096A45C800E0753C /* PluginObject.h */; };
- 14770FE20A22ADF7009342EE /* GCController.h in Headers */ = {isa = PBXBuildFile; fileRef = 14770FE00A22ADF7009342EE /* GCController.h */; };
- 1A8F02E80BB9B4EC008CFA34 /* TestObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A8F024C0BB9B056008CFA34 /* TestObject.h */; };
- 1AC6C8490D07638600CD3161 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AC6C77F0D07589B00CD3161 /* main.cpp */; };
- 1AC6C84A0D07638600CD3161 /* PluginObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AC6C7800D07589B00CD3161 /* PluginObject.cpp */; };
- 1AC6C84B0D07638600CD3161 /* TestObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AC6C7810D07589B00CD3161 /* TestObject.cpp */; };
- 23BCB8900EA57623003C6289 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 23BCB88F0EA57623003C6289 /* OpenGL.framework */; };
- 9340994C08540CAE007F3BC8 /* DumpRenderTreePrefix.h in Headers */ = {isa = PBXBuildFile; fileRef = 32A70AAB03705E1F00C91783 /* DumpRenderTreePrefix.h */; };
- 9340995108540CAE007F3BC8 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9335435F03D75502008635CE /* WebKit.framework */; };
- A817090008B163EF00CCB9FB /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A84F608908B136DA00E9745F /* Cocoa.framework */; };
- A817090408B164D300CCB9FB /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A817090308B164D300CCB9FB /* JavaScriptCore.framework */; };
- A84F608A08B136DA00E9745F /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A84F608908B136DA00E9745F /* Cocoa.framework */; };
- A8B91ADA0CF3B32F008F91FF /* DumpRenderTreePasteboard.m in Sources */ = {isa = PBXBuildFile; fileRef = A8B91AD70CF3B32F008F91FF /* DumpRenderTreePasteboard.m */; };
- A8B91ADC0CF3B32F008F91FF /* DumpRenderTreeWindow.mm in Sources */ = {isa = PBXBuildFile; fileRef = A8B91AD90CF3B32F008F91FF /* DumpRenderTreeWindow.mm */; };
- A8B91AE00CF3B372008F91FF /* DumpRenderTreeWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = A8B91ADD0CF3B372008F91FF /* DumpRenderTreeWindow.h */; };
- A8B91AE20CF3B372008F91FF /* DumpRenderTreePasteboard.h in Headers */ = {isa = PBXBuildFile; fileRef = A8B91ADF0CF3B372008F91FF /* DumpRenderTreePasteboard.h */; };
- A8B91BFD0CF522B4008F91FF /* CheckedMalloc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8B91BF70CF522B4008F91FF /* CheckedMalloc.cpp */; };
- A8B91BFF0CF522B4008F91FF /* CheckedMalloc.h in Headers */ = {isa = PBXBuildFile; fileRef = A8B91BF90CF522B4008F91FF /* CheckedMalloc.h */; };
- AE8259F308D22463000507AB /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AE8257EF08D22389000507AB /* Carbon.framework */; };
- AE8259F408D22463000507AB /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AE8257EF08D22389000507AB /* Carbon.framework */; };
- B5A752A208AF5D1F00138E45 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B5A752A108AF5D1F00138E45 /* QuartzCore.framework */; };
- BC0131DA0C9772010087317D /* LayoutTestController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC0131D80C9772010087317D /* LayoutTestController.cpp */; };
- BC0131DB0C9772010087317D /* LayoutTestController.h in Headers */ = {isa = PBXBuildFile; fileRef = BC0131D90C9772010087317D /* LayoutTestController.h */; };
- BC0E24E00E2D9451001B6BC2 /* AccessibilityUIElement.h in Headers */ = {isa = PBXBuildFile; fileRef = BC0E24DE0E2D9451001B6BC2 /* AccessibilityUIElement.h */; };
- BC0E24E10E2D9451001B6BC2 /* AccessibilityUIElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC0E24DF0E2D9451001B6BC2 /* AccessibilityUIElement.cpp */; };
- BC0E26150E2DA4C6001B6BC2 /* AccessibilityUIElementMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC0E26140E2DA4C6001B6BC2 /* AccessibilityUIElementMac.mm */; };
- BC47412A0D038A4C0072B006 /* JavaScriptThreading.h in Headers */ = {isa = PBXBuildFile; fileRef = BC4741290D038A4C0072B006 /* JavaScriptThreading.h */; };
- BC4741410D038A570072B006 /* JavaScriptThreadingPthreads.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC4741400D038A570072B006 /* JavaScriptThreadingPthreads.cpp */; };
- BC9D90240C97472E0099A4A3 /* WorkQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC9D90210C97472D0099A4A3 /* WorkQueue.cpp */; };
- BC9D90250C97472E0099A4A3 /* WorkQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = BC9D90220C97472E0099A4A3 /* WorkQueue.h */; };
- BC9D90260C97472E0099A4A3 /* WorkQueueItem.h in Headers */ = {isa = PBXBuildFile; fileRef = BC9D90230C97472E0099A4A3 /* WorkQueueItem.h */; };
- BCA18B230C9B014B00114369 /* GCControllerMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCA18B210C9B014B00114369 /* GCControllerMac.mm */; };
- BCA18B240C9B014B00114369 /* LayoutTestControllerMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCA18B220C9B014B00114369 /* LayoutTestControllerMac.mm */; };
- BCA18B260C9B015C00114369 /* WorkQueueItemMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCA18B250C9B015C00114369 /* WorkQueueItemMac.mm */; };
- BCA18B310C9B01B400114369 /* ObjCController.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA18B2F0C9B01B400114369 /* ObjCController.h */; };
- BCA18B320C9B01B400114369 /* ObjCController.m in Sources */ = {isa = PBXBuildFile; fileRef = BCA18B300C9B01B400114369 /* ObjCController.m */; };
- BCA18B380C9B021900114369 /* AppleScriptController.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA18B360C9B021900114369 /* AppleScriptController.h */; };
- BCA18B390C9B021900114369 /* AppleScriptController.m in Sources */ = {isa = PBXBuildFile; fileRef = BCA18B370C9B021900114369 /* AppleScriptController.m */; };
- BCA18B3C0C9B024900114369 /* TextInputController.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA18B3A0C9B024900114369 /* TextInputController.h */; };
- BCA18B490C9B02C400114369 /* TextInputController.m in Sources */ = {isa = PBXBuildFile; fileRef = BCA18B480C9B02C400114369 /* TextInputController.m */; };
- BCA18B610C9B08C200114369 /* EditingDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA18B570C9B08C200114369 /* EditingDelegate.h */; };
- BCA18B620C9B08C200114369 /* EditingDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCA18B580C9B08C200114369 /* EditingDelegate.mm */; };
- BCA18B630C9B08C200114369 /* FrameLoadDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA18B590C9B08C200114369 /* FrameLoadDelegate.h */; };
- BCA18B640C9B08C200114369 /* FrameLoadDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCA18B5A0C9B08C200114369 /* FrameLoadDelegate.mm */; };
- BCA18B650C9B08C200114369 /* PolicyDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA18B5B0C9B08C200114369 /* PolicyDelegate.h */; };
- BCA18B660C9B08C200114369 /* PolicyDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCA18B5C0C9B08C200114369 /* PolicyDelegate.mm */; };
- BCA18B670C9B08C200114369 /* ResourceLoadDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA18B5D0C9B08C200114369 /* ResourceLoadDelegate.h */; };
- BCA18B680C9B08C200114369 /* ResourceLoadDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCA18B5E0C9B08C200114369 /* ResourceLoadDelegate.mm */; };
- BCA18B690C9B08C200114369 /* UIDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA18B5F0C9B08C200114369 /* UIDelegate.h */; };
- BCA18B6A0C9B08C200114369 /* UIDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCA18B600C9B08C200114369 /* UIDelegate.mm */; };
- BCA18B6F0C9B08DB00114369 /* EventSendingController.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA18B6B0C9B08DB00114369 /* EventSendingController.h */; };
- BCA18B700C9B08DB00114369 /* EventSendingController.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCA18B6C0C9B08DB00114369 /* EventSendingController.mm */; };
- BCA18B710C9B08DB00114369 /* NavigationController.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA18B6D0C9B08DB00114369 /* NavigationController.h */; };
- BCA18B720C9B08DB00114369 /* NavigationController.m in Sources */ = {isa = PBXBuildFile; fileRef = BCA18B6E0C9B08DB00114369 /* NavigationController.m */; };
- BCA18B7A0C9B08F100114369 /* DumpRenderTreeDraggingInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA18B730C9B08F100114369 /* DumpRenderTreeDraggingInfo.h */; };
- BCA18B7B0C9B08F100114369 /* DumpRenderTreeDraggingInfo.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCA18B740C9B08F100114369 /* DumpRenderTreeDraggingInfo.mm */; };
- BCA18B7D0C9B08F100114369 /* ObjCPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA18B760C9B08F100114369 /* ObjCPlugin.h */; };
- BCA18B7E0C9B08F100114369 /* ObjCPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = BCA18B770C9B08F100114369 /* ObjCPlugin.m */; };
- BCA18B7F0C9B08F100114369 /* ObjCPluginFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA18B780C9B08F100114369 /* ObjCPluginFunction.h */; };
- BCA18B800C9B08F100114369 /* ObjCPluginFunction.m in Sources */ = {isa = PBXBuildFile; fileRef = BCA18B790C9B08F100114369 /* ObjCPluginFunction.m */; };
- BCA18C0B0C9B59EF00114369 /* DumpRenderTreeMac.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA18C0A0C9B59EF00114369 /* DumpRenderTreeMac.h */; };
- BCA18C470C9B5B9400114369 /* DumpRenderTree.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCA18C460C9B5B9400114369 /* DumpRenderTree.mm */; settings = {COMPILER_FLAGS = "-Wno-deprecated-declarations"; }; };
- BCB284C70CFA83C4007E533E /* PixelDumpSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB2848A0CFA820F007E533E /* PixelDumpSupport.h */; };
- BCB284CD0CFA83C8007E533E /* PixelDumpSupportCG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCB284880CFA8202007E533E /* PixelDumpSupportCG.cpp */; };
- BCB284D00CFA83CC007E533E /* PixelDumpSupportCG.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB284890CFA8202007E533E /* PixelDumpSupportCG.h */; };
- BCB284D60CFA83D1007E533E /* PixelDumpSupportMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCB2848C0CFA8221007E533E /* PixelDumpSupportMac.mm */; };
- BCB284F60CFA84F8007E533E /* ImageDiffCG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCB284F30CFA84F2007E533E /* ImageDiffCG.cpp */; };
- BCD08B3A0E1057EF00A7D0C1 /* AccessibilityController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD08B390E1057EF00A7D0C1 /* AccessibilityController.cpp */; };
- BCD08B710E1059D200A7D0C1 /* AccessibilityControllerMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCD08B700E1059D200A7D0C1 /* AccessibilityControllerMac.mm */; };
- BCF6C6500C98E9C000AC063E /* GCController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCF6C64F0C98E9C000AC063E /* GCController.cpp */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
- 141BF237096A451E00E0753C /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 141BF21E096A441D00E0753C;
- remoteInfo = TestNetscapePlugIn;
- };
- A84F608E08B1370E00E9745F /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = B5A7525A08AF4A4A00138E45;
- remoteInfo = ImageDiff;
- };
- A84F609008B1370E00E9745F /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 9340994A08540CAE007F3BC8;
- remoteInfo = DumpRenderTree;
- };
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXFileReference section */
- 141BF233096A44CF00E0753C /* TestNetscapePlugIn.plugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TestNetscapePlugIn.plugin; sourceTree = BUILT_PRODUCTS_DIR; };
- 141BF447096A45C800E0753C /* PluginObject.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PluginObject.h; sourceTree = "<group>"; };
- 141BF448096A45C800E0753C /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
- 14770FE00A22ADF7009342EE /* GCController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCController.h; sourceTree = "<group>"; };
- 1A8F024C0BB9B056008CFA34 /* TestObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestObject.h; sourceTree = "<group>"; };
- 1AC6C77F0D07589B00CD3161 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = "<group>"; };
- 1AC6C7800D07589B00CD3161 /* PluginObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PluginObject.cpp; sourceTree = "<group>"; };
- 1AC6C7810D07589B00CD3161 /* TestObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TestObject.cpp; sourceTree = "<group>"; };
- 23BCB88F0EA57623003C6289 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
- 32A70AAB03705E1F00C91783 /* DumpRenderTreePrefix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DumpRenderTreePrefix.h; sourceTree = "<group>"; };
- 375F09710DAC3CB600C8B4E5 /* WebKitWeightWatcher100.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = WebKitWeightWatcher100.ttf; path = fonts/WebKitWeightWatcher100.ttf; sourceTree = "<group>"; };
- 375F09720DAC3CB600C8B4E5 /* WebKitWeightWatcher200.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = WebKitWeightWatcher200.ttf; path = fonts/WebKitWeightWatcher200.ttf; sourceTree = "<group>"; };
- 375F09730DAC3CB600C8B4E5 /* WebKitWeightWatcher300.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = WebKitWeightWatcher300.ttf; path = fonts/WebKitWeightWatcher300.ttf; sourceTree = "<group>"; };
- 375F09740DAC3CB600C8B4E5 /* WebKitWeightWatcher400.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = WebKitWeightWatcher400.ttf; path = fonts/WebKitWeightWatcher400.ttf; sourceTree = "<group>"; };
- 375F09750DAC3CB600C8B4E5 /* WebKitWeightWatcher500.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = WebKitWeightWatcher500.ttf; path = fonts/WebKitWeightWatcher500.ttf; sourceTree = "<group>"; };
- 375F09760DAC3CB600C8B4E5 /* WebKitWeightWatcher600.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = WebKitWeightWatcher600.ttf; path = fonts/WebKitWeightWatcher600.ttf; sourceTree = "<group>"; };
- 375F09770DAC3CB600C8B4E5 /* WebKitWeightWatcher700.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = WebKitWeightWatcher700.ttf; path = fonts/WebKitWeightWatcher700.ttf; sourceTree = "<group>"; };
- 375F09780DAC3CB600C8B4E5 /* WebKitWeightWatcher800.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = WebKitWeightWatcher800.ttf; path = fonts/WebKitWeightWatcher800.ttf; sourceTree = "<group>"; };
- 375F09790DAC3CB600C8B4E5 /* WebKitWeightWatcher900.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = WebKitWeightWatcher900.ttf; path = fonts/WebKitWeightWatcher900.ttf; sourceTree = "<group>"; };
- 9335435F03D75502008635CE /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = WebKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- 9340995408540CAF007F3BC8 /* DumpRenderTree */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = DumpRenderTree; sourceTree = BUILT_PRODUCTS_DIR; };
- A803FF7409CAAD08009B2A37 /* DumpRenderTree.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = DumpRenderTree.h; sourceTree = "<group>"; };
- A817090308B164D300CCB9FB /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = JavaScriptCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- A84F608908B136DA00E9745F /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
- A8B91AD70CF3B32F008F91FF /* DumpRenderTreePasteboard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DumpRenderTreePasteboard.m; path = mac/DumpRenderTreePasteboard.m; sourceTree = "<group>"; };
- A8B91AD90CF3B32F008F91FF /* DumpRenderTreeWindow.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = DumpRenderTreeWindow.mm; path = mac/DumpRenderTreeWindow.mm; sourceTree = "<group>"; };
- A8B91ADD0CF3B372008F91FF /* DumpRenderTreeWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DumpRenderTreeWindow.h; path = mac/DumpRenderTreeWindow.h; sourceTree = "<group>"; };
- A8B91ADF0CF3B372008F91FF /* DumpRenderTreePasteboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DumpRenderTreePasteboard.h; path = mac/DumpRenderTreePasteboard.h; sourceTree = "<group>"; };
- A8B91BF70CF522B4008F91FF /* CheckedMalloc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CheckedMalloc.cpp; path = mac/CheckedMalloc.cpp; sourceTree = "<group>"; };
- A8B91BF90CF522B4008F91FF /* CheckedMalloc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CheckedMalloc.h; path = mac/CheckedMalloc.h; sourceTree = "<group>"; };
- AA7F10C20CB3C1030003BDC9 /* AHEM____.TTF */ = {isa = PBXFileReference; lastKnownFileType = file; name = "AHEM____.TTF"; path = "qt/fonts/AHEM____.TTF"; sourceTree = "<group>"; };
- AE8257EF08D22389000507AB /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
- B5A7526708AF4A4A00138E45 /* ImageDiff */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ImageDiff; sourceTree = BUILT_PRODUCTS_DIR; };
- B5A752A108AF5D1F00138E45 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = /System/Library/Frameworks/QuartzCore.framework; sourceTree = "<absolute>"; };
- BC0131D80C9772010087317D /* LayoutTestController.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 30; path = LayoutTestController.cpp; sourceTree = "<group>"; };
- BC0131D90C9772010087317D /* LayoutTestController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = LayoutTestController.h; sourceTree = "<group>"; };
- BC0E24DE0E2D9451001B6BC2 /* AccessibilityUIElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityUIElement.h; sourceTree = "<group>"; };
- BC0E24DF0E2D9451001B6BC2 /* AccessibilityUIElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityUIElement.cpp; sourceTree = "<group>"; };
- BC0E26140E2DA4C6001B6BC2 /* AccessibilityUIElementMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AccessibilityUIElementMac.mm; path = mac/AccessibilityUIElementMac.mm; sourceTree = "<group>"; };
- BC4741290D038A4C0072B006 /* JavaScriptThreading.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JavaScriptThreading.h; sourceTree = "<group>"; };
- BC4741400D038A570072B006 /* JavaScriptThreadingPthreads.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JavaScriptThreadingPthreads.cpp; path = pthreads/JavaScriptThreadingPthreads.cpp; sourceTree = "<group>"; };
- BC9D90210C97472D0099A4A3 /* WorkQueue.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 30; path = WorkQueue.cpp; sourceTree = "<group>"; };
- BC9D90220C97472E0099A4A3 /* WorkQueue.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WorkQueue.h; sourceTree = "<group>"; };
- BC9D90230C97472E0099A4A3 /* WorkQueueItem.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WorkQueueItem.h; sourceTree = "<group>"; };
- BCA18B210C9B014B00114369 /* GCControllerMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = GCControllerMac.mm; path = mac/GCControllerMac.mm; sourceTree = "<group>"; };
- BCA18B220C9B014B00114369 /* LayoutTestControllerMac.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = LayoutTestControllerMac.mm; path = mac/LayoutTestControllerMac.mm; sourceTree = "<group>"; };
- BCA18B250C9B015C00114369 /* WorkQueueItemMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = WorkQueueItemMac.mm; path = mac/WorkQueueItemMac.mm; sourceTree = "<group>"; };
- BCA18B2F0C9B01B400114369 /* ObjCController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ObjCController.h; path = mac/ObjCController.h; sourceTree = "<group>"; };
- BCA18B300C9B01B400114369 /* ObjCController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = ObjCController.m; path = mac/ObjCController.m; sourceTree = "<group>"; };
- BCA18B360C9B021900114369 /* AppleScriptController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = AppleScriptController.h; path = mac/AppleScriptController.h; sourceTree = "<group>"; };
- BCA18B370C9B021900114369 /* AppleScriptController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = AppleScriptController.m; path = mac/AppleScriptController.m; sourceTree = "<group>"; };
- BCA18B3A0C9B024900114369 /* TextInputController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = TextInputController.h; path = mac/TextInputController.h; sourceTree = "<group>"; };
- BCA18B480C9B02C400114369 /* TextInputController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = TextInputController.m; path = mac/TextInputController.m; sourceTree = "<group>"; };
- BCA18B570C9B08C200114369 /* EditingDelegate.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = EditingDelegate.h; path = mac/EditingDelegate.h; sourceTree = "<group>"; };
- BCA18B580C9B08C200114369 /* EditingDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = EditingDelegate.mm; path = mac/EditingDelegate.mm; sourceTree = "<group>"; };
- BCA18B590C9B08C200114369 /* FrameLoadDelegate.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = FrameLoadDelegate.h; path = mac/FrameLoadDelegate.h; sourceTree = "<group>"; };
- BCA18B5A0C9B08C200114369 /* FrameLoadDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = FrameLoadDelegate.mm; path = mac/FrameLoadDelegate.mm; sourceTree = "<group>"; };
- BCA18B5B0C9B08C200114369 /* PolicyDelegate.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PolicyDelegate.h; path = mac/PolicyDelegate.h; sourceTree = "<group>"; };
- BCA18B5C0C9B08C200114369 /* PolicyDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = PolicyDelegate.mm; path = mac/PolicyDelegate.mm; sourceTree = "<group>"; };
- BCA18B5D0C9B08C200114369 /* ResourceLoadDelegate.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ResourceLoadDelegate.h; path = mac/ResourceLoadDelegate.h; sourceTree = "<group>"; };
- BCA18B5E0C9B08C200114369 /* ResourceLoadDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = ResourceLoadDelegate.mm; path = mac/ResourceLoadDelegate.mm; sourceTree = "<group>"; };
- BCA18B5F0C9B08C200114369 /* UIDelegate.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = UIDelegate.h; path = mac/UIDelegate.h; sourceTree = "<group>"; };
- BCA18B600C9B08C200114369 /* UIDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = UIDelegate.mm; path = mac/UIDelegate.mm; sourceTree = "<group>"; };
- BCA18B6B0C9B08DB00114369 /* EventSendingController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = EventSendingController.h; path = mac/EventSendingController.h; sourceTree = "<group>"; };
- BCA18B6C0C9B08DB00114369 /* EventSendingController.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = EventSendingController.mm; path = mac/EventSendingController.mm; sourceTree = "<group>"; };
- BCA18B6D0C9B08DB00114369 /* NavigationController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = NavigationController.h; path = mac/NavigationController.h; sourceTree = "<group>"; };
- BCA18B6E0C9B08DB00114369 /* NavigationController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = NavigationController.m; path = mac/NavigationController.m; sourceTree = "<group>"; };
- BCA18B730C9B08F100114369 /* DumpRenderTreeDraggingInfo.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = DumpRenderTreeDraggingInfo.h; path = mac/DumpRenderTreeDraggingInfo.h; sourceTree = "<group>"; };
- BCA18B740C9B08F100114369 /* DumpRenderTreeDraggingInfo.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = DumpRenderTreeDraggingInfo.mm; path = mac/DumpRenderTreeDraggingInfo.mm; sourceTree = "<group>"; };
- BCA18B760C9B08F100114369 /* ObjCPlugin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ObjCPlugin.h; path = mac/ObjCPlugin.h; sourceTree = "<group>"; };
- BCA18B770C9B08F100114369 /* ObjCPlugin.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = ObjCPlugin.m; path = mac/ObjCPlugin.m; sourceTree = "<group>"; };
- BCA18B780C9B08F100114369 /* ObjCPluginFunction.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ObjCPluginFunction.h; path = mac/ObjCPluginFunction.h; sourceTree = "<group>"; };
- BCA18B790C9B08F100114369 /* ObjCPluginFunction.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = ObjCPluginFunction.m; path = mac/ObjCPluginFunction.m; sourceTree = "<group>"; };
- BCA18C0A0C9B59EF00114369 /* DumpRenderTreeMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DumpRenderTreeMac.h; path = mac/DumpRenderTreeMac.h; sourceTree = "<group>"; };
- BCA18C460C9B5B9400114369 /* DumpRenderTree.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = DumpRenderTree.mm; path = mac/DumpRenderTree.mm; sourceTree = "<group>"; };
- BCB281EE0CFA713D007E533E /* Base.xcconfig */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xcconfig; name = Base.xcconfig; path = mac/Configurations/Base.xcconfig; sourceTree = "<group>"; };
- BCB281F00CFA713D007E533E /* DumpRenderTree.xcconfig */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xcconfig; name = DumpRenderTree.xcconfig; path = mac/Configurations/DumpRenderTree.xcconfig; sourceTree = "<group>"; };
- BCB282F40CFA7450007E533E /* DebugRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xcconfig; name = DebugRelease.xcconfig; path = mac/Configurations/DebugRelease.xcconfig; sourceTree = "<group>"; };
- BCB283D80CFA7AFD007E533E /* ImageDiff.xcconfig */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xcconfig; name = ImageDiff.xcconfig; path = mac/Configurations/ImageDiff.xcconfig; sourceTree = "<group>"; };
- BCB283DE0CFA7C20007E533E /* TestNetscapePlugIn.xcconfig */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xcconfig; name = TestNetscapePlugIn.xcconfig; path = mac/Configurations/TestNetscapePlugIn.xcconfig; sourceTree = "<group>"; };
- BCB284880CFA8202007E533E /* PixelDumpSupportCG.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 30; name = PixelDumpSupportCG.cpp; path = cg/PixelDumpSupportCG.cpp; sourceTree = "<group>"; };
- BCB284890CFA8202007E533E /* PixelDumpSupportCG.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PixelDumpSupportCG.h; path = cg/PixelDumpSupportCG.h; sourceTree = "<group>"; };
- BCB2848A0CFA820F007E533E /* PixelDumpSupport.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PixelDumpSupport.h; sourceTree = "<group>"; };
- BCB2848C0CFA8221007E533E /* PixelDumpSupportMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = PixelDumpSupportMac.mm; path = mac/PixelDumpSupportMac.mm; sourceTree = "<group>"; };
- BCB284B20CFA82CB007E533E /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = "<absolute>"; };
- BCB284F30CFA84F2007E533E /* ImageDiffCG.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ImageDiffCG.cpp; path = cg/ImageDiffCG.cpp; sourceTree = "<group>"; };
- BCD08A580E10496B00A7D0C1 /* AccessibilityController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityController.h; sourceTree = "<group>"; };
- BCD08B390E1057EF00A7D0C1 /* AccessibilityController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityController.cpp; sourceTree = "<group>"; };
- BCD08B700E1059D200A7D0C1 /* AccessibilityControllerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AccessibilityControllerMac.mm; path = mac/AccessibilityControllerMac.mm; sourceTree = "<group>"; };
- BCF6C64F0C98E9C000AC063E /* GCController.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 30; path = GCController.cpp; sourceTree = "<group>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 141BF21D096A441D00E0753C /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 141BF439096A455900E0753C /* Carbon.framework in Frameworks */,
- 141BF436096A455900E0753C /* Cocoa.framework in Frameworks */,
- 141BF438096A455900E0753C /* JavaScriptCore.framework in Frameworks */,
- 141BF435096A455900E0753C /* WebKit.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 9340994F08540CAE007F3BC8 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- AE8259F308D22463000507AB /* Carbon.framework in Frameworks */,
- A84F608A08B136DA00E9745F /* Cocoa.framework in Frameworks */,
- A817090408B164D300CCB9FB /* JavaScriptCore.framework in Frameworks */,
- 9340995108540CAE007F3BC8 /* WebKit.framework in Frameworks */,
- 23BCB8900EA57623003C6289 /* OpenGL.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- B5A7525F08AF4A4A00138E45 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- AE8259F408D22463000507AB /* Carbon.framework in Frameworks */,
- A817090008B163EF00CCB9FB /* Cocoa.framework in Frameworks */,
- B5A752A208AF5D1F00138E45 /* QuartzCore.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 08FB7794FE84155DC02AAC07 /* DumpRenderTree */ = {
- isa = PBXGroup;
- children = (
- 32A70AAB03705E1F00C91783 /* DumpRenderTreePrefix.h */,
- 1422A2750AF6F4BD00E1A883 /* Delegates */,
- 1422A2690AF6F45200E1A883 /* Controllers */,
- BCB284870CFA81ED007E533E /* PixelDump */,
- A803FF7409CAAD08009B2A37 /* DumpRenderTree.h */,
- BCA18C460C9B5B9400114369 /* DumpRenderTree.mm */,
- A8B91BF70CF522B4008F91FF /* CheckedMalloc.cpp */,
- A8B91BF90CF522B4008F91FF /* CheckedMalloc.h */,
- BC4741290D038A4C0072B006 /* JavaScriptThreading.h */,
- BC4741400D038A570072B006 /* JavaScriptThreadingPthreads.cpp */,
- BCA18C0A0C9B59EF00114369 /* DumpRenderTreeMac.h */,
- BCA18B730C9B08F100114369 /* DumpRenderTreeDraggingInfo.h */,
- BCA18B740C9B08F100114369 /* DumpRenderTreeDraggingInfo.mm */,
- BC9D90210C97472D0099A4A3 /* WorkQueue.cpp */,
- BC9D90220C97472E0099A4A3 /* WorkQueue.h */,
- BC9D90230C97472E0099A4A3 /* WorkQueueItem.h */,
- A8B91AD20CF3B305008F91FF /* AppKit Overrides */,
- A8B91AC40CF3B170008F91FF /* ObjCPlugin */,
- 141BF1F5096A439800E0753C /* TestNetscapePlugIn.subproj */,
- 9345229B0BD12B2C0086EDA0 /* Resources */,
- A803FF6409CAACC1009B2A37 /* Frameworks */,
- 9340995508540CAF007F3BC8 /* Products */,
- BCB281ED0CFA711D007E533E /* Configurations */,
- );
- name = DumpRenderTree;
- sourceTree = "<group>";
- };
- 141BF1F5096A439800E0753C /* TestNetscapePlugIn.subproj */ = {
- isa = PBXGroup;
- children = (
- 1AC6C77F0D07589B00CD3161 /* main.cpp */,
- 1AC6C7800D07589B00CD3161 /* PluginObject.cpp */,
- 141BF447096A45C800E0753C /* PluginObject.h */,
- 1AC6C7810D07589B00CD3161 /* TestObject.cpp */,
- 1A8F024C0BB9B056008CFA34 /* TestObject.h */,
- 141BF448096A45C800E0753C /* Info.plist */,
- );
- path = TestNetscapePlugIn.subproj;
- sourceTree = "<group>";
- };
- 1422A2690AF6F45200E1A883 /* Controllers */ = {
- isa = PBXGroup;
- children = (
- BCD08B390E1057EF00A7D0C1 /* AccessibilityController.cpp */,
- BCD08A580E10496B00A7D0C1 /* AccessibilityController.h */,
- BCD08B700E1059D200A7D0C1 /* AccessibilityControllerMac.mm */,
- BC0E24DF0E2D9451001B6BC2 /* AccessibilityUIElement.cpp */,
- BC0E24DE0E2D9451001B6BC2 /* AccessibilityUIElement.h */,
- BC0E26140E2DA4C6001B6BC2 /* AccessibilityUIElementMac.mm */,
- BCA18B360C9B021900114369 /* AppleScriptController.h */,
- BCA18B370C9B021900114369 /* AppleScriptController.m */,
- BCA18B6B0C9B08DB00114369 /* EventSendingController.h */,
- BCA18B6C0C9B08DB00114369 /* EventSendingController.mm */,
- BCF6C64F0C98E9C000AC063E /* GCController.cpp */,
- 14770FE00A22ADF7009342EE /* GCController.h */,
- BCA18B210C9B014B00114369 /* GCControllerMac.mm */,
- BC0131D80C9772010087317D /* LayoutTestController.cpp */,
- BC0131D90C9772010087317D /* LayoutTestController.h */,
- BCA18B220C9B014B00114369 /* LayoutTestControllerMac.mm */,
- BCA18B6D0C9B08DB00114369 /* NavigationController.h */,
- BCA18B6E0C9B08DB00114369 /* NavigationController.m */,
- BCA18B2F0C9B01B400114369 /* ObjCController.h */,
- BCA18B300C9B01B400114369 /* ObjCController.m */,
- BCA18B3A0C9B024900114369 /* TextInputController.h */,
- BCA18B480C9B02C400114369 /* TextInputController.m */,
- );
- name = Controllers;
- sourceTree = "<group>";
- usesTabs = 0;
- };
- 1422A2750AF6F4BD00E1A883 /* Delegates */ = {
- isa = PBXGroup;
- children = (
- BCA18B570C9B08C200114369 /* EditingDelegate.h */,
- BCA18B580C9B08C200114369 /* EditingDelegate.mm */,
- BCA18B590C9B08C200114369 /* FrameLoadDelegate.h */,
- BCA18B5A0C9B08C200114369 /* FrameLoadDelegate.mm */,
- BCA18B5B0C9B08C200114369 /* PolicyDelegate.h */,
- BCA18B5C0C9B08C200114369 /* PolicyDelegate.mm */,
- BCA18B5D0C9B08C200114369 /* ResourceLoadDelegate.h */,
- BCA18B5E0C9B08C200114369 /* ResourceLoadDelegate.mm */,
- BCA18B5F0C9B08C200114369 /* UIDelegate.h */,
- BCA18B600C9B08C200114369 /* UIDelegate.mm */,
- );
- name = Delegates;
- sourceTree = "<group>";
- };
- 9340995508540CAF007F3BC8 /* Products */ = {
- isa = PBXGroup;
- children = (
- 9340995408540CAF007F3BC8 /* DumpRenderTree */,
- B5A7526708AF4A4A00138E45 /* ImageDiff */,
- 141BF233096A44CF00E0753C /* TestNetscapePlugIn.plugin */,
- );
- name = Products;
- sourceTree = "<group>";
- };
- 9345229B0BD12B2C0086EDA0 /* Resources */ = {
- isa = PBXGroup;
- children = (
- 375F09710DAC3CB600C8B4E5 /* WebKitWeightWatcher100.ttf */,
- 375F09720DAC3CB600C8B4E5 /* WebKitWeightWatcher200.ttf */,
- 375F09730DAC3CB600C8B4E5 /* WebKitWeightWatcher300.ttf */,
- 375F09740DAC3CB600C8B4E5 /* WebKitWeightWatcher400.ttf */,
- 375F09750DAC3CB600C8B4E5 /* WebKitWeightWatcher500.ttf */,
- 375F09760DAC3CB600C8B4E5 /* WebKitWeightWatcher600.ttf */,
- 375F09770DAC3CB600C8B4E5 /* WebKitWeightWatcher700.ttf */,
- 375F09780DAC3CB600C8B4E5 /* WebKitWeightWatcher800.ttf */,
- 375F09790DAC3CB600C8B4E5 /* WebKitWeightWatcher900.ttf */,
- AA7F10C20CB3C1030003BDC9 /* AHEM____.TTF */,
- );
- name = Resources;
- sourceTree = "<group>";
- };
- A803FF6409CAACC1009B2A37 /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- BCB284B20CFA82CB007E533E /* ApplicationServices.framework */,
- AE8257EF08D22389000507AB /* Carbon.framework */,
- A84F608908B136DA00E9745F /* Cocoa.framework */,
- A817090308B164D300CCB9FB /* JavaScriptCore.framework */,
- B5A752A108AF5D1F00138E45 /* QuartzCore.framework */,
- 9335435F03D75502008635CE /* WebKit.framework */,
- 23BCB88F0EA57623003C6289 /* OpenGL.framework */,
- );
- name = Frameworks;
- sourceTree = "<group>";
- };
- A8B91AC40CF3B170008F91FF /* ObjCPlugin */ = {
- isa = PBXGroup;
- children = (
- BCA18B250C9B015C00114369 /* WorkQueueItemMac.mm */,
- BCA18B760C9B08F100114369 /* ObjCPlugin.h */,
- BCA18B770C9B08F100114369 /* ObjCPlugin.m */,
- BCA18B780C9B08F100114369 /* ObjCPluginFunction.h */,
- BCA18B790C9B08F100114369 /* ObjCPluginFunction.m */,
- );
- name = ObjCPlugin;
- sourceTree = "<group>";
- };
- A8B91AD20CF3B305008F91FF /* AppKit Overrides */ = {
- isa = PBXGroup;
- children = (
- A8B91ADF0CF3B372008F91FF /* DumpRenderTreePasteboard.h */,
- A8B91AD70CF3B32F008F91FF /* DumpRenderTreePasteboard.m */,
- A8B91ADD0CF3B372008F91FF /* DumpRenderTreeWindow.h */,
- A8B91AD90CF3B32F008F91FF /* DumpRenderTreeWindow.mm */,
- );
- name = "AppKit Overrides";
- sourceTree = "<group>";
- };
- BCB281ED0CFA711D007E533E /* Configurations */ = {
- isa = PBXGroup;
- children = (
- BCB281EE0CFA713D007E533E /* Base.xcconfig */,
- BCB282F40CFA7450007E533E /* DebugRelease.xcconfig */,
- BCB281F00CFA713D007E533E /* DumpRenderTree.xcconfig */,
- BCB283D80CFA7AFD007E533E /* ImageDiff.xcconfig */,
- BCB283DE0CFA7C20007E533E /* TestNetscapePlugIn.xcconfig */,
- );
- name = Configurations;
- sourceTree = "<group>";
- };
- BCB284870CFA81ED007E533E /* PixelDump */ = {
- isa = PBXGroup;
- children = (
- BCB284F30CFA84F2007E533E /* ImageDiffCG.cpp */,
- BCB2848A0CFA820F007E533E /* PixelDumpSupport.h */,
- BCB284880CFA8202007E533E /* PixelDumpSupportCG.cpp */,
- BCB284890CFA8202007E533E /* PixelDumpSupportCG.h */,
- BCB2848C0CFA8221007E533E /* PixelDumpSupportMac.mm */,
- );
- name = PixelDump;
- sourceTree = "<group>";
- };
-/* End PBXGroup section */
-
-/* Begin PBXHeadersBuildPhase section */
- 141BF44E096A45DD00E0753C /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 141BF453096A45EB00E0753C /* PluginObject.h in Headers */,
- 1A8F02E80BB9B4EC008CFA34 /* TestObject.h in Headers */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 9340994B08540CAE007F3BC8 /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- BCA18B380C9B021900114369 /* AppleScriptController.h in Headers */,
- BCA18B7A0C9B08F100114369 /* DumpRenderTreeDraggingInfo.h in Headers */,
- BCA18C0B0C9B59EF00114369 /* DumpRenderTreeMac.h in Headers */,
- 9340994C08540CAE007F3BC8 /* DumpRenderTreePrefix.h in Headers */,
- BCA18B610C9B08C200114369 /* EditingDelegate.h in Headers */,
- BCA18B6F0C9B08DB00114369 /* EventSendingController.h in Headers */,
- BCA18B630C9B08C200114369 /* FrameLoadDelegate.h in Headers */,
- 14770FE20A22ADF7009342EE /* GCController.h in Headers */,
- BC0131DB0C9772010087317D /* LayoutTestController.h in Headers */,
- BCA18B710C9B08DB00114369 /* NavigationController.h in Headers */,
- BCA18B310C9B01B400114369 /* ObjCController.h in Headers */,
- BCA18B7D0C9B08F100114369 /* ObjCPlugin.h in Headers */,
- BCA18B7F0C9B08F100114369 /* ObjCPluginFunction.h in Headers */,
- BCA18B650C9B08C200114369 /* PolicyDelegate.h in Headers */,
- BCA18B670C9B08C200114369 /* ResourceLoadDelegate.h in Headers */,
- BCA18B3C0C9B024900114369 /* TextInputController.h in Headers */,
- BCA18B690C9B08C200114369 /* UIDelegate.h in Headers */,
- BC9D90250C97472E0099A4A3 /* WorkQueue.h in Headers */,
- BC9D90260C97472E0099A4A3 /* WorkQueueItem.h in Headers */,
- A8B91AE00CF3B372008F91FF /* DumpRenderTreeWindow.h in Headers */,
- A8B91AE20CF3B372008F91FF /* DumpRenderTreePasteboard.h in Headers */,
- A8B91BFF0CF522B4008F91FF /* CheckedMalloc.h in Headers */,
- BCB284C70CFA83C4007E533E /* PixelDumpSupport.h in Headers */,
- BCB284D00CFA83CC007E533E /* PixelDumpSupportCG.h in Headers */,
- BC47412A0D038A4C0072B006 /* JavaScriptThreading.h in Headers */,
- BC0E24E00E2D9451001B6BC2 /* AccessibilityUIElement.h in Headers */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- B5A7525B08AF4A4A00138E45 /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXHeadersBuildPhase section */
-
-/* Begin PBXNativeTarget section */
- 141BF21E096A441D00E0753C /* TestNetscapePlugIn */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 141BF221096A441E00E0753C /* Build configuration list for PBXNativeTarget "TestNetscapePlugIn" */;
- buildPhases = (
- 141BF21B096A441D00E0753C /* Resources */,
- 141BF44E096A45DD00E0753C /* Headers */,
- 141BF21C096A441D00E0753C /* Sources */,
- 141BF21D096A441D00E0753C /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = TestNetscapePlugIn;
- productName = TestNetscapePlugIn.plugin;
- productReference = 141BF233096A44CF00E0753C /* TestNetscapePlugIn.plugin */;
- productType = "com.apple.product-type.bundle";
- };
- 9340994A08540CAE007F3BC8 /* DumpRenderTree */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 149C29BF08902C6D008A9EFC /* Build configuration list for PBXNativeTarget "DumpRenderTree" */;
- buildPhases = (
- 9340994B08540CAE007F3BC8 /* Headers */,
- 9340994D08540CAE007F3BC8 /* Sources */,
- 9340994F08540CAE007F3BC8 /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = DumpRenderTree;
- productInstallPath = "$(HOME)/bin";
- productName = DumpRenderTree;
- productReference = 9340995408540CAF007F3BC8 /* DumpRenderTree */;
- productType = "com.apple.product-type.tool";
- };
- B5A7525A08AF4A4A00138E45 /* ImageDiff */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = B5A7526408AF4A4A00138E45 /* Build configuration list for PBXNativeTarget "ImageDiff" */;
- buildPhases = (
- B5A7525B08AF4A4A00138E45 /* Headers */,
- B5A7525D08AF4A4A00138E45 /* Sources */,
- B5A7525F08AF4A4A00138E45 /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = ImageDiff;
- productInstallPath = "$(HOME)/bin";
- productName = DumpRenderTree;
- productReference = B5A7526708AF4A4A00138E45 /* ImageDiff */;
- productType = "com.apple.product-type.tool";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 08FB7793FE84155DC02AAC07 /* Project object */ = {
- isa = PBXProject;
- buildConfigurationList = 149C29C308902C6D008A9EFC /* Build configuration list for PBXProject "DumpRenderTree" */;
- compatibilityVersion = "Xcode 2.4";
- hasScannedForEncodings = 1;
- mainGroup = 08FB7794FE84155DC02AAC07 /* DumpRenderTree */;
- productRefGroup = 9340995508540CAF007F3BC8 /* Products */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- A84F608D08B1370600E9745F /* All */,
- 9340994A08540CAE007F3BC8 /* DumpRenderTree */,
- B5A7525A08AF4A4A00138E45 /* ImageDiff */,
- 141BF21E096A441D00E0753C /* TestNetscapePlugIn */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- 141BF21B096A441D00E0753C /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 141BF21C096A441D00E0753C /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 1AC6C8490D07638600CD3161 /* main.cpp in Sources */,
- 1AC6C84A0D07638600CD3161 /* PluginObject.cpp in Sources */,
- 1AC6C84B0D07638600CD3161 /* TestObject.cpp in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 9340994D08540CAE007F3BC8 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- BCA18B390C9B021900114369 /* AppleScriptController.m in Sources */,
- BCA18C470C9B5B9400114369 /* DumpRenderTree.mm in Sources */,
- BCA18B7B0C9B08F100114369 /* DumpRenderTreeDraggingInfo.mm in Sources */,
- BCA18B620C9B08C200114369 /* EditingDelegate.mm in Sources */,
- BCA18B700C9B08DB00114369 /* EventSendingController.mm in Sources */,
- BCA18B640C9B08C200114369 /* FrameLoadDelegate.mm in Sources */,
- BCF6C6500C98E9C000AC063E /* GCController.cpp in Sources */,
- BCA18B230C9B014B00114369 /* GCControllerMac.mm in Sources */,
- BC0131DA0C9772010087317D /* LayoutTestController.cpp in Sources */,
- BCA18B240C9B014B00114369 /* LayoutTestControllerMac.mm in Sources */,
- BCA18B720C9B08DB00114369 /* NavigationController.m in Sources */,
- BCA18B320C9B01B400114369 /* ObjCController.m in Sources */,
- BCA18B7E0C9B08F100114369 /* ObjCPlugin.m in Sources */,
- BCA18B800C9B08F100114369 /* ObjCPluginFunction.m in Sources */,
- BCA18B660C9B08C200114369 /* PolicyDelegate.mm in Sources */,
- BCA18B680C9B08C200114369 /* ResourceLoadDelegate.mm in Sources */,
- BCA18B490C9B02C400114369 /* TextInputController.m in Sources */,
- BCA18B6A0C9B08C200114369 /* UIDelegate.mm in Sources */,
- BC9D90240C97472E0099A4A3 /* WorkQueue.cpp in Sources */,
- BCA18B260C9B015C00114369 /* WorkQueueItemMac.mm in Sources */,
- A8B91ADA0CF3B32F008F91FF /* DumpRenderTreePasteboard.m in Sources */,
- A8B91ADC0CF3B32F008F91FF /* DumpRenderTreeWindow.mm in Sources */,
- A8B91BFD0CF522B4008F91FF /* CheckedMalloc.cpp in Sources */,
- BCB284CD0CFA83C8007E533E /* PixelDumpSupportCG.cpp in Sources */,
- BCB284D60CFA83D1007E533E /* PixelDumpSupportMac.mm in Sources */,
- BC4741410D038A570072B006 /* JavaScriptThreadingPthreads.cpp in Sources */,
- BCD08B3A0E1057EF00A7D0C1 /* AccessibilityController.cpp in Sources */,
- BCD08B710E1059D200A7D0C1 /* AccessibilityControllerMac.mm in Sources */,
- BC0E24E10E2D9451001B6BC2 /* AccessibilityUIElement.cpp in Sources */,
- BC0E26150E2DA4C6001B6BC2 /* AccessibilityUIElementMac.mm in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- B5A7525D08AF4A4A00138E45 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- BCB284F60CFA84F8007E533E /* ImageDiffCG.cpp in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXTargetDependency section */
- 141BF238096A451E00E0753C /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = 141BF21E096A441D00E0753C /* TestNetscapePlugIn */;
- targetProxy = 141BF237096A451E00E0753C /* PBXContainerItemProxy */;
- };
- A84F608F08B1370E00E9745F /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = B5A7525A08AF4A4A00138E45 /* ImageDiff */;
- targetProxy = A84F608E08B1370E00E9745F /* PBXContainerItemProxy */;
- };
- A84F609108B1370E00E9745F /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = 9340994A08540CAE007F3BC8 /* DumpRenderTree */;
- targetProxy = A84F609008B1370E00E9745F /* PBXContainerItemProxy */;
- };
-/* End PBXTargetDependency section */
-
-/* Begin XCBuildConfiguration section */
- 141BF222096A441E00E0753C /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BCB283DE0CFA7C20007E533E /* TestNetscapePlugIn.xcconfig */;
- buildSettings = {
- };
- name = Debug;
- };
- 141BF223096A441E00E0753C /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BCB283DE0CFA7C20007E533E /* TestNetscapePlugIn.xcconfig */;
- buildSettings = {
- };
- name = Release;
- };
- 149C29C008902C6D008A9EFC /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BCB281F00CFA713D007E533E /* DumpRenderTree.xcconfig */;
- buildSettings = {
- };
- name = Debug;
- };
- 149C29C108902C6D008A9EFC /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BCB281F00CFA713D007E533E /* DumpRenderTree.xcconfig */;
- buildSettings = {
- };
- name = Release;
- };
- 149C29C408902C6D008A9EFC /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BCB282F40CFA7450007E533E /* DebugRelease.xcconfig */;
- buildSettings = {
- GCC_OPTIMIZATION_LEVEL = 0;
- };
- name = Debug;
- };
- 149C29C508902C6D008A9EFC /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BCB282F40CFA7450007E533E /* DebugRelease.xcconfig */;
- buildSettings = {
- };
- name = Release;
- };
- A84F609308B1371400E9745F /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = NO;
- GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = All;
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- };
- name = Debug;
- };
- A84F609408B1371400E9745F /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = YES;
- GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
- GCC_OPTIMIZATION_LEVEL = 0;
- OTHER_CFLAGS = "";
- OTHER_REZFLAGS = "";
- PRODUCT_NAME = All;
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- };
- name = Release;
- };
- B5A7526508AF4A4A00138E45 /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BCB283D80CFA7AFD007E533E /* ImageDiff.xcconfig */;
- buildSettings = {
- };
- name = Debug;
- };
- B5A7526608AF4A4A00138E45 /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BCB283D80CFA7AFD007E533E /* ImageDiff.xcconfig */;
- buildSettings = {
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 141BF221096A441E00E0753C /* Build configuration list for PBXNativeTarget "TestNetscapePlugIn" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 141BF222096A441E00E0753C /* Debug */,
- 141BF223096A441E00E0753C /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 149C29BF08902C6D008A9EFC /* Build configuration list for PBXNativeTarget "DumpRenderTree" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 149C29C008902C6D008A9EFC /* Debug */,
- 149C29C108902C6D008A9EFC /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 149C29C308902C6D008A9EFC /* Build configuration list for PBXProject "DumpRenderTree" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 149C29C408902C6D008A9EFC /* Debug */,
- 149C29C508902C6D008A9EFC /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- A84F609208B1371400E9745F /* Build configuration list for PBXAggregateTarget "All" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- A84F609308B1371400E9745F /* Debug */,
- A84F609408B1371400E9745F /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- B5A7526408AF4A4A00138E45 /* Build configuration list for PBXNativeTarget "ImageDiff" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- B5A7526508AF4A4A00138E45 /* Debug */,
- B5A7526608AF4A4A00138E45 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 08FB7793FE84155DC02AAC07 /* Project object */;
-}
diff --git a/WebKitTools/DumpRenderTree/DumpRenderTreePrefix.h b/WebKitTools/DumpRenderTree/DumpRenderTreePrefix.h
deleted file mode 100644
index 1344754..0000000
--- a/WebKitTools/DumpRenderTree/DumpRenderTreePrefix.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifdef __OBJC__
-
-#import <Foundation/Foundation.h>
-
-#endif
-
-// If we don't define these, they get defined in windef.h.
-// We want to use std::min and std::max
-#define max max
-#define min min
diff --git a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/ASCIICType.h b/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/ASCIICType.h
deleted file mode 100644
index f2258d2..0000000
--- a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/ASCIICType.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <JavaScriptCore/ASCIICType.h>
diff --git a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/Assertions.h b/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/Assertions.h
deleted file mode 100644
index 2144410..0000000
--- a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/Assertions.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <JavaScriptCore/Assertions.h>
diff --git a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/HashMap.h b/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/HashMap.h
deleted file mode 100644
index 9f262e2..0000000
--- a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/HashMap.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <JavaScriptCore/HashMap.h>
diff --git a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/HashSet.h b/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/HashSet.h
deleted file mode 100644
index cfe2d80..0000000
--- a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/HashSet.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <JavaScriptCore/HashSet.h>
diff --git a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/HashTraits.h b/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/HashTraits.h
deleted file mode 100755
index 412fa98..0000000
--- a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/HashTraits.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <JavaScriptCore/HashTraits.h>
diff --git a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/Locker.h b/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/Locker.h
deleted file mode 100644
index 75b0acd..0000000
--- a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/Locker.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <JavaScriptCore/Locker.h>
diff --git a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/MathExtras.h b/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/MathExtras.h
deleted file mode 100644
index 2955786..0000000
--- a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/MathExtras.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <JavaScriptCore/MathExtras.h>
diff --git a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/Noncopyable.h b/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/Noncopyable.h
deleted file mode 100644
index f8484d2..0000000
--- a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/Noncopyable.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <JavaScriptCore/Noncopyable.h>
diff --git a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/OwnPtr.h b/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/OwnPtr.h
deleted file mode 100644
index 9211d38..0000000
--- a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/OwnPtr.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <JavaScriptCore/OwnPtr.h>
diff --git a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/PassRefPtr.h b/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/PassRefPtr.h
deleted file mode 100644
index aafd1a2..0000000
--- a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/PassRefPtr.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <JavaScriptCore/PassRefPtr.h>
diff --git a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/Platform.h b/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/Platform.h
deleted file mode 100644
index 3b22955..0000000
--- a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/Platform.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <JavaScriptCore/Platform.h>
diff --git a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/RefCounted.h b/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/RefCounted.h
deleted file mode 100644
index 628a63b..0000000
--- a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/RefCounted.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <JavaScriptCore/RefCounted.h>
diff --git a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/RefPtr.h b/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/RefPtr.h
deleted file mode 100644
index 0ff6213..0000000
--- a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/RefPtr.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <JavaScriptCore/RefPtr.h>
diff --git a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/RetainPtr.h b/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/RetainPtr.h
deleted file mode 100644
index 65fc27b..0000000
--- a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/RetainPtr.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <JavaScriptCore/RetainPtr.h>
diff --git a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/StringExtras.h b/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/StringExtras.h
deleted file mode 100644
index 063d500..0000000
--- a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/StringExtras.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <JavaScriptCore/StringExtras.h>
diff --git a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/Threading.h b/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/Threading.h
deleted file mode 100644
index 17359e5..0000000
--- a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/Threading.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <JavaScriptCore/Threading.h>
diff --git a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/Vector.h b/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/Vector.h
deleted file mode 100644
index c6d15fd..0000000
--- a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/Vector.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <JavaScriptCore/Vector.h>
diff --git a/WebKitTools/DumpRenderTree/GCController.cpp b/WebKitTools/DumpRenderTree/GCController.cpp
deleted file mode 100644
index e1a16f2..0000000
--- a/WebKitTools/DumpRenderTree/GCController.cpp
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "GCController.h"
-
-#include <JavaScriptCore/JSObjectRef.h>
-#include <JavaScriptCore/JSRetainPtr.h>
-
-GCController::GCController()
-{
-}
-
-GCController::~GCController()
-{
-}
-
-// Static Functions
-
-static JSValueRef collectCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- GCController* controller = reinterpret_cast<GCController*>(JSObjectGetPrivate(thisObject));
- controller->collect();
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef collectOnAlternateThreadCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- bool waitUntilDone = false;
- if (argumentCount > 0)
- waitUntilDone = JSValueToBoolean(context, arguments[0]);
-
- GCController* controller = reinterpret_cast<GCController*>(JSObjectGetPrivate(thisObject));
- controller->collectOnAlternateThread(waitUntilDone);
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef getJSObjectCountCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- GCController* controller = reinterpret_cast<GCController*>(JSObjectGetPrivate(thisObject));
- size_t jsObjectCount = controller->getJSObjectCount();
-
- return JSValueMakeNumber(context, jsObjectCount);
-}
-
-// Object Creation
-
-void GCController::makeWindowObject(JSContextRef context, JSObjectRef windowObject, JSValueRef* exception)
-{
- JSRetainPtr<JSStringRef> gcControllerStr(Adopt, JSStringCreateWithUTF8CString("GCController"));
- JSValueRef gcControllerObject = JSObjectMake(context, getJSClass(), this);
- JSObjectSetProperty(context, windowObject, gcControllerStr.get(), gcControllerObject, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete, exception);
-}
-
-JSClassRef GCController::getJSClass()
-{
- static JSClassRef gcControllerClass = 0;
-
- if (!gcControllerClass) {
- JSStaticFunction* staticFunctions = GCController::staticFunctions();
- JSClassDefinition classDefinition = {
- 0, kJSClassAttributeNone, "GCController", 0, 0, staticFunctions,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- };
-
- gcControllerClass = JSClassCreate(&classDefinition);
- }
-
- return gcControllerClass;
-}
-
-JSStaticFunction* GCController::staticFunctions()
-{
- static JSStaticFunction staticFunctions[] = {
- { "collect", collectCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "collectOnAlternateThread", collectOnAlternateThreadCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "getJSObjectCount", getJSObjectCountCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { 0, 0, 0 }
- };
-
- return staticFunctions;
-}
diff --git a/WebKitTools/DumpRenderTree/GCController.h b/WebKitTools/DumpRenderTree/GCController.h
deleted file mode 100644
index 4284275..0000000
--- a/WebKitTools/DumpRenderTree/GCController.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef GCController_h
-#define GCController_h
-
-#include <JavaScriptCore/JSObjectRef.h>
-
-class GCController {
-public:
- GCController();
- ~GCController();
-
- void makeWindowObject(JSContextRef context, JSObjectRef windowObject, JSValueRef* exception);
-
- // Controller Methods - platfrom independant implementations
- void collect() const;
- void collectOnAlternateThread(bool waitUntilDone) const;
- size_t getJSObjectCount() const;
-
-private:
- static JSClassRef getJSClass();
- static JSStaticFunction* staticFunctions();
-};
-
-#endif // GCController_h
diff --git a/WebKitTools/DumpRenderTree/JavaScriptThreading.h b/WebKitTools/DumpRenderTree/JavaScriptThreading.h
deleted file mode 100644
index 43795a1..0000000
--- a/WebKitTools/DumpRenderTree/JavaScriptThreading.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2005, 2006, 2007 Apple Inc. All rights reserved.
- * (C) 2007 Graham Dennis (graham.dennis@gmail.com)
- * (C) 2007 Eric Seidel <eric@webkit.org>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef JavaScriptThreading_h
-#define JavaScriptThreading_h
-
-/* These functions start/stop threads used to abuse the JavaScript interpreter
- and assure that our JS implementation remains threadsafe */
-
-void startJavaScriptThreads();
-void stopJavaScriptThreads();
-
-#endif // JavaScriptThreading_h
diff --git a/WebKitTools/DumpRenderTree/LayoutTestController.cpp b/WebKitTools/DumpRenderTree/LayoutTestController.cpp
deleted file mode 100644
index f450543..0000000
--- a/WebKitTools/DumpRenderTree/LayoutTestController.cpp
+++ /dev/null
@@ -1,780 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "LayoutTestController.h"
-
-#include <JavaScriptCore/JSObjectRef.h>
-#include <JavaScriptCore/JSRetainPtr.h>
-#include <wtf/Assertions.h>
-#include <wtf/MathExtras.h>
-
-LayoutTestController::LayoutTestController(const std::string& testPathOrURL, const std::string& expectedPixelHash)
- : m_dumpAsText(false)
- , m_dumpAsPDF(false)
- , m_dumpBackForwardList(false)
- , m_dumpChildFrameScrollPositions(false)
- , m_dumpChildFramesAsText(false)
- , m_dumpDatabaseCallbacks(false)
- , m_dumpDOMAsWebArchive(false)
- , m_dumpSelectionRect(false)
- , m_dumpSourceAsWebArchive(false)
- , m_dumpStatusCallbacks(false)
- , m_dumpTitleChanges(false)
- , m_dumpEditingCallbacks(false)
- , m_dumpResourceLoadCallbacks(false)
- , m_dumpFrameLoadCallbacks(false)
- , m_addFileToPasteboardOnDrag(false)
- , m_callCloseOnWebViews(true)
- , m_canOpenWindows(false)
- , m_closeRemainingWindowsWhenComplete(true)
- , m_stopProvisionalFrameLoads(false)
- , m_testOnscreen(false)
- , m_testRepaint(false)
- , m_testRepaintSweepHorizontally(false)
- , m_waitToDump(false)
- , m_windowIsKey(true)
- , m_globalFlag(false)
- , m_testPathOrURL(testPathOrURL)
- , m_expectedPixelHash(expectedPixelHash)
-{
-}
-
-// Static Functions
-
-static JSValueRef dumpAsTextCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setDumpAsText(true);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef dumpAsPDFCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setDumpAsPDF(true);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef dumpBackForwardListCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setDumpBackForwardList(true);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef dumpChildFramesAsTextCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setDumpChildFramesAsText(true);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef dumpChildFrameScrollPositionsCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setDumpChildFrameScrollPositions(true);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef dumpDatabaseCallbacksCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setDumpDatabaseCallbacks(true);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef dumpDOMAsWebArchiveCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setDumpDOMAsWebArchive(true);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef dumpEditingCallbacksCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setDumpEditingCallbacks(true);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef dumpResourceLoadCallbacksCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setDumpResourceLoadCallbacks(true);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef dumpSelectionRectCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setDumpSelectionRect(true);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef dumpSourceAsWebArchiveCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setDumpSourceAsWebArchive(true);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef dumpStatusCallbacksCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setDumpStatusCallbacks(true);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef dumpTitleChangesCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setDumpTitleChanges(true);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef pathToLocalResourceCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- JSRetainPtr<JSStringRef> localPath(Adopt, JSValueToStringCopy(context, arguments[0], exception));
- ASSERT(!*exception);
-
- JSRetainPtr<JSStringRef> convertedPath(Adopt, controller->pathToLocalResource(context, localPath.get()));
- if (!convertedPath)
- return JSValueMakeUndefined(context);
-
- return JSValueMakeString(context, convertedPath.get());
-}
-
-static JSValueRef repaintSweepHorizontallyCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setTestRepaintSweepHorizontally(true);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef setCallCloseOnWebViewsCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setCallCloseOnWebViews(JSValueToBoolean(context, arguments[0]));
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef setCanOpenWindowsCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setCanOpenWindows(true);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef setCloseRemainingWindowsWhenCompleteCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setCloseRemainingWindowsWhenComplete(JSValueToBoolean(context, arguments[0]));
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef testOnscreenCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setTestOnscreen(true);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef testRepaintCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setTestRepaint(true);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef addFileToPasteboardOnDragCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setAddFileToPasteboardOnDrag(true);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef addDisallowedURLCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac implementation
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- JSRetainPtr<JSStringRef> url(Adopt, JSValueToStringCopy(context, arguments[0], exception));
- ASSERT(!*exception);
-
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->addDisallowedURL(url.get());
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef clearAllDatabasesCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac & windows implementation
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->clearAllDatabases();
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef clearBackForwardListCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac & windows implementation
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->clearBackForwardList();
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef clearPersistentUserStyleSheetCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac & windows implementation
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->clearPersistentUserStyleSheet();
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef decodeHostNameCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac implementation
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- JSRetainPtr<JSStringRef> name(Adopt, JSValueToStringCopy(context, arguments[0], exception));
- ASSERT(!*exception);
-
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- JSRetainPtr<JSStringRef> decodedHostName(Adopt, controller->copyDecodedHostName(name.get()));
- return JSValueMakeString(context, decodedHostName.get());
-}
-
-static JSValueRef displayCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac & windows implementation
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->display();
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef encodeHostNameCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac implementation
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- JSRetainPtr<JSStringRef> name(Adopt, JSValueToStringCopy(context, arguments[0], exception));
- ASSERT(!*exception);
-
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- JSRetainPtr<JSStringRef> encodedHostName(Adopt, controller->copyEncodedHostName(name.get()));
- return JSValueMakeString(context, encodedHostName.get());
-}
-
-static JSValueRef execCommandCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has Mac & Windows implementations.
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- JSRetainPtr<JSStringRef> name(Adopt, JSValueToStringCopy(context, arguments[0], exception));
- ASSERT(!*exception);
-
- // Ignoring the second parameter (userInterface), as this command emulates a manual action.
-
- JSRetainPtr<JSStringRef> value;
- if (argumentCount >= 3) {
- value.adopt(JSValueToStringCopy(context, arguments[2], exception));
- ASSERT(!*exception);
- } else
- value.adopt(JSStringCreateWithUTF8CString(""));
-
-
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->execCommand(name.get(), value.get());
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef keepWebHistoryCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac implementation
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->keepWebHistory();
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef notifyDoneCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac & windows implementation
- // May be able to be made platform independant by using shared WorkQueue
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->notifyDone();
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef queueBackNavigationCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac & windows implementation
- // May be able to be made platform independant by using shared WorkQueue
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- double howFarBackDouble = JSValueToNumber(context, arguments[0], exception);
- ASSERT(!*exception);
-
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->queueBackNavigation(static_cast<int>(howFarBackDouble));
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef queueForwardNavigationCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac & windows implementation
- // May be able to be made platform independant by using shared WorkQueue
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- double howFarForwardDouble = JSValueToNumber(context, arguments[0], exception);
- ASSERT(!*exception);
-
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->queueForwardNavigation(static_cast<int>(howFarForwardDouble));
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef queueLoadCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac & windows implementation
- // May be able to be made platform independant by using shared WorkQueue
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- JSRetainPtr<JSStringRef> url(Adopt, JSValueToStringCopy(context, arguments[0], exception));
- ASSERT(!*exception);
-
- JSRetainPtr<JSStringRef> target;
- if (argumentCount >= 2) {
- target.adopt(JSValueToStringCopy(context, arguments[1], exception));
- ASSERT(!*exception);
- } else
- target.adopt(JSStringCreateWithUTF8CString(""));
-
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->queueLoad(url.get(), target.get());
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef queueReloadCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac & windows implementation
- // May be able to be made platform independant by using shared WorkQueue
-
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->queueReload();
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef queueScriptCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac & windows implementation
- // May be able to be made platform independant by using shared WorkQueue
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- JSRetainPtr<JSStringRef> script(Adopt, JSValueToStringCopy(context, arguments[0], exception));
- ASSERT(!*exception);
-
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->queueScript(script.get());
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef setAcceptsEditingCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac & windows implementation
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setAcceptsEditing(JSValueToBoolean(context, arguments[0]));
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef setAuthorAndUserStylesEnabledCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac & windows implementation
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setAuthorAndUserStylesEnabled(JSValueToBoolean(context, arguments[0]));
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef setCustomPolicyDelegateCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac implementation
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setCustomPolicyDelegate(JSValueToBoolean(context, arguments[0]));
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef setDatabaseQuotaCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac implementation
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
-
- double quota = JSValueToNumber(context, arguments[0], NULL);
- if (!isnan(quota))
- controller->setDatabaseQuota(static_cast<unsigned long long>(quota));
-
- return JSValueMakeUndefined(context);
-
-}
-
-static JSValueRef setJavaScriptProfilingEnabledCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setJavaScriptProfilingEnabled(JSValueToBoolean(context, arguments[0]));
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef setMainFrameIsFirstResponderCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac implementation
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setMainFrameIsFirstResponder(JSValueToBoolean(context, arguments[0]));
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef setPersistentUserStyleSheetLocationCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac implementation
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- JSRetainPtr<JSStringRef> path(Adopt, JSValueToStringCopy(context, arguments[0], exception));
- ASSERT(!*exception);
-
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setPersistentUserStyleSheetLocation(path.get());
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef setPrivateBrowsingEnabledCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac & windows implementation
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setPrivateBrowsingEnabled(JSValueToBoolean(context, arguments[0]));
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef setTabKeyCyclesThroughElementsCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac & windows implementation
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setTabKeyCyclesThroughElements(JSValueToBoolean(context, arguments[0]));
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef setUseDashboardCompatibilityModeCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac implementation
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setUseDashboardCompatibilityMode(JSValueToBoolean(context, arguments[0]));
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef setUserStyleSheetEnabledCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac implementation
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setUserStyleSheetEnabled(JSValueToBoolean(context, arguments[0]));
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef setUserStyleSheetLocationCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac implementation
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- JSRetainPtr<JSStringRef> path(Adopt, JSValueToStringCopy(context, arguments[0], exception));
- ASSERT(!*exception);
-
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setUserStyleSheetLocation(path.get());
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef setWindowIsKeyCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac implementation
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setWindowIsKey(JSValueToBoolean(context, arguments[0]));
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef waitUntilDoneCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac & windows implementation
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setWaitToDump(true);
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef windowCountCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac implementation
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- int windows = controller->windowCount();
- return JSValueMakeNumber(context, windows);
-}
-
-static JSValueRef setPopupBlockingEnabledCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac & windows implementation
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setPopupBlockingEnabled(JSValueToBoolean(context, arguments[0]));
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef setSmartInsertDeleteEnabledCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setSmartInsertDeleteEnabled(JSValueToBoolean(context, arguments[0]));
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef setStopProvisionalFrameLoadsCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setStopProvisionalFrameLoads(true);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef elementDoesAutoCompleteForElementWithIdCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- JSRetainPtr<JSStringRef> elementId(Adopt, JSValueToStringCopy(context, arguments[0], exception));
- ASSERT(!*exception);
-
- bool autoCompletes = controller->elementDoesAutoCompleteForElementWithId(elementId.get());
-
- return JSValueMakeBoolean(context, autoCompletes);
-}
-
-// Static Values
-
-static JSValueRef getGlobalFlagCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
-{
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- return JSValueMakeBoolean(context, controller->globalFlag());
-}
-
-static bool setGlobalFlagCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef value, JSValueRef* exception)
-{
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
- controller->setGlobalFlag(JSValueToBoolean(context, value));
- return true;
-}
-
-static void layoutTestControllerObjectFinalize(JSObjectRef object)
-{
- LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(object));
- controller->deref();
-}
-
-// Object Creation
-
-void LayoutTestController::makeWindowObject(JSContextRef context, JSObjectRef windowObject, JSValueRef* exception)
-{
- JSRetainPtr<JSStringRef> layoutTestContollerStr(Adopt, JSStringCreateWithUTF8CString("layoutTestController"));
- ref();
- JSValueRef layoutTestContollerObject = JSObjectMake(context, getJSClass(), this);
- JSObjectSetProperty(context, windowObject, layoutTestContollerStr.get(), layoutTestContollerObject, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete, exception);
-}
-
-JSClassRef LayoutTestController::getJSClass()
-{
- static JSClassRef layoutTestControllerClass;
-
- if (!layoutTestControllerClass) {
- JSStaticValue* staticValues = LayoutTestController::staticValues();
- JSStaticFunction* staticFunctions = LayoutTestController::staticFunctions();
- JSClassDefinition classDefinition = {
- 0, kJSClassAttributeNone, "LayoutTestController", 0, staticValues, staticFunctions,
- 0, layoutTestControllerObjectFinalize, 0, 0, 0, 0, 0, 0, 0, 0, 0
- };
-
- layoutTestControllerClass = JSClassCreate(&classDefinition);
- }
-
- return layoutTestControllerClass;
-}
-
-JSStaticValue* LayoutTestController::staticValues()
-{
- static JSStaticValue staticValues[] = {
- { "globalFlag", getGlobalFlagCallback, setGlobalFlagCallback, kJSPropertyAttributeNone },
- { 0, 0, 0, 0 }
- };
- return staticValues;
-
-}
-
-JSStaticFunction* LayoutTestController::staticFunctions()
-{
- static JSStaticFunction staticFunctions[] = {
- { "addDisallowedURL", addDisallowedURLCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "addFileToPasteboardOnDrag", addFileToPasteboardOnDragCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "clearAllDatabases", clearAllDatabasesCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "clearBackForwardList", clearBackForwardListCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "clearPersistentUserStyleSheet", clearPersistentUserStyleSheetCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "decodeHostName", decodeHostNameCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "display", displayCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "dumpAsText", dumpAsTextCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "printToPDF", dumpAsPDFCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "dumpBackForwardList", dumpBackForwardListCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "dumpChildFramesAsText", dumpChildFramesAsTextCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "dumpChildFrameScrollPositions", dumpChildFrameScrollPositionsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "dumpDatabaseCallbacks", dumpDatabaseCallbacksCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "dumpDOMAsWebArchive", dumpDOMAsWebArchiveCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "dumpEditingCallbacks", dumpEditingCallbacksCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "dumpResourceLoadCallbacks", dumpResourceLoadCallbacksCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "dumpSelectionRect", dumpSelectionRectCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "dumpSourceAsWebArchive", dumpSourceAsWebArchiveCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "dumpStatusCallbacks", dumpStatusCallbacksCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "dumpTitleChanges", dumpTitleChangesCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "encodeHostName", encodeHostNameCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "execCommand", execCommandCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "keepWebHistory", keepWebHistoryCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "notifyDone", notifyDoneCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "pathToLocalResource", pathToLocalResourceCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "queueBackNavigation", queueBackNavigationCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "queueForwardNavigation", queueForwardNavigationCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "queueLoad", queueLoadCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "queueReload", queueReloadCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "queueScript", queueScriptCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "repaintSweepHorizontally", repaintSweepHorizontallyCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "setAcceptsEditing", setAcceptsEditingCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "setAuthorAndUserStylesEnabled", setAuthorAndUserStylesEnabledCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "setCallCloseOnWebViews", setCallCloseOnWebViewsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "setCanOpenWindows", setCanOpenWindowsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "setCloseRemainingWindowsWhenComplete", setCloseRemainingWindowsWhenCompleteCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "setCustomPolicyDelegate", setCustomPolicyDelegateCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "setDatabaseQuota", setDatabaseQuotaCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "setJavaScriptProfilingEnabled", setJavaScriptProfilingEnabledCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "setMainFrameIsFirstResponder", setMainFrameIsFirstResponderCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "setPersistentUserStyleSheetLocation", setPersistentUserStyleSheetLocationCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "setPrivateBrowsingEnabled", setPrivateBrowsingEnabledCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "setPopupBlockingEnabled", setPopupBlockingEnabledCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "setSmartInsertDeleteEnabled", setSmartInsertDeleteEnabledCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "setStopProvisionalFrameLoads", setStopProvisionalFrameLoadsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "setTabKeyCyclesThroughElements", setTabKeyCyclesThroughElementsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "setUseDashboardCompatibilityMode", setUseDashboardCompatibilityModeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "setUserStyleSheetEnabled", setUserStyleSheetEnabledCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "setUserStyleSheetLocation", setUserStyleSheetLocationCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "setWindowIsKey", setWindowIsKeyCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "testOnscreen", testOnscreenCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "testRepaint", testRepaintCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "waitUntilDone", waitUntilDoneCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "windowCount", windowCountCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "elementDoesAutoCompleteForElementWithId", elementDoesAutoCompleteForElementWithIdCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { 0, 0, 0 }
- };
-
- return staticFunctions;
-}
-
-
diff --git a/WebKitTools/DumpRenderTree/LayoutTestController.h b/WebKitTools/DumpRenderTree/LayoutTestController.h
deleted file mode 100644
index f27c2c6..0000000
--- a/WebKitTools/DumpRenderTree/LayoutTestController.h
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef LayoutTestController_h
-#define LayoutTestController_h
-
-#include <JavaScriptCore/JSObjectRef.h>
-#include <wtf/RefCounted.h>
-#include <string>
-
-class LayoutTestController : public RefCounted<LayoutTestController> {
-public:
- LayoutTestController(const std::string& testPathOrURL, const std::string& expectedPixelHash);
- ~LayoutTestController();
-
- void makeWindowObject(JSContextRef context, JSObjectRef windowObject, JSValueRef* exception);
-
- // Controller Methods - platfrom independant implementations
- void addDisallowedURL(JSStringRef url);
- void clearAllDatabases();
- void clearBackForwardList();
- JSStringRef copyDecodedHostName(JSStringRef name);
- JSStringRef copyEncodedHostName(JSStringRef name);
- void execCommand(JSStringRef name, JSStringRef value);
- void display();
- void keepWebHistory();
- void notifyDone();
- JSStringRef pathToLocalResource(JSContextRef, JSStringRef url);
- void queueBackNavigation(int howFarBackward);
- void queueForwardNavigation(int howFarForward);
- void queueLoad(JSStringRef url, JSStringRef target);
- void queueReload();
- void queueScript(JSStringRef url);
- void setAcceptsEditing(bool acceptsEditing);
- void setAuthorAndUserStylesEnabled(bool);
- void setCustomPolicyDelegate(bool setDelegate);
- void setDatabaseQuota(unsigned long long quota);
- void setMainFrameIsFirstResponder(bool flag);
- void setPrivateBrowsingEnabled(bool flag);
- void setPopupBlockingEnabled(bool flag);
- void setTabKeyCyclesThroughElements(bool cycles);
- void setSmartInsertDeleteEnabled(bool flag);
- void setJavaScriptProfilingEnabled(bool profilingEnabled);
- void setUseDashboardCompatibilityMode(bool flag);
- void setUserStyleSheetEnabled(bool flag);
- void setUserStyleSheetLocation(JSStringRef path);
- void setPersistentUserStyleSheetLocation(JSStringRef path);
- void clearPersistentUserStyleSheet();
- int windowCount();
-
- bool elementDoesAutoCompleteForElementWithId(JSStringRef id);
-
- bool dumpAsText() const { return m_dumpAsText; }
- void setDumpAsText(bool dumpAsText) { m_dumpAsText = dumpAsText; }
-
- bool dumpAsPDF() const { return m_dumpAsPDF; }
- void setDumpAsPDF(bool dumpAsPDF) { m_dumpAsPDF = dumpAsPDF; }
-
- bool dumpBackForwardList() const { return m_dumpBackForwardList; }
- void setDumpBackForwardList(bool dumpBackForwardList) { m_dumpBackForwardList = dumpBackForwardList; }
-
- bool dumpChildFrameScrollPositions() const { return m_dumpChildFrameScrollPositions; }
- void setDumpChildFrameScrollPositions(bool dumpChildFrameScrollPositions) { m_dumpChildFrameScrollPositions = dumpChildFrameScrollPositions; }
-
- bool dumpChildFramesAsText() const { return m_dumpChildFramesAsText; }
- void setDumpChildFramesAsText(bool dumpChildFramesAsText) { m_dumpChildFramesAsText = dumpChildFramesAsText; }
-
- bool dumpDatabaseCallbacks() const { return m_dumpDatabaseCallbacks; }
- void setDumpDatabaseCallbacks(bool dumpDatabaseCallbacks) { m_dumpDatabaseCallbacks = dumpDatabaseCallbacks; }
-
- bool dumpStatusCallbacks() const { return m_dumpStatusCallbacks; }
- void setDumpStatusCallbacks(bool dumpStatusCallbacks) { m_dumpStatusCallbacks = dumpStatusCallbacks; }
-
- bool dumpDOMAsWebArchive() const { return m_dumpDOMAsWebArchive; }
- void setDumpDOMAsWebArchive(bool dumpDOMAsWebArchive) { m_dumpDOMAsWebArchive = dumpDOMAsWebArchive; }
-
- bool dumpSelectionRect() const { return m_dumpSelectionRect; }
- void setDumpSelectionRect(bool dumpSelectionRect) { m_dumpSelectionRect = dumpSelectionRect; }
-
- bool dumpSourceAsWebArchive() const { return m_dumpSourceAsWebArchive; }
- void setDumpSourceAsWebArchive(bool dumpSourceAsWebArchive) { m_dumpSourceAsWebArchive = dumpSourceAsWebArchive; }
-
- bool dumpTitleChanges() const { return m_dumpTitleChanges; }
- void setDumpTitleChanges(bool dumpTitleChanges) { m_dumpTitleChanges = dumpTitleChanges; }
-
- bool dumpEditingCallbacks() const { return m_dumpEditingCallbacks; }
- void setDumpEditingCallbacks(bool dumpEditingCallbacks) { m_dumpEditingCallbacks = dumpEditingCallbacks; }
-
- bool dumpResourceLoadCallbacks() const { return m_dumpResourceLoadCallbacks; }
- void setDumpResourceLoadCallbacks(bool dumpResourceLoadCallbacks) { m_dumpResourceLoadCallbacks = dumpResourceLoadCallbacks; }
-
- bool dumpFrameLoadCallbacks() const { return m_dumpFrameLoadCallbacks; }
- void setDumpFrameLoadCallbacks(bool dumpFrameLoadCallbacks) { m_dumpFrameLoadCallbacks = dumpFrameLoadCallbacks; }
-
- bool addFileToPasteboardOnDrag() const { return m_addFileToPasteboardOnDrag; }
- void setAddFileToPasteboardOnDrag(bool addFileToPasteboardOnDrag) { m_addFileToPasteboardOnDrag = addFileToPasteboardOnDrag; }
-
- bool callCloseOnWebViews() const { return m_callCloseOnWebViews; }
- void setCallCloseOnWebViews(bool callCloseOnWebViews) { m_callCloseOnWebViews = callCloseOnWebViews; }
-
- bool canOpenWindows() const { return m_canOpenWindows; }
- void setCanOpenWindows(bool canOpenWindows) { m_canOpenWindows = canOpenWindows; }
-
- bool closeRemainingWindowsWhenComplete() const { return m_closeRemainingWindowsWhenComplete; }
- void setCloseRemainingWindowsWhenComplete(bool closeRemainingWindowsWhenComplete) { m_closeRemainingWindowsWhenComplete = closeRemainingWindowsWhenComplete; }
-
- bool stopProvisionalFrameLoads() const { return m_stopProvisionalFrameLoads; }
- void setStopProvisionalFrameLoads(bool stopProvisionalFrameLoads) { m_stopProvisionalFrameLoads = stopProvisionalFrameLoads; }
-
- bool testOnscreen() const { return m_testOnscreen; }
- void setTestOnscreen(bool testOnscreen) { m_testOnscreen = testOnscreen; }
-
- bool testRepaint() const { return m_testRepaint; }
- void setTestRepaint(bool testRepaint) { m_testRepaint = testRepaint; }
-
- bool testRepaintSweepHorizontally() const { return m_testRepaintSweepHorizontally; }
- void setTestRepaintSweepHorizontally(bool testRepaintSweepHorizontally) { m_testRepaintSweepHorizontally = testRepaintSweepHorizontally; }
-
- bool waitToDump() const { return m_waitToDump; }
- void setWaitToDump(bool waitToDump);
-
- bool windowIsKey() const { return m_windowIsKey; }
- void setWindowIsKey(bool windowIsKey);
-
- bool globalFlag() const { return m_globalFlag; }
- void setGlobalFlag(bool globalFlag) { m_globalFlag = globalFlag; }
-
- const std::string& testPathOrURL() const { return m_testPathOrURL; }
- const std::string& expectedPixelHash() const { return m_expectedPixelHash; }
-
-private:
- bool m_dumpAsText;
- bool m_dumpAsPDF;
- bool m_dumpBackForwardList;
- bool m_dumpChildFrameScrollPositions;
- bool m_dumpChildFramesAsText;
- bool m_dumpDatabaseCallbacks;
- bool m_dumpDOMAsWebArchive;
- bool m_dumpSelectionRect;
- bool m_dumpSourceAsWebArchive;
- bool m_dumpStatusCallbacks;
- bool m_dumpTitleChanges;
- bool m_dumpEditingCallbacks;
- bool m_dumpResourceLoadCallbacks;
- bool m_dumpFrameLoadCallbacks;
- bool m_addFileToPasteboardOnDrag;
- bool m_callCloseOnWebViews;
- bool m_canOpenWindows;
- bool m_closeRemainingWindowsWhenComplete;
- bool m_stopProvisionalFrameLoads;
- bool m_testOnscreen;
- bool m_testRepaint;
- bool m_testRepaintSweepHorizontally;
- bool m_waitToDump; // True if waitUntilDone() has been called, but notifyDone() has not yet been called.
- bool m_windowIsKey;
-
- bool m_globalFlag;
-
- std::string m_testPathOrURL;
- std::string m_expectedPixelHash; // empty string if no hash
-
- static JSClassRef getJSClass();
- static JSStaticValue* staticValues();
- static JSStaticFunction* staticFunctions();
-};
-
-#endif // LayoutTestController_h
diff --git a/WebKitTools/DumpRenderTree/Makefile b/WebKitTools/DumpRenderTree/Makefile
deleted file mode 100644
index 1f1dbbc..0000000
--- a/WebKitTools/DumpRenderTree/Makefile
+++ /dev/null
@@ -1,2 +0,0 @@
-SCRIPTS_PATH = ../Scripts
-include ../../Makefile.shared
diff --git a/WebKitTools/DumpRenderTree/PixelDumpSupport.h b/WebKitTools/DumpRenderTree/PixelDumpSupport.h
deleted file mode 100644
index d4f8948..0000000
--- a/WebKitTools/DumpRenderTree/PixelDumpSupport.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef PixelDumpSupport_h
-#define PixelDumpSupport_h
-
-#include <string>
-
-void dumpWebViewAsPixelsAndCompareWithExpected(const std::string& expectedHash);
-
-#if PLATFORM(MAC)
-
-// Can be used as a signal handler
-void restoreMainDisplayColorProfile(int ignored);
-
-// May change your color space, requiring a call to restoreMainDisplayColorProfile
-void setupMainDisplayColorProfile();
-
-#endif
-
-#endif // PixelDumpSupport_h
diff --git a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/Info.plist b/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/Info.plist
deleted file mode 100644
index 1f4cfe3..0000000
--- a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/Info.plist
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>TestNetscapePlugIn</string>
- <key>CFBundleGetInfoString</key>
- <string>420+, Copyright 2006 Apple Computer, Inc.</string>
- <key>CFBundleIconFile</key>
- <string></string>
- <key>CFBundleIdentifier</key>
- <string>com.apple.testnetscapeplugin</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundlePackageType</key>
- <string>BRPL</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1.0</string>
- <key>CFPlugInDynamicRegisterFunction</key>
- <string></string>
- <key>CFPlugInDynamicRegistration</key>
- <string>NO</string>
- <key>CFPlugInFactories</key>
- <dict>
- <key>00000000-0000-0000-0000-000000000000</key>
- <string>MyFactoryFunction</string>
- </dict>
- <key>CFPlugInTypes</key>
- <dict>
- <key>00000000-0000-0000-0000-000000000000</key>
- <array>
- <string>00000000-0000-0000-0000-000000000000</string>
- </array>
- </dict>
- <key>CFPlugInUnloadFunction</key>
- <string></string>
- <key>WebPluginDescription</key>
- <string>Simple Netscape plug-in that handles test content for WebKit</string>
- <key>WebPluginMIMETypes</key>
- <dict>
- <key>application/x-webkit-test-netscape</key>
- <dict>
- <key>WebPluginExtensions</key>
- <array>
- <string>testnetscape</string>
- </array>
- <key>WebPluginTypeDescription</key>
- <string>test netscape content</string>
- </dict>
- </dict>
- <key>WebPluginName</key>
- <string>WebKit Test PlugIn</string>
-</dict>
-</plist>
diff --git a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp b/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp
deleted file mode 100644
index 11fb30d..0000000
--- a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp
+++ /dev/null
@@ -1,676 +0,0 @@
-/*
- * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "PluginObject.h"
-
-#include "TestObject.h"
-#include <assert.h>
-#include <stdio.h>
-
-static void pluginInvalidate(NPObject*);
-static bool pluginHasProperty(NPObject*, NPIdentifier name);
-static bool pluginHasMethod(NPObject*, NPIdentifier name);
-static bool pluginGetProperty(NPObject*, NPIdentifier name, NPVariant*);
-static bool pluginSetProperty(NPObject*, NPIdentifier name, const NPVariant*);
-static bool pluginInvoke(NPObject*, NPIdentifier name, const NPVariant* args, uint32_t argCount, NPVariant* result);
-static bool pluginInvokeDefault(NPObject*, const NPVariant* args, uint32_t argCount, NPVariant* result);
-static NPObject* pluginAllocate(NPP npp, NPClass*);
-static void pluginDeallocate(NPObject*);
-
-NPNetscapeFuncs* browser;
-
-static NPClass pluginClass = {
- NP_CLASS_STRUCT_VERSION,
- pluginAllocate,
- pluginDeallocate,
- pluginInvalidate,
- pluginHasMethod,
- pluginInvoke,
- pluginInvokeDefault,
- pluginHasProperty,
- pluginGetProperty,
- pluginSetProperty,
-};
-
-NPClass *getPluginClass(void)
-{
- return &pluginClass;
-}
-
-static bool identifiersInitialized = false;
-
-#define ID_PROPERTY_PROPERTY 0
-#define ID_PROPERTY_EVENT_LOGGING 1
-#define ID_PROPERTY_HAS_STREAM 2
-#define ID_PROPERTY_TEST_OBJECT 3
-#define ID_PROPERTY_LOG_DESTROY 4
-#define ID_PROPERTY_RETURN_ERROR_FROM_NEWSTREAM 5
-#define NUM_PROPERTY_IDENTIFIERS 6
-
-static NPIdentifier pluginPropertyIdentifiers[NUM_PROPERTY_IDENTIFIERS];
-static const NPUTF8 *pluginPropertyIdentifierNames[NUM_PROPERTY_IDENTIFIERS] = {
- "property",
- "eventLoggingEnabled",
- "hasStream",
- "testObject",
- "logDestroy",
- "returnErrorFromNewStream",
-};
-
-#define ID_TEST_CALLBACK_METHOD 0
-#define ID_TEST_GETURL 1
-#define ID_REMOVE_DEFAULT_METHOD 2
-#define ID_TEST_DOM_ACCESS 3
-#define ID_TEST_GET_URL_NOTIFY 4
-#define ID_TEST_INVOKE_DEFAULT 5
-#define ID_DESTROY_STREAM 6
-#define ID_TEST_ENUMERATE 7
-#define ID_TEST_GETINTIDENTIFIER 8
-#define ID_TEST_GET_PROPERTY 9
-#define ID_TEST_EVALUATE 10
-#define ID_TEST_GET_PROPERTY_RETURN_VALUE 11
-#define ID_TEST_IDENTIFIER_TO_STRING 12
-#define ID_TEST_IDENTIFIER_TO_INT 13
-#define ID_TEST_POSTURL_FILE 14
-#define ID_TEST_CONSTRUCT 15
-#define NUM_METHOD_IDENTIFIERS 16
-
-static NPIdentifier pluginMethodIdentifiers[NUM_METHOD_IDENTIFIERS];
-static const NPUTF8 *pluginMethodIdentifierNames[NUM_METHOD_IDENTIFIERS] = {
- "testCallback",
- "getURL",
- "removeDefaultMethod",
- "testDOMAccess",
- "getURLNotify",
- "testInvokeDefault",
- "destroyStream",
- "testEnumerate",
- "testGetIntIdentifier",
- "testGetProperty",
- "testEvaluate",
- "testGetPropertyReturnValue",
- "testIdentifierToString",
- "testIdentifierToInt",
- "testPostURLFile",
- "testConstruct",
-};
-
-static NPUTF8* createCStringFromNPVariant(const NPVariant* variant)
-{
- size_t length = NPVARIANT_TO_STRING(*variant).UTF8Length;
- NPUTF8* result = (NPUTF8*)malloc(length + 1);
- memcpy(result, NPVARIANT_TO_STRING(*variant).UTF8Characters, length);
- result[length] = '\0';
- return result;
-}
-
-static void initializeIdentifiers(void)
-{
- browser->getstringidentifiers(pluginPropertyIdentifierNames, NUM_PROPERTY_IDENTIFIERS, pluginPropertyIdentifiers);
- browser->getstringidentifiers(pluginMethodIdentifierNames, NUM_METHOD_IDENTIFIERS, pluginMethodIdentifiers);
-}
-
-static bool pluginHasProperty(NPObject *obj, NPIdentifier name)
-{
- for (int i = 0; i < NUM_PROPERTY_IDENTIFIERS; i++)
- if (name == pluginPropertyIdentifiers[i])
- return true;
- return false;
-}
-
-static bool pluginHasMethod(NPObject *obj, NPIdentifier name)
-{
- for (int i = 0; i < NUM_METHOD_IDENTIFIERS; i++)
- if (name == pluginMethodIdentifiers[i])
- return true;
- return false;
-}
-
-static bool pluginGetProperty(NPObject* obj, NPIdentifier name, NPVariant* result)
-{
- PluginObject* plugin = reinterpret_cast<PluginObject*>(obj);
- if (name == pluginPropertyIdentifiers[ID_PROPERTY_PROPERTY]) {
- STRINGZ_TO_NPVARIANT("property", *result);
- return true;
- } else if (name == pluginPropertyIdentifiers[ID_PROPERTY_EVENT_LOGGING]) {
- BOOLEAN_TO_NPVARIANT(plugin->eventLogging, *result);
- return true;
- } else if (name == pluginPropertyIdentifiers[ID_PROPERTY_LOG_DESTROY]) {
- BOOLEAN_TO_NPVARIANT(plugin->logDestroy, *result);
- return true;
- } else if (name == pluginPropertyIdentifiers[ID_PROPERTY_HAS_STREAM]) {
- BOOLEAN_TO_NPVARIANT(plugin->stream != 0, *result);
- return true;
- } else if (name == pluginPropertyIdentifiers[ID_PROPERTY_TEST_OBJECT]) {
- NPObject* testObject = plugin->testObject;
- browser->retainobject(testObject);
- OBJECT_TO_NPVARIANT(testObject, *result);
- return true;
- } else if (name == pluginPropertyIdentifiers[ID_PROPERTY_RETURN_ERROR_FROM_NEWSTREAM]) {
- BOOLEAN_TO_NPVARIANT(plugin->returnErrorFromNewStream, *result);
- return true;
- }
- return false;
-}
-
-static bool pluginSetProperty(NPObject* obj, NPIdentifier name, const NPVariant* variant)
-{
- PluginObject* plugin = reinterpret_cast<PluginObject*>(obj);
- if (name == pluginPropertyIdentifiers[ID_PROPERTY_EVENT_LOGGING]) {
- plugin->eventLogging = NPVARIANT_TO_BOOLEAN(*variant);
- return true;
- } else if (name == pluginPropertyIdentifiers[ID_PROPERTY_LOG_DESTROY]) {
- plugin->logDestroy = NPVARIANT_TO_BOOLEAN(*variant);
- return true;
- } else if (name == pluginPropertyIdentifiers[ID_PROPERTY_RETURN_ERROR_FROM_NEWSTREAM]) {
- plugin->returnErrorFromNewStream = NPVARIANT_TO_BOOLEAN(*variant);
- return true;
- }
-
- return false;
-}
-
-static bool testDOMAccess(PluginObject* obj, const NPVariant*, uint32_t, NPVariant* result)
-{
- // Get plug-in's DOM element
- NPObject* elementObject;
- if (browser->getvalue(obj->npp, NPNVPluginElementNPObject, &elementObject) == NPERR_NO_ERROR) {
- // Get style
- NPVariant styleVariant;
- NPIdentifier styleIdentifier = browser->getstringidentifier("style");
- if (browser->getproperty(obj->npp, elementObject, styleIdentifier, &styleVariant) && NPVARIANT_IS_OBJECT(styleVariant)) {
- // Set style.border
- NPIdentifier borderIdentifier = browser->getstringidentifier("border");
- NPVariant borderVariant;
- STRINGZ_TO_NPVARIANT("3px solid red", borderVariant);
- browser->setproperty(obj->npp, NPVARIANT_TO_OBJECT(styleVariant), borderIdentifier, &borderVariant);
- browser->releasevariantvalue(&styleVariant);
- }
-
- browser->releaseobject(elementObject);
- }
- VOID_TO_NPVARIANT(*result);
- return true;
-}
-
-static NPIdentifier stringVariantToIdentifier(NPVariant variant)
-{
- assert(NPVARIANT_IS_STRING(variant));
- NPUTF8* utf8String = createCStringFromNPVariant(&variant);
- NPIdentifier identifier = browser->getstringidentifier(utf8String);
- free(utf8String);
- return identifier;
-}
-
-static NPIdentifier int32VariantToIdentifier(NPVariant variant)
-{
- assert(NPVARIANT_IS_INT32(variant));
- int32 integer = NPVARIANT_TO_INT32(variant);
- return browser->getintidentifier(integer);
-}
-
-static NPIdentifier doubleVariantToIdentifier(NPVariant variant)
-{
- assert(NPVARIANT_IS_DOUBLE(variant));
- double value = NPVARIANT_TO_DOUBLE(variant);
- // Sadly there is no "getdoubleidentifier"
- int32 integer = static_cast<int32>(value);
- return browser->getintidentifier(integer);
-}
-
-static NPIdentifier variantToIdentifier(NPVariant variant)
-{
- if (NPVARIANT_IS_STRING(variant))
- return stringVariantToIdentifier(variant);
- else if (NPVARIANT_IS_INT32(variant))
- return int32VariantToIdentifier(variant);
- else if (NPVARIANT_IS_DOUBLE(variant))
- return doubleVariantToIdentifier(variant);
- return 0;
-}
-
-static bool testIdentifierToString(PluginObject*, const NPVariant* args, uint32_t argCount, NPVariant* result)
-{
- if (argCount != 1)
- return false;
- NPIdentifier identifier = variantToIdentifier(args[0]);
- if (!identifier)
- return false;
- NPUTF8* utf8String = browser->utf8fromidentifier(identifier);
- if (!utf8String)
- return false;
- STRINGZ_TO_NPVARIANT(utf8String, *result);
- return true;
-}
-
-static bool testIdentifierToInt(PluginObject*, const NPVariant* args, uint32_t argCount, NPVariant* result)
-{
- if (argCount != 1)
- return false;
- NPIdentifier identifier = variantToIdentifier(args[0]);
- if (!identifier)
- return false;
- int32 integer = browser->intfromidentifier(identifier);
- INT32_TO_NPVARIANT(integer, *result);
- return true;
-}
-
-static bool testCallback(PluginObject* obj, const NPVariant* args, uint32_t argCount, NPVariant* result)
-{
- if (argCount == 0 || !NPVARIANT_IS_STRING(args[0]))
- return false;
-
- NPObject* windowScriptObject;
- browser->getvalue(obj->npp, NPNVWindowNPObject, &windowScriptObject);
-
- NPUTF8* callbackString = createCStringFromNPVariant(&args[0]);
- NPIdentifier callbackIdentifier = browser->getstringidentifier(callbackString);
- free(callbackString);
-
- NPVariant browserResult;
- browser->invoke(obj->npp, windowScriptObject, callbackIdentifier, 0, 0, &browserResult);
- browser->releasevariantvalue(&browserResult);
-
- browser->releaseobject(windowScriptObject);
-
- VOID_TO_NPVARIANT(*result);
- return true;
-}
-
-static bool getURL(PluginObject* obj, const NPVariant* args, uint32_t argCount, NPVariant* result)
-{
- if (argCount == 2 && NPVARIANT_IS_STRING(args[0]) && NPVARIANT_IS_STRING(args[1])) {
- NPUTF8* urlString = createCStringFromNPVariant(&args[0]);
- NPUTF8* targetString = createCStringFromNPVariant(&args[1]);
- NPError npErr = browser->geturl(obj->npp, urlString, targetString);
- free(urlString);
- free(targetString);
-
- INT32_TO_NPVARIANT(npErr, *result);
- return true;
- } else if (argCount == 1 && NPVARIANT_IS_STRING(args[0])) {
- NPUTF8* urlString = createCStringFromNPVariant(&args[0]);
- NPError npErr = browser->geturl(obj->npp, urlString, 0);
- free(urlString);
-
- INT32_TO_NPVARIANT(npErr, *result);
- return true;
- }
- return false;
-}
-
-static bool removeDefaultMethod(PluginObject*, const NPVariant* args, uint32_t argCount, NPVariant* result)
-{
- pluginClass.invokeDefault = 0;
- VOID_TO_NPVARIANT(*result);
- return true;
-}
-
-static bool getURLNotify(PluginObject* obj, const NPVariant* args, uint32_t argCount, NPVariant* result)
-{
- if (argCount != 3 || !NPVARIANT_IS_STRING(args[0])
- || (!NPVARIANT_IS_STRING(args[1]) && !NPVARIANT_IS_NULL(args[1]))
- || !NPVARIANT_IS_STRING(args[2]))
- return false;
-
- NPUTF8* urlString = createCStringFromNPVariant(&args[0]);
- NPUTF8* targetString = (NPVARIANT_IS_STRING(args[1]) ? createCStringFromNPVariant(&args[1]) : NULL);
- NPUTF8* callbackString = createCStringFromNPVariant(&args[2]);
-
- NPIdentifier callbackIdentifier = browser->getstringidentifier(callbackString);
- browser->geturlnotify(obj->npp, urlString, targetString, callbackIdentifier);
-
- free(urlString);
- free(targetString);
- free(callbackString);
-
- VOID_TO_NPVARIANT(*result);
- return true;
-}
-
-static bool testInvokeDefault(PluginObject* obj, const NPVariant* args, uint32_t argCount, NPVariant* result)
-{
- if (!NPVARIANT_IS_OBJECT(args[0]))
- return false;
-
- NPObject *callback = NPVARIANT_TO_OBJECT(args[0]);
-
- NPVariant invokeArgs[1];
- NPVariant browserResult;
-
- STRINGZ_TO_NPVARIANT("test", invokeArgs[0]);
- bool retval = browser->invokeDefault(obj->npp, callback, invokeArgs, 1, &browserResult);
-
- if (retval)
- browser->releasevariantvalue(&browserResult);
-
- BOOLEAN_TO_NPVARIANT(retval, *result);
- return true;
-}
-
-static bool destroyStream(PluginObject* obj, const NPVariant* args, uint32_t argCount, NPVariant* result)
-{
- NPError npError = browser->destroystream(obj->npp, obj->stream, NPRES_USER_BREAK);
- INT32_TO_NPVARIANT(npError, *result);
- return true;
-}
-
-static bool testEnumerate(PluginObject* obj, const NPVariant* args, uint32_t argCount, NPVariant* result)
-{
- if (argCount != 2 || !NPVARIANT_IS_OBJECT(args[0]) || !NPVARIANT_IS_OBJECT(args[1]))
- return false;
-
- uint32_t count;
- NPIdentifier* identifiers;
- if (browser->enumerate(obj->npp, NPVARIANT_TO_OBJECT(args[0]), &identifiers, &count)) {
- NPObject* outArray = NPVARIANT_TO_OBJECT(args[1]);
- NPIdentifier pushIdentifier = browser->getstringidentifier("push");
-
- for (uint32_t i = 0; i < count; i++) {
- NPUTF8* string = browser->utf8fromidentifier(identifiers[i]);
-
- if (!string)
- continue;
-
- NPVariant args[1];
- STRINGZ_TO_NPVARIANT(string, args[0]);
- NPVariant browserResult;
- browser->invoke(obj->npp, outArray, pushIdentifier, args, 1, &browserResult);
- browser->releasevariantvalue(&browserResult);
- browser->memfree(string);
- }
-
- browser->memfree(identifiers);
- }
-
- VOID_TO_NPVARIANT(*result);
- return true;
-}
-
-static bool testGetIntIdentifier(PluginObject*, const NPVariant* args, uint32_t argCount, NPVariant* result)
-{
- if (argCount != 1 || !NPVARIANT_IS_DOUBLE(args[0]))
- return false;
-
- NPIdentifier identifier = browser->getintidentifier((int)NPVARIANT_TO_DOUBLE(args[0]));
- INT32_TO_NPVARIANT((int32)(long long)identifier, *result);
- return true;
-}
-
-static bool testGetProperty(PluginObject* obj, const NPVariant* args, uint32_t argCount, NPVariant* result)
-{
- if (argCount == 0)
- return false;
-
- NPObject *object;
- browser->getvalue(obj->npp, NPNVWindowNPObject, &object);
-
- for (uint32_t i = 0; i < argCount; i++) {
- assert(NPVARIANT_IS_STRING(args[i]));
- NPUTF8* propertyString = createCStringFromNPVariant(&args[i]);
- NPIdentifier propertyIdentifier = browser->getstringidentifier(propertyString);
- free(propertyString);
-
- NPVariant variant;
- bool retval = browser->getproperty(obj->npp, object, propertyIdentifier, &variant);
- browser->releaseobject(object);
-
- if (!retval)
- break;
-
- if (i + 1 < argCount) {
- assert(NPVARIANT_IS_OBJECT(variant));
- object = NPVARIANT_TO_OBJECT(variant);
- } else {
- *result = variant;
- return true;
- }
- }
-
- VOID_TO_NPVARIANT(*result);
- return false;
-}
-
-static bool testEvaluate(PluginObject* obj, const NPVariant* args, uint32_t argCount, NPVariant* result)
-{
- if (argCount != 1 || !NPVARIANT_IS_STRING(args[0]))
- return false;
- NPObject* windowScriptObject;
- browser->getvalue(obj->npp, NPNVWindowNPObject, &windowScriptObject);
-
- NPString s = NPVARIANT_TO_STRING(args[0]);
-
- bool retval = browser->evaluate(obj->npp, windowScriptObject, &s, result);
- browser->releaseobject(windowScriptObject);
- return retval;
-}
-
-static bool testGetPropertyReturnValue(PluginObject* obj, const NPVariant* args, uint32_t argCount, NPVariant* result)
-{
- if (argCount != 2 || !NPVARIANT_IS_OBJECT(args[0]) || !NPVARIANT_IS_STRING(args[1]))
- return false;
-
- NPUTF8* propertyString = createCStringFromNPVariant(&args[1]);
- NPIdentifier propertyIdentifier = browser->getstringidentifier(propertyString);
- free(propertyString);
-
- NPVariant variant;
- bool retval = browser->getproperty(obj->npp, NPVARIANT_TO_OBJECT(args[0]), propertyIdentifier, &variant);
- if (retval)
- browser->releasevariantvalue(&variant);
-
- BOOLEAN_TO_NPVARIANT(retval, *result);
- return true;
-}
-
-static char* toCString(const NPString& string)
-{
- char* result = static_cast<char*>(malloc(string.UTF8Length + 1));
- memcpy(result, string.UTF8Characters, string.UTF8Length);
- result[string.UTF8Length] = '\0';
-
- return result;
-}
-
-static bool testPostURLFile(PluginObject* obj, const NPVariant* args, uint32_t argCount, NPVariant* result)
-{
- if (argCount != 4 || !NPVARIANT_IS_STRING(args[0]) || !NPVARIANT_IS_STRING(args[1]) || !NPVARIANT_IS_STRING(args[2]) || !NPVARIANT_IS_STRING(args[3]))
- return false;
-
- NPString urlString = NPVARIANT_TO_STRING(args[0]);
- char* url = toCString(urlString);
-
- NPString targetString = NPVARIANT_TO_STRING(args[1]);
- char* target = toCString(targetString);
-
- NPString pathString = NPVARIANT_TO_STRING(args[2]);
- char* path = toCString(pathString);
-
- NPString contentsString = NPVARIANT_TO_STRING(args[3]);
-
- FILE* tempFile = fopen(path, "w");
- if (!tempFile)
- return false;
-
- fwrite(contentsString.UTF8Characters, contentsString.UTF8Length, 1, tempFile);
- fclose(tempFile);
-
- NPError error = browser->posturl(obj->npp, url, target, pathString.UTF8Length, path, TRUE);
-
- free(path);
- free(target);
- free(url);
-
- BOOLEAN_TO_NPVARIANT(error == NPERR_NO_ERROR, *result);
- return true;
-}
-
-static bool testConstruct(PluginObject* obj, const NPVariant* args, uint32_t argCount, NPVariant* result)
-{
- if (!argCount || !NPVARIANT_IS_OBJECT(args[0]))
- return false;
-
- return browser->construct(obj->npp, NPVARIANT_TO_OBJECT(args[0]), args + 1, argCount - 1, result);
-}
-
-static bool pluginInvoke(NPObject* header, NPIdentifier name, const NPVariant* args, uint32_t argCount, NPVariant* result)
-{
- PluginObject* plugin = reinterpret_cast<PluginObject*>(header);
- if (name == pluginMethodIdentifiers[ID_TEST_CALLBACK_METHOD])
- return testCallback(plugin, args, argCount, result);
- else if (name == pluginMethodIdentifiers[ID_TEST_GETURL])
- return getURL(plugin, args, argCount, result);
- else if (name == pluginMethodIdentifiers[ID_REMOVE_DEFAULT_METHOD])
- return removeDefaultMethod(plugin, args, argCount, result);
- else if (name == pluginMethodIdentifiers[ID_TEST_DOM_ACCESS])
- return testDOMAccess(plugin, args, argCount, result);
- else if (name == pluginMethodIdentifiers[ID_TEST_GET_URL_NOTIFY])
- return getURLNotify(plugin, args, argCount, result);
- else if (name == pluginMethodIdentifiers[ID_TEST_INVOKE_DEFAULT])
- return testInvokeDefault(plugin, args, argCount, result);
- else if (name == pluginMethodIdentifiers[ID_TEST_ENUMERATE])
- return testEnumerate(plugin, args, argCount, result);
- else if (name == pluginMethodIdentifiers[ID_DESTROY_STREAM])
- return destroyStream(plugin, args, argCount, result);
- else if (name == pluginMethodIdentifiers[ID_TEST_GETINTIDENTIFIER])
- return testGetIntIdentifier(plugin, args, argCount, result);
- else if (name == pluginMethodIdentifiers[ID_TEST_EVALUATE])
- return testEvaluate(plugin, args, argCount, result);
- else if (name == pluginMethodIdentifiers[ID_TEST_GET_PROPERTY])
- return testGetProperty(plugin, args, argCount, result);
- else if (name == pluginMethodIdentifiers[ID_TEST_GET_PROPERTY_RETURN_VALUE])
- return testGetPropertyReturnValue(plugin, args, argCount, result);
- else if (name == pluginMethodIdentifiers[ID_TEST_IDENTIFIER_TO_STRING])
- return testIdentifierToString(plugin, args, argCount, result);
- else if (name == pluginMethodIdentifiers[ID_TEST_IDENTIFIER_TO_INT])
- return testIdentifierToInt(plugin, args, argCount, result);
- else if (name == pluginMethodIdentifiers[ID_TEST_POSTURL_FILE])
- return testPostURLFile(plugin, args, argCount, result);
- else if (name == pluginMethodIdentifiers[ID_TEST_CONSTRUCT])
- return testConstruct(plugin, args, argCount, result);
-
- return false;
-}
-
-static bool pluginInvokeDefault(NPObject* obj, const NPVariant* args, uint32_t argCount, NPVariant* result)
-{
- INT32_TO_NPVARIANT(1, *result);
- return true;
-}
-
-static void pluginInvalidate(NPObject* obj)
-{
-}
-
-static NPObject *pluginAllocate(NPP npp, NPClass *theClass)
-{
- PluginObject* newInstance = (PluginObject*)malloc(sizeof(PluginObject));
-
- if (!identifiersInitialized) {
- identifiersInitialized = true;
- initializeIdentifiers();
- }
-
- newInstance->npp = npp;
- newInstance->testObject = browser->createobject(npp, getTestClass());
- newInstance->eventLogging = FALSE;
- newInstance->onStreamLoad = 0;
- newInstance->onStreamDestroy = 0;
- newInstance->onURLNotify = 0;
- newInstance->logDestroy = FALSE;
- newInstance->logSetWindow = FALSE;
- newInstance->returnErrorFromNewStream = FALSE;
- newInstance->stream = 0;
-
- newInstance->firstUrl = NULL;
- newInstance->firstHeaders = NULL;
- newInstance->lastUrl = NULL;
- newInstance->lastHeaders = NULL;
-
- return (NPObject*)newInstance;
-}
-
-static void pluginDeallocate(NPObject* header)
-{
- PluginObject* plugin = reinterpret_cast<PluginObject*>(header);
- browser->releaseobject(plugin->testObject);
-
- free(plugin->firstUrl);
- free(plugin->firstHeaders);
- free(plugin->lastUrl);
- free(plugin->lastHeaders);
- free(plugin);
-}
-
-void handleCallback(PluginObject* object, const char *url, NPReason reason, void *notifyData)
-{
- assert(object);
-
- NPVariant args[2];
-
- NPObject *windowScriptObject;
- browser->getvalue(object->npp, NPNVWindowNPObject, &windowScriptObject);
-
- NPIdentifier callbackIdentifier = notifyData;
-
- INT32_TO_NPVARIANT(reason, args[0]);
-
- char *strHdr = NULL;
- if (object->firstUrl && object->firstHeaders && object->lastUrl && object->lastHeaders) {
- // Format expected by JavaScript validator: four fields separated by \n\n:
- // First URL; first header block; last URL; last header block.
- // Note that header blocks already end with \n due to how NPStream::headers works.
- int len = strlen(object->firstUrl) + 2
- + strlen(object->firstHeaders) + 1
- + strlen(object->lastUrl) + 2
- + strlen(object->lastHeaders) + 1;
- strHdr = (char*)malloc(len + 1);
- snprintf(strHdr, len + 1, "%s\n\n%s\n%s\n\n%s\n",
- object->firstUrl, object->firstHeaders, object->lastUrl, object->lastHeaders);
- STRINGN_TO_NPVARIANT(strHdr, len, args[1]);
- } else
- NULL_TO_NPVARIANT(args[1]);
-
- NPVariant browserResult;
- browser->invoke(object->npp, windowScriptObject, callbackIdentifier, args, 2, &browserResult);
- browser->releasevariantvalue(&browserResult);
-
- free(strHdr);
-}
-
-void notifyStream(PluginObject* object, const char *url, const char *headers)
-{
- if (object->firstUrl == NULL) {
- if (url)
- object->firstUrl = strdup(url);
- if (headers)
- object->firstHeaders = strdup(headers);
- } else {
- free(object->lastUrl);
- free(object->lastHeaders);
- object->lastUrl = (url ? strdup(url) : NULL);
- object->lastHeaders = (headers ? strdup(headers) : NULL);
- }
-}
diff --git a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.cpp b/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.cpp
deleted file mode 100644
index 3e85e2c..0000000
--- a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.cpp
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "TestObject.h"
-#include "PluginObject.h"
-
-static bool testEnumerate(NPObject *npobj, NPIdentifier **value, uint32_t *count);
-static bool testHasProperty(NPObject *obj, NPIdentifier name);
-static bool testGetProperty(NPObject*, NPIdentifier name, NPVariant*);
-static NPObject *testAllocate(NPP npp, NPClass *theClass);
-static void testDeallocate(NPObject *obj);
-static bool testConstruct(NPObject* obj, const NPVariant* args, uint32_t argCount, NPVariant* result);
-
-static NPClass testClass = {
- NP_CLASS_STRUCT_VERSION,
- testAllocate,
- testDeallocate,
- 0,
- 0,
- 0,
- 0,
- testHasProperty,
- testGetProperty,
- 0,
- 0,
- testEnumerate,
- testConstruct
-};
-
-NPClass *getTestClass(void)
-{
- return &testClass;
-}
-
-static bool identifiersInitialized = false;
-
-#define ID_OBJECT_POINTER 2
-
-#define NUM_ENUMERATABLE_TEST_IDENTIFIERS 2
-#define NUM_TEST_IDENTIFIERS 3
-
-static NPIdentifier testIdentifiers[NUM_TEST_IDENTIFIERS];
-static const NPUTF8 *testIdentifierNames[NUM_TEST_IDENTIFIERS] = {
- "foo",
- "bar",
- "objectPointer",
-};
-
-static void initializeIdentifiers(void)
-{
- browser->getstringidentifiers(testIdentifierNames, NUM_TEST_IDENTIFIERS, testIdentifiers);
-}
-
-static NPObject *testAllocate(NPP npp, NPClass *theClass)
-{
- NPObject *newInstance = static_cast<NPObject*>(malloc(sizeof(NPObject)));
-
- if (!identifiersInitialized) {
- identifiersInitialized = true;
- initializeIdentifiers();
- }
-
- return newInstance;
-}
-
-static void testDeallocate(NPObject *obj)
-{
- free(obj);
-}
-
-static bool testHasProperty(NPObject *obj, NPIdentifier name)
-{
- for (unsigned i = 0; i < NUM_TEST_IDENTIFIERS; i++) {
- if (testIdentifiers[i] == name)
- return true;
- }
-
- return false;
-}
-
-static bool testGetProperty(NPObject* npobj, NPIdentifier name, NPVariant* result)
-{
- if (name == testIdentifiers[ID_OBJECT_POINTER]) {
- int32_t objectPointer = static_cast<int32_t>(reinterpret_cast<long long>(npobj));
-
- INT32_TO_NPVARIANT(objectPointer, *result);
- return true;
- }
-
- return false;
-}
-
-
-static bool testEnumerate(NPObject *npobj, NPIdentifier **value, uint32_t *count)
-{
- *count = NUM_TEST_IDENTIFIERS;
-
- *value = (NPIdentifier*)browser->memalloc(NUM_ENUMERATABLE_TEST_IDENTIFIERS * sizeof(NPIdentifier));
- memcpy(*value, testIdentifiers, sizeof(NPIdentifier) * NUM_ENUMERATABLE_TEST_IDENTIFIERS);
-
- return true;
-}
-
-static bool testConstruct(NPObject* npobj, const NPVariant* args, uint32_t argCount, NPVariant* result)
-{
- browser->retainobject(npobj);
-
- // Just return the same object.
- OBJECT_TO_NPVARIANT(npobj, *result);
- return true;
-}
-
-
diff --git a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp b/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp
deleted file mode 100644
index bb98ba2..0000000
--- a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp
+++ /dev/null
@@ -1,328 +0,0 @@
-/*
- * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "PluginObject.h"
-
-#if __LP64__
-#define USE_COCOA_EVENT_MODEL 1
-#endif
-
-// Mach-o entry points
-extern "C" {
- NPError NP_Initialize(NPNetscapeFuncs *browserFuncs);
- NPError NP_GetEntryPoints(NPPluginFuncs *pluginFuncs);
- void NP_Shutdown(void);
-}
-
-// Mach-o entry points
-NPError NP_Initialize(NPNetscapeFuncs *browserFuncs)
-{
- browser = browserFuncs;
- return NPERR_NO_ERROR;
-}
-
-NPError NP_GetEntryPoints(NPPluginFuncs *pluginFuncs)
-{
- pluginFuncs->version = 11;
- pluginFuncs->size = sizeof(pluginFuncs);
- pluginFuncs->newp = NPP_New;
- pluginFuncs->destroy = NPP_Destroy;
- pluginFuncs->setwindow = NPP_SetWindow;
- pluginFuncs->newstream = NPP_NewStream;
- pluginFuncs->destroystream = NPP_DestroyStream;
- pluginFuncs->asfile = NPP_StreamAsFile;
- pluginFuncs->writeready = NPP_WriteReady;
- pluginFuncs->write = (NPP_WriteProcPtr)NPP_Write;
- pluginFuncs->print = NPP_Print;
- pluginFuncs->event = NPP_HandleEvent;
- pluginFuncs->urlnotify = NPP_URLNotify;
- pluginFuncs->getvalue = NPP_GetValue;
- pluginFuncs->setvalue = NPP_SetValue;
-
- return NPERR_NO_ERROR;
-}
-
-void NP_Shutdown(void)
-{
-}
-
-NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char *argn[], char *argv[], NPSavedData *saved)
-{
-#if USE_COCOA_EVENT_MODEL
- // If the browser supports the Cocoa event model, enable it.
- NPBool supportsCocoa;
- if (browser->getvalue(instance, NPNVsupportsCocoaBool, &supportsCocoa) != NPERR_NO_ERROR)
- supportsCocoa = FALSE;
-
- if (!supportsCocoa)
- return NPERR_INCOMPATIBLE_VERSION_ERROR;
-
- browser->setvalue(instance, NPPVpluginEventModel, (void *)NPEventModelCocoa);
-#endif
-
- if (browser->version >= 14) {
- PluginObject* obj = (PluginObject*)browser->createobject(instance, getPluginClass());
-
- for (int i = 0; i < argc; i++) {
- if (strcasecmp(argn[i], "onstreamload") == 0 && !obj->onStreamLoad)
- obj->onStreamLoad = strdup(argv[i]);
- else if (strcasecmp(argn[i], "onStreamDestroy") == 0 && !obj->onStreamDestroy)
- obj->onStreamDestroy = strdup(argv[i]);
- else if (strcasecmp(argn[i], "onURLNotify") == 0 && !obj->onURLNotify)
- obj->onURLNotify = strdup(argv[i]);
- else if (strcasecmp(argn[i], "src") == 0 &&
- strcasecmp(argv[i], "data:application/x-webkit-test-netscape,returnerrorfromnewstream") == 0)
- obj->returnErrorFromNewStream = TRUE;
- else if (strcasecmp(argn[i], "logfirstsetwindow") == 0)
- obj->logSetWindow = TRUE;
- }
-
- instance->pdata = obj;
- }
-
- return NPERR_NO_ERROR;
-}
-
-NPError NPP_Destroy(NPP instance, NPSavedData **save)
-{
- PluginObject* obj = static_cast<PluginObject*>(instance->pdata);
- if (obj) {
- if (obj->onStreamLoad)
- free(obj->onStreamLoad);
-
- if (obj->onStreamDestroy)
- free(obj->onStreamDestroy);
-
- if (obj->onURLNotify)
- free(obj->onURLNotify);
-
- if (obj->logDestroy)
- printf("PLUGIN: NPP_Destroy\n");
-
- browser->releaseobject(&obj->header);
- }
- return NPERR_NO_ERROR;
-}
-
-NPError NPP_SetWindow(NPP instance, NPWindow *window)
-{
- PluginObject* obj = static_cast<PluginObject*>(instance->pdata);
-
- if (obj) {
- if (obj->logSetWindow) {
- printf("PLUGIN: NPP_SetWindow: %d %d\n", (int)window->width, (int)window->height);
- obj->logSetWindow = false;
- }
- }
-
- return NPERR_NO_ERROR;
-}
-
-static void executeScript(const PluginObject* obj, const char* script)
-{
- NPObject *windowScriptObject;
- browser->getvalue(obj->npp, NPNVWindowNPObject, &windowScriptObject);
-
- NPString npScript;
- npScript.UTF8Characters = script;
- npScript.UTF8Length = strlen(script);
-
- NPVariant browserResult;
- browser->evaluate(obj->npp, windowScriptObject, &npScript, &browserResult);
- browser->releasevariantvalue(&browserResult);
-}
-
-NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream *stream, NPBool seekable, uint16 *stype)
-{
- PluginObject* obj = static_cast<PluginObject*>(instance->pdata);
- obj->stream = stream;
- *stype = NP_ASFILEONLY;
-
- if (obj->returnErrorFromNewStream)
- return NPERR_GENERIC_ERROR;
-
- if (browser->version >= NPVERS_HAS_RESPONSE_HEADERS)
- notifyStream(obj, stream->url, stream->headers);
-
- if (obj->onStreamLoad)
- executeScript(obj, obj->onStreamLoad);
-
- return NPERR_NO_ERROR;
-}
-
-NPError NPP_DestroyStream(NPP instance, NPStream *stream, NPReason reason)
-{
- PluginObject* obj = (PluginObject*)instance->pdata;
-
- if (obj->onStreamDestroy)
- executeScript(obj, obj->onStreamDestroy);
-
- return NPERR_NO_ERROR;
-}
-
-int32 NPP_WriteReady(NPP instance, NPStream *stream)
-{
- return 0;
-}
-
-int32 NPP_Write(NPP instance, NPStream *stream, int32 offset, int32 len, void *buffer)
-{
- return 0;
-}
-
-void NPP_StreamAsFile(NPP instance, NPStream *stream, const char *fname)
-{
-}
-
-void NPP_Print(NPP instance, NPPrint *platformPrint)
-{
-}
-
-int16 NPP_HandleEvent(NPP instance, void *event)
-{
- PluginObject* obj = static_cast<PluginObject*>(instance->pdata);
- if (!obj->eventLogging)
- return 0;
-
-#if USE_COCOA_EVENT_MODEL
- // FIXME: Generate output that will match the Carbon event model
- // so that the layout tests using this plug-in will work in either model.
- NPCocoaEvent *cocoaEvent = static_cast<NPCocoaEvent*>(event);
- switch (cocoaEvent->type) {
- case NPCocoaEventWindowFocusChanged:
- case NPCocoaEventFocusChanged:
- return 1;
-
- case NPCocoaEventDrawRect:
- return 1;
-
- case NPCocoaEventKeyDown:
- case NPCocoaEventKeyUp:
- case NPCocoaEventFlagsChanged:
- return 1;
-
- case NPCocoaEventMouseDown:
- case NPCocoaEventMouseUp:
-
- case NPCocoaEventMouseMoved:
- case NPCocoaEventMouseEntered:
- case NPCocoaEventMouseExited:
- case NPCocoaEventMouseDragged:
- case NPCocoaEventScrollWheel:
- return 1;
- }
-#else
- EventRecord* evt = static_cast<EventRecord*>(event);
- Point pt = { evt->where.v, evt->where.h };
- switch (evt->what) {
- case nullEvent:
- // these are delivered non-deterministically, don't log.
- break;
- case mouseDown:
- GlobalToLocal(&pt);
- printf("PLUGIN: mouseDown at (%d, %d)\n", pt.h, pt.v);
- break;
- case mouseUp:
- GlobalToLocal(&pt);
- printf("PLUGIN: mouseUp at (%d, %d)\n", pt.h, pt.v);
- break;
- case keyDown:
- printf("PLUGIN: keyDown '%c'\n", (char)(evt->message & 0xFF));
- break;
- case keyUp:
- printf("PLUGIN: keyUp '%c'\n", (char)(evt->message & 0xFF));
- break;
- case autoKey:
- printf("PLUGIN: autoKey '%c'\n", (char)(evt->message & 0xFF));
- break;
- case updateEvt:
- printf("PLUGIN: updateEvt\n");
- break;
- case diskEvt:
- printf("PLUGIN: diskEvt\n");
- break;
- case activateEvt:
- printf("PLUGIN: activateEvt\n");
- break;
- case osEvt:
- printf("PLUGIN: osEvt - ");
- switch ((evt->message & 0xFF000000) >> 24) {
- case suspendResumeMessage:
- printf("%s\n", (evt->message & 0x1) ? "resume" : "suspend");
- break;
- case mouseMovedMessage:
- printf("mouseMoved\n");
- break;
- default:
- printf("%08lX\n", evt->message);
- }
- break;
- case kHighLevelEvent:
- printf("PLUGIN: kHighLevelEvent\n");
- break;
- // NPAPI events
- case getFocusEvent:
- printf("PLUGIN: getFocusEvent\n");
- break;
- case loseFocusEvent:
- printf("PLUGIN: loseFocusEvent\n");
- break;
- case adjustCursorEvent:
- printf("PLUGIN: adjustCursorEvent\n");
- break;
- default:
- printf("PLUGIN: event %d\n", evt->what);
- }
-#endif
- return 0;
-}
-
-void NPP_URLNotify(NPP instance, const char *url, NPReason reason, void *notifyData)
-{
- PluginObject* obj = static_cast<PluginObject*>(instance->pdata);
-
- if (obj->onURLNotify)
- executeScript(obj, obj->onURLNotify);
-
- handleCallback(obj, url, reason, notifyData);
-}
-
-NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value)
-{
- if (variable == NPPVpluginScriptableNPObject) {
- void **v = (void **)value;
- PluginObject* obj = static_cast<PluginObject*>(instance->pdata);
- // Return value is expected to be retained
- browser->retainobject((NPObject *)obj);
- *v = obj;
- return NPERR_NO_ERROR;
- }
- return NPERR_GENERIC_ERROR;
-}
-
-NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value)
-{
- return NPERR_GENERIC_ERROR;
-}
diff --git a/WebKitTools/DumpRenderTree/WorkQueue.cpp b/WebKitTools/DumpRenderTree/WorkQueue.cpp
deleted file mode 100644
index 0891b9c..0000000
--- a/WebKitTools/DumpRenderTree/WorkQueue.cpp
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "WorkQueue.h"
-
-#include "WorkQueueItem.h"
-#include <wtf/Assertions.h>
-
-static const unsigned queueLength = 1024;
-
-static WorkQueueItem* theQueue[queueLength];
-static unsigned startOfQueue;
-static unsigned endOfQueue;
-
-WorkQueue* WorkQueue::shared()
-{
- static WorkQueue* sharedInstance = new WorkQueue;
- return sharedInstance;
-}
-
-WorkQueue::WorkQueue()
- : m_frozen(false)
-{
-}
-
-void WorkQueue::queue(WorkQueueItem* item)
-{
- ASSERT(endOfQueue < queueLength);
- ASSERT(endOfQueue >= startOfQueue);
-
- if (m_frozen) {
- delete item;
- return;
- }
-
- theQueue[endOfQueue++] = item;
-}
-
-WorkQueueItem* WorkQueue::dequeue()
-{
- ASSERT(endOfQueue >= startOfQueue);
-
- if (startOfQueue == endOfQueue)
- return 0;
-
- return theQueue[startOfQueue++];
-}
-
-unsigned WorkQueue::count()
-{
- return endOfQueue - startOfQueue;
-}
-
-void WorkQueue::clear()
-{
- for (unsigned i = startOfQueue; i < endOfQueue; ++i) {
- delete theQueue[i];
- theQueue[i] = 0;
- }
-
- startOfQueue = 0;
- endOfQueue = 0;
-}
diff --git a/WebKitTools/DumpRenderTree/WorkQueue.h b/WebKitTools/DumpRenderTree/WorkQueue.h
deleted file mode 100644
index c2850c5..0000000
--- a/WebKitTools/DumpRenderTree/WorkQueue.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef WorkQueue_h
-#define WorkQueue_h
-
-class WorkQueueItem;
-
-class WorkQueue {
-public:
- static WorkQueue* shared();
-
- void queue(WorkQueueItem*);
- WorkQueueItem* dequeue();
- void clear();
- unsigned count();
-
- void setFrozen(bool b) { m_frozen = b; }
-
-private:
- WorkQueue();
-
- bool m_frozen;
-};
-
-#endif // !defined(WorkQueue_h)
diff --git a/WebKitTools/DumpRenderTree/WorkQueueItem.h b/WebKitTools/DumpRenderTree/WorkQueueItem.h
deleted file mode 100644
index fd15329..0000000
--- a/WebKitTools/DumpRenderTree/WorkQueueItem.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef WorkQueueItem_h
-#define WorkQueueItem_h
-
-#include <JavaScriptCore/JSRetainPtr.h>
-#include <JavaScriptCore/JSBase.h>
-
-class WorkQueueItem {
-public:
- virtual ~WorkQueueItem() { }
- virtual void invoke() const = 0;
-};
-
-class LoadItem : public WorkQueueItem {
-public:
- LoadItem(const JSStringRef url, const JSStringRef target)
- : m_url(url)
- , m_target(target)
- {
- }
-
- const JSStringRef url() const { return m_url.get(); }
- const JSStringRef target() const { return m_target.get(); }
-
- virtual void invoke() const;
-
-private:
- JSRetainPtr<JSStringRef> m_url;
- JSRetainPtr<JSStringRef> m_target;
-};
-
-class ReloadItem : public WorkQueueItem {
-public:
- virtual void invoke() const;
-};
-
-class ScriptItem : public WorkQueueItem {
-public:
- ScriptItem(const JSStringRef script)
- : m_script(script)
- {
- }
-
- const JSStringRef script() const { return m_script.get(); }
-
- virtual void invoke() const;
-
-private:
- JSRetainPtr<JSStringRef> m_script;
-};
-
-class BackForwardItem : public WorkQueueItem {
-public:
- virtual void invoke() const;
-
-protected:
- BackForwardItem(int howFar)
- : m_howFar(howFar)
- {
- }
-
- int m_howFar;
-};
-
-class BackItem : public BackForwardItem {
-public:
- BackItem(unsigned howFar)
- : BackForwardItem(-howFar)
- {
- }
-};
-
-class ForwardItem : public BackForwardItem {
-public:
- ForwardItem(unsigned howFar)
- : BackForwardItem(howFar)
- {
- }
-};
-
-#endif // !defined(WorkQueueItem_h)
diff --git a/WebKitTools/DumpRenderTree/cg/ImageDiffCG.cpp b/WebKitTools/DumpRenderTree/cg/ImageDiffCG.cpp
deleted file mode 100644
index 1e55e78..0000000
--- a/WebKitTools/DumpRenderTree/cg/ImageDiffCG.cpp
+++ /dev/null
@@ -1,253 +0,0 @@
-/*
- * Copyright (C) 2005, 2007 Apple Inc. All rights reserved.
- * Copyright (C) 2005 Ben La Monica <ben.lamonica@gmail.com>. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#define min min
-
-#include <CoreGraphics/CGBitmapContext.h>
-#include <CoreGraphics/CGImage.h>
-#include <ImageIO/CGImageDestination.h>
-#include <stdio.h>
-#include <wtf/Platform.h>
-#include <wtf/RetainPtr.h>
-
-#if PLATFORM(WIN)
-#include <fcntl.h>
-#include <io.h>
-#include <wtf/MathExtras.h>
-#endif
-
-#if PLATFORM(MAC)
-#include <LaunchServices/UTCoreTypes.h>
-#endif
-
-#ifndef CGFLOAT_DEFINED
-#ifdef __LP64__
-typedef double CGFloat;
-#else
-typedef float CGFloat;
-#endif
-#define CGFLOAT_DEFINED 1
-#endif
-
-using namespace std;
-
-#if PLATFORM(WIN)
-static inline float strtof(const char *nptr, char **endptr)
-{
- return strtod(nptr, endptr);
-}
-static const CFStringRef kUTTypePNG = CFSTR("public.png");
-#endif
-
-static RetainPtr<CGImageRef> createImageFromStdin(int bytesRemaining)
-{
- unsigned char buffer[2048];
- RetainPtr<CFMutableDataRef> data(AdoptCF, CFDataCreateMutable(0, bytesRemaining));
-
- while (bytesRemaining > 0) {
- size_t bytesToRead = min(bytesRemaining, 2048);
- size_t bytesRead = fread(buffer, 1, bytesToRead, stdin);
- CFDataAppendBytes(data.get(), buffer, static_cast<CFIndex>(bytesRead));
- bytesRemaining -= static_cast<int>(bytesRead);
- }
- RetainPtr<CGDataProviderRef> dataProvider(AdoptCF, CGDataProviderCreateWithCFData(data.get()));
- return RetainPtr<CGImageRef>(AdoptCF, CGImageCreateWithPNGDataProvider(dataProvider.get(), 0, false, kCGRenderingIntentDefault));
-}
-
-static void releaseMallocBuffer(void* info, const void* data, size_t size)
-{
- free((void*)data);
-}
-
-static RetainPtr<CGImageRef> createDifferenceImage(CGImageRef baseImage, CGImageRef testImage, float& difference)
-{
- static RetainPtr<CGColorSpaceRef> colorSpace(AdoptCF, CGColorSpaceCreateDeviceRGB());
- RetainPtr<CGImageRef> diffImage;
-
- size_t width = CGImageGetWidth(baseImage);
- size_t height = CGImageGetHeight(baseImage);
- size_t rowBytes = width * 4;
-
- // Draw base image in bitmap context
- void* baseBuffer = calloc(height, rowBytes);
- CGContextRef baseContext = CGBitmapContextCreate(baseBuffer, width, height, 8, rowBytes, colorSpace.get(), kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host);
- CGContextDrawImage(baseContext, CGRectMake(0, 0, width, height), baseImage);
- CGContextRelease(baseContext);
-
- // Draw test image in bitmap context
- void* buffer = calloc(height, rowBytes);
- CGContextRef context = CGBitmapContextCreate(buffer, width, height, 8, rowBytes, colorSpace.get(), kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host);
- CGContextDrawImage(context, CGRectMake(0, 0, width, height), testImage);
- CGContextRelease(context);
-
- // Compare the content of the 2 bitmaps
- void* diffBuffer = malloc(width * height);
- float count = 0.0f;
- float sum = 0.0f;
- float maxDistance = 0.0f;
- unsigned char* basePixel = (unsigned char*)baseBuffer;
- unsigned char* pixel = (unsigned char*)buffer;
- unsigned char* diff = (unsigned char*)diffBuffer;
- for (size_t y = 0; y < height; ++y) {
- for (size_t x = 0; x < width; ++x) {
- float red = (pixel[0] - basePixel[0]) / max<float>(255 - basePixel[0], basePixel[0]);
- float green = (pixel[1] - basePixel[1]) / max<float>(255 - basePixel[1], basePixel[1]);
- float blue = (pixel[2] - basePixel[2]) / max<float>(255 - basePixel[2], basePixel[2]);
- float alpha = (pixel[3] - basePixel[3]) / max<float>(255 - basePixel[3], basePixel[3]);
- float distance = sqrtf(red * red + green * green + blue * blue + alpha * alpha) / 2.0f;
-
- *diff++ = (unsigned char)(distance * 255.0f);
-
- if (distance >= 1.0f / 255.0f) {
- count += 1.0f;
- sum += distance;
- if (distance > maxDistance)
- maxDistance = distance;
- }
-
- basePixel += 4;
- pixel += 4;
- }
- }
-
- // Compute the difference as a percentage combining both the number of different pixels and their difference amount i.e. the average distance over the entire image
- if (count > 0.0f)
- difference = 100.0f * sum / (height * width);
- else
- difference = 0.0f;
-
- // Generate a normalized diff image if there is any difference
- if (difference > 0.0f) {
- if (maxDistance < 1.0f) {
- diff = (unsigned char*)diffBuffer;
- for(size_t p = 0; p < height * width; ++p)
- diff[p] = diff[p] / maxDistance;
- }
-
- CGDataProviderRef provider = CGDataProviderCreateWithData(0, diffBuffer, width * height, releaseMallocBuffer);
- CGColorSpaceRef diffColorspace = CGColorSpaceCreateDeviceGray();
- diffImage.adoptCF(CGImageCreate(width, height, 8, 8, width, diffColorspace, 0, provider, 0, false, kCGRenderingIntentDefault));
- CGColorSpaceRelease(diffColorspace);
- CGDataProviderRelease(provider);
- }
- else
- free(diffBuffer);
-
- // Destroy drawing buffers
- if (buffer)
- free(buffer);
- if (baseBuffer)
- free(baseBuffer);
-
- return diffImage;
-}
-
-static inline bool imageHasAlpha(CGImageRef image)
-{
- CGImageAlphaInfo info = CGImageGetAlphaInfo(image);
-
- return (info >= kCGImageAlphaPremultipliedLast) && (info <= kCGImageAlphaFirst);
-}
-
-int main(int argc, const char* argv[])
-{
-#if PLATFORM(WIN)
- _setmode(0, _O_BINARY);
- _setmode(1, _O_BINARY);
-#endif
-
- float tolerance = 0.0f;
-
- for (int i = 1; i < argc; ++i) {
- if (!strcmp(argv[i], "-t") || !strcmp(argv[i], "--tolerance")) {
- if (i >= argc - 1)
- exit(1);
- tolerance = strtof(argv[i + 1], 0);
- ++i;
- continue;
- }
- }
-
- char buffer[2048];
- RetainPtr<CGImageRef> actualImage;
- RetainPtr<CGImageRef> baselineImage;
-
- while (fgets(buffer, sizeof(buffer), stdin)) {
- // remove the CR
- char* newLineCharacter = strchr(buffer, '\n');
- if (newLineCharacter)
- *newLineCharacter = '\0';
-
- if (!strncmp("Content-Length: ", buffer, 16)) {
- strtok(buffer, " ");
- int imageSize = strtol(strtok(0, " "), 0, 10);
-
- if (imageSize > 0 && !actualImage)
- actualImage = createImageFromStdin(imageSize);
- else if (imageSize > 0 && !baselineImage)
- baselineImage = createImageFromStdin(imageSize);
- else
- fputs("error, image size must be specified.\n", stdout);
- }
-
- if (actualImage && baselineImage) {
- RetainPtr<CGImageRef> diffImage;
- float difference = 100.0f;
-
- if ((CGImageGetWidth(actualImage.get()) == CGImageGetWidth(baselineImage.get())) && (CGImageGetHeight(actualImage.get()) == CGImageGetHeight(baselineImage.get())) && (imageHasAlpha(actualImage.get()) == imageHasAlpha(baselineImage.get()))) {
- diffImage = createDifferenceImage(actualImage.get(), baselineImage.get(), difference); // difference is passed by reference
- if (difference <= tolerance)
- difference = 0.0f;
- else {
- difference = roundf(difference * 100.0f) / 100.0f;
- difference = max(difference, 0.01f); // round to 2 decimal places
- }
- } else
- fputs("error, test and reference image have different properties.\n", stderr);
-
- if (difference > 0.0f) {
- if (diffImage) {
- RetainPtr<CFMutableDataRef> imageData(AdoptCF, CFDataCreateMutable(0, 0));
- RetainPtr<CGImageDestinationRef> imageDest(AdoptCF, CGImageDestinationCreateWithData(imageData.get(), kUTTypePNG, 1, 0));
- CGImageDestinationAddImage(imageDest.get(), diffImage.get(), 0);
- CGImageDestinationFinalize(imageDest.get());
- printf("Content-Length: %lu\n", CFDataGetLength(imageData.get()));
- fwrite(CFDataGetBytePtr(imageData.get()), 1, CFDataGetLength(imageData.get()), stdout);
- }
-
- fprintf(stdout, "diff: %01.2f%% failed\n", difference);
- } else
- fprintf(stdout, "diff: %01.2f%% passed\n", difference);
-
- actualImage = 0;
- baselineImage = 0;
- }
-
- fflush(stdout);
- }
-
- return 0;
-}
diff --git a/WebKitTools/DumpRenderTree/cg/PixelDumpSupportCG.cpp b/WebKitTools/DumpRenderTree/cg/PixelDumpSupportCG.cpp
deleted file mode 100644
index 2320e19..0000000
--- a/WebKitTools/DumpRenderTree/cg/PixelDumpSupportCG.cpp
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Copyright (C) 2005, 2006, 2007 Apple Inc. All rights reserved.
- * (C) 2007 Graham Dennis (graham.dennis@gmail.com)
- * (C) 2007 Eric Seidel <eric@webkit.org>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "PixelDumpSupportCG.h"
-
-#include "DumpRenderTree.h"
-#include "LayoutTestController.h"
-#include <ImageIO/CGImageDestination.h>
-#include <algorithm>
-#include <ctype.h>
-#include <wtf/Assertions.h>
-#include <wtf/RefPtr.h>
-#include <wtf/RetainPtr.h>
-#include <wtf/StringExtras.h>
-
-#if PLATFORM(WIN)
-#include "MD5.h"
-#elif PLATFORM(MAC)
-#include <LaunchServices/UTCoreTypes.h>
-#define COMMON_DIGEST_FOR_OPENSSL
-#include <CommonCrypto/CommonDigest.h>
-#endif
-
-#if PLATFORM(WIN)
-static const CFStringRef kUTTypePNG = CFSTR("public.png");
-#endif
-
-static void printPNG(CGImageRef image)
-{
- RetainPtr<CFMutableDataRef> imageData(AdoptCF, CFDataCreateMutable(0, 0));
- RetainPtr<CGImageDestinationRef> imageDest(AdoptCF, CGImageDestinationCreateWithData(imageData.get(), kUTTypePNG, 1, 0));
- CGImageDestinationAddImage(imageDest.get(), image, 0);
- CGImageDestinationFinalize(imageDest.get());
-
- printf("Content-Type: %s\n", "image/png");
- printf("Content-Length: %lu\n", CFDataGetLength(imageData.get()));
-
- fwrite(CFDataGetBytePtr(imageData.get()), 1, CFDataGetLength(imageData.get()), stdout);
-}
-
-static void computeMD5HashStringForBitmapContext(CGContextRef bitmapContext, char hashString[33])
-{
- ASSERT(CGBitmapContextGetBitsPerPixel(bitmapContext) == 32); // ImageDiff assumes 32 bit RGBA, we must as well.
- size_t pixelsHigh = CGBitmapContextGetHeight(bitmapContext);
- size_t pixelsWide = CGBitmapContextGetWidth(bitmapContext);
- size_t bytesPerRow = CGBitmapContextGetBytesPerRow(bitmapContext);
-
- // We need to swap the bytes to ensure consistent hashes independently of endianness
- MD5_CTX md5Context;
- MD5_Init(&md5Context);
- unsigned char* bitmapData = static_cast<unsigned char*>(CGBitmapContextGetData(bitmapContext));
-#if PLATFORM(MAC)
- if ((CGBitmapContextGetBitmapInfo(bitmapContext) & kCGBitmapByteOrderMask) == kCGBitmapByteOrder32Big) {
- for (unsigned row = 0; row < pixelsHigh; row++) {
- uint32_t buffer[pixelsWide];
- for (unsigned column = 0; column < pixelsWide; column++)
- buffer[column] = OSReadLittleInt32(bitmapData, 4 * column);
- MD5_Update(&md5Context, buffer, 4 * pixelsWide);
- bitmapData += bytesPerRow;
- }
- } else
-#endif
- {
- for (unsigned row = 0; row < pixelsHigh; row++) {
- MD5_Update(&md5Context, bitmapData, 4 * pixelsWide);
- bitmapData += bytesPerRow;
- }
- }
- unsigned char hash[16];
- MD5_Final(hash, &md5Context);
-
- hashString[0] = '\0';
- for (int i = 0; i < 16; i++)
- snprintf(hashString, 33, "%s%02x", hashString, hash[i]);
-}
-
-void dumpWebViewAsPixelsAndCompareWithExpected(const std::string& expectedHash)
-{
- RefPtr<BitmapContext> context;
-
-#if PLATFORM(MAC)
- context = createBitmapContextFromWebView(gLayoutTestController->testOnscreen(), gLayoutTestController->testRepaint(), gLayoutTestController->testRepaintSweepHorizontally(), gLayoutTestController->dumpSelectionRect());
-#endif
- ASSERT(context);
-
- // Compute the hash of the bitmap context pixels
- char actualHash[33];
- computeMD5HashStringForBitmapContext(context->cgContext(), actualHash);
- printf("\nActualHash: %s\n", actualHash);
-
- // Check the computed hash against the expected one and dump image on mismatch
- bool dumpImage = true;
- if (expectedHash.length() > 0) {
- ASSERT(expectedHash.length() == 32);
-
- printf("\nExpectedHash: %s\n", expectedHash.c_str());
-
- if (expectedHash == actualHash) // FIXME: do case insensitive compare
- dumpImage = false;
- }
-
- if (dumpImage) {
- RetainPtr<CGImageRef> image(AdoptCF, CGBitmapContextCreateImage(context->cgContext()));
- printPNG(image.get());
- }
-}
diff --git a/WebKitTools/DumpRenderTree/cg/PixelDumpSupportCG.h b/WebKitTools/DumpRenderTree/cg/PixelDumpSupportCG.h
deleted file mode 100644
index 84350e8..0000000
--- a/WebKitTools/DumpRenderTree/cg/PixelDumpSupportCG.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (C) 2005, 2006, 2007 Apple Inc. All rights reserved.
- * (C) 2007 Graham Dennis (graham.dennis@gmail.com)
- * (C) 2007 Eric Seidel <eric@webkit.org>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef PixelDumpSupportCG_h
-#define PixelDumpSupportCG_h
-
-#include <wtf/PassRefPtr.h>
-#include <wtf/RefCounted.h>
-#include <wtf/RetainPtr.h>
-
-typedef struct CGContext* CGContextRef;
-
-#if PLATFORM(MAC)
-typedef void* PlatformBitmapBuffer;
-#elif PLATFORM(WIN)
-typedef HBITMAP PlatformBitmapBuffer;
-#endif
-
-class BitmapContext : public RefCounted<BitmapContext> {
-public:
- static PassRefPtr<BitmapContext> createByAdoptingBitmapAndContext(PlatformBitmapBuffer buffer, CGContextRef context)
- {
- return adoptRef(new BitmapContext(buffer, context));
- }
-
- ~BitmapContext()
- {
- if (m_buffer)
-#if PLATFORM(MAC)
- free(m_buffer);
-#elif PLATFORM(WIN)
- DeleteObject(m_buffer);
-#endif
- }
-
- CGContextRef cgContext() const { return m_context.get(); }
-
-private:
-
- BitmapContext(PlatformBitmapBuffer buffer, CGContextRef context)
- : m_buffer(buffer)
- , m_context(AdoptCF, context)
- {
- }
-
- PlatformBitmapBuffer m_buffer;
- RetainPtr<CGContextRef> m_context;
-
-};
-
-PassRefPtr<BitmapContext> createBitmapContextFromWebView(bool onscreen, bool incrementalRepaint, bool sweepHorizontally, bool drawSelectionRect);
-
-#endif // PixelDumpSupportCG_h
diff --git a/WebKitTools/DumpRenderTree/config.h b/WebKitTools/DumpRenderTree/config.h
deleted file mode 100644
index 4775ae2..0000000
--- a/WebKitTools/DumpRenderTree/config.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2008 Nuanti Ltd.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- */
-
-#define Config_H
-
-#if defined(HAVE_CONFIG_H) && HAVE_CONFIG_H
-#include "autotoolsconfig.h"
-#endif
-
-#include <wtf/Platform.h>
-
-#if PLATFORM(WIN)
-#define WTF_PLATFORM_CF 1
-
-#undef _WIN32_WINNT
-#define _WIN32_WINNT 0x0500
-
-#undef WINVER
-#define WINVER 0x0500
-
-// If we don't define these, they get defined in windef.h.
-// We want to use std::min and std::max
-#undef max
-#define max max
-#undef min
-#define min min
-
-#undef _WINSOCKAPI_
-#define _WINSOCKAPI_ // Prevent inclusion of winsock.h in windows.h
-#endif // PLATFORM(WIN)
diff --git a/WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher100.ttf b/WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher100.ttf
deleted file mode 100644
index 22b00de..0000000
--- a/WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher100.ttf
+++ /dev/null
Binary files differ
diff --git a/WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher200.ttf b/WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher200.ttf
deleted file mode 100644
index 1ccadba..0000000
--- a/WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher200.ttf
+++ /dev/null
Binary files differ
diff --git a/WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher300.ttf b/WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher300.ttf
deleted file mode 100644
index ab5563d..0000000
--- a/WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher300.ttf
+++ /dev/null
Binary files differ
diff --git a/WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher400.ttf b/WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher400.ttf
deleted file mode 100644
index 56d279e..0000000
--- a/WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher400.ttf
+++ /dev/null
Binary files differ
diff --git a/WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher500.ttf b/WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher500.ttf
deleted file mode 100644
index d827d7d..0000000
--- a/WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher500.ttf
+++ /dev/null
Binary files differ
diff --git a/WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher600.ttf b/WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher600.ttf
deleted file mode 100644
index 9141596..0000000
--- a/WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher600.ttf
+++ /dev/null
Binary files differ
diff --git a/WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher700.ttf b/WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher700.ttf
deleted file mode 100644
index a2d0505..0000000
--- a/WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher700.ttf
+++ /dev/null
Binary files differ
diff --git a/WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher800.ttf b/WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher800.ttf
deleted file mode 100644
index d0f354b..0000000
--- a/WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher800.ttf
+++ /dev/null
Binary files differ
diff --git a/WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher900.ttf b/WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher900.ttf
deleted file mode 100644
index 6b895ca..0000000
--- a/WebKitTools/DumpRenderTree/fonts/WebKitWeightWatcher900.ttf
+++ /dev/null
Binary files differ
diff --git a/WebKitTools/DumpRenderTree/gtk/DumpRenderTree.cpp b/WebKitTools/DumpRenderTree/gtk/DumpRenderTree.cpp
deleted file mode 100644
index 13b914d..0000000
--- a/WebKitTools/DumpRenderTree/gtk/DumpRenderTree.cpp
+++ /dev/null
@@ -1,407 +0,0 @@
-/*
- * Copyright (C) 2007 Eric Seidel <eric@webkit.org>
- * Copyright (C) 2008 Alp Toker <alp@nuanti.com>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "DumpRenderTree.h"
-
-#include "LayoutTestController.h"
-#include "WorkQueue.h"
-#include "WorkQueueItem.h"
-
-#include <gtk/gtk.h>
-#include <webkit/webkit.h>
-#include <JavaScriptCore/JavaScript.h>
-
-#include <wtf/Assertions.h>
-
-#include <cassert>
-#include <getopt.h>
-#include <stdlib.h>
-#include <string.h>
-
-using namespace std;
-
-extern "C" {
-// This API is not yet public.
-extern GSList* webkit_web_frame_get_children(WebKitWebFrame* frame);
-extern gchar* webkit_web_frame_get_inner_text(WebKitWebFrame* frame);
-extern gchar* webkit_web_frame_dump_render_tree(WebKitWebFrame* frame);
-}
-
-volatile bool done;
-static bool printSeparators;
-static int dumpPixels;
-static int dumpTree = 1;
-
-LayoutTestController* gLayoutTestController = 0;
-static WebKitWebView* webView;
-WebKitWebFrame* mainFrame = 0;
-WebKitWebFrame* topLoadingFrame = 0;
-guint waitToDumpWatchdog = 0;
-
-const unsigned maxViewHeight = 600;
-const unsigned maxViewWidth = 800;
-
-static gchar* autocorrectURL(const gchar* url)
-{
- if (strncmp("http://", url, 7) != 0 && strncmp("https://", url, 8) != 0) {
- GString* string = g_string_new("file://");
- g_string_append(string, url);
- return g_string_free(string, FALSE);
- }
-
- return g_strdup(url);
-}
-
-static bool shouldLogFrameLoadDelegates(const char* pathOrURL)
-{
- return strstr(pathOrURL, "loading/");
-}
-
-void dumpFrameScrollPosition(WebKitWebFrame* frame)
-{
-
-}
-
-void displayWebView()
-{
-
-}
-
-static void appendString(gchar*& target, gchar* string)
-{
- gchar* oldString = target;
- target = g_strconcat(target, string, NULL);
- g_free(oldString);
-}
-
-static gchar* dumpFramesAsText(WebKitWebFrame* frame)
-{
- gchar* result = 0;
-
- // Add header for all but the main frame.
- bool isMainFrame = (webkit_web_view_get_main_frame(webView) == frame);
-
- gchar* innerText = webkit_web_frame_get_inner_text(frame);
- if (isMainFrame)
- result = g_strdup_printf("%s\n", innerText);
- else {
- const gchar* frameName = webkit_web_frame_get_name(frame);
- result = g_strdup_printf("\n--------\nFrame: '%s'\n--------\n%s\n", frameName, innerText);
- }
- g_free(innerText);
-
- if (gLayoutTestController->dumpChildFramesAsText()) {
- GSList* children = webkit_web_frame_get_children(frame);
- for (GSList* child = children; child; child = g_slist_next(child))
- appendString(result, dumpFramesAsText((WebKitWebFrame*)children->data));
- g_slist_free(children);
- }
-
- return result;
-}
-
-static void invalidateAnyPreviousWaitToDumpWatchdog()
-{
- if (waitToDumpWatchdog) {
- g_source_remove(waitToDumpWatchdog);
- waitToDumpWatchdog = 0;
- }
-}
-
-void dump()
-{
- invalidateAnyPreviousWaitToDumpWatchdog();
- if (dumpTree) {
- char* result = 0;
-
- bool dumpAsText = gLayoutTestController->dumpAsText();
- // FIXME: Also dump text resuls as text.
- gLayoutTestController->setDumpAsText(dumpAsText);
- if (gLayoutTestController->dumpAsText())
- result = dumpFramesAsText(mainFrame);
- else {
- bool isSVGW3CTest = (gLayoutTestController->testPathOrURL().find("svg/W3C-SVG-1.1") != string::npos);
- GtkAllocation size;
- size.width = isSVGW3CTest ? 480 : maxViewWidth;
- size.height = isSVGW3CTest ? 360 : maxViewHeight;
- gtk_widget_size_allocate(GTK_WIDGET(webView), &size);
-
- result = webkit_web_frame_dump_render_tree(mainFrame);
- }
-
- if (!result) {
- const char* errorMessage;
- if (gLayoutTestController->dumpAsText())
- errorMessage = "[documentElement innerText]";
- else if (gLayoutTestController->dumpDOMAsWebArchive())
- errorMessage = "[[mainFrame DOMDocument] webArchive]";
- else if (gLayoutTestController->dumpSourceAsWebArchive())
- errorMessage = "[[mainFrame dataSource] webArchive]";
- else
- errorMessage = "[mainFrame renderTreeAsExternalRepresentation]";
- printf("ERROR: nil result from %s", errorMessage);
- } else {
- printf("%s", result);
- g_free(result);
- if (!gLayoutTestController->dumpAsText() && !gLayoutTestController->dumpDOMAsWebArchive() && !gLayoutTestController->dumpSourceAsWebArchive())
- dumpFrameScrollPosition(mainFrame);
- }
-
- if (gLayoutTestController->dumpBackForwardList()) {
- // FIXME: not implemented
- }
-
- if (printSeparators) {
- puts("#EOF"); // terminate the content block
- fputs("#EOF\n", stderr);
- fflush(stdout);
- fflush(stderr);
- }
- }
-
- if (dumpPixels) {
- if (!gLayoutTestController->dumpAsText() && !gLayoutTestController->dumpDOMAsWebArchive() && !gLayoutTestController->dumpSourceAsWebArchive()) {
- // FIXME: Add support for dumping pixels
- }
- }
-
- // FIXME: call displayWebView here when we support --paint
-
- puts("#EOF"); // terminate the (possibly empty) pixels block
-
- fflush(stdout);
- fflush(stderr);
-
- done = true;
-}
-
-static void setDefaultsToConsistentStateValuesForTesting()
-{
- WebKitWebSettings *settings = webkit_web_view_get_settings(webView);
-
- g_object_set(G_OBJECT(settings),
- "default-font-family", "Times",
- "monospace-font-family", "Courier",
- "serif-font-family", "Times",
- "sans-serif-font-family", "Helvetica",
- "default-font-size", 16,
- "default-monospace-font-size", 13,
- "minimum-font-size", 1,
- NULL);
-}
-
-static void runTest(const string& testPathOrURL)
-{
- ASSERT(!testPathOrURL.empty());
-
- // Look for "'" as a separator between the path or URL, and the pixel dump hash that follows.
- string pathOrURL(testPathOrURL);
- string expectedPixelHash;
-
- size_t separatorPos = pathOrURL.find("'");
- if (separatorPos != string::npos) {
- pathOrURL = string(testPathOrURL, 0, separatorPos);
- expectedPixelHash = string(testPathOrURL, separatorPos + 1);
- }
-
- gchar* url = autocorrectURL(pathOrURL.c_str());
- const string testURL(url);
-
- gLayoutTestController = new LayoutTestController(testURL, expectedPixelHash);
- topLoadingFrame = 0;
- done = false;
-
- if (shouldLogFrameLoadDelegates(pathOrURL.c_str()))
- gLayoutTestController->setDumpFrameLoadCallbacks(true);
-
- WorkQueue::shared()->clear();
- WorkQueue::shared()->setFrozen(false);
-
- webkit_web_view_open(webView, url);
-
- g_free(url);
- url = NULL;
-
- while (!done)
- g_main_context_iteration(NULL, TRUE);
-
- // A blank load seems to be necessary to reset state after certain tests.
- webkit_web_view_open(webView, "about:blank");
-
- gLayoutTestController->deref();
- gLayoutTestController = 0;
-}
-
-void webViewLoadStarted(WebKitWebView* view, WebKitWebFrame* frame, void*)
-{
- // Make sure we only set this once per test. If it gets cleared, and then set again, we might
- // end up doing two dumps for one test.
- if (!topLoadingFrame && !done)
- topLoadingFrame = frame;
-}
-
-static gboolean processWork(void* data)
-{
- // quit doing work once a load is in progress
- while (WorkQueue::shared()->count() > 0 && !topLoadingFrame) {
- WorkQueueItem* item = WorkQueue::shared()->dequeue();
- ASSERT(item);
- item->invoke();
- delete item;
- }
-
- // if we didn't start a new load, then we finished all the commands, so we're ready to dump state
- if (!topLoadingFrame && !gLayoutTestController->waitToDump())
- dump();
-
- return FALSE;
-}
-
-static void webViewLoadFinished(WebKitWebView* view, WebKitWebFrame* frame, void*)
-{
- if (frame != topLoadingFrame)
- return;
-
- topLoadingFrame = 0;
- WorkQueue::shared()->setFrozen(true); // first complete load freezes the queue for the rest of this test
- if (gLayoutTestController->waitToDump())
- return;
-
- if (WorkQueue::shared()->count())
- g_timeout_add(0, processWork, 0);
- else
- dump();
-}
-
-static void webViewWindowObjectCleared(WebKitWebView* view, WebKitWebFrame* frame, JSGlobalContextRef context, JSObjectRef windowObject, gpointer data)
-{
- JSValueRef exception = 0;
- assert(gLayoutTestController);
-
- gLayoutTestController->makeWindowObject(context, windowObject, &exception);
- assert(!exception);
-}
-
-static gboolean webViewConsoleMessage(WebKitWebView* view, const gchar* message, unsigned int line, const gchar* sourceId, gpointer data)
-{
- fprintf(stdout, "CONSOLE MESSAGE: line %d: %s\n", line, message);
- return TRUE;
-}
-
-
-static gboolean webViewScriptAlert(WebKitWebView* view, WebKitWebFrame* frame, const gchar* message, gpointer data)
-{
- fprintf(stdout, "ALERT: %s\n", message);
- return TRUE;
-}
-
-static gboolean webViewScriptPrompt(WebKitWebView* webView, WebKitWebFrame* frame, const gchar* message, const gchar* defaultValue, gchar** value, gpointer data)
-{
- fprintf(stdout, "PROMPT: %s, default text: %s\n", message, defaultValue);
- *value = g_strdup(defaultValue);
- return TRUE;
-}
-
-static gboolean webViewScriptConfirm(WebKitWebView* view, WebKitWebFrame* frame, const gchar* message, gboolean* didConfirm, gpointer data)
-{
- fprintf(stdout, "CONFIRM: %s\n", message);
- *didConfirm = TRUE;
- return TRUE;
-}
-
-static void webViewTitleChanged(WebKitWebView* view, WebKitWebFrame* frame, const gchar* title, gpointer data)
-{
- if (gLayoutTestController->dumpTitleChanges() && !done)
- printf("TITLE CHANGED: %s\n", title ? title : "");
-}
-
-int main(int argc, char* argv[])
-{
- g_thread_init(NULL);
- gtk_init(&argc, &argv);
-
- struct option options[] = {
- {"notree", no_argument, &dumpTree, false},
- {"pixel-tests", no_argument, &dumpPixels, true},
- {"tree", no_argument, &dumpTree, true},
- {NULL, 0, NULL, 0}
- };
-
- int option;
- while ((option = getopt_long(argc, (char* const*)argv, "", options, NULL)) != -1)
- switch (option) {
- case '?': // unknown or ambiguous option
- case ':': // missing argument
- exit(1);
- break;
- }
-
- GtkWidget* window = gtk_window_new(GTK_WINDOW_POPUP);
- GtkContainer* container = GTK_CONTAINER(gtk_fixed_new());
- gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(container));
- gtk_widget_realize(window);
-
- webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
- gtk_container_add(container, GTK_WIDGET(webView));
- gtk_widget_realize(GTK_WIDGET(webView));
- mainFrame = webkit_web_view_get_main_frame(webView);
-
- g_signal_connect(G_OBJECT(webView), "load-started", G_CALLBACK(webViewLoadStarted), 0);
- g_signal_connect(G_OBJECT(webView), "load-finished", G_CALLBACK(webViewLoadFinished), 0);
- g_signal_connect(G_OBJECT(webView), "window-object-cleared", G_CALLBACK(webViewWindowObjectCleared), 0);
- g_signal_connect(G_OBJECT(webView), "console-message", G_CALLBACK(webViewConsoleMessage), 0);
- g_signal_connect(G_OBJECT(webView), "script-alert", G_CALLBACK(webViewScriptAlert), 0);
- g_signal_connect(G_OBJECT(webView), "script-prompt", G_CALLBACK(webViewScriptPrompt), 0);
- g_signal_connect(G_OBJECT(webView), "script-confirm", G_CALLBACK(webViewScriptConfirm), 0);
- g_signal_connect(G_OBJECT(webView), "title-changed", G_CALLBACK(webViewTitleChanged), 0);
-
- setDefaultsToConsistentStateValuesForTesting();
-
- if (argc == optind+1 && strcmp(argv[optind], "-") == 0) {
- char filenameBuffer[2048];
- printSeparators = true;
- while (fgets(filenameBuffer, sizeof(filenameBuffer), stdin)) {
- char* newLineCharacter = strchr(filenameBuffer, '\n');
- if (newLineCharacter)
- *newLineCharacter = '\0';
-
- if (strlen(filenameBuffer) == 0)
- continue;
-
- runTest(filenameBuffer);
- }
- } else {
- printSeparators = (optind < argc-1 || (dumpPixels && dumpTree));
- for (int i = optind; i != argc; ++i)
- runTest(argv[i]);
- }
-
- return 0;
-}
diff --git a/WebKitTools/DumpRenderTree/gtk/DumpRenderTreeGtk.h b/WebKitTools/DumpRenderTree/gtk/DumpRenderTreeGtk.h
deleted file mode 100644
index 1d2f179..0000000
--- a/WebKitTools/DumpRenderTree/gtk/DumpRenderTreeGtk.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2007 Eric Seidel <eric@webkit.org>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef DumpRenderTreeGtk_h
-#define DumpRenderTreeGtk_h
-
-#include <webkit/webkitdefines.h>
-#include <JavaScriptCore/JSBase.h>
-
-extern WebKitWebFrame* mainFrame;
-extern WebKitWebFrame* topLoadingFrame;
-extern guint waitToDumpWatchdog;
-
-gchar* JSStringCopyUTF8CString(JSStringRef jsString);
-
-#endif // DumpRenderTreeGtk_h
diff --git a/WebKitTools/DumpRenderTree/gtk/GCControllerGtk.cpp b/WebKitTools/DumpRenderTree/gtk/GCControllerGtk.cpp
deleted file mode 100644
index 35f1685..0000000
--- a/WebKitTools/DumpRenderTree/gtk/GCControllerGtk.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2007 Eric Seidel <eric@webkit.org>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "GCController.h"
-
-void GCController::collect() const
-{
-}
-
-void GCController::collectOnAlternateThread(bool waitUntilDone) const
-{
-}
-
-size_t GCController::getJSObjectCount() const
-{
- return 0;
-}
diff --git a/WebKitTools/DumpRenderTree/gtk/LayoutTestControllerGtk.cpp b/WebKitTools/DumpRenderTree/gtk/LayoutTestControllerGtk.cpp
deleted file mode 100644
index 3a01e60..0000000
--- a/WebKitTools/DumpRenderTree/gtk/LayoutTestControllerGtk.cpp
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- * Copyright (C) 2007 Eric Seidel <eric@webkit.org>
- * Copyright (C) 2008 Nuanti Ltd.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "LayoutTestController.h"
-
-#include "DumpRenderTree.h"
-#include "WorkQueue.h"
-#include "WorkQueueItem.h"
-#include <JavaScriptCore/JSRetainPtr.h>
-#include <JavaScriptCore/JSStringRef.h>
-
-#include <glib.h>
-#include <webkit/webkit.h>
-
-LayoutTestController::~LayoutTestController()
-{
- // FIXME: implement
-}
-
-void LayoutTestController::addDisallowedURL(JSStringRef url)
-{
- // FIXME: implement
-}
-
-void LayoutTestController::clearBackForwardList()
-{
- WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
- WebKitWebBackForwardList* list = webkit_web_view_get_back_forward_list(webView);
- WebKitWebHistoryItem* item = webkit_web_back_forward_list_get_current_item(list);
- g_object_ref(item);
-
- // We clear the history by setting the back/forward list's capacity to 0
- // then restoring it back and adding back the current item.
- gint limit = webkit_web_back_forward_list_get_limit(list);
- webkit_web_back_forward_list_set_limit(list, 0);
- webkit_web_back_forward_list_set_limit(list, limit);
- // FIXME: implement add_item()
- //webkit_web_back_forward_list_add_item(list, item);
- webkit_web_back_forward_list_go_to_item(list, item);
- g_object_unref(item);
-}
-
-JSStringRef LayoutTestController::copyDecodedHostName(JSStringRef name)
-{
- // FIXME: implement
- return 0;
-}
-
-JSStringRef LayoutTestController::copyEncodedHostName(JSStringRef name)
-{
- // FIXME: implement
- return 0;
-}
-
-void LayoutTestController::display()
-{
- displayWebView();
-}
-
-void LayoutTestController::keepWebHistory()
-{
- // FIXME: implement
-}
-
-void LayoutTestController::notifyDone()
-{
- if (m_waitToDump && !topLoadingFrame && !WorkQueue::shared()->count())
- dump();
- m_waitToDump = false;
-}
-
-JSStringRef LayoutTestController::pathToLocalResource(JSContextRef context, JSStringRef url)
-{
- // Function introduced in r28690. This may need special-casing on Windows.
- return JSStringRetain(url); // Do nothing on Unix.
-}
-
-void LayoutTestController::queueBackNavigation(int howFarBack)
-{
- WorkQueue::shared()->queue(new BackItem(howFarBack));
-}
-
-void LayoutTestController::queueForwardNavigation(int howFarForward)
-{
- WorkQueue::shared()->queue(new ForwardItem(howFarForward));
-}
-
-void LayoutTestController::queueLoad(JSStringRef url, JSStringRef target)
-{
- // FIXME: We need to resolve relative URLs here
- WorkQueue::shared()->queue(new LoadItem(url, target));
-}
-
-void LayoutTestController::queueReload()
-{
- WorkQueue::shared()->queue(new ReloadItem);
-}
-
-void LayoutTestController::queueScript(JSStringRef script)
-{
- WorkQueue::shared()->queue(new ScriptItem(script));
-}
-
-void LayoutTestController::setAcceptsEditing(bool acceptsEditing)
-{
- WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
- webkit_web_view_set_editable(webView, acceptsEditing);
-}
-
-void LayoutTestController::setCustomPolicyDelegate(bool setDelegate)
-{
- // FIXME: implement
-}
-
-void LayoutTestController::setMainFrameIsFirstResponder(bool flag)
-{
- // FIXME: implement
-}
-
-void LayoutTestController::setTabKeyCyclesThroughElements(bool cycles)
-{
- // FIXME: implement
-}
-
-void LayoutTestController::setUseDashboardCompatibilityMode(bool flag)
-{
- // FIXME: implement
-}
-
-static gchar* userStyleSheet = NULL;
-static gboolean userStyleSheetEnabled = TRUE;
-
-void LayoutTestController::setUserStyleSheetEnabled(bool flag)
-{
- userStyleSheetEnabled = flag;
-
- WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
- WebKitWebSettings* settings = webkit_web_view_get_settings(webView);
- if (flag && userStyleSheet)
- g_object_set(G_OBJECT(settings), "user-stylesheet-uri", userStyleSheet, NULL);
- else
- g_object_set(G_OBJECT(settings), "user-stylesheet-uri", "", NULL);
-}
-
-void LayoutTestController::setUserStyleSheetLocation(JSStringRef path)
-{
- g_free(userStyleSheet);
- userStyleSheet = JSStringCopyUTF8CString(path);
- if (userStyleSheetEnabled)
- setUserStyleSheetEnabled(true);
-}
-
-void LayoutTestController::setWindowIsKey(bool windowIsKey)
-{
- // FIXME: implement
-}
-
-void LayoutTestController::setSmartInsertDeleteEnabled(bool flag)
-{
- // FIXME: implement
-}
-
-static gboolean waitToDumpWatchdogFired(void*)
-{
- const char* message = "FAIL: Timed out waiting for notifyDone to be called\n";
- fprintf(stderr, "%s", message);
- fprintf(stdout, "%s", message);
- waitToDumpWatchdog = 0;
- dump();
- return FALSE;
-}
-
-void LayoutTestController::setWaitToDump(bool waitUntilDone)
-{
- static const int timeoutSeconds = 10;
-
- m_waitToDump = waitUntilDone;
- if (m_waitToDump && !waitToDumpWatchdog)
-#if GLIB_CHECK_VERSION(2,14,0)
- waitToDumpWatchdog = g_timeout_add_seconds(timeoutSeconds, waitToDumpWatchdogFired, 0);
-#else
- waitToDumpWatchdog = g_timeout_add(timeoutSeconds * 1000, waitToDumpWatchdogFired, 0);
-#endif
-}
-
-int LayoutTestController::windowCount()
-{
- // FIXME: implement
- return 1;
-}
-
-void LayoutTestController::setPrivateBrowsingEnabled(bool privateBrowsingEnabled)
-{
- // FIXME: implement
-}
-
-void LayoutTestController::setAuthorAndUserStylesEnabled(bool flag)
-{
- // FIXME: implement
-}
-
-void LayoutTestController::setJavaScriptProfilingEnabled(bool flag)
-{
- // FIXME: implement
-}
-
-void LayoutTestController::setPopupBlockingEnabled(bool popupBlockingEnabled)
-{
- // FIXME: implement
-}
-
-bool LayoutTestController::elementDoesAutoCompleteForElementWithId(JSStringRef id)
-{
- // FIXME: implement
- return false;
-}
-
-void LayoutTestController::execCommand(JSStringRef name, JSStringRef value)
-{
- // FIXME: implement
-}
-
-void LayoutTestController::setPersistentUserStyleSheetLocation(JSStringRef jsURL)
-{
- // FIXME: implement
-}
-
-void LayoutTestController::clearPersistentUserStyleSheet()
-{
- // FIXME: implement
-}
-
-void LayoutTestController::clearAllDatabases()
-{
- // FIXME: implement
-}
-
-void LayoutTestController::setDatabaseQuota(unsigned long long quota)
-{
- // FIXME: implement
-}
-
diff --git a/WebKitTools/DumpRenderTree/gtk/WorkQueueItemGtk.cpp b/WebKitTools/DumpRenderTree/gtk/WorkQueueItemGtk.cpp
deleted file mode 100644
index 5526667..0000000
--- a/WebKitTools/DumpRenderTree/gtk/WorkQueueItemGtk.cpp
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2007 Alp Toker <alp@atoker.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-#include "WorkQueueItem.h"
-
-#include "DumpRenderTree.h"
-
-#include <JavaScriptCore/JSStringRef.h>
-#include <webkit/webkit.h>
-#include <string.h>
-
-// Returns a newly allocated UTF-8 character buffer which must be freed with g_free()
-gchar* JSStringCopyUTF8CString(JSStringRef jsString)
-{
- size_t dataSize = JSStringGetMaximumUTF8CStringSize(jsString);
- gchar* utf8 = (gchar*)g_malloc(dataSize);
- JSStringGetUTF8CString(jsString, utf8, dataSize);
-
- return utf8;
-}
-
-void LoadItem::invoke() const
-{
- gchar* targetString = JSStringCopyUTF8CString(target());
-
- WebKitWebFrame* targetFrame;
- if (!strlen(targetString))
- targetFrame = mainFrame;
- else
- targetFrame = webkit_web_frame_find_frame(mainFrame, targetString);
- g_free(targetString);
-
- gchar* urlString = JSStringCopyUTF8CString(url());
- WebKitNetworkRequest* request = webkit_network_request_new(urlString);
- g_free(urlString);
- webkit_web_frame_load_request(targetFrame, request);
- g_object_unref(request);
-}
-
-void ReloadItem::invoke() const
-{
- webkit_web_frame_reload(mainFrame);
-}
-
-void ScriptItem::invoke() const
-{
- WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
- gchar* scriptString = JSStringCopyUTF8CString(script());
- webkit_web_view_execute_script(webView, scriptString);
- g_free(scriptString);
-}
-
-void BackForwardItem::invoke() const
-{
- WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
- webkit_web_view_go_back_or_forward(webView, m_howFar);
-}
diff --git a/WebKitTools/DumpRenderTree/mac/AccessibilityUIElementMac.mm b/WebKitTools/DumpRenderTree/mac/AccessibilityUIElementMac.mm
deleted file mode 100644
index 81edd99..0000000
--- a/WebKitTools/DumpRenderTree/mac/AccessibilityUIElementMac.mm
+++ /dev/null
@@ -1,425 +0,0 @@
-/*
- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "DumpRenderTree.h"
-#import "AccessibilityUIElement.h"
-
-#import <Foundation/Foundation.h>
-#import <JavaScriptCore/JSStringRef.h>
-#import <JavaScriptCore/JSStringRefCF.h>
-#import <WebKit/WebFrame.h>
-#import <WebKit/WebHTMLView.h>
-#import <WebKit/WebTypesInternal.h>
-#import <wtf/RetainPtr.h>
-#import <wtf/Vector.h>
-
-AccessibilityUIElement::AccessibilityUIElement(PlatformUIElement element)
- : m_element(element)
-{
- [m_element retain];
-}
-
-AccessibilityUIElement::AccessibilityUIElement(const AccessibilityUIElement& other)
- : m_element(other.m_element)
-{
- [m_element retain];
-}
-
-AccessibilityUIElement::~AccessibilityUIElement()
-{
- [m_element release];
-}
-
-@interface NSString (JSStringRefAdditions)
-- (JSStringRef)createJSStringRef;
-@end
-
-@implementation NSString (JSStringRefAdditions)
-
-- (JSStringRef)createJSStringRef
-{
- return JSStringCreateWithCFString((CFStringRef)self);
-}
-
-@end
-
-static NSString* descriptionOfValue(id valueObject, id focusedAccessibilityObject)
-{
- if (!valueObject)
- return NULL;
-
- if ([valueObject isKindOfClass:[NSArray class]])
- return [NSString stringWithFormat:@"<array of size %d>", [(NSArray*)valueObject count]];
-
- if ([valueObject isKindOfClass:[NSNumber class]])
- return [(NSNumber*)valueObject stringValue];
-
- if ([valueObject isKindOfClass:[NSValue class]]) {
- NSString* type = [NSString stringWithCString:[valueObject objCType] encoding:NSASCIIStringEncoding];
- NSValue* value = (NSValue*)valueObject;
- if ([type rangeOfString:@"NSRect"].length > 0)
- return [NSString stringWithFormat:@"NSRect: %@", NSStringFromRect([value rectValue])];
- if ([type rangeOfString:@"NSPoint"].length > 0)
- return [NSString stringWithFormat:@"NSPoint: %@", NSStringFromPoint([value pointValue])];
- if ([type rangeOfString:@"NSSize"].length > 0)
- return [NSString stringWithFormat:@"NSSize: %@", NSStringFromSize([value sizeValue])];
- if ([type rangeOfString:@"NSRange"].length > 0)
- return [NSString stringWithFormat:@"NSRange: %@", NSStringFromRange([value rangeValue])];
- }
-
- // Strip absolute URL paths
- NSString* description = [valueObject description];
- NSRange range = [description rangeOfString:@"LayoutTests"];
- if (range.length)
- return [description substringFromIndex:range.location];
-
- // Strip pointer locations
- if ([description rangeOfString:@"0x"].length) {
- NSString* role = [focusedAccessibilityObject accessibilityAttributeValue:@"AXRole"];
- NSString* title = [focusedAccessibilityObject accessibilityAttributeValue:@"AXTitle"];
- if ([title length])
- return [NSString stringWithFormat:@"<%@: '%@'>", role, title];
- return [NSString stringWithFormat:@"<%@>", role];
- }
-
- return [valueObject description];
-}
-
-static NSString* attributesOfElement(id accessibilityObject)
-{
- NSArray* supportedAttributes = [accessibilityObject accessibilityAttributeNames];
-
- NSMutableString* attributesString = [NSMutableString string];
- for (NSUInteger i = 0; i < [supportedAttributes count]; ++i) {
- NSString* attribute = [supportedAttributes objectAtIndex:i];
-
- // Right now, position provides useless and screen-specific information, so we do not
- // want to include it for the sake of universally passing tests.
- if ([attribute isEqualToString:@"AXPosition"])
- continue;
-
- id valueObject = [accessibilityObject accessibilityAttributeValue:attribute];
- NSString* value = descriptionOfValue(valueObject, accessibilityObject);
- [attributesString appendFormat:@"%@: %@\n", attribute, value];
- }
-
- return attributesString;
-}
-
-static JSStringRef concatenateAttributeAndValue(NSString* attribute, NSString* value)
-{
- Vector<UniChar> buffer([attribute length]);
- [attribute getCharacters:buffer.data()];
- buffer.append(':');
- buffer.append(' ');
-
- Vector<UniChar> valueBuffer([value length]);
- [value getCharacters:valueBuffer.data()];
- buffer.append(valueBuffer);
-
- return JSStringCreateWithCharacters(buffer.data(), buffer.size());
-}
-
-static void convertNSArrayToVector(NSArray* array, Vector<AccessibilityUIElement>& elementVector)
-{
- NSUInteger count = [array count];
- for (NSUInteger i = 0; i < count; ++i)
- elementVector.append(AccessibilityUIElement([array objectAtIndex:i]));
-}
-
-static JSStringRef descriptionOfElements(Vector<AccessibilityUIElement>& elementVector)
-{
- NSMutableString* allElementString = [NSMutableString string];
- size_t size = elementVector.size();
- for (size_t i = 0; i < size; ++i) {
- NSString* attributes = attributesOfElement(elementVector[i].platformUIElement());
- [allElementString appendFormat:@"%@\n------------\n", attributes];
- }
-
- return [allElementString createJSStringRef];
-}
-
-void AccessibilityUIElement::getLinkedUIElements(Vector<AccessibilityUIElement>& elementVector)
-{
- NSArray* linkedElements = [m_element accessibilityAttributeValue:NSAccessibilityLinkedUIElementsAttribute];
- convertNSArrayToVector(linkedElements, elementVector);
-}
-
-void AccessibilityUIElement::getDocumentLinks(Vector<AccessibilityUIElement>& elementVector)
-{
- NSArray* linkElements = [m_element accessibilityAttributeValue:@"AXLinkUIElements"];
- convertNSArrayToVector(linkElements, elementVector);
-}
-
-void AccessibilityUIElement::getChildren(Vector<AccessibilityUIElement>& elementVector)
-{
- NSArray* children = [m_element accessibilityAttributeValue:NSAccessibilityChildrenAttribute];
- convertNSArrayToVector(children, elementVector);
-}
-
-AccessibilityUIElement AccessibilityUIElement::getChildAtIndex(unsigned index)
-{
- Vector<AccessibilityUIElement> children;
- getChildren(children);
-
- if (index < children.size())
- return children[index];
- return nil;
-}
-
-AccessibilityUIElement AccessibilityUIElement::titleUIElement()
-{
- id accessibilityObject = [m_element accessibilityAttributeValue:NSAccessibilityTitleUIElementAttribute];
- if (accessibilityObject)
- return AccessibilityUIElement(accessibilityObject);
-
- return nil;
-}
-
-JSStringRef AccessibilityUIElement::attributesOfLinkedUIElements()
-{
- Vector<AccessibilityUIElement> linkedElements;
- getLinkedUIElements(linkedElements);
- return descriptionOfElements(linkedElements);
-}
-
-JSStringRef AccessibilityUIElement::attributesOfDocumentLinks()
-{
- Vector<AccessibilityUIElement> linkElements;
- getDocumentLinks(linkElements);
- return descriptionOfElements(linkElements);
-}
-
-JSStringRef AccessibilityUIElement::attributesOfChildren()
-{
- Vector<AccessibilityUIElement> children;
- getChildren(children);
- return descriptionOfElements(children);
-}
-
-JSStringRef AccessibilityUIElement::allAttributes()
-{
- NSString* attributes = attributesOfElement(m_element);
- return [attributes createJSStringRef];
-}
-
-JSStringRef AccessibilityUIElement::parameterizedAttributeNames()
-{
- NSArray* supportedParameterizedAttributes = [m_element accessibilityParameterizedAttributeNames];
-
- NSMutableString* attributesString = [NSMutableString string];
- for (NSUInteger i = 0; i < [supportedParameterizedAttributes count]; ++i) {
- [attributesString appendFormat:@"%@\n", [supportedParameterizedAttributes objectAtIndex:i]];
- }
-
- return [attributesString createJSStringRef];
-}
-
-JSStringRef AccessibilityUIElement::role()
-{
- NSString* role = descriptionOfValue([m_element accessibilityAttributeValue:@"AXRole"], m_element);
- return concatenateAttributeAndValue(@"AXRole", role);
-}
-
-JSStringRef AccessibilityUIElement::title()
-{
- NSString* title = descriptionOfValue([m_element accessibilityAttributeValue:@"AXTitle"], m_element);
- return concatenateAttributeAndValue(@"AXTitle", title);
-}
-
-JSStringRef AccessibilityUIElement::description()
-{
- id description = descriptionOfValue([m_element accessibilityAttributeValue:@"AXDescription"], m_element);
- return concatenateAttributeAndValue(@"AXDescription", description);
-}
-
-double AccessibilityUIElement::width()
-{
- NSValue* sizeValue = [m_element accessibilityAttributeValue:@"AXSize"];
- return static_cast<double>([sizeValue sizeValue].width);
-}
-
-double AccessibilityUIElement::height()
-{
- NSValue* sizeValue = [m_element accessibilityAttributeValue:@"AXSize"];
- return static_cast<double>([sizeValue sizeValue].height);
-}
-
-double AccessibilityUIElement::intValue()
-{
- id value = [m_element accessibilityAttributeValue:@"AXValue"];
- if ([value isKindOfClass:[NSNumber class]])
- return [(NSNumber*)value doubleValue];
- return 0.0f;
-}
-
-double AccessibilityUIElement::minValue()
-{
- id value = [m_element accessibilityAttributeValue:@"AXMinValue"];
- if ([value isKindOfClass:[NSNumber class]])
- return [(NSNumber*)value doubleValue];
- return 0.0f;
-}
-
-double AccessibilityUIElement::maxValue()
-{
- id value = [m_element accessibilityAttributeValue:@"AXMaxValue"];
- if ([value isKindOfClass:[NSNumber class]])
- return [(NSNumber*)value doubleValue];
- return 0.0;
-}
-
-int AccessibilityUIElement::insertionPointLineNumber()
-{
- id value = [m_element accessibilityAttributeValue:@"AXInsertionPointLineNumber"];
- if ([value isKindOfClass:[NSNumber class]])
- return [(NSNumber *)value intValue];
- return -1;
-}
-
-bool AccessibilityUIElement::supportsPressAction()
-{
- NSArray* actions = [m_element accessibilityActionNames];
- return [actions containsObject:@"AXPress"];
-}
-
-// parameterized attributes
-int AccessibilityUIElement::lineForIndex(int index)
-{
- id value = [m_element accessibilityAttributeValue:@"AXLineForIndex" forParameter:[NSNumber numberWithInt:index]];
- if ([value isKindOfClass:[NSNumber class]])
- return [(NSNumber *)value intValue];
- return -1;
-}
-
-JSStringRef AccessibilityUIElement::boundsForRange(unsigned location, unsigned length)
-{
- NSRange range = NSMakeRange(location, length);
- id value = [m_element accessibilityAttributeValue:NSAccessibilityBoundsForRangeParameterizedAttribute forParameter:[NSValue valueWithRange:range]];
- NSRect rect = NSMakeRect(0,0,0,0);
- if ([value isKindOfClass:[NSValue class]])
- rect = [value rectValue];
-
- // don't return position information because it is platform dependent
- NSMutableString* boundsDescription = [NSMutableString stringWithFormat:@"{{%f, %f}, {%f, %f}}",-1.0f,-1.0f,rect.size.width,rect.size.height];
- return [boundsDescription createJSStringRef];
-}
-
-JSStringRef AccessibilityUIElement::attributesOfColumnHeaders()
-{
- // not yet defined in AppKit... odd
- NSArray* columnHeadersArray = [m_element accessibilityAttributeValue:@"AXColumnHeaderUIElements"];
- Vector<AccessibilityUIElement> columnHeadersVector;
- convertNSArrayToVector(columnHeadersArray, columnHeadersVector);
- return descriptionOfElements(columnHeadersVector);
-}
-
-JSStringRef AccessibilityUIElement::attributesOfRowHeaders()
-{
- NSArray* rowHeadersArray = [m_element accessibilityAttributeValue:@"AXRowHeaderUIElements"];
- Vector<AccessibilityUIElement> rowHeadersVector;
- convertNSArrayToVector(rowHeadersArray, rowHeadersVector);
- return descriptionOfElements(rowHeadersVector);
-}
-
-JSStringRef AccessibilityUIElement::attributesOfColumns()
-{
- NSArray* columnsArray = [m_element accessibilityAttributeValue:NSAccessibilityColumnsAttribute];
- Vector<AccessibilityUIElement> columnsVector;
- convertNSArrayToVector(columnsArray, columnsVector);
- return descriptionOfElements(columnsVector);
-}
-
-JSStringRef AccessibilityUIElement::attributesOfRows()
-{
- NSArray* rowsArray = [m_element accessibilityAttributeValue:NSAccessibilityRowsAttribute];
- Vector<AccessibilityUIElement> rowsVector;
- convertNSArrayToVector(rowsArray, rowsVector);
- return descriptionOfElements(rowsVector);
-}
-
-JSStringRef AccessibilityUIElement::attributesOfVisibleCells()
-{
- NSArray* cellsArray = [m_element accessibilityAttributeValue:@"AXVisibleCells"];
- Vector<AccessibilityUIElement> cellsVector;
- convertNSArrayToVector(cellsArray, cellsVector);
- return descriptionOfElements(cellsVector);
-}
-
-JSStringRef AccessibilityUIElement::attributesOfHeader()
-{
- id headerObject = [m_element accessibilityAttributeValue:NSAccessibilityHeaderAttribute];
- if (!headerObject)
- return [@"" createJSStringRef];
-
- Vector<AccessibilityUIElement> headerVector;
- headerVector.append(headerObject);
- return descriptionOfElements(headerVector);
-}
-
-int AccessibilityUIElement::indexInTable()
-{
- NSNumber* indexNumber = [m_element accessibilityAttributeValue:NSAccessibilityIndexAttribute];
- if (!indexNumber)
- return -1;
- return [indexNumber intValue];
-}
-
-JSStringRef AccessibilityUIElement::rowIndexRange()
-{
- NSValue* indexRange = [m_element accessibilityAttributeValue:@"AXRowIndexRange"];
- NSRange range = indexRange ? [indexRange rangeValue] : NSMakeRange(0,0);
- NSMutableString* rangeDescription = [NSMutableString stringWithFormat:@"{%d, %d}",range.location, range.length];
- return [rangeDescription createJSStringRef];
-}
-
-JSStringRef AccessibilityUIElement::columnIndexRange()
-{
- NSNumber* indexRange = [m_element accessibilityAttributeValue:@"AXColumnIndexRange"];
- NSRange range = indexRange ? [indexRange rangeValue] : NSMakeRange(0,0);
- NSMutableString* rangeDescription = [NSMutableString stringWithFormat:@"{%d, %d}",range.location, range.length];
- return [rangeDescription createJSStringRef];
-}
-
-AccessibilityUIElement AccessibilityUIElement::cellForColumnAndRow(unsigned col, unsigned row)
-{
- NSArray *colRowArray = [NSArray arrayWithObjects:[NSNumber numberWithUnsignedInt:col], [NSNumber numberWithUnsignedInt:row], nil];
- return [m_element accessibilityAttributeValue:@"AXCellForColumnAndRow" forParameter:colRowArray];
-}
-
-JSStringRef AccessibilityUIElement::selectedTextRange()
-{
- NSNumber *indexRange = [m_element accessibilityAttributeValue:NSAccessibilitySelectedTextRangeAttribute];
- NSRange range = indexRange ? [indexRange rangeValue] : NSMakeRange(0,0);
- NSMutableString *rangeDescription = [NSMutableString stringWithFormat:@"{%d, %d}",range.location, range.length];
- return [rangeDescription createJSStringRef];
-}
-
-void AccessibilityUIElement::setSelectedTextRange(unsigned location, unsigned length)
-{
- NSRange textRange = NSMakeRange(location, length);
- NSValue *textRangeValue = [NSValue valueWithRange:textRange];
- [m_element accessibilitySetValue:textRangeValue forAttribute:NSAccessibilitySelectedTextRangeAttribute];
-}
diff --git a/WebKitTools/DumpRenderTree/mac/AppleScriptController.h b/WebKitTools/DumpRenderTree/mac/AppleScriptController.h
deleted file mode 100644
index c29789c..0000000
--- a/WebKitTools/DumpRenderTree/mac/AppleScriptController.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
- * Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com)
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <Foundation/Foundation.h>
-
-@class WebView;
-
-@interface AppleScriptController : NSObject
-{
- WebView *webView;
-}
-- (id)initWithWebView:(WebView *)view;
-@end
diff --git a/WebKitTools/DumpRenderTree/mac/AppleScriptController.m b/WebKitTools/DumpRenderTree/mac/AppleScriptController.m
deleted file mode 100644
index 86d2881..0000000
--- a/WebKitTools/DumpRenderTree/mac/AppleScriptController.m
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
- * Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com)
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "AppleScriptController.h"
-
-#import <WebKit/WebView.h>
-#import <WebKit/WebViewPrivate.h> // for aeDescByEvaluatingJavaScriptFromString, which is pending API review
-
-@implementation AppleScriptController
-
-+ (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector
-{
- if (aSelector == @selector(doJavaScript:))
- return NO;
- return YES;
-}
-
-+ (NSString *)webScriptNameForSelector:(SEL)aSelector
-{
- if (aSelector == @selector(doJavaScript:))
- return @"doJavaScript";
-
- return nil;
-}
-
-- (id)initWithWebView:(WebView *)wv
-{
- self = [super init];
- webView = wv;
- return self;
-}
-
-static id convertAEDescToObject(NSAppleEventDescriptor *aeDesc)
-{
- id value = nil;
-
- DescType descType = [aeDesc descriptorType];
- switch (descType) {
- case typeUnicodeText:
- value = [NSString stringWithFormat:@"\"%@\"", [aeDesc stringValue]];
- break;
- case typeLongDateTime:
- if ([[aeDesc data] length] == sizeof(LongDateTime)) {
- LongDateTime d;
- [[aeDesc data] getBytes:&d];
- value = [NSString stringWithFormat:@"%016llX", (unsigned long long)d];
- }
- break;
- case typeAEList:
- value = [NSMutableString stringWithString:@"("];
- int numItems = [aeDesc numberOfItems];
- for (int i = 0; i < numItems; ++i) {
- if (i != 0)
- [(NSMutableString*)value appendString:@", "];
- id obj = convertAEDescToObject([aeDesc descriptorAtIndex:(i + 1)]);
- [(NSMutableString*)value appendString:[obj description]];
- }
- [(NSMutableString*)value appendString:@")"];
- break;
- case typeType: {
- OSType type = [aeDesc typeCodeValue];
-
- char typeStr[5];
- typeStr[0] = type >> 24;
- typeStr[1] = type >> 16;
- typeStr[2] = type >> 8;
- typeStr[3] = type;
- typeStr[4] = 0;
-
- value = [NSString stringWithFormat:@"'%s'", typeStr];
- break;
- }
- }
-
- if (!value)
- value = [aeDesc stringValue];
- if (!value)
- value = [aeDesc data];
-
- return value;
-}
-
-- (NSString *)doJavaScript:(NSString *)aString
-{
- NSAppleEventDescriptor *aeDesc = [webView aeDescByEvaluatingJavaScriptFromString:aString];
- if (!aeDesc)
- return @"(null)";
-
- DescType descType = [aeDesc descriptorType];
- char descTypeStr[5];
- descTypeStr[0] = descType >> 24;
- descTypeStr[1] = descType >> 16;
- descTypeStr[2] = descType >> 8;
- descTypeStr[3] = descType;
- descTypeStr[4] = 0;
-
- return [NSString stringWithFormat:@"%@ ('%s')", convertAEDescToObject(aeDesc), descTypeStr];
-}
-
-@end
diff --git a/WebKitTools/DumpRenderTree/mac/CheckedMalloc.cpp b/WebKitTools/DumpRenderTree/mac/CheckedMalloc.cpp
deleted file mode 100644
index 467f1bb..0000000
--- a/WebKitTools/DumpRenderTree/mac/CheckedMalloc.cpp
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2005, 2006, 2007 Apple, Inc. All rights reserved.
- * (C) 2007 Graham Dennis (graham.dennis@gmail.com)
- * (C) 2007 Eric Seidel <eric@webkit.org>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "CheckedMalloc.h"
-
-#import <malloc/malloc.h>
-
-static void* (*savedMalloc)(malloc_zone_t*, size_t);
-static void* (*savedRealloc)(malloc_zone_t*, void*, size_t);
-
-static void* checkedMalloc(malloc_zone_t* zone, size_t size)
-{
- if (size >= 0x10000000)
- return 0;
- return savedMalloc(zone, size);
-}
-
-static void* checkedRealloc(malloc_zone_t* zone, void* ptr, size_t size)
-{
- if (size >= 0x10000000)
- return 0;
- return savedRealloc(zone, ptr, size);
-}
-
-void makeLargeMallocFailSilently()
-{
- malloc_zone_t* zone = malloc_default_zone();
- savedMalloc = zone->malloc;
- savedRealloc = zone->realloc;
- zone->malloc = checkedMalloc;
- zone->realloc = checkedRealloc;
-}
diff --git a/WebKitTools/DumpRenderTree/mac/CheckedMalloc.h b/WebKitTools/DumpRenderTree/mac/CheckedMalloc.h
deleted file mode 100644
index c03bd20..0000000
--- a/WebKitTools/DumpRenderTree/mac/CheckedMalloc.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2005, 2006, 2007 Apple, Inc. All rights reserved.
- * (C) 2007 Graham Dennis (graham.dennis@gmail.com)
- * (C) 2007 Eric Seidel <eric@webkit.org>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-void makeLargeMallocFailSilently();
diff --git a/WebKitTools/DumpRenderTree/mac/Configurations/Base.xcconfig b/WebKitTools/DumpRenderTree/mac/Configurations/Base.xcconfig
deleted file mode 100644
index de9d67f..0000000
--- a/WebKitTools/DumpRenderTree/mac/Configurations/Base.xcconfig
+++ /dev/null
@@ -1,17 +0,0 @@
-HEADER_SEARCH_PATHS = ForwardingHeaders
-FRAMEWORK_SEARCH_PATHS = $(FRAMEWORK_SEARCH_PATHS_$(MAC_OS_X_VERSION_MAJOR));
-FRAMEWORK_SEARCH_PATHS_ = $(SYSTEM_LIBRARY_DIR)/Frameworks/Quartz.framework/Frameworks $(SYSTEM_LIBRARY_DIR)/Frameworks/ApplicationServices.framework/Frameworks
-FRAMEWORK_SEARCH_PATHS_1040 = $(SYSTEM_LIBRARY_DIR)/Frameworks/Quartz.framework/Frameworks $(SYSTEM_LIBRARY_DIR)/Frameworks/ApplicationServices.framework/Frameworks
-FRAMEWORK_SEARCH_PATHS_1050 = $(SYSTEM_LIBRARY_DIR)/Frameworks/Quartz.framework/Frameworks $(SYSTEM_LIBRARY_DIR)/Frameworks/ApplicationServices.framework/Frameworks $(SYSTEM_LIBRARY_DIR)/Frameworks/CoreServices.framework/Frameworks
-FRAMEWORK_SEARCH_PATHS_1060 = $(SYSTEM_LIBRARY_DIR)/Frameworks/Quartz.framework/Frameworks $(SYSTEM_LIBRARY_DIR)/Frameworks/ApplicationServices.framework/Frameworks $(SYSTEM_LIBRARY_DIR)/Frameworks/CoreServices.framework/Frameworks
-GCC_PREPROCESSOR_DEFINITIONS = ENABLE_DASHBOARD_SUPPORT;
-DEBUG_INFORMATION_FORMAT = dwarf
-PREBINDING = NO
-GCC_C_LANGUAGE_STANDARD = gnu99
-GCC_PRECOMPILE_PREFIX_HEADER = YES
-GCC_TREAT_WARNINGS_AS_ERRORS = YES
-GCC_WARN_UNUSED_FUNCTION = YES
-GCC_WARN_UNUSED_VARIABLE = YES
-GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO
-WARNING_CFLAGS = -Wall -W -Wno-unused-parameter
-LINKER_DISPLAYS_MANGLED_NAMES = YES;
diff --git a/WebKitTools/DumpRenderTree/mac/Configurations/DebugRelease.xcconfig b/WebKitTools/DumpRenderTree/mac/Configurations/DebugRelease.xcconfig
deleted file mode 100644
index e272da2..0000000
--- a/WebKitTools/DumpRenderTree/mac/Configurations/DebugRelease.xcconfig
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "Base.xcconfig"
-ARCHS = $(NATIVE_ARCH);
-
-MACOSX_DEPLOYMENT_TARGET = $(MACOSX_DEPLOYMENT_TARGET_$(MAC_OS_X_VERSION_MAJOR))
-MACOSX_DEPLOYMENT_TARGET_ = 10.4
-MACOSX_DEPLOYMENT_TARGET_1040 = 10.4
-MACOSX_DEPLOYMENT_TARGET_1050 = 10.5
diff --git a/WebKitTools/DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig b/WebKitTools/DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig
deleted file mode 100644
index b977225..0000000
--- a/WebKitTools/DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig
+++ /dev/null
@@ -1,4 +0,0 @@
-OTHER_LDFLAGS = -sectcreate __DATA Ahem qt/fonts/AHEM____.TTF -sectcreate __DATA WeightWatcher100 fonts/WebKitWeightWatcher100.ttf -sectcreate __DATA WeightWatcher200 fonts/WebKitWeightWatcher200.ttf -sectcreate __DATA WeightWatcher300 fonts/WebKitWeightWatcher300.ttf -sectcreate __DATA WeightWatcher400 fonts/WebKitWeightWatcher400.ttf -sectcreate __DATA WeightWatcher500 fonts/WebKitWeightWatcher500.ttf -sectcreate __DATA WeightWatcher600 fonts/WebKitWeightWatcher600.ttf -sectcreate __DATA WeightWatcher700 fonts/WebKitWeightWatcher700.ttf -sectcreate __DATA WeightWatcher800 fonts/WebKitWeightWatcher800.ttf -sectcreate __DATA WeightWatcher900 fonts/WebKitWeightWatcher900.ttf
-PRODUCT_NAME = DumpRenderTree
-GCC_ENABLE_OBJC_EXCEPTIONS = YES
-GCC_PREFIX_HEADER = DumpRenderTreePrefix.h
diff --git a/WebKitTools/DumpRenderTree/mac/Configurations/ImageDiff.xcconfig b/WebKitTools/DumpRenderTree/mac/Configurations/ImageDiff.xcconfig
deleted file mode 100644
index fcd64c5..0000000
--- a/WebKitTools/DumpRenderTree/mac/Configurations/ImageDiff.xcconfig
+++ /dev/null
@@ -1 +0,0 @@
-PRODUCT_NAME = ImageDiff
diff --git a/WebKitTools/DumpRenderTree/mac/Configurations/TestNetscapePlugIn.xcconfig b/WebKitTools/DumpRenderTree/mac/Configurations/TestNetscapePlugIn.xcconfig
deleted file mode 100644
index ea17629..0000000
--- a/WebKitTools/DumpRenderTree/mac/Configurations/TestNetscapePlugIn.xcconfig
+++ /dev/null
@@ -1,6 +0,0 @@
-PRODUCT_NAME = TestNetscapePlugIn
-WRAPPER_EXTENSION = plugin
-INFOPLIST_FILE = TestNetscapePlugIn.subproj/Info.plist
-INSTALL_PATH = "$(USER_LIBRARY_DIR)/Plugins"
-WARNING_CFLAGS = -Wmost -Wno-four-char-constants -Wno-unknown-pragmas
-LIBRARY_STYLE = BUNDLE
diff --git a/WebKitTools/DumpRenderTree/mac/DumpRenderTree.mm b/WebKitTools/DumpRenderTree/mac/DumpRenderTree.mm
deleted file mode 100644
index 203c6b2..0000000
--- a/WebKitTools/DumpRenderTree/mac/DumpRenderTree.mm
+++ /dev/null
@@ -1,1093 +0,0 @@
-/*
- * Copyright (C) 2005, 2006, 2007 Apple Inc. All rights reserved.
- * (C) 2007 Graham Dennis (graham.dennis@gmail.com)
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "DumpRenderTree.h"
-
-#import "AccessibilityController.h"
-#import "CheckedMalloc.h"
-#import "DumpRenderTreePasteboard.h"
-#import "DumpRenderTreeWindow.h"
-#import "EditingDelegate.h"
-#import "EventSendingController.h"
-#import "FrameLoadDelegate.h"
-#import "JavaScriptThreading.h"
-#import "LayoutTestController.h"
-#import "NavigationController.h"
-#import "ObjCPlugin.h"
-#import "ObjCPluginFunction.h"
-#import "PixelDumpSupport.h"
-#import "PolicyDelegate.h"
-#import "ResourceLoadDelegate.h"
-#import "UIDelegate.h"
-#import "WorkQueue.h"
-#import "WorkQueueItem.h"
-#import <Carbon/Carbon.h>
-#import <CoreFoundation/CoreFoundation.h>
-#import <WebKit/DOMElementPrivate.h>
-#import <WebKit/DOMExtensions.h>
-#import <WebKit/DOMRange.h>
-#import <WebKit/WebBackForwardList.h>
-#import <WebKit/WebCache.h>
-#import <WebKit/WebCoreStatistics.h>
-#import <WebKit/WebDataSourcePrivate.h>
-#import <WebKit/WebDatabaseManagerPrivate.h>
-#import <WebKit/WebDocumentPrivate.h>
-#import <WebKit/WebEditingDelegate.h>
-#import <WebKit/WebFrameView.h>
-#import <WebKit/WebHTMLRepresentationInternal.h>
-#import <WebKit/WebHistory.h>
-#import <WebKit/WebHistoryItemPrivate.h>
-#import <WebKit/WebInspector.h>
-#import <WebKit/WebPluginDatabase.h>
-#import <WebKit/WebPreferences.h>
-#import <WebKit/WebPreferencesPrivate.h>
-#import <WebKit/WebResourceLoadDelegate.h>
-#import <WebKit/WebTypesInternal.h>
-#import <WebKit/WebViewPrivate.h>
-#import <getopt.h>
-#import <mach-o/getsect.h>
-#import <objc/objc-runtime.h>
-#import <wtf/Assertions.h>
-#import <wtf/RetainPtr.h>
-#import <wtf/OwnPtr.h>
-
-using namespace std;
-
-@interface DumpRenderTreeEvent : NSEvent
-@end
-
-static void runTest(const string& testPathOrURL);
-
-// Deciding when it's OK to dump out the state is a bit tricky. All these must be true:
-// - There is no load in progress
-// - There is no work queued up (see workQueue var, below)
-// - waitToDump==NO. This means either waitUntilDone was never called, or it was called
-// and notifyDone was called subsequently.
-// Note that the call to notifyDone and the end of the load can happen in either order.
-
-volatile bool done;
-
-NavigationController* gNavigationController = 0;
-LayoutTestController* gLayoutTestController = 0;
-
-WebFrame *mainFrame = 0;
-// This is the topmost frame that is loading, during a given load, or nil when no load is
-// in progress. Usually this is the same as the main frame, but not always. In the case
-// where a frameset is loaded, and then new content is loaded into one of the child frames,
-// that child frame is the "topmost frame that is loading".
-WebFrame *topLoadingFrame = nil; // !nil iff a load is in progress
-
-
-CFMutableSetRef disallowedURLs = 0;
-CFRunLoopTimerRef waitToDumpWatchdog = 0;
-
-// Delegates
-static FrameLoadDelegate *frameLoadDelegate;
-static UIDelegate *uiDelegate;
-static EditingDelegate *editingDelegate;
-static ResourceLoadDelegate *resourceLoadDelegate;
-PolicyDelegate *policyDelegate;
-
-static int dumpPixels;
-static int threaded;
-static int dumpTree = YES;
-static int forceComplexText;
-static BOOL printSeparators;
-static RetainPtr<CFStringRef> persistentUserStyleSheetLocation;
-
-static WebHistoryItem *prevTestBFItem = nil; // current b/f item at the end of the previous test
-
-const unsigned maxViewHeight = 600;
-const unsigned maxViewWidth = 800;
-
-#if __OBJC2__
-static void swizzleAllMethods(Class imposter, Class original)
-{
- unsigned int imposterMethodCount;
- Method* imposterMethods = class_copyMethodList(imposter, &imposterMethodCount);
-
- unsigned int originalMethodCount;
- Method* originalMethods = class_copyMethodList(original, &originalMethodCount);
-
- for (unsigned int i = 0; i < imposterMethodCount; i++) {
- SEL imposterMethodName = method_getName(imposterMethods[i]);
-
- // Attempt to add the method to the original class. If it fails, the method already exists and we should
- // instead exchange the implementations.
- if (class_addMethod(original, imposterMethodName, method_getImplementation(originalMethods[i]), method_getTypeEncoding(originalMethods[i])))
- continue;
-
- unsigned int j = 0;
- for (; j < originalMethodCount; j++) {
- SEL originalMethodName = method_getName(originalMethods[j]);
- if (sel_isEqual(imposterMethodName, originalMethodName))
- break;
- }
-
- // If class_addMethod failed above then the method must exist on the original class.
- ASSERT(j < originalMethodCount);
- method_exchangeImplementations(imposterMethods[i], originalMethods[j]);
- }
-
- free(imposterMethods);
- free(originalMethods);
-}
-#endif
-
-static void poseAsClass(const char* imposter, const char* original)
-{
- Class imposterClass = objc_getClass(imposter);
- Class originalClass = objc_getClass(original);
-
-#if !__OBJC2__
- class_poseAs(imposterClass, originalClass);
-#else
-
- // Swizzle instance methods
- swizzleAllMethods(imposterClass, originalClass);
- // and then class methods
- swizzleAllMethods(object_getClass(imposterClass), object_getClass(originalClass));
-#endif
-}
-
-void setPersistentUserStyleSheetLocation(CFStringRef url)
-{
- persistentUserStyleSheetLocation = url;
-}
-
-static bool shouldIgnoreWebCoreNodeLeaks(const string& URLString)
-{
- static char* const ignoreSet[] = {
- // Keeping this infrastructure around in case we ever need it again.
- };
- static const int ignoreSetCount = sizeof(ignoreSet) / sizeof(char*);
-
- for (int i = 0; i < ignoreSetCount; i++) {
- // FIXME: ignore case
- string curIgnore(ignoreSet[i]);
- // Match at the end of the URLString
- if (!URLString.compare(URLString.length() - curIgnore.length(), curIgnore.length(), curIgnore))
- return true;
- }
- return false;
-}
-
-static void activateFonts()
-{
- static const char* fontSectionNames[] = {
- "Ahem",
- "WeightWatcher100",
- "WeightWatcher200",
- "WeightWatcher300",
- "WeightWatcher400",
- "WeightWatcher500",
- "WeightWatcher600",
- "WeightWatcher700",
- "WeightWatcher800",
- "WeightWatcher900",
- 0
- };
-
- for (unsigned i = 0; fontSectionNames[i]; ++i) {
- unsigned long fontDataLength;
- char* fontData = getsectdata("__DATA", fontSectionNames[i], &fontDataLength);
- if (!fontData) {
- fprintf(stderr, "Failed to locate the %s font.\n", fontSectionNames[i]);
- exit(1);
- }
-
- ATSFontContainerRef fontContainer;
- OSStatus status = ATSFontActivateFromMemory(fontData, fontDataLength, kATSFontContextLocal, kATSFontFormatUnspecified, NULL, kATSOptionFlagsDefault, &fontContainer);
-
- if (status != noErr) {
- fprintf(stderr, "Failed to activate the %s font.\n", fontSectionNames[i]);
- exit(1);
- }
- }
-}
-
-WebView *createWebViewAndOffscreenWindow()
-{
- NSRect rect = NSMakeRect(0, 0, maxViewWidth, maxViewHeight);
- WebView *webView = [[WebView alloc] initWithFrame:rect frameName:nil groupName:@"org.webkit.DumpRenderTree"];
-
- [webView setUIDelegate:uiDelegate];
- [webView setFrameLoadDelegate:frameLoadDelegate];
- [webView setEditingDelegate:editingDelegate];
- [webView setResourceLoadDelegate:resourceLoadDelegate];
-
- // Register the same schemes that Safari does
- [WebView registerURLSchemeAsLocal:@"feed"];
- [WebView registerURLSchemeAsLocal:@"feeds"];
- [WebView registerURLSchemeAsLocal:@"feedsearch"];
-
- [webView setContinuousSpellCheckingEnabled:YES];
-
- // To make things like certain NSViews, dragging, and plug-ins work, put the WebView a window, but put it off-screen so you don't see it.
- // Put it at -10000, -10000 in "flipped coordinates", since WebCore and the DOM use flipped coordinates.
- NSRect windowRect = NSOffsetRect(rect, -10000, [[[NSScreen screens] objectAtIndex:0] frame].size.height - rect.size.height + 10000);
- DumpRenderTreeWindow *window = [[DumpRenderTreeWindow alloc] initWithContentRect:windowRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES];
- [[window contentView] addSubview:webView];
- [window orderBack:nil];
- [window setAutodisplay:NO];
-
- // For reasons that are not entirely clear, the following pair of calls makes WebView handle its
- // dynamic scrollbars properly. Without it, every frame will always have scrollbars.
- NSBitmapImageRep *imageRep = [webView bitmapImageRepForCachingDisplayInRect:[webView bounds]];
- [webView cacheDisplayInRect:[webView bounds] toBitmapImageRep:imageRep];
-
- return webView;
-}
-
-void testStringByEvaluatingJavaScriptFromString()
-{
- // maps expected result <= JavaScript expression
- NSDictionary *expressions = [NSDictionary dictionaryWithObjectsAndKeys:
- @"0", @"0",
- @"0", @"'0'",
- @"", @"",
- @"", @"''",
- @"", @"new String()",
- @"", @"new String('0')",
- @"", @"throw 1",
- @"", @"{ }",
- @"", @"[ ]",
- @"", @"//",
- @"", @"a.b.c",
- @"", @"(function() { throw 'error'; })()",
- @"", @"null",
- @"", @"undefined",
- @"true", @"true",
- @"false", @"false",
- nil
- ];
-
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- WebView *webView = [[WebView alloc] initWithFrame:NSZeroRect frameName:@"" groupName:@""];
-
- NSEnumerator *enumerator = [expressions keyEnumerator];
- id expression;
- while ((expression = [enumerator nextObject])) {
- NSString *expectedResult = [expressions objectForKey:expression];
- NSString *result = [webView stringByEvaluatingJavaScriptFromString:expression];
- assert([result isEqualToString:expectedResult]);
- }
-
- [webView close];
- [webView release];
- [pool release];
-}
-
-static void setDefaultsToConsistentValuesForTesting()
-{
- // Give some clear to undocumented defaults values
- static const int NoFontSmoothing = 0;
- static const int BlueTintedAppearance = 1;
-
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
- [defaults setInteger:4 forKey:@"AppleAntiAliasingThreshold"]; // smallest font size to CG should perform antialiasing on
- [defaults setInteger:NoFontSmoothing forKey:@"AppleFontSmoothing"];
- [defaults setInteger:BlueTintedAppearance forKey:@"AppleAquaColorVariant"];
- [defaults setObject:@"0.709800 0.835300 1.000000" forKey:@"AppleHighlightColor"];
- [defaults setObject:@"0.500000 0.500000 0.500000" forKey:@"AppleOtherHighlightColor"];
- [defaults setObject:[NSArray arrayWithObject:@"en"] forKey:@"AppleLanguages"];
-
- // Scrollbars are drawn either using AppKit (which uses NSUserDefaults) or using HIToolbox (which uses CFPreferences / kCFPreferencesAnyApplication / kCFPreferencesCurrentUser / kCFPreferencesAnyHost)
- [defaults setObject:@"DoubleMax" forKey:@"AppleScrollBarVariant"];
- RetainPtr<CFTypeRef> initialValue = CFPreferencesCopyValue(CFSTR("AppleScrollBarVariant"), kCFPreferencesAnyApplication, kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
- CFPreferencesSetValue(CFSTR("AppleScrollBarVariant"), CFSTR("DoubleMax"), kCFPreferencesAnyApplication, kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
- ThemeScrollBarArrowStyle style;
- GetThemeScrollBarArrowStyle(&style); // Force HIToolbox to read from CFPreferences
- if (initialValue)
- CFPreferencesSetValue(CFSTR("AppleScrollBarVariant"), initialValue.get(), kCFPreferencesAnyApplication, kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
-
- NSString *libraryPath = [@"~/Library/Application Support/DumpRenderTree" stringByExpandingTildeInPath];
- [defaults setObject:[libraryPath stringByAppendingPathComponent:@"Databases"] forKey:WebDatabaseDirectoryDefaultsKey];
-
- WebPreferences *preferences = [WebPreferences standardPreferences];
-
- [preferences setStandardFontFamily:@"Times"];
- [preferences setFixedFontFamily:@"Courier"];
- [preferences setSerifFontFamily:@"Times"];
- [preferences setSansSerifFontFamily:@"Helvetica"];
- [preferences setCursiveFontFamily:@"Apple Chancery"];
- [preferences setFantasyFontFamily:@"Papyrus"];
- [preferences setDefaultFontSize:16];
- [preferences setDefaultFixedFontSize:13];
- [preferences setMinimumFontSize:1];
- [preferences setJavaEnabled:NO];
- [preferences setEditableLinkBehavior:WebKitEditableLinkOnlyLiveWithShiftKey];
- [preferences setTabsToLinks:NO];
- [preferences setDOMPasteAllowed:YES];
- [preferences setFullDocumentTeardownEnabled:YES];
- [preferences setShouldPrintBackgrounds:YES];
-
- // The back/forward cache is causing problems due to layouts during transition from one page to another.
- // So, turn it off for now, but we might want to turn it back on some day.
- [preferences setUsesPageCache:NO];
-}
-
-static void crashHandler(int sig)
-{
- char *signalName = strsignal(sig);
- write(STDERR_FILENO, signalName, strlen(signalName));
- write(STDERR_FILENO, "\n", 1);
- restoreMainDisplayColorProfile(0);
- exit(128 + sig);
-}
-
-static void installSignalHandlers()
-{
- signal(SIGILL, crashHandler); /* 4: illegal instruction (not reset when caught) */
- signal(SIGTRAP, crashHandler); /* 5: trace trap (not reset when caught) */
- signal(SIGEMT, crashHandler); /* 7: EMT instruction */
- signal(SIGFPE, crashHandler); /* 8: floating point exception */
- signal(SIGBUS, crashHandler); /* 10: bus error */
- signal(SIGSEGV, crashHandler); /* 11: segmentation violation */
- signal(SIGSYS, crashHandler); /* 12: bad argument to system call */
- signal(SIGPIPE, crashHandler); /* 13: write on a pipe with no reader */
- signal(SIGXCPU, crashHandler); /* 24: exceeded CPU time limit */
- signal(SIGXFSZ, crashHandler); /* 25: exceeded file size limit */
-}
-
-static void allocateGlobalControllers()
-{
- // FIXME: We should remove these and move to the ObjC standard [Foo sharedInstance] model
- gNavigationController = [[NavigationController alloc] init];
- frameLoadDelegate = [[FrameLoadDelegate alloc] init];
- uiDelegate = [[UIDelegate alloc] init];
- editingDelegate = [[EditingDelegate alloc] init];
- resourceLoadDelegate = [[ResourceLoadDelegate alloc] init];
- policyDelegate = [[PolicyDelegate alloc] init];
-}
-
-// ObjC++ doens't seem to let me pass NSObject*& sadly.
-static inline void releaseAndZero(NSObject** object)
-{
- [*object release];
- *object = nil;
-}
-
-static void releaseGlobalControllers()
-{
- releaseAndZero(&gNavigationController);
- releaseAndZero(&frameLoadDelegate);
- releaseAndZero(&editingDelegate);
- releaseAndZero(&resourceLoadDelegate);
- releaseAndZero(&uiDelegate);
- releaseAndZero(&policyDelegate);
-}
-
-static void initializeGlobalsFromCommandLineOptions(int argc, const char *argv[])
-{
- struct option options[] = {
- {"notree", no_argument, &dumpTree, NO},
- {"pixel-tests", no_argument, &dumpPixels, YES},
- {"tree", no_argument, &dumpTree, YES},
- {"threaded", no_argument, &threaded, YES},
- {"complex-text", no_argument, &forceComplexText, YES},
- {NULL, 0, NULL, 0}
- };
-
- int option;
- while ((option = getopt_long(argc, (char * const *)argv, "", options, NULL)) != -1) {
- switch (option) {
- case '?': // unknown or ambiguous option
- case ':': // missing argument
- exit(1);
- break;
- }
- }
-}
-
-static void addTestPluginsToPluginSearchPath(const char* executablePath)
-{
- NSString *pwd = [[NSString stringWithUTF8String:executablePath] stringByDeletingLastPathComponent];
- [WebPluginDatabase setAdditionalWebPlugInPaths:[NSArray arrayWithObject:pwd]];
- [[WebPluginDatabase sharedDatabase] refresh];
-}
-
-static bool useLongRunningServerMode(int argc, const char *argv[])
-{
- // This assumes you've already called getopt_long
- return (argc == optind+1 && strcmp(argv[optind], "-") == 0);
-}
-
-static void runTestingServerLoop()
-{
- // When DumpRenderTree run in server mode, we just wait around for file names
- // to be passed to us and read each in turn, passing the results back to the client
- char filenameBuffer[2048];
- while (fgets(filenameBuffer, sizeof(filenameBuffer), stdin)) {
- char *newLineCharacter = strchr(filenameBuffer, '\n');
- if (newLineCharacter)
- *newLineCharacter = '\0';
-
- if (strlen(filenameBuffer) == 0)
- continue;
-
- runTest(filenameBuffer);
- }
-}
-
-static void prepareConsistentTestingEnvironment()
-{
- poseAsClass("DumpRenderTreePasteboard", "NSPasteboard");
- poseAsClass("DumpRenderTreeEvent", "NSEvent");
-
- setDefaultsToConsistentValuesForTesting();
- activateFonts();
-
- if (dumpPixels)
- setupMainDisplayColorProfile();
- allocateGlobalControllers();
-
- makeLargeMallocFailSilently();
-}
-
-void dumpRenderTree(int argc, const char *argv[])
-{
- initializeGlobalsFromCommandLineOptions(argc, argv);
- prepareConsistentTestingEnvironment();
- addTestPluginsToPluginSearchPath(argv[0]);
- if (dumpPixels)
- installSignalHandlers();
-
- if (forceComplexText)
- [WebView _setAlwaysUsesComplexTextCodePath:YES];
-
- WebView *webView = createWebViewAndOffscreenWindow();
- mainFrame = [webView mainFrame];
-
- [[NSURLCache sharedURLCache] removeAllCachedResponses];
-
- [WebCache empty];
-
- // <rdar://problem/5222911>
- testStringByEvaluatingJavaScriptFromString();
-
- if (threaded)
- startJavaScriptThreads();
-
- if (useLongRunningServerMode(argc, argv)) {
- printSeparators = YES;
- runTestingServerLoop();
- } else {
- printSeparators = (optind < argc-1 || (dumpPixels && dumpTree));
- for (int i = optind; i != argc; ++i)
- runTest(argv[i]);
- }
-
- if (threaded)
- stopJavaScriptThreads();
-
- [webView close];
- mainFrame = nil;
-
- // Work around problem where registering drag types leaves an outstanding
- // "perform selector" on the window, which retains the window. It's a bit
- // inelegant and perhaps dangerous to just blow them all away, but in practice
- // it probably won't cause any trouble (and this is just a test tool, after all).
- NSWindow *window = [webView window];
- [NSObject cancelPreviousPerformRequestsWithTarget:window];
-
- [window close]; // releases when closed
- [webView release];
-
- releaseGlobalControllers();
-
- [DumpRenderTreePasteboard releaseLocalPasteboards];
-
- // FIXME: This should be moved onto LayoutTestController and made into a HashSet
- if (disallowedURLs) {
- CFRelease(disallowedURLs);
- disallowedURLs = 0;
- }
-
- if (dumpPixels)
- restoreMainDisplayColorProfile(0);
-}
-
-int main(int argc, const char *argv[])
-{
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- [NSApplication sharedApplication]; // Force AppKit to init itself
- dumpRenderTree(argc, argv);
- [WebCoreStatistics garbageCollectJavaScriptObjects];
- [WebCoreStatistics emptyCache]; // Otherwise SVGImages trigger false positives for Frame/Node counts
- [pool release];
- return 0;
-}
-
-static NSInteger compareHistoryItems(id item1, id item2, void *context)
-{
- return [[item1 target] caseInsensitiveCompare:[item2 target]];
-}
-
-static void dumpHistoryItem(WebHistoryItem *item, int indent, BOOL current)
-{
- int start = 0;
- if (current) {
- printf("curr->");
- start = 6;
- }
- for (int i = start; i < indent; i++)
- putchar(' ');
- printf("%s", [[item URLString] UTF8String]);
- NSString *target = [item target];
- if (target && [target length] > 0)
- printf(" (in frame \"%s\")", [target UTF8String]);
- if ([item isTargetItem])
- printf(" **nav target**");
- putchar('\n');
- NSArray *kids = [item children];
- if (kids) {
- // must sort to eliminate arbitrary result ordering which defeats reproducible testing
- kids = [kids sortedArrayUsingFunction:&compareHistoryItems context:nil];
- for (unsigned i = 0; i < [kids count]; i++)
- dumpHistoryItem([kids objectAtIndex:i], indent+4, NO);
- }
-}
-
-static void dumpFrameScrollPosition(WebFrame *f)
-{
- NSPoint scrollPosition = [[[[f frameView] documentView] superview] bounds].origin;
- if (ABS(scrollPosition.x) > 0.00000001 || ABS(scrollPosition.y) > 0.00000001) {
- if ([f parentFrame] != nil)
- printf("frame '%s' ", [[f name] UTF8String]);
- printf("scrolled to %.f,%.f\n", scrollPosition.x, scrollPosition.y);
- }
-
- if (gLayoutTestController->dumpChildFrameScrollPositions()) {
- NSArray *kids = [f childFrames];
- if (kids)
- for (unsigned i = 0; i < [kids count]; i++)
- dumpFrameScrollPosition([kids objectAtIndex:i]);
- }
-}
-
-static NSString *dumpFramesAsText(WebFrame *frame)
-{
- DOMDocument *document = [frame DOMDocument];
- DOMElement *documentElement = [document documentElement];
-
- if (!documentElement)
- return @"";
-
- NSMutableString *result = [[[NSMutableString alloc] init] autorelease];
-
- // Add header for all but the main frame.
- if ([frame parentFrame])
- result = [NSMutableString stringWithFormat:@"\n--------\nFrame: '%@'\n--------\n", [frame name]];
-
- [result appendFormat:@"%@\n", [documentElement innerText]];
-
- if (gLayoutTestController->dumpChildFramesAsText()) {
- NSArray *kids = [frame childFrames];
- if (kids) {
- for (unsigned i = 0; i < [kids count]; i++)
- [result appendString:dumpFramesAsText([kids objectAtIndex:i])];
- }
- }
-
- return result;
-}
-
-static NSData *dumpFrameAsPDF(WebFrame *frame)
-{
- if (!frame)
- return nil;
-
- // Sadly we have to dump to a file and then read from that file again
- // +[NSPrintOperation PDFOperationWithView:insideRect:] requires a rect and prints to a single page
- // likewise +[NSView dataWithPDFInsideRect:] also prints to a single continuous page
- // The goal of this function is to test "real" printing across multiple pages.
- // FIXME: It's possible there might be printing SPI to let us print a multi-page PDF to an NSData object
- NSString *path = @"/tmp/test.pdf";
-
- NSMutableDictionary *printInfoDict = [NSMutableDictionary dictionaryWithDictionary:[[NSPrintInfo sharedPrintInfo] dictionary]];
- [printInfoDict setObject:NSPrintSaveJob forKey:NSPrintJobDisposition];
- [printInfoDict setObject:path forKey:NSPrintSavePath];
-
- NSPrintInfo *printInfo = [[NSPrintInfo alloc] initWithDictionary:printInfoDict];
- [printInfo setHorizontalPagination:NSAutoPagination];
- [printInfo setVerticalPagination:NSAutoPagination];
- [printInfo setVerticallyCentered:NO];
-
- NSPrintOperation *printOperation = [NSPrintOperation printOperationWithView:[frame frameView] printInfo:printInfo];
- [printOperation setShowPanels:NO];
- [printOperation runOperation];
-
- [printInfo release];
-
- NSData *pdfData = [NSData dataWithContentsOfFile:path];
- [[NSFileManager defaultManager] removeFileAtPath:path handler:nil];
-
- return pdfData;
-}
-
-static void convertMIMEType(NSMutableString *mimeType)
-{
-#ifdef BUILDING_ON_LEOPARD
- // Workaround for <rdar://problem/5539824> on Leopard
- if ([mimeType isEqualToString:@"text/xml"])
- [mimeType setString:@"application/xml"];
-#endif
- // Workaround for <rdar://problem/6234318> with Dashcode 2.0
- if ([mimeType isEqualToString:@"application/x-javascript"])
- [mimeType setString:@"text/javascript"];
-}
-
-static void convertWebResourceDataToString(NSMutableDictionary *resource)
-{
- NSMutableString *mimeType = [resource objectForKey:@"WebResourceMIMEType"];
- convertMIMEType(mimeType);
-
- if ([mimeType hasPrefix:@"text/"] || [[WebHTMLRepresentation supportedNonImageMIMETypes] containsObject:mimeType]) {
- NSData *data = [resource objectForKey:@"WebResourceData"];
- NSString *dataAsString = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];
- [resource setObject:dataAsString forKey:@"WebResourceData"];
- }
-}
-
-static void normalizeWebResourceURL(NSMutableString *webResourceURL)
-{
- static int fileUrlLength = [(NSString *)@"file://" length];
- NSRange layoutTestsWebArchivePathRange = [webResourceURL rangeOfString:@"/LayoutTests/" options:NSBackwardsSearch];
- if (layoutTestsWebArchivePathRange.location == NSNotFound)
- return;
- NSRange currentWorkingDirectoryRange = NSMakeRange(fileUrlLength, layoutTestsWebArchivePathRange.location - fileUrlLength);
- [webResourceURL replaceCharactersInRange:currentWorkingDirectoryRange withString:@""];
-}
-
-static void convertWebResourceResponseToDictionary(NSMutableDictionary *propertyList)
-{
- NSURLResponse *response = nil;
- NSData *responseData = [propertyList objectForKey:@"WebResourceResponse"]; // WebResourceResponseKey in WebResource.m
- if ([responseData isKindOfClass:[NSData class]]) {
- // Decode NSURLResponse
- NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:responseData];
- response = [unarchiver decodeObjectForKey:@"WebResourceResponse"]; // WebResourceResponseKey in WebResource.m
- [unarchiver finishDecoding];
- [unarchiver release];
- }
-
- NSMutableDictionary *responseDictionary = [[NSMutableDictionary alloc] init];
-
- NSMutableString *urlString = [[[response URL] description] mutableCopy];
- normalizeWebResourceURL(urlString);
- [responseDictionary setObject:urlString forKey:@"URL"];
- [urlString release];
-
- NSMutableString *mimeTypeString = [[response MIMEType] mutableCopy];
- convertMIMEType(mimeTypeString);
- [responseDictionary setObject:mimeTypeString forKey:@"MIMEType"];
- [mimeTypeString release];
-
- NSString *textEncodingName = [response textEncodingName];
- if (textEncodingName)
- [responseDictionary setObject:textEncodingName forKey:@"textEncodingName"];
- [responseDictionary setObject:[NSNumber numberWithLongLong:[response expectedContentLength]] forKey:@"expectedContentLength"];
-
- if ([response isKindOfClass:[NSHTTPURLResponse class]]) {
- NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
-
- [responseDictionary setObject:[httpResponse allHeaderFields] forKey:@"allHeaderFields"];
- [responseDictionary setObject:[NSNumber numberWithInt:[httpResponse statusCode]] forKey:@"statusCode"];
- }
-
- [propertyList setObject:responseDictionary forKey:@"WebResourceResponse"];
- [responseDictionary release];
-}
-
-static NSInteger compareResourceURLs(id resource1, id resource2, void *context)
-{
- NSString *url1 = [resource1 objectForKey:@"WebResourceURL"];
- NSString *url2 = [resource2 objectForKey:@"WebResourceURL"];
-
- return [url1 compare:url2];
-}
-
-static NSString *serializeWebArchiveToXML(WebArchive *webArchive)
-{
- NSString *errorString;
- NSMutableDictionary *propertyList = [NSPropertyListSerialization propertyListFromData:[webArchive data]
- mutabilityOption:NSPropertyListMutableContainersAndLeaves
- format:NULL
- errorDescription:&errorString];
- if (!propertyList)
- return errorString;
-
- NSMutableArray *resources = [NSMutableArray arrayWithCapacity:1];
- [resources addObject:propertyList];
-
- while ([resources count]) {
- NSMutableDictionary *resourcePropertyList = [resources objectAtIndex:0];
- [resources removeObjectAtIndex:0];
-
- NSMutableDictionary *mainResource = [resourcePropertyList objectForKey:@"WebMainResource"];
- normalizeWebResourceURL([mainResource objectForKey:@"WebResourceURL"]);
- convertWebResourceDataToString(mainResource);
-
- // Add subframeArchives to list for processing
- NSMutableArray *subframeArchives = [resourcePropertyList objectForKey:@"WebSubframeArchives"]; // WebSubframeArchivesKey in WebArchive.m
- if (subframeArchives)
- [resources addObjectsFromArray:subframeArchives];
-
- NSMutableArray *subresources = [resourcePropertyList objectForKey:@"WebSubresources"]; // WebSubresourcesKey in WebArchive.m
- NSEnumerator *enumerator = [subresources objectEnumerator];
- NSMutableDictionary *subresourcePropertyList;
- while ((subresourcePropertyList = [enumerator nextObject])) {
- normalizeWebResourceURL([subresourcePropertyList objectForKey:@"WebResourceURL"]);
- convertWebResourceResponseToDictionary(subresourcePropertyList);
- convertWebResourceDataToString(subresourcePropertyList);
- }
-
- // Sort the subresources so they're always in a predictable order for the dump
- if (NSArray *sortedSubresources = [subresources sortedArrayUsingFunction:compareResourceURLs context:nil])
- [resourcePropertyList setObject:sortedSubresources forKey:@"WebSubresources"];
- }
-
- NSData *xmlData = [NSPropertyListSerialization dataFromPropertyList:propertyList
- format:NSPropertyListXMLFormat_v1_0
- errorDescription:&errorString];
- if (!xmlData)
- return errorString;
-
- NSMutableString *string = [[[NSMutableString alloc] initWithData:xmlData encoding:NSUTF8StringEncoding] autorelease];
-
- // Replace "Apple Computer" with "Apple" in the DTD declaration.
- NSRange range = [string rangeOfString:@"-//Apple Computer//"];
- if (range.location != NSNotFound)
- [string replaceCharactersInRange:range withString:@"-//Apple//"];
-
- return string;
-}
-
-static void dumpBackForwardListForWebView(WebView *view)
-{
- printf("\n============== Back Forward List ==============\n");
- WebBackForwardList *bfList = [view backForwardList];
-
- // Print out all items in the list after prevTestBFItem, which was from the previous test
- // Gather items from the end of the list, the print them out from oldest to newest
- NSMutableArray *itemsToPrint = [[NSMutableArray alloc] init];
- for (int i = [bfList forwardListCount]; i > 0; i--) {
- WebHistoryItem *item = [bfList itemAtIndex:i];
- // something is wrong if the item from the last test is in the forward part of the b/f list
- assert(item != prevTestBFItem);
- [itemsToPrint addObject:item];
- }
-
- assert([bfList currentItem] != prevTestBFItem);
- [itemsToPrint addObject:[bfList currentItem]];
- int currentItemIndex = [itemsToPrint count] - 1;
-
- for (int i = -1; i >= -[bfList backListCount]; i--) {
- WebHistoryItem *item = [bfList itemAtIndex:i];
- if (item == prevTestBFItem)
- break;
- [itemsToPrint addObject:item];
- }
-
- for (int i = [itemsToPrint count]-1; i >= 0; i--)
- dumpHistoryItem([itemsToPrint objectAtIndex:i], 8, i == currentItemIndex);
-
- [itemsToPrint release];
- printf("===============================================\n");
-}
-
-static void sizeWebViewForCurrentTest()
-{
- // W3C SVG tests expect to be 480x360
- bool isSVGW3CTest = (gLayoutTestController->testPathOrURL().find("svg/W3C-SVG-1.1") != string::npos);
- if (isSVGW3CTest)
- [[mainFrame webView] setFrameSize:NSMakeSize(480, 360)];
- else
- [[mainFrame webView] setFrameSize:NSMakeSize(maxViewWidth, maxViewHeight)];
-}
-
-static const char *methodNameStringForFailedTest()
-{
- const char *errorMessage;
- if (gLayoutTestController->dumpAsText())
- errorMessage = "[documentElement innerText]";
- else if (gLayoutTestController->dumpDOMAsWebArchive())
- errorMessage = "[[mainFrame DOMDocument] webArchive]";
- else if (gLayoutTestController->dumpSourceAsWebArchive())
- errorMessage = "[[mainFrame dataSource] webArchive]";
- else
- errorMessage = "[mainFrame renderTreeAsExternalRepresentation]";
-
- return errorMessage;
-}
-
-static void dumpBackForwardListForAllWindows()
-{
- CFArrayRef openWindows = (CFArrayRef)[DumpRenderTreeWindow openWindows];
- unsigned count = CFArrayGetCount(openWindows);
- for (unsigned i = 0; i < count; i++) {
- NSWindow *window = (NSWindow *)CFArrayGetValueAtIndex(openWindows, i);
- WebView *webView = [[[window contentView] subviews] objectAtIndex:0];
- dumpBackForwardListForWebView(webView);
- }
-}
-
-static void invalidateAnyPreviousWaitToDumpWatchdog()
-{
- if (waitToDumpWatchdog) {
- CFRunLoopTimerInvalidate(waitToDumpWatchdog);
- CFRelease(waitToDumpWatchdog);
- waitToDumpWatchdog = 0;
- }
-}
-
-void dump()
-{
- invalidateAnyPreviousWaitToDumpWatchdog();
-
- bool dumpAsText = gLayoutTestController->dumpAsText();
- if (dumpTree) {
- NSString *resultString = nil;
- NSData *resultData = nil;
- NSString *resultMimeType = @"text/plain";
-
- dumpAsText |= [[[mainFrame dataSource] _responseMIMEType] isEqualToString:@"text/plain"];
- gLayoutTestController->setDumpAsText(dumpAsText);
- if (gLayoutTestController->dumpAsText()) {
- resultString = dumpFramesAsText(mainFrame);
- } else if (gLayoutTestController->dumpAsPDF()) {
- resultData = dumpFrameAsPDF(mainFrame);
- resultMimeType = @"application/pdf";
- } else if (gLayoutTestController->dumpDOMAsWebArchive()) {
- WebArchive *webArchive = [[mainFrame DOMDocument] webArchive];
- resultString = serializeWebArchiveToXML(webArchive);
- resultMimeType = @"application/x-webarchive";
- } else if (gLayoutTestController->dumpSourceAsWebArchive()) {
- WebArchive *webArchive = [[mainFrame dataSource] webArchive];
- resultString = serializeWebArchiveToXML(webArchive);
- resultMimeType = @"application/x-webarchive";
- } else {
- sizeWebViewForCurrentTest();
- resultString = [mainFrame renderTreeAsExternalRepresentation];
- }
-
- if (resultString && !resultData)
- resultData = [resultString dataUsingEncoding:NSUTF8StringEncoding];
-
- printf("Content-Type: %s\n", [resultMimeType UTF8String]);
-
- if (resultData) {
- fwrite([resultData bytes], 1, [resultData length], stdout);
-
- if (!gLayoutTestController->dumpAsText() && !gLayoutTestController->dumpDOMAsWebArchive() && !gLayoutTestController->dumpSourceAsWebArchive())
- dumpFrameScrollPosition(mainFrame);
-
- if (gLayoutTestController->dumpBackForwardList())
- dumpBackForwardListForAllWindows();
- } else
- printf("ERROR: nil result from %s", methodNameStringForFailedTest());
-
- if (printSeparators) {
- puts("#EOF"); // terminate the content block
- fputs("#EOF\n", stderr);
- }
- }
-
- if (dumpPixels && !dumpAsText)
- dumpWebViewAsPixelsAndCompareWithExpected(gLayoutTestController->expectedPixelHash());
-
- puts("#EOF"); // terminate the (possibly empty) pixels block
-
- fflush(stdout);
- fflush(stderr);
-
- done = YES;
-}
-
-static bool shouldLogFrameLoadDelegates(const char *pathOrURL)
-{
- return strstr(pathOrURL, "loading/");
-}
-
-static void resetWebViewToConsistentStateBeforeTesting()
-{
- WebView *webView = [mainFrame webView];
- [(EditingDelegate *)[webView editingDelegate] setAcceptsEditing:YES];
- [webView makeTextStandardSize:nil];
- [webView resetPageZoom:nil];
- [webView setTabKeyCyclesThroughElements:YES];
- [webView setPolicyDelegate:nil];
- [webView _setDashboardBehavior:WebDashboardBehaviorUseBackwardCompatibilityMode to:NO];
- [webView _clearMainFrameName];
-
- WebPreferences *preferences = [webView preferences];
- [preferences setPrivateBrowsingEnabled:NO];
- [preferences setAuthorAndUserStylesEnabled:YES];
- [preferences setJavaScriptCanOpenWindowsAutomatically:YES];
- [preferences setOfflineWebApplicationCacheEnabled:YES];
- [preferences setFullDocumentTeardownEnabled:YES];
- [preferences setDeveloperExtrasEnabled:NO];
-
- if (persistentUserStyleSheetLocation) {
- [preferences setUserStyleSheetLocation:[NSURL URLWithString:(NSString *)(persistentUserStyleSheetLocation.get())]];
- [preferences setUserStyleSheetEnabled:YES];
- } else
- [preferences setUserStyleSheetEnabled:NO];
-
- [[mainFrame webView] setSmartInsertDeleteEnabled:YES];
- [[[mainFrame webView] inspector] setJavaScriptProfilingEnabled:NO];
-
- [WebView _setUsesTestModeFocusRingColor:YES];
-}
-
-static void runTest(const string& testPathOrURL)
-{
- ASSERT(!testPathOrURL.empty());
-
- // Look for "'" as a separator between the path or URL, and the pixel dump hash that follows.
- string pathOrURL(testPathOrURL);
- string expectedPixelHash;
-
- size_t separatorPos = pathOrURL.find("'");
- if (separatorPos != string::npos) {
- pathOrURL = string(testPathOrURL, 0, separatorPos);
- expectedPixelHash = string(testPathOrURL, separatorPos + 1);
- }
-
- NSString *pathOrURLString = [NSString stringWithUTF8String:pathOrURL.c_str()];
- if (!pathOrURLString) {
- fprintf(stderr, "Failed to parse \"%s\" as UTF-8\n", pathOrURL.c_str());
- return;
- }
-
- NSURL *url;
- if ([pathOrURLString hasPrefix:@"http://"] || [pathOrURLString hasPrefix:@"https://"])
- url = [NSURL URLWithString:pathOrURLString];
- else
- url = [NSURL fileURLWithPath:pathOrURLString];
- if (!url) {
- fprintf(stderr, "Failed to parse \"%s\" as a URL\n", pathOrURL.c_str());
- return;
- }
-
- const string testURL([[url absoluteString] UTF8String]);
-
- resetWebViewToConsistentStateBeforeTesting();
-
- gLayoutTestController = new LayoutTestController(testURL, expectedPixelHash);
- topLoadingFrame = nil;
- done = NO;
-
- if (disallowedURLs)
- CFSetRemoveAllValues(disallowedURLs);
- if (shouldLogFrameLoadDelegates(pathOrURL.c_str()))
- gLayoutTestController->setDumpFrameLoadCallbacks(true);
-
- if ([WebHistory optionalSharedHistory])
- [WebHistory setOptionalSharedHistory:nil];
- lastMousePosition = NSZeroPoint;
- lastClickPosition = NSZeroPoint;
-
- [prevTestBFItem release];
- prevTestBFItem = [[[[mainFrame webView] backForwardList] currentItem] retain];
-
- WorkQueue::shared()->clear();
- WorkQueue::shared()->setFrozen(false);
-
- bool ignoreWebCoreNodeLeaks = shouldIgnoreWebCoreNodeLeaks(testURL);
- if (ignoreWebCoreNodeLeaks)
- [WebCoreStatistics startIgnoringWebCoreNodeLeaks];
-
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- [mainFrame loadRequest:[NSURLRequest requestWithURL:url]];
- [pool release];
- while (!done) {
- pool = [[NSAutoreleasePool alloc] init];
- [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantPast]];
- [pool release];
- }
- pool = [[NSAutoreleasePool alloc] init];
- [EventSendingController clearSavedEvents];
- [[mainFrame webView] setSelectedDOMRange:nil affinity:NSSelectionAffinityDownstream];
-
- WorkQueue::shared()->clear();
-
- if (gLayoutTestController->closeRemainingWindowsWhenComplete()) {
- NSArray* array = [DumpRenderTreeWindow openWindows];
-
- unsigned count = [array count];
- for (unsigned i = 0; i < count; i++) {
- NSWindow *window = [array objectAtIndex:i];
-
- // Don't try to close the main window
- if (window == [[mainFrame webView] window])
- continue;
-
- WebView *webView = [[[window contentView] subviews] objectAtIndex:0];
-
- [webView close];
- [window close];
- }
- }
-
- [mainFrame loadHTMLString:@"<html></html>" baseURL:[NSURL URLWithString:@"about:blank"]];
- [mainFrame stopLoading];
-
- [pool release];
-
- // We should only have our main window left open when we're done
- ASSERT(CFArrayGetCount(openWindowsRef) == 1);
- ASSERT(CFArrayGetValueAtIndex(openWindowsRef, 0) == [[mainFrame webView] window]);
-
- gLayoutTestController->deref();
- gLayoutTestController = 0;
-
- if (ignoreWebCoreNodeLeaks)
- [WebCoreStatistics stopIgnoringWebCoreNodeLeaks];
-}
-
-void displayWebView()
-{
- NSView *webView = [mainFrame webView];
- [webView display];
- [webView lockFocus];
- [[[NSColor blackColor] colorWithAlphaComponent:0.66] set];
- NSRectFillUsingOperation([webView frame], NSCompositeSourceOver);
- [webView unlockFocus];
-}
-
-@implementation DumpRenderTreeEvent
-
-+ (NSPoint)mouseLocation
-{
- return [[[mainFrame webView] window] convertBaseToScreen:lastMousePosition];
-}
-
-@end
diff --git a/WebKitTools/DumpRenderTree/mac/DumpRenderTreeDraggingInfo.h b/WebKitTools/DumpRenderTree/mac/DumpRenderTreeDraggingInfo.h
deleted file mode 100644
index 249809c..0000000
--- a/WebKitTools/DumpRenderTree/mac/DumpRenderTreeDraggingInfo.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2005, 2006 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <Cocoa/Cocoa.h>
-
-@interface DumpRenderTreeDraggingInfo : NSObject <NSDraggingInfo> {
-@private
- NSSize offset;
- NSImage *draggedImage;
- NSPasteboard *draggingPasteboard;
- id draggingSource;
-}
-
-- (id)initWithImage:(NSImage *)image offset:(NSSize)offset pasteboard:(NSPasteboard *)pasteboard source:(id)source;
-
-- (NSWindow *)draggingDestinationWindow;
-- (NSDragOperation)draggingSourceOperationMask;
-- (NSPoint)draggingLocation;
-- (NSPoint)draggedImageLocation;
-- (NSImage *)draggedImage;
-- (NSPasteboard *)draggingPasteboard;
-- (id)draggingSource;
-- (int)draggingSequenceNumber;
-
-- (void)slideDraggedImageTo:(NSPoint)screenPoint;
-- (NSArray *)namesOfPromisedFilesDroppedAtDestination:(NSURL *)dropDestination;
-@end
-
diff --git a/WebKitTools/DumpRenderTree/mac/DumpRenderTreeDraggingInfo.mm b/WebKitTools/DumpRenderTree/mac/DumpRenderTreeDraggingInfo.mm
deleted file mode 100644
index 41aa639..0000000
--- a/WebKitTools/DumpRenderTree/mac/DumpRenderTreeDraggingInfo.mm
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (C) 2005, 2006 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "DumpRenderTreeDraggingInfo.h"
-
-#import "DumpRenderTree.h"
-#import "EventSendingController.h"
-#import <WebKit/WebKit.h>
-
-@implementation DumpRenderTreeDraggingInfo
-
-- (id)initWithImage:(NSImage *)anImage offset:(NSSize)o pasteboard:(NSPasteboard *)pboard source:(id)source
-{
- draggedImage = [anImage retain];
- draggingPasteboard = [pboard retain];
- draggingSource = [source retain];
- offset = o;
-
- return [super init];
-}
-
-- (void)dealloc
-{
- [draggedImage release];
- [draggingPasteboard release];
- [draggingSource release];
- [super dealloc];
-}
-
-- (NSWindow *)draggingDestinationWindow
-{
- return [[mainFrame webView] window];
-}
-
-- (NSDragOperation)draggingSourceOperationMask
-{
- return [draggingSource draggingSourceOperationMaskForLocal:YES];
-}
-
-- (NSPoint)draggingLocation
-{
- return lastMousePosition;
-}
-
-- (NSPoint)draggedImageLocation
-{
- return NSMakePoint(lastMousePosition.x + offset.width, lastMousePosition.y + offset.height);
-}
-
-- (NSImage *)draggedImage
-{
- return draggedImage;
-}
-
-- (NSPasteboard *)draggingPasteboard
-{
- return draggingPasteboard;
-}
-
-- (id)draggingSource
-{
- return draggingSource;
-}
-
-- (int)draggingSequenceNumber
-{
- NSLog(@"DumpRenderTree doesn't support draggingSequenceNumber");
- return 0;
-}
-
-- (void)slideDraggedImageTo:(NSPoint)screenPoint
-{
- NSLog(@"DumpRenderTree doesn't support slideDraggedImageTo:");
-}
-
-- (NSArray *)namesOfPromisedFilesDroppedAtDestination:(NSURL *)dropDestination
-{
- NSLog(@"DumpRenderTree doesn't support namesOfPromisedFilesDroppedAtDestination:");
- return nil;
-}
-
-@end
-
diff --git a/WebKitTools/DumpRenderTree/mac/DumpRenderTreeMac.h b/WebKitTools/DumpRenderTree/mac/DumpRenderTreeMac.h
deleted file mode 100644
index 03d354d..0000000
--- a/WebKitTools/DumpRenderTree/mac/DumpRenderTreeMac.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef DumpRenderTreeMac_h
-#define DumpRenderTreeMac_h
-
-// FIXME: we should add a config.h file for DumpRenderTree.
-#define WTF_PLATFORM_CF 1
-
-#if MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4
-#define BUILDING_ON_TIGER 1
-#elif MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_5
-#define BUILDING_ON_LEOPARD 1
-#endif
-
-@class DumpRenderTreeDraggingInfo;
-@class NavigationController;
-@class PolicyDelegate;
-@class WebFrame;
-@class WebView;
-
-typedef const struct __CFString* CFStringRef;
-
-extern CFMutableArrayRef openWindowsRef;
-extern CFMutableSetRef disallowedURLs;
-extern WebFrame* mainFrame;
-extern WebFrame* topLoadingFrame;
-extern DumpRenderTreeDraggingInfo *draggingInfo;
-extern NavigationController* gNavigationController;
-extern PolicyDelegate* policyDelegate;
-
-extern const unsigned maxViewHeight;
-extern const unsigned maxViewWidth;
-
-WebView* createWebViewAndOffscreenWindow();
-void setPersistentUserStyleSheetLocation(CFStringRef);
-
-#endif // DumpRenderTreeMac_h
diff --git a/WebKitTools/DumpRenderTree/mac/DumpRenderTreePasteboard.h b/WebKitTools/DumpRenderTree/mac/DumpRenderTreePasteboard.h
deleted file mode 100644
index ba2754b..0000000
--- a/WebKitTools/DumpRenderTree/mac/DumpRenderTreePasteboard.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2005, 2006, 2007 Apple, Inc. All rights reserved.
- * (C) 2007 Graham Dennis (graham.dennis@gmail.com)
- * (C) 2007 Eric Seidel <eric@webkit.org>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <AppKit/AppKit.h>
-#import <WebKit/WebTypesInternal.h>
-
-@interface DumpRenderTreePasteboard : NSPasteboard
-- (NSInteger)declareType:(NSString *)type owner:(id)newOwner;
-+ (void)releaseLocalPasteboards;
-@end
-
diff --git a/WebKitTools/DumpRenderTree/mac/DumpRenderTreePasteboard.m b/WebKitTools/DumpRenderTree/mac/DumpRenderTreePasteboard.m
deleted file mode 100644
index a797b5c..0000000
--- a/WebKitTools/DumpRenderTree/mac/DumpRenderTreePasteboard.m
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- * Copyright (C) 2005, 2006, 2007 Apple, Inc. All rights reserved.
- * (C) 2007 Graham Dennis (graham.dennis@gmail.com)
- * (C) 2007 Eric Seidel <eric@webkit.org>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "DumpRenderTreeMac.h"
-#import "DumpRenderTreePasteboard.h"
-
-#import <WebKit/WebTypesInternal.h>
-
-@interface LocalPasteboard : NSPasteboard
-{
- NSMutableArray *typesArray;
- NSMutableSet *typesSet;
- NSMutableDictionary *dataByType;
- NSInteger changeCount;
-}
-@end
-
-static NSMutableDictionary *localPasteboards;
-
-@implementation DumpRenderTreePasteboard
-
-// Return a local pasteboard so we don't disturb the real pasteboards when running tests.
-+ (NSPasteboard *)_pasteboardWithName:(NSString *)name
-{
- static int number = 0;
- if (!name)
- name = [NSString stringWithFormat:@"LocalPasteboard%d", ++number];
- if (!localPasteboards)
- localPasteboards = [[NSMutableDictionary alloc] init];
- LocalPasteboard *pasteboard = [localPasteboards objectForKey:name];
- if (pasteboard)
- return pasteboard;
- pasteboard = [[LocalPasteboard alloc] init];
- [localPasteboards setObject:pasteboard forKey:name];
- [pasteboard release];
- return pasteboard;
-}
-
-+ (void)releaseLocalPasteboards
-{
- [localPasteboards release];
- localPasteboards = nil;
-}
-
-// Convenience method for JS so that it doesn't have to try and create a NSArray on the objc side instead
-// of the usual WebScriptObject that is passed around
-- (NSInteger)declareType:(NSString *)type owner:(id)newOwner
-{
- return [self declareTypes:[NSArray arrayWithObject:type] owner:newOwner];
-}
-
-@end
-
-@implementation LocalPasteboard
-
-+ (id)alloc
-{
- return NSAllocateObject(self, 0, 0);
-}
-
-- (id)init
-{
- typesArray = [[NSMutableArray alloc] init];
- typesSet = [[NSMutableSet alloc] init];
- dataByType = [[NSMutableDictionary alloc] init];
- return self;
-}
-
-- (void)dealloc
-{
- [typesArray release];
- [typesSet release];
- [dataByType release];
- [super dealloc];
-}
-
-- (NSString *)name
-{
- return nil;
-}
-
-- (void)releaseGlobally
-{
-}
-
-- (NSInteger)declareTypes:(NSArray *)newTypes owner:(id)newOwner
-{
- [typesArray removeAllObjects];
- [typesSet removeAllObjects];
- [dataByType removeAllObjects];
- return [self addTypes:newTypes owner:newOwner];
-}
-
-- (NSInteger)addTypes:(NSArray *)newTypes owner:(id)newOwner
-{
- unsigned count = [newTypes count];
- unsigned i;
- for (i = 0; i < count; ++i) {
- NSString *type = [newTypes objectAtIndex:i];
- NSString *setType = [typesSet member:type];
- if (!setType) {
- setType = [type copy];
- [typesArray addObject:setType];
- [typesSet addObject:setType];
- [setType release];
- }
- if (newOwner && [newOwner respondsToSelector:@selector(pasteboard:provideDataForType:)])
- [newOwner pasteboard:self provideDataForType:setType];
- }
- return ++changeCount;
-}
-
-- (NSInteger)changeCount
-{
- return changeCount;
-}
-
-- (NSArray *)types
-{
- return typesArray;
-}
-
-- (NSString *)availableTypeFromArray:(NSArray *)types
-{
- unsigned count = [types count];
- unsigned i;
- for (i = 0; i < count; ++i) {
- NSString *type = [types objectAtIndex:i];
- NSString *setType = [typesSet member:type];
- if (setType)
- return setType;
- }
- return nil;
-}
-
-- (BOOL)setData:(NSData *)data forType:(NSString *)dataType
-{
- if (data == nil)
- data = [NSData data];
- if (![typesSet containsObject:dataType])
- return NO;
- [dataByType setObject:data forKey:dataType];
- ++changeCount;
- return YES;
-}
-
-- (NSData *)dataForType:(NSString *)dataType
-{
- return [dataByType objectForKey:dataType];
-}
-
-- (BOOL)setPropertyList:(id)propertyList forType:(NSString *)dataType;
-{
- CFDataRef data = NULL;
- if (propertyList)
- data = CFPropertyListCreateXMLData(NULL, propertyList);
- BOOL result = [self setData:(NSData *)data forType:dataType];
- if (data)
- CFRelease(data);
- return result;
-}
-
-- (BOOL)setString:(NSString *)string forType:(NSString *)dataType
-{
- CFDataRef data = NULL;
- if (string) {
- if ([string length] == 0)
- data = CFDataCreate(NULL, NULL, 0);
- else
- data = CFStringCreateExternalRepresentation(NULL, (CFStringRef)string, kCFStringEncodingUTF8, 0);
- }
- BOOL result = [self setData:(NSData *)data forType:dataType];
- if (data)
- CFRelease(data);
- return result;
-}
-
-@end
diff --git a/WebKitTools/DumpRenderTree/mac/DumpRenderTreeWindow.h b/WebKitTools/DumpRenderTree/mac/DumpRenderTreeWindow.h
deleted file mode 100644
index 3ac3223..0000000
--- a/WebKitTools/DumpRenderTree/mac/DumpRenderTreeWindow.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2005, 2006, 2007 Apple, Inc. All rights reserved.
- * (C) 2007 Graham Dennis (graham.dennis@gmail.com)
- * (C) 2007 Eric Seidel <eric@webkit.org>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <AppKit/AppKit.h>
-
-@interface DumpRenderTreeWindow : NSWindow
-// I'm not sure why we can't just use [NSApp windows]
-+ (NSArray *)openWindows;
-@end
diff --git a/WebKitTools/DumpRenderTree/mac/DumpRenderTreeWindow.mm b/WebKitTools/DumpRenderTree/mac/DumpRenderTreeWindow.mm
deleted file mode 100644
index b3fc5a7..0000000
--- a/WebKitTools/DumpRenderTree/mac/DumpRenderTreeWindow.mm
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (C) 2005, 2006, 2007 Apple, Inc. All rights reserved.
- * (C) 2007 Graham Dennis (graham.dennis@gmail.com)
- * (C) 2007 Eric Seidel <eric@webkit.org>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "DumpRenderTreeWindow.h"
-
-#import "DumpRenderTree.h"
-
-// FIXME: This file is ObjC++ only because of this include. :(
-#import "LayoutTestController.h"
-#import <WebKit/WebTypesInternal.h>
-
-CFMutableArrayRef openWindowsRef = 0;
-
-static CFArrayCallBacks NonRetainingArrayCallbacks = {
- 0,
- NULL,
- NULL,
- CFCopyDescription,
- CFEqual
-};
-
-@implementation DumpRenderTreeWindow
-
-+ (NSArray *)openWindows
-{
- return [[(NSArray *)openWindowsRef copy] autorelease];
-}
-
-- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)styleMask backing:(NSBackingStoreType)bufferingType defer:(BOOL)deferCreation
-{
- if (!openWindowsRef)
- openWindowsRef = CFArrayCreateMutable(NULL, 0, &NonRetainingArrayCallbacks);
-
- CFArrayAppendValue(openWindowsRef, self);
-
- return [super initWithContentRect:contentRect styleMask:styleMask backing:bufferingType defer:deferCreation];
-}
-
-- (void)close
-{
- CFRange arrayRange = CFRangeMake(0, CFArrayGetCount(openWindowsRef));
- CFIndex i = CFArrayGetFirstIndexOfValue(openWindowsRef, arrayRange, self);
- assert(i != -1);
- CFArrayRemoveValueAtIndex(openWindowsRef, i);
- [super close];
-}
-
-- (BOOL)isKeyWindow
-{
- return gLayoutTestController ? gLayoutTestController->windowIsKey() : YES;
-}
-
-- (void)keyDown:(id)sender
-{
- // Do nothing, avoiding the beep we'd otherwise get from NSResponder,
- // once we get to the end of the responder chain.
-}
-
-@end
diff --git a/WebKitTools/DumpRenderTree/mac/EditingDelegate.h b/WebKitTools/DumpRenderTree/mac/EditingDelegate.h
deleted file mode 100644
index b5563c8..0000000
--- a/WebKitTools/DumpRenderTree/mac/EditingDelegate.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2005, 2006 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <Cocoa/Cocoa.h>
-
-@interface EditingDelegate : NSObject
-{
- BOOL acceptsEditing;
-}
-
-- (void)setAcceptsEditing:(BOOL)newAcceptsEditing;
-
-@end
diff --git a/WebKitTools/DumpRenderTree/mac/EditingDelegate.mm b/WebKitTools/DumpRenderTree/mac/EditingDelegate.mm
deleted file mode 100644
index cf4026b..0000000
--- a/WebKitTools/DumpRenderTree/mac/EditingDelegate.mm
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * Copyright (C) 2005, 2006 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "EditingDelegate.h"
-
-#import "DumpRenderTree.h"
-#import "LayoutTestController.h"
-#import <WebKit/WebKit.h>
-
-@interface DOMNode (dumpPath)
-- (NSString *)dumpPath;
-@end
-
-@implementation DOMNode (dumpPath)
-- (NSString *)dumpPath
-{
- DOMNode *parent = [self parentNode];
- NSString *str = [NSString stringWithFormat:@"%@", [self nodeName]];
- if (parent != nil) {
- str = [str stringByAppendingString:@" > "];
- str = [str stringByAppendingString:[parent dumpPath]];
- }
- return str;
-}
-@end
-
-@interface DOMRange (dump)
-- (NSString *)dump;
-@end
-
-@implementation DOMRange (dump)
-- (NSString *)dump
-{
- return [NSString stringWithFormat:@"range from %ld of %@ to %ld of %@", [self startOffset], [[self startContainer] dumpPath], [self endOffset], [[self endContainer] dumpPath]];
-}
-@end
-
-@implementation EditingDelegate
-
-- (id)init
-{
- self = [super init];
- if (!self)
- return nil;
- acceptsEditing = YES;
- return self;
-}
-
-- (BOOL)webView:(WebView *)webView shouldBeginEditingInDOMRange:(DOMRange *)range
-{
- if (!done && gLayoutTestController->dumpEditingCallbacks())
- printf("EDITING DELEGATE: shouldBeginEditingInDOMRange:%s\n", [[range dump] UTF8String]);
- return acceptsEditing;
-}
-
-- (BOOL)webView:(WebView *)webView shouldEndEditingInDOMRange:(DOMRange *)range
-{
- if (!done && gLayoutTestController->dumpEditingCallbacks())
- printf("EDITING DELEGATE: shouldEndEditingInDOMRange:%s\n", [[range dump] UTF8String]);
- return acceptsEditing;
-}
-
-- (BOOL)webView:(WebView *)webView shouldInsertNode:(DOMNode *)node replacingDOMRange:(DOMRange *)range givenAction:(WebViewInsertAction)action
-{
- static const char *insertactionstring[] = {
- "WebViewInsertActionTyped",
- "WebViewInsertActionPasted",
- "WebViewInsertActionDropped",
- };
-
- if (!done && gLayoutTestController->dumpEditingCallbacks())
- printf("EDITING DELEGATE: shouldInsertNode:%s replacingDOMRange:%s givenAction:%s\n", [[node dumpPath] UTF8String], [[range dump] UTF8String], insertactionstring[action]);
- return acceptsEditing;
-}
-
-- (BOOL)webView:(WebView *)webView shouldInsertText:(NSString *)text replacingDOMRange:(DOMRange *)range givenAction:(WebViewInsertAction)action
-{
- static const char *insertactionstring[] = {
- "WebViewInsertActionTyped",
- "WebViewInsertActionPasted",
- "WebViewInsertActionDropped",
- };
-
- if (!done && gLayoutTestController->dumpEditingCallbacks())
- printf("EDITING DELEGATE: shouldInsertText:%s replacingDOMRange:%s givenAction:%s\n", [[text description] UTF8String], [[range dump] UTF8String], insertactionstring[action]);
- return acceptsEditing;
-}
-
-- (BOOL)webView:(WebView *)webView shouldDeleteDOMRange:(DOMRange *)range
-{
- if (!done && gLayoutTestController->dumpEditingCallbacks())
- printf("EDITING DELEGATE: shouldDeleteDOMRange:%s\n", [[range dump] UTF8String]);
- return acceptsEditing;
-}
-
-- (BOOL)webView:(WebView *)webView shouldShowDeleteInterfaceForElement:(DOMHTMLElement *)element
-{
- return [[element className] isEqualToString:@"needsDeletionUI"];
-}
-
-- (BOOL)webView:(WebView *)webView shouldChangeSelectedDOMRange:(DOMRange *)currentRange toDOMRange:(DOMRange *)proposedRange affinity:(NSSelectionAffinity)selectionAffinity stillSelecting:(BOOL)flag
-{
- static const char *affinitystring[] = {
- "NSSelectionAffinityUpstream",
- "NSSelectionAffinityDownstream"
- };
- static const char *boolstring[] = {
- "FALSE",
- "TRUE"
- };
-
- if (!done && gLayoutTestController->dumpEditingCallbacks())
- printf("EDITING DELEGATE: shouldChangeSelectedDOMRange:%s toDOMRange:%s affinity:%s stillSelecting:%s\n", [[currentRange dump] UTF8String], [[proposedRange dump] UTF8String], affinitystring[selectionAffinity], boolstring[flag]);
- return acceptsEditing;
-}
-
-- (BOOL)webView:(WebView *)webView shouldApplyStyle:(DOMCSSStyleDeclaration *)style toElementsInDOMRange:(DOMRange *)range
-{
- if (!done && gLayoutTestController->dumpEditingCallbacks())
- printf("EDITING DELEGATE: shouldApplyStyle:%s toElementsInDOMRange:%s\n", [[style description] UTF8String], [[range dump] UTF8String]);
- return acceptsEditing;
-}
-
-- (BOOL)webView:(WebView *)webView shouldChangeTypingStyle:(DOMCSSStyleDeclaration *)currentStyle toStyle:(DOMCSSStyleDeclaration *)proposedStyle
-{
- if (!done && gLayoutTestController->dumpEditingCallbacks())
- printf("EDITING DELEGATE: shouldChangeTypingStyle:%s toStyle:%s\n", [[currentStyle description] UTF8String], [[proposedStyle description] UTF8String]);
- return acceptsEditing;
-}
-
-- (void)webViewDidBeginEditing:(NSNotification *)notification
-{
- if (!done && gLayoutTestController->dumpEditingCallbacks())
- printf("EDITING DELEGATE: webViewDidBeginEditing:%s\n", [[notification name] UTF8String]);
-}
-
-- (void)webViewDidChange:(NSNotification *)notification
-{
- if (!done && gLayoutTestController->dumpEditingCallbacks())
- printf("EDITING DELEGATE: webViewDidChange:%s\n", [[notification name] UTF8String]);
-}
-
-- (void)webViewDidEndEditing:(NSNotification *)notification
-{
- if (!done && gLayoutTestController->dumpEditingCallbacks())
- printf("EDITING DELEGATE: webViewDidEndEditing:%s\n", [[notification name] UTF8String]);
-}
-
-- (void)webViewDidChangeTypingStyle:(NSNotification *)notification
-{
- if (!done && gLayoutTestController->dumpEditingCallbacks())
- printf("EDITING DELEGATE: webViewDidChangeTypingStyle:%s\n", [[notification name] UTF8String]);
-}
-
-- (void)webViewDidChangeSelection:(NSNotification *)notification
-{
- if (!done && gLayoutTestController->dumpEditingCallbacks())
- printf("EDITING DELEGATE: webViewDidChangeSelection:%s\n", [[notification name] UTF8String]);
-}
-
-- (void)setAcceptsEditing:(BOOL)newAcceptsEditing
-{
- acceptsEditing = newAcceptsEditing;
-}
-
-@end
diff --git a/WebKitTools/DumpRenderTree/mac/EventSendingController.h b/WebKitTools/DumpRenderTree/mac/EventSendingController.h
deleted file mode 100644
index deee848..0000000
--- a/WebKitTools/DumpRenderTree/mac/EventSendingController.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2005, 2006, 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <Cocoa/Cocoa.h>
-#import <WebKit/WebKit.h>
-
-@interface EventSendingController : NSObject <DOMEventListener>
-{
- BOOL leftMouseButtonDown;
- BOOL dragMode;
- int clickCount;
- NSTimeInterval lastClick;
- int eventNumber;
- double timeOffset;
-}
-
-+ (void)saveEvent:(NSInvocation *)event;
-+ (void)replaySavedEvents;
-+ (void)clearSavedEvents;
-
-- (void)enableDOMUIEventLogging:(WebScriptObject *)node;
-
-- (void)handleEvent:(DOMEvent *)event;
-
-@end
-
-extern NSPoint lastMousePosition;
-extern NSPoint lastClickPosition; \ No newline at end of file
diff --git a/WebKitTools/DumpRenderTree/mac/EventSendingController.mm b/WebKitTools/DumpRenderTree/mac/EventSendingController.mm
deleted file mode 100644
index 8be05e7..0000000
--- a/WebKitTools/DumpRenderTree/mac/EventSendingController.mm
+++ /dev/null
@@ -1,667 +0,0 @@
-/*
- * Copyright (C) 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
- * Copyright (C) 2006 Jonas Witt <jonas.witt@gmail.com>
- * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
- * Copyright (C) 2006 Alexey Proskuryakov <ap@nypop.com>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "EventSendingController.h"
-
-#import "DumpRenderTree.h"
-#import "DumpRenderTreeDraggingInfo.h"
-
-#import <Carbon/Carbon.h> // for GetCurrentEventTime()
-#import <WebKit/DOMPrivate.h>
-#import <WebKit/WebKit.h>
-#import <WebKit/WebViewPrivate.h>
-
-extern "C" void _NSNewKillRingSequence();
-
-enum MouseAction {
- MouseDown,
- MouseUp,
- MouseDragged
-};
-
-// Match the DOM spec (sadly the DOM spec does not provide an enum)
-enum MouseButton {
- LeftMouseButton = 0,
- MiddleMouseButton = 1,
- RightMouseButton = 2,
- NoMouseButton = -1
-};
-
-NSPoint lastMousePosition;
-NSPoint lastClickPosition;
-int lastClickButton = NoMouseButton;
-NSArray *webkitDomEventNames;
-NSMutableArray *savedMouseEvents; // mouse events sent between mouseDown and mouseUp are stored here, and then executed at once.
-BOOL replayingSavedEvents;
-
-@implementation EventSendingController
-
-+ (void)initialize
-{
- webkitDomEventNames = [[NSArray alloc] initWithObjects:
- @"abort",
- @"beforecopy",
- @"beforecut",
- @"beforepaste",
- @"blur",
- @"change",
- @"click",
- @"contextmenu",
- @"copy",
- @"cut",
- @"dblclick",
- @"drag",
- @"dragend",
- @"dragenter",
- @"dragleave",
- @"dragover",
- @"dragstart",
- @"drop",
- @"error",
- @"focus",
- @"input",
- @"keydown",
- @"keypress",
- @"keyup",
- @"load",
- @"mousedown",
- @"mousemove",
- @"mouseout",
- @"mouseover",
- @"mouseup",
- @"mousewheel",
- @"beforeunload",
- @"paste",
- @"readystatechange",
- @"reset",
- @"resize",
- @"scroll",
- @"search",
- @"select",
- @"selectstart",
- @"submit",
- @"textInput",
- @"textzoomin",
- @"textzoomout",
- @"unload",
- @"zoom",
- nil];
-}
-
-+ (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector
-{
- if (aSelector == @selector(mouseDown:)
- || aSelector == @selector(mouseUp:)
- || aSelector == @selector(contextClick)
- || aSelector == @selector(mouseMoveToX:Y:)
- || aSelector == @selector(leapForward:)
- || aSelector == @selector(keyDown:withModifiers:)
- || aSelector == @selector(enableDOMUIEventLogging:)
- || aSelector == @selector(fireKeyboardEventsToElement:)
- || aSelector == @selector(clearKillRing)
- || aSelector == @selector(textZoomIn)
- || aSelector == @selector(textZoomOut)
- || aSelector == @selector(zoomPageIn)
- || aSelector == @selector(zoomPageOut))
- return NO;
- return YES;
-}
-
-+ (BOOL)isKeyExcludedFromWebScript:(const char*)name
-{
- if (strcmp(name, "dragMode") == 0)
- return NO;
- return YES;
-}
-
-+ (NSString *)webScriptNameForSelector:(SEL)aSelector
-{
- if (aSelector == @selector(mouseDown:))
- return @"mouseDown";
- if (aSelector == @selector(mouseUp:))
- return @"mouseUp";
- if (aSelector == @selector(mouseMoveToX:Y:))
- return @"mouseMoveTo";
- if (aSelector == @selector(leapForward:))
- return @"leapForward";
- if (aSelector == @selector(keyDown:withModifiers:))
- return @"keyDown";
- if (aSelector == @selector(enableDOMUIEventLogging:))
- return @"enableDOMUIEventLogging";
- if (aSelector == @selector(fireKeyboardEventsToElement:))
- return @"fireKeyboardEventsToElement";
- if (aSelector == @selector(setDragMode:))
- return @"setDragMode";
- return nil;
-}
-
-- (id)init
-{
- self = [super init];
- if (self)
- dragMode = YES;
- return self;
-}
-
-- (void)dealloc
-{
- [super dealloc];
-}
-
-- (double)currentEventTime
-{
- return GetCurrentEventTime() + timeOffset;
-}
-
-- (void)leapForward:(int)milliseconds
-{
- if (dragMode && leftMouseButtonDown && !replayingSavedEvents) {
- NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[EventSendingController instanceMethodSignatureForSelector:@selector(leapForward:)]];
- [invocation setTarget:self];
- [invocation setSelector:@selector(leapForward:)];
- [invocation setArgument:&milliseconds atIndex:2];
-
- [EventSendingController saveEvent:invocation];
-
- return;
- }
-
- timeOffset += milliseconds / 1000.0;
-}
-
-- (void)clearKillRing
-{
- _NSNewKillRingSequence();
-}
-
-static NSEventType eventTypeForMouseButtonAndAction(int button, MouseAction action)
-{
- switch (button) {
- case LeftMouseButton:
- switch (action) {
- case MouseDown:
- return NSLeftMouseDown;
- case MouseUp:
- return NSLeftMouseUp;
- case MouseDragged:
- return NSLeftMouseDragged;
- }
- case RightMouseButton:
- switch (action) {
- case MouseDown:
- return NSRightMouseDown;
- case MouseUp:
- return NSRightMouseUp;
- case MouseDragged:
- return NSRightMouseDragged;
- }
- default:
- switch (action) {
- case MouseDown:
- return NSOtherMouseDown;
- case MouseUp:
- return NSOtherMouseUp;
- case MouseDragged:
- return NSOtherMouseDragged;
- }
- }
- assert(0);
- return static_cast<NSEventType>(0);
-}
-
-- (void)updateClickCountForButton:(int)buttonNumber
-{
- if (([self currentEventTime] - lastClick >= 1) ||
- !NSEqualPoints(lastMousePosition, lastClickPosition) ||
- lastClickButton != buttonNumber) {
- clickCount = 1;
- lastClickButton = buttonNumber;
- } else
- clickCount++;
-}
-
-- (void)mouseDown:(int)buttonNumber
-{
- [[[mainFrame frameView] documentView] layout];
- [self updateClickCountForButton:buttonNumber];
-
- NSEventType eventType = eventTypeForMouseButtonAndAction(buttonNumber, MouseDown);
- NSEvent *event = [NSEvent mouseEventWithType:eventType
- location:lastMousePosition
- modifierFlags:0
- timestamp:[self currentEventTime]
- windowNumber:[[[mainFrame webView] window] windowNumber]
- context:[NSGraphicsContext currentContext]
- eventNumber:++eventNumber
- clickCount:clickCount
- pressure:0.0];
-
- NSView *subView = [[mainFrame webView] hitTest:[event locationInWindow]];
- if (subView) {
- [subView mouseDown:event];
- if (buttonNumber == LeftMouseButton)
- leftMouseButtonDown = YES;
- }
-}
-
-- (void)textZoomIn
-{
- [[mainFrame webView] makeTextLarger:self];
-}
-
-- (void)textZoomOut
-{
- [[mainFrame webView] makeTextSmaller:self];
-}
-
-- (void)zoomPageIn
-{
- [[mainFrame webView] zoomPageIn:self];
-}
-
-- (void)zoomPageOut
-{
- [[mainFrame webView] zoomPageOut:self];
-}
-
-- (void)mouseUp:(int)buttonNumber
-{
- if (dragMode && !replayingSavedEvents) {
- NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[EventSendingController instanceMethodSignatureForSelector:@selector(mouseUp:)]];
- [invocation setTarget:self];
- [invocation setSelector:@selector(mouseUp:)];
- [invocation setArgument:&buttonNumber atIndex:2];
-
- [EventSendingController saveEvent:invocation];
- [EventSendingController replaySavedEvents];
-
- return;
- }
-
- [[[mainFrame frameView] documentView] layout];
- NSEventType eventType = eventTypeForMouseButtonAndAction(buttonNumber, MouseUp);
- NSEvent *event = [NSEvent mouseEventWithType:eventType
- location:lastMousePosition
- modifierFlags:0
- timestamp:[self currentEventTime]
- windowNumber:[[[mainFrame webView] window] windowNumber]
- context:[NSGraphicsContext currentContext]
- eventNumber:++eventNumber
- clickCount:clickCount
- pressure:0.0];
-
- NSView *targetView = [[mainFrame webView] hitTest:[event locationInWindow]];
- // FIXME: Silly hack to teach DRT to respect capturing mouse events outside the WebView.
- // The right solution is just to use NSApplication's built-in event sending methods,
- // instead of rolling our own algorithm for selecting an event target.
- targetView = targetView ? targetView : [[mainFrame frameView] documentView];
- assert(targetView);
- [targetView mouseUp:event];
- if (buttonNumber == LeftMouseButton)
- leftMouseButtonDown = NO;
- lastClick = [event timestamp];
- lastClickPosition = lastMousePosition;
- if (draggingInfo) {
- WebView *webView = [mainFrame webView];
-
- NSDragOperation dragOperation = [webView draggingUpdated:draggingInfo];
-
- if (dragOperation != NSDragOperationNone)
- [webView performDragOperation:draggingInfo];
- else
- [webView draggingExited:draggingInfo];
- [[draggingInfo draggingSource] draggedImage:[draggingInfo draggedImage] endedAt:lastMousePosition operation:dragOperation];
- [draggingInfo release];
- draggingInfo = nil;
- }
-}
-
-- (void)mouseMoveToX:(int)x Y:(int)y
-{
- if (dragMode && leftMouseButtonDown && !replayingSavedEvents) {
- NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[EventSendingController instanceMethodSignatureForSelector:@selector(mouseMoveToX:Y:)]];
- [invocation setTarget:self];
- [invocation setSelector:@selector(mouseMoveToX:Y:)];
- [invocation setArgument:&x atIndex:2];
- [invocation setArgument:&y atIndex:3];
-
- [EventSendingController saveEvent:invocation];
-
- return;
- }
-
- NSView *view = [mainFrame webView];
- lastMousePosition = [view convertPoint:NSMakePoint(x, [view frame].size.height - y) toView:nil];
- NSEvent *event = [NSEvent mouseEventWithType:(leftMouseButtonDown ? NSLeftMouseDragged : NSMouseMoved)
- location:lastMousePosition
- modifierFlags:0
- timestamp:[self currentEventTime]
- windowNumber:[[view window] windowNumber]
- context:[NSGraphicsContext currentContext]
- eventNumber:++eventNumber
- clickCount:(leftMouseButtonDown ? clickCount : 0)
- pressure:0.0];
-
- NSView *subView = [[mainFrame webView] hitTest:[event locationInWindow]];
- if (subView) {
- if (leftMouseButtonDown) {
- [subView mouseDragged:event];
- if (draggingInfo) {
- [[draggingInfo draggingSource] draggedImage:[draggingInfo draggedImage] movedTo:lastMousePosition];
- [[mainFrame webView] draggingUpdated:draggingInfo];
- }
- } else
- [subView mouseMoved:event];
- }
-}
-
-- (void)contextClick
-{
- [[[mainFrame frameView] documentView] layout];
- [self updateClickCountForButton:RightMouseButton];
-
- NSEvent *event = [NSEvent mouseEventWithType:NSRightMouseDown
- location:lastMousePosition
- modifierFlags:0
- timestamp:[self currentEventTime]
- windowNumber:[[[mainFrame webView] window] windowNumber]
- context:[NSGraphicsContext currentContext]
- eventNumber:++eventNumber
- clickCount:clickCount
- pressure:0.0];
-
- NSView *subView = [[mainFrame webView] hitTest:[event locationInWindow]];
- if (subView)
- [subView menuForEvent:event];
-}
-
-+ (void)saveEvent:(NSInvocation *)event
-{
- if (!savedMouseEvents)
- savedMouseEvents = [[NSMutableArray alloc] init];
- [savedMouseEvents addObject:event];
-}
-
-+ (void)replaySavedEvents
-{
- replayingSavedEvents = YES;
- while ([savedMouseEvents count]) {
- // if a drag is initiated, the remaining saved events will be dispatched from our dragging delegate
- NSInvocation *invocation = [[[savedMouseEvents objectAtIndex:0] retain] autorelease];
- [savedMouseEvents removeObjectAtIndex:0];
- [invocation invoke];
- }
- replayingSavedEvents = NO;
-}
-
-+ (void)clearSavedEvents
-{
- [savedMouseEvents release];
- savedMouseEvents = nil;
-}
-
-- (void)keyDown:(NSString *)character withModifiers:(WebScriptObject *)modifiers
-{
- NSString *eventCharacter = character;
- if ([character isEqualToString:@"leftArrow"]) {
- const unichar ch = NSLeftArrowFunctionKey;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- } else if ([character isEqualToString:@"rightArrow"]) {
- const unichar ch = NSRightArrowFunctionKey;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- } else if ([character isEqualToString:@"upArrow"]) {
- const unichar ch = NSUpArrowFunctionKey;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- } else if ([character isEqualToString:@"downArrow"]) {
- const unichar ch = NSDownArrowFunctionKey;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- } else if ([character isEqualToString:@"pageUp"]) {
- const unichar ch = NSPageUpFunctionKey;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- } else if ([character isEqualToString:@"pageDown"]) {
- const unichar ch = NSPageDownFunctionKey;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- } else if ([character isEqualToString:@"home"]) {
- const unichar ch = NSHomeFunctionKey;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- } else if ([character isEqualToString:@"end"]) {
- const unichar ch = NSEndFunctionKey;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- } else if ([character isEqualToString:@"delete"]) {
- const unichar ch = 0x7f;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- }
-
- NSString *charactersIgnoringModifiers = eventCharacter;
-
- int modifierFlags = 0;
-
- if ([character length] == 1 && [character characterAtIndex:0] >= 'A' && [character characterAtIndex:0] <= 'Z') {
- modifierFlags |= NSShiftKeyMask;
- charactersIgnoringModifiers = [character lowercaseString];
- }
-
- if ([modifiers isKindOfClass:[WebScriptObject class]])
- for (unsigned i = 0; [[modifiers webScriptValueAtIndex:i] isKindOfClass:[NSString class]]; i++) {
- NSString *modifier = (NSString *)[modifiers webScriptValueAtIndex:i];
- if ([modifier isEqual:@"ctrlKey"])
- modifierFlags |= NSControlKeyMask;
- else if ([modifier isEqual:@"shiftKey"])
- modifierFlags |= NSShiftKeyMask;
- else if ([modifier isEqual:@"altKey"])
- modifierFlags |= NSAlternateKeyMask;
- else if ([modifier isEqual:@"metaKey"])
- modifierFlags |= NSCommandKeyMask;
- }
-
- [[[mainFrame frameView] documentView] layout];
-
- NSEvent *event = [NSEvent keyEventWithType:NSKeyDown
- location:NSMakePoint(5, 5)
- modifierFlags:modifierFlags
- timestamp:[self currentEventTime]
- windowNumber:[[[mainFrame webView] window] windowNumber]
- context:[NSGraphicsContext currentContext]
- characters:eventCharacter
- charactersIgnoringModifiers:charactersIgnoringModifiers
- isARepeat:NO
- keyCode:0];
-
- [[[[mainFrame webView] window] firstResponder] keyDown:event];
-
- event = [NSEvent keyEventWithType:NSKeyUp
- location:NSMakePoint(5, 5)
- modifierFlags:modifierFlags
- timestamp:[self currentEventTime]
- windowNumber:[[[mainFrame webView] window] windowNumber]
- context:[NSGraphicsContext currentContext]
- characters:eventCharacter
- charactersIgnoringModifiers:charactersIgnoringModifiers
- isARepeat:NO
- keyCode:0];
-
- [[[[mainFrame webView] window] firstResponder] keyUp:event];
-}
-
-- (void)enableDOMUIEventLogging:(WebScriptObject *)node
-{
- NSEnumerator *eventEnumerator = [webkitDomEventNames objectEnumerator];
- id eventName;
- while ((eventName = [eventEnumerator nextObject])) {
- [(id<DOMEventTarget>)node addEventListener:eventName listener:self useCapture:NO];
- }
-}
-
-- (void)handleEvent:(DOMEvent *)event
-{
- DOMNode *target = [event target];
-
- printf("event type: %s\n", [[event type] UTF8String]);
- printf(" target: <%s>\n", [[[target nodeName] lowercaseString] UTF8String]);
-
- if ([event isKindOfClass:[DOMEvent class]]) {
- printf(" eventPhase: %d\n", [event eventPhase]);
- printf(" bubbles: %d\n", [event bubbles] ? 1 : 0);
- printf(" cancelable: %d\n", [event cancelable] ? 1 : 0);
- }
-
- if ([event isKindOfClass:[DOMUIEvent class]]) {
- printf(" detail: %d\n", [(DOMUIEvent*)event detail]);
-
- DOMAbstractView *view = [(DOMUIEvent*)event view];
- if (view) {
- printf(" view: OK");
- if ([view document])
- printf(" (document: OK)");
- printf("\n");
- }
- }
-
- if ([event isKindOfClass:[DOMKeyboardEvent class]]) {
- printf(" keyIdentifier: %s\n", [[(DOMKeyboardEvent*)event keyIdentifier] UTF8String]);
- printf(" keyLocation: %d\n", [(DOMKeyboardEvent*)event keyLocation]);
- printf(" modifier keys: c:%d s:%d a:%d m:%d\n",
- [(DOMKeyboardEvent*)event ctrlKey] ? 1 : 0,
- [(DOMKeyboardEvent*)event shiftKey] ? 1 : 0,
- [(DOMKeyboardEvent*)event altKey] ? 1 : 0,
- [(DOMKeyboardEvent*)event metaKey] ? 1 : 0);
- printf(" keyCode: %d\n", [(DOMKeyboardEvent*)event keyCode]);
- printf(" charCode: %d\n", [(DOMKeyboardEvent*)event charCode]);
- }
-
- if ([event isKindOfClass:[DOMMouseEvent class]]) {
- printf(" button: %d\n", [(DOMMouseEvent*)event button]);
- printf(" clientX: %d\n", [(DOMMouseEvent*)event clientX]);
- printf(" clientY: %d\n", [(DOMMouseEvent*)event clientY]);
- printf(" screenX: %d\n", [(DOMMouseEvent*)event screenX]);
- printf(" screenY: %d\n", [(DOMMouseEvent*)event screenY]);
- printf(" modifier keys: c:%d s:%d a:%d m:%d\n",
- [(DOMMouseEvent*)event ctrlKey] ? 1 : 0,
- [(DOMMouseEvent*)event shiftKey] ? 1 : 0,
- [(DOMMouseEvent*)event altKey] ? 1 : 0,
- [(DOMMouseEvent*)event metaKey] ? 1 : 0);
- id relatedTarget = [(DOMMouseEvent*)event relatedTarget];
- if (relatedTarget) {
- printf(" relatedTarget: %s", [[[relatedTarget class] description] UTF8String]);
- if ([relatedTarget isKindOfClass:[DOMNode class]])
- printf(" (nodeName: %s)", [[(DOMNode*)relatedTarget nodeName] UTF8String]);
- printf("\n");
- }
- }
-
- if ([event isKindOfClass:[DOMMutationEvent class]]) {
- printf(" prevValue: %s\n", [[(DOMMutationEvent*)event prevValue] UTF8String]);
- printf(" newValue: %s\n", [[(DOMMutationEvent*)event newValue] UTF8String]);
- printf(" attrName: %s\n", [[(DOMMutationEvent*)event attrName] UTF8String]);
- printf(" attrChange: %d\n", [(DOMMutationEvent*)event attrChange]);
- DOMNode *relatedNode = [(DOMMutationEvent*)event relatedNode];
- if (relatedNode) {
- printf(" relatedNode: %s (nodeName: %s)\n",
- [[[relatedNode class] description] UTF8String],
- [[relatedNode nodeName] UTF8String]);
- }
- }
-
- if ([event isKindOfClass:[DOMWheelEvent class]]) {
- printf(" clientX: %d\n", [(DOMWheelEvent*)event clientX]);
- printf(" clientY: %d\n", [(DOMWheelEvent*)event clientY]);
- printf(" screenX: %d\n", [(DOMWheelEvent*)event screenX]);
- printf(" screenY: %d\n", [(DOMWheelEvent*)event screenY]);
- printf(" modifier keys: c:%d s:%d a:%d m:%d\n",
- [(DOMWheelEvent*)event ctrlKey] ? 1 : 0,
- [(DOMWheelEvent*)event shiftKey] ? 1 : 0,
- [(DOMWheelEvent*)event altKey] ? 1 : 0,
- [(DOMWheelEvent*)event metaKey] ? 1 : 0);
- printf(" isHorizontal: %d\n", [(DOMWheelEvent*)event isHorizontal] ? 1 : 0);
- printf(" wheelDelta: %d\n", [(DOMWheelEvent*)event wheelDelta]);
- }
-}
-
-// FIXME: It's not good to have a test hard-wired into this controller like this.
-// Instead we need to get testing framework based on the Objective-C bindings
-// to work well enough that we can test that way instead.
-- (void)fireKeyboardEventsToElement:(WebScriptObject *)element {
-
- if (![element isKindOfClass:[DOMHTMLElement class]]) {
- return;
- }
-
- DOMHTMLElement *target = (DOMHTMLElement*)element;
- DOMDocument *document = [target ownerDocument];
-
- // Keyboard Event 1
-
- DOMEvent *domEvent = [document createEvent:@"KeyboardEvent"];
- [(DOMKeyboardEvent*)domEvent initKeyboardEvent:@"keydown"
- canBubble:YES
- cancelable:YES
- view:[document defaultView]
- keyIdentifier:@"U+000041"
- keyLocation:0
- ctrlKey:YES
- altKey:NO
- shiftKey:NO
- metaKey:NO];
- [target dispatchEvent:domEvent];
-
- // Keyboard Event 2
-
- domEvent = [document createEvent:@"KeyboardEvent"];
- [(DOMKeyboardEvent*)domEvent initKeyboardEvent:@"keypress"
- canBubble:YES
- cancelable:YES
- view:[document defaultView]
- keyIdentifier:@"U+000045"
- keyLocation:1
- ctrlKey:NO
- altKey:YES
- shiftKey:NO
- metaKey:NO];
- [target dispatchEvent:domEvent];
-
- // Keyboard Event 3
-
- domEvent = [document createEvent:@"KeyboardEvent"];
- [(DOMKeyboardEvent*)domEvent initKeyboardEvent:@"keyup"
- canBubble:YES
- cancelable:YES
- view:[document defaultView]
- keyIdentifier:@"U+000056"
- keyLocation:0
- ctrlKey:NO
- altKey:NO
- shiftKey:NO
- metaKey:NO];
- [target dispatchEvent:domEvent];
-
-}
-
-@end
diff --git a/WebKitTools/DumpRenderTree/mac/FrameLoadDelegate.h b/WebKitTools/DumpRenderTree/mac/FrameLoadDelegate.h
deleted file mode 100644
index 6c3cbdb..0000000
--- a/WebKitTools/DumpRenderTree/mac/FrameLoadDelegate.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <Foundation/Foundation.h>
-
-class AccessibilityController;
-class GCController;
-
-@interface FrameLoadDelegate : NSObject
-{
- AccessibilityController* accessibilityController;
- GCController* gcController;
-}
-@end
diff --git a/WebKitTools/DumpRenderTree/mac/FrameLoadDelegate.mm b/WebKitTools/DumpRenderTree/mac/FrameLoadDelegate.mm
deleted file mode 100644
index 3d7f8b4..0000000
--- a/WebKitTools/DumpRenderTree/mac/FrameLoadDelegate.mm
+++ /dev/null
@@ -1,351 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "DumpRenderTree.h"
-#import "FrameLoadDelegate.h"
-
-#import "AccessibilityController.h"
-#import "AppleScriptController.h"
-#import "EventSendingController.h"
-#import "GCController.h"
-#import "LayoutTestController.h"
-#import "NavigationController.h"
-#import "ObjCController.h"
-#import "ObjCPlugin.h"
-#import "ObjCPluginFunction.h"
-#import "TextInputController.h"
-#import "WorkQueue.h"
-#import "WorkQueueItem.h"
-#import <JavaScriptCore/JavaScriptCore.h>
-#import <WebKit/WebFramePrivate.h>
-#import <WebKit/WebHTMLViewPrivate.h>
-#import <WebKit/WebKit.h>
-#import <WebKit/WebNSURLExtras.h>
-#import <wtf/Assertions.h>
-
-@interface NSURLRequest (PrivateThingsWeShouldntReallyUse)
-+(void)setAllowsAnyHTTPSCertificate:(BOOL)allow forHost:(NSString *)host;
-@end
-
-@interface NSURL (DRTExtras)
-- (NSString *)_drt_descriptionSuitableForTestResult;
-@end
-
-@interface NSError (DRTExtras)
-- (NSString *)_drt_descriptionSuitableForTestResult;
-@end
-
-@interface NSURLResponse (DRTExtras)
-- (NSString *)_drt_descriptionSuitableForTestResult;
-@end
-
-@interface NSURLRequest (DRTExtras)
-- (NSString *)_drt_descriptionSuitableForTestResult;
-@end
-
-@interface WebFrame (DRTExtras)
-- (NSString *)_drt_descriptionSuitableForTestResult;
-@end
-
-@implementation WebFrame (DRTExtras)
-- (NSString *)_drt_descriptionSuitableForTestResult
-{
- BOOL isMainFrame = (self == [[self webView] mainFrame]);
- NSString *name = [self name];
- if (isMainFrame) {
- if ([name length])
- return [NSString stringWithFormat:@"main frame \"%@\"", name];
- else
- return @"main frame";
- } else {
- if (name)
- return [NSString stringWithFormat:@"frame \"%@\"", name];
- else
- return @"frame (anonymous)";
- }
-}
-@end
-
-@implementation FrameLoadDelegate
-
-- (id)init
-{
- if ((self = [super init])) {
- gcController = new GCController;
- accessibilityController = new AccessibilityController;
- }
- return self;
-}
-
-- (void)dealloc
-{
- delete gcController;
- [super dealloc];
-}
-
-// Exec messages in the work queue until they're all done, or one of them starts a new load
-- (void)processWork:(id)dummy
-{
- // quit doing work once a load is in progress
- while (WorkQueue::shared()->count() > 0 && !topLoadingFrame) {
- WorkQueueItem* item = WorkQueue::shared()->dequeue();
- ASSERT(item);
- item->invoke();
- delete item;
- }
-
- // if we didn't start a new load, then we finished all the commands, so we're ready to dump state
- if (!topLoadingFrame && !gLayoutTestController->waitToDump())
- dump();
-}
-
-- (void)webView:(WebView *)c locationChangeDone:(NSError *)error forDataSource:(WebDataSource *)dataSource
-{
- if ([dataSource webFrame] == topLoadingFrame) {
- topLoadingFrame = nil;
- WorkQueue::shared()->setFrozen(true); // first complete load freezes the queue for the rest of this test
- if (!gLayoutTestController->waitToDump()) {
- if (WorkQueue::shared()->count())
- [self performSelector:@selector(processWork:) withObject:nil afterDelay:0];
- else
- dump();
- }
- }
-}
-
-- (void)webView:(WebView *)sender didStartProvisionalLoadForFrame:(WebFrame *)frame
-{
- if (!done && gLayoutTestController->dumpFrameLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"%@ - didStartProvisionalLoadForFrame", [frame _drt_descriptionSuitableForTestResult]];
- printf ("%s\n", [string UTF8String]);
- }
-
- ASSERT([frame provisionalDataSource]);
- // Make sure we only set this once per test. If it gets cleared, and then set again, we might
- // end up doing two dumps for one test.
- if (!topLoadingFrame && !done)
- topLoadingFrame = frame;
-
- if (!done && gLayoutTestController->stopProvisionalFrameLoads()) {
- NSString *string = [NSString stringWithFormat:@"%@ - stopping load in didStartProvisionalLoadForFrame callback", [frame _drt_descriptionSuitableForTestResult]];
- printf ("%s\n", [string UTF8String]);
- [frame stopLoading];
- }
-}
-
-- (void)webView:(WebView *)sender didCommitLoadForFrame:(WebFrame *)frame
-{
- if (!done && gLayoutTestController->dumpFrameLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"%@ - didCommitLoadForFrame", [frame _drt_descriptionSuitableForTestResult]];
- printf ("%s\n", [string UTF8String]);
- }
-
- ASSERT(![frame provisionalDataSource]);
- ASSERT([frame dataSource]);
-
- gLayoutTestController->setWindowIsKey(true);
- NSView *documentView = [[mainFrame frameView] documentView];
- [[[mainFrame webView] window] makeFirstResponder:documentView];
- if ([documentView isKindOfClass:[WebHTMLView class]])
- [(WebHTMLView *)documentView _updateFocusedAndActiveState];
-}
-
-- (void)webView:(WebView *)sender didFailProvisionalLoadWithError:(NSError *)error forFrame:(WebFrame *)frame
-{
- if (!done && gLayoutTestController->dumpFrameLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"%@ - didFailProvisionalLoadWithError", [frame _drt_descriptionSuitableForTestResult]];
- printf ("%s\n", [string UTF8String]);
- }
-
- if ([error domain] == NSURLErrorDomain && [error code] == NSURLErrorServerCertificateHasUnknownRoot) {
- NSURL *failedURL = [[error userInfo] objectForKey:@"NSErrorFailingURLKey"];
- [NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[failedURL _web_hostString]];
- [frame loadRequest:[[[[frame provisionalDataSource] request] mutableCopy] autorelease]];
- return;
- }
-
- ASSERT([frame provisionalDataSource]);
- [self webView:sender locationChangeDone:error forDataSource:[frame provisionalDataSource]];
-}
-
-- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
-{
- ASSERT([frame dataSource]);
- ASSERT(frame == [[frame dataSource] webFrame]);
-
- if (!done && gLayoutTestController->dumpFrameLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"%@ - didFinishLoadForFrame", [frame _drt_descriptionSuitableForTestResult]];
- printf ("%s\n", [string UTF8String]);
- }
-
- // FIXME: This call to displayIfNeeded can be removed when <rdar://problem/5092361> is fixed.
- // After that is fixed, we will reenable painting after WebCore is done loading the document,
- // and this call will no longer be needed.
- if ([[sender mainFrame] isEqual:frame])
- [sender displayIfNeeded];
- [self webView:sender locationChangeDone:nil forDataSource:[frame dataSource]];
- [gNavigationController webView:sender didFinishLoadForFrame:frame];
-}
-
-- (void)webView:(WebView *)sender didFailLoadWithError:(NSError *)error forFrame:(WebFrame *)frame;
-{
- if (!done && gLayoutTestController->dumpFrameLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"%@ - didFailLoadWithError", [frame _drt_descriptionSuitableForTestResult]];
- printf ("%s\n", [string UTF8String]);
- }
-
- ASSERT(![frame provisionalDataSource]);
- ASSERT([frame dataSource]);
-
- [self webView:sender locationChangeDone:error forDataSource:[frame dataSource]];
-}
-
-- (void)webView:(WebView *)webView windowScriptObjectAvailable:(WebScriptObject *)windowScriptObject;
-{
- if (!done && gLayoutTestController->dumpFrameLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"?? - windowScriptObjectAvailable"];
- printf ("%s\n", [string UTF8String]);
- }
-
- ASSERT_NOT_REACHED();
-}
-
-- (void)webView:(WebView *)sender didClearWindowObject:(WebScriptObject *)obj forFrame:(WebFrame *)frame
-{
- ASSERT(obj == [frame windowObject]);
- ASSERT([obj JSObject] == JSContextGetGlobalObject([frame globalContext]));
-
- // Make New-Style LayoutTestController
- JSContextRef context = [frame globalContext];
- JSObjectRef globalObject = JSContextGetGlobalObject(context);
- JSValueRef exception = 0;
-
- ASSERT(gLayoutTestController);
- gLayoutTestController->makeWindowObject(context, globalObject, &exception);
- ASSERT(!exception);
-
- gcController->makeWindowObject(context, globalObject, &exception);
- ASSERT(!exception);
-
- accessibilityController->makeWindowObject(context, globalObject, &exception);
- ASSERT(!exception);
-
- // Make Old-Style controllers
- EventSendingController *esc = [[EventSendingController alloc] init];
- [obj setValue:esc forKey:@"eventSender"];
- [esc release];
-
- TextInputController *tic = [[TextInputController alloc] initWithWebView:sender];
- [obj setValue:tic forKey:@"textInputController"];
- [tic release];
-
- AppleScriptController *asc = [[AppleScriptController alloc] initWithWebView:sender];
- [obj setValue:asc forKey:@"appleScriptController"];
- [asc release];
-
- ObjCController *occ = [[ObjCController alloc] init];
- [obj setValue:occ forKey:@"objCController"];
- [occ release];
-
- [obj setValue:gNavigationController forKey:@"navigationController"];
-
- ObjCPlugin *plugin = [[ObjCPlugin alloc] init];
- [obj setValue:plugin forKey:@"objCPlugin"];
- [plugin release];
-
- ObjCPluginFunction *pluginFunction = [[ObjCPluginFunction alloc] init];
- [obj setValue:pluginFunction forKey:@"objCPluginFunction"];
- [pluginFunction release];
-}
-
-- (void)webView:(WebView *)sender didReceiveTitle:(NSString *)title forFrame:(WebFrame *)frame
-{
- if (!done && gLayoutTestController->dumpFrameLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"%@ - didReceiveTitle: %@", [frame _drt_descriptionSuitableForTestResult], title];
- printf ("%s\n", [string UTF8String]);
- }
-
- if (gLayoutTestController->dumpTitleChanges())
- printf("TITLE CHANGED: %s\n", [title UTF8String]);
-}
-
-- (void)webView:(WebView *)sender didReceiveServerRedirectForProvisionalLoadForFrame:(WebFrame *)frame
-{
- if (!done && gLayoutTestController->dumpFrameLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"%@ - didReceiveServerRedirectForProvisionalLoadForFrame", [frame _drt_descriptionSuitableForTestResult]];
- printf ("%s\n", [string UTF8String]);
- }
-}
-
-- (void)webView:(WebView *)sender didChangeLocationWithinPageForFrame:(WebFrame *)frame
-{
- if (!done && gLayoutTestController->dumpFrameLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"%@ - didChangeLocationWithinPageForFrame", [frame _drt_descriptionSuitableForTestResult]];
- printf ("%s\n", [string UTF8String]);
- }
-}
-
-- (void)webView:(WebView *)sender willPerformClientRedirectToURL:(NSURL *)URL delay:(NSTimeInterval)seconds fireDate:(NSDate *)date forFrame:(WebFrame *)frame
-{
- if (!done && gLayoutTestController->dumpFrameLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"%@ - willPerformClientRedirectToURL: %@ ", [frame _drt_descriptionSuitableForTestResult], [URL _drt_descriptionSuitableForTestResult]];
- printf ("%s\n", [string UTF8String]);
- }
-}
-
-- (void)webView:(WebView *)sender didCancelClientRedirectForFrame:(WebFrame *)frame
-{
- if (!done && gLayoutTestController->dumpFrameLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"%@ - didCancelClientRedirectForFrame", [frame _drt_descriptionSuitableForTestResult]];
- printf ("%s\n", [string UTF8String]);
- }
-}
-
-- (void)webView:(WebView *)sender didFinishDocumentLoadForFrame:(WebFrame *)frame;
-{
- if (!done && gLayoutTestController->dumpFrameLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"%@ - didFinishDocumentLoadForFrame", [frame _drt_descriptionSuitableForTestResult]];
- printf ("%s\n", [string UTF8String]);
- } else if (!done) {
- unsigned pendingFrameUnloadEvents = [frame _pendingFrameUnloadEventCount];
- if (pendingFrameUnloadEvents) {
- NSString *string = [NSString stringWithFormat:@"%@ - has %u onunload handler(s)", [frame _drt_descriptionSuitableForTestResult], pendingFrameUnloadEvents];
- printf ("%s\n", [string UTF8String]);
- }
- }
-}
-
-- (void)webView:(WebView *)sender didHandleOnloadEventsForFrame:(WebFrame *)frame;
-{
- if (!done && gLayoutTestController->dumpFrameLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"%@ - didHandleOnloadEventsForFrame", [frame _drt_descriptionSuitableForTestResult]];
- printf ("%s\n", [string UTF8String]);
- }
-}
-
-@end
diff --git a/WebKitTools/DumpRenderTree/mac/GCControllerMac.mm b/WebKitTools/DumpRenderTree/mac/GCControllerMac.mm
deleted file mode 100644
index 4b845ba..0000000
--- a/WebKitTools/DumpRenderTree/mac/GCControllerMac.mm
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
- * Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com)
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "GCController.h"
-#import <WebKit/WebCoreStatistics.h>
-
-
-void GCController::collect() const
-{
- [WebCoreStatistics garbageCollectJavaScriptObjects];
-}
-
-void GCController::collectOnAlternateThread(bool waitUntilDone) const
-{
- [WebCoreStatistics garbageCollectJavaScriptObjectsOnAlternateThreadForDebugging:waitUntilDone];
-}
-
-size_t GCController::getJSObjectCount() const
-{
- return [WebCoreStatistics javaScriptObjectsCount];
-}
diff --git a/WebKitTools/DumpRenderTree/mac/LayoutTestControllerMac.mm b/WebKitTools/DumpRenderTree/mac/LayoutTestControllerMac.mm
deleted file mode 100644
index 2200c27..0000000
--- a/WebKitTools/DumpRenderTree/mac/LayoutTestControllerMac.mm
+++ /dev/null
@@ -1,311 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "DumpRenderTree.h"
-#import "LayoutTestController.h"
-
-#import "EditingDelegate.h"
-#import "WorkQueue.h"
-#import "WorkQueueItem.h"
-#import <Foundation/Foundation.h>
-#import <JavaScriptCore/JSRetainPtr.h>
-#import <JavaScriptCore/JSStringRef.h>
-#import <JavaScriptCore/JSStringRefCF.h>
-#import <WebKit/DOMDocument.h>
-#import <WebKit/WebBackForwardList.h>
-#import <WebKit/WebDatabaseManagerPrivate.h>
-#import <WebKit/WebDataSource.h>
-#import <WebKit/WebFrame.h>
-#import <WebKit/WebHTMLRepresentation.h>
-#import <WebKit/WebHTMLViewPrivate.h>
-#import <WebKit/WebHistory.h>
-#import <WebKit/WebInspector.h>
-#import <WebKit/WebNSURLExtras.h>
-#import <WebKit/WebPreferences.h>
-#import <WebKit/WebPreferencesPrivate.h>
-#import <WebKit/WebSecurityOriginPrivate.h>
-#import <WebKit/WebView.h>
-#import <WebKit/WebViewPrivate.h>
-#import <wtf/RetainPtr.h>
-
-LayoutTestController::~LayoutTestController()
-{
-}
-
-void LayoutTestController::addDisallowedURL(JSStringRef url)
-{
- RetainPtr<CFStringRef> urlCF(AdoptCF, JSStringCopyCFString(kCFAllocatorDefault, url));
-
- if (!disallowedURLs)
- disallowedURLs = CFSetCreateMutable(kCFAllocatorDefault, 0, NULL);
-
- // Canonicalize the URL
- NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:(NSString *)urlCF.get()]];
- request = [NSURLProtocol canonicalRequestForRequest:request];
-
- CFSetAddValue(disallowedURLs, [request URL]);
-}
-
-void LayoutTestController::clearAllDatabases()
-{
- [[WebDatabaseManager sharedWebDatabaseManager] deleteAllDatabases];
-}
-
-void LayoutTestController::clearBackForwardList()
-{
- WebBackForwardList *backForwardList = [[mainFrame webView] backForwardList];
- WebHistoryItem *item = [[backForwardList currentItem] retain];
-
- // We clear the history by setting the back/forward list's capacity to 0
- // then restoring it back and adding back the current item.
- int capacity = [backForwardList capacity];
- [backForwardList setCapacity:0];
- [backForwardList setCapacity:capacity];
- [backForwardList addItem:item];
- [backForwardList goToItem:item];
- [item release];
-}
-
-JSStringRef LayoutTestController::copyDecodedHostName(JSStringRef name)
-{
- RetainPtr<CFStringRef> nameCF(AdoptCF, JSStringCopyCFString(kCFAllocatorDefault, name));
- NSString *nameNS = (NSString *)nameCF.get();
- return JSStringCreateWithCFString((CFStringRef)[nameNS _web_decodeHostName]);
-}
-
-JSStringRef LayoutTestController::copyEncodedHostName(JSStringRef name)
-{
- RetainPtr<CFStringRef> nameCF(AdoptCF, JSStringCopyCFString(kCFAllocatorDefault, name));
- NSString *nameNS = (NSString *)nameCF.get();
- return JSStringCreateWithCFString((CFStringRef)[nameNS _web_encodeHostName]);
-}
-
-void LayoutTestController::display()
-{
- displayWebView();
-}
-
-void LayoutTestController::keepWebHistory()
-{
- if (![WebHistory optionalSharedHistory]) {
- WebHistory *history = [[WebHistory alloc] init];
- [WebHistory setOptionalSharedHistory:history];
- [history release];
- }
-}
-
-void LayoutTestController::notifyDone()
-{
- if (m_waitToDump && !topLoadingFrame && !WorkQueue::shared()->count())
- dump();
- m_waitToDump = false;
-}
-
-JSStringRef LayoutTestController::pathToLocalResource(JSContextRef context, JSStringRef url)
-{
- return JSStringRetain(url); // Do nothing on mac.
-}
-
-void LayoutTestController::queueBackNavigation(int howFarBack)
-{
- WorkQueue::shared()->queue(new BackItem(howFarBack));
-}
-
-void LayoutTestController::queueForwardNavigation(int howFarForward)
-{
- WorkQueue::shared()->queue(new ForwardItem(howFarForward));
-}
-
-void LayoutTestController::queueLoad(JSStringRef url, JSStringRef target)
-{
- RetainPtr<CFStringRef> urlCF(AdoptCF, JSStringCopyCFString(kCFAllocatorDefault, url));
- NSString *urlNS = (NSString *)urlCF.get();
-
- NSURL *nsurl = [NSURL URLWithString:urlNS relativeToURL:[[[mainFrame dataSource] response] URL]];
- NSString* nsurlString = [nsurl absoluteString];
-
- JSRetainPtr<JSStringRef> absoluteURL(Adopt, JSStringCreateWithUTF8CString([nsurlString UTF8String]));
- WorkQueue::shared()->queue(new LoadItem(absoluteURL.get(), target));
-}
-
-void LayoutTestController::queueReload()
-{
- WorkQueue::shared()->queue(new ReloadItem);
-}
-
-void LayoutTestController::queueScript(JSStringRef script)
-{
- WorkQueue::shared()->queue(new ScriptItem(script));
-}
-
-void LayoutTestController::setAcceptsEditing(bool newAcceptsEditing)
-{
- [(EditingDelegate *)[[mainFrame webView] editingDelegate] setAcceptsEditing:newAcceptsEditing];
-}
-
-void LayoutTestController::setAuthorAndUserStylesEnabled(bool flag)
-{
- [[[mainFrame webView] preferences] setAuthorAndUserStylesEnabled:flag];
-}
-
-void LayoutTestController::setCustomPolicyDelegate(bool setDelegate)
-{
- if (setDelegate)
- [[mainFrame webView] setPolicyDelegate:policyDelegate];
- else
- [[mainFrame webView] setPolicyDelegate:nil];
-}
-
-void LayoutTestController::setDatabaseQuota(unsigned long long quota)
-{
- WebSecurityOrigin *origin = [[WebSecurityOrigin alloc] initWithURL:[NSURL URLWithString:@"file:///"]];
- [origin setQuota:quota];
- [origin release];
-}
-
-void LayoutTestController::setMainFrameIsFirstResponder(bool flag)
-{
- NSView *documentView = [[mainFrame frameView] documentView];
-
- NSResponder *firstResponder = flag ? documentView : nil;
- [[[mainFrame webView] window] makeFirstResponder:firstResponder];
-
- if ([documentView isKindOfClass:[WebHTMLView class]])
- [(WebHTMLView *)documentView _updateFocusedAndActiveState];
-}
-
-void LayoutTestController::setPrivateBrowsingEnabled(bool privateBrowsingEnabled)
-{
- [[[mainFrame webView] preferences] setPrivateBrowsingEnabled:privateBrowsingEnabled];
-}
-
-void LayoutTestController::setPopupBlockingEnabled(bool popupBlockingEnabled)
-{
- [[[mainFrame webView] preferences] setJavaScriptCanOpenWindowsAutomatically:!popupBlockingEnabled];
-}
-
-void LayoutTestController::setTabKeyCyclesThroughElements(bool cycles)
-{
- [[mainFrame webView] setTabKeyCyclesThroughElements:cycles];
-}
-
-void LayoutTestController::setUseDashboardCompatibilityMode(bool flag)
-{
- [[mainFrame webView] _setDashboardBehavior:WebDashboardBehaviorUseBackwardCompatibilityMode to:flag];
-}
-
-void LayoutTestController::setUserStyleSheetEnabled(bool flag)
-{
- [[WebPreferences standardPreferences] setUserStyleSheetEnabled:flag];
-}
-
-void LayoutTestController::setUserStyleSheetLocation(JSStringRef path)
-{
- RetainPtr<CFStringRef> pathCF(AdoptCF, JSStringCopyCFString(kCFAllocatorDefault, path));
- NSURL *url = [NSURL URLWithString:(NSString *)pathCF.get()];
- [[WebPreferences standardPreferences] setUserStyleSheetLocation:url];
-}
-
-void LayoutTestController::setPersistentUserStyleSheetLocation(JSStringRef jsURL)
-{
- RetainPtr<CFStringRef> urlString(AdoptCF, JSStringCopyCFString(0, jsURL));
- ::setPersistentUserStyleSheetLocation(urlString.get());
-}
-
-void LayoutTestController::clearPersistentUserStyleSheet()
-{
- ::setPersistentUserStyleSheetLocation(0);
-}
-
-void LayoutTestController::setWindowIsKey(bool windowIsKey)
-{
- m_windowIsKey = windowIsKey;
- NSView *documentView = [[mainFrame frameView] documentView];
- if ([documentView isKindOfClass:[WebHTMLView class]])
- [(WebHTMLView *)documentView _updateFocusedAndActiveState];
-}
-
-void LayoutTestController::setSmartInsertDeleteEnabled(bool flag)
-{
- [[mainFrame webView] setSmartInsertDeleteEnabled:flag];
-}
-
-void LayoutTestController::setJavaScriptProfilingEnabled(bool profilingEnabled)
-{
- [[[mainFrame webView] preferences] setDeveloperExtrasEnabled:profilingEnabled];
- [[[mainFrame webView] inspector] setJavaScriptProfilingEnabled:profilingEnabled];
-}
-
-static const CFTimeInterval waitToDumpWatchdogInterval = 10.0;
-
-static void waitUntilDoneWatchdogFired(CFRunLoopTimerRef timer, void* info)
-{
- const char* message = "FAIL: Timed out waiting for notifyDone to be called\n";
- fprintf(stderr, "%s", message);
- fprintf(stdout, "%s", message);
- dump();
-}
-
-void LayoutTestController::setWaitToDump(bool waitUntilDone)
-{
- m_waitToDump = waitUntilDone;
- if (m_waitToDump && !waitToDumpWatchdog) {
- waitToDumpWatchdog = CFRunLoopTimerCreate(kCFAllocatorDefault, CFAbsoluteTimeGetCurrent() + waitToDumpWatchdogInterval, 0, 0, 0, waitUntilDoneWatchdogFired, NULL);
- CFRunLoopAddTimer(CFRunLoopGetCurrent(), waitToDumpWatchdog, kCFRunLoopCommonModes);
- }
-}
-
-int LayoutTestController::windowCount()
-{
- return CFArrayGetCount(openWindowsRef);
-}
-
-bool LayoutTestController::elementDoesAutoCompleteForElementWithId(JSStringRef id)
-{
- RetainPtr<CFStringRef> idCF(AdoptCF, JSStringCopyCFString(kCFAllocatorDefault, id));
- NSString *idNS = (NSString *)idCF.get();
-
- DOMElement *element = [[mainFrame DOMDocument] getElementById:idNS];
- id rep = [[mainFrame dataSource] representation];
-
- if ([rep class] == [WebHTMLRepresentation class])
- return [(WebHTMLRepresentation *)rep elementDoesAutoComplete:element];
-
- return false;
-}
-
-void LayoutTestController::execCommand(JSStringRef name, JSStringRef value)
-{
- RetainPtr<CFStringRef> nameCF(AdoptCF, JSStringCopyCFString(kCFAllocatorDefault, name));
- NSString *nameNS = (NSString *)nameCF.get();
-
- RetainPtr<CFStringRef> valueCF(AdoptCF, JSStringCopyCFString(kCFAllocatorDefault, value));
- NSString *valueNS = (NSString *)valueCF.get();
-
- [[mainFrame webView] _executeCoreCommandByName:nameNS value:valueNS];
-}
diff --git a/WebKitTools/DumpRenderTree/mac/NavigationController.h b/WebKitTools/DumpRenderTree/mac/NavigationController.h
deleted file mode 100644
index 8ee3432..0000000
--- a/WebKitTools/DumpRenderTree/mac/NavigationController.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <Cocoa/Cocoa.h>
-#import <WebKit/WebView.h>
-
-@interface NavigationController : NSObject
-{
- enum { None, Load, GoBack, ExecuteScript } pendingAction;
- NSString *pendingScript;
- NSURLRequest *pendingRequest;
-}
-- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame;
-@end
diff --git a/WebKitTools/DumpRenderTree/mac/NavigationController.m b/WebKitTools/DumpRenderTree/mac/NavigationController.m
deleted file mode 100644
index 44aed8a..0000000
--- a/WebKitTools/DumpRenderTree/mac/NavigationController.m
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <WebKit/WebFrame.h>
-#import <WebKit/WebScriptObject.h>
-#import "NavigationController.h"
-
-@implementation NavigationController
-+ (BOOL)isSelectorExcludedFromWebScript:(SEL)selector
-{
- if (selector == @selector(evaluateWebScript:afterBackForwardNavigation:))
- return NO;
- return YES;
-}
-
-+ (NSString *)webScriptNameForSelector:(SEL)selector
-{
- if (selector == @selector(evaluateWebScript:afterBackForwardNavigation:))
- return @"evalAfterBackForwardNavigation";
- return nil;
-}
-
-- (void)setPendingScript:(NSString *)script
-{
- if (script != pendingScript) {
- [pendingScript release];
- pendingScript = [script copy];
- }
-}
-
-- (void)setPendingRequest:(NSURLRequest *)request
-{
- if (request != pendingRequest) {
- [pendingRequest release];
- pendingRequest = [request copy];
- }
-}
-
-- (void)evaluateWebScript:(NSString *)script afterBackForwardNavigation:(NSString *)navigation
-{
- // Allow both arguments to be optional
- if (![script isKindOfClass:[NSString class]])
- script = @"";
- if (![navigation isKindOfClass:[NSString class]])
- navigation = @"about:blank";
-
- [self setPendingScript:script];
- [self setPendingRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:navigation]]];
- pendingAction = Load;
-}
-
-- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
-{
- if (frame == [[frame webView] mainFrame]) {
- switch (pendingAction) {
- case Load:
- pendingAction = GoBack;
- [frame loadRequest:pendingRequest];
- [self setPendingRequest:nil];
- break;
- case GoBack:
- pendingAction = ExecuteScript;
- [[frame webView] goBack];
- break;
- case ExecuteScript:
- pendingAction = None;
- [[[frame webView] windowScriptObject] evaluateWebScript:pendingScript];
- [self setPendingScript:nil];
- break;
- case None:
- default:
- break;
- }
- }
-}
-
-- (void)dealloc
-{
- [self setPendingScript:nil];
- [self setPendingRequest:nil];
- [super dealloc];
-}
-@end
-
diff --git a/WebKitTools/DumpRenderTree/mac/ObjCController.h b/WebKitTools/DumpRenderTree/mac/ObjCController.h
deleted file mode 100644
index d1d001c..0000000
--- a/WebKitTools/DumpRenderTree/mac/ObjCController.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <Foundation/Foundation.h>
-
-@class WebScriptObject;
-
-// This controller should be used to test Objective-C language features and the WebScriptObject.
-@interface ObjCController : NSObject
-{
- WebScriptObject *storedWebScriptObject;
-}
-@end
diff --git a/WebKitTools/DumpRenderTree/mac/ObjCController.m b/WebKitTools/DumpRenderTree/mac/ObjCController.m
deleted file mode 100644
index ec1ed38..0000000
--- a/WebKitTools/DumpRenderTree/mac/ObjCController.m
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "ObjCController.h"
-
-#import <JavaScriptCore/JavaScriptCore.h>
-#import <WebKit/DOMAbstractView.h>
-#import <WebKit/WebScriptObject.h>
-#import <WebKit/WebView.h>
-#import <pthread.h>
-#import <wtf/Assertions.h>
-
-static void* runJavaScriptThread(void* arg)
-{
- JSGlobalContextRef ctx = JSGlobalContextCreate(0);
- JSStringRef scriptRef = JSStringCreateWithUTF8CString("'Hello World!'");
-
- JSValueRef exception = 0;
- JSEvaluateScript(ctx, scriptRef, 0, 0, 1, &exception);
- ASSERT(!exception);
-
- JSGlobalContextRelease(ctx);
- JSStringRelease(scriptRef);
-
- return 0;
-}
-
-@implementation ObjCController
-
-+ (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector
-{
- if (0
- || aSelector == @selector(classNameOf:)
- || aSelector == @selector(objectOfClass:)
- || aSelector == @selector(identityIsEqual::)
- || aSelector == @selector(longLongRoundTrip:)
- || aSelector == @selector(unsignedLongLongRoundTrip:)
- || aSelector == @selector(testWrapperRoundTripping:)
- || aSelector == @selector(accessStoredWebScriptObject)
- || aSelector == @selector(storeWebScriptObject:)
- || aSelector == @selector(testValueForKey)
- || aSelector == @selector(testArray)
- )
- return NO;
- return YES;
-}
-
-+ (NSString *)webScriptNameForSelector:(SEL)aSelector
-{
- if (aSelector == @selector(classNameOf:))
- return @"className";
- if (aSelector == @selector(objectOfClass:))
- return @"objectOfClass";
- if (aSelector == @selector(identityIsEqual::))
- return @"identityIsEqual";
- if (aSelector == @selector(longLongRoundTrip:))
- return @"longLongRoundTrip";
- if (aSelector == @selector(unsignedLongLongRoundTrip:))
- return @"unsignedLongLongRoundTrip";
- if (aSelector == @selector(testWrapperRoundTripping:))
- return @"testWrapperRoundTripping";
- if (aSelector == @selector(storeWebScriptObject:))
- return @"storeWebScriptObject";
- if (aSelector == @selector(testValueForKey))
- return @"testValueForKey";
- if (aSelector == @selector(testArray))
- return @"testArray";
-
- return nil;
-}
-
-- (NSString *)classNameOf:(id)object
-{
- if (!object)
- return @"nil";
- return NSStringFromClass([object class]);
-}
-
-- (id)objectOfClass:(NSString *)aClass
-{
- if ([aClass isEqualToString:@"NSNull"])
- return [NSNull null];
- if ([aClass isEqualToString:@"WebUndefined"])
- return [WebUndefined undefined];
- if ([aClass isEqualToString:@"NSCFBoolean"])
- return [NSNumber numberWithBool:true];
- if ([aClass isEqualToString:@"NSCFNumber"])
- return [NSNumber numberWithInt:1];
- if ([aClass isEqualToString:@"NSCFString"])
- return @"";
- if ([aClass isEqualToString:@"WebScriptObject"])
- return self;
- if ([aClass isEqualToString:@"NSArray"])
- return [NSArray array];
-
- return nil;
-}
-
-- (BOOL)identityIsEqual:(WebScriptObject *)a :(WebScriptObject *)b
-{
- if ([a isKindOfClass:[NSString class]] && [b isKindOfClass:[NSString class]])
- return [(NSString *)a isEqualToString:(NSString *)b];
- return a == b;
-}
-
-- (long long)longLongRoundTrip:(long long)num
-{
- return num;
-}
-
-- (unsigned long long)unsignedLongLongRoundTrip:(unsigned long long)num
-{
- return num;
-}
-
-- (void)testValueForKey
-{
- ASSERT(storedWebScriptObject);
-
- @try {
- [storedWebScriptObject valueForKey:@"ThisKeyDoesNotExist"];
- } @catch (NSException *e) {
- }
-
- pthread_t pthread;
- pthread_create(&pthread, 0, &runJavaScriptThread, 0);
- pthread_join(pthread, 0);
-}
-
-- (BOOL)testWrapperRoundTripping:(WebScriptObject *)webScriptObject
-{
- JSObjectRef jsObject = [webScriptObject JSObject];
-
- if (!jsObject)
- return false;
-
- if (!webScriptObject)
- return false;
-
- if ([[webScriptObject evaluateWebScript:@"({ })"] class] != [webScriptObject class])
- return false;
-
- [webScriptObject setValue:[NSNumber numberWithInt:666] forKey:@"key"];
- if (![[webScriptObject valueForKey:@"key"] isKindOfClass:[NSNumber class]] ||
- ![[webScriptObject valueForKey:@"key"] isEqualToNumber:[NSNumber numberWithInt:666]])
- return false;
-
- [webScriptObject removeWebScriptKey:@"key"];
- @try {
- if ([webScriptObject valueForKey:@"key"])
- return false;
- } @catch(NSException *exception) {
- // NSObject throws an exception if the key doesn't exist.
- }
-
- [webScriptObject setWebScriptValueAtIndex:0 value:webScriptObject];
- if ([webScriptObject webScriptValueAtIndex:0] != webScriptObject)
- return false;
-
- if ([[webScriptObject stringRepresentation] isEqualToString:@"[Object object]"])
- return false;
-
- if ([webScriptObject callWebScriptMethod:@"returnThis" withArguments:nil] != webScriptObject)
- return false;
-
- return true;
-}
-
-- (void)accessStoredWebScriptObject
-{
-#if !ASSERT_DISABLED
- BOOL isWindowObject = [storedWebScriptObject isKindOfClass:[DOMAbstractView class]];
-#endif
- JSObjectRef jsObject = [storedWebScriptObject JSObject];
- ASSERT((jsObject && isWindowObject) || (!jsObject && !isWindowObject));
-
- [storedWebScriptObject callWebScriptMethod:@"" withArguments:nil];
- [storedWebScriptObject evaluateWebScript:@""];
- [storedWebScriptObject setValue:[WebUndefined undefined] forKey:@"key"];
- [storedWebScriptObject valueForKey:@"key"];
- [storedWebScriptObject removeWebScriptKey:@"key"];
- [storedWebScriptObject stringRepresentation];
- [storedWebScriptObject webScriptValueAtIndex:0];
- [storedWebScriptObject setWebScriptValueAtIndex:0 value:[WebUndefined undefined]];
- [storedWebScriptObject setException:@"exception"];
-}
-
-- (void)storeWebScriptObject:(WebScriptObject *)webScriptObject
-{
- if (webScriptObject == storedWebScriptObject)
- return;
-
- [storedWebScriptObject release];
- storedWebScriptObject = [webScriptObject retain];
-}
-
-- (NSArray *)testArray
-{
- return [NSArray array];
-}
-
-- (void)dealloc
-{
- [storedWebScriptObject release];
- [super dealloc];
-}
-
-- (id)invokeUndefinedMethodFromWebScript:(NSString *)name withArguments:(NSArray *)args
-{
- // FIXME: Perhaps we should log that this has been called.
- return nil;
-}
-
-@end
diff --git a/WebKitTools/DumpRenderTree/mac/ObjCPlugin.h b/WebKitTools/DumpRenderTree/mac/ObjCPlugin.h
deleted file mode 100644
index a6d3e50..0000000
--- a/WebKitTools/DumpRenderTree/mac/ObjCPlugin.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#import <Cocoa/Cocoa.h>
-
-
-@interface ObjCPlugin : NSObject
-{
- BOOL throwOnDealloc;
-}
-
-- (void)removeBridgeRestrictions:(id)container;
-
-@end
diff --git a/WebKitTools/DumpRenderTree/mac/ObjCPlugin.m b/WebKitTools/DumpRenderTree/mac/ObjCPlugin.m
deleted file mode 100644
index 3ec3e74..0000000
--- a/WebKitTools/DumpRenderTree/mac/ObjCPlugin.m
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
- * Copyright (C) 2006 James G. Speth (speth@end.com)
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#import "ObjCPlugin.h"
-#import <objc/objc-runtime.h>
-#import <WebKit/WebKit.h>
-
-
-// === NSObject category to expose almost everything to JavaScript ===
-
-// Warning: this class introduces huge security weaknesses, and should only be used
-// for testing inside of DumpRenderTree, and only with trusted code. By default, it has
-// the same restrictive behavior as the standard WebKit setup. However, scripts can use the
-// plugin's removeBridgeRestrictions: method to open up almost total access to the Cocoa
-// frameworks.
-
-static BOOL _allowsScriptsFullAccess = NO;
-
-@interface NSObject (ObjCScriptAccess)
-
-+ (void)setAllowsScriptsFullAccess:(BOOL)value;
-+ (BOOL)allowsScriptsFullAccess;
-
-@end
-
-@implementation NSObject (ObjCScriptAccess)
-
-+ (void)setAllowsScriptsFullAccess:(BOOL)value
-{
- _allowsScriptsFullAccess = value;
-}
-
-+ (BOOL)allowsScriptsFullAccess
-{
- return _allowsScriptsFullAccess;
-}
-
-+ (BOOL)isSelectorExcludedFromWebScript:(SEL)selector
-{
- return !_allowsScriptsFullAccess;
-}
-
-+ (NSString *)webScriptNameForSelector:(SEL)selector
-{
- return nil;
-}
-
-@end
-
-@interface JSObjC : NSObject {
-}
-
-// expose some useful objc functions to the scripting environment
-- (id)lookUpClass:(NSString *)name;
-- (void)log:(NSString *)message;
-- (id)retainObject:(id)obj;
-- (id)classOfObject:(id)obj;
-- (NSString *)classNameOfObject:(id)obj;
-
-@end
-
-@implementation JSObjC
-
-+ (BOOL)isSelectorExcludedFromWebScript:(SEL)selector
-{
- return NO;
-}
-
-+ (NSString *)webScriptNameForSelector:(SEL)selector
-{
- return nil;
-}
-
-- (id)invokeDefaultMethodWithArguments:(NSArray *)args
-{
- // this is a useful shortcut for accessing objective-c classes from the scripting
- // environment, e.g. 'var myObject = objc("NSObject").alloc().init();'
- if ([args count] == 1)
- return [self lookUpClass:[args objectAtIndex:0]];
- return nil;
-}
-
-- (id)lookUpClass:(NSString *)name
-{
- return NSClassFromString(name);
-}
-
-- (void)log:(NSString *)message
-{
- NSLog(@"%@", message);
-}
-
-- (id)retainObject:(id)obj
-{
- return [obj retain];
-}
-
-- (id)classOfObject:(id)obj
-{
- return (id)[obj class];
-}
-
-- (NSString *)classNameOfObject:(id)obj
-{
- return [obj className];
-}
-
-@end
-
-@implementation ObjCPlugin
-
-+ (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector
-{
- if (aSelector == @selector(removeBridgeRestrictions:))
- return NO;
-
- if (aSelector == @selector(echo:))
- return NO;
-
- if (aSelector == @selector(throwIfArgumentIsNotHello:))
- return NO;
-
- return YES;
-}
-
-+ (NSString *)webScriptNameForSelector:(SEL)aSelector
-{
- if (aSelector == @selector(echo:))
- return @"echo";
-
- if (aSelector == @selector(throwIfArgumentIsNotHello:))
- return @"throwIfArgumentIsNotHello";
-
- return nil;
-}
-
-+ (NSString *)webScriptNameForKey:(const char *)key
-{
- if (strcmp(key, "throwOnDealloc") == 0)
- return @"throwOnDealloc";
-
- return nil;
-}
-
-+ (BOOL)isKeyExcludedFromWebScript:(const char *)key
-{
- if (strcmp(key, "throwOnDealloc") == 0)
- return NO;
-
- return YES;
-}
-
-- (void)removeBridgeRestrictions:(id)container
-{
- // let scripts invoke any selector
- [NSObject setAllowsScriptsFullAccess:YES];
-
- // store a JSObjC instance into the provided container
- JSObjC *objc = [[JSObjC alloc] init];
- [container setValue:objc forKey:@"objc"];
- [objc release];
-}
-
-- (id)echo:(id)obj
-{
- return obj;
-}
-
-- (void)throwIfArgumentIsNotHello:(NSString *)str
-{
- if (![str isEqualToString:@"Hello"])
- [WebScriptObject throwException:[NSString stringWithFormat:@"%@ != Hello", str]];
-}
-
-- (void)dealloc
-{
- if (throwOnDealloc)
- [WebScriptObject throwException:@"Throwing exception on dealloc of ObjCPlugin"];
-
- [super dealloc];
-}
-
-@end
diff --git a/WebKitTools/DumpRenderTree/mac/ObjCPluginFunction.h b/WebKitTools/DumpRenderTree/mac/ObjCPluginFunction.h
deleted file mode 100644
index 1e81b21..0000000
--- a/WebKitTools/DumpRenderTree/mac/ObjCPluginFunction.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-
-#import <Cocoa/Cocoa.h>
-
-
-@interface ObjCPluginFunction : NSObject
-{
-}
-
-@end
diff --git a/WebKitTools/DumpRenderTree/mac/ObjCPluginFunction.m b/WebKitTools/DumpRenderTree/mac/ObjCPluginFunction.m
deleted file mode 100644
index 5cd16f8..0000000
--- a/WebKitTools/DumpRenderTree/mac/ObjCPluginFunction.m
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-
-#import "ObjCPluginFunction.h"
-
-
-@implementation ObjCPluginFunction
-
-- (id)invokeDefaultMethodWithArguments:(NSArray *)args
-{
- return @"test";
-}
-
-@end
diff --git a/WebKitTools/DumpRenderTree/mac/PixelDumpSupportMac.mm b/WebKitTools/DumpRenderTree/mac/PixelDumpSupportMac.mm
deleted file mode 100644
index f4191e5..0000000
--- a/WebKitTools/DumpRenderTree/mac/PixelDumpSupportMac.mm
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- * Copyright (C) 2005, 2006, 2007 Apple Inc. All rights reserved.
- * (C) 2007 Graham Dennis (graham.dennis@gmail.com)
- * (C) 2007 Eric Seidel <eric@webkit.org>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "DumpRenderTree.h"
-#include "PixelDumpSupport.h"
-#include "PixelDumpSupportCG.h"
-
-#include "LayoutTestController.h"
-#include <CoreGraphics/CGBitmapContext.h>
-#ifndef BUILDING_ON_LEOPARD
-#include <OpenGL/OpenGL.h>
-#include <OpenGL/CGLMacro.h>
-#endif
-#include <wtf/Assertions.h>
-#include <wtf/RefPtr.h>
-
-#import <WebKit/WebDocumentPrivate.h>
-#import <WebKit/WebKit.h>
-
-// To ensure pixel tests consistency, we need to always render in the same colorspace.
-// Unfortunately, because of AppKit / WebKit constraints, we can't render directly in the colorspace of our choice.
-// This implies we have to temporarily change the profile of the main display to the colorspace we want to render into.
-// We also need to make sure the CGBitmapContext we return is in that same colorspace.
-
-#define PROFILE_PATH "/System/Library/ColorSync/Profiles/Generic RGB Profile.icc" // FIXME: This cannot be more than CS_MAX_PATH (256 characters)
-
-static CMProfileLocation sInitialProfileLocation; // The locType field is initialized to 0 which is the same as cmNoProfileBase
-
-void restoreMainDisplayColorProfile(int ignored)
-{
- // This is used as a signal handler, and thus the calls into ColorSync are unsafe
- // But we might as well try to restore the user's color profile, we're going down anyway...
- if (sInitialProfileLocation.locType != cmNoProfileBase) {
- const CMDeviceScope scope = { kCFPreferencesCurrentUser, kCFPreferencesCurrentHost };
- int error = CMSetDeviceProfile(cmDisplayDeviceClass, (CMDeviceID)kCGDirectMainDisplay, &scope, cmDefaultProfileID, &sInitialProfileLocation);
- if (error)
- fprintf(stderr, "Failed to restore initial color profile for main display! Open System Preferences > Displays > Color and manually re-select the profile. (Error: %i)", error);
- sInitialProfileLocation.locType = cmNoProfileBase;
- }
-}
-
-void setupMainDisplayColorProfile()
-{
- const CMDeviceScope scope = { kCFPreferencesCurrentUser, kCFPreferencesCurrentHost };
- int error;
-
- CMProfileRef profile = 0;
- error = CMGetProfileByAVID((CMDisplayIDType)kCGDirectMainDisplay, &profile);
- if (!error) {
- UInt32 size = sizeof(CMProfileLocation);
- error = NCMGetProfileLocation(profile, &sInitialProfileLocation, &size);
- CMCloseProfile(profile);
- }
- if (error) {
- fprintf(stderr, "Failed to retrieve current color profile for main display, thus it won't be changed. Many pixel tests may fail as a result. (Error: %i)", error);
- sInitialProfileLocation.locType = cmNoProfileBase;
- return;
- }
-
- CMProfileLocation location;
- location.locType = cmPathBasedProfile;
- strcpy(location.u.pathLoc.path, PROFILE_PATH);
- error = CMSetDeviceProfile(cmDisplayDeviceClass, (CMDeviceID)kCGDirectMainDisplay, &scope, cmDefaultProfileID, &location);
- if (error) {
- fprintf(stderr, "Failed to set color profile for main display! Many pixel tests may fail as a result. (Error: %i)", error);
- sInitialProfileLocation.locType = cmNoProfileBase;
- return;
- }
-
- // Other signals are handled in installSignalHandlers() which also calls restoreMainDisplayColorProfile()
- signal(SIGINT, restoreMainDisplayColorProfile);
- signal(SIGHUP, restoreMainDisplayColorProfile);
- signal(SIGTERM, restoreMainDisplayColorProfile);
-
- fprintf(stderr, "\n\nWARNING: Temporarily changing the main display color profile to \"%s\": the colors on your screen will change for the duration of the testing.\n", PROFILE_PATH);
- fprintf(stderr, "This allows the WebKit pixel-based regression tests to have consistent color values across all machines.\n");
-}
-
-PassRefPtr<BitmapContext> createBitmapContextFromWebView(bool onscreen, bool incrementalRepaint, bool sweepHorizontally, bool drawSelectionRect)
-{
- WebView* view = [mainFrame webView];
- NSSize webViewSize = [view frame].size;
- size_t pixelsWide = static_cast<size_t>(webViewSize.width);
- size_t pixelsHigh = static_cast<size_t>(webViewSize.height);
- size_t rowBytes = (4 * pixelsWide + 63) & ~63; // Use a multiple of 64 bytes to improve CG performance
-
- void *buffer = calloc(pixelsHigh, rowBytes);
- if (!buffer)
- return 0;
-
- static CGColorSpaceRef colorSpace = 0;
- if (!colorSpace) {
- CMProfileLocation location;
- location.locType = cmPathBasedProfile;
- strcpy(location.u.pathLoc.path, PROFILE_PATH);
- CMProfileRef profile;
- if (CMOpenProfile(&profile, &location) == noErr) {
- colorSpace = CGColorSpaceCreateWithPlatformColorSpace(profile);
- CMCloseProfile(profile);
- }
- }
-
- CGContextRef context = CGBitmapContextCreate(buffer, pixelsWide, pixelsHigh, 8, rowBytes, colorSpace, kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host); // Use ARGB8 on PPC or BGRA8 on X86 to improve CG performance
- if (!context) {
- free(buffer);
- return 0;
- }
-
- // The BitmapContext keeps the CGContextRef and the pixel buffer alive
- RefPtr<BitmapContext> bitmapContext = BitmapContext::createByAdoptingBitmapAndContext(buffer, context);
-
- NSGraphicsContext *nsContext = [NSGraphicsContext graphicsContextWithGraphicsPort:context flipped:NO];
- ASSERT(nsContext);
-
- if (incrementalRepaint) {
- if (sweepHorizontally) {
- for (NSRect column = NSMakeRect(0, 0, 1, webViewSize.height); column.origin.x < webViewSize.width; column.origin.x++)
- [view displayRectIgnoringOpacity:column inContext:nsContext];
- } else {
- for (NSRect line = NSMakeRect(0, 0, webViewSize.width, 1); line.origin.y < webViewSize.height; line.origin.y++)
- [view displayRectIgnoringOpacity:line inContext:nsContext];
- }
- } else {
- if (onscreen) {
-#ifdef BUILDING_ON_LEOPARD
- // Ask the window server to provide us a composited version of the *real* window content including surfaces (i.e. OpenGL content)
- // Note that the returned image might differ very slightly from the window backing because of dithering artifacts in the window server compositor
-
- CGImageRef image = CGWindowListCreateImage(CGRectNull, kCGWindowListOptionIncludingWindow, [[view window] windowNumber], kCGWindowImageBoundsIgnoreFraming | kCGWindowImageShouldBeOpaque);
- CGContextDrawImage(context, CGRectMake(0, 0, CGImageGetWidth(image), CGImageGetHeight(image)), image);
- CGImageRelease(image);
-#else
- // On 10.4 and earlier, we have to move the window temporarily "onscreen" and read directly from the display framebuffer using OpenGL
- // In this code path, we need to ensure the window is above any other window or captured result will be corrupted
-
- NSWindow *window = [view window];
- int oldLevel = [window level];
- NSRect oldFrame = [window frame];
-
- NSRect newFrame = [[[NSScreen screens] objectAtIndex:0] frame];
- newFrame = NSMakeRect(newFrame.origin.x + (newFrame.size.width - oldFrame.size.width) / 2, newFrame.origin.y + (newFrame.size.height - oldFrame.size.height) / 2, oldFrame.size.width, oldFrame.size.height);
- [window setLevel:NSScreenSaverWindowLevel];
- [window setFrame:newFrame display:NO animate:NO];
-
- CGRect rect = CGRectMake(newFrame.origin.x, newFrame.origin.y, webViewSize.width, webViewSize.height);
- CGDirectDisplayID displayID;
- CGDisplayCount count;
- if (CGGetDisplaysWithRect(rect, 1, &displayID, &count) == kCGErrorSuccess) {
- CGRect bounds = CGDisplayBounds(displayID);
- rect.origin.x -= bounds.origin.x;
- rect.origin.y -= bounds.origin.y;
-
- CGLPixelFormatAttribute attributes[] = {kCGLPFAAccelerated, kCGLPFANoRecovery, kCGLPFAFullScreen, kCGLPFADisplayMask, (CGLPixelFormatAttribute)CGDisplayIDToOpenGLDisplayMask(displayID), (CGLPixelFormatAttribute)0};
- CGLPixelFormatObj pixelFormat;
- GLint num;
- if (CGLChoosePixelFormat(attributes, &pixelFormat, &num) == kCGLNoError) {
- CGLContextObj cgl_ctx;
- if (CGLCreateContext(pixelFormat, 0, &cgl_ctx) == kCGLNoError) {
- if (CGLSetFullScreen(cgl_ctx) == kCGLNoError) {
- void *flipBuffer = calloc(pixelsHigh, rowBytes);
- if (flipBuffer) {
- glPixelStorei(GL_PACK_ROW_LENGTH, rowBytes / 4);
- glPixelStorei(GL_PACK_ALIGNMENT, 4);
-#if __BIG_ENDIAN__
- glReadPixels(rect.origin.x, rect.origin.y, rect.size.width, rect.size.height, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, flipBuffer);
-#else
- glReadPixels(rect.origin.x, rect.origin.y, rect.size.width, rect.size.height, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8_REV, flipBuffer);
-#endif
- if (!glGetError()) {
- for(size_t i = 0; i < pixelsHigh; ++i)
- bcopy((char*)flipBuffer + rowBytes * i, (char*)buffer + rowBytes * (pixelsHigh - i - 1), pixelsWide * 4);
- }
-
- free(flipBuffer);
- }
- }
- CGLDestroyContext(cgl_ctx);
- }
- CGLDestroyPixelFormat(pixelFormat);
- }
- }
-
- [window setFrame:oldFrame display:NO animate:NO];
- [window setLevel:oldLevel];
-#endif
- } else {
- // Grab directly the contents of the window backing buffer (this ignores any surfaces on the window)
- // FIXME: This path is suboptimal: data is read from window backing store, converted to RGB8 then drawn again into an RGBA8 bitmap
-
- [view displayIfNeeded];
- [view lockFocus];
- NSBitmapImageRep *imageRep = [[[NSBitmapImageRep alloc] initWithFocusedViewRect:[view frame]] autorelease];
- [view unlockFocus];
-
- RetainPtr<NSGraphicsContext> savedContext = [NSGraphicsContext currentContext];
- [NSGraphicsContext setCurrentContext:nsContext];
- [imageRep draw];
- [NSGraphicsContext setCurrentContext:savedContext.get()];
- }
- }
-
- if (drawSelectionRect) {
- NSView *documentView = [[mainFrame frameView] documentView];
- ASSERT([documentView conformsToProtocol:@protocol(WebDocumentSelection)]);
- NSRect rect = [documentView convertRect:[(id <WebDocumentSelection>)documentView selectionRect] fromView:nil];
- CGContextSaveGState(context);
- CGContextSetLineWidth(context, 1.0);
- CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0);
- CGContextStrokeRect(context, CGRectMake(rect.origin.x, rect.origin.y, rect.size.width, rect.size.height));
- CGContextRestoreGState(context);
- }
-
- return bitmapContext.release();
-}
diff --git a/WebKitTools/DumpRenderTree/mac/PolicyDelegate.h b/WebKitTools/DumpRenderTree/mac/PolicyDelegate.h
deleted file mode 100644
index f8bce68..0000000
--- a/WebKitTools/DumpRenderTree/mac/PolicyDelegate.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <Cocoa/Cocoa.h>
-
-
-@interface PolicyDelegate : NSObject {
-}
-
-@end
diff --git a/WebKitTools/DumpRenderTree/mac/PolicyDelegate.mm b/WebKitTools/DumpRenderTree/mac/PolicyDelegate.mm
deleted file mode 100644
index fc4ac74..0000000
--- a/WebKitTools/DumpRenderTree/mac/PolicyDelegate.mm
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "PolicyDelegate.h"
-
-#import "DumpRenderTree.h"
-#import "DumpRenderTreeDraggingInfo.h"
-#import <WebKit/WebPolicyDelegate.h>
-
-@implementation PolicyDelegate
-- (void)webView:(WebView *)webView decidePolicyForNavigationAction:(NSDictionary *)actionInformation
- request:(NSURLRequest *)request
- frame:(WebFrame *)frame
- decisionListener:(id<WebPolicyDecisionListener>)listener
-{
- printf("Policy delegate: attempt to load %s\n", [[[request URL] absoluteString] UTF8String]);
- [listener ignore];
-}
-
-@end
diff --git a/WebKitTools/DumpRenderTree/mac/ResourceLoadDelegate.h b/WebKitTools/DumpRenderTree/mac/ResourceLoadDelegate.h
deleted file mode 100644
index 0c4618e..0000000
--- a/WebKitTools/DumpRenderTree/mac/ResourceLoadDelegate.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <Cocoa/Cocoa.h>
-
-
-@interface ResourceLoadDelegate : NSObject {
-}
-
-@end
diff --git a/WebKitTools/DumpRenderTree/mac/ResourceLoadDelegate.mm b/WebKitTools/DumpRenderTree/mac/ResourceLoadDelegate.mm
deleted file mode 100644
index 5d2e2b4..0000000
--- a/WebKitTools/DumpRenderTree/mac/ResourceLoadDelegate.mm
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * Copyright (C) 2007, Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "ResourceLoadDelegate.h"
-
-#import "DumpRenderTree.h"
-#import "LayoutTestController.h"
-#import <WebKit/WebKit.h>
-#import <WebKit/WebTypesInternal.h>
-#import <wtf/Assertions.h>
-
-@interface NSURL (DRTExtras)
-- (NSString *)_drt_descriptionSuitableForTestResult;
-@end
-
-@interface NSError (DRTExtras)
-- (NSString *)_drt_descriptionSuitableForTestResult;
-@end
-
-@interface NSURLResponse (DRTExtras)
-- (NSString *)_drt_descriptionSuitableForTestResult;
-@end
-
-@interface NSURLRequest (DRTExtras)
-- (NSString *)_drt_descriptionSuitableForTestResult;
-@end
-
-@implementation NSError (DRTExtras)
-- (NSString *)_drt_descriptionSuitableForTestResult
-{
- NSString *str = [NSString stringWithFormat:@"<NSError domain %@, code %d", [self domain], [self code]];
- NSURL *failingURL;
-
- if ((failingURL = [[self userInfo] objectForKey:@"NSErrorFailingURLKey"]))
- str = [str stringByAppendingFormat:@", failing URL \"%@\"", [failingURL _drt_descriptionSuitableForTestResult]];
-
- str = [str stringByAppendingFormat:@">"];
-
- return str;
-}
-
-@end
-
-@implementation NSURL (DRTExtras)
-
-- (NSString *)_drt_descriptionSuitableForTestResult
-{
- if (![self isFileURL])
- return [self absoluteString];
-
- WebDataSource *dataSource = [mainFrame dataSource];
- if (!dataSource)
- dataSource = [mainFrame provisionalDataSource];
-
- NSString *basePath = [[[[dataSource request] URL] path] stringByDeletingLastPathComponent];
-
- return [[self path] substringFromIndex:[basePath length] + 1];
-}
-
-@end
-
-@implementation NSURLResponse (DRTExtras)
-
-- (NSString *)_drt_descriptionSuitableForTestResult
-{
- return [NSString stringWithFormat:@"<NSURLResponse %@>", [[self URL] _drt_descriptionSuitableForTestResult]];
-}
-
-@end
-
-@implementation NSURLRequest (DRTExtras)
-
-- (NSString *)_drt_descriptionSuitableForTestResult
-{
- return [NSString stringWithFormat:@"<NSURLRequest %@>", [[self URL] _drt_descriptionSuitableForTestResult]];
-}
-
-@end
-
-@implementation ResourceLoadDelegate
-
-- webView: (WebView *)wv identifierForInitialRequest: (NSURLRequest *)request fromDataSource: (WebDataSource *)dataSource
-{
- ASSERT([[dataSource webFrame] dataSource] || [[dataSource webFrame] provisionalDataSource]);
-
- if (!done && gLayoutTestController->dumpResourceLoadCallbacks())
- return [[request URL] _drt_descriptionSuitableForTestResult];
-
- return @"<unknown>";
-}
-
--(NSURLRequest *)webView: (WebView *)wv resource:identifier willSendRequest: (NSURLRequest *)newRequest redirectResponse:(NSURLResponse *)redirectResponse fromDataSource:(WebDataSource *)dataSource
-{
- if (!done && gLayoutTestController->dumpResourceLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"%@ - willSendRequest %@ redirectResponse %@", identifier, [newRequest _drt_descriptionSuitableForTestResult],
- [redirectResponse _drt_descriptionSuitableForTestResult]];
- printf("%s\n", [string UTF8String]);
- }
-
- NSURL *url = [newRequest URL];
- NSString *host = [url host];
- if (host
- && (NSOrderedSame == [[url scheme] caseInsensitiveCompare:@"http"] || NSOrderedSame == [[url scheme] caseInsensitiveCompare:@"https"])
- && NSOrderedSame != [host compare:@"127.0.0.1"]
- && NSOrderedSame != [host compare:@"255.255.255.255"] // used in some tests that expect to get back an error
- && NSOrderedSame != [host caseInsensitiveCompare:@"localhost"]) {
- printf("Blocked access to external URL %s\n", [[url absoluteString] cStringUsingEncoding:NSUTF8StringEncoding]);
- return nil;
- }
-
- if (disallowedURLs && CFSetContainsValue(disallowedURLs, url))
- return nil;
-
- return newRequest;
-}
-
-- (void)webView:(WebView *)wv resource:(id)identifier didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge fromDataSource:(WebDataSource *)dataSource
-{
-}
-
-- (void)webView:(WebView *)wv resource:(id)identifier didCancelAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge fromDataSource:(WebDataSource *)dataSource
-{
-}
-
--(void)webView: (WebView *)wv resource:identifier didReceiveResponse: (NSURLResponse *)response fromDataSource:(WebDataSource *)dataSource
-{
- if (!done && gLayoutTestController->dumpResourceLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"%@ - didReceiveResponse %@", identifier, [response _drt_descriptionSuitableForTestResult]];
- printf("%s\n", [string UTF8String]);
- }
-}
-
--(void)webView: (WebView *)wv resource:identifier didReceiveContentLength: (NSInteger)length fromDataSource:(WebDataSource *)dataSource
-{
-}
-
--(void)webView: (WebView *)wv resource:identifier didFinishLoadingFromDataSource:(WebDataSource *)dataSource
-{
- if (!done && gLayoutTestController->dumpResourceLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"%@ - didFinishLoading", identifier];
- printf("%s\n", [string UTF8String]);
- }
-}
-
--(void)webView: (WebView *)wv resource:identifier didFailLoadingWithError:(NSError *)error fromDataSource:(WebDataSource *)dataSource
-{
- if (!done && gLayoutTestController->dumpResourceLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"%@ - didFailLoadingWithError: %@", identifier, [error _drt_descriptionSuitableForTestResult]];
- printf("%s\n", [string UTF8String]);
- }
-}
-
-- (void)webView: (WebView *)wv plugInFailedWithError:(NSError *)error dataSource:(WebDataSource *)dataSource
-{
- // The call to -display here simulates the "Plug-in not found" sheet that Safari shows.
- // It is used for platform/mac/plugins/update-widget-from-style-recalc.html
- [wv display];
-}
-
--(NSCachedURLResponse *) webView: (WebView *)wv resource:(id)identifier willCacheResponse:(NSCachedURLResponse *)response fromDataSource:(WebDataSource *)dataSource
-{
- if (!done && gLayoutTestController->dumpResourceLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"%@ - willCacheResponse: called", identifier];
- printf("%s\n", [string UTF8String]);
- }
- return response;
-}
-
-@end
diff --git a/WebKitTools/DumpRenderTree/mac/TextInputController.h b/WebKitTools/DumpRenderTree/mac/TextInputController.h
deleted file mode 100644
index 767e72f..0000000
--- a/WebKitTools/DumpRenderTree/mac/TextInputController.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <Foundation/Foundation.h>
-
-@class WebView;
-@class WebHTMLView;
-@class WebScriptObject;
-
-@interface TextInputController : NSObject
-{
- WebView *webView;
- WebHTMLView *inputMethodView;
- WebScriptObject *inputMethodHandler;
-}
-- (id)initWithWebView:(WebView *)view;
-@end
diff --git a/WebKitTools/DumpRenderTree/mac/TextInputController.m b/WebKitTools/DumpRenderTree/mac/TextInputController.m
deleted file mode 100644
index 88b480b..0000000
--- a/WebKitTools/DumpRenderTree/mac/TextInputController.m
+++ /dev/null
@@ -1,423 +0,0 @@
-/*
- * Copyright (C) 2005, 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "TextInputController.h"
-
-#import <AppKit/NSInputManager.h>
-#import <WebKit/WebDocument.h>
-#import <WebKit/WebFrame.h>
-#import <WebKit/WebFrameView.h>
-#import <WebKit/WebHTMLViewPrivate.h>
-#import <WebKit/WebScriptObject.h>
-#import <WebKit/WebView.h>
-
-@interface TextInputController (DumpRenderTreeInputMethodHandler)
-- (BOOL)interpretKeyEvents:(NSArray *)eventArray withSender:(WebHTMLView *)sender;
-@end
-
-@interface WebHTMLView (DumpRenderTreeInputMethodHandler)
-- (void)interpretKeyEvents:(NSArray *)eventArray;
-@end
-
-@interface WebHTMLView (WebKitSecretsTextInputControllerIsAwareOf)
-- (WebFrame *)_frame;
-@end
-
-@implementation WebHTMLView (DumpRenderTreeInputMethodHandler)
-- (void)interpretKeyEvents:(NSArray *)eventArray
-{
- WebScriptObject *obj = [[self _frame] windowObject];
- TextInputController *tic = [obj valueForKey:@"textInputController"];
- if (![tic interpretKeyEvents:eventArray withSender:self])
- [super interpretKeyEvents:eventArray];
-}
-@end
-
-@implementation NSMutableAttributedString (TextInputController)
-
-+ (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector
-{
- if (aSelector == @selector(string)
- || aSelector == @selector(getLength)
- || aSelector == @selector(attributeNamesAtIndex:)
- || aSelector == @selector(valueOfAttribute:atIndex:)
- || aSelector == @selector(addAttribute:value:)
- || aSelector == @selector(addAttribute:value:from:length:)
- || aSelector == @selector(addColorAttribute:red:green:blue:alpha:)
- || aSelector == @selector(addColorAttribute:red:green:blue:alpha:from:length:)
- || aSelector == @selector(addFontAttribute:fontName:size:)
- || aSelector == @selector(addFontAttribute:fontName:size:from:length:))
- return NO;
- return YES;
-}
-
-+ (NSString *)webScriptNameForSelector:(SEL)aSelector
-{
- if (aSelector == @selector(getLength))
- return @"length";
- if (aSelector == @selector(attributeNamesAtIndex:))
- return @"getAttributeNamesAtIndex";
- if (aSelector == @selector(valueOfAttribute:atIndex:))
- return @"getAttributeValueAtIndex";
- if (aSelector == @selector(addAttribute:value:))
- return @"addAttribute";
- if (aSelector == @selector(addAttribute:value:from:length:))
- return @"addAttributeForRange";
- if (aSelector == @selector(addColorAttribute:red:green:blue:alpha:))
- return @"addColorAttribute";
- if (aSelector == @selector(addColorAttribute:red:green:blue:alpha:from:length:))
- return @"addColorAttributeForRange";
- if (aSelector == @selector(addFontAttribute:fontName:size:))
- return @"addFontAttribute";
- if (aSelector == @selector(addFontAttribute:fontName:size:from:length:))
- return @"addFontAttributeForRange";
-
- return nil;
-}
-
-- (int)getLength
-{
- return (int)[self length];
-}
-
-- (NSArray *)attributeNamesAtIndex:(int)index
-{
- NSDictionary *attributes = [self attributesAtIndex:(unsigned)index effectiveRange:nil];
- return [attributes allKeys];
-}
-
-- (id)valueOfAttribute:(NSString *)attrName atIndex:(int)index
-{
- return [self attribute:attrName atIndex:(unsigned)index effectiveRange:nil];
-}
-
-- (void)addAttribute:(NSString *)attrName value:(id)value
-{
- [self addAttribute:attrName value:value range:NSMakeRange(0, [self length])];
-}
-
-- (void)addAttribute:(NSString *)attrName value:(id)value from:(int)from length:(int)length
-{
- [self addAttribute:attrName value:value range:NSMakeRange((unsigned)from, (unsigned)length)];
-}
-
-- (void)addColorAttribute:(NSString *)attrName red:(float)red green:(float)green blue:(float)blue alpha:(float)alpha
-{
- [self addAttribute:attrName value:[NSColor colorWithDeviceRed:red green:green blue:blue alpha:alpha] range:NSMakeRange(0, [self length])];
-}
-
-- (void)addColorAttribute:(NSString *)attrName red:(float)red green:(float)green blue:(float)blue alpha:(float)alpha from:(int)from length:(int)length
-{
- [self addAttribute:attrName value:[NSColor colorWithDeviceRed:red green:green blue:blue alpha:alpha] range:NSMakeRange((unsigned)from, (unsigned)length)];
-}
-
-- (void)addFontAttribute:(NSString *)attrName fontName:(NSString *)fontName size:(float)fontSize
-{
- [self addAttribute:attrName value:[NSFont fontWithName:fontName size:fontSize] range:NSMakeRange(0, [self length])];
-}
-
-- (void)addFontAttribute:(NSString *)attrName fontName:(NSString *)fontName size:(float)fontSize from:(int)from length:(int)length
-{
- [self addAttribute:attrName value:[NSFont fontWithName:fontName size:fontSize] range:NSMakeRange((unsigned)from, (unsigned)length)];
-}
-
-@end
-
-@implementation TextInputController
-
-+ (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector
-{
- if (aSelector == @selector(insertText:)
- || aSelector == @selector(doCommand:)
- || aSelector == @selector(setMarkedText:selectedFrom:length:)
- || aSelector == @selector(unmarkText)
- || aSelector == @selector(hasMarkedText)
- || aSelector == @selector(conversationIdentifier)
- || aSelector == @selector(substringFrom:length:)
- || aSelector == @selector(attributedSubstringFrom:length:)
- || aSelector == @selector(markedRange)
- || aSelector == @selector(selectedRange)
- || aSelector == @selector(firstRectForCharactersFrom:length:)
- || aSelector == @selector(characterIndexForPointX:Y:)
- || aSelector == @selector(validAttributesForMarkedText)
- || aSelector == @selector(attributedStringWithString:)
- || aSelector == @selector(setInputMethodHandler:))
- return NO;
- return YES;
-}
-
-+ (NSString *)webScriptNameForSelector:(SEL)aSelector
-{
- if (aSelector == @selector(insertText:))
- return @"insertText";
- else if (aSelector == @selector(doCommand:))
- return @"doCommand";
- else if (aSelector == @selector(setMarkedText:selectedFrom:length:))
- return @"setMarkedText";
- else if (aSelector == @selector(substringFrom:length:))
- return @"substringFromRange";
- else if (aSelector == @selector(attributedSubstringFrom:length:))
- return @"attributedSubstringFromRange";
- else if (aSelector == @selector(firstRectForCharactersFrom:length:))
- return @"firstRectForCharacterRange";
- else if (aSelector == @selector(characterIndexForPointX:Y:))
- return @"characterIndexForPoint";
- else if (aSelector == @selector(attributedStringWithString:))
- return @"makeAttributedString"; // just a factory method, doesn't call into NSTextInput
- else if (aSelector == @selector(setInputMethodHandler:))
- return @"setInputMethodHandler";
-
- return nil;
-}
-
-- (id)initWithWebView:(WebView *)wv
-{
- self = [super init];
- webView = wv;
- inputMethodView = nil;
- inputMethodHandler = nil;
- return self;
-}
-
-- (void)dealloc
-{
- [inputMethodHandler release];
- inputMethodHandler = nil;
-
- [super dealloc];
-}
-
-- (NSObject <NSTextInput> *)textInput
-{
- NSView <NSTextInput> *view = inputMethodView ? inputMethodView : (id)[[[webView mainFrame] frameView] documentView];
- return [view conformsToProtocol:@protocol(NSTextInput)] ? view : nil;
-}
-
-- (void)insertText:(id)aString
-{
- NSObject <NSTextInput> *textInput = [self textInput];
-
- if (textInput)
- [textInput insertText:aString];
-}
-
-- (void)doCommand:(NSString *)aCommand
-{
- NSObject <NSTextInput> *textInput = [self textInput];
-
- if (textInput)
- [textInput doCommandBySelector:NSSelectorFromString(aCommand)];
-}
-
-- (void)setMarkedText:(NSString *)aString selectedFrom:(int)from length:(int)length
-{
- NSObject <NSTextInput> *textInput = [self textInput];
-
- if (textInput)
- [textInput setMarkedText:aString selectedRange:NSMakeRange(from, length)];
-}
-
-- (void)unmarkText
-{
- NSObject <NSTextInput> *textInput = [self textInput];
-
- if (textInput)
- [textInput unmarkText];
-}
-
-- (BOOL)hasMarkedText
-{
- NSObject <NSTextInput> *textInput = [self textInput];
-
- if (textInput)
- return [textInput hasMarkedText];
-
- return FALSE;
-}
-
-- (long)conversationIdentifier
-{
- NSObject <NSTextInput> *textInput = [self textInput];
-
- if (textInput)
- return [textInput conversationIdentifier];
-
- return 0;
-}
-
-- (NSString *)substringFrom:(int)from length:(int)length
-{
- NSObject <NSTextInput> *textInput = [self textInput];
-
- if (textInput)
- return [[textInput attributedSubstringFromRange:NSMakeRange(from, length)] string];
-
- return @"";
-}
-
-- (NSMutableAttributedString *)attributedSubstringFrom:(int)from length:(int)length
-{
- NSObject <NSTextInput> *textInput = [self textInput];
-
- NSMutableAttributedString *ret = [[[NSMutableAttributedString alloc] init] autorelease];
-
- if (textInput)
- [ret setAttributedString:[textInput attributedSubstringFromRange:NSMakeRange(from, length)]];
-
- return ret;
-}
-
-- (NSArray *)markedRange
-{
- NSObject <NSTextInput> *textInput = [self textInput];
-
- if (textInput) {
- NSRange range = [textInput markedRange];
- return [NSArray arrayWithObjects:[NSNumber numberWithUnsignedInt:range.location], [NSNumber numberWithUnsignedInt:range.length], nil];
- }
-
- return nil;
-}
-
-- (NSArray *)selectedRange
-{
- NSObject <NSTextInput> *textInput = [self textInput];
-
- if (textInput) {
- NSRange range = [textInput selectedRange];
- return [NSArray arrayWithObjects:[NSNumber numberWithUnsignedInt:range.location], [NSNumber numberWithUnsignedInt:range.length], nil];
- }
-
- return nil;
-}
-
-
-- (NSArray *)firstRectForCharactersFrom:(int)from length:(int)length
-{
- NSObject <NSTextInput> *textInput = [self textInput];
-
- if (textInput) {
- NSRect rect = [textInput firstRectForCharacterRange:NSMakeRange(from, length)];
- if (rect.origin.x || rect.origin.y || rect.size.width || rect.size.height) {
- rect.origin = [[webView window] convertScreenToBase:rect.origin];
- rect = [webView convertRect:rect fromView:nil];
- }
- return [NSArray arrayWithObjects:
- [NSNumber numberWithFloat:rect.origin.x],
- [NSNumber numberWithFloat:rect.origin.y],
- [NSNumber numberWithFloat:rect.size.width],
- [NSNumber numberWithFloat:rect.size.height],
- nil];
- }
-
- return nil;
-}
-
-- (int)characterIndexForPointX:(float)x Y:(float)y
-{
- NSObject <NSTextInput> *textInput = [self textInput];
-
- if (textInput) {
- NSPoint point = NSMakePoint(x, y);
- point = [webView convertPoint:point toView:nil];
- point = [[webView window] convertBaseToScreen:point];
- return [textInput characterIndexForPoint:point];
- }
-
- return 0;
-}
-
-- (NSArray *)validAttributesForMarkedText
-{
- NSObject <NSTextInput> *textInput = [self textInput];
-
- if (textInput)
- return [textInput validAttributesForMarkedText];
-
- return nil;
-}
-
-- (NSMutableAttributedString *)attributedStringWithString:(NSString *)aString
-{
- return [[[NSMutableAttributedString alloc] initWithString:aString] autorelease];
-}
-
-- (void)setInputMethodHandler:(WebScriptObject *)handler
-{
- if (inputMethodHandler == handler)
- return;
- [handler retain];
- [inputMethodHandler release];
- inputMethodHandler = handler;
-}
-
-- (BOOL)interpretKeyEvents:(NSArray *)eventArray withSender:(WebHTMLView *)sender
-{
- if (!inputMethodHandler)
- return NO;
-
- inputMethodView = sender;
-
- NSEvent *event = [eventArray objectAtIndex:0];
- unsigned modifierFlags = [event modifierFlags];
- NSMutableArray *modifiers = [[NSMutableArray alloc] init];
- if (modifierFlags & NSAlphaShiftKeyMask)
- [modifiers addObject:@"NSAlphaShiftKeyMask"];
- if (modifierFlags & NSShiftKeyMask)
- [modifiers addObject:@"NSShiftKeyMask"];
- if (modifierFlags & NSControlKeyMask)
- [modifiers addObject:@"NSControlKeyMask"];
- if (modifierFlags & NSAlternateKeyMask)
- [modifiers addObject:@"NSAlternateKeyMask"];
- if (modifierFlags & NSCommandKeyMask)
- [modifiers addObject:@"NSCommandKeyMask"];
- if (modifierFlags & NSNumericPadKeyMask)
- [modifiers addObject:@"NSNumericPadKeyMask"];
- if (modifierFlags & NSHelpKeyMask)
- [modifiers addObject:@"NSHelpKeyMask"];
- if (modifierFlags & NSFunctionKeyMask)
- [modifiers addObject:@"NSFunctionKeyMask"];
-
- WebScriptObject* eventParam = [inputMethodHandler evaluateWebScript:@"new Object();"];
- [eventParam setValue:[event characters] forKey:@"characters"];
- [eventParam setValue:[event charactersIgnoringModifiers] forKey:@"charactersIgnoringModifiers"];
- [eventParam setValue:[NSNumber numberWithBool:[event isARepeat]] forKey:@"isARepeat"];
- [eventParam setValue:[NSNumber numberWithUnsignedShort:[event keyCode]] forKey:@"keyCode"];
- [eventParam setValue:modifiers forKey:@"modifierFlags"];
-
- [modifiers release];
-
- id result = [inputMethodHandler callWebScriptMethod:@"call" withArguments:[NSArray arrayWithObjects:inputMethodHandler, eventParam, nil]];
- if (![result respondsToSelector:@selector(boolValue)] || ![result boolValue])
- [sender doCommandBySelector:@selector(noop:)]; // AppKit sends noop: if the ime does not handle an event
-
- inputMethodView = nil;
- return YES;
-}
-
-@end
diff --git a/WebKitTools/DumpRenderTree/mac/UIDelegate.h b/WebKitTools/DumpRenderTree/mac/UIDelegate.h
deleted file mode 100644
index da472d6..0000000
--- a/WebKitTools/DumpRenderTree/mac/UIDelegate.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <Cocoa/Cocoa.h>
-
-@interface UIDelegate : NSObject {
-
-@private
- NSRect m_frame;
-}
-
-@end
diff --git a/WebKitTools/DumpRenderTree/mac/UIDelegate.mm b/WebKitTools/DumpRenderTree/mac/UIDelegate.mm
deleted file mode 100644
index 0c5a93c..0000000
--- a/WebKitTools/DumpRenderTree/mac/UIDelegate.mm
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Copyright (C) 2006. 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "DumpRenderTree.h"
-#import "UIDelegate.h"
-
-#import "DumpRenderTreeDraggingInfo.h"
-#import "EventSendingController.h"
-#import "LayoutTestController.h"
-#import <WebKit/WebFramePrivate.h>
-#import <WebKit/WebHTMLViewPrivate.h>
-#import <WebKit/WebView.h>
-#import <WebKit/WebSecurityOriginPrivate.h>
-#import <wtf/Assertions.h>
-
-DumpRenderTreeDraggingInfo *draggingInfo = nil;
-
-@implementation UIDelegate
-
-- (void)webView:(WebView *)sender setFrame:(NSRect)frame
-{
- m_frame = frame;
-}
-
-- (NSRect)webViewFrame:(WebView *)sender;
-{
- return m_frame;
-}
-
-- (void)webView:(WebView *)sender addMessageToConsole:(NSDictionary *)dictionary
-{
- NSString *message = [dictionary objectForKey:@"message"];
- NSNumber *lineNumber = [dictionary objectForKey:@"lineNumber"];
-
- NSRange range = [message rangeOfString:@"file://"];
- if (range.location != NSNotFound)
- message = [[message substringToIndex:range.location] stringByAppendingString:[[message substringFromIndex:NSMaxRange(range)] lastPathComponent]];
-
- printf ("CONSOLE MESSAGE: line %d: %s\n", [lineNumber intValue], [message UTF8String]);
-}
-
-- (void)webView:(WebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame
-{
- if (!done)
- printf("ALERT: %s\n", [message UTF8String]);
-}
-
-- (BOOL)webView:(WebView *)sender runJavaScriptConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame
-{
- if (!done)
- printf("CONFIRM: %s\n", [message UTF8String]);
- return YES;
-}
-
-- (NSString *)webView:(WebView *)sender runJavaScriptTextInputPanelWithPrompt:(NSString *)prompt defaultText:(NSString *)defaultText initiatedByFrame:(WebFrame *)frame
-{
- if (!done)
- printf("PROMPT: %s, default text: %s\n", [prompt UTF8String], [defaultText UTF8String]);
- return defaultText;
-}
-
-- (BOOL)webView:(WebView *)c runBeforeUnloadConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame
-{
- if (!done)
- printf("CONFIRM NAVIGATION: %s\n", [message UTF8String]);
- return YES;
-}
-
-
-- (void)webView:(WebView *)sender dragImage:(NSImage *)anImage at:(NSPoint)viewLocation offset:(NSSize)initialOffset event:(NSEvent *)event pasteboard:(NSPasteboard *)pboard source:(id)sourceObj slideBack:(BOOL)slideFlag forView:(NSView *)view
-{
- assert(!draggingInfo);
- if (gLayoutTestController->addFileToPasteboardOnDrag()) {
- [pboard declareTypes:[NSArray arrayWithObject:NSFilenamesPboardType] owner:nil];
- [pboard setPropertyList:[NSArray arrayWithObject:@"DRTFakeFile"] forType:NSFilenamesPboardType];
- }
- draggingInfo = [[DumpRenderTreeDraggingInfo alloc] initWithImage:anImage offset:initialOffset pasteboard:pboard source:sourceObj];
- [EventSendingController replaySavedEvents];
-}
-
-- (void)webViewFocus:(WebView *)webView
-{
- gLayoutTestController->setWindowIsKey(true);
-}
-
-- (void)webViewUnfocus:(WebView *)webView
-{
- gLayoutTestController->setWindowIsKey(false);
-}
-
-- (WebView *)webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request
-{
- if (!gLayoutTestController->canOpenWindows())
- return nil;
-
- // Make sure that waitUntilDone has been called.
- ASSERT(gLayoutTestController->waitToDump());
-
- WebView *webView = createWebViewAndOffscreenWindow();
-
- return [webView autorelease];
-}
-
-- (void)webViewClose:(WebView *)sender
-{
- NSWindow* window = [sender window];
-
- if (gLayoutTestController->callCloseOnWebViews())
- [sender close];
-
- [window close];
-}
-
-- (void)webView:(WebView *)sender frame:(WebFrame *)frame exceededDatabaseQuotaForSecurityOrigin:(WebSecurityOrigin *)origin database:(NSString *)databaseIdentifier
-{
- if (!done && gLayoutTestController->dumpDatabaseCallbacks())
- printf("UI DELEGATE DATABASE CALLBACK: exceededDatabaseQuotaForSecurityOrigin:{%s, %s, %i} database:%s\n", [[origin protocol] UTF8String], [[origin host] UTF8String],
- [origin port], [databaseIdentifier UTF8String]);
-
- static const unsigned long long defaultQuota = 5 * 1024 * 1024;
- [origin setQuota:defaultQuota];
-}
-
-- (void)webView:(WebView *)sender setStatusText:(NSString *)text
-{
- if (gLayoutTestController->dumpStatusCallbacks())
- printf("UI DELEGATE STATUS CALLBACK: setStatusText:%s\n", [text UTF8String]);
-}
-
-- (void)dealloc
-{
- [draggingInfo release];
- draggingInfo = nil;
-
- [super dealloc];
-}
-
-@end
diff --git a/WebKitTools/DumpRenderTree/mac/WorkQueueItemMac.mm b/WebKitTools/DumpRenderTree/mac/WorkQueueItemMac.mm
deleted file mode 100644
index 3a7b0e2..0000000
--- a/WebKitTools/DumpRenderTree/mac/WorkQueueItemMac.mm
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "DumpRenderTree.h"
-#import "WorkQueueItem.h"
-
-#import <JavaScriptCore/JSStringRef.h>
-#import <JavaScriptCore/JSStringRefCF.h>
-#import <WebKit/WebBackForwardList.h>
-#import <WebKit/WebFrame.h>
-#import <WebKit/WebScriptObject.h>
-#import <WebKit/WebView.h>
-#import <wtf/RetainPtr.h>
-
-void LoadItem::invoke() const
-{
- RetainPtr<CFStringRef> urlCF(AdoptCF, JSStringCopyCFString(kCFAllocatorDefault, m_url.get()));
- NSString *urlNS = (NSString *)urlCF.get();
- RetainPtr<CFStringRef> targetCF(AdoptCF, JSStringCopyCFString(kCFAllocatorDefault, m_target.get()));
- NSString *targetNS = (NSString *)targetCF.get();
-
- WebFrame *targetFrame;
- if (targetNS && [targetNS length])
- targetFrame = [mainFrame findFrameNamed:targetNS];
- else
- targetFrame = mainFrame;
- [targetFrame loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlNS]]];
-}
-
-void ReloadItem::invoke() const
-{
- [[mainFrame webView] reload:nil];
-}
-
-void ScriptItem::invoke() const
-{
- RetainPtr<CFStringRef> scriptCF(AdoptCF, JSStringCopyCFString(kCFAllocatorDefault, m_script.get()));
- NSString *scriptNS = (NSString *)scriptCF.get();
- [[mainFrame webView] stringByEvaluatingJavaScriptFromString:scriptNS];
-}
-
-void BackForwardItem::invoke() const
-{
- if (m_howFar == 1)
- [[mainFrame webView] goForward];
- else if (m_howFar == -1)
- [[mainFrame webView] goBack];
- else {
- WebBackForwardList *bfList = [[mainFrame webView] backForwardList];
- [[mainFrame webView] goToBackForwardItem:[bfList itemAtIndex:m_howFar]];
- }
-}
diff --git a/WebKitTools/DumpRenderTree/pthreads/JavaScriptThreadingPthreads.cpp b/WebKitTools/DumpRenderTree/pthreads/JavaScriptThreadingPthreads.cpp
deleted file mode 100644
index 3ac257d..0000000
--- a/WebKitTools/DumpRenderTree/pthreads/JavaScriptThreadingPthreads.cpp
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright (C) 2005, 2006, 2007 Apple Inc. All rights reserved.
- * (C) 2007 Graham Dennis (graham.dennis@gmail.com)
- * (C) 2007 Eric Seidel <eric@webkit.org>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "JavaScriptThreading.h"
-
-#include <CoreFoundation/CoreFoundation.h>
-#include <JavaScriptCore/JavaScriptCore.h>
-#include <pthread.h>
-#include <wtf/Assertions.h>
-#include <wtf/HashSet.h>
-
-static pthread_mutex_t javaScriptThreadsMutex = PTHREAD_MUTEX_INITIALIZER;
-static bool javaScriptThreadsShouldTerminate;
-
-static const int javaScriptThreadsCount = 4;
-
-typedef HashSet<pthread_t> ThreadSet;
-
-static ThreadSet* javaScriptThreads()
-{
- ASSERT(pthread_mutex_trylock(&javaScriptThreadsMutex) == EBUSY);
- static ThreadSet staticJavaScriptThreads;
- return &staticJavaScriptThreads;
-}
-
-// Loops forever, running a script and randomly respawning, until
-// javaScriptThreadsShouldTerminate becomes true.
-void* runJavaScriptThread(void* arg)
-{
- const char* const script =
- "var array = [];"
- "for (var i = 0; i < 10; i++) {"
- " array.push(String(i));"
- "}";
-
- while (1) {
- JSGlobalContextRef ctx = JSGlobalContextCreate(0);
- JSStringRef scriptRef = JSStringCreateWithUTF8CString(script);
-
- JSValueRef exception = 0;
- JSEvaluateScript(ctx, scriptRef, 0, 0, 1, &exception);
- ASSERT(!exception);
-
- JSGarbageCollect(ctx);
- JSGlobalContextRelease(ctx);
- JSStringRelease(scriptRef);
-
- JSGarbageCollect(0);
-
- pthread_mutex_lock(&javaScriptThreadsMutex);
-
- // Check for cancellation.
- if (javaScriptThreadsShouldTerminate) {
- javaScriptThreads()->remove(pthread_self());
- pthread_mutex_unlock(&javaScriptThreadsMutex);
- return 0;
- }
-
- // Respawn probabilistically.
- if (random() % 5 == 0) {
- pthread_t pthread;
- pthread_create(&pthread, 0, &runJavaScriptThread, 0);
- pthread_detach(pthread);
-
- javaScriptThreads()->remove(pthread_self());
- javaScriptThreads()->add(pthread);
-
- pthread_mutex_unlock(&javaScriptThreadsMutex);
- return 0;
- }
-
- pthread_mutex_unlock(&javaScriptThreadsMutex);
- }
-}
-
-void startJavaScriptThreads()
-{
- pthread_mutex_lock(&javaScriptThreadsMutex);
-
- for (int i = 0; i < javaScriptThreadsCount; i++) {
- pthread_t pthread;
- pthread_create(&pthread, 0, &runJavaScriptThread, 0);
- pthread_detach(pthread);
- javaScriptThreads()->add(pthread);
- }
-
- pthread_mutex_unlock(&javaScriptThreadsMutex);
-}
-
-void stopJavaScriptThreads()
-{
- pthread_mutex_lock(&javaScriptThreadsMutex);
-
- javaScriptThreadsShouldTerminate = true;
-
- ASSERT(javaScriptThreads()->size() == javaScriptThreadsCount);
-
- pthread_mutex_unlock(&javaScriptThreadsMutex);
-
- while (true) {
- pthread_mutex_lock(&javaScriptThreadsMutex);
- int threadCount = javaScriptThreads()->size();
- pthread_mutex_unlock(&javaScriptThreadsMutex);
-
- if (!threadCount)
- break;
-
- usleep(1000);
- }
-}
diff --git a/WebKitTools/DumpRenderTree/qt/DumpRenderTree.cpp b/WebKitTools/DumpRenderTree/qt/DumpRenderTree.cpp
deleted file mode 100644
index 07075ba..0000000
--- a/WebKitTools/DumpRenderTree/qt/DumpRenderTree.cpp
+++ /dev/null
@@ -1,332 +0,0 @@
-/*
- * Copyright (C) 2005, 2006 Apple Computer, Inc. All rights reserved.
- * Copyright (C) 2006 Nikolas Zimmermann <zimmermann@kde.org>
- * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "DumpRenderTree.h"
-#include "jsobjects.h"
-#include "testplugin.h"
-
-#include <QDir>
-#include <QFile>
-#include <QTimer>
-#include <QBoxLayout>
-#include <QScrollArea>
-#include <QApplication>
-#include <QUrl>
-#include <QFocusEvent>
-
-#include <qwebpage.h>
-#include <qwebframe.h>
-#include <qwebview.h>
-#include <qwebsettings.h>
-
-#include <unistd.h>
-#include <qdebug.h>
-
-extern void qt_drt_run(bool b);
-extern void qt_dump_set_accepts_editing(bool b);
-extern void qt_dump_frame_loader(bool b);
-
-
-namespace WebCore {
-
-// Choose some default values.
-const unsigned int maxViewWidth = 800;
-const unsigned int maxViewHeight = 600;
-
-class WebPage : public QWebPage {
- Q_OBJECT
-public:
- WebPage(QWidget *parent, DumpRenderTree *drt);
-
- QWebPage *createWindow(QWebPage::WebWindowType);
-
- void javaScriptAlert(QWebFrame *frame, const QString& message);
- void javaScriptConsoleMessage(const QString& message, int lineNumber, const QString& sourceID);
- bool javaScriptConfirm(QWebFrame *frame, const QString& msg);
- bool javaScriptPrompt(QWebFrame *frame, const QString& msg, const QString& defaultValue, QString* result);
-
-private slots:
- void setViewGeometry(const QRect &r)
- {
- QWidget *v = view();
- if (v)
- v->setGeometry(r);
- }
-private:
- DumpRenderTree *m_drt;
-};
-
-WebPage::WebPage(QWidget *parent, DumpRenderTree *drt)
- : QWebPage(parent), m_drt(drt)
-{
- settings()->setAttribute(QWebSettings::JavascriptCanOpenWindows, true);
- settings()->setAttribute(QWebSettings::JavascriptCanAccessClipboard, true);
- settings()->setAttribute(QWebSettings::LinksIncludedInFocusChain, false);
- connect(this, SIGNAL(geometryChangeRequested(const QRect &)),
- this, SLOT(setViewGeometry(const QRect & )));
-
- setPluginFactory(new TestPlugin(this));
-}
-
-QWebPage *WebPage::createWindow(QWebPage::WebWindowType)
-{
- return m_drt->createWindow();
-}
-
-void WebPage::javaScriptAlert(QWebFrame *frame, const QString& message)
-{
- fprintf(stdout, "ALERT: %s\n", message.toUtf8().constData());
-}
-
-void WebPage::javaScriptConsoleMessage(const QString& message, int lineNumber, const QString&)
-{
- fprintf (stdout, "CONSOLE MESSAGE: line %d: %s\n", lineNumber, message.toUtf8().constData());
-}
-
-bool WebPage::javaScriptConfirm(QWebFrame *frame, const QString& msg)
-{
- fprintf(stdout, "CONFIRM: %s\n", msg.toUtf8().constData());
- return true;
-}
-
-bool WebPage::javaScriptPrompt(QWebFrame *frame, const QString& msg, const QString& defaultValue, QString* result)
-{
- fprintf(stdout, "PROMPT: %s, default text: %s\n", msg.toUtf8().constData(), defaultValue.toUtf8().constData());
- *result = defaultValue;
- return true;
-}
-
-DumpRenderTree::DumpRenderTree()
- : m_stdin(0)
- , m_notifier(0)
-{
- m_controller = new LayoutTestController(this);
- connect(m_controller, SIGNAL(done()), this, SLOT(dump()), Qt::QueuedConnection);
-
- QWebView *view = new QWebView(0);
- view->resize(QSize(maxViewWidth, maxViewHeight));
- m_page = new WebPage(view, this);
- view->setPage(m_page);
- connect(m_page, SIGNAL(frameCreated(QWebFrame *)), this, SLOT(connectFrame(QWebFrame *)));
- connectFrame(m_page->mainFrame());
-
- connect(m_page, SIGNAL(loadFinished(bool)), m_controller, SLOT(maybeDump(bool)));
-
- m_page->mainFrame()->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAlwaysOff);
- m_page->mainFrame()->setScrollBarPolicy(Qt::Vertical, Qt::ScrollBarAlwaysOff);
- connect(m_page->mainFrame(), SIGNAL(titleChanged(const QString&)),
- SLOT(titleChanged(const QString&)));
-
- m_eventSender = new EventSender(m_page);
- m_textInputController = new TextInputController(m_page);
-
- QObject::connect(this, SIGNAL(quit()), qApp, SLOT(quit()), Qt::QueuedConnection);
- qt_drt_run(true);
- QFocusEvent event(QEvent::FocusIn, Qt::ActiveWindowFocusReason);
- QApplication::sendEvent(view, &event);
-}
-
-DumpRenderTree::~DumpRenderTree()
-{
- delete m_page;
-
- delete m_stdin;
- delete m_notifier;
-}
-
-void DumpRenderTree::open()
-{
- if (!m_stdin) {
- m_stdin = new QFile;
- m_stdin->open(stdin, QFile::ReadOnly);
- }
-
- if (!m_notifier) {
- m_notifier = new QSocketNotifier(STDIN_FILENO, QSocketNotifier::Read);
- connect(m_notifier, SIGNAL(activated(int)), this, SLOT(readStdin(int)));
- }
-}
-
-void DumpRenderTree::open(const QUrl& url)
-{
- // W3C SVG tests expect to be 480x360
- bool isW3CTest = url.toString().contains("svg/W3C-SVG-1.1");
- int width = isW3CTest ? 480 : maxViewWidth;
- int height = isW3CTest ? 360 : maxViewHeight;
- m_page->view()->resize(QSize(width, height));
- m_page->setViewportSize(QSize(width, height));
-
- resetJSObjects();
-
- qt_dump_frame_loader(url.toString().contains("loading/"));
- m_page->mainFrame()->load(url);
-}
-
-void DumpRenderTree::readStdin(int /* socket */)
-{
- // Read incoming data from stdin...
- QByteArray line = m_stdin->readLine();
- if (line.endsWith('\n'))
- line.truncate(line.size()-1);
- //fprintf(stderr, "\n opening %s\n", line.constData());
- if (line.isEmpty())
- quit();
-
- if (line.startsWith("http:") || line.startsWith("https:"))
- open(QUrl(line));
- else {
- QFileInfo fi(line);
- open(QUrl::fromLocalFile(fi.absoluteFilePath()));
- }
-
- fflush(stdout);
-}
-
-void DumpRenderTree::resetJSObjects()
-{
- m_controller->reset();
- foreach(QWidget *widget, windows)
- delete widget;
- windows.clear();
-}
-
-void DumpRenderTree::initJSObjects()
-{
- QWebFrame *frame = qobject_cast<QWebFrame*>(sender());
- Q_ASSERT(frame);
- frame->addToJavaScriptWindowObject(QLatin1String("layoutTestController"), m_controller);
- frame->addToJavaScriptWindowObject(QLatin1String("eventSender"), m_eventSender);
- frame->addToJavaScriptWindowObject(QLatin1String("textInputController"), m_textInputController);
-}
-
-
-QString DumpRenderTree::dumpFramesAsText(QWebFrame* frame)
-{
- if (!frame)
- return QString();
-
- QString result;
- QWebFrame *parent = qobject_cast<QWebFrame *>(frame->parent());
- if (parent) {
- result.append(QLatin1String("\n--------\nFrame: '"));
- result.append(frame->frameName());
- result.append(QLatin1String("'\n--------\n"));
- }
-
- result.append(frame->toPlainText());
- result.append(QLatin1String("\n"));
-
- if (m_controller->shouldDumpChildrenAsText()) {
- QList<QWebFrame *> children = frame->childFrames();
- for (int i = 0; i < children.size(); ++i)
- result += dumpFramesAsText(children.at(i));
- }
-
- return result;
-}
-
-void DumpRenderTree::dump()
-{
- QWebFrame *frame = m_page->mainFrame();
-
- //fprintf(stderr, " Dumping\n");
- if (!m_notifier) {
- // Dump markup in single file mode...
- QString markup = frame->toHtml();
- fprintf(stdout, "Source:\n\n%s\n", markup.toUtf8().constData());
- }
-
- // Dump render text...
- QString renderDump;
- if (m_controller->shouldDumpAsText()) {
- renderDump = dumpFramesAsText(frame);
- } else {
- renderDump = frame->renderTreeDump();
- }
- if (renderDump.isEmpty()) {
- printf("ERROR: nil result from %s", m_controller->shouldDumpAsText() ? "[documentElement innerText]" : "[frame renderTreeAsExternalRepresentation]");
- } else {
- fprintf(stdout, "%s", renderDump.toUtf8().constData());
- }
-
- fprintf(stdout, "#EOF\n");
-
- fflush(stdout);
-
- fprintf(stderr, "#EOF\n");
-
- fflush(stderr);
-
- if (!m_notifier) {
- // Exit now in single file mode...
- quit();
- }
-}
-
-void DumpRenderTree::titleChanged(const QString &s)
-{
- if (m_controller->shouldDumpTitleChanges())
- printf("TITLE CHANGED: %s\n", s.toUtf8().data());
-}
-
-void DumpRenderTree::connectFrame(QWebFrame *frame)
-{
- connect(frame, SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(initJSObjects()));
- connect(frame, SIGNAL(provisionalLoad()),
- layoutTestController(), SLOT(provisionalLoad()));
-}
-
-QWebPage *DumpRenderTree::createWindow()
-{
- if (!m_controller->canOpenWindows())
- return 0;
- QWidget *container = new QWidget(0);
- container->resize(0, 0);
- container->move(-1, -1);
- container->hide();
- QWebPage *page = new WebPage(container, this);
- connect(m_page, SIGNAL(frameCreated(QWebFrame *)), this, SLOT(connectFrame(QWebFrame *)));
- windows.append(container);
- return page;
-}
-
-int DumpRenderTree::windowCount() const
-{
- int count = 0;
- foreach(QWidget *w, windows) {
- if (w->children().count())
- ++count;
- }
- return count + 1;
-}
-
-}
-
-#include "DumpRenderTree.moc"
diff --git a/WebKitTools/DumpRenderTree/qt/DumpRenderTree.h b/WebKitTools/DumpRenderTree/qt/DumpRenderTree.h
deleted file mode 100644
index a46cccb..0000000
--- a/WebKitTools/DumpRenderTree/qt/DumpRenderTree.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (C) 2006 Nikolas Zimmermann <zimmermann@kde.org>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef DUMPRENDERTREE_H
-#define DUMPRENDERTREE_H
-
-#include <QList>
-#include <QObject>
-#include <QTextStream>
-#include <QSocketNotifier>
-
-QT_BEGIN_NAMESPACE
-class QUrl;
-class QFile;
-QT_END_NAMESPACE
-class QWebPage;
-class QWebFrame;
-
-class LayoutTestController;
-class EventSender;
-class TextInputController;
-
-namespace WebCore {
-
-class DumpRenderTree : public QObject {
-Q_OBJECT
-
-public:
- DumpRenderTree();
- virtual ~DumpRenderTree();
-
- // Initialize in multi-file mode, used by run-webkit-tests.
- void open();
-
- // Initialize in single-file mode.
- void open(const QUrl& url);
-
- void resetJSObjects();
-
- LayoutTestController *layoutTestController() const { return m_controller; }
- EventSender *eventSender() const { return m_eventSender; }
- TextInputController *textInputController() const { return m_textInputController; }
-
- QWebPage *createWindow();
- int windowCount() const;
-
- QWebPage *webPage() const { return m_page; }
-
-public Q_SLOTS:
- void initJSObjects();
- void readStdin(int);
- void dump();
- void titleChanged(const QString &s);
- void connectFrame(QWebFrame *frame);
-
-Q_SIGNALS:
- void quit();
-
-private:
- QString dumpFramesAsText(QWebFrame* frame);
- LayoutTestController *m_controller;
-
- QWebPage *m_page;
-
- EventSender *m_eventSender;
- TextInputController *m_textInputController;
-
- QFile *m_stdin;
- QSocketNotifier* m_notifier;
-
- QList<QWidget *> windows;
-};
-
-}
-
-#endif
diff --git a/WebKitTools/DumpRenderTree/qt/DumpRenderTree.pro b/WebKitTools/DumpRenderTree/qt/DumpRenderTree.pro
deleted file mode 100644
index 08f1ab7..0000000
--- a/WebKitTools/DumpRenderTree/qt/DumpRenderTree.pro
+++ /dev/null
@@ -1,22 +0,0 @@
-TARGET = DumpRenderTree
-CONFIG -= app_bundle
-
-include(../../../WebKit.pri)
-INCLUDEPATH += /usr/include/freetype2
-INCLUDEPATH += ../../../JavaScriptCore/kjs
-DESTDIR = ../../../bin
-
-
-QT = core gui
-macx: QT += xml network
-
-HEADERS = DumpRenderTree.h jsobjects.h testplugin.h
-SOURCES = DumpRenderTree.cpp main.cpp jsobjects.cpp testplugin.cpp
-
-unix:!mac {
- QMAKE_RPATHDIR = $$OUTPUT_DIR/lib $$QMAKE_RPATHDIR
-}
-
-qt-port:lessThan(QT_MINOR_VERSION, 4) {
- DEFINES += QT_BEGIN_NAMESPACE="" QT_END_NAMESPACE=""
-}
diff --git a/WebKitTools/DumpRenderTree/qt/fonts.conf b/WebKitTools/DumpRenderTree/qt/fonts.conf
deleted file mode 100644
index 3540c47..0000000
--- a/WebKitTools/DumpRenderTree/qt/fonts.conf
+++ /dev/null
@@ -1,258 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
-<fontconfig>
-
-<!--
- Accept deprecated 'mono' alias, replacing it with 'monospace'
--->
- <match target="pattern">
- <test qual="any" name="family">
- <string>mono</string>
- </test>
- <edit name="family" mode="assign">
- <string>monospace</string>
- </edit>
- </match>
-
-<!--
- Accept alternate 'sans serif' spelling, replacing it with 'sans-serif'
--->
- <match target="pattern">
- <test qual="any" name="family">
- <string>sans serif</string>
- </test>
- <edit name="family" mode="assign">
- <string>sans-serif</string>
- </edit>
- </match>
-
-<!--
- Accept deprecated 'sans' alias, replacing it with 'sans-serif'
--->
- <match target="pattern">
- <test qual="any" name="family">
- <string>sans</string>
- </test>
- <edit name="family" mode="assign">
- <string>sans-serif</string>
- </edit>
- </match>
-
-
- <config>
-<!--
- These are the default Unicode chars that are expected to be blank
- in fonts. All other blank chars are assumed to be broken and
- won't appear in the resulting charsets
- -->
- <blank>
- <int>0x0020</int> <!-- SPACE -->
- <int>0x00A0</int> <!-- NO-BREAK SPACE -->
- <int>0x00AD</int> <!-- SOFT HYPHEN -->
- <int>0x034F</int> <!-- COMBINING GRAPHEME JOINER -->
- <int>0x0600</int> <!-- ARABIC NUMBER SIGN -->
- <int>0x0601</int> <!-- ARABIC SIGN SANAH -->
- <int>0x0602</int> <!-- ARABIC FOOTNOTE MARKER -->
- <int>0x0603</int> <!-- ARABIC SIGN SAFHA -->
- <int>0x06DD</int> <!-- ARABIC END OF AYAH -->
- <int>0x070F</int> <!-- SYRIAC ABBREVIATION MARK -->
- <int>0x115F</int> <!-- HANGUL CHOSEONG FILLER -->
- <int>0x1160</int> <!-- HANGUL JUNGSEONG FILLER -->
- <int>0x1680</int> <!-- OGHAM SPACE MARK -->
- <int>0x17B4</int> <!-- KHMER VOWEL INHERENT AQ -->
- <int>0x17B5</int> <!-- KHMER VOWEL INHERENT AA -->
- <int>0x180E</int> <!-- MONGOLIAN VOWEL SEPARATOR -->
- <int>0x2000</int> <!-- EN QUAD -->
- <int>0x2001</int> <!-- EM QUAD -->
- <int>0x2002</int> <!-- EN SPACE -->
- <int>0x2003</int> <!-- EM SPACE -->
- <int>0x2004</int> <!-- THREE-PER-EM SPACE -->
- <int>0x2005</int> <!-- FOUR-PER-EM SPACE -->
- <int>0x2006</int> <!-- SIX-PER-EM SPACE -->
- <int>0x2007</int> <!-- FIGURE SPACE -->
- <int>0x2008</int> <!-- PUNCTUATION SPACE -->
- <int>0x2009</int> <!-- THIN SPACE -->
- <int>0x200A</int> <!-- HAIR SPACE -->
- <int>0x200B</int> <!-- ZERO WIDTH SPACE -->
- <int>0x200C</int> <!-- ZERO WIDTH NON-JOINER -->
- <int>0x200D</int> <!-- ZERO WIDTH JOINER -->
- <int>0x200E</int> <!-- LEFT-TO-RIGHT MARK -->
- <int>0x200F</int> <!-- RIGHT-TO-LEFT MARK -->
- <int>0x2028</int> <!-- LINE SEPARATOR -->
- <int>0x2029</int> <!-- PARAGRAPH SEPARATOR -->
- <int>0x202A</int> <!-- LEFT-TO-RIGHT EMBEDDING -->
- <int>0x202B</int> <!-- RIGHT-TO-LEFT EMBEDDING -->
- <int>0x202C</int> <!-- POP DIRECTIONAL FORMATTING -->
- <int>0x202D</int> <!-- LEFT-TO-RIGHT OVERRIDE -->
- <int>0x202E</int> <!-- RIGHT-TO-LEFT OVERRIDE -->
- <int>0x202F</int> <!-- NARROW NO-BREAK SPACE -->
- <int>0x205F</int> <!-- MEDIUM MATHEMATICAL SPACE -->
- <int>0x2060</int> <!-- WORD JOINER -->
- <int>0x2061</int> <!-- FUNCTION APPLICATION -->
- <int>0x2062</int> <!-- INVISIBLE TIMES -->
- <int>0x2063</int> <!-- INVISIBLE SEPARATOR -->
- <int>0x206A</int> <!-- INHIBIT SYMMETRIC SWAPPING -->
- <int>0x206B</int> <!-- ACTIVATE SYMMETRIC SWAPPING -->
- <int>0x206C</int> <!-- INHIBIT ARABIC FORM SHAPING -->
- <int>0x206D</int> <!-- ACTIVATE ARABIC FORM SHAPING -->
- <int>0x206E</int> <!-- NATIONAL DIGIT SHAPES -->
- <int>0x206F</int> <!-- NOMINAL DIGIT SHAPES -->
- <int>0x3000</int> <!-- IDEOGRAPHIC SPACE -->
- <int>0x3164</int> <!-- HANGUL FILLER -->
- <int>0xFEFF</int> <!-- ZERO WIDTH NO-BREAK SPACE -->
- <int>0xFFA0</int> <!-- HALFWIDTH HANGUL FILLER -->
- <int>0xFFF9</int> <!-- INTERLINEAR ANNOTATION ANCHOR -->
- <int>0xFFFA</int> <!-- INTERLINEAR ANNOTATION SEPARATOR -->
- <int>0xFFFB</int> <!-- INTERLINEAR ANNOTATION TERMINATOR -->
- </blank>
-<!--
- Rescan configuration every 30 seconds when FcFontSetList is called
- -->
- <rescan>
- <int>30</int>
- </rescan>
- </config>
-
-<!--
- URW provides metric and shape compatible fonts for these 10 Adobe families.
-
- However, these fonts are quite ugly and do not render well on-screen,
- so we avoid matching them if the application said `anymetrics'; in that
- case, a more generic font with different metrics but better appearance
- will be used.
- -->
- <match target="pattern">
- <test name="family">
- <string>Avant Garde</string>
- </test>
- <test name="anymetrics" qual="all" compare="not_eq">
- <bool>true</bool>
- </test>
- <edit name="family" mode="append">
- <string>URW Gothic L</string>
- </edit>
- </match>
- <match target="pattern">
- <test name="family">
- <string>Bookman</string>
- </test>
- <test name="anymetrics" qual="all" compare="not_eq">
- <bool>true</bool>
- </test>
- <edit name="family" mode="append">
- <string>URW Bookman L</string>
- </edit>
- </match>
- <match target="pattern">
- <test name="family">
- <string>Courier</string>
- </test>
- <test name="anymetrics" qual="all" compare="not_eq">
- <bool>true</bool>
- </test>
- <edit name="family" mode="append">
- <string>Nimbus Mono L</string>
- </edit>
- </match>
- <match target="pattern">
- <test name="family">
- <string>Helvetica</string>
- </test>
- <test name="anymetrics" qual="all" compare="not_eq">
- <bool>true</bool>
- </test>
- <edit name="family" mode="append">
- <string>Nimbus Sans L</string>
- </edit>
- </match>
- <match target="pattern">
- <test name="family">
- <string>New Century Schoolbook</string>
- </test>
- <test name="anymetrics" qual="all" compare="not_eq">
- <bool>true</bool>
- </test>
- <edit name="family" mode="append">
- <string>Century Schoolbook L</string>
- </edit>
- </match>
- <match target="pattern">
- <test name="family">
- <string>Palatino</string>
- </test>
- <test name="anymetrics" qual="all" compare="not_eq">
- <bool>true</bool>
- </test>
- <edit name="family" mode="append">
- <string>URW Palladio L</string>
- </edit>
- </match>
- <match target="pattern">
- <test name="family">
- <string>Times</string>
- </test>
- <test name="anymetrics" qual="all" compare="not_eq">
- <bool>true</bool>
- </test>
- <edit name="family" mode="append">
- <string>Nimbus Roman No9 L</string>
- </edit>
- </match>
- <match target="pattern">
- <test name="family">
- <string>Zapf Chancery</string>
- </test>
- <test name="anymetrics" qual="all" compare="not_eq">
- <bool>true</bool>
- </test>
- <edit name="family" mode="append">
- <string>URW Chancery L</string>
- </edit>
- </match>
- <match target="pattern">
- <test name="family">
- <string>Zapf Dingbats</string>
- </test>
- <test name="anymetrics" qual="all" compare="not_eq">
- <bool>true</bool>
- </test>
- <edit name="family" mode="append">
- <string>Dingbats</string>
- </edit>
- </match>
- <match target="pattern">
- <test name="family">
- <string>Symbol</string>
- </test>
- <test name="anymetrics" qual="all" compare="not_eq">
- <bool>true</bool>
- </test>
- <edit name="family" mode="append" binding="same">
- <string>Standard Symbols L</string>
- </edit>
- </match>
-
-<!--
- Serif faces
- -->
- <alias>
- <family>Nimbus Roman No9 L</family>
- <default><family>serif</family></default>
- </alias>
-<!--
- Sans-serif faces
- -->
- <alias>
- <family>Nimbus Sans L</family>
- <default><family>sans-serif</family></default>
- </alias>
-<!--
- Monospace faces
- -->
- <alias>
- <family>Nimbus Mono L</family>
- <default><family>monospace</family></default>
- </alias>
-
-
-</fontconfig>
diff --git a/WebKitTools/DumpRenderTree/qt/fonts/AHEM____.TTF b/WebKitTools/DumpRenderTree/qt/fonts/AHEM____.TTF
deleted file mode 100644
index ac81cb0..0000000
--- a/WebKitTools/DumpRenderTree/qt/fonts/AHEM____.TTF
+++ /dev/null
Binary files differ
diff --git a/WebKitTools/DumpRenderTree/qt/jsobjects.cpp b/WebKitTools/DumpRenderTree/qt/jsobjects.cpp
deleted file mode 100644
index 98603ad..0000000
--- a/WebKitTools/DumpRenderTree/qt/jsobjects.cpp
+++ /dev/null
@@ -1,363 +0,0 @@
-/*
- * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include <jsobjects.h>
-#include <qwebpage.h>
-#include <qwebhistory.h>
-#include <qwebframe.h>
-#include <qevent.h>
-#include <qapplication.h>
-#include <qevent.h>
-
-#include "DumpRenderTree.h"
-extern void qt_dump_editing_callbacks(bool b);
-extern void qt_dump_resource_load_callbacks(bool b);
-
-LayoutTestController::LayoutTestController(WebCore::DumpRenderTree *drt)
- : QObject()
- , m_drt(drt)
-{
- m_timeoutTimer = 0;
- reset();
-}
-
-void LayoutTestController::reset()
-{
- m_isLoading = true;
- m_textDump = false;
- m_dumpChildrenAsText = false;
- m_canOpenWindows = false;
- m_waitForDone = false;
- m_dumpTitleChanges = false;
- if (m_timeoutTimer) {
- killTimer(m_timeoutTimer);
- m_timeoutTimer = 0;
- }
- m_topLoadingFrame = 0;
- qt_dump_editing_callbacks(false);
- qt_dump_resource_load_callbacks(false);
-}
-
-void LayoutTestController::maybeDump(bool ok)
-{
- m_topLoadingFrame = 0;
-
- if (!shouldWaitUntilDone()) {
- emit done();
- m_isLoading = false;
- }
-}
-
-void LayoutTestController::waitUntilDone()
-{
- //qDebug() << ">>>>waitForDone";
- m_waitForDone = true;
- m_timeoutTimer = startTimer(11000);
-}
-
-void LayoutTestController::notifyDone()
-{
- //qDebug() << ">>>>notifyDone";
- if (!m_timeoutTimer)
- return;
- killTimer(m_timeoutTimer);
- m_timeoutTimer = 0;
- emit done();
- m_isLoading = false;
-}
-
-int LayoutTestController::windowCount()
-{
- return m_drt->windowCount();
-}
-
-void LayoutTestController::clearBackForwardList()
-{
- m_drt->webPage()->history()->clear();
-}
-
-
-void LayoutTestController::dumpEditingCallbacks()
-{
- qDebug() << ">>>dumpEditingCallbacks";
- qt_dump_editing_callbacks(true);
-}
-
-void LayoutTestController::dumpResourceLoadCallbacks()
-{
- qt_dump_resource_load_callbacks(true);
-}
-
-void LayoutTestController::queueReload()
-{
- //qDebug() << ">>>queueReload";
-}
-
-void LayoutTestController::provisionalLoad()
-{
- QWebFrame *frame = qobject_cast<QWebFrame*>(sender());
- if (!m_topLoadingFrame && m_isLoading)
- m_topLoadingFrame = frame;
-}
-
-void LayoutTestController::timerEvent(QTimerEvent *)
-{
- qDebug() << ">>>>>>>>>>>>> timeout";
- notifyDone();
-}
-
-QString LayoutTestController::encodeHostName(const QString &host)
-{
- QString encoded = QString::fromLatin1(QUrl::toAce(host + QLatin1String(".no")));
- encoded.truncate(encoded.length() - 3); // strip .no
- return encoded;
-}
-
-QString LayoutTestController::decodeHostName(const QString &host)
-{
- QString decoded = QUrl::fromAce(host.toLatin1() + QByteArray(".no"));
- decoded.truncate(decoded.length() - 3);
- return decoded;
-}
-
-
-EventSender::EventSender(QWebPage *parent)
- : QObject(parent)
-{
- m_page = parent;
-}
-
-void EventSender::mouseDown()
-{
-// qDebug() << "EventSender::mouseDown" << frame;
- QMouseEvent event(QEvent::MouseButtonPress, m_mousePos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
- QApplication::sendEvent(m_page, &event);
-}
-
-void EventSender::mouseUp()
-{
-// qDebug() << "EventSender::mouseUp" << frame;
- QMouseEvent event(QEvent::MouseButtonRelease, m_mousePos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
- QApplication::sendEvent(m_page, &event);
-}
-
-void EventSender::mouseMoveTo(int x, int y)
-{
-// qDebug() << "EventSender::mouseMoveTo" << x << y;
- m_mousePos = QPoint(x, y);
- QMouseEvent event(QEvent::MouseMove, m_mousePos, Qt::NoButton, Qt::NoButton, Qt::NoModifier);
- QApplication::sendEvent(m_page, &event);
-}
-
-void EventSender::leapForward(int ms)
-{
- m_timeLeap += ms;
- qDebug() << "EventSender::leapForward" << ms;
-}
-
-void EventSender::keyDown(const QString &string, const QStringList &modifiers)
-{
- QString s = string;
- Qt::KeyboardModifiers modifs = 0;
- for (int i = 0; i < modifiers.size(); ++i) {
- const QString &m = modifiers.at(i);
- if (m == "ctrlKey")
- modifs |= Qt::ControlModifier;
- else if (m == "shiftKey")
- modifs |= Qt::ShiftModifier;
- else if (m == "altKey")
- modifs |= Qt::AltModifier;
- else if (m == "metaKey")
- modifs |= Qt::MetaModifier;
- }
- int code = 0;
- if (string.length() == 1) {
- code = string.unicode()->unicode();
- qDebug() << ">>>>>>>>> keyDown" << code << (char)code;
- // map special keycodes used by the tests to something that works for Qt/X11
- if (code == '\t') {
- code = Qt::Key_Tab;
- if (modifs == Qt::ShiftModifier)
- code = Qt::Key_Backtab;
- s = QString();
- } else if (code == 127) {
- code = Qt::Key_Backspace;
- if (modifs == Qt::AltModifier)
- modifs = Qt::ControlModifier;
- s = QString();
- } else if (code == 'o' && modifs == Qt::ControlModifier) {
- s = QLatin1String("\n");
- code = '\n';
- modifs = 0;
- } else if (code == 'y' && modifs == Qt::ControlModifier) {
- s = QLatin1String("c");
- code = 'c';
- } else if (code == 'k' && modifs == Qt::ControlModifier) {
- s = QLatin1String("x");
- code = 'x';
- } else if (code == 'a' && modifs == Qt::ControlModifier) {
- s = QString();
- code = Qt::Key_Home;
- modifs = 0;
- } else if (code == 0xf702) {
- s = QString();
- code = Qt::Key_Left;
- if (modifs & Qt::MetaModifier) {
- code = Qt::Key_Home;
- modifs &= ~Qt::MetaModifier;
- }
- } else if (code == 0xf703) {
- s = QString();
- code = Qt::Key_Right;
- if (modifs & Qt::MetaModifier) {
- code = Qt::Key_End;
- modifs &= ~Qt::MetaModifier;
- }
- } else if (code == 'a' && modifs == Qt::ControlModifier) {
- s = QString();
- code = Qt::Key_Home;
- modifs = 0;
- } else {
- code = string.unicode()->toUpper().unicode();
- }
- }
- QKeyEvent event(QEvent::KeyPress, code, modifs, s);
- QApplication::sendEvent(m_page, &event);
-}
-
-QWebFrame *EventSender::frameUnderMouse() const
-{
- QWebFrame *frame = m_page->mainFrame();
-
-redo:
- QList<QWebFrame*> children = frame->childFrames();
- for (int i = 0; i < children.size(); ++i) {
- if (children.at(i)->geometry().contains(m_mousePos)) {
- frame = children.at(i);
- goto redo;
- }
- }
- if (frame->geometry().contains(m_mousePos))
- return frame;
- return 0;
-}
-
-
-TextInputController::TextInputController(QWebPage *parent)
- : QObject(parent)
-{
-}
-
-void TextInputController::doCommand(const QString &command)
-{
- Qt::KeyboardModifiers modifiers = Qt::NoModifier;
- int keycode = 0;
- if (command == "moveBackwardAndModifySelection:") {
- modifiers |= Qt::ShiftModifier;
- keycode = Qt::Key_Left;
- } else if(command =="moveDown:") {
- keycode = Qt::Key_Down;
- } else if(command =="moveDownAndModifySelection:") {
- modifiers |= Qt::ShiftModifier;
- keycode = Qt::Key_Down;
- } else if(command =="moveForward:") {
- keycode = Qt::Key_Right;
- } else if(command =="moveForwardAndModifySelection:") {
- modifiers |= Qt::ShiftModifier;
- keycode = Qt::Key_Right;
- } else if(command =="moveLeft:") {
- keycode = Qt::Key_Left;
- } else if(command =="moveLeftAndModifySelection:") {
- modifiers |= Qt::ShiftModifier;
- keycode = Qt::Key_Left;
- } else if(command =="moveRight:") {
- keycode = Qt::Key_Right;
- } else if(command =="moveRightAndModifySelection:") {
- modifiers |= Qt::ShiftModifier;
- keycode = Qt::Key_Right;
- } else if(command =="moveToBeginningOfDocument:") {
- modifiers |= Qt::ControlModifier;
- keycode = Qt::Key_Home;
- } else if(command =="moveToBeginningOfLine:") {
- keycode = Qt::Key_Home;
-// } else if(command =="moveToBeginningOfParagraph:") {
- } else if(command =="moveToEndOfDocument:") {
- modifiers |= Qt::ControlModifier;
- keycode = Qt::Key_End;
- } else if(command =="moveToEndOfLine:") {
- keycode = Qt::Key_End;
-// } else if(command =="moveToEndOfParagraph:") {
- } else if(command =="moveUp:") {
- keycode = Qt::Key_Up;
- } else if(command =="moveUpAndModifySelection:") {
- modifiers |= Qt::ShiftModifier;
- keycode = Qt::Key_Up;
- } else if(command =="moveWordBackward:") {
- modifiers |= Qt::ControlModifier;
- keycode = Qt::Key_Up;
- } else if(command =="moveWordBackwardAndModifySelection:") {
- modifiers |= Qt::ShiftModifier;
- modifiers |= Qt::ControlModifier;
- keycode = Qt::Key_Left;
- } else if(command =="moveWordForward:") {
- modifiers |= Qt::ControlModifier;
- keycode = Qt::Key_Right;
- } else if(command =="moveWordForwardAndModifySelection:") {
- modifiers |= Qt::ControlModifier;
- modifiers |= Qt::ShiftModifier;
- keycode = Qt::Key_Right;
- } else if(command =="moveWordLeft:") {
- modifiers |= Qt::ControlModifier;
- keycode = Qt::Key_Left;
- } else if(command =="moveWordRight:") {
- modifiers |= Qt::ControlModifier;
- keycode = Qt::Key_Left;
- } else if(command =="moveWordRightAndModifySelection:") {
- modifiers |= Qt::ShiftModifier;
- modifiers |= Qt::ControlModifier;
- keycode = Qt::Key_Right;
- } else if(command =="moveWordLeftAndModifySelection:") {
- modifiers |= Qt::ShiftModifier;
- modifiers |= Qt::ControlModifier;
- keycode = Qt::Key_Left;
- } else if(command =="pageDown:") {
- keycode = Qt::Key_PageDown;
- } else if(command =="pageUp:") {
- keycode = Qt::Key_PageUp;
- } else if(command == "deleteWordBackward:") {
- modifiers |= Qt::ControlModifier;
- keycode = Qt::Key_Backspace;
- } else if(command == "deleteBackward:") {
- keycode = Qt::Key_Backspace;
- } else if(command == "deleteForward:") {
- keycode = Qt::Key_Delete;
- }
- QKeyEvent event(QEvent::KeyPress, keycode, modifiers);
- QApplication::sendEvent(parent(), &event);
- QKeyEvent event2(QEvent::KeyRelease, keycode, modifiers);
- QApplication::sendEvent(parent(), &event2);
-}
diff --git a/WebKitTools/DumpRenderTree/qt/jsobjects.h b/WebKitTools/DumpRenderTree/qt/jsobjects.h
deleted file mode 100644
index 4ee6439..0000000
--- a/WebKitTools/DumpRenderTree/qt/jsobjects.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef JSOBJECTS_H
-#define JSOBJECTS_H
-
-#include <qobject.h>
-#include <qdebug.h>
-#include <qpoint.h>
-#include <qstringlist.h>
-
-class QWebFrame;
-namespace WebCore {
- class DumpRenderTree;
-}
-class LayoutTestController : public QObject
-{
- Q_OBJECT
-public:
- LayoutTestController(WebCore::DumpRenderTree *drt);
-
- bool isLoading() const { return m_isLoading; }
- void setLoading(bool loading) { m_isLoading = loading; }
-
- bool shouldDumpAsText() const { return m_textDump; }
- bool shouldDumpChildrenAsText() const { return m_dumpChildrenAsText; }
- bool shouldWaitUntilDone() const { return m_waitForDone; }
- bool canOpenWindows() const { return m_canOpenWindows; }
- bool shouldDumpTitleChanges() const { return m_dumpTitleChanges; }
-
- void reset();
-
-protected:
- void timerEvent(QTimerEvent *);
-
-signals:
- void done();
-
-public slots:
- void maybeDump(bool ok);
- void dumpAsText() { m_textDump = true; }
- void dumpChildFramesAsText() { m_dumpChildrenAsText = true; }
- void setCanOpenWindows() { m_canOpenWindows = true; }
- void waitUntilDone();
- void notifyDone();
- void dumpEditingCallbacks();
- void dumpResourceLoadCallbacks();
- void queueReload();
- void provisionalLoad();
- void setCloseRemainingWindowsWhenComplete(bool=false) {}
- int windowCount();
- void display() {}
- void clearBackForwardList();
- void dumpTitleChanges() { m_dumpTitleChanges = true; }
- QString encodeHostName(const QString &host);
- QString decodeHostName(const QString &host);
- void dumpSelectionRect() const {}
-
-private:
- bool m_isLoading;
- bool m_textDump;
- bool m_dumpChildrenAsText;
- bool m_canOpenWindows;
- bool m_waitForDone;
- bool m_dumpTitleChanges;
- int m_timeoutTimer;
- QWebFrame *m_topLoadingFrame;
- WebCore::DumpRenderTree *m_drt;
-};
-
-class QWebPage;
-class QWebFrame;
-
-class EventSender : public QObject
-{
- Q_OBJECT
-public:
- EventSender(QWebPage *parent);
-
-public slots:
- void mouseDown();
- void mouseUp();
- void mouseMoveTo(int x, int y);
- void leapForward(int ms);
- void keyDown(const QString &string, const QStringList &modifiers=QStringList());
- void clearKillRing() {}
-
-private:
- QPoint m_mousePos;
- QWebPage *m_page;
- int m_timeLeap;
- QWebFrame *frameUnderMouse() const;
-};
-
-class TextInputController : public QObject
-{
- Q_OBJECT
-public:
- TextInputController(QWebPage *parent);
-
-public slots:
- void doCommand(const QString &command);
-// void setMarkedText(const QString &str, int from, int length);
-// bool hasMarkedText();
-// void unmarkText();
-// QList<int> markedRange();
-// QList<int> selectedRange();
-// void validAttributesForMarkedText();
-// void inserText(const QString &);
-// void firstRectForCharacterRange();
-// void characterIndexForPoint(int, int);
-// void substringFromRange(int, int);
-// void conversationIdentifier();
-};
-
-#endif
diff --git a/WebKitTools/DumpRenderTree/qt/main.cpp b/WebKitTools/DumpRenderTree/qt/main.cpp
deleted file mode 100644
index 8c4bc9c..0000000
--- a/WebKitTools/DumpRenderTree/qt/main.cpp
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Copyright (C) 2006 Nikolas Zimmermann <zimmermann@kde.org>
- * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "DumpRenderTree.h"
-
-#include <qstringlist.h>
-#include <qapplication.h>
-#include <qurl.h>
-#include <qdir.h>
-#include <qdebug.h>
-#include <qfont.h>
-
-#ifdef Q_WS_X11
-#include <qx11info_x11.h>
-#include <fontconfig/fontconfig.h>
-#endif
-
-#include <limits.h>
-#include <signal.h>
-
-#if defined(__GLIBC__)
-#include <execinfo.h>
-#endif
-
-void messageHandler(QtMsgType type, const char *message)
-{
- if (type == QtCriticalMsg) {
- fprintf(stderr, "%s\n", message);
- return;
- }
- // do nothing
-}
-
-QString get_backtrace() {
- QString s;
-
-#if defined(__GLIBC__)
- void* array[256];
- size_t size; /* number of stack frames */
-
- size = backtrace(array, 256);
-
- if (!size)
- return s;
-
- char** strings = backtrace_symbols(array, size);
- for (int i = 0; i < size; ++i) {
- s += QString::number(i) +
- QLatin1String(": ") +
- QLatin1String(strings[i]) + QLatin1String("\n");
- }
-
- if (strings)
- free (strings);
-#endif
-
- return s;
-}
-
-static void crashHandler(int sig)
-{
- fprintf(stderr, "%s\n", strsignal(sig));
- fprintf(stderr, "%s\n", get_backtrace().toLatin1().constData());
- exit(128 + sig);
-}
-
-int main(int argc, char* argv[])
-{
-#ifdef Q_WS_X11
- FcInit();
- FcConfig *config = FcConfigCreate();
- QByteArray fontDir = getenv("WEBKIT_TESTFONTS");
- if (fontDir.isEmpty() || !QDir(fontDir).exists()) {
- fprintf(stderr,
- "\n\n"
- "--------------------------------------------------------------------\n"
- "WEBKIT_TESTFONTS environment variable is not set correctly.\n"
- "This variable has to point to the directory containing the fonts\n"
- "you can checkout from svn://labs.trolltech.com/svn/webkit/testfonts\n"
- "--------------------------------------------------------------------\n"
-);
- exit(1);
- }
- char currentPath[PATH_MAX+1];
- getcwd(currentPath, PATH_MAX);
- QByteArray configFile = currentPath;
- configFile += "/WebKitTools/DumpRenderTree/qt/fonts.conf";
- if (!FcConfigParseAndLoad (config, (FcChar8*) configFile.data(), true))
- qFatal("Couldn't load font configuration file");
- if (!FcConfigAppFontAddDir (config, (FcChar8*) fontDir.data()))
- qFatal("Couldn't add font dir!");
- FcConfigSetCurrent(config);
-#endif
- QApplication app(argc, argv);
-#ifdef Q_WS_X11
- QX11Info::setAppDpiY(0, 96);
- QX11Info::setAppDpiX(0, 96);
-#endif
-
- QFont f("Sans Serif");
- f.setPointSize(9);
- f.setWeight(QFont::Normal);
- f.setStyle(QFont::StyleNormal);
- app.setFont(f);
- app.setStyle(QLatin1String("Plastique"));
-
-
- signal(SIGILL, crashHandler); /* 4: illegal instruction (not reset when caught) */
- signal(SIGTRAP, crashHandler); /* 5: trace trap (not reset when caught) */
- signal(SIGFPE, crashHandler); /* 8: floating point exception */
- signal(SIGBUS, crashHandler); /* 10: bus error */
- signal(SIGSEGV, crashHandler); /* 11: segmentation violation */
- signal(SIGSYS, crashHandler); /* 12: bad argument to system call */
- signal(SIGPIPE, crashHandler); /* 13: write on a pipe with no reader */
- signal(SIGXCPU, crashHandler); /* 24: exceeded CPU time limit */
- signal(SIGXFSZ, crashHandler); /* 25: exceeded file size limit */
-
- QStringList args = app.arguments();
- if (args.count() < 2) {
- qDebug() << "Usage: DumpRenderTree [-v] filename";
- exit(0);
- }
-
- // supress debug output from Qt if not started with -v
- if (!args.contains(QLatin1String("-v")))
- qInstallMsgHandler(messageHandler);
-
- WebCore::DumpRenderTree dumper;
-
- if (args.last() == QLatin1String("-")) {
- dumper.open();
- } else {
- if (!args.last().startsWith("/")
- && !args.last().startsWith("file:")
- && !args.last().startsWith("http:")
- && !args.last().startsWith("https:")) {
- QString path = QDir::currentPath();
- if (!path.endsWith('/'))
- path.append('/');
- args.last().prepend(path);
- }
- dumper.open(QUrl(args.last()));
- }
- return app.exec();
-#ifdef Q_WS_X11
- FcConfigSetCurrent(0);
-#endif
-}
diff --git a/WebKitTools/DumpRenderTree/qt/testplugin.cpp b/WebKitTools/DumpRenderTree/qt/testplugin.cpp
deleted file mode 100644
index 54431e9..0000000
--- a/WebKitTools/DumpRenderTree/qt/testplugin.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "testplugin.h"
-
-TestPlugin::TestPlugin(QObject *parent)
- : QWebPluginFactory(parent)
-{
-}
-
-TestPlugin::~TestPlugin()
-{
-}
-
-QList<QWebPluginFactory::Plugin> TestPlugin::plugins() const
-{
- QWebPluginFactory::Plugin plugin;
-
- plugin.name = "testplugin";
- plugin.description = "testdescription";
- MimeType mimeType;
- mimeType.name = "testtype";
- mimeType.fileExtensions.append("testsuffixes");
- plugin.mimeTypes.append(mimeType);
-
- plugin.name = "testplugin2";
- plugin.description = "testdescription2";
- mimeType.name = "testtype2";
- mimeType.fileExtensions.append("testsuffixes2");
- mimeType.fileExtensions.append("testsuffixes3");
- plugin.mimeTypes.append(mimeType);
-
- return QList<QWebPluginFactory::Plugin>() << plugin;
-}
-
-QObject *TestPlugin::create(const QString &mimeType,
- const QUrl &url,
- const QStringList &argumentNames,
- const QStringList &argumentValues) const
-{
- return 0;
-}
-
diff --git a/WebKitTools/DumpRenderTree/qt/testplugin.h b/WebKitTools/DumpRenderTree/qt/testplugin.h
deleted file mode 100644
index 3d8a28c..0000000
--- a/WebKitTools/DumpRenderTree/qt/testplugin.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include <qwebpluginfactory.h>
-
-
-class TestPlugin : public QWebPluginFactory
-{
-public:
- explicit TestPlugin(QObject *parent = 0);
- virtual ~TestPlugin();
-
- virtual QList<Plugin> plugins() const;
-
- virtual QObject *create(const QString &mimeType,
- const QUrl &url,
- const QStringList &argumentNames,
- const QStringList &argumentValues) const;
-
-};
-
diff --git a/WebKitTools/DumpRenderTree/win/AccessibilityControllerWin.cpp b/WebKitTools/DumpRenderTree/win/AccessibilityControllerWin.cpp
deleted file mode 100644
index b6e45f2..0000000
--- a/WebKitTools/DumpRenderTree/win/AccessibilityControllerWin.cpp
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "AccessibilityController.h"
-
-#include "AccessibilityUIElement.h"
-#include "DumpRenderTree.h"
-#include <JavaScriptCore/Assertions.h>
-#include <WebCore/COMPtr.h>
-#include <WebKit/WebKit.h>
-#include <oleacc.h>
-
-AccessibilityController::AccessibilityController()
-{
-}
-
-AccessibilityController::~AccessibilityController()
-{
-}
-
-AccessibilityUIElement AccessibilityController::focusedElement()
-{
- COMPtr<IAccessible> rootAccessible = rootElement().platformUIElement();
-
- VARIANT vFocus;
- if (FAILED(rootAccessible->get_accFocus(&vFocus)))
- return 0;
-
- if (V_VT(&vFocus) == VT_I4) {
- ASSERT(V_I4(&vFocus) == CHILDID_SELF);
- // The root accessible object is the focused object.
- return rootAccessible;
- }
-
- ASSERT(V_VT(&vFocus) == VT_DISPATCH);
- // We have an IDispatch; query for IAccessible.
- return COMPtr<IAccessible>(Query, V_DISPATCH(&vFocus));
-}
-
-AccessibilityUIElement AccessibilityController::rootElement()
-{
- COMPtr<IWebView> view;
- if (FAILED(frame->webView(&view)))
- return 0;
-
- COMPtr<IWebViewPrivate> viewPrivate(Query, view);
- if (!viewPrivate)
- return 0;
-
- HWND webViewWindow;
- if (FAILED(viewPrivate->viewWindow((OLE_HANDLE*)&webViewWindow)))
- return 0;
-
- // Get the root accessible object by querying for the accessible object for the
- // WebView's window.
- COMPtr<IAccessible> rootAccessible;
- if (FAILED(AccessibleObjectFromWindow(webViewWindow, static_cast<DWORD>(OBJID_CLIENT), __uuidof(IAccessible), reinterpret_cast<void**>(&rootAccessible))))
- return 0;
-
- return rootAccessible;
-}
diff --git a/WebKitTools/DumpRenderTree/win/AccessibilityUIElementWin.cpp b/WebKitTools/DumpRenderTree/win/AccessibilityUIElementWin.cpp
deleted file mode 100644
index d835bb3..0000000
--- a/WebKitTools/DumpRenderTree/win/AccessibilityUIElementWin.cpp
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "AccessibilityUIElement.h"
-
-#include <JavaScriptCore/JSStringRef.h>
-#include <tchar.h>
-#include <string>
-
-using std::wstring;
-
-AccessibilityUIElement::AccessibilityUIElement(PlatformUIElement element)
- : m_element(element)
-{
-}
-
-AccessibilityUIElement::AccessibilityUIElement(const AccessibilityUIElement& other)
- : m_element(other.m_element)
-{
-}
-
-AccessibilityUIElement::~AccessibilityUIElement()
-{
-}
-
-void AccessibilityUIElement::getLinkedUIElements(Vector<AccessibilityUIElement>&)
-{
-}
-
-void AccessibilityUIElement::getDocumentLinks(Vector<AccessibilityUIElement>&)
-{
-}
-
-void AccessibilityUIElement::getChildren(Vector<AccessibilityUIElement>& children)
-{
- long childCount;
- if (FAILED(m_element->get_accChildCount(&childCount)))
- return;
- for (long i = 0; i < childCount; ++i)
- children.append(getChildAtIndex(i));
-}
-
-AccessibilityUIElement AccessibilityUIElement::getChildAtIndex(unsigned index)
-{
- COMPtr<IDispatch> child;
- VARIANT vChild;
- ::VariantInit(&vChild);
- V_VT(&vChild) = VT_I4;
- // In MSAA, index 0 is the object itself.
- V_I4(&vChild) = index + 1;
- if (FAILED(m_element->get_accChild(vChild, &child)))
- return 0;
- return COMPtr<IAccessible>(Query, child);
-}
-
-JSStringRef AccessibilityUIElement::allAttributes()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::attributesOfLinkedUIElements()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::attributesOfDocumentLinks()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-AccessibilityUIElement AccessibilityUIElement::titleUIElement()
-{
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::attributesOfChildren()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::parameterizedAttributeNames()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-static VARIANT& self()
-{
- static VARIANT vSelf;
- static bool haveInitialized;
-
- if (!haveInitialized) {
- ::VariantInit(&vSelf);
- V_VT(&vSelf) = VT_I4;
- V_I4(&vSelf) = CHILDID_SELF;
- }
- return vSelf;
-}
-
-JSStringRef AccessibilityUIElement::role()
-{
- VARIANT vRole;
- if (FAILED(m_element->get_accRole(self(), &vRole)))
- return JSStringCreateWithCharacters(0, 0);
- ASSERT(V_VT(&vRole) == VT_I4);
- TCHAR roleText[64] = {0};
- ::GetRoleText(V_I4(&vRole), roleText, ARRAYSIZE(roleText));
- return JSStringCreateWithCharacters(roleText, _tcslen(roleText));
-}
-
-JSStringRef AccessibilityUIElement::title()
-{
- BSTR titleBSTR;
- if (FAILED(m_element->get_accName(self(), &titleBSTR)) || !titleBSTR)
- return JSStringCreateWithCharacters(0, 0);
- wstring title(titleBSTR, SysStringLen(titleBSTR));
- ::SysFreeString(titleBSTR);
- return JSStringCreateWithCharacters(title.data(), title.length());
-}
-
-JSStringRef AccessibilityUIElement::description()
-{
- BSTR descriptionBSTR;
- if (FAILED(m_element->get_accName(self(), &descriptionBSTR)) || !descriptionBSTR)
- return JSStringCreateWithCharacters(0, 0);
- wstring description(descriptionBSTR, SysStringLen(descriptionBSTR));
- ::SysFreeString(descriptionBSTR);
- return JSStringCreateWithCharacters(description.data(), description.length());
-}
-
-double AccessibilityUIElement::width()
-{
- long x, y, width, height;
- if (FAILED(m_element->accLocation(&x, &y, &width, &height, self())))
- return 0;
- return width;
-}
-
-double AccessibilityUIElement::height()
-{
- long x, y, width, height;
- if (FAILED(m_element->accLocation(&x, &y, &width, &height, self())))
- return 0;
- return height;
-}
-
-double AccessibilityUIElement::intValue()
-{
- BSTR valueBSTR;
- if (FAILED(m_element->get_accValue(self(), &valueBSTR)) || !valueBSTR)
- return 0;
- wstring value(valueBSTR, SysStringLen(valueBSTR));
- ::SysFreeString(valueBSTR);
- TCHAR* ignored;
- return _tcstod(value.data(), &ignored);
-}
-
-double AccessibilityUIElement::minValue()
-{
- return 0;
-}
-
-double AccessibilityUIElement::maxValue()
-{
- return 0;
-}
-
-bool AccessibilityUIElement::supportsPressAction()
-{
- return false;
-}
-
-int AccessibilityUIElement::insertionPointLineNumber()
-{
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::attributesOfColumnHeaders()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::attributesOfRowHeaders()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::attributesOfColumns()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::attributesOfRows()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::attributesOfVisibleCells()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::attributesOfHeader()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-int AccessibilityUIElement::indexInTable()
-{
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::rowIndexRange()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::columnIndexRange()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-int AccessibilityUIElement::lineForIndex(int)
-{
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::boundsForRange(unsigned location, unsigned length)
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-AccessibilityUIElement AccessibilityUIElement::cellForColumnAndRow(unsigned column, unsigned row)
-{
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::selectedTextRange()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-void AccessibilityUIElement::setSelectedTextRange(unsigned location, unsigned length)
-{
-}
diff --git a/WebKitTools/DumpRenderTree/win/DraggingInfo.h b/WebKitTools/DumpRenderTree/win/DraggingInfo.h
deleted file mode 100644
index 2ead457..0000000
--- a/WebKitTools/DumpRenderTree/win/DraggingInfo.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef DraggingInfo_h
-#define DraggingInfo_h
-
-#include <objidl.h>
-
-class DraggingInfo {
-public:
- DraggingInfo(IDataObject* object, IDropSource* source)
- : m_object(object)
- , m_source(source)
- {
- m_object->AddRef();
- m_source->AddRef();
- }
-
- ~DraggingInfo()
- {
- if (m_object)
- m_object->Release();
- m_object = 0;
- if (m_source)
- m_source->Release();
- m_source = 0;
- }
-
- IDataObject* dataObject() const { return m_object; }
- IDropSource* dropSource() const { return m_source; }
-
-private:
- IDataObject* m_object;
- IDropSource* m_source;
-};
-
-#endif // !defined(DraggingInfo_h)
diff --git a/WebKitTools/DumpRenderTree/win/DumpRenderTree.cpp b/WebKitTools/DumpRenderTree/win/DumpRenderTree.cpp
deleted file mode 100644
index b3b73a9..0000000
--- a/WebKitTools/DumpRenderTree/win/DumpRenderTree.cpp
+++ /dev/null
@@ -1,1127 +0,0 @@
-/*
- * Copyright (C) 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "DumpRenderTree.h"
-
-#include "EditingDelegate.h"
-#include "FrameLoadDelegate.h"
-#include "LayoutTestController.h"
-#include "PixelDumpSupport.h"
-#include "PolicyDelegate.h"
-#include "ResourceLoadDelegate.h"
-#include "UIDelegate.h"
-#include "WorkQueueItem.h"
-#include "WorkQueue.h"
-
-#include <fcntl.h>
-#include <io.h>
-#include <math.h>
-#include <pthread.h>
-#include <shlwapi.h>
-#include <stdio.h>
-#include <string.h>
-#include <tchar.h>
-#include <wtf/RetainPtr.h>
-#include <wtf/Vector.h>
-#include <windows.h>
-#include <CFNetwork/CFURLCachePriv.h>
-#include <CoreFoundation/CoreFoundation.h>
-#include <JavaScriptCore/JavaScriptCore.h>
-#include <WebCore/COMPtr.h>
-#include <WebKit/ForEachCoClass.h>
-#include <WebKit/WebKit.h>
-
-using namespace std;
-
-#ifndef NDEBUG
-const LPWSTR TestPluginDir = L"TestNetscapePlugin_Debug";
-#else
-const LPWSTR TestPluginDir = L"TestNetscapePlugin";
-#endif
-
-static LPCWSTR fontsEnvironmentVariable = L"WEBKIT_TESTFONTS";
-#define USE_MAC_FONTS
-
-const LPCWSTR kDumpRenderTreeClassName = L"DumpRenderTreeWindow";
-
-static bool dumpTree = true;
-static bool dumpPixels;
-static bool dumpAllPixels;
-static bool printSeparators;
-static bool leakChecking = false;
-static bool threaded = false;
-static bool forceComplexText = false;
-static RetainPtr<CFStringRef> persistentUserStyleSheetLocation;
-
-volatile bool done;
-// This is the topmost frame that is loading, during a given load, or nil when no load is
-// in progress. Usually this is the same as the main frame, but not always. In the case
-// where a frameset is loaded, and then new content is loaded into one of the child frames,
-// that child frame is the "topmost frame that is loading".
-IWebFrame* topLoadingFrame; // !nil iff a load is in progress
-static COMPtr<IWebHistoryItem> prevTestBFItem; // current b/f item at the end of the previous test
-IWebPolicyDelegate* policyDelegate;
-COMPtr<FrameLoadDelegate> sharedFrameLoadDelegate;
-COMPtr<UIDelegate> sharedUIDelegate;
-COMPtr<EditingDelegate> sharedEditingDelegate;
-COMPtr<ResourceLoadDelegate> sharedResourceLoadDelegate;
-
-IWebFrame* frame;
-HWND webViewWindow;
-
-LayoutTestController* gLayoutTestController = 0;
-CFRunLoopTimerRef waitToDumpWatchdog = 0;
-
-const unsigned maxViewWidth = 800;
-const unsigned maxViewHeight = 600;
-
-void setPersistentUserStyleSheetLocation(CFStringRef url)
-{
- persistentUserStyleSheetLocation = url;
-}
-
-wstring urlSuitableForTestResult(const wstring& url)
-{
- if (!url.c_str() || url.find(L"file://") == wstring::npos)
- return url;
-
- return PathFindFileNameW(url.c_str());
-}
-
-static LRESULT CALLBACK DumpRenderTreeWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
-{
- switch (msg) {
- case WM_DESTROY:
- for (unsigned i = openWindows().size() - 1; i >= 0; --i) {
- if (openWindows()[i] == hWnd) {
- openWindows().remove(i);
- windowToWebViewMap().remove(hWnd);
- break;
- }
- }
- return 0;
- break;
- default:
- return DefWindowProc(hWnd, msg, wParam, lParam);
- }
-}
-
-static const wstring& exePath()
-{
- static wstring path;
- static bool initialized;
-
- if (initialized)
- return path;
- initialized = true;
-
- TCHAR buffer[MAX_PATH];
- GetModuleFileName(GetModuleHandle(0), buffer, ARRAYSIZE(buffer));
- path = buffer;
- int lastSlash = path.rfind('\\');
- if (lastSlash != -1 && lastSlash + 1 < path.length())
- path = path.substr(0, lastSlash + 1);
-
- return path;
-}
-
-static const wstring& fontsPath()
-{
- static wstring path;
- static bool initialized;
-
- if (initialized)
- return path;
- initialized = true;
-
- DWORD size = GetEnvironmentVariable(fontsEnvironmentVariable, 0, 0);
- Vector<TCHAR> buffer(size);
- if (GetEnvironmentVariable(fontsEnvironmentVariable, buffer.data(), buffer.size())) {
- path = buffer.data();
- if (path[path.length() - 1] != '\\')
- path.append(L"\\");
- return path;
- }
-
- path = exePath() + TEXT("DumpRenderTree.resources\\");
- return path;
-}
-
-#ifdef DEBUG_WEBKIT_HAS_SUFFIX
-#define WEBKITDLL TEXT("WebKit_debug.dll")
-#else
-#define WEBKITDLL TEXT("WebKit.dll")
-#endif
-
-static void initialize()
-{
- if (HMODULE webKitModule = LoadLibrary(WEBKITDLL))
- if (FARPROC dllRegisterServer = GetProcAddress(webKitModule, "DllRegisterServer"))
- dllRegisterServer();
-
- // Init COM
- OleInitialize(0);
-
- static LPCTSTR fontsToInstall[] = {
- TEXT("AHEM____.ttf"),
- TEXT("Apple Chancery.ttf"),
- TEXT("Courier Bold.ttf"),
- TEXT("Courier.ttf"),
- TEXT("Helvetica Bold Oblique.ttf"),
- TEXT("Helvetica Bold.ttf"),
- TEXT("Helvetica Oblique.ttf"),
- TEXT("Helvetica.ttf"),
- TEXT("Helvetica Neue Bold Italic.ttf"),
- TEXT("Helvetica Neue Bold.ttf"),
- TEXT("Helvetica Neue Condensed Black.ttf"),
- TEXT("Helvetica Neue Condensed Bold.ttf"),
- TEXT("Helvetica Neue Italic.ttf"),
- TEXT("Helvetica Neue Light Italic.ttf"),
- TEXT("Helvetica Neue Light.ttf"),
- TEXT("Helvetica Neue UltraLight Italic.ttf"),
- TEXT("Helvetica Neue UltraLight.ttf"),
- TEXT("Helvetica Neue.ttf"),
- TEXT("Lucida Grande.ttf"),
- TEXT("Lucida Grande Bold.ttf"),
- TEXT("Monaco.ttf"),
- TEXT("Papyrus.ttf"),
- TEXT("Times Bold Italic.ttf"),
- TEXT("Times Bold.ttf"),
- TEXT("Times Italic.ttf"),
- TEXT("Times Roman.ttf"),
- TEXT("WebKit Layout Tests.ttf"),
- TEXT("WebKitWeightWatcher100.ttf"),
- TEXT("WebKitWeightWatcher200.ttf"),
- TEXT("WebKitWeightWatcher300.ttf"),
- TEXT("WebKitWeightWatcher400.ttf"),
- TEXT("WebKitWeightWatcher500.ttf"),
- TEXT("WebKitWeightWatcher600.ttf"),
- TEXT("WebKitWeightWatcher700.ttf"),
- TEXT("WebKitWeightWatcher800.ttf"),
- TEXT("WebKitWeightWatcher900.ttf")
- };
-
- wstring resourcesPath = fontsPath();
-
- COMPtr<IWebTextRenderer> textRenderer;
- if (SUCCEEDED(CoCreateInstance(CLSID_WebTextRenderer, 0, CLSCTX_ALL, IID_IWebTextRenderer, (void**)&textRenderer)))
- for (int i = 0; i < ARRAYSIZE(fontsToInstall); ++i)
- textRenderer->registerPrivateFont(wstring(resourcesPath + fontsToInstall[i]).c_str());
-
- // Register a host window
- WNDCLASSEX wcex;
-
- wcex.cbSize = sizeof(WNDCLASSEX);
-
- wcex.style = CS_HREDRAW | CS_VREDRAW;
- wcex.lpfnWndProc = DumpRenderTreeWndProc;
- wcex.cbClsExtra = 0;
- wcex.cbWndExtra = 0;
- wcex.hInstance = GetModuleHandle(0);
- wcex.hIcon = 0;
- wcex.hCursor = LoadCursor(0, IDC_ARROW);
- wcex.hbrBackground = 0;
- wcex.lpszMenuName = 0;
- wcex.lpszClassName = kDumpRenderTreeClassName;
- wcex.hIconSm = 0;
-
- RegisterClassEx(&wcex);
-}
-
-void displayWebView()
-{
- ::InvalidateRect(webViewWindow, 0, TRUE);
- ::UpdateWindow(webViewWindow);
-}
-
-void dumpFrameScrollPosition(IWebFrame* frame)
-{
- if (!frame)
- return;
-
- COMPtr<IWebFramePrivate> framePrivate;
- if (FAILED(frame->QueryInterface(&framePrivate)))
- return;
-
- SIZE scrollPosition;
- if (FAILED(framePrivate->scrollOffset(&scrollPosition)))
- return;
-
- if (abs(scrollPosition.cx) > 0.00000001 || abs(scrollPosition.cy) > 0.00000001) {
- COMPtr<IWebFrame> parent;
- if (FAILED(frame->parentFrame(&parent)))
- return;
- if (parent) {
- BSTR name;
- if (FAILED(frame->name(&name)))
- return;
- printf("frame '%S' ", name ? name : L"");
- SysFreeString(name);
- }
- printf("scrolled to %.f,%.f\n", (double)scrollPosition.cx, (double)scrollPosition.cy);
- }
-
- if (::gLayoutTestController->dumpChildFrameScrollPositions()) {
- COMPtr<IEnumVARIANT> enumKids;
- if (FAILED(frame->childFrames(&enumKids)))
- return;
- VARIANT var;
- VariantInit(&var);
- while (enumKids->Next(1, &var, 0) == S_OK) {
- ASSERT(V_VT(&var) == VT_UNKNOWN);
- COMPtr<IWebFrame> framePtr;
- V_UNKNOWN(&var)->QueryInterface(IID_IWebFrame, (void**)&framePtr);
- dumpFrameScrollPosition(framePtr.get());
- VariantClear(&var);
- }
- }
-}
-
-static wstring dumpFramesAsText(IWebFrame* frame)
-{
- if (!frame)
- return L"";
-
- COMPtr<IDOMDocument> document;
- if (FAILED(frame->DOMDocument(&document)))
- return L"";
-
- COMPtr<IDOMElement> documentElement;
- if (FAILED(document->documentElement(&documentElement)))
- return L"";
-
- wstring result;
-
- // Add header for all but the main frame.
- COMPtr<IWebFrame> parent;
- if (FAILED(frame->parentFrame(&parent)))
- return L"";
- if (parent) {
- BSTR name = L"";
- if (FAILED(frame->name(&name)))
- return L"";
-
- result.append(L"\n--------\nFrame: '");
- result.append(name ? name : L"", SysStringLen(name));
- result.append(L"'\n--------\n");
-
- SysFreeString(name);
- }
-
- BSTR innerText = 0;
- COMPtr<IDOMElementPrivate> docPrivate;
- if (SUCCEEDED(documentElement->QueryInterface(&docPrivate)))
- docPrivate->innerText(&innerText);
-
- result.append(innerText ? innerText : L"", SysStringLen(innerText));
- result.append(L"\n");
-
- SysFreeString(innerText);
-
- if (::gLayoutTestController->dumpChildFramesAsText()) {
- COMPtr<IEnumVARIANT> enumKids;
- if (FAILED(frame->childFrames(&enumKids)))
- return L"";
- VARIANT var;
- VariantInit(&var);
- while (enumKids->Next(1, &var, 0) == S_OK) {
- ASSERT(V_VT(&var) == VT_UNKNOWN);
- COMPtr<IWebFrame> framePtr;
- V_UNKNOWN(&var)->QueryInterface(IID_IWebFrame, (void**)&framePtr);
- result.append(dumpFramesAsText(framePtr.get()));
- VariantClear(&var);
- }
- }
-
- return result;
-}
-
-static int compareHistoryItems(const void* item1, const void* item2)
-{
- COMPtr<IWebHistoryItemPrivate> itemA;
- if (FAILED((*(COMPtr<IUnknown>*)item1)->QueryInterface(&itemA)))
- return 0;
-
- COMPtr<IWebHistoryItemPrivate> itemB;
- if (FAILED((*(COMPtr<IUnknown>*)item2)->QueryInterface(&itemB)))
- return 0;
-
- BSTR targetA;
- if (FAILED(itemA->target(&targetA)))
- return 0;
-
- BSTR targetB;
- if (FAILED(itemB->target(&targetB))) {
- SysFreeString(targetA);
- return 0;
- }
-
- int result = wcsicmp(wstring(targetA, SysStringLen(targetA)).c_str(), wstring(targetB, SysStringLen(targetB)).c_str());
- SysFreeString(targetA);
- SysFreeString(targetB);
- return result;
-}
-
-static void dumpHistoryItem(IWebHistoryItem* item, int indent, bool current)
-{
- assert(item);
-
- int start = 0;
- if (current) {
- printf("curr->");
- start = 6;
- }
- for (int i = start; i < indent; i++)
- putchar(' ');
-
- BSTR url;
- if (FAILED(item->URLString(&url)))
- return;
- printf("%S", url ? url : L"");
- SysFreeString(url);
-
- COMPtr<IWebHistoryItemPrivate> itemPrivate;
- if (FAILED(item->QueryInterface(&itemPrivate)))
- return;
-
- BSTR target;
- if (FAILED(itemPrivate->target(&target)))
- return;
- if (SysStringLen(target))
- printf(" (in frame \"%S\")", target);
- SysFreeString(target);
- BOOL isTargetItem = FALSE;
- if (FAILED(itemPrivate->isTargetItem(&isTargetItem)))
- return;
- if (isTargetItem)
- printf(" **nav target**");
- putchar('\n');
-
- unsigned kidsCount;
- SAFEARRAY* arrPtr;
- if (FAILED(itemPrivate->children(&kidsCount, &arrPtr)) || !kidsCount)
- return;
-
- Vector<COMPtr<IUnknown> > kidsVector;
-
- LONG lowerBound;
- if (FAILED(::SafeArrayGetLBound(arrPtr, 1, &lowerBound)))
- goto exit;
-
- LONG upperBound;
- if (FAILED(::SafeArrayGetUBound(arrPtr, 1, &upperBound)))
- goto exit;
-
- LONG length = upperBound - lowerBound + 1;
- if (!length)
- goto exit;
- ASSERT(length == kidsCount);
-
- IUnknown** safeArrayData;
- if (FAILED(::SafeArrayAccessData(arrPtr, (void**)&safeArrayData)))
- goto exit;
-
- for (int i = 0; i < length; ++i)
- kidsVector.append(safeArrayData[i]);
- ::SafeArrayUnaccessData(arrPtr);
-
- // must sort to eliminate arbitrary result ordering which defeats reproducible testing
- qsort(kidsVector.data(), kidsCount, sizeof(kidsVector[0]), compareHistoryItems);
-
- for (unsigned i = 0; i < kidsCount; ++i) {
- COMPtr<IWebHistoryItem> item;
- kidsVector[i]->QueryInterface(&item);
- dumpHistoryItem(item.get(), indent + 4, false);
- }
-
-exit:
- if (arrPtr && SUCCEEDED(::SafeArrayUnlock(arrPtr)))
- ::SafeArrayDestroy(arrPtr);
-}
-
-static void dumpBackForwardList(IWebView* webView)
-{
- ASSERT(webView);
-
- printf("\n============== Back Forward List ==============\n");
-
- COMPtr<IWebBackForwardList> bfList;
- if (FAILED(webView->backForwardList(&bfList)))
- return;
-
- // Print out all items in the list after prevTestBFItem, which was from the previous test
- // Gather items from the end of the list, the print them out from oldest to newest
-
- Vector<COMPtr<IUnknown> > itemsToPrint;
-
- int forwardListCount;
- if (FAILED(bfList->forwardListCount(&forwardListCount)))
- return;
-
- for (int i = forwardListCount; i > 0; --i) {
- COMPtr<IWebHistoryItem> item;
- if (FAILED(bfList->itemAtIndex(i, &item)))
- return;
- // something is wrong if the item from the last test is in the forward part of the b/f list
- assert(item != prevTestBFItem);
- COMPtr<IUnknown> itemUnknown;
- item->QueryInterface(&itemUnknown);
- itemsToPrint.append(itemUnknown);
- }
-
- COMPtr<IWebHistoryItem> currentItem;
- if (FAILED(bfList->currentItem(&currentItem)))
- return;
-
- assert(currentItem != prevTestBFItem);
- COMPtr<IUnknown> currentItemUnknown;
- currentItem->QueryInterface(&currentItemUnknown);
- itemsToPrint.append(currentItemUnknown);
- int currentItemIndex = itemsToPrint.size() - 1;
-
- int backListCount;
- if (FAILED(bfList->backListCount(&backListCount)))
- return;
-
- for (int i = -1; i >= -backListCount; --i) {
- COMPtr<IWebHistoryItem> item;
- if (FAILED(bfList->itemAtIndex(i, &item)))
- return;
- if (item == prevTestBFItem)
- break;
- COMPtr<IUnknown> itemUnknown;
- item->QueryInterface(&itemUnknown);
- itemsToPrint.append(itemUnknown);
- }
-
- for (int i = itemsToPrint.size() - 1; i >= 0; --i) {
- COMPtr<IWebHistoryItem> historyItemToPrint;
- itemsToPrint[i]->QueryInterface(&historyItemToPrint);
- dumpHistoryItem(historyItemToPrint.get(), 8, i == currentItemIndex);
- }
-
- printf("===============================================\n");
-}
-
-static void dumpBackForwardListForAllWindows()
-{
- unsigned count = openWindows().size();
- for (unsigned i = 0; i < count; i++) {
- HWND window = openWindows()[i];
- IWebView* webView = windowToWebViewMap().get(window);
- dumpBackForwardList(webView);
- }
-}
-
-void dump()
-{
- COMPtr<IWebDataSource> dataSource;
- if (SUCCEEDED(frame->dataSource(&dataSource))) {
- COMPtr<IWebURLResponse> response;
- if (SUCCEEDED(dataSource->response(&response)) && response) {
- BSTR mimeType;
- if (SUCCEEDED(response->MIMEType(&mimeType)))
- ::gLayoutTestController->setDumpAsText(::gLayoutTestController->dumpAsText() | !_tcscmp(mimeType, TEXT("text/plain")));
- SysFreeString(mimeType);
- }
- }
-
- BSTR resultString = 0;
-
- if (dumpTree) {
- if (::gLayoutTestController->dumpAsText()) {
- ::InvalidateRect(webViewWindow, 0, TRUE);
- ::SendMessage(webViewWindow, WM_PAINT, 0, 0);
- wstring result = dumpFramesAsText(frame);
- resultString = SysAllocStringLen(result.data(), result.size());
- } else {
- bool isSVGW3CTest = (gLayoutTestController->testPathOrURL().find("svg\\W3C-SVG-1.1") != string::npos);
- unsigned width;
- unsigned height;
- if (isSVGW3CTest) {
- width = 480;
- height = 360;
- } else {
- width = maxViewWidth;
- height = maxViewHeight;
- }
-
- ::SetWindowPos(webViewWindow, 0, 0, 0, width, height, SWP_NOMOVE);
- ::InvalidateRect(webViewWindow, 0, TRUE);
- ::SendMessage(webViewWindow, WM_PAINT, 0, 0);
-
- COMPtr<IWebFramePrivate> framePrivate;
- if (FAILED(frame->QueryInterface(&framePrivate)))
- goto fail;
- framePrivate->renderTreeAsExternalRepresentation(&resultString);
- }
-
- if (!resultString)
- printf("ERROR: nil result from %s", ::gLayoutTestController->dumpAsText() ? "IDOMElement::innerText" : "IFrameViewPrivate::renderTreeAsExternalRepresentation");
- else {
- unsigned stringLength = SysStringLen(resultString);
- int bufferSize = ::WideCharToMultiByte(CP_UTF8, 0, resultString, stringLength, 0, 0, 0, 0);
- char* buffer = (char*)malloc(bufferSize + 1);
- ::WideCharToMultiByte(CP_UTF8, 0, resultString, stringLength, buffer, bufferSize + 1, 0, 0);
- fwrite(buffer, 1, bufferSize, stdout);
- free(buffer);
- if (!::gLayoutTestController->dumpAsText())
- dumpFrameScrollPosition(frame);
- }
- if (::gLayoutTestController->dumpBackForwardList())
- dumpBackForwardListForAllWindows();
- }
-
- if (printSeparators) {
- puts("#EOF"); // terminate the content block
- fputs("#EOF\n", stderr);
- fflush(stdout);
- fflush(stderr);
- }
-
- if (dumpPixels) {
- if (!gLayoutTestController->dumpAsText() && !gLayoutTestController->dumpDOMAsWebArchive() && !gLayoutTestController->dumpSourceAsWebArchive())
- dumpWebViewAsPixelsAndCompareWithExpected(gLayoutTestController->expectedPixelHash());
- }
-
- printf("#EOF\n"); // terminate the (possibly empty) pixels block
- fflush(stdout);
-
-fail:
- SysFreeString(resultString);
- // This will exit from our message loop
- PostQuitMessage(0);
- done = true;
-}
-
-static bool shouldLogFrameLoadDelegates(const char* pathOrURL)
-{
- return strstr(pathOrURL, "loading/");
-}
-
-static void resetWebViewToConsistentStateBeforeTesting()
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return;
-
- webView->setPolicyDelegate(0);
-
- COMPtr<IWebIBActions> webIBActions(Query, webView);
- if (webIBActions) {
- webIBActions->makeTextStandardSize(0);
- webIBActions->resetPageZoom(0);
- }
-
- COMPtr<IWebPreferences> preferences;
- if (SUCCEEDED(webView->preferences(&preferences))) {
- preferences->setPrivateBrowsingEnabled(FALSE);
- preferences->setJavaScriptCanOpenWindowsAutomatically(TRUE);
-
- if (persistentUserStyleSheetLocation) {
- Vector<wchar_t> urlCharacters(CFStringGetLength(persistentUserStyleSheetLocation.get()));
- CFStringGetCharacters(persistentUserStyleSheetLocation.get(), CFRangeMake(0, CFStringGetLength(persistentUserStyleSheetLocation.get())), (UniChar *)urlCharacters.data());
- BSTR url = SysAllocStringLen(urlCharacters.data(), urlCharacters.size());
- preferences->setUserStyleSheetLocation(url);
- SysFreeString(url);
- preferences->setUserStyleSheetEnabled(TRUE);
- } else
- preferences->setUserStyleSheetEnabled(FALSE);
-
- COMPtr<IWebPreferencesPrivate> prefsPrivate(Query, preferences);
- if (prefsPrivate) {
- prefsPrivate->setAuthorAndUserStylesEnabled(TRUE);
- prefsPrivate->setDeveloperExtrasEnabled(FALSE);
- }
- }
-
- COMPtr<IWebViewEditing> viewEditing;
- if (SUCCEEDED(webView->QueryInterface(&viewEditing)))
- viewEditing->setSmartInsertDeleteEnabled(TRUE);
-
- COMPtr<IWebViewPrivate> webViewPrivate(Query, webView);
- if (!webViewPrivate)
- return;
-
- COMPtr<IWebInspector> inspector;
- if (SUCCEEDED(webViewPrivate->inspector(&inspector)))
- inspector->setJavaScriptProfilingEnabled(FALSE);
-
- HWND viewWindow;
- if (SUCCEEDED(webViewPrivate->viewWindow(reinterpret_cast<OLE_HANDLE*>(&viewWindow))) && viewWindow)
- SetFocus(viewWindow);
-
- webViewPrivate->clearMainFrameName();
-}
-
-static void runTest(const string& testPathOrURL)
-{
- static BSTR methodBStr = SysAllocString(TEXT("GET"));
-
- // Look for "'" as a separator between the path or URL, and the pixel dump hash that follows.
- string pathOrURL(testPathOrURL);
- string expectedPixelHash;
-
- size_t separatorPos = pathOrURL.find("'");
- if (separatorPos != string::npos) {
- pathOrURL = string(testPathOrURL, 0, separatorPos);
- expectedPixelHash = string(testPathOrURL, separatorPos + 1);
- }
-
- BSTR urlBStr;
-
- CFStringRef str = CFStringCreateWithCString(0, pathOrURL.c_str(), kCFStringEncodingWindowsLatin1);
- CFURLRef url = CFURLCreateWithString(0, str, 0);
-
- if (!url)
- url = CFURLCreateWithFileSystemPath(0, str, kCFURLWindowsPathStyle, false);
-
- CFRelease(str);
-
- str = CFURLGetString(url);
-
- CFIndex length = CFStringGetLength(str);
- UniChar* buffer = new UniChar[length];
-
- CFStringGetCharacters(str, CFRangeMake(0, length), buffer);
- urlBStr = SysAllocStringLen((OLECHAR*)buffer, length);
- delete[] buffer;
-
- CFRelease(url);
-
- ::gLayoutTestController = new LayoutTestController(pathOrURL, expectedPixelHash);
- done = false;
- topLoadingFrame = 0;
-
- if (shouldLogFrameLoadDelegates(pathOrURL.c_str()))
- gLayoutTestController->setDumpFrameLoadCallbacks(true);
-
- COMPtr<IWebHistory> history(Create, CLSID_WebHistory);
- if (history)
- history->setOptionalSharedHistory(0);
-
- resetWebViewToConsistentStateBeforeTesting();
- sharedUIDelegate->resetUndoManager();
-
- prevTestBFItem = 0;
- COMPtr<IWebView> webView;
- if (SUCCEEDED(frame->webView(&webView))) {
- COMPtr<IWebBackForwardList> bfList;
- if (SUCCEEDED(webView->backForwardList(&bfList)))
- bfList->currentItem(&prevTestBFItem);
- }
-
- WorkQueue::shared()->clear();
- WorkQueue::shared()->setFrozen(false);
-
- HWND hostWindow;
- webView->hostWindow(reinterpret_cast<OLE_HANDLE*>(&hostWindow));
-
- COMPtr<IWebMutableURLRequest> request;
- HRESULT hr = CoCreateInstance(CLSID_WebMutableURLRequest, 0, CLSCTX_ALL, IID_IWebMutableURLRequest, (void**)&request);
- if (FAILED(hr))
- goto exit;
-
- request->initWithURL(urlBStr, WebURLRequestUseProtocolCachePolicy, 60);
-
- request->setHTTPMethod(methodBStr);
- frame->loadRequest(request.get());
-
- MSG msg;
- while (GetMessage(&msg, 0, 0, 0)) {
- // We get spurious WM_MOUSELEAVE events which make event handling machinery think that mouse button
- // is released during dragging (see e.g. fast\dynamic\layer-hit-test-crash.html).
- // Mouse can never leave WebView during normal DumpRenderTree operation, so we just ignore all such events.
- if (msg.message == WM_MOUSELEAVE)
- continue;
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
-
- frame->stopLoading();
-
- if (::gLayoutTestController->closeRemainingWindowsWhenComplete()) {
- Vector<HWND> windows = openWindows();
- unsigned size = windows.size();
- for (unsigned i = 0; i < size; i++) {
- HWND window = windows[i];
-
- // Don't try to close the main window
- if (window == hostWindow)
- continue;
-
- DestroyWindow(window);
- }
- }
-
-exit:
- SysFreeString(urlBStr);
- ::gLayoutTestController->deref();
- ::gLayoutTestController = 0;
-
- return;
-}
-
-static void initializePreferences(IWebPreferences* preferences)
-{
-#ifdef USE_MAC_FONTS
- BSTR standardFamily = SysAllocString(TEXT("Times"));
- BSTR fixedFamily = SysAllocString(TEXT("Courier"));
- BSTR sansSerifFamily = SysAllocString(TEXT("Helvetica"));
- BSTR cursiveFamily = SysAllocString(TEXT("Apple Chancery"));
- BSTR fantasyFamily = SysAllocString(TEXT("Papyrus"));
-#else
- BSTR standardFamily = SysAllocString(TEXT("Times New Roman"));
- BSTR fixedFamily = SysAllocString(TEXT("Courier New"));
- BSTR sansSerifFamily = SysAllocString(TEXT("Arial"));
- BSTR cursiveFamily = SysAllocString(TEXT("Comic Sans MS")); // Not actually cursive, but it's what IE and Firefox use.
- BSTR fantasyFamily = SysAllocString(TEXT("Times New Roman"));
-#endif
-
- preferences->setStandardFontFamily(standardFamily);
- preferences->setFixedFontFamily(fixedFamily);
- preferences->setSerifFontFamily(standardFamily);
- preferences->setSansSerifFontFamily(sansSerifFamily);
- preferences->setCursiveFontFamily(cursiveFamily);
- preferences->setFantasyFontFamily(fantasyFamily);
-
- preferences->setAutosaves(FALSE);
- preferences->setJavaEnabled(FALSE);
- preferences->setPlugInsEnabled(TRUE);
- preferences->setDOMPasteAllowed(TRUE);
- preferences->setEditableLinkBehavior(WebKitEditableLinkOnlyLiveWithShiftKey);
- preferences->setFontSmoothing(FontSmoothingTypeStandard);
- preferences->setUsesPageCache(FALSE);
-
- SysFreeString(standardFamily);
- SysFreeString(fixedFamily);
- SysFreeString(sansSerifFamily);
- SysFreeString(cursiveFamily);
- SysFreeString(fantasyFamily);
-}
-
-static Boolean pthreadEqualCallback(const void* value1, const void* value2)
-{
- return (Boolean)pthread_equal(*(pthread_t*)value1, *(pthread_t*)value2);
-}
-
-static CFDictionaryKeyCallBacks pthreadKeyCallbacks = { 0, 0, 0, 0, pthreadEqualCallback, 0 };
-
-static pthread_mutex_t javaScriptThreadsMutex = PTHREAD_MUTEX_INITIALIZER;
-static bool javaScriptThreadsShouldTerminate;
-
-static const int javaScriptThreadsCount = 4;
-static CFMutableDictionaryRef javaScriptThreads()
-{
- assert(pthread_mutex_trylock(&javaScriptThreadsMutex) == EBUSY);
- static CFMutableDictionaryRef staticJavaScriptThreads;
- if (!staticJavaScriptThreads)
- staticJavaScriptThreads = CFDictionaryCreateMutable(0, 0, &pthreadKeyCallbacks, 0);
- return staticJavaScriptThreads;
-}
-
-// Loops forever, running a script and randomly respawning, until
-// javaScriptThreadsShouldTerminate becomes true.
-void* runJavaScriptThread(void* arg)
-{
- const char* const script =
- " \
- var array = []; \
- for (var i = 0; i < 10; i++) { \
- array.push(String(i)); \
- } \
- ";
-
- while (true) {
- JSGlobalContextRef ctx = JSGlobalContextCreate(0);
- JSStringRef scriptRef = JSStringCreateWithUTF8CString(script);
-
- JSValueRef exception = 0;
- JSEvaluateScript(ctx, scriptRef, 0, 0, 1, &exception);
- assert(!exception);
-
- JSGlobalContextRelease(ctx);
- JSStringRelease(scriptRef);
-
- JSGarbageCollect(ctx);
-
- pthread_mutex_lock(&javaScriptThreadsMutex);
-
- // Check for cancellation.
- if (javaScriptThreadsShouldTerminate) {
- pthread_mutex_unlock(&javaScriptThreadsMutex);
- return 0;
- }
-
- // Respawn probabilistically.
- if (rand() % 5 == 0) {
- pthread_t pthread;
- pthread_create(&pthread, 0, &runJavaScriptThread, 0);
- pthread_detach(pthread);
-
- pthread_t self = pthread_self();
- CFDictionaryRemoveValue(javaScriptThreads(), self.p);
- CFDictionaryAddValue(javaScriptThreads(), pthread.p, 0);
-
- pthread_mutex_unlock(&javaScriptThreadsMutex);
- return 0;
- }
-
- pthread_mutex_unlock(&javaScriptThreadsMutex);
- }
-}
-
-static void startJavaScriptThreads(void)
-{
- pthread_mutex_lock(&javaScriptThreadsMutex);
-
- for (int i = 0; i < javaScriptThreadsCount; i++) {
- pthread_t pthread;
- pthread_create(&pthread, 0, &runJavaScriptThread, 0);
- pthread_detach(pthread);
- CFDictionaryAddValue(javaScriptThreads(), pthread.p, 0);
- }
-
- pthread_mutex_unlock(&javaScriptThreadsMutex);
-}
-
-static void stopJavaScriptThreads(void)
-{
- pthread_mutex_lock(&javaScriptThreadsMutex);
-
- javaScriptThreadsShouldTerminate = true;
-
- pthread_t* pthreads[javaScriptThreadsCount] = {0};
- int threadDictCount = CFDictionaryGetCount(javaScriptThreads());
- assert(threadDictCount == javaScriptThreadsCount);
- CFDictionaryGetKeysAndValues(javaScriptThreads(), (const void**)pthreads, 0);
-
- pthread_mutex_unlock(&javaScriptThreadsMutex);
-
- for (int i = 0; i < javaScriptThreadsCount; i++) {
- pthread_t* pthread = pthreads[i];
- pthread_join(*pthread, 0);
- free(pthread);
- }
-}
-
-Vector<HWND>& openWindows()
-{
- static Vector<HWND> vector;
- return vector;
-}
-
-HashMap<HWND, IWebView*>& windowToWebViewMap()
-{
- static HashMap<HWND, IWebView*> map;
- return map;
-}
-
-IWebView* createWebViewAndOffscreenWindow(HWND* webViewWindow)
-{
- HWND hostWindow = CreateWindowEx(WS_EX_TOOLWINDOW, kDumpRenderTreeClassName, TEXT("DumpRenderTree"), WS_POPUP,
- -maxViewWidth, -maxViewHeight, maxViewWidth, maxViewHeight, 0, 0, GetModuleHandle(0), 0);
-
- IWebView* webView;
-
- HRESULT hr = CoCreateInstance(CLSID_WebView, 0, CLSCTX_ALL, IID_IWebView, (void**)&webView);
- if (FAILED(hr)) {
- fprintf(stderr, "Failed to create CLSID_WebView instance, error 0x%x\n", hr);
- return 0;
- }
-
- if (FAILED(webView->setHostWindow((OLE_HANDLE)(ULONG64)hostWindow)))
- return 0;
-
- RECT clientRect;
- clientRect.bottom = clientRect.left = clientRect.top = clientRect.right = 0;
- BSTR groupName = SysAllocString(L"org.webkit.DumpRenderTree");
- bool failed = FAILED(webView->initWithFrame(clientRect, 0, groupName));
- SysFreeString(groupName);
- if (failed)
- return 0;
-
- COMPtr<IWebViewPrivate> viewPrivate;
- if (FAILED(webView->QueryInterface(&viewPrivate)))
- return 0;
-
- viewPrivate->setShouldApplyMacFontAscentHack(TRUE);
- viewPrivate->setAlwaysUsesComplexTextCodePath(forceComplexText);
-
- BSTR pluginPath = SysAllocStringLen(0, exePath().length() + _tcslen(TestPluginDir));
- _tcscpy(pluginPath, exePath().c_str());
- _tcscat(pluginPath, TestPluginDir);
- failed = FAILED(viewPrivate->addAdditionalPluginDirectory(pluginPath));
- SysFreeString(pluginPath);
- if (failed)
- return 0;
-
- HWND viewWindow;
- if (FAILED(viewPrivate->viewWindow(reinterpret_cast<OLE_HANDLE*>(&viewWindow))))
- return 0;
- if (webViewWindow)
- *webViewWindow = viewWindow;
-
- SetWindowPos(viewWindow, 0, 0, 0, maxViewWidth, maxViewHeight, 0);
- ShowWindow(hostWindow, SW_SHOW);
-
- if (FAILED(webView->setFrameLoadDelegate(sharedFrameLoadDelegate.get())))
- return 0;
-
- if (FAILED(viewPrivate->setFrameLoadDelegatePrivate(sharedFrameLoadDelegate.get())))
- return 0;
-
- if (FAILED(webView->setUIDelegate(sharedUIDelegate.get())))
- return 0;
-
- COMPtr<IWebViewEditing> viewEditing;
- if (FAILED(webView->QueryInterface(&viewEditing)))
- return 0;
-
- if (FAILED(viewEditing->setEditingDelegate(sharedEditingDelegate.get())))
- return 0;
-
- if (FAILED(webView->setResourceLoadDelegate(sharedResourceLoadDelegate.get())))
- return 0;
-
- COMPtr<IWebPreferences> preferences;
- if (FAILED(webView->preferences(&preferences)))
- return 0;
-
- initializePreferences(preferences.get());
-
- openWindows().append(hostWindow);
- windowToWebViewMap().set(hostWindow, webView);
- return webView;
-}
-
-int main(int argc, char* argv[])
-{
- leakChecking = false;
-
- _setmode(1, _O_BINARY);
- _setmode(2, _O_BINARY);
-
- initialize();
-
- Vector<const char*> tests;
-
- for (int i = 1; i < argc; ++i) {
- if (!stricmp(argv[i], "--threaded")) {
- threaded = true;
- continue;
- }
-
- if (!stricmp(argv[i], "--dump-all-pixels")) {
- dumpAllPixels = true;
- continue;
- }
-
- if (!stricmp(argv[i], "--pixel-tests")) {
- dumpPixels = true;
- continue;
- }
-
- if (!stricmp(argv[i], "--complex-text")) {
- forceComplexText = true;
- continue;
- }
-
- tests.append(argv[i]);
- }
-
- policyDelegate = new PolicyDelegate();
- sharedFrameLoadDelegate.adoptRef(new FrameLoadDelegate);
- sharedUIDelegate.adoptRef(new UIDelegate);
- sharedEditingDelegate.adoptRef(new EditingDelegate);
- sharedResourceLoadDelegate.adoptRef(new ResourceLoadDelegate);
-
- COMPtr<IWebView> webView(AdoptCOM, createWebViewAndOffscreenWindow(&webViewWindow));
- if (!webView)
- return -1;
-
- COMPtr<IWebIconDatabase> iconDatabase;
- COMPtr<IWebIconDatabase> tmpIconDatabase;
- if (FAILED(CoCreateInstance(CLSID_WebIconDatabase, 0, CLSCTX_ALL, IID_IWebIconDatabase, (void**)&tmpIconDatabase)))
- return -1;
- if (FAILED(tmpIconDatabase->sharedIconDatabase(&iconDatabase)))
- return -1;
-
- if (FAILED(webView->mainFrame(&frame)))
- return -1;
-
- CFURLCacheRemoveAllCachedResponses(CFURLCacheSharedURLCache());
-
-#ifdef _DEBUG
- _CrtMemState entryToMainMemCheckpoint;
- if (leakChecking)
- _CrtMemCheckpoint(&entryToMainMemCheckpoint);
-#endif
-
- if (threaded)
- startJavaScriptThreads();
-
- if (tests.size() == 1 && !strcmp(tests[0], "-")) {
- char filenameBuffer[2048];
- printSeparators = true;
- while (fgets(filenameBuffer, sizeof(filenameBuffer), stdin)) {
- char* newLineCharacter = strchr(filenameBuffer, '\n');
- if (newLineCharacter)
- *newLineCharacter = '\0';
-
- if (strlen(filenameBuffer) == 0)
- continue;
-
- runTest(filenameBuffer);
- }
- } else {
- printSeparators = tests.size() > 1;
- for (int i = 0; i < tests.size(); i++)
- runTest(tests[i]);
- }
-
- if (threaded)
- stopJavaScriptThreads();
-
- delete policyDelegate;
- frame->Release();
-
-#ifdef _DEBUG
- if (leakChecking) {
- // dump leaks to stderr
- _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
- _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR);
- _CrtMemDumpAllObjectsSince(&entryToMainMemCheckpoint);
- }
-#endif
-
- shutDownWebKit();
-
- return 0;
-}
diff --git a/WebKitTools/DumpRenderTree/win/DumpRenderTree.vcproj b/WebKitTools/DumpRenderTree/win/DumpRenderTree.vcproj
deleted file mode 100644
index e094bde..0000000
--- a/WebKitTools/DumpRenderTree/win/DumpRenderTree.vcproj
+++ /dev/null
@@ -1,411 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="DumpRenderTree"
- ProjectGUID="{6567DFD4-D6DE-4CD5-825D-17E353D160E1}"
- RootNamespace="DumpRenderTree"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- ConfigurationType="1"
- InheritedPropertySheets="$(WebKitLibrariesDir)\tools\vsprops\common.vsprops;$(WebKitLibrariesDir)\tools\vsprops\debug.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- CommandLine="set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; grep XX$(ProjectName)XX &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;if errorlevel 1 exit 1&#x0D;&#x0A;echo XX$(ProjectName)XX &gt; &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\DumpRenderTree&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\DumpRenderTree\ForwardingHeaders&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\DumpRenderTree\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\*.h&quot; &quot;$(WebKitOutputDir)\include\DumpRenderTree\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="&quot;$(ProjectDir)\.&quot;;&quot;$(ProjectDir)\..&quot;;&quot;$(ProjectDir)\..\cg&quot;;&quot;$(WebKitOutputDir)\Include&quot;;&quot;$(WebKitOutputDir)\Include\DumpRenderTree\ForwardingHeaders&quot;;&quot;$(WebKitOutputDir)\Include\JavaScriptCore&quot;;&quot;$(WebKitLibrariesDir)\Include&quot;;&quot;$(WebKitLibrariesDir)\include\pthreads&quot;;&quot;$(WebKitOutputDir)\Include\WebCore&quot;;&quot;$(WebKitLibrariesDir)\Include\WebCore&quot;;&quot;$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders&quot;;&quot;$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility&quot;"
- PreprocessorDefinitions="_CONSOLE"
- DisableSpecificWarnings="4146"
- ForcedIncludeFiles="DumpRenderTreePrefix.h"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="WebKitGUID$(WebKitConfigSuffix).lib WebKit$(WebKitDLLConfigSuffix).lib WTF$(WebKitConfigSuffix).lib CoreGraphics$(LibraryConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib CFNetwork$(LibraryConfigSuffix).lib pthreadVC2$(LibraryConfigSuffix).lib gdi32.lib ole32.lib oleaut32.lib user32.lib shlwapi.lib oleacc.lib"
- AdditionalLibraryDirectories=""
- DelayLoadDLLs=""
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- TypeLibraryFile="$(WebKitOutputDir)\lib\WebKit.tlb"
- ComponentFileName="WebKit$(WebKitDLLConfigSuffix)"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- CommandLine="if exist &quot;$(WebKitOutputDir)\buildfailed&quot; del &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;&#x0D;&#x0A;if &quot;$(ARCHIVE_BUILD)&quot;==&quot;&quot; (if not &quot;$(PRODUCTION)&quot;==&quot;&quot; exit /b)&#x0D;&#x0A;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;&#x0D;&#x0A;if not exist &quot;$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll&quot; exit /b&#x0D;&#x0A;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d /e /i &quot;$(WebKitLibrariesDir)\bin\CFNetwork.resources&quot; &quot;$(WebKitOutputDir)\bin\CFNetwork.resources&quot;&#x0D;&#x0A;xcopy /y /d /e /i &quot;$(WebKitLibrariesDir)\bin\CoreFoundation.resources&quot; &quot;$(WebKitOutputDir)\bin\CoreFoundation.resources&quot;&#x0D;&#x0A;xcopy /y /d /e /i &quot;$(WebKitLibrariesDir)\bin\CharacterSets&quot; &quot;$(WebKitOutputDir)\bin\CharacterSets&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\dnssd.dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\icudt40.dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\libxml2$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\libxslt$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- ConfigurationType="1"
- InheritedPropertySheets="$(WebKitLibrariesDir)\tools\vsprops\common.vsprops;$(WebKitLibrariesDir)\tools\vsprops\release.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- CommandLine="set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; grep XX$(ProjectName)XX &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;if errorlevel 1 exit 1&#x0D;&#x0A;echo XX$(ProjectName)XX &gt; &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\DumpRenderTree&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\DumpRenderTree\ForwardingHeaders&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\DumpRenderTree\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\*.h&quot; &quot;$(WebKitOutputDir)\include\DumpRenderTree\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="&quot;$(ProjectDir)\.&quot;;&quot;$(ProjectDir)\..&quot;;&quot;$(ProjectDir)\..\cg&quot;;&quot;$(WebKitOutputDir)\Include&quot;;&quot;$(WebKitOutputDir)\Include\DumpRenderTree\ForwardingHeaders&quot;;&quot;$(WebKitOutputDir)\Include\JavaScriptCore&quot;;&quot;$(WebKitLibrariesDir)\Include&quot;;&quot;$(WebKitLibrariesDir)\include\pthreads&quot;;&quot;$(WebKitOutputDir)\Include\WebCore&quot;;&quot;$(WebKitLibrariesDir)\Include\WebCore&quot;;&quot;$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders&quot;;&quot;$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility&quot;"
- PreprocessorDefinitions="_CONSOLE"
- DisableSpecificWarnings="4146"
- ForcedIncludeFiles="DumpRenderTreePrefix.h"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="WebKitGUID$(WebKitConfigSuffix).lib WebKit$(WebKitDLLConfigSuffix).lib WTF$(WebKitConfigSuffix).lib CoreGraphics$(LibraryConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib CFNetwork$(LibraryConfigSuffix).lib pthreadVC2$(LibraryConfigSuffix).lib gdi32.lib ole32.lib oleaut32.lib user32.lib shlwapi.lib oleacc.lib"
- AdditionalLibraryDirectories=""
- DelayLoadDLLs=""
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- TypeLibraryFile="$(WebKitOutputDir)\lib\WebKit.tlb"
- ComponentFileName="WebKit$(WebKitDLLConfigSuffix)"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- CommandLine="if exist &quot;$(WebKitOutputDir)\buildfailed&quot; del &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;&#x0D;&#x0A;if &quot;$(ARCHIVE_BUILD)&quot;==&quot;&quot; (if not &quot;$(PRODUCTION)&quot;==&quot;&quot; exit /b)&#x0D;&#x0A;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;&#x0D;&#x0A;if not exist &quot;$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll&quot; exit /b&#x0D;&#x0A;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d /e /i &quot;$(WebKitLibrariesDir)\bin\CFNetwork.resources&quot; &quot;$(WebKitOutputDir)\bin\CFNetwork.resources&quot;&#x0D;&#x0A;xcopy /y /d /e /i &quot;$(WebKitLibrariesDir)\bin\CoreFoundation.resources&quot; &quot;$(WebKitOutputDir)\bin\CoreFoundation.resources&quot;&#x0D;&#x0A;xcopy /y /d /e /i &quot;$(WebKitLibrariesDir)\bin\CharacterSets&quot; &quot;$(WebKitOutputDir)\bin\CharacterSets&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\dnssd.dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\icudt40.dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\libxml2$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\libxslt$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;"
- />
- </Configuration>
- <Configuration
- Name="Debug_Internal|Win32"
- ConfigurationType="1"
- InheritedPropertySheets="$(WebKitLibrariesDir)\tools\vsprops\common.vsprops;$(WebKitLibrariesDir)\tools\vsprops\debug.vsprops;$(WebKitLibrariesDir)\tools\vsprops\debug_internal.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- CommandLine="set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; grep XX$(ProjectName)XX &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;if errorlevel 1 exit 1&#x0D;&#x0A;echo XX$(ProjectName)XX &gt; &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\DumpRenderTree&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\DumpRenderTree\ForwardingHeaders&quot;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\include\DumpRenderTree\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;&#x0D;&#x0A;xcopy /y /d &quot;$(ProjectDir)\..\ForwardingHeaders\wtf\*.h&quot; &quot;$(WebKitOutputDir)\include\DumpRenderTree\ForwardingHeaders\wtf&quot;&#x0D;&#x0A;"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="&quot;$(ProjectDir)\.&quot;;&quot;$(ProjectDir)\..&quot;;&quot;$(ProjectDir)\..\cg&quot;;&quot;$(WebKitOutputDir)\Include&quot;;&quot;$(WebKitOutputDir)\Include\DumpRenderTree\ForwardingHeaders&quot;;&quot;$(WebKitOutputDir)\Include\JavaScriptCore&quot;;&quot;$(WebKitLibrariesDir)\Include&quot;;&quot;$(WebKitLibrariesDir)\include\pthreads&quot;;&quot;$(WebKitOutputDir)\Include\WebCore&quot;;&quot;$(WebKitLibrariesDir)\Include\WebCore&quot;;&quot;$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders&quot;;&quot;$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility&quot;"
- PreprocessorDefinitions="_CONSOLE;DEBUG_WEBKIT_HAS_SUFFIX"
- DisableSpecificWarnings="4146"
- ForcedIncludeFiles="DumpRenderTreePrefix.h"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="WebKitGUID$(WebKitConfigSuffix).lib WebKit$(WebKitDLLConfigSuffix).lib WTF$(WebKitConfigSuffix).lib CoreGraphics$(LibraryConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib CFNetwork$(LibraryConfigSuffix).lib pthreadVC2$(LibraryConfigSuffix).lib gdi32.lib ole32.lib oleaut32.lib user32.lib shlwapi.lib oleacc.lib"
- AdditionalLibraryDirectories=""
- DelayLoadDLLs=""
- SubSystem="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- TypeLibraryFile="$(WebKitOutputDir)\lib\WebKit.tlb"
- ComponentFileName="WebKit$(WebKitDLLConfigSuffix)"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- CommandLine="if exist &quot;$(WebKitOutputDir)\buildfailed&quot; del &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;&#x0D;&#x0A;if &quot;$(ARCHIVE_BUILD)&quot;==&quot;&quot; (if not &quot;$(PRODUCTION)&quot;==&quot;&quot; exit /b)&#x0D;&#x0A;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;&#x0D;&#x0A;if not exist &quot;$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll&quot; exit /b&#x0D;&#x0A;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d /e /i &quot;$(WebKitLibrariesDir)\bin\CFNetwork.resources&quot; &quot;$(WebKitOutputDir)\bin\CFNetwork.resources&quot;&#x0D;&#x0A;xcopy /y /d /e /i &quot;$(WebKitLibrariesDir)\bin\CoreFoundation.resources&quot; &quot;$(WebKitOutputDir)\bin\CoreFoundation.resources&quot;&#x0D;&#x0A;xcopy /y /d /e /i &quot;$(WebKitLibrariesDir)\bin\CharacterSets&quot; &quot;$(WebKitOutputDir)\bin\CharacterSets&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\dnssd.dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\icudt40.dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\libxml2$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\libxslt$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Controllers"
- >
- <File
- RelativePath="..\AccessibilityController.cpp"
- >
- </File>
- <File
- RelativePath="..\AccessibilityController.h"
- >
- </File>
- <File
- RelativePath=".\AccessibilityControllerWin.cpp"
- >
- </File>
- <File
- RelativePath=".\EventSender.cpp"
- >
- </File>
- <File
- RelativePath=".\EventSender.h"
- >
- </File>
- <File
- RelativePath="..\GCController.cpp"
- >
- </File>
- <File
- RelativePath="..\GCController.h"
- >
- </File>
- <File
- RelativePath=".\GCControllerWin.cpp"
- >
- </File>
- <File
- RelativePath="..\LayoutTestController.cpp"
- >
- </File>
- <File
- RelativePath="..\LayoutTestController.h"
- >
- </File>
- <File
- RelativePath=".\LayoutTestControllerWin.cpp"
- >
- </File>
- </Filter>
- <Filter
- Name="Delegates"
- >
- <File
- RelativePath=".\EditingDelegate.cpp"
- >
- </File>
- <File
- RelativePath=".\EditingDelegate.h"
- >
- </File>
- <File
- RelativePath=".\FrameLoadDelegate.cpp"
- >
- </File>
- <File
- RelativePath=".\FrameLoadDelegate.h"
- >
- </File>
- <File
- RelativePath=".\PolicyDelegate.cpp"
- >
- </File>
- <File
- RelativePath=".\PolicyDelegate.h"
- >
- </File>
- <File
- RelativePath=".\ResourceLoadDelegate.cpp"
- >
- </File>
- <File
- RelativePath=".\ResourceLoadDelegate.h"
- >
- </File>
- <File
- RelativePath=".\UIDelegate.cpp"
- >
- </File>
- <File
- RelativePath=".\UIDelegate.h"
- >
- </File>
- </Filter>
- <File
- RelativePath="..\AccessibilityUIElement.cpp"
- >
- </File>
- <File
- RelativePath="..\AccessibilityUIElement.h"
- >
- </File>
- <File
- RelativePath=".\AccessibilityUIElementWin.cpp"
- >
- </File>
- <File
- RelativePath=".\DraggingInfo.h"
- >
- </File>
- <File
- RelativePath=".\DumpRenderTree.cpp"
- >
- </File>
- <File
- RelativePath="..\DumpRenderTree.h"
- >
- </File>
- <File
- RelativePath="..\DumpRenderTreePrefix.h"
- >
- </File>
- <File
- RelativePath=".\DumpRenderTreeWin.h"
- >
- </File>
- <File
- RelativePath=".\MD5.cpp"
- >
- </File>
- <File
- RelativePath=".\MD5.h"
- >
- </File>
- <File
- RelativePath=".\PixelDumpSupport.h"
- >
- </File>
- <File
- RelativePath="..\cg\PixelDumpSupportCG.cpp"
- >
- </File>
- <File
- RelativePath="..\cg\PixelDumpSupportCG.h"
- >
- </File>
- <File
- RelativePath=".\PixelDumpSupportWin.cpp"
- >
- </File>
- <File
- RelativePath="..\WorkQueue.cpp"
- >
- </File>
- <File
- RelativePath="..\WorkQueue.h"
- >
- </File>
- <File
- RelativePath="..\WorkQueueItem.h"
- >
- </File>
- <File
- RelativePath=".\WorkQueueItemWin.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/WebKitTools/DumpRenderTree/win/DumpRenderTreeWin.h b/WebKitTools/DumpRenderTree/win/DumpRenderTreeWin.h
deleted file mode 100644
index 45ce0dc..0000000
--- a/WebKitTools/DumpRenderTree/win/DumpRenderTreeWin.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef DumpRenderTreeWin_h
-#define DumpRenderTreeWin_h
-
-struct IWebFrame;
-struct IWebPolicyDelegate;
-struct IWebView;
-typedef const struct __CFString* CFStringRef;
-typedef struct HWND__* HWND;
-
-extern IWebFrame* topLoadingFrame;
-extern IWebFrame* frame;
-extern IWebPolicyDelegate* policyDelegate;
-
-extern HWND webViewWindow;
-
-#include <string>
-#include <wtf/HashMap.h>
-#include <wtf/Vector.h>
-
-std::wstring urlSuitableForTestResult(const std::wstring& url);
-IWebView* createWebViewAndOffscreenWindow(HWND* webViewWindow = 0);
-Vector<HWND>& openWindows();
-HashMap<HWND, IWebView*>& windowToWebViewMap();
-
-void setPersistentUserStyleSheetLocation(CFStringRef);
-
-#endif // DumpRenderTreeWin_h
diff --git a/WebKitTools/DumpRenderTree/win/EditingDelegate.cpp b/WebKitTools/DumpRenderTree/win/EditingDelegate.cpp
deleted file mode 100644
index 32c02bd..0000000
--- a/WebKitTools/DumpRenderTree/win/EditingDelegate.cpp
+++ /dev/null
@@ -1,355 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "EditingDelegate.h"
-
-#include "DumpRenderTree.h"
-#include "LayoutTestController.h"
-#include <WebCore/COMPtr.h>
-#include <wtf/Platform.h>
-#include <JavaScriptCore/Assertions.h>
-#include <string>
-#include <tchar.h>
-
-using std::wstring;
-
-EditingDelegate::EditingDelegate()
- : m_refCount(1)
- , m_acceptsEditing(true)
-{
-}
-
-// IUnknown
-HRESULT STDMETHODCALLTYPE EditingDelegate::QueryInterface(REFIID riid, void** ppvObject)
-{
- *ppvObject = 0;
- if (IsEqualGUID(riid, IID_IUnknown))
- *ppvObject = static_cast<IWebEditingDelegate*>(this);
- else if (IsEqualGUID(riid, IID_IWebEditingDelegate))
- *ppvObject = static_cast<IWebEditingDelegate*>(this);
- else
- return E_NOINTERFACE;
-
- AddRef();
- return S_OK;
-}
-
-ULONG STDMETHODCALLTYPE EditingDelegate::AddRef(void)
-{
- return ++m_refCount;
-}
-
-ULONG STDMETHODCALLTYPE EditingDelegate::Release(void)
-{
- ULONG newRef = --m_refCount;
- if (!newRef)
- delete this;
-
- return newRef;
-}
-
-static wstring dumpPath(IDOMNode* node)
-{
- ASSERT(node);
-
- wstring result;
-
- BSTR name;
- if (FAILED(node->nodeName(&name)))
- return result;
- result.assign(name, SysStringLen(name));
- SysFreeString(name);
-
- COMPtr<IDOMNode> parent;
- if (SUCCEEDED(node->parentNode(&parent)))
- result += TEXT(" > ") + dumpPath(parent.get());
-
- return result;
-}
-
-static wstring dump(IDOMRange* range)
-{
- ASSERT(range);
-
- int startOffset;
- if (FAILED(range->startOffset(&startOffset)))
- return 0;
-
- int endOffset;
- if (FAILED(range->endOffset(&endOffset)))
- return 0;
-
- COMPtr<IDOMNode> startContainer;
- if (FAILED(range->startContainer(&startContainer)))
- return 0;
-
- COMPtr<IDOMNode> endContainer;
- if (FAILED(range->endContainer(&endContainer)))
- return 0;
-
- wchar_t buffer[1024];
- _snwprintf(buffer, ARRAYSIZE(buffer), L"range from %ld of %s to %ld of %s", startOffset, dumpPath(startContainer.get()), endOffset, dumpPath(endContainer.get()));
- return buffer;
-}
-
-HRESULT STDMETHODCALLTYPE EditingDelegate::shouldBeginEditingInDOMRange(
- /* [in] */ IWebView* webView,
- /* [in] */ IDOMRange* range,
- /* [retval][out] */ BOOL* result)
-{
- if (!result) {
- ASSERT_NOT_REACHED();
- return E_POINTER;
- }
-
- if (::gLayoutTestController->dumpEditingCallbacks() && !done)
- _tprintf(TEXT("EDITING DELEGATE: shouldBeginEditingInDOMRange:%s\n"), dump(range));
-
- *result = m_acceptsEditing;
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE EditingDelegate::shouldEndEditingInDOMRange(
- /* [in] */ IWebView* webView,
- /* [in] */ IDOMRange* range,
- /* [retval][out] */ BOOL* result)
-{
- if (!result) {
- ASSERT_NOT_REACHED();
- return E_POINTER;
- }
-
- if (::gLayoutTestController->dumpEditingCallbacks() && !done)
- _tprintf(TEXT("EDITING DELEGATE: shouldEndEditingInDOMRange:%s\n"), dump(range));
-
- *result = m_acceptsEditing;
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE EditingDelegate::shouldInsertNode(
- /* [in] */ IWebView* webView,
- /* [in] */ IDOMNode* node,
- /* [in] */ IDOMRange* range,
- /* [in] */ WebViewInsertAction action)
-{
- static LPCTSTR insertactionstring[] = {
- TEXT("WebViewInsertActionTyped"),
- TEXT("WebViewInsertActionPasted"),
- TEXT("WebViewInsertActionDropped"),
- };
-
- if (::gLayoutTestController->dumpEditingCallbacks() && !done)
- _tprintf(TEXT("EDITING DELEGATE: shouldInsertNode:%s replacingDOMRange:%s givenAction:%s\n"), dumpPath(node), dump(range), insertactionstring[action]);
-
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE EditingDelegate::shouldInsertText(
- /* [in] */ IWebView* webView,
- /* [in] */ BSTR text,
- /* [in] */ IDOMRange* range,
- /* [in] */ WebViewInsertAction action,
- /* [retval][out] */ BOOL* result)
-{
- if (!result) {
- ASSERT_NOT_REACHED();
- return E_POINTER;
- }
-
- static LPCTSTR insertactionstring[] = {
- TEXT("WebViewInsertActionTyped"),
- TEXT("WebViewInsertActionPasted"),
- TEXT("WebViewInsertActionDropped"),
- };
-
- if (::gLayoutTestController->dumpEditingCallbacks() && !done)
- _tprintf(TEXT("EDITING DELEGATE: shouldInsertText:%s replacingDOMRange:%s givenAction:%s\n"), text ? text : TEXT(""), dump(range), insertactionstring[action]);
-
- *result = m_acceptsEditing;
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE EditingDelegate::shouldDeleteDOMRange(
- /* [in] */ IWebView* webView,
- /* [in] */ IDOMRange* range,
- /* [retval][out] */ BOOL* result)
-{
- if (!result) {
- ASSERT_NOT_REACHED();
- return E_POINTER;
- }
-
- if (::gLayoutTestController->dumpEditingCallbacks() && !done)
- _tprintf(TEXT("EDITING DELEGATE: shouldDeleteDOMRange:%s\n"), dump(range));
-
- *result = m_acceptsEditing;
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE EditingDelegate::shouldChangeSelectedDOMRange(
- /* [in] */ IWebView* webView,
- /* [in] */ IDOMRange* currentRange,
- /* [in] */ IDOMRange* proposedRange,
- /* [in] */ WebSelectionAffinity selectionAffinity,
- /* [in] */ BOOL stillSelecting,
- /* [retval][out] */ BOOL* result)
-{
- if (!result) {
- ASSERT_NOT_REACHED();
- return E_POINTER;
- }
-
- static LPCTSTR affinitystring[] = {
- TEXT("NSSelectionAffinityUpstream"),
- TEXT("NSSelectionAffinityDownstream")
- };
- static LPCTSTR boolstring[] = {
- TEXT("FALSE"),
- TEXT("TRUE")
- };
-
- if (::gLayoutTestController->dumpEditingCallbacks() && !done)
- _tprintf(TEXT("EDITING DELEGATE: shouldChangeSelectedDOMRange:%s toDOMRange:%s affinity:%s stillSelecting:%s\n"), dump(currentRange), dump(proposedRange), affinitystring[selectionAffinity], boolstring[stillSelecting]);
-
- *result = m_acceptsEditing;
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE EditingDelegate::shouldApplyStyle(
- /* [in] */ IWebView* webView,
- /* [in] */ IDOMCSSStyleDeclaration* style,
- /* [in] */ IDOMRange* range,
- /* [retval][out] */ BOOL* result)
-{
- if (!result) {
- ASSERT_NOT_REACHED();
- return E_POINTER;
- }
-
- if (::gLayoutTestController->dumpEditingCallbacks() && !done)
- _tprintf(TEXT("EDITING DELEGATE: shouldApplyStyle:%s toElementsInDOMRange:%s\n"), TEXT("'style description'")/*[[style description] UTF8String]*/, dump(range));
-
- *result = m_acceptsEditing;
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE EditingDelegate::shouldChangeTypingStyle(
- /* [in] */ IWebView* webView,
- /* [in] */ IDOMCSSStyleDeclaration* currentStyle,
- /* [in] */ IDOMCSSStyleDeclaration* proposedStyle,
- /* [retval][out] */ BOOL* result)
-{
- if (!result) {
- ASSERT_NOT_REACHED();
- return E_POINTER;
- }
-
- if (::gLayoutTestController->dumpEditingCallbacks() && !done)
- _tprintf(TEXT("EDITING DELEGATE: shouldChangeTypingStyle:%s toStyle:%s\n"), TEXT("'currentStyle description'"), TEXT("'proposedStyle description'"));
-
- *result = m_acceptsEditing;
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE EditingDelegate::doPlatformCommand(
- /* [in] */ IWebView *webView,
- /* [in] */ BSTR command,
- /* [retval][out] */ BOOL *result)
-{
- if (!result) {
- ASSERT_NOT_REACHED();
- return E_POINTER;
- }
-
- if (::gLayoutTestController->dumpEditingCallbacks() && !done)
- _tprintf(TEXT("EDITING DELEGATE: doPlatformCommand:%s\n"), command ? command : TEXT(""));
-
- *result = m_acceptsEditing;
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE EditingDelegate::webViewDidBeginEditing(
- /* [in] */ IWebNotification* notification)
-{
- if (::gLayoutTestController->dumpEditingCallbacks() && !done) {
- BSTR name;
- notification->name(&name);
- _tprintf(TEXT("EDITING DELEGATE: webViewDidBeginEditing:%s\n"), name ? name : TEXT(""));
- SysFreeString(name);
- }
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE EditingDelegate::webViewDidChange(
- /* [in] */ IWebNotification *notification)
-{
- if (::gLayoutTestController->dumpEditingCallbacks() && !done) {
- BSTR name;
- notification->name(&name);
- _tprintf(TEXT("EDITING DELEGATE: webViewDidBeginEditing:%s\n"), name ? name : TEXT(""));
- SysFreeString(name);
- }
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE EditingDelegate::webViewDidEndEditing(
- /* [in] */ IWebNotification *notification)
-{
- if (::gLayoutTestController->dumpEditingCallbacks() && !done) {
- BSTR name;
- notification->name(&name);
- _tprintf(TEXT("EDITING DELEGATE: webViewDidEndEditing:%s\n"), name ? name : TEXT(""));
- SysFreeString(name);
- }
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE EditingDelegate::webViewDidChangeTypingStyle(
- /* [in] */ IWebNotification *notification)
-{
- if (::gLayoutTestController->dumpEditingCallbacks() && !done) {
- BSTR name;
- notification->name(&name);
- _tprintf(TEXT("EDITING DELEGATE: webViewDidChangeTypingStyle:%s\n"), name ? name : TEXT(""));
- SysFreeString(name);
- }
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE EditingDelegate::webViewDidChangeSelection(
- /* [in] */ IWebNotification *notification)
-{
- if (::gLayoutTestController->dumpEditingCallbacks() && !done) {
- BSTR name;
- notification->name(&name);
- _tprintf(TEXT("EDITING DELEGATE: webViewDidChangeSelection:%s\n"), name ? name : TEXT(""));
- SysFreeString(name);
- }
- return S_OK;
-}
diff --git a/WebKitTools/DumpRenderTree/win/EditingDelegate.h b/WebKitTools/DumpRenderTree/win/EditingDelegate.h
deleted file mode 100644
index 6dba675..0000000
--- a/WebKitTools/DumpRenderTree/win/EditingDelegate.h
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef EditingDelegate_h
-#define EditingDelegate_h
-
-#include <WebKit/WebKit.h>
-
-class __declspec(uuid("265DCD4B-79C3-44a2-84BC-511C3EDABD6F")) EditingDelegate : public IWebEditingDelegate {
-public:
- EditingDelegate();
-
- void setAcceptsEditing(bool b) { m_acceptsEditing = b; }
-
- // IUnknown
- virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
- virtual ULONG STDMETHODCALLTYPE AddRef(void);
- virtual ULONG STDMETHODCALLTYPE Release(void);
-
- // IWebEditingDelegate
- virtual HRESULT STDMETHODCALLTYPE shouldBeginEditingInDOMRange(
- /* [in] */ IWebView *webView,
- /* [in] */ IDOMRange *range,
- /* [retval][out] */ BOOL *result);
-
- virtual HRESULT STDMETHODCALLTYPE shouldEndEditingInDOMRange(
- /* [in] */ IWebView *webView,
- /* [in] */ IDOMRange *range,
- /* [retval][out] */ BOOL *result);
-
- virtual HRESULT STDMETHODCALLTYPE shouldInsertNode(
- /* [in] */ IWebView *webView,
- /* [in] */ IDOMNode *node,
- /* [in] */ IDOMRange *range,
- /* [in] */ WebViewInsertAction action);
-
- virtual HRESULT STDMETHODCALLTYPE shouldInsertText(
- /* [in] */ IWebView *webView,
- /* [in] */ BSTR text,
- /* [in] */ IDOMRange *range,
- /* [in] */ WebViewInsertAction action,
- /* [retval][out] */ BOOL *result);
-
- virtual HRESULT STDMETHODCALLTYPE shouldDeleteDOMRange(
- /* [in] */ IWebView *webView,
- /* [in] */ IDOMRange *range,
- /* [retval][out] */ BOOL *result);
-
- virtual HRESULT STDMETHODCALLTYPE shouldChangeSelectedDOMRange(
- /* [in] */ IWebView *webView,
- /* [in] */ IDOMRange *currentRange,
- /* [in] */ IDOMRange *proposedRange,
- /* [in] */ WebSelectionAffinity selectionAffinity,
- /* [in] */ BOOL stillSelecting,
- /* [retval][out] */ BOOL *result);
-
- virtual HRESULT STDMETHODCALLTYPE shouldApplyStyle(
- /* [in] */ IWebView *webView,
- /* [in] */ IDOMCSSStyleDeclaration *style,
- /* [in] */ IDOMRange *range,
- /* [retval][out] */ BOOL *result);
-
- virtual HRESULT STDMETHODCALLTYPE shouldChangeTypingStyle(
- /* [in] */ IWebView *webView,
- /* [in] */ IDOMCSSStyleDeclaration *currentStyle,
- /* [in] */ IDOMCSSStyleDeclaration *proposedStyle,
- /* [retval][out] */ BOOL *result);
-
- virtual HRESULT STDMETHODCALLTYPE doPlatformCommand(
- /* [in] */ IWebView *webView,
- /* [in] */ BSTR command,
- /* [retval][out] */ BOOL *result);
-
- virtual HRESULT STDMETHODCALLTYPE webViewDidBeginEditing(
- /* [in] */ IWebNotification *notification);
-
- virtual HRESULT STDMETHODCALLTYPE webViewDidChange(
- /* [in] */ IWebNotification *notification);
-
- virtual HRESULT STDMETHODCALLTYPE webViewDidEndEditing(
- /* [in] */ IWebNotification *notification);
-
- virtual HRESULT STDMETHODCALLTYPE webViewDidChangeTypingStyle(
- /* [in] */ IWebNotification *notification);
-
- virtual HRESULT STDMETHODCALLTYPE webViewDidChangeSelection(
- /* [in] */ IWebNotification *notification);
-
- virtual HRESULT STDMETHODCALLTYPE undoManagerForWebView(
- /* [in] */ IWebView *webView,
- /* [retval][out] */ IWebUndoManager **undoManager) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE ignoreWordInSpellDocument(
- /* [in] */ IWebView *view,
- /* [in] */ BSTR word) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE learnWord(
- /* [in] */ BSTR word) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE checkSpellingOfString(
- /* [in] */ IWebView *view,
- /* [in] */ LPCTSTR text,
- /* [in] */ int length,
- /* [out] */ int *misspellingLocation,
- /* [out] */ int *misspellingLength) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE checkGrammarOfString(
- /* [in] */ IWebView *view,
- /* [in] */ LPCTSTR text,
- /* [in] */ int length,
- /* [out] */ IEnumWebGrammarDetails **grammarDetails,
- /* [out] */ int *badGrammarLocation,
- /* [out] */ int *badGrammarLength) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE updateSpellingUIWithGrammarString(
- /* [in] */ BSTR string,
- /* [in] */ int location,
- /* [in] */ int length,
- /* [in] */ BSTR userDescription,
- /* [in] */ BSTR *guesses,
- /* [in] */ int guessesCount) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE updateSpellingUIWithMisspelledWord(
- /* [in] */ BSTR word) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE showSpellingUI(
- /* [in] */ BOOL show) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE spellingUIIsShowing(
- /* [retval][out] */ BOOL *result) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE guessesForWord(
- /* [in] */ BSTR word,
- /* [retval][out] */ IEnumSpellingGuesses **guesses) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE closeSpellDocument(
- /* [in] */ IWebView *view) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE sharedSpellCheckerExists(
- /* [retval][out] */ BOOL *exists) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE preflightChosenSpellServer( void) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE updateGrammar( void) { return E_NOTIMPL; }
-
-private:
- bool m_acceptsEditing;
- ULONG m_refCount;
-};
-
-#endif // !defined(EditingDelegate_h)
diff --git a/WebKitTools/DumpRenderTree/win/EventSender.cpp b/WebKitTools/DumpRenderTree/win/EventSender.cpp
deleted file mode 100644
index efecc03..0000000
--- a/WebKitTools/DumpRenderTree/win/EventSender.cpp
+++ /dev/null
@@ -1,597 +0,0 @@
-/*
- * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "EventSender.h"
-
-#include "DraggingInfo.h"
-#include "DumpRenderTree.h"
-
-#include <WebCore/COMPtr.h>
-#include <wtf/ASCIICType.h>
-#include <wtf/Platform.h>
-#include <JavaScriptCore/JavaScriptCore.h>
-#include <JavaScriptCore/Assertions.h>
-#include <WebKit/WebKit.h>
-#include <windows.h>
-
-#define WM_DRT_SEND_QUEUED_EVENT (WM_APP+1)
-
-static bool down;
-static bool dragMode = true;
-static bool replayingSavedEvents;
-static int timeOffset;
-static POINT lastMousePosition;
-
-struct DelayedMessage {
- MSG msg;
- unsigned delay;
-};
-
-static DelayedMessage msgQueue[1024];
-static unsigned endOfQueue;
-static unsigned startOfQueue;
-
-static bool didDragEnter;
-DraggingInfo* draggingInfo = 0;
-
-static JSValueRef getDragModeCallback(JSContextRef context, JSObjectRef object, JSStringRef propertyName, JSValueRef* exception)
-{
- return JSValueMakeBoolean(context, dragMode);
-}
-
-static bool setDragModeCallback(JSContextRef context, JSObjectRef object, JSStringRef propertyName, JSValueRef value, JSValueRef* exception)
-{
- dragMode = JSValueToBoolean(context, value);
- return true;
-}
-
-static JSValueRef getConstantCallback(JSContextRef context, JSObjectRef object, JSStringRef propertyName, JSValueRef* exception)
-{
- if (JSStringIsEqualToUTF8CString(propertyName, "WM_KEYDOWN"))
- return JSValueMakeNumber(context, WM_KEYDOWN);
- if (JSStringIsEqualToUTF8CString(propertyName, "WM_KEYUP"))
- return JSValueMakeNumber(context, WM_KEYUP);
- if (JSStringIsEqualToUTF8CString(propertyName, "WM_CHAR"))
- return JSValueMakeNumber(context, WM_CHAR);
- if (JSStringIsEqualToUTF8CString(propertyName, "WM_DEADCHAR"))
- return JSValueMakeNumber(context, WM_DEADCHAR);
- if (JSStringIsEqualToUTF8CString(propertyName, "WM_SYSKEYDOWN"))
- return JSValueMakeNumber(context, WM_SYSKEYDOWN);
- if (JSStringIsEqualToUTF8CString(propertyName, "WM_SYSKEYUP"))
- return JSValueMakeNumber(context, WM_SYSKEYUP);
- if (JSStringIsEqualToUTF8CString(propertyName, "WM_SYSCHAR"))
- return JSValueMakeNumber(context, WM_SYSCHAR);
- if (JSStringIsEqualToUTF8CString(propertyName, "WM_SYSDEADCHAR"))
- return JSValueMakeNumber(context, WM_SYSDEADCHAR);
- ASSERT_NOT_REACHED();
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef leapForwardCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount > 0) {
- msgQueue[endOfQueue].delay = JSValueToNumber(context, arguments[0], exception);
- ASSERT(!exception || !*exception);
- }
-
- return JSValueMakeUndefined(context);
-}
-
-static DWORD currentEventTime()
-{
- return ::GetTickCount() + timeOffset;
-}
-
-static MSG makeMsg(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
-{
- MSG result = {0};
- result.hwnd = hwnd;
- result.message = message;
- result.wParam = wParam;
- result.lParam = lParam;
- result.time = currentEventTime();
- result.pt = lastMousePosition;
-
- return result;
-}
-
-static LRESULT dispatchMessage(const MSG* msg)
-{
- ASSERT(msg);
- ::TranslateMessage(msg);
- return ::DispatchMessage(msg);
-}
-
-static JSValueRef contextClickCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- COMPtr<IWebFramePrivate> framePrivate;
- if (SUCCEEDED(frame->QueryInterface(&framePrivate)))
- framePrivate->layout();
-
- down = true;
- MSG msg = makeMsg(webViewWindow, WM_RBUTTONDOWN, 0, MAKELPARAM(lastMousePosition.x, lastMousePosition.y));
- dispatchMessage(&msg);
- down = false;
- msg = makeMsg(webViewWindow, WM_RBUTTONUP, 0, MAKELPARAM(lastMousePosition.x, lastMousePosition.y));
- dispatchMessage(&msg);
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef mouseDownCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- COMPtr<IWebFramePrivate> framePrivate;
- if (SUCCEEDED(frame->QueryInterface(&framePrivate)))
- framePrivate->layout();
-
- down = true;
- MSG msg = makeMsg(webViewWindow, WM_LBUTTONDOWN, 0, MAKELPARAM(lastMousePosition.x, lastMousePosition.y));
- if (!msgQueue[endOfQueue].delay)
- dispatchMessage(&msg);
- else {
- // replaySavedEvents has the required logic to make leapForward delays work
- msgQueue[endOfQueue++].msg = msg;
- replaySavedEvents();
- }
-
- return JSValueMakeUndefined(context);
-}
-
-static inline POINTL pointl(const POINT& point)
-{
- POINTL result;
- result.x = point.x;
- result.y = point.y;
- return result;
-}
-
-static void doMouseUp(MSG msg)
-{
- COMPtr<IWebFramePrivate> framePrivate;
- if (SUCCEEDED(frame->QueryInterface(&framePrivate)))
- framePrivate->layout();
-
- dispatchMessage(&msg);
- down = false;
-
- if (draggingInfo) {
- COMPtr<IWebView> webView;
- COMPtr<IDropTarget> webViewDropTarget;
- if (SUCCEEDED(frame->webView(&webView)) && SUCCEEDED(webView->QueryInterface(IID_IDropTarget, (void**)&webViewDropTarget))) {
- POINT screenPoint = msg.pt;
- DWORD effect = 0;
- ::ClientToScreen(webViewWindow, &screenPoint);
- if (!didDragEnter) {
- webViewDropTarget->DragEnter(draggingInfo->dataObject(), 0, pointl(screenPoint), &effect);
- didDragEnter = true;
- }
- HRESULT hr = draggingInfo->dropSource()->QueryContinueDrag(0, 0);
- webViewDropTarget->DragOver(0, pointl(screenPoint), &effect);
- if (hr == DRAGDROP_S_DROP && effect != DROPEFFECT_NONE) {
- DWORD effect = 0;
- webViewDropTarget->Drop(draggingInfo->dataObject(), 0, pointl(screenPoint), &effect);
- } else
- webViewDropTarget->DragLeave();
-
- delete draggingInfo;
- draggingInfo = 0;
- }
- }
-}
-
-static JSValueRef mouseUpCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- MSG msg = makeMsg(webViewWindow, WM_LBUTTONUP, 0, MAKELPARAM(lastMousePosition.x, lastMousePosition.y));
-
- if ((dragMode && !replayingSavedEvents) || msgQueue[endOfQueue].delay) {
- msgQueue[endOfQueue++].msg = msg;
- replaySavedEvents();
- } else
- doMouseUp(msg);
-
- return JSValueMakeUndefined(context);
-}
-
-static void doMouseMove(MSG msg)
-{
- COMPtr<IWebFramePrivate> framePrivate;
- if (SUCCEEDED(frame->QueryInterface(&framePrivate)))
- framePrivate->layout();
-
- dispatchMessage(&msg);
-
- if (down && draggingInfo) {
- POINT screenPoint = msg.pt;
- ::ClientToScreen(webViewWindow, &screenPoint);
-
- IWebView* webView;
- COMPtr<IDropTarget> webViewDropTarget;
- if (SUCCEEDED(frame->webView(&webView)) && SUCCEEDED(webView->QueryInterface(IID_IDropTarget, (void**)&webViewDropTarget))) {
- DWORD effect = 0;
- if (didDragEnter)
- webViewDropTarget->DragOver(MK_LBUTTON, pointl(screenPoint), &effect);
- else {
- webViewDropTarget->DragEnter(draggingInfo->dataObject(), 0, pointl(screenPoint), &effect);
- didDragEnter = true;
- }
- draggingInfo->dropSource()->GiveFeedback(effect);
- }
- }
-}
-
-static JSValueRef mouseMoveToCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount < 2)
- return JSValueMakeUndefined(context);
-
- lastMousePosition.x = (int)JSValueToNumber(context, arguments[0], exception);
- ASSERT(!exception || !*exception);
- lastMousePosition.y = (int)JSValueToNumber(context, arguments[1], exception);
- ASSERT(!exception || !*exception);
-
- MSG msg = makeMsg(webViewWindow, WM_MOUSEMOVE, down ? MK_LBUTTON : 0, MAKELPARAM(lastMousePosition.x, lastMousePosition.y));
-
- if (dragMode && down && !replayingSavedEvents) {
- msgQueue[endOfQueue++].msg = msg;
- return JSValueMakeUndefined(context);
- }
-
- doMouseMove(msg);
-
- return JSValueMakeUndefined(context);
-}
-
-void replaySavedEvents()
-{
- replayingSavedEvents = true;
-
- MSG msg = { 0 };
-
- while (startOfQueue < endOfQueue && !msgQueue[startOfQueue].delay) {
- msg = msgQueue[startOfQueue++].msg;
- switch (msg.message) {
- case WM_LBUTTONUP:
- doMouseUp(msg);
- break;
- case WM_MOUSEMOVE:
- doMouseMove(msg);
- break;
- case WM_LBUTTONDOWN:
- dispatchMessage(&msg);
- break;
- default:
- // Not reached
- break;
- }
- }
-
- int numQueuedMessages = endOfQueue - startOfQueue;
- if (!numQueuedMessages) {
- startOfQueue = 0;
- endOfQueue = 0;
- replayingSavedEvents = false;
- ASSERT(!down);
- return;
- }
-
- if (msgQueue[startOfQueue].delay) {
- ::Sleep(msgQueue[startOfQueue].delay);
- msgQueue[startOfQueue].delay = 0;
- }
-
- ::PostMessage(webViewWindow, WM_DRT_SEND_QUEUED_EVENT, 0, 0);
- while (::GetMessage(&msg, webViewWindow, 0, 0)) {
- // FIXME: Why do we get a WM_MOUSELEAVE? it breaks tests
- if (msg.message == WM_MOUSELEAVE)
- continue;
- if (msg.message != WM_DRT_SEND_QUEUED_EVENT) {
- dispatchMessage(&msg);
- continue;
- }
- msg = msgQueue[startOfQueue++].msg;
- switch (msg.message) {
- case WM_LBUTTONUP:
- doMouseUp(msg);
- break;
- case WM_MOUSEMOVE:
- doMouseMove(msg);
- break;
- case WM_LBUTTONDOWN:
- dispatchMessage(&msg);
- break;
- default:
- // Not reached
- break;
- }
- if (startOfQueue >= endOfQueue)
- break;
- ::Sleep(msgQueue[startOfQueue].delay);
- msgQueue[startOfQueue].delay = 0;
- ::PostMessage(webViewWindow, WM_DRT_SEND_QUEUED_EVENT, 0, 0);
- }
- startOfQueue = 0;
- endOfQueue = 0;
-
- replayingSavedEvents = false;
-}
-
-static JSValueRef keyDownCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- static const JSStringRef lengthProperty = JSStringCreateWithUTF8CString("length");
-
- COMPtr<IWebFramePrivate> framePrivate;
- if (SUCCEEDED(frame->QueryInterface(&framePrivate)))
- framePrivate->layout();
-
- JSStringRef character = JSValueToStringCopy(context, arguments[0], exception);
- ASSERT(!*exception);
- int virtualKeyCode;
- int charCode = 0;
- int keyData = 1;
- bool needsShiftKeyModifier = false;
- if (JSStringIsEqualToUTF8CString(character, "leftArrow")) {
- virtualKeyCode = VK_LEFT;
- keyData += KF_EXTENDED << 16; // In this case, extended means "not keypad".
- } else if (JSStringIsEqualToUTF8CString(character, "rightArrow")) {
- virtualKeyCode = VK_RIGHT;
- keyData += KF_EXTENDED << 16;
- } else if (JSStringIsEqualToUTF8CString(character, "upArrow")) {
- virtualKeyCode = VK_UP;
- keyData += KF_EXTENDED << 16;
- } else if (JSStringIsEqualToUTF8CString(character, "downArrow")) {
- virtualKeyCode = VK_DOWN;
- keyData += KF_EXTENDED << 16;
- } else if (JSStringIsEqualToUTF8CString(character, "pageUp"))
- virtualKeyCode = VK_PRIOR;
- else if (JSStringIsEqualToUTF8CString(character, "pageDown"))
- virtualKeyCode = VK_NEXT;
- else if (JSStringIsEqualToUTF8CString(character, "home"))
- virtualKeyCode = VK_HOME;
- else if (JSStringIsEqualToUTF8CString(character, "end"))
- virtualKeyCode = VK_END;
- else if (JSStringIsEqualToUTF8CString(character, "delete"))
- virtualKeyCode = VK_BACK;
- else {
- charCode = JSStringGetCharactersPtr(character)[0];
- virtualKeyCode = LOBYTE(VkKeyScan(charCode));
- if (WTF::isASCIIUpper(charCode))
- needsShiftKeyModifier = true;
- }
- JSStringRelease(character);
-
- BYTE keyState[256];
- if (argumentCount > 1 || needsShiftKeyModifier) {
- ::GetKeyboardState(keyState);
-
- BYTE newKeyState[256];
- memcpy(newKeyState, keyState, sizeof(keyState));
-
- if (needsShiftKeyModifier)
- newKeyState[VK_SHIFT] = 0x80;
-
- if (argumentCount > 1) {
- JSObjectRef modifiersArray = JSValueToObject(context, arguments[1], exception);
- if (modifiersArray) {
- int modifiersCount = JSValueToNumber(context, JSObjectGetProperty(context, modifiersArray, lengthProperty, 0), 0);
- for (int i = 0; i < modifiersCount; ++i) {
- JSValueRef value = JSObjectGetPropertyAtIndex(context, modifiersArray, i, 0);
- JSStringRef string = JSValueToStringCopy(context, value, 0);
- if (JSStringIsEqualToUTF8CString(string, "ctrlKey"))
- newKeyState[VK_CONTROL] = 0x80;
- else if (JSStringIsEqualToUTF8CString(string, "shiftKey"))
- newKeyState[VK_SHIFT] = 0x80;
- else if (JSStringIsEqualToUTF8CString(string, "altKey"))
- newKeyState[VK_MENU] = 0x80;
-
- JSStringRelease(string);
- }
- }
- }
-
- ::SetKeyboardState(newKeyState);
- }
-
- MSG msg = makeMsg(webViewWindow, (::GetKeyState(VK_MENU) & 0x8000) ? WM_SYSKEYDOWN : WM_KEYDOWN, virtualKeyCode, keyData);
- if (virtualKeyCode != 255)
- dispatchMessage(&msg);
- else {
- // For characters that do not exist in the active keyboard layout,
- // ::Translate will not work, so we post an WM_CHAR event ourselves.
- ::PostMessage(webViewWindow, WM_CHAR, charCode, 0);
- }
-
- // Tests expect that all messages are processed by the time keyDown() returns.
- if (::PeekMessage(&msg, webViewWindow, WM_CHAR, WM_CHAR, PM_REMOVE) || ::PeekMessage(&msg, webViewWindow, WM_SYSCHAR, WM_SYSCHAR, PM_REMOVE))
- ::DispatchMessage(&msg);
-
- MSG msgUp = makeMsg(webViewWindow, (::GetKeyState(VK_MENU) & 0x8000) ? WM_SYSKEYUP : WM_KEYUP, virtualKeyCode, keyData);
- ::DispatchMessage(&msgUp);
-
- if (argumentCount > 1 || needsShiftKeyModifier)
- ::SetKeyboardState(keyState);
-
- return JSValueMakeUndefined(context);
-}
-
-// eventSender.dispatchMessage(message, wParam, lParam, time = currentEventTime(), x = lastMousePosition.x, y = lastMousePosition.y)
-static JSValueRef dispatchMessageCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount < 3)
- return JSValueMakeUndefined(context);
-
- COMPtr<IWebFramePrivate> framePrivate;
- if (SUCCEEDED(frame->QueryInterface(&framePrivate)))
- framePrivate->layout();
-
- MSG msg = {};
- msg.hwnd = webViewWindow;
- msg.message = JSValueToNumber(context, arguments[0], exception);
- ASSERT(!*exception);
- msg.wParam = JSValueToNumber(context, arguments[1], exception);
- ASSERT(!*exception);
- msg.lParam = static_cast<ULONG_PTR>(JSValueToNumber(context, arguments[2], exception));
- ASSERT(!*exception);
- if (argumentCount >= 4) {
- msg.time = JSValueToNumber(context, arguments[3], exception);
- ASSERT(!*exception);
- }
- if (!msg.time)
- msg.time = currentEventTime();
- if (argumentCount >= 6) {
- msg.pt.x = JSValueToNumber(context, arguments[4], exception);
- ASSERT(!*exception);
- msg.pt.y = JSValueToNumber(context, arguments[5], exception);
- ASSERT(!*exception);
- } else
- msg.pt = lastMousePosition;
-
- ::DispatchMessage(&msg);
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef textZoomInCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return JSValueMakeUndefined(context);
-
- COMPtr<IWebIBActions> webIBActions(Query, webView);
- if (!webIBActions)
- return JSValueMakeUndefined(context);
-
- webIBActions->makeTextLarger(0);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef textZoomOutCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return JSValueMakeUndefined(context);
-
- COMPtr<IWebIBActions> webIBActions(Query, webView);
- if (!webIBActions)
- return JSValueMakeUndefined(context);
-
- webIBActions->makeTextSmaller(0);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef zoomPageInCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return JSValueMakeUndefined(context);
-
- COMPtr<IWebIBActions> webIBActions(Query, webView);
- if (!webIBActions)
- return JSValueMakeUndefined(context);
-
- webIBActions->zoomPageIn(0);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef zoomPageOutCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return JSValueMakeUndefined(context);
-
- COMPtr<IWebIBActions> webIBActions(Query, webView);
- if (!webIBActions)
- return JSValueMakeUndefined(context);
-
- webIBActions->zoomPageOut(0);
- return JSValueMakeUndefined(context);
-}
-
-static JSStaticFunction staticFunctions[] = {
- { "contextClick", contextClickCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "mouseDown", mouseDownCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "mouseUp", mouseUpCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "mouseMoveTo", mouseMoveToCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "leapForward", leapForwardCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "keyDown", keyDownCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "dispatchMessage", dispatchMessageCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "textZoomIn", textZoomInCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "textZoomOut", textZoomOutCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "zoomPageIn", zoomPageInCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "zoomPageOut", zoomPageOutCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { 0, 0, 0 }
-};
-
-static JSStaticValue staticValues[] = {
- { "dragMode", getDragModeCallback, setDragModeCallback, kJSPropertyAttributeNone },
- { "WM_KEYDOWN", getConstantCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeNone },
- { "WM_KEYUP", getConstantCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeNone },
- { "WM_CHAR", getConstantCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeNone },
- { "WM_DEADCHAR", getConstantCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeNone },
- { "WM_SYSKEYDOWN", getConstantCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeNone },
- { "WM_SYSKEYUP", getConstantCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeNone },
- { "WM_SYSCHAR", getConstantCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeNone },
- { "WM_SYSDEADCHAR", getConstantCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeNone },
- { 0, 0, 0, 0 }
-};
-
-static JSClassRef getClass(JSContextRef context)
-{
- static JSClassRef eventSenderClass = 0;
-
- if (!eventSenderClass) {
- JSClassDefinition classDefinition = {0};
- classDefinition.staticFunctions = staticFunctions;
- classDefinition.staticValues = staticValues;
-
- eventSenderClass = JSClassCreate(&classDefinition);
- }
-
- return eventSenderClass;
-}
-
-JSObjectRef makeEventSender(JSContextRef context)
-{
- down = false;
- dragMode = true;
- replayingSavedEvents = false;
- timeOffset = 0;
- lastMousePosition.x = 0;
- lastMousePosition.y = 0;
-
- endOfQueue = 0;
- startOfQueue = 0;
-
- didDragEnter = false;
- draggingInfo = 0;
-
- return JSObjectMake(context, getClass(context), 0);
-}
diff --git a/WebKitTools/DumpRenderTree/win/EventSender.h b/WebKitTools/DumpRenderTree/win/EventSender.h
deleted file mode 100644
index 9ae0aec..0000000
--- a/WebKitTools/DumpRenderTree/win/EventSender.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef EventSender_h
-#define EventSender_h
-
-class DraggingInfo;
-
-typedef const struct OpaqueJSContext* JSContextRef;
-typedef struct OpaqueJSValue* JSObjectRef;
-
-JSObjectRef makeEventSender(JSContextRef context);
-void replaySavedEvents();
-
-extern DraggingInfo* draggingInfo;
-
-#endif
diff --git a/WebKitTools/DumpRenderTree/win/FrameLoadDelegate.cpp b/WebKitTools/DumpRenderTree/win/FrameLoadDelegate.cpp
deleted file mode 100644
index b18b961..0000000
--- a/WebKitTools/DumpRenderTree/win/FrameLoadDelegate.cpp
+++ /dev/null
@@ -1,314 +0,0 @@
-/*
- * Copyright (C) 2005, 2006, 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "FrameLoadDelegate.h"
-
-#include "AccessibilityController.h"
-#include "DumpRenderTree.h"
-#include "EventSender.h"
-#include "GCController.h"
-#include "LayoutTestController.h"
-#include "WorkQueueItem.h"
-#include "WorkQueue.h"
-#include <WebCore/COMPtr.h>
-#include <JavaScriptCore/Assertions.h>
-#include <JavaScriptCore/JavaScriptCore.h>
-#include <WebKit/WebKit.h>
-#include <wtf/Vector.h>
-#include <stdio.h>
-#include <string>
-
-using std::string;
-
-static FrameLoadDelegate* g_delegateWaitingOnTimer;
-
-string BSTRtoString(BSTR bstr)
-{
- int result = WideCharToMultiByte(CP_UTF8, 0, bstr, SysStringLen(bstr) + 1, 0, 0, 0, 0);
- Vector<char> utf8Vector(result);
- result = WideCharToMultiByte(CP_UTF8, 0, bstr, SysStringLen(bstr) + 1, utf8Vector.data(), result, 0, 0);
- if (!result)
- return string();
-
- return string(utf8Vector.data(), utf8Vector.size() - 1);
-}
-
-string descriptionSuitableForTestResult(IWebFrame* webFrame)
-{
- COMPtr<IWebView> webView;
- if (FAILED(webFrame->webView(&webView)))
- return string();
-
- COMPtr<IWebFrame> mainFrame;
- if (FAILED(webView->mainFrame(&mainFrame)))
- return string();
-
- BSTR frameNameBSTR;
- if (FAILED(webFrame->name(&frameNameBSTR)) || BSTRtoString(frameNameBSTR).empty() )
- return (webFrame == mainFrame) ? "main frame" : string();
-
- string frameName = (webFrame == mainFrame) ? "main frame" : "frame";
- frameName += " \"" + BSTRtoString(frameNameBSTR) + "\"";
-
- SysFreeString(frameNameBSTR);
-
- return frameName;
-}
-
-FrameLoadDelegate::FrameLoadDelegate()
- : m_refCount(1)
- , m_gcController(new GCController)
- , m_accessibilityController(new AccessibilityController)
-{
-}
-
-FrameLoadDelegate::~FrameLoadDelegate()
-{
-}
-
-HRESULT STDMETHODCALLTYPE FrameLoadDelegate::QueryInterface(REFIID riid, void** ppvObject)
-{
- *ppvObject = 0;
- if (IsEqualGUID(riid, IID_IUnknown))
- *ppvObject = static_cast<IWebFrameLoadDelegate*>(this);
- else if (IsEqualGUID(riid, IID_IWebFrameLoadDelegate))
- *ppvObject = static_cast<IWebFrameLoadDelegate*>(this);
- else if (IsEqualGUID(riid, IID_IWebFrameLoadDelegate2))
- *ppvObject = static_cast<IWebFrameLoadDelegate*>(this);
- else if (IsEqualGUID(riid, IID_IWebFrameLoadDelegatePrivate))
- *ppvObject = static_cast<IWebFrameLoadDelegatePrivate*>(this);
- else
- return E_NOINTERFACE;
-
- AddRef();
- return S_OK;
-}
-
-ULONG STDMETHODCALLTYPE FrameLoadDelegate::AddRef(void)
-{
- return ++m_refCount;
-}
-
-ULONG STDMETHODCALLTYPE FrameLoadDelegate::Release(void)
-{
- ULONG newRef = --m_refCount;
- if (!newRef)
- delete(this);
-
- return newRef;
-}
-
-
-HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didStartProvisionalLoadForFrame(
- /* [in] */ IWebView* webView,
- /* [in] */ IWebFrame* frame)
-{
- if (!done && gLayoutTestController->dumpFrameLoadCallbacks())
- printf("%s - didStartProvisionalLoadForFrame\n",
- descriptionSuitableForTestResult(frame).c_str());
-
- // Make sure we only set this once per test. If it gets cleared, and then set again, we might
- // end up doing two dumps for one test.
- if (!topLoadingFrame && !done)
- topLoadingFrame = frame;
-
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didFailProvisionalLoadWithError(
- /* [in] */ IWebView *webView,
- /* [in] */ IWebError *error,
- /* [in] */ IWebFrame *frame)
-{
- if (!done && gLayoutTestController->dumpFrameLoadCallbacks())
- printf("%s - didFailProvisionalLoadWithError\n",
- descriptionSuitableForTestResult(frame).c_str());
-
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didCommitLoadForFrame(
- /* [in] */ IWebView *webView,
- /* [in] */ IWebFrame *frame)
-{
- COMPtr<IWebViewPrivate> webViewPrivate;
- HRESULT hr = webView->QueryInterface(&webViewPrivate);
- if (FAILED(hr))
- return hr;
- webViewPrivate->updateFocusedAndActiveState();
-
- if (!done && gLayoutTestController->dumpFrameLoadCallbacks())
- printf("%s - didCommitLoadForFrame\n",
- descriptionSuitableForTestResult(frame).c_str());
-
-
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didReceiveTitle(
- /* [in] */ IWebView *webView,
- /* [in] */ BSTR title,
- /* [in] */ IWebFrame *frame)
-{
- if (::gLayoutTestController->dumpTitleChanges() && !done)
- printf("TITLE CHANGED: %S\n", title ? title : L"");
- return S_OK;
-}
-
-void FrameLoadDelegate::processWork()
-{
- // quit doing work once a load is in progress
- while (!topLoadingFrame && WorkQueue::shared()->count()) {
- WorkQueueItem* item = WorkQueue::shared()->dequeue();
- ASSERT(item);
- item->invoke();
- }
-
- // if we didn't start a new load, then we finished all the commands, so we're ready to dump state
- if (!topLoadingFrame && !::gLayoutTestController->waitToDump())
- dump();
-}
-
-static void CALLBACK processWorkTimer(HWND, UINT, UINT_PTR id, DWORD)
-{
- ::KillTimer(0, id);
- FrameLoadDelegate* d = g_delegateWaitingOnTimer;
- g_delegateWaitingOnTimer = 0;
- d->processWork();
-}
-
-void FrameLoadDelegate::locationChangeDone(IWebError*, IWebFrame* frame)
-{
- if (frame != topLoadingFrame)
- return;
-
- topLoadingFrame = 0;
- WorkQueue::shared()->setFrozen(true);
-
- if (::gLayoutTestController->waitToDump())
- return;
-
- if (WorkQueue::shared()->count()) {
- ASSERT(!g_delegateWaitingOnTimer);
- g_delegateWaitingOnTimer = this;
- ::SetTimer(0, 0, 0, processWorkTimer);
- return;
- }
-
- dump();
-}
-
-HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didFinishLoadForFrame(
- /* [in] */ IWebView* webView,
- /* [in] */ IWebFrame* frame)
-{
- if (!done && gLayoutTestController->dumpFrameLoadCallbacks())
- printf("%s - didFinishLoadForFrame\n",
- descriptionSuitableForTestResult(frame).c_str());
-
- locationChangeDone(0, frame);
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didFailLoadWithError(
- /* [in] */ IWebView* webView,
- /* [in] */ IWebError* error,
- /* [in] */ IWebFrame* forFrame)
-{
- locationChangeDone(error, forFrame);
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE FrameLoadDelegate::willCloseFrame(
- /* [in] */ IWebView *webView,
- /* [in] */ IWebFrame *frame)
-{
- return E_NOTIMPL;
-}
-
-HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didClearWindowObject(
- /* [in] */ IWebView*webView,
- /* [in] */ JSContextRef context,
- /* [in] */ JSObjectRef windowObject,
- /* [in] */ IWebFrame* frame)
-{
- JSValueRef exception = 0;
-
- ::gLayoutTestController->makeWindowObject(context, windowObject, &exception);
- ASSERT(!exception);
-
- m_gcController->makeWindowObject(context, windowObject, &exception);
- ASSERT(!exception);
-
- m_accessibilityController->makeWindowObject(context, windowObject, &exception);
- ASSERT(!exception);
-
- JSStringRef eventSenderStr = JSStringCreateWithUTF8CString("eventSender");
- JSValueRef eventSender = makeEventSender(context);
- JSObjectSetProperty(context, windowObject, eventSenderStr, eventSender, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete, 0);
- JSStringRelease(eventSenderStr);
-
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didFinishDocumentLoadForFrame(
- /* [in] */ IWebView *sender,
- /* [in] */ IWebFrame *frame)
-{
- if (!done && gLayoutTestController->dumpFrameLoadCallbacks())
- printf("%s - didFinishDocumentLoadForFrame\n",
- descriptionSuitableForTestResult(frame).c_str());
- if (!done) {
- COMPtr<IWebFramePrivate> webFramePrivate;
- HRESULT hr = frame->QueryInterface(&webFramePrivate);
- if (FAILED(hr))
- return hr;
- unsigned pendingFrameUnloadEvents;
- hr = webFramePrivate->pendingFrameUnloadEventCount(&pendingFrameUnloadEvents);
- if (FAILED(hr))
- return hr;
- if (pendingFrameUnloadEvents)
- printf("%s - has %u onunload handler(s)\n",
- descriptionSuitableForTestResult(frame).c_str(), pendingFrameUnloadEvents);
- }
-
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didHandleOnloadEventsForFrame(
- /* [in] */ IWebView *sender,
- /* [in] */ IWebFrame *frame)
-{
- if (!done && gLayoutTestController->dumpFrameLoadCallbacks())
- printf("%s - didHandleOnloadEventsForFrame\n",
- descriptionSuitableForTestResult(frame).c_str());
-
- return S_OK;
-}
-
diff --git a/WebKitTools/DumpRenderTree/win/FrameLoadDelegate.h b/WebKitTools/DumpRenderTree/win/FrameLoadDelegate.h
deleted file mode 100644
index 1a134fc..0000000
--- a/WebKitTools/DumpRenderTree/win/FrameLoadDelegate.h
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Copyright (C) 2005, 2006, 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef FrameLoadDelegate_h
-#define FrameLoadDelegate_h
-
-#include <WebKit/WebKit.h>
-#include <wtf/OwnPtr.h>
-
-class AccessibilityController;
-class GCController;
-
-class FrameLoadDelegate : public IWebFrameLoadDelegate2, public IWebFrameLoadDelegatePrivate {
-public:
- FrameLoadDelegate();
- virtual ~FrameLoadDelegate();
-
- void processWork();
-
- // IUnknown
- virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
- virtual ULONG STDMETHODCALLTYPE AddRef(void);
- virtual ULONG STDMETHODCALLTYPE Release(void);
-
- // IWebFrameLoadDelegate
- virtual HRESULT STDMETHODCALLTYPE didStartProvisionalLoadForFrame(
- /* [in] */ IWebView *webView,
- /* [in] */ IWebFrame *frame);
-
- virtual HRESULT STDMETHODCALLTYPE didReceiveServerRedirectForProvisionalLoadForFrame(
- /* [in] */ IWebView *webView,
- /* [in] */ IWebFrame *frame) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE didFailProvisionalLoadWithError(
- /* [in] */ IWebView *webView,
- /* [in] */ IWebError *error,
- /* [in] */ IWebFrame *frame);
-
- virtual HRESULT STDMETHODCALLTYPE didCommitLoadForFrame(
- /* [in] */ IWebView *webView,
- /* [in] */ IWebFrame *frame);
-
- virtual HRESULT STDMETHODCALLTYPE didReceiveTitle(
- /* [in] */ IWebView *webView,
- /* [in] */ BSTR title,
- /* [in] */ IWebFrame *frame);
-
- virtual HRESULT STDMETHODCALLTYPE didReceiveIcon(
- /* [in] */ IWebView *webView,
- /* [in] */ OLE_HANDLE image,
- /* [in] */ IWebFrame *frame) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE didFinishLoadForFrame(
- /* [in] */ IWebView *webView,
- /* [in] */ IWebFrame *frame);
-
- virtual HRESULT STDMETHODCALLTYPE didFailLoadWithError(
- /* [in] */ IWebView *webView,
- /* [in] */ IWebError *error,
- /* [in] */ IWebFrame *forFrame);
-
- virtual HRESULT STDMETHODCALLTYPE didChangeLocationWithinPageForFrame(
- /* [in] */ IWebView *webView,
- /* [in] */ IWebFrame *frame) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE willPerformClientRedirectToURL(
- /* [in] */ IWebView *webView,
- /* [in] */ BSTR url,
- /* [in] */ double delaySeconds,
- /* [in] */ DATE fireDate,
- /* [in] */ IWebFrame *frame) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE didCancelClientRedirectForFrame(
- /* [in] */ IWebView *webView,
- /* [in] */ IWebFrame *frame) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE willCloseFrame(
- /* [in] */ IWebView *webView,
- /* [in] */ IWebFrame *frame);
-
- virtual HRESULT STDMETHODCALLTYPE windowScriptObjectAvailable(
- /* [in] */ IWebView *sender,
- /* [in] */ JSContextRef context,
- /* [in] */ JSObjectRef windowObject) { return E_NOTIMPL; }
-
- // IWebFrameLoadDelegatePrivate
- virtual HRESULT STDMETHODCALLTYPE didFinishDocumentLoadForFrame(
- /* [in] */ IWebView *sender,
- /* [in] */ IWebFrame *frame);
-
- virtual HRESULT STDMETHODCALLTYPE didFirstLayoutInFrame(
- /* [in] */ IWebView *sender,
- /* [in] */ IWebFrame *frame) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE didHandleOnloadEventsForFrame(
- /* [in] */ IWebView *sender,
- /* [in] */ IWebFrame *frame);
-
- // IWebFrameLoadDelegate2
- virtual /* [local] */ HRESULT STDMETHODCALLTYPE didClearWindowObject(
- /* [in] */ IWebView* webView,
- /* [in] */ JSContextRef context,
- /* [in] */ JSObjectRef windowObject,
- /* [in] */ IWebFrame* frame);
-
-protected:
- void locationChangeDone(IWebError*, IWebFrame*);
-
- ULONG m_refCount;
- OwnPtr<GCController> m_gcController;
- OwnPtr<AccessibilityController> m_accessibilityController;
-};
-
-#endif // FrameLoadDelegate_h
diff --git a/WebKitTools/DumpRenderTree/win/GCControllerWin.cpp b/WebKitTools/DumpRenderTree/win/GCControllerWin.cpp
deleted file mode 100644
index 547aabc..0000000
--- a/WebKitTools/DumpRenderTree/win/GCControllerWin.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "GCController.h"
-
-#include "DumpRenderTree.h"
-#include <WebCore/COMPtr.h>
-#include <WebKit/WebKit.h>
-
-void GCController::collect() const
-{
- COMPtr<IWebJavaScriptCollector> collector;
- if (FAILED(::CoCreateInstance(CLSID_WebJavaScriptCollector, 0, CLSCTX_ALL, IID_IWebJavaScriptCollector, (void**)&collector)))
- return;
- collector->collect();
-}
-
-void GCController::collectOnAlternateThread(bool waitUntilDone) const
-{
- COMPtr<IWebJavaScriptCollector> collector;
- if (FAILED(::CoCreateInstance(CLSID_WebJavaScriptCollector, 0, CLSCTX_ALL, IID_IWebJavaScriptCollector, (void**)&collector)))
- return;
- collector->collectOnAlternateThread(waitUntilDone ? TRUE : FALSE);
-}
-
-size_t GCController::getJSObjectCount() const
-{
- COMPtr<IWebJavaScriptCollector> collector;
- if (FAILED(::CoCreateInstance(CLSID_WebJavaScriptCollector, 0, CLSCTX_ALL, IID_IWebJavaScriptCollector, (void**)&collector)))
- return 0;
- UINT objects = 0;
- collector->objectCount(&objects);
- return objects;
-}
diff --git a/WebKitTools/DumpRenderTree/win/ImageDiff.vcproj b/WebKitTools/DumpRenderTree/win/ImageDiff.vcproj
deleted file mode 100644
index 9da1a56..0000000
--- a/WebKitTools/DumpRenderTree/win/ImageDiff.vcproj
+++ /dev/null
@@ -1,163 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="ImageDiff"
- ProjectGUID="{59CC0547-70AC-499C-9B19-EC01C6F61137}"
- RootNamespace="ImageDiff"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- ConfigurationType="1"
- InheritedPropertySheets="$(WebKitLibrariesDir)\tools\vsprops\common.vsprops;$(WebKitLibrariesDir)\tools\vsprops\debug.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- CommandLine="set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; grep XX$(ProjectName)XX &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;if errorlevel 1 exit 1&#x0D;&#x0A;echo XX$(ProjectName)XX &gt; &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="&quot;$(WebKitOutputDir)\include&quot;;&quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders&quot;;&quot;$(WebKitLibrariesDir)\include&quot;;&quot;$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders&quot;;&quot;$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility&quot;"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="CoreGraphics$(LibraryConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib"
- AdditionalLibraryDirectories=""
- SubSystem="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- CommandLine="if exist &quot;$(WebKitOutputDir)\buildfailed&quot; del &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;&#x0D;&#x0A;if &quot;$(ARCHIVE_BUILD)&quot;==&quot;&quot; (if not &quot;$(PRODUCTION)&quot;==&quot;&quot; exit /b)&#x0D;&#x0A;&#x0D;&#x0A;if not exist &quot;$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll&quot; exit /b&#x0D;&#x0A;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d /e /i &quot;$(WebKitLibrariesDir)\bin\CoreFoundation.resources&quot; &quot;$(WebKitOutputDir)\bin\CoreFoundation.resources&quot;&#x0D;&#x0A;xcopy /y /d /e /i &quot;$(WebKitLibrariesDir)\bin\CharacterSets&quot; &quot;$(WebKitOutputDir)\bin\CharacterSets&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\icudt38.dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\icudt38$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\icuin38$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\icuin38$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\icuuc38$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\icuuc38$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- ConfigurationType="1"
- InheritedPropertySheets="$(WebKitLibrariesDir)\tools\vsprops\release.vsprops;$(WebKitLibrariesDir)\tools\vsprops\common.vsprops"
- CharacterSet="2"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- CommandLine="set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; grep XX$(ProjectName)XX &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;if errorlevel 1 exit 1&#x0D;&#x0A;echo XX$(ProjectName)XX &gt; &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="&quot;$(WebKitOutputDir)\include&quot;;&quot;$(WebKitOutputDir)\include\WebCore\ForwardingHeaders&quot;;&quot;$(WebKitLibrariesDir)\include&quot;;&quot;$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders&quot;;&quot;$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility&quot;"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="CoreGraphics$(LibraryConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib"
- AdditionalLibraryDirectories=""
- SubSystem="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- CommandLine="if exist &quot;$(WebKitOutputDir)\buildfailed&quot; del &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;&#x0D;&#x0A;mkdir 2&gt;NUL &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;&#x0D;&#x0A;if &quot;$(ARCHIVE_BUILD)&quot;==&quot;&quot; (if not &quot;$(PRODUCTION)&quot;==&quot;&quot; exit /b)&#x0D;&#x0A;&#x0D;&#x0A;if not exist &quot;$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll&quot; exit /b&#x0D;&#x0A;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d /e /i &quot;$(WebKitLibrariesDir)\bin\CoreFoundation.resources&quot; &quot;$(WebKitOutputDir)\bin\CoreFoundation.resources&quot;&#x0D;&#x0A;xcopy /y /d /e /i &quot;$(WebKitLibrariesDir)\bin\CharacterSets&quot; &quot;$(WebKitOutputDir)\bin\CharacterSets&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\icudt38.dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\icudt38$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\icuin38$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\icuin38$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\icuuc38$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\icuuc38$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;xcopy /y /d &quot;$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb&quot; &quot;$(WebKitOutputDir)\bin&quot;&#x0D;&#x0A;"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath="..\cg\ImageDiffCG.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/WebKitTools/DumpRenderTree/win/LayoutTestControllerWin.cpp b/WebKitTools/DumpRenderTree/win/LayoutTestControllerWin.cpp
deleted file mode 100644
index 275fcd3..0000000
--- a/WebKitTools/DumpRenderTree/win/LayoutTestControllerWin.cpp
+++ /dev/null
@@ -1,630 +0,0 @@
-/*
- * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "LayoutTestController.h"
-
-#include "DumpRenderTree.h"
-#include "EditingDelegate.h"
-#include "PolicyDelegate.h"
-#include "WorkQueue.h"
-#include "WorkQueueItem.h"
-#include <WebCore/COMPtr.h>
-#include <wtf/Platform.h>
-#include <wtf/RetainPtr.h>
-#include <wtf/Vector.h>
-#include <JavaScriptCore/Assertions.h>
-#include <JavaScriptCore/JavaScriptCore.h>
-#include <JavaScriptCore/JSRetainPtr.h>
-#include <WebKit/WebKit.h>
-#include <string>
-#include <CoreFoundation/CoreFoundation.h>
-#include <shlwapi.h>
-#include <shlguid.h>
-#include <shobjidl.h>
-
-using std::string;
-using std::wstring;
-
-static bool resolveCygwinPath(const wstring& cygwinPath, wstring& windowsPath);
-
-LayoutTestController::~LayoutTestController()
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return;
-
- // reset webview-related states back to default values in preparation for next test
-
- COMPtr<IWebViewPrivate> viewPrivate;
- if (SUCCEEDED(webView->QueryInterface(&viewPrivate)))
- viewPrivate->setTabKeyCyclesThroughElements(TRUE);
-
- COMPtr<IWebViewEditing> viewEditing;
- if (FAILED(webView->QueryInterface(&viewEditing)))
- return;
- COMPtr<IWebEditingDelegate> delegate;
- if (FAILED(viewEditing->editingDelegate(&delegate)))
- return;
- COMPtr<EditingDelegate> editingDelegate(Query, viewEditing.get());
- if (editingDelegate)
- editingDelegate->setAcceptsEditing(TRUE);
-}
-
-void LayoutTestController::addDisallowedURL(JSStringRef url)
-{
- // FIXME: Implement!
-}
-
-void LayoutTestController::clearBackForwardList()
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return;
-
- COMPtr<IWebBackForwardList> backForwardList;
- if (FAILED(webView->backForwardList(&backForwardList)))
- return;
-
- COMPtr<IWebHistoryItem> item;
- if (FAILED(backForwardList->currentItem(&item)))
- return;
-
- // We clear the history by setting the back/forward list's capacity to 0
- // then restoring it back and adding back the current item.
- int capacity;
- if (FAILED(backForwardList->capacity(&capacity)))
- return;
-
- backForwardList->setCapacity(0);
- backForwardList->setCapacity(capacity);
- backForwardList->addItem(item.get());
- backForwardList->goToItem(item.get());
-}
-
-JSStringRef LayoutTestController::copyDecodedHostName(JSStringRef name)
-{
- // FIXME: Implement!
- return 0;
-}
-
-JSStringRef LayoutTestController::copyEncodedHostName(JSStringRef name)
-{
- // FIXME: Implement!
- return 0;
-}
-
-void LayoutTestController::display()
-{
- displayWebView();
-}
-
-void LayoutTestController::keepWebHistory()
-{
- COMPtr<IWebHistory> history(Create, CLSID_WebHistory);
- if (!history)
- return;
-
- COMPtr<IWebHistory> sharedHistory(Create, CLSID_WebHistory);
- if (!sharedHistory)
- return;
-
- history->setOptionalSharedHistory(sharedHistory.get());
-}
-
-void LayoutTestController::notifyDone()
-{
- // Same as on mac. This can be shared.
- if (m_waitToDump && !topLoadingFrame && !WorkQueue::shared()->count())
- dump();
- m_waitToDump = false;
-}
-
-JSStringRef LayoutTestController::pathToLocalResource(JSContextRef context, JSStringRef url)
-{
- wstring input(JSStringGetCharactersPtr(url), JSStringGetLength(url));
-
- wstring localPath;
- if (!resolveCygwinPath(input, localPath)) {
- printf("ERROR: Failed to resolve Cygwin path %S\n", input.c_str());
- return 0;
- }
-
- return JSStringCreateWithCharacters(localPath.c_str(), localPath.length());
-}
-
-void LayoutTestController::queueBackNavigation(int howFarBack)
-{
- // Same as on mac. This can be shared.
- WorkQueue::shared()->queue(new BackItem(howFarBack));
-}
-
-void LayoutTestController::queueForwardNavigation(int howFarForward)
-{
- // Same as on mac. This can be shared.
- WorkQueue::shared()->queue(new ForwardItem(howFarForward));
-}
-
-static wstring jsStringRefToWString(JSStringRef jsStr)
-{
- size_t length = JSStringGetLength(jsStr);
- Vector<WCHAR> buffer(length + 1);
- memcpy(buffer.data(), JSStringGetCharactersPtr(jsStr), length * sizeof(WCHAR));
- buffer[length] = '\0';
-
- return buffer.data();
-}
-
-void LayoutTestController::queueLoad(JSStringRef url, JSStringRef target)
-{
- COMPtr<IWebDataSource> dataSource;
- if (FAILED(frame->dataSource(&dataSource)))
- return;
-
- COMPtr<IWebURLResponse> response;
- if (FAILED(dataSource->response(&response)) || !response)
- return;
-
- BSTR responseURLBSTR;
- if (FAILED(response->URL(&responseURLBSTR)))
- return;
- wstring responseURL(responseURLBSTR, SysStringLen(responseURLBSTR));
- SysFreeString(responseURLBSTR);
-
- // FIXME: We should do real relative URL resolution here.
- int lastSlash = responseURL.rfind('/');
- if (lastSlash != -1)
- responseURL = responseURL.substr(0, lastSlash);
-
- wstring wURL = jsStringRefToWString(url);
- wstring wAbsoluteURL = responseURL + TEXT("/") + wURL;
- JSRetainPtr<JSStringRef> jsAbsoluteURL(Adopt, JSStringCreateWithCharacters(wAbsoluteURL.data(), wAbsoluteURL.length()));
-
- WorkQueue::shared()->queue(new LoadItem(jsAbsoluteURL.get(), target));
-}
-
-void LayoutTestController::queueReload()
-{
- WorkQueue::shared()->queue(new ReloadItem);
-}
-
-void LayoutTestController::queueScript(JSStringRef script)
-{
- WorkQueue::shared()->queue(new ScriptItem(script));
-}
-
-void LayoutTestController::setAcceptsEditing(bool acceptsEditing)
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return;
-
- COMPtr<IWebViewEditing> viewEditing;
- if (FAILED(webView->QueryInterface(&viewEditing)))
- return;
-
- COMPtr<IWebEditingDelegate> delegate;
- if (FAILED(viewEditing->editingDelegate(&delegate)))
- return;
-
- EditingDelegate* editingDelegate = (EditingDelegate*)(IWebEditingDelegate*)delegate.get();
- editingDelegate->setAcceptsEditing(acceptsEditing);
-}
-
-void LayoutTestController::setAuthorAndUserStylesEnabled(bool flag)
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return;
-
- COMPtr<IWebPreferences> preferences;
- if (FAILED(webView->preferences(&preferences)))
- return;
-
- COMPtr<IWebPreferencesPrivate> prefsPrivate(Query, preferences);
- if (!prefsPrivate)
- return;
-
- prefsPrivate->setAuthorAndUserStylesEnabled(flag);
-}
-
-void LayoutTestController::setCustomPolicyDelegate(bool setDelegate)
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return;
-
- if (setDelegate)
- webView->setPolicyDelegate(policyDelegate);
- else
- webView->setPolicyDelegate(NULL);
-}
-
-void LayoutTestController::setMainFrameIsFirstResponder(bool flag)
-{
- // FIXME: Implement!
-}
-
-void LayoutTestController::setPrivateBrowsingEnabled(bool privateBrowsingEnabled)
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return;
-
- COMPtr<IWebPreferences> preferences;
- if (FAILED(webView->preferences(&preferences)))
- return;
-
- preferences->setPrivateBrowsingEnabled(privateBrowsingEnabled);
-}
-
-void LayoutTestController::setPopupBlockingEnabled(bool privateBrowsingEnabled)
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return;
-
- COMPtr<IWebPreferences> preferences;
- if (FAILED(webView->preferences(&preferences)))
- return;
-
- preferences->setJavaScriptCanOpenWindowsAutomatically(!privateBrowsingEnabled);
-}
-
-void LayoutTestController::setTabKeyCyclesThroughElements(bool shouldCycle)
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return;
-
- COMPtr<IWebViewPrivate> viewPrivate;
- if (FAILED(webView->QueryInterface(&viewPrivate)))
- return;
-
- viewPrivate->setTabKeyCyclesThroughElements(shouldCycle ? TRUE : FALSE);
-}
-
-void LayoutTestController::setUseDashboardCompatibilityMode(bool flag)
-{
- // FIXME: Implement!
-}
-
-void LayoutTestController::setUserStyleSheetEnabled(bool flag)
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return;
-
- COMPtr<IWebPreferences> preferences;
- if (FAILED(webView->preferences(&preferences)))
- return;
-
- preferences->setUserStyleSheetEnabled(flag);
-}
-
-bool appendComponentToPath(wstring& path, const wstring& component)
-{
- WCHAR buffer[MAX_PATH];
-
- if (path.size() + 1 > MAX_PATH)
- return false;
-
- memcpy(buffer, path.data(), path.size() * sizeof(WCHAR));
- buffer[path.size()] = '\0';
-
- if (!PathAppendW(buffer, component.c_str()))
- return false;
-
- path = wstring(buffer);
- return true;
-}
-
-static bool followShortcuts(wstring& path)
-{
- if (PathFileExists(path.c_str()))
- return true;
-
- // Do we have a shortcut?
- wstring linkPath = path;
- linkPath.append(TEXT(".lnk"));
- if (!PathFileExists(linkPath.c_str()))
- return true;
-
- // We have a shortcut, find its target.
- COMPtr<IShellLink> shortcut(Create, CLSID_ShellLink);
- if (!shortcut)
- return false;
- COMPtr<IPersistFile> persistFile(Query, shortcut);
- if (!shortcut)
- return false;
- if (FAILED(persistFile->Load(linkPath.c_str(), STGM_READ)))
- return false;
- if (FAILED(shortcut->Resolve(0, 0)))
- return false;
- WCHAR targetPath[MAX_PATH];
- DWORD targetPathLen = _countof(targetPath);
- if (FAILED(shortcut->GetPath(targetPath, targetPathLen, 0, 0)))
- return false;
- if (!PathFileExists(targetPath))
- return false;
- // Use the target path as the result path instead.
- path = wstring(targetPath);
-
- return true;
-}
-
-static bool resolveCygwinPath(const wstring& cygwinPath, wstring& windowsPath)
-{
- wstring fileProtocol = L"file://";
- bool isFileProtocol = cygwinPath.find(fileProtocol) != string::npos;
- if (cygwinPath[isFileProtocol ? 7 : 0] != '/') // ensure path is absolute
- return false;
-
- // Get the Root path.
- WCHAR rootPath[MAX_PATH];
- DWORD rootPathSize = _countof(rootPath);
- DWORD keyType;
- DWORD result = ::SHGetValueW(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Cygnus Solutions\\Cygwin\\mounts v2\\/"), TEXT("native"), &keyType, &rootPath, &rootPathSize);
-
- if (result != ERROR_SUCCESS || keyType != REG_SZ)
- return false;
-
- windowsPath = wstring(rootPath, rootPathSize);
-
- int oldPos = isFileProtocol ? 8 : 1;
- while (1) {
- int newPos = cygwinPath.find('/', oldPos);
-
- if (newPos == -1) {
- wstring pathComponent = cygwinPath.substr(oldPos);
-
- if (!appendComponentToPath(windowsPath, pathComponent))
- return false;
-
- if (!followShortcuts(windowsPath))
- return false;
-
- break;
- }
-
- wstring pathComponent = cygwinPath.substr(oldPos, newPos - oldPos);
- if (!appendComponentToPath(windowsPath, pathComponent))
- return false;
-
- if (!followShortcuts(windowsPath))
- return false;
-
- oldPos = newPos + 1;
- }
-
- if (isFileProtocol)
- windowsPath = fileProtocol + windowsPath;
-
- return true;
-}
-
-static wstring cfStringRefToWString(CFStringRef cfStr)
-{
- Vector<wchar_t> v(CFStringGetLength(cfStr));
- CFStringGetCharacters(cfStr, CFRangeMake(0, CFStringGetLength(cfStr)), (UniChar *)v.data());
-
- return wstring(v.data(), v.size());
-}
-
-void LayoutTestController::setUserStyleSheetLocation(JSStringRef jsURL)
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return;
-
- COMPtr<IWebPreferences> preferences;
- if (FAILED(webView->preferences(&preferences)))
- return;
-
- RetainPtr<CFStringRef> urlString(AdoptCF, JSStringCopyCFString(0, jsURL));
- RetainPtr<CFURLRef> url(AdoptCF, CFURLCreateWithString(0, urlString.get(), 0));
- if (!url)
- return;
-
- // Now copy the file system path, POSIX style.
- RetainPtr<CFStringRef> pathCF(AdoptCF, CFURLCopyFileSystemPath(url.get(), kCFURLPOSIXPathStyle));
- if (!pathCF)
- return;
-
- wstring path = cfStringRefToWString(pathCF.get());
-
- wstring resultPath;
- if (!resolveCygwinPath(path, resultPath))
- return;
-
- // The path has been resolved, now convert it back to a CFURL.
- int result = WideCharToMultiByte(CP_UTF8, 0, resultPath.c_str(), resultPath.size() + 1, 0, 0, 0, 0);
- Vector<char> utf8Vector(result);
- result = WideCharToMultiByte(CP_UTF8, 0, resultPath.c_str(), resultPath.size() + 1, utf8Vector.data(), result, 0, 0);
- if (!result)
- return;
-
- url = CFURLCreateFromFileSystemRepresentation(0, (const UInt8*)utf8Vector.data(), utf8Vector.size() - 1, false);
- if (!url)
- return;
-
- resultPath = cfStringRefToWString(CFURLGetString(url.get()));
-
- BSTR resultPathBSTR = SysAllocStringLen(resultPath.data(), resultPath.size());
- preferences->setUserStyleSheetLocation(resultPathBSTR);
- SysFreeString(resultPathBSTR);
-}
-
-void LayoutTestController::setPersistentUserStyleSheetLocation(JSStringRef jsURL)
-{
- RetainPtr<CFStringRef> urlString(AdoptCF, JSStringCopyCFString(0, jsURL));
- ::setPersistentUserStyleSheetLocation(urlString.get());
-}
-
-void LayoutTestController::clearPersistentUserStyleSheet()
-{
- ::setPersistentUserStyleSheetLocation(0);
-}
-
-void LayoutTestController::setWindowIsKey(bool flag)
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return;
-
- COMPtr<IWebViewPrivate> viewPrivate;
- if (FAILED(webView->QueryInterface(&viewPrivate)))
- return;
-
- HWND webViewWindow;
- if (FAILED(viewPrivate->viewWindow((OLE_HANDLE*)&webViewWindow)))
- return;
-
- ::SendMessage(webViewWindow, flag ? WM_SETFOCUS : WM_KILLFOCUS, (WPARAM)::GetDesktopWindow(), 0);
-}
-
-void LayoutTestController::setSmartInsertDeleteEnabled(bool flag)
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return;
-
- COMPtr<IWebViewEditing> viewEditing;
- if (FAILED(webView->QueryInterface(&viewEditing)))
- return;
-
- viewEditing->setSmartInsertDeleteEnabled(flag ? TRUE : FALSE);
-}
-
-void LayoutTestController::setJavaScriptProfilingEnabled(bool flag)
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return;
-
- COMPtr<IWebViewPrivate> viewPrivate;
- if (FAILED(webView->QueryInterface(&viewPrivate)))
- return;
-
- COMPtr<IWebPreferences> preferences;
- if (FAILED(webView->preferences(&preferences)))
- return;
-
- COMPtr<IWebPreferencesPrivate> prefsPrivate(Query, preferences);
- if (!prefsPrivate)
- return;
-
- COMPtr<IWebInspector> inspector;
- if (FAILED(viewPrivate->inspector(&inspector)))
- return;
-
- prefsPrivate->setDeveloperExtrasEnabled(flag);
- inspector->setJavaScriptProfilingEnabled(flag);
-}
-
-static const CFTimeInterval waitToDumpWatchdogInterval = 10.0;
-
-static void waitUntilDoneWatchdogFired(CFRunLoopTimerRef timer, void* info)
-{
- const char* message = "FAIL: Timed out waiting for notifyDone to be called\n";
- fprintf(stderr, message);
- fprintf(stdout, message);
- dump();
-}
-
-void LayoutTestController::setWaitToDump(bool waitUntilDone)
-{
- // Same as on mac. This can be shared.
- m_waitToDump = waitUntilDone;
- if (m_waitToDump && !waitToDumpWatchdog) {
- waitToDumpWatchdog = CFRunLoopTimerCreate(kCFAllocatorDefault, CFAbsoluteTimeGetCurrent() + waitToDumpWatchdogInterval, 0, 0, 0, waitUntilDoneWatchdogFired, NULL);
- CFRunLoopAddTimer(CFRunLoopGetCurrent(), waitToDumpWatchdog, kCFRunLoopCommonModes);
- }
-}
-
-int LayoutTestController::windowCount()
-{
- return openWindows().size();
-}
-
-bool LayoutTestController::elementDoesAutoCompleteForElementWithId(JSStringRef id)
-{
- COMPtr<IDOMDocument> document;
- if (FAILED(frame->DOMDocument(&document)))
- return false;
-
- wstring idWstring = jsStringRefToWString(id);
- BSTR idBSTR = SysAllocStringLen((OLECHAR*)idWstring.c_str(), idWstring.length());
- COMPtr<IDOMElement> element;
- HRESULT result = document->getElementById(idBSTR, &element);
- SysFreeString(idBSTR);
-
- if (FAILED(result))
- return false;
-
- COMPtr<IWebFramePrivate> framePrivate(Query, frame);
- if (!framePrivate)
- return false;
-
- BOOL autoCompletes;
- if (FAILED(framePrivate->elementDoesAutoComplete(element.get(), &autoCompletes)))
- return false;
-
- return autoCompletes;
-}
-
-void LayoutTestController::execCommand(JSStringRef name, JSStringRef value)
-{
- wstring wName = jsStringRefToWString(name);
- wstring wValue = jsStringRefToWString(value);
-
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return;
-
- COMPtr<IWebViewPrivate> viewPrivate;
- if (FAILED(webView->QueryInterface(&viewPrivate)))
- return;
-
- BSTR nameBSTR = SysAllocStringLen((OLECHAR*)wName.c_str(), wName.length());
- BSTR valueBSTR = SysAllocStringLen((OLECHAR*)wValue.c_str(), wValue.length());
- viewPrivate->executeCoreCommandByName(nameBSTR, valueBSTR);
-
- SysFreeString(nameBSTR);
- SysFreeString(valueBSTR);
-}
-
-void LayoutTestController::clearAllDatabases()
-{
- printf("ERROR: LayoutTestController::clearAllDatabases() not implemented\n");
-}
-
-void LayoutTestController::setDatabaseQuota(unsigned long long quota)
-{
- printf("ERROR: LayoutTestController::setDatabaseQuota() not implemented\n");
-}
diff --git a/WebKitTools/DumpRenderTree/win/MD5.cpp b/WebKitTools/DumpRenderTree/win/MD5.cpp
deleted file mode 100644
index 1bfc9c7..0000000
--- a/WebKitTools/DumpRenderTree/win/MD5.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2007 Apple, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "MD5.h"
-
-#include <windows.h>
-
-typedef void (WINAPI*initPtr)(MD5_CTX*);
-typedef void (WINAPI*updatePtr)(MD5_CTX*, unsigned char*, unsigned);
-typedef void (WINAPI*finalPtr)(MD5_CTX*);
-
-static HMODULE cryptDLL()
-{
- static HMODULE module = LoadLibraryW(L"Cryptdll.dll");
- return module;
-}
-
-static initPtr init()
-{
- static initPtr ptr = reinterpret_cast<initPtr>(GetProcAddress(cryptDLL(), "MD5Init"));
- return ptr;
-}
-
-static updatePtr update()
-{
- static updatePtr ptr = reinterpret_cast<updatePtr>(GetProcAddress(cryptDLL(), "MD5Update"));
- return ptr;
-}
-
-static finalPtr final()
-{
- static finalPtr ptr = reinterpret_cast<finalPtr>(GetProcAddress(cryptDLL(), "MD5Final"));
- return ptr;
-}
-
-void MD5_Init(MD5_CTX* context)
-{
- init()(context);
-}
-
-void MD5_Update(MD5_CTX* context, unsigned char* input, unsigned length)
-{
- update()(context, input, length);
-}
-
-void MD5_Final(unsigned char hash[16], MD5_CTX* context)
-{
- final()(context);
-
- for (int i = 0; i < 16; ++i)
- hash[i] = context->digest[i];
-}
diff --git a/WebKitTools/DumpRenderTree/win/MD5.h b/WebKitTools/DumpRenderTree/win/MD5.h
deleted file mode 100644
index 326e21d..0000000
--- a/WebKitTools/DumpRenderTree/win/MD5.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2007 Apple, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef MD5_h
-#define MD5_h
-
-typedef unsigned long ULONG;
-
-struct MD5_CTX {
- ULONG i[2];
- ULONG buf[4];
- unsigned char in[64];
- unsigned char digest[16];
-};
-
-void MD5_Init(MD5_CTX*);
-void MD5_Update(MD5_CTX*, unsigned char* input, unsigned length);
-void MD5_Final(unsigned char hash[16], MD5_CTX*);
-
-#endif // MD5_h
diff --git a/WebKitTools/DumpRenderTree/win/PixelDumpSupportWin.cpp b/WebKitTools/DumpRenderTree/win/PixelDumpSupportWin.cpp
deleted file mode 100644
index d0b79e1..0000000
--- a/WebKitTools/DumpRenderTree/win/PixelDumpSupportWin.cpp
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2007 Apple, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "PixelDumpSupportCG.h"
-
-#include "DumpRenderTree.h"
-#include <CoreGraphics/CGBitmapContext.h>
-#include <wtf/Assertions.h>
-#include <wtf/RetainPtr.h>
-
-PassRefPtr<BitmapContext> getBitmapContextFromWebView(bool onscreen, bool incrementalRepaint, bool sweepHorizontally, bool drawSelectionRect)
-{
- RECT frame;
- if (!GetWindowRect(webViewWindow, &frame))
- return 0;
-
- BITMAPINFO bmp = {0};
- bmp.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
- bmp.bmiHeader.biWidth = frame.right - frame.left;
- bmp.bmiHeader.biHeight = -(frame.bottom - frame.top);
- bmp.bmiHeader.biPlanes = 1;
- bmp.bmiHeader.biBitCount = 32;
- bmp.bmiHeader.biCompression = BI_RGB;
-
- void* bits = 0;
- HBITMAP bitmap = CreateDIBSection(0, &bmp, DIB_RGB_COLORS, &bits, 0, 0);
-
- HDC memoryDC = CreateCompatibleDC(0);
- SelectObject(memoryDC, bitmap);
- SendMessage(webViewWindow, WM_PRINTCLIENT, reinterpret_cast<WPARAM>(memoryDC), PRF_CLIENT | PRF_CHILDREN | PRF_OWNED);
- DeleteDC(memoryDC);
-
- BITMAP info = {0};
- GetObject(bitmap, sizeof(info), &info);
- ASSERT(info.bmBitsPixel == 32);
-
- RetainPtr<CGColorSpaceRef> colorSpace(AdoptCF, CGColorSpaceCreateDeviceRGB());
- CGContextRef context = CGBitmapContextCreate(info.bmBits, info.bmWidth, info.bmHeight, 8,
- info.bmWidthBytes, colorSpace.get(), kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst);
-
- return BitmapContext::createByAdoptingBitmapAndContext(bitmap, context);
-}
diff --git a/WebKitTools/DumpRenderTree/win/PolicyDelegate.cpp b/WebKitTools/DumpRenderTree/win/PolicyDelegate.cpp
deleted file mode 100644
index 99a1fd7..0000000
--- a/WebKitTools/DumpRenderTree/win/PolicyDelegate.cpp
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "PolicyDelegate.h"
-
-#include "DumpRenderTree.h"
-
-#include <string>
-
-using std::wstring;
-
-PolicyDelegate::PolicyDelegate()
- : m_refCount(1)
-{
-}
-
-// IUnknown
-HRESULT STDMETHODCALLTYPE PolicyDelegate::QueryInterface(REFIID riid, void** ppvObject)
-{
- *ppvObject = 0;
- if (IsEqualGUID(riid, IID_IUnknown))
- *ppvObject = static_cast<IWebPolicyDelegate*>(this);
- else if (IsEqualGUID(riid, IID_IWebPolicyDelegate))
- *ppvObject = static_cast<IWebPolicyDelegate*>(this);
- else
- return E_NOINTERFACE;
-
- AddRef();
- return S_OK;
-}
-
-ULONG STDMETHODCALLTYPE PolicyDelegate::AddRef(void)
-{
- return ++m_refCount;
-}
-
-ULONG STDMETHODCALLTYPE PolicyDelegate::Release(void)
-{
- ULONG newRef = --m_refCount;
- if (!newRef)
- delete this;
-
- return newRef;
-}
-
-HRESULT STDMETHODCALLTYPE PolicyDelegate::decidePolicyForNavigationAction(
- /*[in]*/ IWebView* /*webView*/,
- /*[in]*/ IPropertyBag* /*actionInformation*/,
- /*[in]*/ IWebURLRequest* request,
- /*[in]*/ IWebFrame* frame,
- /*[in]*/ IWebPolicyDecisionListener* listener)
-{
- BSTR url;
- request->URL(&url);
-
- printf("Policy delegate: attempt to load %S\n", url ? url : TEXT(""));
- SysFreeString(url);
- listener->ignore();
-
- return S_OK;
-}
diff --git a/WebKitTools/DumpRenderTree/win/PolicyDelegate.h b/WebKitTools/DumpRenderTree/win/PolicyDelegate.h
deleted file mode 100644
index b9844f4..0000000
--- a/WebKitTools/DumpRenderTree/win/PolicyDelegate.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef PolicyDelegate_h
-#define PolicyDelegate_h
-
-#include <WebKit/WebKit.h>
-
-class PolicyDelegate : public IWebPolicyDelegate {
-public:
- PolicyDelegate();
-
- // IUnknown
- virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
- virtual ULONG STDMETHODCALLTYPE AddRef(void);
- virtual ULONG STDMETHODCALLTYPE Release(void);
-
- // IWebPolicyDelegate
- virtual HRESULT STDMETHODCALLTYPE decidePolicyForNavigationAction(
- /* [in] */ IWebView *webView,
- /* [in] */ IPropertyBag *actionInformation,
- /* [in] */ IWebURLRequest *request,
- /* [in] */ IWebFrame *frame,
- /* [in] */ IWebPolicyDecisionListener *listener);
-
- virtual HRESULT STDMETHODCALLTYPE decidePolicyForNewWindowAction(
- /* [in] */ IWebView *webView,
- /* [in] */ IPropertyBag *actionInformation,
- /* [in] */ IWebURLRequest *request,
- /* [in] */ BSTR frameName,
- /* [in] */ IWebPolicyDecisionListener *listener){ return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE decidePolicyForMIMEType(
- /* [in] */ IWebView *webView,
- /* [in] */ BSTR type,
- /* [in] */ IWebURLRequest *request,
- /* [in] */ IWebFrame *frame,
- /* [in] */ IWebPolicyDecisionListener *listener){ return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE unableToImplementPolicyWithError(
- /* [in] */ IWebView *webView,
- /* [in] */ IWebError *error,
- /* [in] */ IWebFrame *frame){ return E_NOTIMPL; }
-
-private:
- ULONG m_refCount;
-};
-
-#endif // PolicyDelegate_h
diff --git a/WebKitTools/DumpRenderTree/win/ResourceLoadDelegate.cpp b/WebKitTools/DumpRenderTree/win/ResourceLoadDelegate.cpp
deleted file mode 100644
index 1e77eda..0000000
--- a/WebKitTools/DumpRenderTree/win/ResourceLoadDelegate.cpp
+++ /dev/null
@@ -1,257 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "ResourceLoadDelegate.h"
-
-#include "DumpRenderTree.h"
-#include "LayoutTestController.h"
-#include <wtf/HashMap.h>
-#include <wtf/Vector.h>
-#include <sstream>
-
-using std::wstring;
-using std::wiostream;
-
-static inline wstring wstringFromBSTR(BSTR str)
-{
- return wstring(str, ::SysStringLen(str));
-}
-
-wstring wstringFromInt(int i)
-{
- std::wostringstream ss;
- ss << i;
- return ss.str();
-}
-
-typedef HashMap<unsigned long, wstring> IdentifierMap;
-
-IdentifierMap& urlMap()
-{
- static IdentifierMap urlMap;
-
- return urlMap;
-}
-
-static wstring descriptionSuitableForTestResult(unsigned long identifier)
-{
- IdentifierMap::iterator it = urlMap().find(identifier);
-
- if (it == urlMap().end())
- return L"<unknown>";
-
- return urlSuitableForTestResult(it->second);
-}
-
-static wstring descriptionSuitableForTestResult(IWebURLRequest* request)
-{
- if (!request)
- return L"(null)";
-
- BSTR urlBSTR;
- if (FAILED(request->URL(&urlBSTR)))
- return wstring();
-
- wstring url = urlSuitableForTestResult(wstringFromBSTR(urlBSTR));
- ::SysFreeString(urlBSTR);
-
- return L"<NSURLRequest " + url + L">";
-}
-
-static wstring descriptionSuitableForTestResult(IWebURLResponse* response)
-{
- if (!response)
- return L"(null)";
-
- BSTR urlBSTR;
- if (FAILED(response->URL(&urlBSTR)))
- return wstring();
-
- wstring url = urlSuitableForTestResult(wstringFromBSTR(urlBSTR));
- ::SysFreeString(urlBSTR);
-
- return L"<NSURLResponse " + url + L">";
-}
-
-static wstring descriptionSuitableForTestResult(IWebError* error, unsigned long identifier)
-{
- wstring result = L"<NSError ";
-
- BSTR domainSTR;
- if (FAILED(error->domain(&domainSTR)))
- return wstring();
-
- wstring domain = wstringFromBSTR(domainSTR);
- ::SysFreeString(domainSTR);
-
- int code;
- if (FAILED(error->code(&code)))
- return wstring();
-
- if (domain == L"CFURLErrorDomain") {
- domain = L"NSURLErrorDomain";
-
- // Convert kCFURLErrorUnknown to NSURLErrorUnknown
- if (code == -998)
- code = -1;
- } else if (domain == L"kCFErrorDomainWinSock") {
- domain = L"NSURLErrorDomain";
-
- // Convert the winsock error code to an NSURLError code.
- if (code == WSAEADDRNOTAVAIL)
- code = -1004; // NSURLErrorCannotConnectToHose;
- }
-
- result += L"domain " + domain;
- result += L", code " + wstringFromInt(code);
-
- BSTR failingURLSTR;
- if (FAILED(error->failingURL(&failingURLSTR)))
- return wstring();
-
- wstring failingURL;
-
- // If the error doesn't have a failing URL, we fake one by using the URL the resource had
- // at creation time. This seems to work fine for now.
- // See <rdar://problem/5064234> CFErrors should have failingURL key.
- if (failingURLSTR)
- failingURL = wstringFromBSTR(failingURLSTR);
- else
- failingURL = descriptionSuitableForTestResult(identifier);
-
- ::SysFreeString(failingURLSTR);
-
- result += L", failing URL \"" + urlSuitableForTestResult(failingURL) + L"\">";
-
- return result;
-}
-
-ResourceLoadDelegate::ResourceLoadDelegate()
- : m_refCount(1)
-{
-}
-
-ResourceLoadDelegate::~ResourceLoadDelegate()
-{
-}
-
-HRESULT STDMETHODCALLTYPE ResourceLoadDelegate::QueryInterface(REFIID riid, void** ppvObject)
-{
- *ppvObject = 0;
- if (IsEqualGUID(riid, IID_IUnknown))
- *ppvObject = static_cast<IWebResourceLoadDelegate*>(this);
- else if (IsEqualGUID(riid, IID_IWebResourceLoadDelegate))
- *ppvObject = static_cast<IWebResourceLoadDelegate*>(this);
- else
- return E_NOINTERFACE;
-
- AddRef();
- return S_OK;
-}
-
-ULONG STDMETHODCALLTYPE ResourceLoadDelegate::AddRef(void)
-{
- return ++m_refCount;
-}
-
-ULONG STDMETHODCALLTYPE ResourceLoadDelegate::Release(void)
-{
- ULONG newRef = --m_refCount;
- if (!newRef)
- delete(this);
-
- return newRef;
-}
-
-HRESULT STDMETHODCALLTYPE ResourceLoadDelegate::identifierForInitialRequest(
- /* [in] */ IWebView* webView,
- /* [in] */ IWebURLRequest* request,
- /* [in] */ IWebDataSource* dataSource,
- /* [in] */ unsigned long identifier)
-{
- if (!done && gLayoutTestController->dumpResourceLoadCallbacks()) {
- BSTR urlStr;
- if (FAILED(request->URL(&urlStr)))
- return E_FAIL;
-
- urlMap().set(identifier, wstringFromBSTR(urlStr));
- }
-
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE ResourceLoadDelegate::willSendRequest(
- /* [in] */ IWebView* webView,
- /* [in] */ unsigned long identifier,
- /* [in] */ IWebURLRequest* request,
- /* [in] */ IWebURLResponse* redirectResponse,
- /* [in] */ IWebDataSource* dataSource,
- /* [retval][out] */ IWebURLRequest **newRequest)
-{
- if (!done && gLayoutTestController->dumpResourceLoadCallbacks()) {
- printf("%S - willSendRequest %S redirectResponse %S\n",
- descriptionSuitableForTestResult(identifier).c_str(),
- descriptionSuitableForTestResult(request).c_str(),
- descriptionSuitableForTestResult(redirectResponse).c_str());
- }
-
- request->AddRef();
- *newRequest = request;
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE ResourceLoadDelegate::didFinishLoadingFromDataSource(
- /* [in] */ IWebView* webView,
- /* [in] */ unsigned long identifier,
- /* [in] */ IWebDataSource* dataSource)
-{
- if (!done && gLayoutTestController->dumpResourceLoadCallbacks()) {
- printf("%S - didFinishLoading\n",
- descriptionSuitableForTestResult(identifier).c_str()),
- urlMap().remove(identifier);
- }
-
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE ResourceLoadDelegate::didFailLoadingWithError(
- /* [in] */ IWebView* webView,
- /* [in] */ unsigned long identifier,
- /* [in] */ IWebError* error,
- /* [in] */ IWebDataSource* dataSource)
-{
- if (!done && gLayoutTestController->dumpResourceLoadCallbacks()) {
- printf("%S - didFailLoadingWithError: %S\n",
- descriptionSuitableForTestResult(identifier).c_str(),
- descriptionSuitableForTestResult(error, identifier).c_str());
- urlMap().remove(identifier);
- }
-
- return S_OK;
-}
diff --git a/WebKitTools/DumpRenderTree/win/ResourceLoadDelegate.h b/WebKitTools/DumpRenderTree/win/ResourceLoadDelegate.h
deleted file mode 100644
index e259adc..0000000
--- a/WebKitTools/DumpRenderTree/win/ResourceLoadDelegate.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef ResourceLoadDelegate_h
-#define ResourceLoadDelegate_h
-
-#include <WebKit/WebKit.h>
-
-class ResourceLoadDelegate : public IWebResourceLoadDelegate {
-public:
- ResourceLoadDelegate();
- virtual ~ResourceLoadDelegate();
-
- // IUnknown
- virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
- virtual ULONG STDMETHODCALLTYPE AddRef(void);
- virtual ULONG STDMETHODCALLTYPE Release(void);
-
- // IWebResourceLoadDelegate
- virtual HRESULT STDMETHODCALLTYPE identifierForInitialRequest(
- /* [in] */ IWebView *webView,
- /* [in] */ IWebURLRequest *request,
- /* [in] */ IWebDataSource *dataSource,
- /* [in] */ unsigned long identifier);
-
- virtual HRESULT STDMETHODCALLTYPE willSendRequest(
- /* [in] */ IWebView *webView,
- /* [in] */ unsigned long identifier,
- /* [in] */ IWebURLRequest *request,
- /* [in] */ IWebURLResponse *redirectResponse,
- /* [in] */ IWebDataSource *dataSource,
- /* [retval][out] */ IWebURLRequest **newRequest);
-
- virtual HRESULT STDMETHODCALLTYPE didReceiveAuthenticationChallenge(
- /* [in] */ IWebView *webView,
- /* [in] */ unsigned long identifier,
- /* [in] */ IWebURLAuthenticationChallenge *challenge,
- /* [in] */ IWebDataSource *dataSource) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE didCancelAuthenticationChallenge(
- /* [in] */ IWebView *webView,
- /* [in] */ unsigned long identifier,
- /* [in] */ IWebURLAuthenticationChallenge *challenge,
- /* [in] */ IWebDataSource *dataSource) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE didReceiveResponse(
- /* [in] */ IWebView *webView,
- /* [in] */ unsigned long identifier,
- /* [in] */ IWebURLResponse *response,
- /* [in] */ IWebDataSource *dataSource) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE didReceiveContentLength(
- /* [in] */ IWebView *webView,
- /* [in] */ unsigned long identifier,
- /* [in] */ UINT length,
- /* [in] */ IWebDataSource *dataSource) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE didFinishLoadingFromDataSource(
- /* [in] */ IWebView *webView,
- /* [in] */ unsigned long identifier,
- /* [in] */ IWebDataSource *dataSource);
-
- virtual HRESULT STDMETHODCALLTYPE didFailLoadingWithError(
- /* [in] */ IWebView *webView,
- /* [in] */ unsigned long identifier,
- /* [in] */ IWebError *error,
- /* [in] */ IWebDataSource *dataSource);
-
- virtual HRESULT STDMETHODCALLTYPE plugInFailedWithError(
- /* [in] */ IWebView *webView,
- /* [in] */ IWebError *error,
- /* [in] */ IWebDataSource *dataSource) { return E_NOTIMPL; }
-
-protected:
- ULONG m_refCount;
-};
-
-#endif // ResourceLoadDelegate_h
diff --git a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.def b/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.def
deleted file mode 100644
index 92cdb12..0000000
--- a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.def
+++ /dev/null
@@ -1,6 +0,0 @@
-LIBRARY "TestNetscapePlugin"
-
-EXPORTS
- NP_GetEntryPoints @1
- NP_Initialize @2
- NP_Shutdown @3
diff --git a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.rc b/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.rc
deleted file mode 100644
index 7801de9..0000000
--- a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.rc
+++ /dev/null
@@ -1,101 +0,0 @@
-// Microsoft Visual C++ generated resource script.
-//
-#include "resource.h"
-
-#define APSTUDIO_READONLY_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 2 resource.
-//
-#include "afxres.h"
-
-/////////////////////////////////////////////////////////////////////////////
-#undef APSTUDIO_READONLY_SYMBOLS
-
-/////////////////////////////////////////////////////////////////////////////
-// English (U.S.) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-#ifdef _WIN32
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-#pragma code_page(1252)
-#endif //_WIN32
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-1 TEXTINCLUDE
-BEGIN
- "resource.h\0"
-END
-
-2 TEXTINCLUDE
-BEGIN
- "#include ""afxres.h""\r\n"
- "\0"
-END
-
-3 TEXTINCLUDE
-BEGIN
- "\r\n"
- "\0"
-END
-
-#endif // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Version
-//
-
-VS_VERSION_INFO VERSIONINFO
- FILEVERSION 1,0,0,1
- PRODUCTVERSION 1,0,0,1
- FILEFLAGSMASK 0x17L
-#ifdef _DEBUG
- FILEFLAGS 0x1L
-#else
- FILEFLAGS 0x0L
-#endif
- FILEOS 0x4L
- FILETYPE 0x2L
- FILESUBTYPE 0x0L
-BEGIN
- BLOCK "StringFileInfo"
- BEGIN
- BLOCK "040904e4"
- BEGIN
- VALUE "CompanyName", "Apple Inc."
- VALUE "FileDescription", "TestNetscapePlugIn"
- VALUE "FileOpenName", "test netscape content"
- VALUE "LegalCopyright", "Copyright Apple Inc. 2007-2008"
- VALUE "MIMEType", "application/x-webkit-test-netscape"
- VALUE "OriginalFilename", "npTestNetscapePlugin.dll"
- VALUE "ProductName", "TestNetscapePlugIn"
- END
- END
- BLOCK "VarFileInfo"
- BEGIN
- VALUE "Translation", 0x409, 1252
- END
-END
-
-#endif // English (U.S.) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-
-
-/////////////////////////////////////////////////////////////////////////////
-#endif // not APSTUDIO_INVOKED
-
diff --git a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj b/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj
deleted file mode 100644
index eced57e..0000000
--- a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj
+++ /dev/null
@@ -1,263 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="TestNetscapePlugin"
- ProjectGUID="{C0737398-3565-439E-A2B8-AB2BE4D5430C}"
- RootNamespace="TestNetscapePlugin"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- ConfigurationType="2"
- InheritedPropertySheets="$(WebKitLibrariesDir)\tools\vsprops\common.vsprops;$(WebKitLibrariesDir)\tools\vsprops\debug.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- CommandLine="set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; grep XX$(ProjectName)XX &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;if errorlevel 1 exit 1&#x0D;&#x0A;echo XX$(ProjectName)XX &gt; &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="&quot;$(WebKitOutputDir)\Include&quot;;&quot;$(WebKitOutputDir)\Include\JavaScriptCore&quot;;&quot;$(WebKitOutputDir)\Include\WebCore\ForwardingHeaders&quot;;&quot;$(ProjectDir)..\..\TestNetscapePlugin.subproj&quot;;&quot;$(WebKitLibrariesDir)\include&quot;;&quot;$(WebKitLibrariesDir)\include\CoreFoundation\OSXCompatibilityHeaders&quot;;&quot;$(WebKitLibrariesDir)\include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility&quot;"
- PreprocessorDefinitions="_USRDLL;TESTNETSCAPEPLUGIN_EXPORTS;snprintf=_snprintf"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- AdditionalIncludeDirectories=""
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- OutputFile="$(OutDir)\$(ProjectName)$(WebKitConfigSuffix)\np$(ProjectName)$(WebKitConfigSuffix).dll"
- ModuleDefinitionFile="TestNetscapePlugin.def"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- CommandLine="if exist &quot;$(WebKitOutputDir)\buildfailed&quot; del &quot;$(WebKitOutputDir)\buildfailed&quot;"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- ConfigurationType="2"
- InheritedPropertySheets="$(WebKitLibrariesDir)\tools\vsprops\common.vsprops;$(WebKitLibrariesDir)\tools\vsprops\release.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- CommandLine="set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; grep XX$(ProjectName)XX &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;if errorlevel 1 exit 1&#x0D;&#x0A;echo XX$(ProjectName)XX &gt; &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="&quot;$(WebKitOutputDir)\Include&quot;;&quot;$(WebKitOutputDir)\Include\JavaScriptCore&quot;;&quot;$(WebKitOutputDir)\Include\WebCore\ForwardingHeaders&quot;;&quot;$(ProjectDir)..\..\TestNetscapePlugin.subproj&quot;;&quot;$(WebKitLibrariesDir)\include&quot;;&quot;$(WebKitLibrariesDir)\include\CoreFoundation\OSXCompatibilityHeaders&quot;;&quot;$(WebKitLibrariesDir)\include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility&quot;"
- PreprocessorDefinitions="_USRDLL;TESTNETSCAPEPLUGIN_EXPORTS;snprintf=_snprintf"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- AdditionalIncludeDirectories=""
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- OutputFile="$(OutDir)\$(ProjectName)$(WebKitConfigSuffix)\np$(ProjectName)$(WebKitConfigSuffix).dll"
- ModuleDefinitionFile="TestNetscapePlugin.def"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- CommandLine="if exist &quot;$(WebKitOutputDir)\buildfailed&quot; del &quot;$(WebKitOutputDir)\buildfailed&quot;"
- />
- </Configuration>
- <Configuration
- Name="Debug_Internal|Win32"
- ConfigurationType="2"
- InheritedPropertySheets="$(WebKitLibrariesDir)\tools\vsprops\common.vsprops;$(WebKitLibrariesDir)\tools\vsprops\debug_internal.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- CommandLine="set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;if exist &quot;$(WebKitOutputDir)\buildfailed&quot; grep XX$(ProjectName)XX &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;if errorlevel 1 exit 1&#x0D;&#x0A;echo XX$(ProjectName)XX &gt; &quot;$(WebKitOutputDir)\buildfailed&quot;&#x0D;&#x0A;"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="&quot;$(WebKitOutputDir)\Include&quot;;&quot;$(WebKitOutputDir)\Include\JavaScriptCore&quot;;&quot;$(WebKitOutputDir)\Include\WebCore\ForwardingHeaders&quot;;&quot;$(ProjectDir)..\..\TestNetscapePlugin.subproj&quot;;&quot;$(WebKitLibrariesDir)\include&quot;;&quot;$(WebKitLibrariesDir)\include\CoreFoundation\OSXCompatibilityHeaders&quot;;&quot;$(WebKitLibrariesDir)\include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility&quot;"
- PreprocessorDefinitions="_USRDLL;TESTNETSCAPEPLUGIN_EXPORTS;snprintf=_snprintf"
- RuntimeLibrary="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- AdditionalIncludeDirectories=""
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- OutputFile="$(OutDir)\$(ProjectName)$(WebKitConfigSuffix)\np$(ProjectName)$(WebKitConfigSuffix).dll"
- ModuleDefinitionFile="TestNetscapePlugin.def"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- CommandLine="if exist &quot;$(WebKitOutputDir)\buildfailed&quot; del &quot;$(WebKitOutputDir)\buildfailed&quot;"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\main.cpp"
- >
- </File>
- <File
- RelativePath="..\..\TestNetscapePlugIn.subproj\PluginObject.cpp"
- >
- </File>
- <File
- RelativePath="..\..\TestNetscapePlugIn.subproj\PluginObject.h"
- >
- </File>
- <File
- RelativePath=".\resource.h"
- >
- </File>
- <File
- RelativePath=".\TestNetscapePlugin.def"
- >
- </File>
- <File
- RelativePath=".\TestNetscapePlugin.rc"
- >
- </File>
- <File
- RelativePath="..\..\TestNetscapePlugIn.subproj\TestObject.cpp"
- >
- </File>
- <File
- RelativePath="..\..\TestNetscapePlugIn.subproj\TestObject.h"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/main.c b/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/main.c
deleted file mode 100644
index 829a32c..0000000
--- a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/main.c
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "PluginObject.h"
-
-#include <stdio.h>
-
-extern "C"
-NPError __stdcall NP_Initialize(NPNetscapeFuncs* browserFuncs)
-{
- browser = browserFuncs;
- return NPERR_NO_ERROR;
-}
-
-extern "C"
-NPError __stdcall NP_GetEntryPoints(NPPluginFuncs* pluginFuncs)
-{
- pluginFuncs->version = 11;
- pluginFuncs->size = sizeof(pluginFuncs);
- pluginFuncs->newp = NPP_New;
- pluginFuncs->destroy = NPP_Destroy;
- pluginFuncs->setwindow = NPP_SetWindow;
- pluginFuncs->newstream = NPP_NewStream;
- pluginFuncs->destroystream = NPP_DestroyStream;
- pluginFuncs->asfile = NPP_StreamAsFile;
- pluginFuncs->writeready = NPP_WriteReady;
- pluginFuncs->write = (NPP_WriteProcPtr)NPP_Write;
- pluginFuncs->print = NPP_Print;
- pluginFuncs->event = NPP_HandleEvent;
- pluginFuncs->urlnotify = NPP_URLNotify;
- pluginFuncs->getvalue = NPP_GetValue;
- pluginFuncs->setvalue = NPP_SetValue;
-
- return NPERR_NO_ERROR;
-}
-
-
-extern "C"
-NPError __stdcall NP_Shutdown()
-{
- return NPERR_NO_ERROR;
-}
-
-
-NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char *argn[], char *argv[], NPSavedData *saved)
-{
- if (browser->version >= 14) {
- PluginObject* obj = (PluginObject*)browser->createobject(instance, getPluginClass());
-
- obj->onStreamLoad = NULL;
-
- for (int16 i = 0; i < argc; i++) {
- if (_stricmp(argn[i], "onstreamload") == 0 && !obj->onStreamLoad)
- obj->onStreamLoad = _strdup(argv[i]);
- }
-
- instance->pdata = obj;
- }
-
- return NPERR_NO_ERROR;
-}
-
-NPError NPP_Destroy(NPP instance, NPSavedData **save)
-{
- PluginObject *obj = (PluginObject*)instance->pdata;
- if (obj) {
- if (obj->onStreamLoad)
- free(obj->onStreamLoad);
-
- if (obj->logDestroy)
- printf("PLUGIN: NPP_Destroy\n");
-
- browser->releaseobject(&obj->header);
- }
- return NPERR_NO_ERROR;
-}
-
-NPError NPP_SetWindow(NPP instance, NPWindow *window)
-{
- return NPERR_NO_ERROR;
-}
-
-NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream *stream, NPBool seekable, uint16 *stype)
-{
- PluginObject* obj = (PluginObject*)instance->pdata;
- obj->stream = stream;
- *stype = NP_ASFILEONLY;
-
- if (obj->onStreamLoad) {
- NPObject *windowScriptObject;
- browser->getvalue(obj->npp, NPNVWindowNPObject, &windowScriptObject);
-
- NPString script;
- script.UTF8Characters = obj->onStreamLoad;
- script.UTF8Length = strlen(obj->onStreamLoad);
-
- NPVariant browserResult;
- browser->evaluate(obj->npp, windowScriptObject, &script, &browserResult);
- browser->releasevariantvalue(&browserResult);
- }
-
- return NPERR_NO_ERROR;
-}
-
-NPError NPP_DestroyStream(NPP instance, NPStream *stream, NPReason reason)
-{
- return NPERR_NO_ERROR;
-}
-
-int32 NPP_WriteReady(NPP instance, NPStream *stream)
-{
- return 0;
-}
-
-int32 NPP_Write(NPP instance, NPStream *stream, int32 offset, int32 len, void *buffer)
-{
- return 0;
-}
-
-void NPP_StreamAsFile(NPP instance, NPStream *stream, const char *fname)
-{
-}
-
-void NPP_Print(NPP instance, NPPrint *platformPrint)
-{
-}
-
-int16 NPP_HandleEvent(NPP instance, void *event)
-{
- PluginObject *obj = (PluginObject*)instance->pdata;
- if (!obj->eventLogging)
- return 0;
-
- // FIXME: Implement this
- return 0;
-}
-
-void NPP_URLNotify(NPP instance, const char *url, NPReason reason, void *notifyData)
-{
- PluginObject *obj = (PluginObject*)instance->pdata;
-
- handleCallback(obj, url, reason, notifyData);
-}
-
-NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value)
-{
- if (variable == NPPVpluginScriptableNPObject) {
- void **v = (void **)value;
- PluginObject *obj = (PluginObject*)instance->pdata;
- // Return value is expected to be retained
- browser->retainobject((NPObject *)obj);
- *v = obj;
- return NPERR_NO_ERROR;
- }
- return NPERR_GENERIC_ERROR;
-}
-
-NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value)
-{
- return NPERR_GENERIC_ERROR;
-}
diff --git a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/main.cpp b/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/main.cpp
deleted file mode 100644
index ab54872..0000000
--- a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/main.cpp
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in
- consideration of your agreement to the following terms, and your use, installation,
- modification or redistribution of this Apple software constitutes acceptance of these
- terms. If you do not agree with these terms, please do not use, install, modify or
- redistribute this Apple software.
-
- In consideration of your agreement to abide by the following terms, and subject to these
- terms, Apple grants you a personal, non-exclusive license, under AppleÕs copyrights in
- this original Apple software (the "Apple Software"), to use, reproduce, modify and
- redistribute the Apple Software, with or without modifications, in source and/or binary
- forms; provided that if you redistribute the Apple Software in its entirety and without
- modifications, you must retain this notice and the following text and disclaimers in all
- such redistributions of the Apple Software. Neither the name, trademarks, service marks
- or logos of Apple Computer, Inc. may be used to endorse or promote products derived from
- the Apple Software without specific prior written permission from Apple. Except as expressly
- stated in this notice, no other rights or licenses, express or implied, are granted by Apple
- herein, including but not limited to any patent rights that may be infringed by your
- derivative works or by other works in which the Apple Software may be incorporated.
-
- The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES,
- EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT,
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS
- USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
-
- IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE,
- REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND
- WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR
- OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "PluginObject.h"
-
-#include <stdio.h>
-
-extern "C"
-NPError __stdcall NP_Initialize(NPNetscapeFuncs* browserFuncs)
-{
- browser = browserFuncs;
- return NPERR_NO_ERROR;
-}
-
-extern "C"
-NPError __stdcall NP_GetEntryPoints(NPPluginFuncs* pluginFuncs)
-{
- pluginFuncs->version = 11;
- pluginFuncs->size = sizeof(pluginFuncs);
- pluginFuncs->newp = NPP_New;
- pluginFuncs->destroy = NPP_Destroy;
- pluginFuncs->setwindow = NPP_SetWindow;
- pluginFuncs->newstream = NPP_NewStream;
- pluginFuncs->destroystream = NPP_DestroyStream;
- pluginFuncs->asfile = NPP_StreamAsFile;
- pluginFuncs->writeready = NPP_WriteReady;
- pluginFuncs->write = (NPP_WriteProcPtr)NPP_Write;
- pluginFuncs->print = NPP_Print;
- pluginFuncs->event = NPP_HandleEvent;
- pluginFuncs->urlnotify = NPP_URLNotify;
- pluginFuncs->getvalue = NPP_GetValue;
- pluginFuncs->setvalue = NPP_SetValue;
-
- return NPERR_NO_ERROR;
-}
-
-
-extern "C"
-NPError __stdcall NP_Shutdown()
-{
- return NPERR_NO_ERROR;
-}
-
-
-NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char *argn[], char *argv[], NPSavedData *saved)
-{
- if (browser->version >= 14) {
- PluginObject* obj = (PluginObject*)browser->createobject(instance, getPluginClass());
-
- for (int16 i = 0; i < argc; i++) {
- if (_stricmp(argn[i], "onstreamload") == 0 && !obj->onStreamLoad)
- obj->onStreamLoad = _strdup(argv[i]);
- else if (_stricmp(argn[i], "onStreamDestroy") == 0 && !obj->onStreamDestroy)
- obj->onStreamDestroy = _strdup(argv[i]);
- else if (_stricmp(argn[i], "onURLNotify") == 0 && !obj->onURLNotify)
- obj->onURLNotify = _strdup(argv[i]);
- }
-
- instance->pdata = obj;
- }
-
- return NPERR_NO_ERROR;
-}
-
-NPError NPP_Destroy(NPP instance, NPSavedData **save)
-{
- PluginObject *obj = (PluginObject*)instance->pdata;
- if (obj) {
- if (obj->onStreamLoad)
- free(obj->onStreamLoad);
-
- if (obj->onURLNotify)
- free(obj->onURLNotify);
-
- if (obj->onStreamDestroy)
- free(obj->onStreamDestroy);
-
- if (obj->logDestroy)
- printf("PLUGIN: NPP_Destroy\n");
-
- browser->releaseobject(&obj->header);
- }
- return NPERR_NO_ERROR;
-}
-
-NPError NPP_SetWindow(NPP instance, NPWindow *window)
-{
- return NPERR_NO_ERROR;
-}
-
-static void executeScript(const PluginObject* obj, const char* script)
-{
- NPObject *windowScriptObject;
- browser->getvalue(obj->npp, NPNVWindowNPObject, &windowScriptObject);
-
- NPString npScript;
- npScript.UTF8Characters = script;
- npScript.UTF8Length = strlen(script);
-
- NPVariant browserResult;
- browser->evaluate(obj->npp, windowScriptObject, &npScript, &browserResult);
- browser->releasevariantvalue(&browserResult);
-}
-
-NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream *stream, NPBool seekable, uint16 *stype)
-{
- PluginObject* obj = (PluginObject*)instance->pdata;
-
- if (obj->returnErrorFromNewStream)
- return NPERR_GENERIC_ERROR;
-
- obj->stream = stream;
- *stype = NP_ASFILEONLY;
-
- if (obj->onStreamLoad)
- executeScript(obj, obj->onStreamLoad);
-
- return NPERR_NO_ERROR;
-}
-
-NPError NPP_DestroyStream(NPP instance, NPStream *stream, NPReason reason)
-{
- PluginObject* obj = (PluginObject*)instance->pdata;
-
- if (obj->onStreamDestroy)
- executeScript(obj, obj->onStreamDestroy);
-
- return NPERR_NO_ERROR;
-}
-
-int32 NPP_WriteReady(NPP instance, NPStream *stream)
-{
- return 0;
-}
-
-int32 NPP_Write(NPP instance, NPStream *stream, int32 offset, int32 len, void *buffer)
-{
- return 0;
-}
-
-void NPP_StreamAsFile(NPP instance, NPStream *stream, const char *fname)
-{
-}
-
-void NPP_Print(NPP instance, NPPrint *platformPrint)
-{
-}
-
-int16 NPP_HandleEvent(NPP instance, void *event)
-{
- PluginObject *obj = (PluginObject*)instance->pdata;
- if (!obj->eventLogging)
- return 0;
-
- // FIXME: Implement this
- return 0;
-}
-
-void NPP_URLNotify(NPP instance, const char *url, NPReason reason, void *notifyData)
-{
- PluginObject *obj = (PluginObject*)instance->pdata;
-
- if (obj->onURLNotify)
- executeScript(obj, obj->onURLNotify);
-
- handleCallback(obj, url, reason, notifyData);
-}
-
-NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value)
-{
- if (variable == NPPVpluginScriptableNPObject) {
- void **v = (void **)value;
- PluginObject *obj = (PluginObject*)instance->pdata;
- // Return value is expected to be retained
- browser->retainobject((NPObject *)obj);
- *v = obj;
- return NPERR_NO_ERROR;
- }
- return NPERR_GENERIC_ERROR;
-}
-
-NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value)
-{
- return NPERR_GENERIC_ERROR;
-}
diff --git a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/resource.h b/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/resource.h
deleted file mode 100644
index b0ce340..0000000
--- a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/resource.h
+++ /dev/null
@@ -1,14 +0,0 @@
-//{{NO_DEPENDENCIES}}
-// Microsoft Visual C++ generated include file.
-// Used by TestNetscapePlugin.rc
-
-// Next default values for new objects
-//
-#ifdef APSTUDIO_INVOKED
-#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE 101
-#define _APS_NEXT_COMMAND_VALUE 40001
-#define _APS_NEXT_CONTROL_VALUE 1001
-#define _APS_NEXT_SYMED_VALUE 101
-#endif
-#endif
diff --git a/WebKitTools/DumpRenderTree/win/UIDelegate.cpp b/WebKitTools/DumpRenderTree/win/UIDelegate.cpp
deleted file mode 100755
index a2532a5..0000000
--- a/WebKitTools/DumpRenderTree/win/UIDelegate.cpp
+++ /dev/null
@@ -1,444 +0,0 @@
-/*
- * Copyright (C) 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "UIDelegate.h"
-
-#include "DumpRenderTree.h"
-#include "DraggingInfo.h"
-#include "EventSender.h"
-#include "LayoutTestController.h"
-
-#include <WebCore/COMPtr.h>
-#include <wtf/Platform.h>
-#include <wtf/Vector.h>
-#include <JavaScriptCore/Assertions.h>
-#include <JavaScriptCore/JavaScriptCore.h>
-#include <WebKit/WebKit.h>
-#include <stdio.h>
-
-using std::wstring;
-
-class DRTUndoObject {
-public:
- DRTUndoObject(IWebUndoTarget* target, BSTR actionName, IUnknown* obj)
- : m_target(target)
- , m_actionName(SysAllocString(actionName))
- , m_obj(obj)
- {
- }
-
- ~DRTUndoObject()
- {
- SysFreeString(m_actionName);
- }
-
- void invoke()
- {
- m_target->invoke(m_actionName, m_obj.get());
- }
-
-private:
- IWebUndoTarget* m_target;
- BSTR m_actionName;
- COMPtr<IUnknown> m_obj;
-};
-
-class DRTUndoStack {
-public:
- ~DRTUndoStack() { deleteAllValues(m_undoVector); }
-
- bool isEmpty() const { return m_undoVector.isEmpty(); }
- void clear() { deleteAllValues(m_undoVector); m_undoVector.clear(); }
-
- void push(DRTUndoObject* undoObject) { m_undoVector.append(undoObject); }
- DRTUndoObject* pop() { DRTUndoObject* top = m_undoVector.last(); m_undoVector.removeLast(); return top; }
-
-private:
- Vector<DRTUndoObject*> m_undoVector;
-};
-
-class DRTUndoManager {
-public:
- DRTUndoManager();
-
- void removeAllActions();
- void registerUndoWithTarget(IWebUndoTarget* target, BSTR actionName, IUnknown* obj);
- void redo();
- void undo();
- bool canRedo() { return !m_redoStack->isEmpty(); }
- bool canUndo() { return !m_undoStack->isEmpty(); }
-
-private:
- OwnPtr<DRTUndoStack> m_redoStack;
- OwnPtr<DRTUndoStack> m_undoStack;
- bool m_isRedoing;
- bool m_isUndoing;
-};
-
-DRTUndoManager::DRTUndoManager()
- : m_redoStack(new DRTUndoStack)
- , m_undoStack(new DRTUndoStack)
- , m_isRedoing(false)
- , m_isUndoing(false)
-{
-}
-
-void DRTUndoManager::removeAllActions()
-{
- m_redoStack->clear();
- m_undoStack->clear();
-}
-
-void DRTUndoManager::registerUndoWithTarget(IWebUndoTarget* target, BSTR actionName, IUnknown* obj)
-{
- if (!m_isUndoing && !m_isRedoing)
- m_redoStack->clear();
-
- DRTUndoStack* stack = m_isUndoing ? m_redoStack.get() : m_undoStack.get();
- stack->push(new DRTUndoObject(target, actionName, obj));
-}
-
-void DRTUndoManager::redo()
-{
- if (!canRedo())
- return;
-
- m_isRedoing = true;
-
- DRTUndoObject* redoObject = m_redoStack->pop();
- redoObject->invoke();
- delete redoObject;
-
- m_isRedoing = false;
-}
-
-void DRTUndoManager::undo()
-{
- if (!canUndo())
- return;
-
- m_isUndoing = true;
-
- DRTUndoObject* undoObject = m_undoStack->pop();
- undoObject->invoke();
- delete undoObject;
-
- m_isUndoing = false;
-}
-
-UIDelegate::UIDelegate()
- : m_refCount(1)
- , m_undoManager(new DRTUndoManager)
-{
- m_frame.bottom = 0;
- m_frame.top = 0;
- m_frame.left = 0;
- m_frame.right = 0;
-}
-
-void UIDelegate::resetUndoManager()
-{
- m_undoManager.set(new DRTUndoManager);
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::QueryInterface(REFIID riid, void** ppvObject)
-{
- *ppvObject = 0;
- if (IsEqualGUID(riid, IID_IUnknown))
- *ppvObject = static_cast<IWebUIDelegate*>(this);
- else if (IsEqualGUID(riid, IID_IWebUIDelegate))
- *ppvObject = static_cast<IWebUIDelegate*>(this);
- else if (IsEqualGUID(riid, IID_IWebUIDelegatePrivate))
- *ppvObject = static_cast<IWebUIDelegatePrivate*>(this);
- else if (IsEqualGUID(riid, IID_IWebUIDelegatePrivate2))
- *ppvObject = static_cast<IWebUIDelegatePrivate2*>(this);
- else if (IsEqualGUID(riid, IID_IWebUIDelegatePrivate3))
- *ppvObject = static_cast<IWebUIDelegatePrivate3*>(this);
- else
- return E_NOINTERFACE;
-
- AddRef();
- return S_OK;
-}
-
-ULONG STDMETHODCALLTYPE UIDelegate::AddRef()
-{
- return ++m_refCount;
-}
-
-ULONG STDMETHODCALLTYPE UIDelegate::Release()
-{
- ULONG newRef = --m_refCount;
- if (!newRef)
- delete(this);
-
- return newRef;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::hasCustomMenuImplementation(
- /* [retval][out] */ BOOL *hasCustomMenus)
-{
- *hasCustomMenus = TRUE;
-
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::trackCustomPopupMenu(
- /* [in] */ IWebView *sender,
- /* [in] */ OLE_HANDLE menu,
- /* [in] */ LPPOINT point)
-{
- // Do nothing
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::registerUndoWithTarget(
- /* [in] */ IWebUndoTarget* target,
- /* [in] */ BSTR actionName,
- /* [in] */ IUnknown* actionArg)
-{
- m_undoManager->registerUndoWithTarget(target, actionName, actionArg);
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::removeAllActionsWithTarget(
- /* [in] */ IWebUndoTarget*)
-{
- m_undoManager->removeAllActions();
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::setActionTitle(
- /* [in] */ BSTR actionTitle)
-{
- // It is not neccessary to implement this for DRT because there is
- // menu to write out the title to.
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::undo()
-{
- m_undoManager->undo();
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::redo()
-{
- m_undoManager->redo();
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::canUndo(
- /* [retval][out] */ BOOL* result)
-{
- if (!result)
- return E_POINTER;
-
- *result = m_undoManager->canUndo();
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::canRedo(
- /* [retval][out] */ BOOL* result)
-{
- if (!result)
- return E_POINTER;
-
- *result = m_undoManager->canRedo();
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::setFrame(
- /* [in] */ IWebView* /*sender*/,
- /* [in] */ RECT* frame)
-{
- m_frame = *frame;
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::webViewFrame(
- /* [in] */ IWebView* /*sender*/,
- /* [retval][out] */ RECT* frame)
-{
- *frame = m_frame;
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::runJavaScriptAlertPanelWithMessage(
- /* [in] */ IWebView* /*sender*/,
- /* [in] */ BSTR message)
-{
- printf("ALERT: %S\n", message ? message : L"");
-
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::runJavaScriptConfirmPanelWithMessage(
- /* [in] */ IWebView* sender,
- /* [in] */ BSTR message,
- /* [retval][out] */ BOOL* result)
-{
- printf("CONFIRM: %S\n", message ? message : L"");
- *result = TRUE;
-
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::runJavaScriptTextInputPanelWithPrompt(
- /* [in] */ IWebView *sender,
- /* [in] */ BSTR message,
- /* [in] */ BSTR defaultText,
- /* [retval][out] */ BSTR *result)
-{
- printf("PROMPT: %S, default text: %S\n", message ? message : L"", defaultText ? defaultText : L"");
- *result = SysAllocString(defaultText);
-
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::runBeforeUnloadConfirmPanelWithMessage(
- /* [in] */ IWebView* /*sender*/,
- /* [in] */ BSTR /*message*/,
- /* [in] */ IWebFrame* /*initiatedByFrame*/,
- /* [retval][out] */ BOOL* result)
-{
- if (!result)
- return E_POINTER;
- *result = TRUE;
- return E_NOTIMPL;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::webViewAddMessageToConsole(
- /* [in] */ IWebView* sender,
- /* [in] */ BSTR message,
- /* [in] */ int lineNumber,
- /* [in] */ BSTR url,
- /* [in] */ BOOL isError)
-{
- wstring newMessage;
- if (message) {
- newMessage = message;
- size_t fileProtocol = newMessage.find(L"file://");
- if (fileProtocol != wstring::npos)
- newMessage = newMessage.substr(0, fileProtocol) + urlSuitableForTestResult(newMessage.substr(fileProtocol));
- }
-
- printf("CONSOLE MESSAGE: line %d: %S\n", lineNumber, newMessage.c_str());
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::doDragDrop(
- /* [in] */ IWebView* sender,
- /* [in] */ IDataObject* object,
- /* [in] */ IDropSource* source,
- /* [in] */ DWORD okEffect,
- /* [retval][out] */ DWORD* performedEffect)
-{
- if (!performedEffect)
- return E_POINTER;
-
- *performedEffect = 0;
-
- draggingInfo = new DraggingInfo(object, source);
- replaySavedEvents();
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::webViewGetDlgCode(
- /* [in] */ IWebView* /*sender*/,
- /* [in] */ UINT /*keyCode*/,
- /* [retval][out] */ LONG_PTR *code)
-{
- if (!code)
- return E_POINTER;
- *code = 0;
- return E_NOTIMPL;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::createWebViewWithRequest(
- /* [in] */ IWebView *sender,
- /* [in] */ IWebURLRequest *request,
- /* [retval][out] */ IWebView **newWebView)
-{
- if (!::gLayoutTestController->canOpenWindows())
- return E_FAIL;
- *newWebView = createWebViewAndOffscreenWindow();
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::webViewClose(
- /* [in] */ IWebView *sender)
-{
- HWND hostWindow;
- sender->hostWindow(reinterpret_cast<OLE_HANDLE*>(&hostWindow));
- DestroyWindow(hostWindow);
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::webViewFocus(
- /* [in] */ IWebView *sender)
-{
- HWND hostWindow;
- sender->hostWindow(reinterpret_cast<OLE_HANDLE*>(&hostWindow));
- SetForegroundWindow(hostWindow);
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::webViewUnfocus(
- /* [in] */ IWebView *sender)
-{
- SetForegroundWindow(GetDesktopWindow());
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::webViewPainted(
- /* [in] */ IWebView *sender)
-{
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::exceededDatabaseQuota(
- /* [in] */ IWebView *sender,
- /* [in] */ IWebFrame *frame,
- /* [in] */ IWebSecurityOrigin *origin,
- /* [in] */ BSTR databaseIdentifier)
-{
- static const unsigned long long defaultQuota = 5 * 1024 * 1024;
- origin->setQuota(defaultQuota);
-
- return S_OK;
-}
-
-
-HRESULT STDMETHODCALLTYPE UIDelegate::setStatusText(IWebView*, BSTR text)
-{
- if (gLayoutTestController->dumpStatusCallbacks())
- printf("UI DELEGATE STATUS CALLBACK: setStatusText:%S\n", text ? text : L"");
- return S_OK;
-}
diff --git a/WebKitTools/DumpRenderTree/win/UIDelegate.h b/WebKitTools/DumpRenderTree/win/UIDelegate.h
deleted file mode 100755
index 2113957..0000000
--- a/WebKitTools/DumpRenderTree/win/UIDelegate.h
+++ /dev/null
@@ -1,321 +0,0 @@
-/*
- * Copyright (C) 2005, 2006, 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef UIDelegate_h
-#define UIDelegate_h
-
-#include <WebKit/WebKit.h>
-#include <wtf/OwnPtr.h>
-#include <windef.h>
-
-class DRTUndoManager;
-
-class UIDelegate : public IWebUIDelegate, IWebUIDelegatePrivate3 {
-public:
- UIDelegate();
-
- void resetUndoManager();
-
- // IUnknown
- virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
- virtual ULONG STDMETHODCALLTYPE AddRef(void);
- virtual ULONG STDMETHODCALLTYPE Release(void);
-
- // IWebUIDelegate
- virtual HRESULT STDMETHODCALLTYPE createWebViewWithRequest(
- /* [in] */ IWebView *sender,
- /* [in] */ IWebURLRequest *request,
- /* [retval][out] */ IWebView **newWebView);
-
- virtual HRESULT STDMETHODCALLTYPE webViewShow(
- /* [in] */ IWebView *sender) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE webViewClose(
- /* [in] */ IWebView *sender);
-
- virtual HRESULT STDMETHODCALLTYPE webViewFocus(
- /* [in] */ IWebView *sender);
-
- virtual HRESULT STDMETHODCALLTYPE webViewUnfocus(
- /* [in] */ IWebView *sender);
-
- virtual HRESULT STDMETHODCALLTYPE webViewFirstResponder(
- /* [in] */ IWebView *sender,
- /* [retval][out] */ OLE_HANDLE *responder) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE makeFirstResponder(
- /* [in] */ IWebView *sender,
- /* [in] */ OLE_HANDLE responder) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE setStatusText(
- /* [in] */ IWebView *sender,
- /* [in] */ BSTR text);
-
- virtual HRESULT STDMETHODCALLTYPE webViewStatusText(
- /* [in] */ IWebView *sender,
- /* [retval][out] */ BSTR *text) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE webViewAreToolbarsVisible(
- /* [in] */ IWebView *sender,
- /* [retval][out] */ BOOL *visible) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE setToolbarsVisible(
- /* [in] */ IWebView *sender,
- /* [in] */ BOOL visible) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE webViewIsStatusBarVisible(
- /* [in] */ IWebView *sender,
- /* [retval][out] */ BOOL *visible) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE setStatusBarVisible(
- /* [in] */ IWebView *sender,
- /* [in] */ BOOL visible) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE webViewIsResizable(
- /* [in] */ IWebView *sender,
- /* [retval][out] */ BOOL *resizable) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE setResizable(
- /* [in] */ IWebView *sender,
- /* [in] */ BOOL resizable) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE setFrame(
- /* [in] */ IWebView *sender,
- /* [in] */ RECT *frame);
-
- virtual HRESULT STDMETHODCALLTYPE webViewFrame(
- /* [in] */ IWebView *sender,
- /* [retval][out] */ RECT *frame);
-
- virtual HRESULT STDMETHODCALLTYPE setContentRect(
- /* [in] */ IWebView *sender,
- /* [in] */ RECT *contentRect) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE webViewContentRect(
- /* [in] */ IWebView *sender,
- /* [retval][out] */ RECT *contentRect) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE runJavaScriptAlertPanelWithMessage(
- /* [in] */ IWebView *sender,
- /* [in] */ BSTR message);
-
- virtual HRESULT STDMETHODCALLTYPE runJavaScriptConfirmPanelWithMessage(
- /* [in] */ IWebView *sender,
- /* [in] */ BSTR message,
- /* [retval][out] */ BOOL *result);
-
- virtual HRESULT STDMETHODCALLTYPE runJavaScriptTextInputPanelWithPrompt(
- /* [in] */ IWebView *sender,
- /* [in] */ BSTR message,
- /* [in] */ BSTR defaultText,
- /* [retval][out] */ BSTR *result);
-
- virtual HRESULT STDMETHODCALLTYPE runBeforeUnloadConfirmPanelWithMessage(
- /* [in] */ IWebView *sender,
- /* [in] */ BSTR message,
- /* [in] */ IWebFrame *initiatedByFrame,
- /* [retval][out] */ BOOL *result);
-
- virtual HRESULT STDMETHODCALLTYPE runOpenPanelForFileButtonWithResultListener(
- /* [in] */ IWebView *sender,
- /* [in] */ IWebOpenPanelResultListener *resultListener) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE mouseDidMoveOverElement(
- /* [in] */ IWebView *sender,
- /* [in] */ IPropertyBag *elementInformation,
- /* [in] */ UINT modifierFlags) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE contextMenuItemsForElement(
- /* [in] */ IWebView *sender,
- /* [in] */ IPropertyBag *element,
- /* [in] */ OLE_HANDLE defaultItems,
- /* [retval][out] */ OLE_HANDLE *resultMenu) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE validateUserInterfaceItem(
- /* [in] */ IWebView *webView,
- /* [in] */ UINT itemCommandID,
- /* [in] */ BOOL defaultValidation,
- /* [retval][out] */ BOOL *isValid) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE shouldPerformAction(
- /* [in] */ IWebView *webView,
- /* [in] */ UINT itemCommandID,
- /* [in] */ UINT sender) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE dragDestinationActionMaskForDraggingInfo(
- /* [in] */ IWebView *webView,
- /* [in] */ IDataObject *draggingInfo,
- /* [retval][out] */ WebDragDestinationAction *action) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE willPerformDragDestinationAction(
- /* [in] */ IWebView *webView,
- /* [in] */ WebDragDestinationAction action,
- /* [in] */ IDataObject *draggingInfo) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE dragSourceActionMaskForPoint(
- /* [in] */ IWebView *webView,
- /* [in] */ LPPOINT point,
- /* [retval][out] */ WebDragSourceAction *action) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE willPerformDragSourceAction(
- /* [in] */ IWebView *webView,
- /* [in] */ WebDragSourceAction action,
- /* [in] */ LPPOINT point,
- /* [in] */ IDataObject *pasteboard) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE contextMenuItemSelected(
- /* [in] */ IWebView *sender,
- /* [in] */ void *item,
- /* [in] */ IPropertyBag *element) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE hasCustomMenuImplementation(
- /* [retval][out] */ BOOL *hasCustomMenus);
-
- virtual HRESULT STDMETHODCALLTYPE trackCustomPopupMenu(
- /* [in] */ IWebView *sender,
- /* [in] */ OLE_HANDLE menu,
- /* [in] */ LPPOINT point);
-
- virtual HRESULT STDMETHODCALLTYPE measureCustomMenuItem(
- /* [in] */ IWebView *sender,
- /* [in] */ void *measureItem) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE drawCustomMenuItem(
- /* [in] */ IWebView *sender,
- /* [in] */ void *drawItem) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE addCustomMenuDrawingData(
- /* [in] */ IWebView *sender,
- /* [in] */ OLE_HANDLE menu) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE cleanUpCustomMenuDrawingData(
- /* [in] */ IWebView *sender,
- /* [in] */ OLE_HANDLE menu) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE canTakeFocus(
- /* [in] */ IWebView *sender,
- /* [in] */ BOOL forward,
- /* [out] */ BOOL *result) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE takeFocus(
- /* [in] */ IWebView *sender,
- /* [in] */ BOOL forward) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE registerUndoWithTarget(
- /* [in] */ IWebUndoTarget *target,
- /* [in] */ BSTR actionName,
- /* [in] */ IUnknown *actionArg);
-
- virtual HRESULT STDMETHODCALLTYPE removeAllActionsWithTarget(
- /* [in] */ IWebUndoTarget *target);
-
- virtual HRESULT STDMETHODCALLTYPE setActionTitle(
- /* [in] */ BSTR actionTitle);
-
- virtual HRESULT STDMETHODCALLTYPE undo();
-
- virtual HRESULT STDMETHODCALLTYPE redo();
-
- virtual HRESULT STDMETHODCALLTYPE canUndo(
- /* [retval][out] */ BOOL *result);
-
- virtual HRESULT STDMETHODCALLTYPE canRedo(
- /* [retval][out] */ BOOL *result);
-
-protected:
- // IWebUIDelegatePrivate
-
- virtual HRESULT STDMETHODCALLTYPE webViewResizerRect(
- /* [in] */ IWebView *sender,
- /* [retval][out] */ RECT *rect) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE webViewSendResizeMessage(
- /* [in] */ UINT uMsg,
- /* [in] */ WPARAM wParam,
- /* [in] */ LPARAM lParam) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE webViewDrawResizer(
- /* [in] */ IWebView *sender,
- /* [in] */ HDC dc,
- /* [in] */ BOOL overlapsContent,
- /* [in] */ RECT *rect) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE webViewScrolled(
- /* [in] */ IWebView *sender) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE webViewAddMessageToConsole(
- /* [in] */ IWebView *sender,
- /* [in] */ BSTR message,
- /* [in] */ int lineNumber,
- /* [in] */ BSTR url,
- /* [in] */ BOOL isError);
-
- virtual HRESULT STDMETHODCALLTYPE webViewShouldInterruptJavaScript(
- /* [in] */ IWebView *sender,
- /* [retval][out] */ BOOL *result) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE webViewReceivedFocus(
- /* [in] */ IWebView *sender) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE webViewLostFocus(
- /* [in] */ IWebView *sender,
- /* [in] */ OLE_HANDLE loseFocusTo) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE doDragDrop(
- /* [in] */ IWebView *sender,
- /* [in] */ IDataObject *dataObject,
- /* [in] */ IDropSource *dropSource,
- /* [in] */ DWORD okEffect,
- /* [retval][out] */ DWORD *performedEffect);
-
- virtual HRESULT STDMETHODCALLTYPE webViewGetDlgCode(
- /* [in] */ IWebView *sender,
- /* [in] */ UINT keyCode,
- /* [retval][out] */ LONG_PTR *code);
-
- // IWebUIDelegatePrivate2
-
- virtual HRESULT STDMETHODCALLTYPE webViewPainted(
- /* [in] */ IWebView *sender);
-
- // IWebUIDelegatePrivate3
-
- virtual HRESULT STDMETHODCALLTYPE exceededDatabaseQuota(
- /* [in] */ IWebView *sender,
- /* [in] */ IWebFrame *frame,
- /* [in] */ IWebSecurityOrigin *origin,
- /* [in] */ BSTR databaseIdentifier);
-
- ULONG m_refCount;
-
-private:
- RECT m_frame;
- OwnPtr<DRTUndoManager> m_undoManager;
-};
-
-#endif
diff --git a/WebKitTools/DumpRenderTree/win/WorkQueueItemWin.cpp b/WebKitTools/DumpRenderTree/win/WorkQueueItemWin.cpp
deleted file mode 100644
index a489498..0000000
--- a/WebKitTools/DumpRenderTree/win/WorkQueueItemWin.cpp
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "WorkQueueItem.h"
-
-#include "DumpRenderTree.h"
-#include <WebCore/COMPtr.h>
-#include <WebKit/WebKit.h>
-#include <JavaScriptCore/JSStringRef.h>
-#include <JavaScriptCore/JSStringRefCF.h>
-#include <JavaScriptCore/RetainPtr.h>
-#include <wtf/Vector.h>
-#include <string>
-
-using std::wstring;
-
-static wstring jsStringRefToWString(JSStringRef jsStr)
-{
- size_t length = JSStringGetLength(jsStr);
- Vector<WCHAR> buffer(length + 1);
- memcpy(buffer.data(), JSStringGetCharactersPtr(jsStr), length * sizeof(WCHAR));
- buffer[length] = '\0';
-
- return buffer.data();
-}
-
-void LoadItem::invoke() const
-{
- wstring targetString = jsStringRefToWString(target());
-
- COMPtr<IWebFrame> targetFrame;
- if (targetString.empty())
- targetFrame = frame;
- else {
- BSTR targetBSTR = SysAllocString(targetString.c_str());
- bool failed = FAILED(frame->findFrameNamed(targetBSTR, &targetFrame));
- SysFreeString(targetBSTR);
- if (failed)
- return;
- }
-
- COMPtr<IWebURLRequest> request;
- if (FAILED(CoCreateInstance(CLSID_WebURLRequest, 0, CLSCTX_ALL, IID_IWebURLRequest, (void**)&request)))
- return;
-
- wstring urlString = jsStringRefToWString(url());
- BSTR urlBSTR = SysAllocString(urlString.c_str());
- bool failed = FAILED(request->initWithURL(urlBSTR, WebURLRequestUseProtocolCachePolicy, 60));
- SysFreeString(urlBSTR);
- if (failed)
- return;
-
- targetFrame->loadRequest(request.get());
-}
-
-void ReloadItem::invoke() const
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return;
-
- COMPtr<IWebIBActions> webActions;
- if (SUCCEEDED(webView->QueryInterface(&webActions)))
- webActions->reload(0);
-}
-
-void ScriptItem::invoke() const
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return;
-
- wstring scriptString = jsStringRefToWString(script());
-
- BSTR result;
- BSTR scriptBSTR = SysAllocString(scriptString.c_str());
- webView->stringByEvaluatingJavaScriptFromString(scriptBSTR, &result);
- SysFreeString(result);
- SysFreeString(scriptBSTR);
-}
-
-void BackForwardItem::invoke() const
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return;
-
- BOOL result;
- if (m_howFar == 1) {
- webView->goForward(&result);
- return;
- }
-
- if (m_howFar == -1) {
- webView->goBack(&result);
- return;
- }
-
- COMPtr<IWebBackForwardList> bfList;
- if (FAILED(webView->backForwardList(&bfList)))
- return;
-
- COMPtr<IWebHistoryItem> item;
- if (FAILED(bfList->itemAtIndex(m_howFar, &item)))
- return;
-
- webView->goToBackForwardItem(item.get(), &result);
-}
diff --git a/WebKitTools/FindSafari/FindSafari.cpp b/WebKitTools/FindSafari/FindSafari.cpp
deleted file mode 100644
index 616323b..0000000
--- a/WebKitTools/FindSafari/FindSafari.cpp
+++ /dev/null
@@ -1,276 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "resource.h"
-
-#include <shlwapi.h>
-#include <stdio.h>
-#include <tchar.h>
-#include <windows.h>
-
-#define LOG(header, ...) \
- do { \
- _ftprintf(stderr, header); \
- _ftprintf(stderr, __VA_ARGS__); \
- } while (0)
-#define LOG_WARNING(...) LOG(TEXT("WARNING: "), __VA_ARGS__)
-#define LOG_ERROR(...) LOG(TEXT("ERROR: "), __VA_ARGS__)
-
-static TCHAR* getStringValue(HKEY key, LPCTSTR valueName)
-{
- DWORD type = 0;
- DWORD bufferSize = 0;
- if (RegQueryValueEx(key, valueName, 0, &type, 0, &bufferSize) != ERROR_SUCCESS || type != REG_SZ)
- return 0;
-
- TCHAR* buffer = (TCHAR*)malloc(bufferSize);
- if (RegQueryValueEx(key, 0, 0, &type, reinterpret_cast<LPBYTE>(buffer), &bufferSize) != ERROR_SUCCESS) {
- free(buffer);
- return 0;
- }
-
- return buffer;
-}
-
-static LPOLESTR getWebViewCLSID()
-{
- LPCTSTR webViewProgID = TEXT("WebKit.WebView");
-
- CLSID clsid = CLSID_NULL;
- HRESULT hr = CLSIDFromProgID(webViewProgID, &clsid);
- if (FAILED(hr)) {
- LOG_WARNING(TEXT("Failed to get CLSID for %s\n"), webViewProgID);
- return 0;
- }
-
- LPOLESTR clsidString = 0;
- if (FAILED(StringFromCLSID(clsid, &clsidString))) {
- LOG_WARNING(TEXT("Failed to get string representation of CLSID for WebView\n"));
- return 0;
- }
-
- return clsidString;
-}
-
-static TCHAR* getInstalledWebKitDirectory()
-{
- LPCTSTR keyPrefix = TEXT("SOFTWARE\\Classes\\CLSID\\");
- LPCTSTR keySuffix = TEXT("\\InprocServer32");
-
- LPOLESTR clsid = getWebViewCLSID();
- if (!clsid)
- return 0;
-
- size_t keyBufferLength = _tcslen(keyPrefix) + _tcslen(clsid) + _tcslen(keySuffix) + 1;
- TCHAR* keyString = (TCHAR*)malloc(keyBufferLength * sizeof(TCHAR));
-
- int ret = _sntprintf_s(keyString, keyBufferLength, keyBufferLength - 1, TEXT("%s%s%s"), keyPrefix, clsid, keySuffix);
- CoTaskMemFree(clsid);
- if (ret == -1) {
- LOG_WARNING(TEXT("Failed to construct InprocServer32 key\n"));
- return 0;
- }
-
- HKEY serverKey = 0;
- LONG error = RegOpenKeyEx(HKEY_LOCAL_MACHINE, keyString, 0, KEY_READ, &serverKey);
- free(keyString);
- if (error != ERROR_SUCCESS) {
- LOG_WARNING(TEXT("Failed to open registry key %s\n"), keyString);
- return 0;
- }
-
- TCHAR* webKitPath = getStringValue(serverKey, 0);
- RegCloseKey(serverKey);
- if (!webKitPath) {
- LOG_WARNING(TEXT("Couldn't retrieve value for registry key %s\n"), keyString);
- return 0;
- }
-
- TCHAR* startOfFileName = PathFindFileName(webKitPath);
- if (startOfFileName == webKitPath) {
- LOG_WARNING(TEXT("Couldn't find filename from path %s\n"), webKitPath);
- free(webKitPath);
- return 0;
- }
-
- *startOfFileName = '\0';
- return webKitPath;
-}
-
-static char* copyManifest(HMODULE module, LPCTSTR id)
-{
- HRSRC resHandle = FindResource(module, id, MAKEINTRESOURCE(RT_MANIFEST));
- if (!resHandle)
- return 0;
- DWORD manifestSize = SizeofResource(module, resHandle);
- if (!manifestSize)
- return 0;
- HGLOBAL resData = LoadResource(module, resHandle);
- if (!resData)
- return 0;
- void* data = LockResource(resData);
- if (!data)
- return 0;
-
- char* dataCopy = static_cast<char*>(malloc(manifestSize + 1));
- if (!dataCopy)
- return 0;
- memcpy(dataCopy, data, manifestSize);
- dataCopy[manifestSize] = 0;
- return dataCopy;
-}
-
-static void replaceManifest()
-{
- TCHAR safariPath[MAX_PATH];
- ::ExpandEnvironmentStrings(TEXT("%TMP%\\WebKitNightly\\Safari.exe"), safariPath, ARRAYSIZE(safariPath));
-
- // get the existing manifest out of Safari.exe
- HMODULE safariModule = LoadLibraryEx(safariPath, 0, LOAD_LIBRARY_AS_DATAFILE);
- if (!safariModule)
- return;
- char* safariManifest = copyManifest(safariModule, MAKEINTRESOURCE(1));
- FreeLibrary(safariModule);
- if (!safariManifest)
- return;
-
- // see if the existing Safari manifest contains registry free COM info
- // (we only need to update if it is not registry free COM-aware)
- bool needsUpdate = !strstr(safariManifest, "<comClass");
- free(safariManifest);
- if (!needsUpdate)
- return;
-
- // replace the manifest with the extra manifest stashed in FindSafar.exe (ID 100)
- char* replacementManifest = copyManifest(0, MAKEINTRESOURCE(IDR_SAFARI_MANIFEST));
- if (!replacementManifest)
- return;
- if (HANDLE h = BeginUpdateResource(safariPath, FALSE)) {
- UpdateResource(h, MAKEINTRESOURCE(RT_MANIFEST), MAKEINTRESOURCE(1), MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), replacementManifest, strlen(replacementManifest));
- EndUpdateResource(h, FALSE);
- }
-
- free(replacementManifest);
-}
-
-int _tmain(int argc, TCHAR* argv[])
-{
- TCHAR* path = getInstalledWebKitDirectory();
- if (!path) {
- LOG_ERROR(TEXT("Couldn't determine installed Safari path\n"));
- return 1;
- }
-
- bool printLauncher = false;
- bool printEnvironment = false;
- bool debugger = false;
- bool updateManifest = false;
-
- for (int i = 1; i < argc; ++i) {
- if (!_tcscmp(argv[i], TEXT("/printSafariLauncher"))) {
- printLauncher = true;
- continue;
- }
- if (!_tcscmp(argv[i], TEXT("/printSafariEnvironment"))) {
- printEnvironment = true;
- continue;
- }
- if (!_tcscmp(argv[i], TEXT("/debugger"))) {
- debugger = true;
- continue;
- }
-
- if (!_tcscmp(argv[i], TEXT("/updateManifest"))) {
- updateManifest = true;
- continue;
- }
- }
-
- if (updateManifest) {
- replaceManifest();
- return 0;
- }
-
- // printLauncher is inclusive of printEnvironment, so do not
- // leave both enabled:
- if (printLauncher && printEnvironment)
- printEnvironment = false;
-
- if (!printLauncher && !printEnvironment) {
- _tprintf(TEXT("%s\n"), path);
- free(path);
- return 0;
- }
-
- LPCTSTR lines[] = {
- TEXT("@echo off"),
- TEXT("del /s /q \"%%TMP%%\\WebKitNightly\""),
- TEXT("mkdir 2>NUL \"%%TMP%%\\WebKitNightly\\Safari.resources\""),
- TEXT("mkdir 2>NUL \"%%TMP%%\\WebKitNightly\\WebKit.resources\""),
- TEXT("xcopy /y /i /d \"%sSafari.exe\" \"%%TMP%%\\WebKitNightly\""),
- TEXT("xcopy /y /i /d /e \"%sSafari.resources\" \"%%TMP%%\\WebKitNightly\\Safari.resources\""),
- TEXT("xcopy /y /i /d /e \"%splugins\" \"%%TMP%%\\WebKitNightly\\plugins\""),
- TEXT("xcopy /y /i /d WebKit.dll \"%%TMP%%\\WebKitNightly\""),
- TEXT("xcopy /y /i /d WebKit.pdb \"%%TMP%%\\WebKitNightly\""),
- TEXT("xcopy /y /i /d /e WebKit.resources \"%%TMP%%\\WebKitNightly\\WebKit.resources\""),
- TEXT("FindSafari.exe /updateManifest"),
- TEXT("set PATH=%%CD%%;%s;%%PATH%%"),
- };
-
- LPCTSTR command = TEXT("\"%TMP%\\WebKitNightly\\Safari.exe\"");
-
- LPCTSTR launchLines[] = {
- TEXT("%s"),
- };
-
- LPCTSTR debuggerLines[] = {
- TEXT("if exist \"%%DevEnvDir%%\\VCExpress.exe\" ("),
- TEXT("\"%%DevEnvDir%%\\VCExpress.exe\" /debugExe %s"),
- TEXT(") else ("),
- TEXT("\"%%DevEnvDir%%\\devenv.exe\" /debugExe %s"),
- TEXT(")"),
- };
-
- for (int i = 0; i < ARRAYSIZE(lines); ++i) {
- _tprintf(lines[i], path);
- _tprintf(TEXT("\n"));
- }
-
- LPCTSTR* endLines = debugger ? debuggerLines : launchLines;
-
- // Don't print launch command if we just want the environment set up...
- if (!printEnvironment) {
- for (unsigned i = 0; i < (debugger ? ARRAYSIZE(debuggerLines) : ARRAYSIZE(launchLines)); ++i) {
- _tprintf(endLines[i], command);
- _tprintf(TEXT("\n"));
- }
- }
-
- free(path);
- return 0;
-}
diff --git a/WebKitTools/FindSafari/FindSafari.rc b/WebKitTools/FindSafari/FindSafari.rc
deleted file mode 100644
index 20c2da2..0000000
--- a/WebKitTools/FindSafari/FindSafari.rc
+++ /dev/null
@@ -1,70 +0,0 @@
-// Microsoft Visual C++ generated resource script.
-//
-#include "resource.h"
-
-#define APSTUDIO_READONLY_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 2 resource.
-//
-#include "afxres.h"
-
-/////////////////////////////////////////////////////////////////////////////
-#undef APSTUDIO_READONLY_SYMBOLS
-
-/////////////////////////////////////////////////////////////////////////////
-// English (U.S.) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-#ifdef _WIN32
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-#pragma code_page(1252)
-#endif //_WIN32
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-1 TEXTINCLUDE
-BEGIN
- "resource.h\0"
-END
-
-2 TEXTINCLUDE
-BEGIN
- "#include ""afxres.h""\r\n"
- "\0"
-END
-
-3 TEXTINCLUDE
-BEGIN
- "\r\n"
- "\0"
-END
-
-#endif // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// RT_MANIFEST
-//
-
-IDR_SAFARI_MANIFEST RT_MANIFEST "Safari.exe.manifest"
-#endif // English (U.S.) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-
-
-/////////////////////////////////////////////////////////////////////////////
-#endif // not APSTUDIO_INVOKED
-
diff --git a/WebKitTools/FindSafari/FindSafari.vcproj b/WebKitTools/FindSafari/FindSafari.vcproj
deleted file mode 100644
index 48ea3df..0000000
--- a/WebKitTools/FindSafari/FindSafari.vcproj
+++ /dev/null
@@ -1,118 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="FindSafari"
- ProjectGUID="{DA31DA52-6675-48D4-89E0-333A7144397C}"
- RootNamespace="FindSafari"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Release|Win32"
- ConfigurationType="1"
- InheritedPropertySheets="$(WebKitLibrariesDir)\tools\vsprops\common.vsprops;$(WebKitLibrariesDir)\tools\vsprops\release.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="shlwapi.lib advapi32.lib ole32.lib"
- OutputFile="$(OutDir)\$(ProjectName).exe"
- SubSystem="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
- >
- <File
- RelativePath=".\FindSafari.cpp"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
- >
- <File
- RelativePath=".\resource.h"
- >
- </File>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
- >
- <File
- RelativePath=".\FindSafari.rc"
- >
- </File>
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/WebKitTools/FindSafari/Safari.exe.manifest b/WebKitTools/FindSafari/Safari.exe.manifest
deleted file mode 100644
index 08c85cf..0000000
--- a/WebKitTools/FindSafari/Safari.exe.manifest
+++ /dev/null
@@ -1,129 +0,0 @@
-<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
- <dependency>
- <dependentAssembly>
- <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.762" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
- </dependentAssembly>
- </dependency>
- <dependency>
- <dependentAssembly>
- <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="6595b64144ccf1df" language="*"></assemblyIdentity>
- </dependentAssembly>
- </dependency>
- <file name="WebKit" hashalg="SHA1">
- <comClass progid="OpenSourceWebKit.WebView" clsid="{D6BCA079-F61C-4E1E-B453-32A0477D02E3}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}"></comClass>
- <comClass progid="OpenSourceWebKit.WebIconDatabase" clsid="{66827EC1-3AEF-4241-BAC5-F776B44F030F}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}"></comClass>
- <comClass progid="OpenSourceWebKit.WebMutableURLRequest" clsid="{A062ECC3-BB1B-4694-A569-F59E0AD6BE0C}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}"></comClass>
- <comClass progid="OpenSourceWebKit.WebNotificationCenter" clsid="{BA590766-0A6F-46C7-B96E-743490D94CB7}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}"></comClass>
- <comClass progid="OpenSourceWebKit.WebHistory" clsid="{A4B9B45D-949F-4C8C-9B92-6FBFCC1CAAA2}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}"></comClass>
- <comClass progid="OpenSourceWebKit.CFDictionaryPropertyBag" clsid="{DD653964-4D37-4FB2-9CB6-6A9A97719332}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}"></comClass>
- <comClass progid="OpenSourceWebKit.WebHistoryItem" clsid="{6BE190E9-1725-4E4A-88DB-6A9FE242C9E5}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}"></comClass>
- <comClass progid="OpenSourceWebKit.WebCache" clsid="{F71071FD-A51B-4B69-9EB6-44374405E80C}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}"></comClass>
- <comClass progid="OpenSourceWebKit.WebJavaScriptCollector" clsid="{1820D883-42FE-4B78-88C8-5456BB19D224}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}"></comClass>
- <comClass progid="OpenSourceWebKit.WebPreferences" clsid="{67B89F90-F778-438B-ABBF-34D1ACBF8651}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}"></comClass>
- <comClass progid="OpenSourceWebKit.WebKitStatistics" clsid="{E93AA8D7-F362-4A4A-A95D-325906BEB5F0}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}"></comClass>
- <comClass progid="OpenSourceWebKit.WebError" clsid="{6C6AF3F9-36B4-4BF7-8BDE-74DCD4AD75A4}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}"></comClass>
- <comClass progid="OpenSourceWebKit.WebURLCredential" clsid="{7433F53B-7FE9-484A-9432-72909457A646}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}"></comClass>
- <comClass progid="OpenSourceWebKit.WebDownload" clsid="{C0F98BD9-3B1C-413D-904A-E2D1453EAF1F}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}"></comClass>
- <comClass progid="OpenSourceWebKit.WebURLRequest" clsid="{2FB5499A-BB5D-4469-8517-789FEC8FD9BA}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}"></comClass>
- <comClass progid="OpenSourceWebKit.WebURLProtectionSpace" clsid="{F366A6E8-E43C-4FD4-AAB0-8E6E79C73E6E}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}"></comClass>
- <comClass progid="OpenSourceWebKit.WebScrollBar" clsid="{24A53AD5-AA9F-44E6-AA22-2C7C250B661A}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}"></comClass>
- <comClass progid="OpenSourceWebKit.WebScriptDebugServer" clsid="{715636C4-59E7-4B85-BBC5-B555888787D7}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}"></comClass>
- <comClass progid="OpenSourceWebKit.WebURLResponse" clsid="{AB201196-8DD2-4D45-AEBD-029B6A37AA27}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}"></comClass>
- <comClass progid="OpenSourceWebKit.WebTextRenderer" clsid="{24040CD6-AFF4-4A51-9C8B-71539580EE76}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}"></comClass>
- <comClass progid="OpenSourceWebKit.WebDatabaseManager" clsid="{C2A1BFC2-1E7C-49FE-8592-D0C7FB440BC0}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}"></comClass>
- <comClass progid="OpenSourceWebKit.WebArchive" clsid="{1B63D781-9BC4-4A04-899F-C4B05BBD3BE5}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}"></comClass>
- <comClass progid="OpenSourceWebKit.WebCoreStatistics" clsid="{96B93356-9D61-4B3F-A6CF-A78283AC9649}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}"></comClass>
- <comClass progid="OpenSourceWebKit.WebCookieManager" clsid="{3F35F332-BB2B-49B3-AEDD-27B317687E07}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}"></comClass>
- <typelib tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" version="528.0" helpdir="" flags="HASDISKIMAGE"></typelib>
- </file>
- <comInterfaceExternalProxyStub name="IWebView" iid="{174BBEFD-058E-49C7-91DF-6F110AA4AC28}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebUIDelegate" iid="{2452A889-A74A-4FBC-9617-326A0A953630}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebURLRequest" iid="{F4B85F1D-F3B2-493D-B786-0930E804A3BA}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebFrame" iid="{B4B22EF7-DD43-4D01-A992-99C4A8B1F845}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebFrameView" iid="{E23E1B15-78F6-4E89-AD2E-49992A040A35}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebDocumentView" iid="{0A6397A7-90FE-49A0-B9C1-44693DD779F7}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebDataSource" iid="{5221A975-AE09-4A7B-A4DF-E3B1B5F38A21}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebDocumentRepresentation" iid="{3C9F6251-CFD8-447A-B429-6B6AE627436C}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebError" iid="{89E3B189-0B60-4D6B-A87A-3F1172CB5538}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebMutableURLRequest" iid="{C4042773-371F-427E-AFA9-9D4B358A0D93}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebURLResponse" iid="{9814930B-E037-4477-8DF1-4D898B648995}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebArchive" iid="{F07D5252-F66E-4A4D-B9DC-33BD11DCC138}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebResource" iid="{09567E0E-7859-494A-B0E4-92C13CFE5574}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IDOMNode" iid="{3EEA3E20-72DA-4BE7-954F-79B5A14AD726}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IDOMObject" iid="{A27FA225-F34E-425D-88EB-A35BD105A527}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebScriptObject" iid="{7022340A-649C-43FC-9214-85CA7D3BE3C7}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IDOMNodeList" iid="{10A05A96-CBD9-4493-83AD-FAFB952615CE}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IDOMNamedNodeMap" iid="{E6CBF396-C9F9-431B-A8D6-BCB525067E9F}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IDOMDocument" iid="{A83C2C44-0BAC-45C7-8E17-6A49975D5CCA}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IDOMDocumentType" iid="{17FCE6EA-4164-4BD4-9DBF-0395FBF37FD3}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IDOMImplementation" iid="{6E48C25D-E542-4D1A-BC73-ACDC21E39C56}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IDOMElement" iid="{E053A35B-7775-4859-80EA-C35D02D145A2}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IDOMAttr" iid="{B587E098-8206-4B5A-A7DB-422F218571A0}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IDOMDocumentFragment" iid="{09D35665-8396-4868-949E-8AA2407A6E10}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IDOMText" iid="{74638F45-1AA0-4DB5-958C-82066E00BD2B}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IDOMCharacterData" iid="{F4DED047-FE61-461A-BDBD-BB87F79DB713}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IDOMComment" iid="{118002E8-847F-4B1A-968C-B25A6AC7B128}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IDOMCDATASection" iid="{31B506C1-45A3-4D72-815A-311B0A897E58}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IDOMProcessingInstruction" iid="{D99D2F48-ABF3-426A-9339-54681E1AFCA9}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IDOMEntityReference" iid="{0593CE45-15B2-44AF-BBD0-5A1654F8240E}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IDOMHTMLElement" iid="{EBD5F41D-FF65-41D8-97C9-FCE3A3D4CC3E}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebOpenPanelResultListener" iid="{634198C7-9DFC-4ABA-9E8C-90AEEA7A4144}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebUndoTarget" iid="{BF7F516E-E75D-4E3A-83E2-8F694D83C72D}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebResourceLoadDelegate" iid="{AF3289AA-90DB-4CA4-A112-A1E5F0517953}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebURLAuthenticationChallenge" iid="{5382DABA-C3C3-40C5-AA40-04079F11A844}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebURLAuthenticationChallengeSender" iid="{9360D6FB-186C-4FF7-AE57-D1B973DA0D1C}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebURLCredential" iid="{A1E9D765-FACE-4189-BBE3-AED7EBF65EBD}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebURLProtectionSpace" iid="{71D2622A-3FF2-404B-BD45-C60659C901AF}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebDownloadDelegate" iid="{16A32AE6-C862-40CD-9225-2CAF823F40F9}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebDownload" iid="{65EFE83B-A9E4-4516-8F3B-BAA25DA90FFD}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebFrameLoadDelegate" iid="{4CD809C2-73A5-44EE-B0D7-D1863DFE9F57}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebPolicyDelegate" iid="{9B0BAE6C-A496-4000-9E22-2E89F0747401}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebPolicyDecisionListener" iid="{DFCDE523-FD96-4F95-958B-151540FE122A}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebBackForwardList" iid="{C278A16D-B502-4131-B551-DCE3F4ED2B36}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebHistoryItem" iid="{1E2970AE-72B7-4500-A7A0-12B0FFEB91FC}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebPreferences" iid="{0930D594-A5A3-46E1-858E-AB17A13CD28E}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebIBActions" iid="{8F0E3A30-B924-44F8-990A-1AE61ED6C632}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebViewCSS" iid="{ADF68A8C-336F-405C-A053-3D11A9D5B092}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IDOMCSSStyleDeclaration" iid="{DBBE9A6B-D505-4647-B4AB-40A7CF3EE63E}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IDOMCSSValue" iid="{51D29553-2AF7-4F52-AFE6-3C59196A8BAA}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IDOMCSSRule" iid="{05947A31-9E1C-4C98-8608-6688959D6542}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IDOMCSSStyleSheet" iid="{14B1C213-1458-48A1-AD8F-54BFE64F9ECF}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IDOMCSSRuleList" iid="{D45DA43D-5EDB-4315-A097-3ED3FA089193}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebViewEditing" iid="{07BDAC9A-19A1-4086-864D-BAD9E0F00D5C}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IDOMRange" iid="{2F33E42C-0B39-48B3-B7B6-E910CDB325AD}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebUndoManager" iid="{D25D748C-6C1E-478D-9832-FDA26E8F7EE4}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebInvocation" iid="{67B067BE-4DE6-45C2-AD39-A91DFA84FF4E}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebMethodSignature" iid="{431DD6B2-56BF-4F48-943B-78CCEAC418E4}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebEditingDelegate" iid="{2C75A1E3-EE9D-45C8-A385-19DE68AC5675}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebNotification" iid="{93598207-3E34-49EC-97EC-EFA9A1E16335}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IEnumWebGrammarDetails" iid="{FABCC69A-5917-4242-A19A-42E8B62227A7}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebGrammarDetail" iid="{8B95C1B3-E1B3-4F97-80D6-2240417E3E0C}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IEnumSpellingGuesses" iid="{B0F960E7-FB81-447F-A958-E02DA02ADBB7}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebViewUndoableEditing" iid="{639E7121-13C8-4A12-BC18-6E1F3D68F3C3}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebViewEditingActions" iid="{7E066C42-8E81-4778-888D-D6CC93E27D4C}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebNotificationObserver" iid="{1BA491C4-58A7-4091-9F56-9AED118DB4C1}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebViewPrivate" iid="{44914369-DEB5-4FCF-A6A3-30C02E73154F}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebFormDelegate" iid="{4CBEC1BD-ABC3-4BDB-8E5E-4D3BCF9E8C1E}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IDOMHTMLInputElement" iid="{80C40AC5-1755-4894-812F-479269C262A2}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IDOMHTMLTextAreaElement" iid="{298B02B7-3EB5-4BA4-AD3F-7FA53241AADE}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebFormSubmissionListener" iid="{1911D650-035E-4204-8746-ABECF77A4C9B}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebFrameLoadDelegatePrivate" iid="{32DC2531-948D-400E-A82F-FE6668B61A0B}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IEnumTextMatches" iid="{C0CDE63A-5ED1-453F-B937-93B1A61AD3B3}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebInspector" iid="{68159FF1-9037-45EC-9992-B2E455CF39F3}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebIconDatabase" iid="{E93F2616-2560-47D9-BD4D-6E2F1E1D3174}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebNotificationCenter" iid="{1E411ABE-DAA0-4A83-BCCA-D94E0704F193}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebHistory" iid="{F34E4B1A-361D-4B9F-9A3F-D869DCD97F9A}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebCache" iid="{0673E6F5-AE63-4871-AAC6-6A1E0E6A99AB}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebJavaScriptCollector" iid="{E6A1D169-F44A-4D11-B55B-F0A406F47612}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebKitStatistics" iid="{955C1042-BCF7-4F51-8AE7-66C2D0D47C44}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebScrollBarPrivate" iid="{6C585B08-2E4F-4594-9B90-0425E3A33FD0}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebScrollBarDelegatePrivate" iid="{2E8D56AF-3BF5-4E17-BDA6-01692ACBE3D5}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebScriptDebugServer" iid="{E24111D6-3668-4C8B-B921-D644524945F8}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebScriptDebugListener" iid="{09612B56-BE17-4867-A441-1C5C4E0F5302}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebScriptCallFrame" iid="{029D0676-162A-4140-8917-9574E09F66EB}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebTextRenderer" iid="{5B26ABBB-C27A-4527-A313-CB733E2CD257}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebDatabaseManager" iid="{5724F010-A77B-4A42-8F89-A5095B61D469}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebSecurityOrigin" iid="{304D4462-A921-4E85-BC11-BCE1462B159D}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebCoreStatistics" iid="{9607001D-6EEF-4C2C-AD22-94E9DA587973}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
- <comInterfaceExternalProxyStub name="IWebCookieManager" iid="{7053FE94-3623-444F-A298-209A90879A8C}" tlbid="{2A748656-625D-4207-B29F-40C95BFEB3A9}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
-</assembly> \ No newline at end of file
diff --git a/WebKitTools/FindSafari/resource.h b/WebKitTools/FindSafari/resource.h
deleted file mode 100644
index 91d1053..0000000
--- a/WebKitTools/FindSafari/resource.h
+++ /dev/null
@@ -1,16 +0,0 @@
-//{{NO_DEPENDENCIES}}
-// Microsoft Visual C++ generated include file.
-// Used by FindSafari.rc
-//
-#define IDR_SAFARI_MANIFEST 100
-
-// Next default values for new objects
-//
-#ifdef APSTUDIO_INVOKED
-#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE 103
-#define _APS_NEXT_COMMAND_VALUE 40001
-#define _APS_NEXT_CONTROL_VALUE 1001
-#define _APS_NEXT_SYMED_VALUE 101
-#endif
-#endif
diff --git a/WebKitTools/GNUmakefile.am b/WebKitTools/GNUmakefile.am
deleted file mode 100644
index ee403a9..0000000
--- a/WebKitTools/GNUmakefile.am
+++ /dev/null
@@ -1,76 +0,0 @@
-noinst_PROGRAMS += \
- Programs/GtkLauncher \
- Programs/DumpRenderTree
-
-# GtkLauncher
-Programs_GtkLauncher_CPPFLAGS = \
- -I$(srcdir)/WebKit/gtk \
- -I$(top_builddir)/WebKit/gtk \
- $(global_cppflags) \
- $(javascriptcore_cppflags)
-
-Programs_GtkLauncher_SOURCES = \
- WebKitTools/GtkLauncher/main.c
-
-Programs_GtkLauncher_CFLAGS = \
- -fno-strict-aliasing \
- -O2 \
- $(global_cflags) \
- $(GTK_CFLAGS)
-
-Programs_GtkLauncher_LDADD = \
- libwebkit-1.0.la \
- $(GTK_LIBS)
-
-# DumpRenderTree
-Programs_DumpRenderTree_CPPFLAGS = \
- -I$(srcdir)/WebKitTools/DumpRenderTree \
- -I$(srcdir)/WebKitTools/DumpRenderTree/gtk \
- -I$(srcdir)/WebKit/gtk \
- -I$(top_builddir)/WebKit/gtk \
- $(global_cppflags) \
- $(javascriptcore_cppflags)
-
-Programs_DumpRenderTree_SOURCES = \
- WebKitTools/DumpRenderTree/AccessibilityController.h \
- WebKitTools/DumpRenderTree/AccessibilityUIElement.h \
- WebKitTools/DumpRenderTree/DumpRenderTree.h \
- WebKitTools/DumpRenderTree/DumpRenderTreePrefix.h \
- WebKitTools/DumpRenderTree/GCController.cpp \
- WebKitTools/DumpRenderTree/GCController.h \
- WebKitTools/DumpRenderTree/JavaScriptThreading.h \
- WebKitTools/DumpRenderTree/LayoutTestController.cpp \
- WebKitTools/DumpRenderTree/LayoutTestController.h \
- WebKitTools/DumpRenderTree/PixelDumpSupport.h \
- WebKitTools/DumpRenderTree/WorkQueue.cpp \
- WebKitTools/DumpRenderTree/WorkQueue.h \
- WebKitTools/DumpRenderTree/WorkQueueItem.h \
- WebKitTools/DumpRenderTree/config.h \
- WebKitTools/DumpRenderTree/gtk/DumpRenderTree.cpp \
- WebKitTools/DumpRenderTree/gtk/DumpRenderTreeGtk.h \
- WebKitTools/DumpRenderTree/gtk/GCControllerGtk.cpp \
- WebKitTools/DumpRenderTree/gtk/LayoutTestControllerGtk.cpp \
- WebKitTools/DumpRenderTree/gtk/WorkQueueItemGtk.cpp
-
-Programs_DumpRenderTree_CXXFLAGS = \
- $(global_cxxflags) \
- $(Programs_DumpRenderTree_CFLAGS)
-
-Programs_DumpRenderTree_CFLAGS = \
- -fno-strict-aliasing \
- -O2 \
- $(global_cflags) \
- $(GLOBALDEPS_CFLAGS) \
- $(CAIRO_CFLAGS) \
- $(GTK_CFLAGS)
-
-Programs_DumpRenderTree_LDADD = \
- libwebkit-1.0.la \
- $(GLOBALDEPS_LIBS) \
- $(CAIRO_LIBS) \
- $(GTK_LIBS)
-
-# clean target
-CLEANFILES += \
- Programs/GtkLauncher \
- Programs/DumpRenderTree
diff --git a/WebKitTools/GtkLauncher/main.c b/WebKitTools/GtkLauncher/main.c
deleted file mode 100644
index 8ed2690..0000000
--- a/WebKitTools/GtkLauncher/main.c
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Copyright (C) 2006, 2007 Apple Inc.
- * Copyright (C) 2007 Alp Toker <alp@atoker.com>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <gtk/gtk.h>
-#include <webkit/webkit.h>
-
-static GtkWidget* main_window;
-static GtkWidget* uri_entry;
-static GtkStatusbar* main_statusbar;
-static WebKitWebView* web_view;
-static gchar* main_title;
-static gint load_progress;
-static guint status_context_id;
-
-static void
-activate_uri_entry_cb (GtkWidget* entry, gpointer data)
-{
- const gchar* uri = gtk_entry_get_text (GTK_ENTRY (entry));
- g_assert (uri);
- webkit_web_view_open (web_view, uri);
-}
-
-static void
-update_title (GtkWindow* window)
-{
- GString* string = g_string_new (main_title);
- g_string_append (string, " - WebKit Launcher");
- if (load_progress < 100)
- g_string_append_printf (string, " (%d%%)", load_progress);
- gchar* title = g_string_free (string, FALSE);
- gtk_window_set_title (window, title);
- g_free (title);
-}
-
-static void
-link_hover_cb (WebKitWebView* page, const gchar* title, const gchar* link, gpointer data)
-{
- /* underflow is allowed */
- gtk_statusbar_pop (main_statusbar, status_context_id);
- if (link)
- gtk_statusbar_push (main_statusbar, status_context_id, link);
-}
-
-static void
-title_change_cb (WebKitWebView* web_view, WebKitWebFrame* web_frame, const gchar* title, gpointer data)
-{
- if (main_title)
- g_free (main_title);
- main_title = g_strdup (title);
- update_title (GTK_WINDOW (main_window));
-}
-
-static void
-progress_change_cb (WebKitWebView* page, gint progress, gpointer data)
-{
- load_progress = progress;
- update_title (GTK_WINDOW (main_window));
-}
-
-static void
-load_commit_cb (WebKitWebView* page, WebKitWebFrame* frame, gpointer data)
-{
- const gchar* uri = webkit_web_frame_get_uri(frame);
- if (uri)
- gtk_entry_set_text (GTK_ENTRY (uri_entry), uri);
-}
-
-static void
-destroy_cb (GtkWidget* widget, gpointer data)
-{
- gtk_main_quit ();
-}
-
-static void
-go_back_cb (GtkWidget* widget, gpointer data)
-{
- webkit_web_view_go_back (web_view);
-}
-
-static void
-go_forward_cb (GtkWidget* widget, gpointer data)
-{
- webkit_web_view_go_forward (web_view);
-}
-
-static GtkWidget*
-create_browser ()
-{
- GtkWidget* scrolled_window = gtk_scrolled_window_new (NULL, NULL);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
-
- web_view = WEBKIT_WEB_VIEW (webkit_web_view_new ());
- gtk_container_add (GTK_CONTAINER (scrolled_window), GTK_WIDGET (web_view));
-
- g_signal_connect (G_OBJECT (web_view), "title-changed", G_CALLBACK (title_change_cb), web_view);
- g_signal_connect (G_OBJECT (web_view), "load-progress-changed", G_CALLBACK (progress_change_cb), web_view);
- g_signal_connect (G_OBJECT (web_view), "load-committed", G_CALLBACK (load_commit_cb), web_view);
- g_signal_connect (G_OBJECT (web_view), "hovering-over-link", G_CALLBACK (link_hover_cb), web_view);
-
- return scrolled_window;
-}
-
-static GtkWidget*
-create_statusbar ()
-{
- main_statusbar = GTK_STATUSBAR (gtk_statusbar_new ());
- status_context_id = gtk_statusbar_get_context_id (main_statusbar, "Link Hover");
-
- return (GtkWidget*)main_statusbar;
-}
-
-static GtkWidget*
-create_toolbar ()
-{
- GtkWidget* toolbar = gtk_toolbar_new ();
-
- gtk_toolbar_set_orientation (GTK_TOOLBAR (toolbar), GTK_ORIENTATION_HORIZONTAL);
- gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_BOTH_HORIZ);
-
- GtkToolItem* item;
-
- /* the back button */
- item = gtk_tool_button_new_from_stock (GTK_STOCK_GO_BACK);
- g_signal_connect (G_OBJECT (item), "clicked", G_CALLBACK (go_back_cb), NULL);
- gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
-
- /* The forward button */
- item = gtk_tool_button_new_from_stock (GTK_STOCK_GO_FORWARD);
- g_signal_connect (G_OBJECT (item), "clicked", G_CALLBACK (go_forward_cb), NULL);
- gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
-
- /* The URL entry */
- item = gtk_tool_item_new ();
- gtk_tool_item_set_expand (item, TRUE);
- uri_entry = gtk_entry_new ();
- gtk_container_add (GTK_CONTAINER (item), uri_entry);
- g_signal_connect (G_OBJECT (uri_entry), "activate", G_CALLBACK (activate_uri_entry_cb), NULL);
- gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
-
- /* The go button */
- item = gtk_tool_button_new_from_stock (GTK_STOCK_OK);
- g_signal_connect_swapped (G_OBJECT (item), "clicked", G_CALLBACK (activate_uri_entry_cb), (gpointer)uri_entry);
- gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
-
- return toolbar;
-}
-
-static GtkWidget*
-create_window ()
-{
- GtkWidget* window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- gtk_window_set_default_size (GTK_WINDOW (window), 800, 600);
- gtk_widget_set_name (window, "GtkLauncher");
- g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (destroy_cb), NULL);
-
- return window;
-}
-
-int
-main (int argc, char* argv[])
-{
- gtk_init (&argc, &argv);
-
- GtkWidget* vbox = gtk_vbox_new (FALSE, 0);
- gtk_box_pack_start (GTK_BOX (vbox), create_toolbar (), FALSE, FALSE, 0);
- gtk_box_pack_start (GTK_BOX (vbox), create_browser (), TRUE, TRUE, 0);
- gtk_box_pack_start (GTK_BOX (vbox), create_statusbar (), FALSE, FALSE, 0);
-
- main_window = create_window ();
- gtk_container_add (GTK_CONTAINER (main_window), vbox);
-
- gchar* uri = (gchar*) (argc > 1 ? argv[1] : "http://www.google.com/");
- webkit_web_view_open (web_view, uri);
-
- gtk_widget_grab_focus (GTK_WIDGET (web_view));
- gtk_widget_show_all (main_window);
- gtk_main ();
-
- return 0;
-}
diff --git a/WebKitTools/GtkLauncher/simple.svg b/WebKitTools/GtkLauncher/simple.svg
deleted file mode 100644
index 30b13ac..0000000
--- a/WebKitTools/GtkLauncher/simple.svg
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
-"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<svg width="5cm" height="4cm"
-xmlns="http://www.w3.org/2000/svg">
-<desc>Four separate rectangles
-</desc>
-<rect x="0.5cm" y="0.5cm" width="2cm" height="1cm"/>
-<rect x="0.5cm" y="2cm" width="1cm" height="1.5cm"/>
-<rect x="3cm" y="0.5cm" width="1.5cm" height="2cm"/>
-<rect x="3.5cm" y="3cm" width="1cm" height="0.5cm"/>
-<!-- Show outline of canvas using 'rect' element -->
-<rect x=".01cm" y=".01cm" width="4.98cm" height="3.98cm"
-fill="none" stroke="blue" stroke-width=".02cm" />
-</svg>
diff --git a/WebKitTools/GtkLauncher/text.html b/WebKitTools/GtkLauncher/text.html
deleted file mode 100644
index 607df72..0000000
--- a/WebKitTools/GtkLauncher/text.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<html>
-<head>
-<title>Hello World</title>
-<body bgcolor=#00ffff text=#000000>
-<p>
-Hello world
-</p>
-</body>
-</html>
diff --git a/WebKitTools/MIDLWrapper/MIDLWrapper.cpp b/WebKitTools/MIDLWrapper/MIDLWrapper.cpp
deleted file mode 100644
index 2132af8..0000000
--- a/WebKitTools/MIDLWrapper/MIDLWrapper.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-// MIDLWrapper.cpp : Just calls the built-in midl.exe with the given arguments.
-
-#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
-#include <process.h>
-#include <stdio.h>
-#include <string>
-#include <windows.h>
-
-using namespace std;
-
-int wmain(int argc, wchar_t* argv[], wchar_t* envp[])
-{
-#ifndef NDEBUG
- fwprintf(stderr, L"######### im in ur IDE, compiling ur c0des ########\n");
-#endif
-
- int pathIndex = -1;
- for (int i = 0; envp[i]; ++i)
- if (!wcsncmp(envp[i], L"PATH=", 5)) {
- pathIndex = i;
- break;
- }
-
- if (pathIndex == -1) {
- fwprintf(stderr, L"Couldn't find PATH environment variable!\n");
- return -1;
- }
-
- wchar_t* vcbin = wcsstr(envp[pathIndex], L"WebKitTools\\vcbin");
- if (!vcbin) {
- fwprintf(stderr, L"Couldn't find WebKitTools\\vcbin in PATH!\n");
- return -1;
- }
-
- wchar_t saved = *vcbin;
- *vcbin = 0;
-
- wchar_t* afterLeadingSemiColon = wcsrchr(envp[pathIndex], ';');
- if (!afterLeadingSemiColon)
- afterLeadingSemiColon = envp[pathIndex] + 5; // +5 for the length of "PATH="
- else
- afterLeadingSemiColon++;
-
- *vcbin = saved;
-
- size_t pathLength = wcslen(envp[pathIndex]);
-
- wchar_t* trailingSemiColon = wcschr(vcbin, ';');
- if (!trailingSemiColon)
- trailingSemiColon = envp[pathIndex] + pathLength;
-
- int vcbinLength = trailingSemiColon - afterLeadingSemiColon;
-
- size_t newPathLength = pathLength - vcbinLength;
-
- wchar_t* newPath = new wchar_t[newPathLength + 1];
-
- // Copy everything before the vcbin path...
- wchar_t* d = newPath;
- wchar_t* s = envp[pathIndex];
- while (s < afterLeadingSemiColon)
- *d++ = *s++;
-
- // Copy everything after the vcbin path...
- s = trailingSemiColon;
- while (*d++ = *s++);
-
- envp[pathIndex] = newPath;
-
-#ifndef NDEBUG
- fwprintf(stderr, L"New path: %s\n", envp[pathIndex]);
-#endif
-
- wchar_t** newArgv = new wchar_t*[argc + 1];
- for (int i = 0; i < argc; ++i) {
- size_t length = wcslen(argv[i]);
- newArgv[i] = new wchar_t[length + 3];
- *newArgv[i] = '\"';
- wcscpy_s(newArgv[i] + 1, length + 2, argv[i]);
- *(newArgv[i] + 1 + length) = '\"';
- *(newArgv[i] + 2 + length) = 0;
- }
- newArgv[argc] = 0;
-
- return _wspawnvpe(_P_WAIT, L"midl", newArgv, envp);
-}
diff --git a/WebKitTools/MIDLWrapper/MIDLWrapper.sln b/WebKitTools/MIDLWrapper/MIDLWrapper.sln
deleted file mode 100644
index b066df5..0000000
--- a/WebKitTools/MIDLWrapper/MIDLWrapper.sln
+++ /dev/null
@@ -1,20 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MIDLWrapper", "MIDLWrapper.vcproj", "{CBE6BA0B-1A76-4936-BF54-7EB84E1B0F21}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {CBE6BA0B-1A76-4936-BF54-7EB84E1B0F21}.Debug|Win32.ActiveCfg = Debug|Win32
- {CBE6BA0B-1A76-4936-BF54-7EB84E1B0F21}.Debug|Win32.Build.0 = Debug|Win32
- {CBE6BA0B-1A76-4936-BF54-7EB84E1B0F21}.Release|Win32.ActiveCfg = Release|Win32
- {CBE6BA0B-1A76-4936-BF54-7EB84E1B0F21}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/WebKitTools/MIDLWrapper/MIDLWrapper.vcproj b/WebKitTools/MIDLWrapper/MIDLWrapper.vcproj
deleted file mode 100644
index 471813d..0000000
--- a/WebKitTools/MIDLWrapper/MIDLWrapper.vcproj
+++ /dev/null
@@ -1,199 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="MIDLWrapper"
- ProjectGUID="{CBE6BA0B-1A76-4936-BF54-7EB84E1B0F21}"
- RootNamespace="MIDLWrapper"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="..\vcbin"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="1"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- OutputFile="$(OutDir)\midl.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="..\vcbin"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="1"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- OutputFile="$(OutDir)\midl.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
- >
- <File
- RelativePath=".\MIDLWrapper.cpp"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
- >
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
- >
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/WebKitTools/Makefile b/WebKitTools/Makefile
deleted file mode 100644
index 45bca06..0000000
--- a/WebKitTools/Makefile
+++ /dev/null
@@ -1,33 +0,0 @@
-MODULES = DumpRenderTree
-
-all:
- @for dir in $(MODULES); do ${MAKE} $@ -C $$dir; exit_status=$$?; \
- if [ $$exit_status -ne 0 ]; then exit $$exit_status; fi; done
-
-debug d development dev develop:
- @for dir in $(MODULES); do ${MAKE} $@ -C $$dir; exit_status=$$?; \
- if [ $$exit_status -ne 0 ]; then exit $$exit_status; fi; done
-
-release r deployment dep deploy:
- @for dir in $(MODULES); do ${MAKE} $@ -C $$dir; exit_status=$$?; \
- if [ $$exit_status -ne 0 ]; then exit $$exit_status; fi; done
-
-universal u:
- @for dir in $(MODULES); do ${MAKE} $@ -C $$dir; exit_status=$$?; \
- if [ $$exit_status -ne 0 ]; then exit $$exit_status; fi; done
-
-x86_64:
- @for dir in $(MODULES); do ${MAKE} $@ -C $$dir; exit_status=$$?; \
- if [ $$exit_status -ne 0 ]; then exit $$exit_status; fi; done
-
-64:
- @for dir in $(MODULES); do ${MAKE} $@ -C $$dir; exit_status=$$?; \
- if [ $$exit_status -ne 0 ]; then exit $$exit_status; fi; done
-
-64u:
- @for dir in $(MODULES); do ${MAKE} $@ -C $$dir; exit_status=$$?; \
- if [ $$exit_status -ne 0 ]; then exit $$exit_status; fi; done
-
-clean:
- @for dir in $(MODULES); do ${MAKE} $@ -C $$dir; exit_status=$$?; \
- if [ $$exit_status -ne 0 ]; then exit $$exit_status; fi; done
diff --git a/WebKitTools/Scripts/SpacingHeuristics.pm b/WebKitTools/Scripts/SpacingHeuristics.pm
deleted file mode 100644
index 7de0172..0000000
--- a/WebKitTools/Scripts/SpacingHeuristics.pm
+++ /dev/null
@@ -1,101 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Used for helping remove extra blank lines from files when processing.
-# see split-class for an example usage (or other scripts in bugzilla)
-
-BEGIN {
- use Exporter ();
- our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
- $VERSION = 1.00;
- @ISA = qw(Exporter);
- @EXPORT = qw(&resetSpacingHeuristics &isOnlyWhiteSpace &applySpacingHeuristicsAndPrint &setPreviousAllowedLine &setPreviousAllowedLine &printPendingEmptyLines &ignoringLine);
- %EXPORT_TAGS = ();
- @EXPORT_OK = ();
-}
-
-our @EXPORT_OK;
-
-my $justFoundEmptyLine = 0;
-my $previousLineWasDisallowed = 0;
-my $previousAllowedLine = "";
-my $pendingEmptyLines = "";
-
-sub resetSpacingHeuristics
-{
- $justFoundEmptyLine = 0;
- $previousLineWasDisallowed = 0;
- $previousAllowedLine = "";
- $pendingEmptyLines = "";
-}
-
-sub isOnlyWhiteSpace
-{
- my $line = shift;
- my $isOnlyWhiteSpace = ($line =~ m/^\s+$/);
- $pendingEmptyLines .= $line if ($isOnlyWhiteSpace);
- return $isOnlyWhiteSpace;
-}
-
-sub applySpacingHeuristicsAndPrint
-{
- my ($out, $line) = @_;
-
- printPendingEmptyLines($out, $line);
- $previousLineWasDisallowed = 0;
- print $out $line;
-}
-
-sub setPreviousAllowedLine
-{
- my $line = shift;
- $previousAllowedLine = $line;
-}
-
-sub printPendingEmptyLines
-{
- my $out = shift;
- my $line = shift;
- if ($previousLineWasDisallowed) {
- if (!($pendingEmptyLines eq "") && !($previousAllowedLine =~ m/{\s*$/) && !($line =~ m/^\s*}/)) {
- $pendingEmptyLines = "\n";
- } else {
- $pendingEmptyLines = "";
- }
- }
- print $out $pendingEmptyLines;
- $pendingEmptyLines = "";
-}
-
-sub ignoringLine
-{
- # my $line = shift; # ignoring input argument
- $previousLineWasDisallowed = 1;
-}
-
-1; \ No newline at end of file
diff --git a/WebKitTools/Scripts/VCSUtils.pm b/WebKitTools/Scripts/VCSUtils.pm
deleted file mode 100644
index e09d331..0000000
--- a/WebKitTools/Scripts/VCSUtils.pm
+++ /dev/null
@@ -1,119 +0,0 @@
-# Copyright (C) 2007 Apple Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Module to share code to work with various version control systems.
-
-use strict;
-use warnings;
-use File::Spec;
-use webkitdirs;
-
-BEGIN {
- use Exporter ();
- our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
- $VERSION = 1.00;
- @ISA = qw(Exporter);
- @EXPORT = qw(&isGitDirectory &isGit &isSVNDirectory &isSVN &makeFilePathRelative);
- %EXPORT_TAGS = ( );
- @EXPORT_OK = ();
-}
-
-our @EXPORT_OK;
-
-my $isGit;
-my $isSVN;
-my $gitBranch;
-my $isGitBranchBuild;
-
-sub isGitDirectory($)
-{
- my ($dir) = @_;
- return system("cd $dir && git rev-parse > /dev/null 2>&1") == 0;
-}
-
-sub isGit()
-{
- return $isGit if defined $isGit;
-
- $isGit = isGitDirectory(".");
- return $isGit;
-}
-
-sub gitBranch()
-{
- unless (defined $gitBranch) {
- chomp($gitBranch = `git symbolic-ref -q HEAD`);
- $gitBranch = "" if exitStatus($?);
- $gitBranch =~ s#^refs/heads/##;
- $gitBranch = "" if $gitBranch eq "master";
- }
-
- return $gitBranch;
-}
-
-sub isGitBranchBuild()
-{
- my $branch = gitBranch();
- chomp(my $override = `git config --bool branch.$branch.webKitBranchBuild`);
- return 1 if $override eq "true";
- return 0 if $override eq "false";
-
- unless (defined $isGitBranchBuild) {
- chomp(my $gitBranchBuild = `git config --bool core.webKitBranchBuild`);
- $isGitBranchBuild = $gitBranchBuild eq "true";
- }
-
- return $isGitBranchBuild;
-}
-
-sub isSVNDirectory($)
-{
- my ($dir) = @_;
-
- return -d File::Spec->catdir($dir, ".svn");
-}
-
-sub isSVN()
-{
- return $isSVN if defined $isSVN;
-
- $isSVN = isSVNDirectory(".");
- return $isSVN;
-}
-
-my $gitRoot;
-sub makeFilePathRelative($)
-{
- my ($path) = @_;
- return $path unless isGit();
-
- unless (defined $gitRoot) {
- chomp($gitRoot = `git rev-parse --show-cdup`);
- }
- return $gitRoot . $path;
-}
-
-1;
diff --git a/WebKitTools/Scripts/bisect-builds b/WebKitTools/Scripts/bisect-builds
deleted file mode 100755
index f77f81f..0000000
--- a/WebKitTools/Scripts/bisect-builds
+++ /dev/null
@@ -1,420 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2007 Apple Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# This script attempts to find the point at which a regression (or progression)
-# of behavior occurred by searching WebKit nightly builds.
-
-# To override the location where the nightly builds are downloaded or the path
-# to the Safari web browser, create a ~/.bisect-buildsrc file with one or more of
-# the following lines (use "~/" to specify a path from your home directory):
-#
-# $branch = "branch-name";
-# $nightlyDownloadDirectory = "~/path/to/nightly/downloads";
-# $safariPath = "/path/to/Safari.app";
-
-use strict;
-
-use File::Basename;
-use File::Path;
-use File::Spec;
-use File::Temp qw(tempfile);
-use Getopt::Long;
-use Time::HiRes qw(usleep);
-
-sub createTempFile($);
-sub downloadNightly($$$);
-sub findMacOSXVersion();
-sub findNearestNightlyIndex(\@$$);
-sub findSafariVersion($);
-sub loadSettings();
-sub makeNightlyList($$$$);
-sub mountAndRunNightly($$$$);
-sub parseRevisions($$;$);
-sub printStatus($$$);
-sub promptForTest($);
-
-loadSettings();
-
-my %validBranches = map { $_ => 1 } qw(feature-branch trunk);
-my $branch = $Settings::branch;
-my $nightlyDownloadDirectory = $Settings::nightlyDownloadDirectory;
-my $safariPath = $Settings::safariPath;
-
-my @nightlies;
-
-my $isProgression;
-my $localOnly;
-my @revisions;
-my $sanityCheck;
-my $showHelp;
-my $testURL;
-
-# Fix up -r switches in @ARGV
-@ARGV = map { /^(-r)(.+)$/ ? ($1, $2) : $_ } @ARGV;
-
-my $result = GetOptions(
- "b|branch=s" => \$branch,
- "d|download-directory=s" => \$nightlyDownloadDirectory,
- "h|help" => \$showHelp,
- "l|local!" => \$localOnly,
- "p|progression!" => \$isProgression,
- "r|revisions=s" => \&parseRevisions,
- "safari-path=s" => \$safariPath,
- "s|sanity-check!" => \$sanityCheck,
-);
-$testURL = shift @ARGV;
-
-$branch = "feature-branch" if $branch eq "feature";
-if (!exists $validBranches{$branch}) {
- print STDERR "ERROR: Invalid branch '$branch'\n";
- $showHelp = 1;
-}
-
-if (!$result || $showHelp || scalar(@ARGV) > 0) {
- print STDERR "Search WebKit nightly builds for changes in behavior.\n";
- print STDERR "Usage: " . basename($0) . " [options] [url]\n";
- print STDERR <<END;
- [-b|--branch name] name of the nightly build branch (default: trunk)
- [-d|--download-directory dir] nightly build download directory (default: ~/Library/Caches/WebKit-Nightlies)
- [-h|--help] show this help message
- [-l|--local] only use local (already downloaded) nightlies
- [-p|--progression] searching for a progression, not a regression
- [-r|--revision M[:N]] specify starting (and optional ending) revisions to search
- [--safari-path path] path to Safari application bundle (default: /Applications/Safari.app)
- [-s|--sanity-check] verify both starting and ending revisions before bisecting
-END
- exit 1;
-}
-
-my $nightlyWebSite = "http://nightly.webkit.org";
-my $nightlyBuildsURLBase = $nightlyWebSite . File::Spec->catdir("/builds", $branch, "mac");
-my $nightlyFilesURLBase = $nightlyWebSite . File::Spec->catdir("/files", $branch, "mac");
-
-$nightlyDownloadDirectory = glob($nightlyDownloadDirectory) if $nightlyDownloadDirectory =~ /^~/;
-$safariPath = glob($safariPath) if $safariPath =~ /^~/;
-$safariPath = File::Spec->catdir($safariPath, "Contents/MacOS/Safari") if $safariPath =~ m#\.app/*#;
-
-$nightlyDownloadDirectory = File::Spec->catdir($nightlyDownloadDirectory, $branch);
-if (! -d $nightlyDownloadDirectory) {
- mkpath($nightlyDownloadDirectory, 0, 0755) || die "Could not create $nightlyDownloadDirectory: $!";
-}
-
-@nightlies = makeNightlyList($localOnly, $nightlyDownloadDirectory, findMacOSXVersion(), findSafariVersion($safariPath));
-
-my $startIndex = $revisions[0] ? findNearestNightlyIndex(@nightlies, $revisions[0], 'ceil') : 0;
-my $endIndex = $revisions[1] ? findNearestNightlyIndex(@nightlies, $revisions[1], 'floor') : $#nightlies;
-
-my $tempFile = createTempFile($testURL);
-
-if ($sanityCheck) {
- my $didReproduceBug;
-
- do {
- printf "\nChecking starting revision (r%s)...\n",
- $nightlies[$startIndex]->{rev};
- downloadNightly($nightlies[$startIndex]->{file}, $nightlyFilesURLBase, $nightlyDownloadDirectory);
- mountAndRunNightly($nightlies[$startIndex]->{file}, $nightlyDownloadDirectory, $safariPath, $tempFile);
- $didReproduceBug = promptForTest($nightlies[$startIndex]->{rev});
- $startIndex-- if $didReproduceBug < 0;
- } while ($didReproduceBug < 0);
- die "ERROR: Bug reproduced in starting revision! Do you need to test an earlier revision or for a progression?"
- if $didReproduceBug && !$isProgression;
- die "ERROR: Bug not reproduced in starting revision! Do you need to test an earlier revision or for a regression?"
- if !$didReproduceBug && $isProgression;
-
- do {
- printf "\nChecking ending revision (r%s)...\n",
- $nightlies[$endIndex]->{rev};
- downloadNightly($nightlies[$endIndex]->{file}, $nightlyFilesURLBase, $nightlyDownloadDirectory);
- mountAndRunNightly($nightlies[$endIndex]->{file}, $nightlyDownloadDirectory, $safariPath, $tempFile);
- $didReproduceBug = promptForTest($nightlies[$endIndex]->{rev});
- $endIndex++ if $didReproduceBug < 0;
- } while ($didReproduceBug < 0);
- die "ERROR: Bug NOT reproduced in ending revision! Do you need to test a later revision or for a progression?"
- if !$didReproduceBug && !$isProgression;
- die "ERROR: Bug reproduced in ending revision! Do you need to test a later revision or for a regression?"
- if $didReproduceBug && $isProgression;
-}
-
-printStatus($nightlies[$startIndex]->{rev}, $nightlies[$endIndex]->{rev}, $isProgression);
-
-my %brokenRevisions = ();
-while (abs($endIndex - $startIndex) > 1) {
- my $index = $startIndex + int(($endIndex - $startIndex) / 2);
-
- my $didReproduceBug;
- do {
- if (exists $nightlies[$index]) {
- printf "\nChecking revision (r%s)...\n", $nightlies[$index]->{rev};
- downloadNightly($nightlies[$index]->{file}, $nightlyFilesURLBase, $nightlyDownloadDirectory);
- mountAndRunNightly($nightlies[$index]->{file}, $nightlyDownloadDirectory, $safariPath, $tempFile);
- $didReproduceBug = promptForTest($nightlies[$index]->{rev});
- }
- if ($didReproduceBug < 0) {
- $brokenRevisions{$nightlies[$index]->{rev}} = $nightlies[$index]->{file};
- delete $nightlies[$index];
- $endIndex--;
- $index = $startIndex + int(($endIndex - $startIndex) / 2);
- }
- } while ($didReproduceBug < 0);
-
- if ($didReproduceBug && !$isProgression || !$didReproduceBug && $isProgression) {
- $endIndex = $index;
- } else {
- $startIndex = $index;
- }
-
- print "\nBroken revisions skipped: r" . join(", r", keys %brokenRevisions) . "\n"
- if scalar keys %brokenRevisions > 0;
- printStatus($nightlies[$startIndex]->{rev}, $nightlies[$endIndex]->{rev}, $isProgression);
-}
-
-unlink $tempFile if $tempFile;
-
-exit 0;
-
-sub createTempFile($)
-{
- my ($url) = @_;
-
- return undef if !$url;
-
- my ($fh, $tempFile) = tempfile(
- basename($0) . "-XXXXXXXX",
- DIR => ($ENV{'TMPDIR'} || "/tmp"),
- SUFFIX => ".html",
- UNLINK => 0,
- );
- print $fh "<meta http-equiv=\"refresh\" content=\"0; $url\">\n";
- close($fh);
-
- return $tempFile;
-}
-
-sub downloadNightly($$$)
-{
- my ($filename, $urlBase, $directory) = @_;
- my $path = File::Spec->catfile($directory, $filename);
- if (! -f $path) {
- print "Downloading $filename to $directory...\n";
- `curl -# -o '$path' '$urlBase/$filename'`;
- }
-}
-
-sub findMacOSXVersion()
-{
- my $version;
- open(SW_VERS, "-|", "/usr/bin/sw_vers") || die;
- while (<SW_VERS>) {
- $version = $1 if /^ProductVersion:\s+([^\s]+)/;
- }
- close(SW_VERS);
- return $version;
-}
-
-sub findNearestNightlyIndex(\@$$)
-{
- my ($nightlies, $revision, $round) = @_;
-
- my $lowIndex = 0;
- my $highIndex = $#{$nightlies};
-
- return $highIndex if uc($revision) eq 'HEAD' || $revision >= $nightlies->[$highIndex]->{rev};
- return $lowIndex if $revision <= $nightlies->[$lowIndex]->{rev};
-
- while (abs($highIndex - $lowIndex) > 1) {
- my $index = $lowIndex + int(($highIndex - $lowIndex) / 2);
- if ($revision < $nightlies->[$index]->{rev}) {
- $highIndex = $index;
- } elsif ($revision > $nightlies->[$index]->{rev}) {
- $lowIndex = $index;
- } else {
- return $index;
- }
- }
-
- return ($round eq "floor") ? $lowIndex : $highIndex;
-}
-
-sub findSafariVersion($)
-{
- my ($path) = @_;
- my $versionPlist = File::Spec->catdir(dirname(dirname($path)), "version.plist");
- my $version;
- open(PLIST, "< $versionPlist") || die;
- while (<PLIST>) {
- if (m#^\s*<key>CFBundleShortVersionString</key>#) {
- $version = <PLIST>;
- $version =~ s#^\s*<string>(.+)</string>\s*[\r\n]*#$1#;
- }
- }
- close(PLIST);
- return $version;
-}
-
-sub loadSettings()
-{
- package Settings;
-
- our $branch = "trunk";
- our $nightlyDownloadDirectory = File::Spec->catdir($ENV{HOME}, "Library/Caches/WebKit-Nightlies");
- our $safariPath = "/Applications/Safari.app";
-
- my $rcfile = File::Spec->catdir($ENV{HOME}, ".bisect-buildsrc");
- return if !-f $rcfile;
-
- my $result = do $rcfile;
- die "Could not parse $rcfile: $@" if $@;
-}
-
-sub makeNightlyList($$$$)
-{
- my ($useLocalFiles, $localDirectory, $macOSXVersion, $safariVersion) = @_;
- my @files;
-
- if ($useLocalFiles) {
- opendir(DIR, $localDirectory) || die "$!";
- foreach my $file (readdir(DIR)) {
- if ($file =~ /^WebKit-SVN-r([0-9]+)\.dmg$/) {
- push(@files, +{ rev => $1, file => $file });
- }
- }
- closedir(DIR);
- } else {
- open(NIGHTLIES, "curl -s $nightlyBuildsURLBase/all |") || die;
-
- while (my $line = <NIGHTLIES>) {
- chomp $line;
- my ($revision, $timestamp, $url) = split(/,/, $line);
- my $nightly = basename($url);
- push(@files, +{ rev => $revision, file => $nightly });
- }
- close(NIGHTLIES);
- }
-
- if (eval "v$macOSXVersion" ge v10.5) {
- if (eval "v$safariVersion" ge v3.1) {
- @files = grep { $_->{rev} >= 29711 } @files;
- } elsif (eval "v$safariVersion" ge v3.0) {
- @files = grep { $_->{rev} >= 25124 } @files;
- } elsif (eval "v$safariVersion" ge v2.0) {
- @files = grep { $_->{rev} >= 19594 } @files;
- } else {
- die "Requires Safari 2.0 or newer";
- }
- } elsif (eval "v$macOSXVersion" ge v10.4) {
- if (eval "v$safariVersion" ge v3.1) {
- @files = grep { $_->{rev} >= 29711 } @files;
- } elsif (eval "v$safariVersion" ge v3.0) {
- @files = grep { $_->{rev} >= 19992 } @files;
- } elsif (eval "v$safariVersion" ge v2.0) {
- @files = grep { $_->{rev} >= 11976 } @files;
- } else {
- die "Requires Safari 2.0 or newer";
- }
- } else {
- die "Requires Mac OS X 10.4 (Tiger) or 10.5 (Leopard)";
- }
-
- my $nightlycmp = sub { return $a->{rev} <=> $b->{rev}; };
-
- return sort $nightlycmp @files;
-}
-
-sub mountAndRunNightly($$$$)
-{
- my ($filename, $directory, $safari, $tempFile) = @_;
- my $mountPath = "/Volumes/WebKit";
- my $webkitApp = File::Spec->catfile($mountPath, "WebKit.app");
- my $diskImage = File::Spec->catfile($directory, $filename);
-
- my $i = 0;
- while (-e $mountPath) {
- $i++;
- usleep 100 if $i > 1;
- `hdiutil detach '$mountPath' 2> /dev/null`;
- die "Could not unmount $diskImage at $mountPath" if $i > 100;
- }
- die "Can't mount $diskImage: $mountPath already exists!" if -e $mountPath;
-
- print "Mounting disk image and running WebKit...\n";
- `hdiutil attach '$diskImage'`;
- $i = 0;
- while (! -e $webkitApp) {
- usleep 100;
- $i++;
- die "Could not mount $diskImage at $mountPath" if $i > 100;
- }
-
- my $frameworkPath;
- if (-d "/Volumes/WebKit/WebKit.app/Contents/Frameworks") {
- my $osXVersion = join('.', (split(/\./, findMacOSXVersion()))[0..1]);
- $frameworkPath = "/Volumes/WebKit/WebKit.app/Contents/Frameworks/$osXVersion";
- } else {
- $frameworkPath = "/Volumes/WebKit/WebKit.app/Contents/Resources";
- }
-
- $tempFile ||= "";
- `DYLD_FRAMEWORK_PATH=$frameworkPath WEBKIT_UNSET_DYLD_FRAMEWORK_PATH=YES $safari $tempFile`;
-
- `hdiutil detach '$mountPath' 2> /dev/null`;
-}
-
-sub parseRevisions($$;$)
-{
- my ($optionName, $value, $ignored) = @_;
-
- if ($value =~ /^r?([0-9]+|HEAD):?$/i) {
- push(@revisions, $1);
- die "Too many revision arguments specified" if scalar @revisions > 2;
- } elsif ($value =~ /^r?([0-9]+):?r?([0-9]+|HEAD)$/i) {
- $revisions[0] = $1;
- $revisions[1] = $2;
- } else {
- die "Unknown revision '$value': expected 'M' or 'M:N'";
- }
-}
-
-sub printStatus($$$)
-{
- my ($startRevision, $endRevision, $isProgression) = @_;
- printf "\n%s: r%s %s: r%s\n",
- $isProgression ? "Fails" : "Works", $startRevision,
- $isProgression ? "Works" : "Fails", $endRevision;
-}
-
-sub promptForTest($)
-{
- my ($revision) = @_;
- print "Did the bug reproduce in r$revision (yes/no/broken)? ";
- my $answer = <STDIN>;
- return 1 if $answer =~ /^(1|y.*)$/i;
- return -1 if $answer =~ /^(-1|b.*)$/i; # Broken
- return 0;
-}
-
diff --git a/WebKitTools/Scripts/build-drawtest b/WebKitTools/Scripts/build-drawtest
deleted file mode 100755
index fa9b7c2..0000000
--- a/WebKitTools/Scripts/build-drawtest
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2005, 2006 Apple Computer, Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Simplified build script for WebKit Open Source Project.
-# Modified copy of build-dumprendertree. Perhaps these could share code.
-
-use strict;
-use FindBin;
-use lib $FindBin::Bin;
-use webkitdirs;
-
-checkRequiredSystemConfig();
-setConfiguration();
-chdirWebKit();
-my @options = XcodeOptions();
-
-# Check to see that all the frameworks are built (w/ SVG support).
-checkFrameworks();
-checkWebCoreSVGSupport(1);
-
-# Build
-chdir "WebKitTools/DrawTest" or die;
-exit system "xcodebuild", "-project", "DrawTest.xcodeproj", @options;
diff --git a/WebKitTools/Scripts/build-dumprendertree b/WebKitTools/Scripts/build-dumprendertree
deleted file mode 100755
index a11481b..0000000
--- a/WebKitTools/Scripts/build-dumprendertree
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-use strict;
-use FindBin;
-use lib $FindBin::Bin;
-use webkitdirs;
-use POSIX;
-
-checkRequiredSystemConfig();
-setConfiguration();
-chdirWebKit();
-my @options = XcodeOptions();
-
-# Build
-chdir "WebKitTools/DumpRenderTree" or die;
-my $result;
-if (isOSX()) {
- $result = system "xcodebuild", "-project", "DumpRenderTree.xcodeproj", @options, @ARGV;
-} elsif (isCygwin()) {
- $result = buildVisualStudioProject("DumpRenderTree.sln");
-} elsif (isQt() || isGtk()) {
- # Qt and Gtk build everything in one shot. No need to build anything here.
- $result = 0;
-} else {
- die "Building not defined for this platform!\n";
-}
-exit exitStatus($result);
diff --git a/WebKitTools/Scripts/build-jsc b/WebKitTools/Scripts/build-jsc
deleted file mode 100755
index f258ea5..0000000
--- a/WebKitTools/Scripts/build-jsc
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
-# Copyright (C) 2007 Eric Seidel <eric@webkit.org>
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-use strict;
-use FindBin;
-use lib $FindBin::Bin;
-use webkitdirs;
-use POSIX;
-
-checkRequiredSystemConfig();
-setConfiguration();
-chdirWebKit();
-my @options = XcodeOptions();
-
-chdir "JavaScriptCore" or die "Can't find JavaScriptCore directory to build from";
-my $result;
-if (isOSX()) {
- $result = system "sh", "-c", 'xcodebuild -project JavaScriptCore.xcodeproj -target jsc "$@" | grep -v setenv && exit ${PIPESTATUS[0]}', "xcodebuild", @options, @ARGV;
-} elsif (isCygwin()) {
- $result = buildVisualStudioProject("JavaScriptCore.vcproj/JavaScriptCore.sln");
-} elsif (isQt() or isGtk() or isWx()) {
- # Qt and Gtk build everything in one-shot. No need to build anything here.
- $result = 0;
-} else {
- die "Building not defined for this platform!\n";
-}
-exit exitStatus($result);
diff --git a/WebKitTools/Scripts/build-webkit b/WebKitTools/Scripts/build-webkit
deleted file mode 100755
index 6ed3ddc..0000000
--- a/WebKitTools/Scripts/build-webkit
+++ /dev/null
@@ -1,350 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2005, 2006 Apple Computer, Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Simplified build script for WebKit Open Source Project.
-
-use strict;
-use File::Basename;
-use File::Spec;
-use FindBin;
-use Getopt::Long qw(:config pass_through);
-use lib $FindBin::Bin;
-use webkitdirs;
-use POSIX;
-
-my $originalWorkingDirectory = getcwd();
-
-my $databaseSupport = 1;
-my $domStorageSupport = 1;
-my $iconDatabaseSupport = 1;
-my $offlineWebApplicationSupport = 1;
-my $svgSupport = 1;
-my $svgExperimentalSupport = 0;
-my $svgAnimationSupport = 1;
-my $svgFiltersSupport = $svgExperimentalSupport;
-my $svgForeignObjectSupport = 1;
-my $svgUseSupport = 1;
-my $svgFontsSupport = 1;
-my $svgAsImageSupport = 1;
-my $xpathSupport = 1;
-my $xsltSupport = 1;
-my $coverageSupport = 0;
-my $videoSupport = (isOSX() || isCygwin()); # Enable by default on OSX and Windows
-my $showHelp = 0;
-my $clean = 0;
-my $buildUniversal = 0;
-my $buildSixtyFourBit = 0;
-
-my $programName = basename($0);
-my $usage = <<EOF;
-Usage: $programName [options] [options to pass to build system]
- --help Show this help message
- --cairo-win32 Build using Cairo (rather than CoreGraphics) on Windows
- --clean Cleanup the build directory
- --universal Build 2-way universal (PPC and Intel 32-bit)
- --64-bit Build 64-bit, combine with --universal to build 4-way universal
- --[no-]offline-web-applications Toggle Offline Web Application Support (default : $offlineWebApplicationSupport)
- --[no-]database Toggle Database Support (default: $databaseSupport)
- --[no-]dom-storage Toggle DOM Storage Support (default: $domStorageSupport)
- --[no-]icon-database Toggle Icon database support (default: $iconDatabaseSupport)
- --[no-]svg Toggle SVG support (default: $svgSupport)
- --[no-]svg-experimental Toggle SVG experimental features support (default: $svgExperimentalSupport,
- implies SVG Support)
- --[no-]svg-animation Toggle SVG animation support (default: $svgAnimationSupport, implies SVG Support)
- --[no-]svg-filters Toggle SVG filters support (default: $svgFiltersSupport, implies SVG Support)
- --[no-]svg-foreign-object Toggle SVG foreign object support (default: $svgForeignObjectSupport, implies SVG Support)
- --[no-]svg-fonts Toggle SVG fonts support (default: $svgFontsSupport, implies SVG Support)
- --[no-]svg-as-image Toggle SVG as Image support (default: $svgAsImageSupport, implies SVG Support)
- --[no-]svg-use Toggle SVG use element support (default: $svgUseSupport, implies SVG Support)
- --[no-]xpath Toggle XPath support (default: $xpathSupport)
- --[no-]xslt Toggle XSLT support (default: $xsltSupport)
- --[no-]video Toggle Video support (default: $videoSupport)
- --[no-]coverage Toggle code coverage support (default: $coverageSupport)
-EOF
-
-GetOptions('database!' => \$databaseSupport,
- 'dom-storage!' => \$domStorageSupport,
- 'icon-database!' => \$iconDatabaseSupport,
- 'offline-web-applications!' => \$offlineWebApplicationSupport,
- 'svg!' => \$svgSupport,
- 'svg-experimental!' => \$svgExperimentalSupport,
- 'svg-animation!' => \$svgAnimationSupport,
- 'svg-filters!' => \$svgFiltersSupport,
- 'svg-foreign-object!' => \$svgForeignObjectSupport,
- 'svg-fonts!' => \$svgFontsSupport,
- 'svg-as-image!' => \$svgAsImageSupport,
- 'svg-use!' => \$svgUseSupport,
- 'xpath!' => \$xpathSupport,
- 'xslt!' => \$xsltSupport,
- 'video!' => \$videoSupport,
- 'coverage!' => \$coverageSupport,
- 'help' => \$showHelp,
- 'universal' => \$buildUniversal,
- '64-bit' => \$buildSixtyFourBit,
- 'clean' => \$clean);
-
-if ($showHelp) {
- print STDERR $usage;
- exit 1;
-}
-
-$svgExperimentalSupport = 0 unless $svgSupport;
-$svgAnimationSupport = 0 unless $svgSupport;
-$svgFiltersSupport = 0 unless $svgSupport;
-$svgForeignObjectSupport = 0 unless $svgSupport;
-$svgFontsSupport = 0 unless $svgSupport;
-$svgAsImageSupport = 0 unless $svgSupport;
-$svgUseSupport = 0 unless $svgSupport;
-
-if ($svgExperimentalSupport) {
- $svgAnimationSupport = 1;
- $svgFiltersSupport = 1;
- $svgForeignObjectSupport = 1;
- $svgFontsSupport = 1;
- $svgAsImageSupport = 1;
- $svgUseSupport = 1;
-}
-
-checkRequiredSystemConfig();
-setConfiguration();
-chdirWebKit();
-
-# FIXME: Migrate build-wxwebkit commands into build-webkit.
-if (isWx()) {
- my @opts = ();
- $ENV{"WEBKITOUTPUTDIR"} = productDir();
- foreach (@ARGV) {
- if ($_ eq "wxgc" || $_ eq "wxpython") {
- push(@opts, $_);
- }
- }
- if ($clean) {
- push(@opts, "clean");
- }
- system "WebKitTools/wx/build-wxwebkit @opts";
- exit exitStatus($?);
-}
-
-
-my $productDir = productDir();
-my @overrideFeatureDefinesOption = ();
-
-push @overrideFeatureDefinesOption, "ENABLE_DATABASE" if $databaseSupport;
-push @overrideFeatureDefinesOption, "ENABLE_DOM_STORAGE" if $domStorageSupport;
-push @overrideFeatureDefinesOption, "ENABLE_ICONDATABASE" if $iconDatabaseSupport;
-push @overrideFeatureDefinesOption, "ENABLE_OFFLINE_WEB_APPLICATIONS" if $offlineWebApplicationSupport;
-push @overrideFeatureDefinesOption, "ENABLE_SVG" if $svgSupport;
-push @overrideFeatureDefinesOption, "ENABLE_SVG_ANIMATION" if $svgAnimationSupport;
-push @overrideFeatureDefinesOption, "ENABLE_SVG_AS_IMAGE" if $svgAsImageSupport;
-push @overrideFeatureDefinesOption, "ENABLE_SVG_FILTERS" if $svgFiltersSupport;
-push @overrideFeatureDefinesOption, "ENABLE_SVG_FONTS" if $svgFontsSupport;
-push @overrideFeatureDefinesOption, "ENABLE_SVG_FOREIGN_OBJECT" if $svgForeignObjectSupport;
-push @overrideFeatureDefinesOption, "ENABLE_SVG_USE" if $svgUseSupport;
-push @overrideFeatureDefinesOption, "ENABLE_VIDEO" if $videoSupport;
-push @overrideFeatureDefinesOption, "ENABLE_XPATH" if $xpathSupport;
-push @overrideFeatureDefinesOption, "ENABLE_XSLT" if $xsltSupport;
-my $overrideFeatureDefinesString = "FEATURE_DEFINES=" . join(" ", @overrideFeatureDefinesOption);
-
-my @coverageSupportOption = ();
-if ($coverageSupport) {
- push @coverageSupportOption, "GCC_GENERATE_TEST_COVERAGE_FILES=YES";
- push @coverageSupportOption, "GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES";
- push @coverageSupportOption, "EXTRA_LINK= -ftest-coverage -fprofile-arcs";
- push @coverageSupportOption, "OTHER_CFLAGS= -MD";
- push @coverageSupportOption, "OTHER_LDFLAGS=\$(OTHER_LDFLAGS) -ftest-coverage -fprofile-arcs -framework AppKit";
-}
-
-# Check that all the project directories are there.
-my @projects = ("JavaScriptCore", "JavaScriptGlue", "WebCore", "WebKit");
-my @otherDirs = ("WebKitLibraries");
-for my $dir (@projects, @otherDirs) {
- if (! -d $dir) {
- die "Error: No $dir directory found. Please do a fresh checkout.\n";
- }
-}
-
-my @options = ();
-
-if ($clean && isOSX()) {
- push(@options, "-alltargets");
- push(@options, "clean");
-}
-
-if ($buildSixtyFourBit && isOSX()) {
- my $cpuVendor = `sysctl -n machdep.cpu.vendor`;
- chomp $cpuVendor;
-
- if ($buildUniversal) {
- push(@options, "ARCHS=ppc ppc64 i386 x86_64");
- } elsif ($cpuVendor eq "GenuineIntel") {
- push(@options, "ARCHS=i386 x86_64");
- } else {
- push(@options, "ARCHS=ppc ppc64");
- }
-} elsif ($buildUniversal && isOSX()) {
- push(@options, "ARCHS=ppc i386");
-}
-
-# enable autotool options accordingly
-if (isGtk()) {
- push @options, autotoolsFlag($databaseSupport, "database");
- push @options, autotoolsFlag($domStorageSupport, "dom-storage");
- push @options, autotoolsFlag($iconDatabaseSupport, "icon-database");
- push @options, autotoolsFlag($offlineWebApplicationSupport, "offline-web-applications");
- push @options, autotoolsFlag($svgSupport, "svg");
- push @options, autotoolsFlag($svgAnimationSupport, "svg-animation");
- push @options, autotoolsFlag($svgFiltersSupport, "svg-filters");
- push @options, autotoolsFlag($svgForeignObjectSupport, "svg-foreign-object");
- push @options, autotoolsFlag($svgFontsSupport, "svg-fonts");
- push @options, autotoolsFlag($svgAsImageSupport, "svg-as-image");
- push @options, autotoolsFlag($svgUseSupport, "svg-use-element");
- push @options, autotoolsFlag($xpathSupport, "xpath");
- push @options, autotoolsFlag($xsltSupport, "xslt");
- push @options, autotoolsFlag($videoSupport, "video");
- push @options, autotoolsFlag($coverageSupport, "coverage");
-}
-
-if (isOSX()) {
-
- push(@options, XcodeOptions());
-
- # Copy library and header from WebKitLibraries to a findable place in the product directory.
- my $srcLib = "WebKitLibraries/libWebKitSystemInterfaceTiger.a";
- my $lib = "$productDir/libWebKitSystemInterfaceTiger.a";
- if (!-e $lib || -M $lib > -M $srcLib) {
- print "Updating $lib\n";
- system "ditto", $srcLib, $lib;
- system "ranlib", $lib;
- }
-
- $srcLib = "WebKitLibraries/libWebKitSystemInterfaceLeopard.a";
- $lib = "$productDir/libWebKitSystemInterfaceLeopard.a";
- if (!-e $lib || -M $lib > -M $srcLib) {
- print "Updating $lib\n";
- system "ditto", $srcLib, $lib;
- system "ranlib", $lib;
- }
-
- my $srcHeader = "WebKitLibraries/WebKitSystemInterface.h";
- my $header = "$productDir/usr/local/include/WebKitSystemInterface.h";
- if (!-e $header || -M $header > -M $srcHeader) {
- print "Updating $header\n";
- system "mkdir", "-p", "$productDir/usr/local/include";
- system "ditto", $srcHeader, $header;
- }
-
- $srcLib = "WebKitLibraries/libWebCoreSQLite3.a";
- $lib = "$productDir/libWebCoreSQLite3.a";
- if (!-e $lib || -M $lib > -M $srcLib) {
- print "Updating $lib\n";
- system "ditto", $srcLib, $lib;
- system "ranlib", $lib;
- }
-
- my $srcHeaderDir = "WebKitLibraries/WebCoreSQLite3";
- my $headerDir = "$productDir/WebCoreSQLite3";
- if (!-e $headerDir || -M $headerDir > -M $srcHeaderDir) {
- print "Updating $headerDir\n";
- system "ditto", $srcHeaderDir, $headerDir;
- }
-}
-
-if (isCygwin()) {
- # Copy WebKitSupportLibrary to the correct location in WebKitLibraries so it can be found.
- # Will fail if WebKitSupportLibrary.zip is not in source root.
- (system("perl WebKitTools/Scripts/update-webkit-support-libs") == 0) or die;
-}
-
-# Force re-link of existing libraries if different than expected
-removeLibraryDependingOnSVG("WebCore", $svgSupport);
-
-# Build, and abort if the build fails.
-for my $dir (@projects) {
- chdir $dir or die;
- my $result = 0;
-
- if (isGtk()) {
- if ($dir ne "WebKit") {
- chdir ".." or die;
- next;
- }
-
- $result = buildGtkProject($dir, $clean, @options);
- } elsif (isQt()) {
- if ($dir ne "WebKit") {
- chdir ".." or die;
- next;
- }
- $result = buildQMakeQtProject($dir, $clean);
- } elsif (isOSX()) {
- $result = system "xcodebuild", "-project", "$dir.xcodeproj", @options, $overrideFeatureDefinesString, @coverageSupportOption, @ARGV;
- } elsif (isCygwin()) {
- if ($dir eq "WebKit") {
- $result = buildVisualStudioProject("win/WebKit.vcproj/WebKit.sln", $clean);
- }
- }
-
- if (exitStatus($result)) {
- if (isCygwin()) {
- print "\n\n===== BUILD FAILED ======\n\n";
- my $scriptDir = relativeScriptsDir();
- print "Please ensure you have run $scriptDir/update-webkit to install depenedencies.\n\n";
- my $baseProductDir = baseProductDir();
- print "You can view build errors by checking the BuildLog.htm files located at:\n$baseProductDir/obj/<project>/<config>.\n";
- }
- exit exitStatus($result);
- }
- chdir ".." or die;
-}
-
-# Don't report the "WebKit is now built" message after a clean operation.
-exit if $clean;
-
-# Write out congratulations message.
-
-my $launcherPath = launcherPath();
-my $launcherName = launcherName();
-
-print "\n";
-print "===========================================================\n";
-print " WebKit is now built. To run $launcherName with this newly-built\n";
-print " code, use the \"$launcherPath\" script.\n";
-if ($svgSupport) {
- print "\n NOTE: WebKit has been built with SVG support enabled.\n";
- print " $launcherName will have SVG viewing capabilities.\n";
-}
-if ($svgAnimationSupport or $svgFiltersSupport or $svgForeignObjectSupport or $svgFontsSupport or $svgAsImageSupport or $svgUseSupport) {
- print " Your build supports the following (optional) SVG features: \n";
- print " * Basic SVG animation.\n" if $svgAnimationSupport;
- print " * SVG filters.\n" if $svgFiltersSupport;
- print " * SVG foreign object.\n" if $svgForeignObjectSupport;
- print " * SVG fonts.\n" if $svgFontsSupport;
- print " * SVG as image.\n" if $svgAsImageSupport;
- print " * SVG <use> support.\n" if $svgUseSupport;
-}
-print "===========================================================\n";
diff --git a/WebKitTools/Scripts/check-dom-results b/WebKitTools/Scripts/check-dom-results
deleted file mode 100755
index 0b32406..0000000
--- a/WebKitTools/Scripts/check-dom-results
+++ /dev/null
@@ -1,141 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Script to check status of W3C DOM tests that are part of the WebKit tests.
-
-use strict;
-use FindBin;
-use Cwd;
-use lib $FindBin::Bin;
-use webkitdirs;
-
-chdirWebKit();
-
-my $verbose = $ARGV[0] && $ARGV[0] eq "-v";
-
-my $workingDir = getcwd();
-my $testDirectory = "$workingDir/LayoutTests";
-
-my @suites = ( {"name" => "DOM Level 1 Core (html)", "directory" => "dom/html/level1/core"},
- {"name" => "DOM Level 2 Core (html)", "directory" => "dom/html/level2/core"},
- {"name" => "DOM Level 2 Events (html)", "directory" => "dom/html/level2/events"},
- {"name" => "DOM Level 2 HTML (html)", "directory" => "dom/html/level2/html"},
- {"name" => "DOM Level 1 Core (xhtml)", "directory" => "dom/xhtml/level1/core"},
- {"name" => "DOM Level 2 Core (xhtml)", "directory" => "dom/xhtml/level2/core"},
- {"name" => "DOM Level 2 Events (xhtml)", "directory" => "dom/xhtml/level2/events"},
- {"name" => "DOM Level 2 HTML (xhtml)", "directory" => "dom/xhtml/level2/html"},
- {"name" => "DOM Level 3 Core (xhtml)", "directory" => "dom/xhtml/level3/core"},
- {"name" => "DOM Level 3 XPath (svg)", "directory" => "dom/svg/level3/xpath"});
-
-my $totalCount = 0;
-my $totalSuccesses = 0;
-my $totalDisabled = 0;
-my $totalFailed = 0;
-
-foreach my $suite (@suites) {
-
- my %suite = %$suite;
- my $directory = $suite{"directory"};
- my $name = $suite{"name"};
- my @results = `find "${testDirectory}/${directory}" -name "*-expected.txt"`;
- my @disabled = `find "${testDirectory}/${directory}" -name "*-disabled"`;
-
- my @failures = ();
- my $count = 0;
-
- foreach my $result (@results) {
- $count++;
- my $success = 0;
- open RESULT, "<$result";
- while (<RESULT>) {
- if (/Success/) {
- $success = 1;
- last;
- }
- }
- close RESULT;
- if (!$success) {
- push @failures, $result;
- }
- }
-
- my $disabledCount = (scalar @disabled);
- my $failureCount = (scalar @failures);
-
- $count += $disabledCount;
-
- my $successCount = $count - $failureCount - $disabledCount;
- my $percentage = (sprintf "%.1f", ($successCount * 100.0 / $count));
-
- if ($percentage == 100) {
- print "${name}: all ${count} tests succeeded";
- } else {
- print "${name}: ${successCount} out of ${count} tests succeeded (${percentage}%)";
- }
- print " ($disabledCount disabled)" if $disabledCount;
- print "\n";
- if ($verbose) {
- print "\n";
- if (@disabled) {
- print " Disabled:\n";
-
- foreach my $failure (sort @disabled) {
- $failure =~ s|.*/||;
- $failure =~ s|-disabled||;
- print " ${directory}/${failure}";
- }
- }
- if (@failures) {
- print " Failed:\n";
-
- foreach my $failure (sort @failures) {
- $directory =~ m|^dom/(\w+)|;
- my $extension = $1;
- $failure =~ s|.*/||;
- $failure =~ s|-expected\.txt|.${extension}|;
- print " ${directory}/${failure}";
- }
- }
-
- print "\n";
- }
-
- $totalCount += $count;
- $totalSuccesses += $successCount;
- $totalDisabled += $disabledCount;
- $totalFailed += $failureCount;
-}
-
-
-my $totalPercentage = (sprintf "%.1f", ($totalSuccesses * 100.0 / $totalCount));
-my $totalDisabledPercentage = (sprintf "%.1f", ($totalDisabled * 100.0 / $totalCount));
-my $totalFailedPercentage = (sprintf "%.1f", ($totalFailed * 100.0 / $totalCount));
-
-print "Total: ${totalSuccesses} out of ${totalCount} tests succeeded (${totalPercentage}%)\n";
-print " ${totalDisabled} tests disabled (${totalDisabledPercentage}%)\n";
-print " ${totalFailed} tests failed (${totalFailedPercentage}%)\n";
diff --git a/WebKitTools/Scripts/check-for-global-initializers b/WebKitTools/Scripts/check-for-global-initializers
deleted file mode 100755
index 493b40c..0000000
--- a/WebKitTools/Scripts/check-for-global-initializers
+++ /dev/null
@@ -1,135 +0,0 @@
-#!/usr/bin/perl
-
-# Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# "check-for-global-initializers" script for WebKit Open Source Project
-
-# Intended to be invoked from an Xcode build step to check if there are
-# any global initializers in a target.
-
-use warnings;
-use strict;
-
-use File::Basename;
-
-sub touch($);
-
-my $arch = $ENV{'CURRENT_ARCH'};
-my $configuration = $ENV{'CONFIGURATION'};
-my $target = $ENV{'TARGET_NAME'};
-my $variant = $ENV{'CURRENT_VARIANT'};
-my $coverageBuild = $ENV{'WEBKIT_COVERAGE_BUILD'};
-my $debugRoot = $ENV{'WEBKIT_DEBUG_ROOT'};
-
-$arch = $ENV{'NATIVE_ARCH'} if !$arch; # for Xcode 2.1, which does not have CURRENT_ARCH
-$variant = "normal" if !$variant; # for Xcode 2.1, which does not have CURRENT_VARIANT
-
-my $executablePath = "$ENV{'TARGET_BUILD_DIR'}/$ENV{'EXECUTABLE_PATH'}";
-
-my $buildTimestampPath = $ENV{'TARGET_TEMP_DIR'} . "/" . basename($0) . ".timestamp";
-my $buildTimestampAge = -M $buildTimestampPath;
-
-touch($buildTimestampPath);
-
-my $list = $ENV{"LINK_FILE_LIST_${variant}_${arch}"};
-
-if (!open LIST, $list) {
- print "Could not open $list\n";
- exit 1;
-}
-
-my @files = <LIST>;
-chomp @files;
-close LIST;
-
-my $sawError = 0;
-
-for my $file (sort @files) {
- if (defined $buildTimestampAge) {
- my $fileAge = -M $file;
- next if defined $fileAge && $fileAge > $buildTimestampAge;
- }
- if (!open NM, "(nm '$file' | sed 's/^/STDOUT:/') 2>&1 |") {
- print "Could not open $file\n";
- $sawError = 1;
- next;
- }
- my $sawGlobal = 0;
- while (<NM>) {
- if (/^STDOUT:/) {
- $sawGlobal = 1 if /__GLOBAL__I/;
- } else {
- print STDERR if $_ ne "nm: no name list\n";
- }
- }
- close NM;
- if ($sawGlobal) {
- my $shortName = $file;
- $shortName =~ s/.*\///;
-
- # Special cases for files that have initializers in debug builds.
- if ($configuration eq "Debug" or $variant eq "debug" or $debugRoot) {
- if ($target eq "JavaScriptCore") {
- next if $shortName eq "AllInOneFile.o";
- next if $shortName eq "Opcode.o";
- next if $shortName eq "StructureID.o";
- next if $shortName eq "nodes.o";
- }
- if ($target eq "WebCore") {
- next if $shortName eq "CachedPage.o";
- next if $shortName eq "CachedResource.o";
- next if $shortName eq "Frame.o";
- next if $shortName eq "JSCustomSQLTransactionCallback.o";
- next if $shortName eq "JSEventListener.o";
- next if $shortName eq "Node.o";
- next if $shortName eq "Page.o";
- next if $shortName eq "Range.o";
- next if $shortName eq "RenderObject.o";
- next if $shortName eq "SubresourceLoader.o";
- next if $shortName eq "SVGElementInstance.o";
- next if $shortName eq "bidi.o";
- }
- }
-
- print "$shortName has a global initializer in it! ($file)\n";
- $sawError = 1;
- }
-}
-
-if ($sawError and !$coverageBuild) {
- unlink $executablePath;
- exit 1;
-}
-
-exit 0;
-
-sub touch($)
-{
- my ($path) = @_;
- open(TOUCH, ">", $path) or die "$!";
- close(TOUCH);
-}
diff --git a/WebKitTools/Scripts/check-for-weak-vtables b/WebKitTools/Scripts/check-for-weak-vtables
deleted file mode 100755
index d274b01..0000000
--- a/WebKitTools/Scripts/check-for-weak-vtables
+++ /dev/null
@@ -1,101 +0,0 @@
-#!/usr/bin/perl
-
-# Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# "check-for-weak-vtables" script for WebKit Open Source Project
-
-# Intended to be invoked from an Xcode build step to check if there are
-# any weak vtables in a target.
-
-use warnings;
-use strict;
-
-use File::Basename;
-
-sub touch($);
-
-my $arch = $ENV{'CURRENT_ARCH'};
-my $configuration = $ENV{'CONFIGURATION'};
-my $target = $ENV{'TARGET_NAME'};
-my $variant = $ENV{'CURRENT_VARIANT'};
-my $coverageBuild = $ENV{'WEBKIT_COVERAGE_BUILD'};
-my $debugRoot = $ENV{'WEBKIT_DEBUG_ROOT'};
-
-$arch = $ENV{'NATIVE_ARCH'} if !$arch; # for Xcode 2.1, which does not have CURRENT_ARCH
-$variant = "normal" if !$variant; # for Xcode 2.1, which does not have CURRENT_VARIANT
-
-my $executablePath = "$ENV{'TARGET_BUILD_DIR'}/$ENV{'EXECUTABLE_PATH'}";
-
-my $buildTimestampPath = $ENV{'TARGET_TEMP_DIR'} . "/" . basename($0) . ".timestamp";
-my $buildTimestampAge = -M $buildTimestampPath;
-my $executablePathAge = -M $executablePath;
-
-my $sawError = 0;
-
-if (!defined $executablePathAge || !defined $buildTimestampAge || $executablePathAge > $buildTimestampAge) {
- if (!open NM, "(nm -m '$executablePath' | c++filt | sed 's/^/STDOUT:/') 2>&1 |") {
- print "Could not open $executablePath\n";
- $sawError = 1;
- next;
- }
- my @weakVTableClasses = ();
- while (<NM>) {
- if (/^STDOUT:/) {
- push @weakVTableClasses, $1 if /weak external vtable for (.*)$/;
- } else {
- print STDERR if $_ ne "nm: no name list\n";
- }
- }
- close NM;
- if (@weakVTableClasses) {
- my $shortName = $executablePath;
- $shortName =~ s/.*\///;
-
- print "$shortName has a weak vtable in it ($executablePath)\n";
- print "Fix by making sure the first virtual function in each of these classes is not an inline:\n";
- for my $class (sort @weakVTableClasses) {
- print " $class\n";
- }
- $sawError = 1;
- }
-}
-
-if ($sawError and !$coverageBuild) {
- unlink $executablePath;
- exit 1;
-}
-
-touch($buildTimestampPath);
-
-exit 0;
-
-sub touch($)
-{
- my ($path) = @_;
- open(TOUCH, ">", $path) or die "$!";
- close(TOUCH);
-}
diff --git a/WebKitTools/Scripts/clean-header-guards b/WebKitTools/Scripts/clean-header-guards
deleted file mode 100755
index 2bad046..0000000
--- a/WebKitTools/Scripts/clean-header-guards
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/usr/bin/ruby
-
-require 'find'
-require 'optparse'
-
-options = {}
-OptionParser.new do |opts|
- opts.banner = "Usage: clean-header-guards [options]"
-
- opts.on("--prefix [PREFIX]", "Append a header prefix to all guards") do |prefix|
- options[:prefix] = prefix
- end
-end.parse!
-
-IgnoredFilenamePatterns = [
- # ignore headers which are known not to have guard
- /WebCorePrefix/,
- /ForwardingHeaders/,
- %r|bindings/objc|,
- /vcproj/, # anything inside a vcproj is in the windows wasteland
-
- # we don't own any of these headers
- %r|icu/unicode|,
- %r|platform/graphics/cairo|,
- %r|platform/image-decoders|,
-
- /config.h/ # changing this one sounds scary
-].freeze
-
-IgnoreFileNamesPattern = Regexp.union(*IgnoredFilenamePatterns).freeze
-
-Find::find(".") do |filename|
- next unless filename =~ /\.h$/
- next if filename.match(IgnoreFileNamesPattern)
-
- File.open(filename, "r+") do |file|
- contents = file.read
- match_results = contents.match(/#ifndef (\S+)\n#define \1/s)
- if match_results
- current_guard = match_results[1]
- new_guard = File.basename(filename).sub('.', '_')
- new_guard = options[:prefix] + '_' + new_guard if options[:prefix]
- contents.gsub!(/#{current_guard}\b/, new_guard)
- else
- puts "Ignoring #{filename}, failed to find existing header guards."
- end
- tmp_filename = filename + ".tmp"
- File.open(tmp_filename, "w+") do |new_file|
- new_file.write(contents)
- end
- File.rename tmp_filename, filename
- end
-end
diff --git a/WebKitTools/Scripts/commit-log-editor b/WebKitTools/Scripts/commit-log-editor
deleted file mode 100755
index 939b28c..0000000
--- a/WebKitTools/Scripts/commit-log-editor
+++ /dev/null
@@ -1,189 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Script to put change log comments in as default check-in comment.
-
-use strict;
-use File::Basename;
-use File::Spec;
-use FindBin;
-use lib $FindBin::Bin;
-use VCSUtils;
-use webkitdirs;
-
-my $log = $ARGV[0];
-
-my $baseDir = baseProductDir();
-
-my $editor = $ENV{SVN_LOG_EDITOR};
-if (!$editor) {
- $editor = $ENV{CVS_LOG_EDITOR};
-}
-if (!$editor) {
- my $builtEditorApplication = "$baseDir/Release/Commit Log Editor.app/Contents/MacOS/Commit Log Editor";
- $editor = $builtEditorApplication if -x $builtEditorApplication;
-}
-if (!$editor) {
- my $builtEditorApplication = "$baseDir/Debug/Commit Log Editor.app/Contents/MacOS/Commit Log Editor";
- $editor = $builtEditorApplication if -x $builtEditorApplication;
-}
-if (!$editor) {
- my $installedEditorApplication = "$ENV{HOME}/Applications/Commit Log Editor.app/Contents/MacOS/Commit Log Editor";
- $editor = $installedEditorApplication if -x $installedEditorApplication;
-}
-if (!$editor) {
- $editor = $ENV{EDITOR} || "/usr/bin/vi";
-}
-
-my $inChangesToBeCommitted = !isGit();
-my @changeLogs = ();
-my $logContents = "";
-my $existingLog = 0;
-open LOG, $log or die;
-while (<LOG>) {
- if (isGit()) {
- if (/^# Changes to be committed:$/) {
- $inChangesToBeCommitted = 1;
- } elsif ($inChangesToBeCommitted && /^# \S/) {
- $inChangesToBeCommitted = 0;
- }
- }
-
- $logContents .= $_;
- $existingLog = isGit() && !(/^#/ || /^\s*$/) unless $existingLog;
-
- push @changeLogs, makeFilePathRelative($1) if $inChangesToBeCommitted && (/^M....(.*ChangeLog)$/ || /^#\tmodified: (.*ChangeLog)/) && !/-ChangeLog/;
-}
-close LOG;
-
-# Don't change anything if there's already a log message
-# (as can happen with git-commit --amend)
-exec $editor, @ARGV if $existingLog;
-
-my $topLevel = topLevelSourceDirectory();
-
-my %changeLogSort;
-my %changeLogContents;
-for my $changeLog (@changeLogs) {
- open CHANGELOG, $changeLog or die "Can't open $changeLog";
- my $contents = "";
- my $blankLines = "";
- while (<CHANGELOG>) {
- if (/^\S/) {
- last if $contents;
- }
- if (/\S/) {
- $contents .= $blankLines if $contents;
- $blankLines = "";
- $contents .= $_;
- } else {
- $blankLines .= $_;
- }
- }
- close CHANGELOG;
-
- $changeLog = File::Spec->abs2rel(File::Spec->rel2abs($changeLog), $topLevel);
-
- my $label = dirname($changeLog);
- $label = "top level" unless length $label;
-
- my $sortKey = lc $label;
- if ($label eq "top level") {
- $sortKey = "";
- } elsif ($label eq "Tools") {
- $sortKey = "-, just after top level";
- } elsif ($label eq "WebBrowser") {
- $sortKey = lc "WebKit, WebBrowser after";
- } elsif ($label eq "WebCore") {
- $sortKey = lc "WebFoundation, WebCore after";
- } elsif ($label eq "LayoutTests") {
- $sortKey = lc "~, LayoutTests last";
- }
-
- $changeLogSort{$sortKey} = $label;
- $changeLogContents{$label} = $contents;
-}
-
-my $first = 1;
-open NEWLOG, ">$log.edit" or die;
-for my $sortKey (sort keys %changeLogSort) {
- my $label = $changeLogSort{$sortKey};
- if (keys %changeLogSort > 1) {
- print NEWLOG "\n" if !$first;
- $first = 0;
- print NEWLOG "$label:\n\n";
- }
- print NEWLOG $changeLogContents{$label};
-}
-print NEWLOG $logContents;
-close NEWLOG;
-
-system $editor, "$log.edit";
-
-open NEWLOG, "$log.edit" or exit;
-my $foundComment = 0;
-while (<NEWLOG>) {
- $foundComment = 1 if (/\S/ && !/^CVS:/);
-}
-close NEWLOG;
-
-if ($foundComment) {
- open NEWLOG, "$log.edit" or die;
- open LOG, ">$log" or die;
- while (<NEWLOG>) {
- print LOG;
- }
- close LOG;
- close NEWLOG;
-}
-
-unlink "$log.edit";
-
-sub topLevelSourceDirectory
-{
- if (isGit()) {
- chomp(my $gitDir = `git rev-parse --git-dir`);
- return dirname($gitDir);
- } elsif (isSVN()) {
- open(INFO, "-|", qw(svn info)) or die;
- my ($root, $url);
- while (my $line = <INFO>) {
- if ($line =~ /^Repository Root: (.*)$/) {
- $root = $1;
- } elsif ($line =~ /^URL: (.*)$/) {
- $url = $1;
- }
- }
- close(INFO);
-
- my $path = $url;
- $path =~ s/^\Q$root\E//;
- $path =~ s/^\/?(branches\/[^\/]*|trunk)\/?//;
- return File::Spec->rel2abs(File::Spec->catdir(map { ".." } File::Spec->splitdir($path)));
- }
-}
diff --git a/WebKitTools/Scripts/compare-timing-files b/WebKitTools/Scripts/compare-timing-files
deleted file mode 100755
index 11b470b..0000000
--- a/WebKitTools/Scripts/compare-timing-files
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/usr/bin/perl
-
-# Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# This script takes two files that are lists of timings and compares them.
-
-use warnings;
-use strict;
-use Getopt::Long;
-
-my $usage = "compare-timing-files [-c|--count results] oldFile newFile";
-
-my $count = 1;
-GetOptions("c|count=i" => \$count);
-
-my ($file1, $file2) = @ARGV;
-die "$usage\n" unless ($file1 && $file2 && @ARGV == 2);
-
-my ($oldAverage, $oldRange, $oldRangePercent) = parseResults($file1);
-my ($newAverage, $newRange, $newRangePercent) = parseResults($file2);
-
-print "\n===== $file1 =====\n";
-if ($count == 1) {
- print("fastest run: $oldAverage\n");
-} else {
- print("average of fastest $count runs: $oldAverage\n");
- printf("range of fastest $count runs: %.2f%% (%d)\n", $oldRangePercent, $oldRange);
-}
-
-print "\n===== $file2 =====\n";
-if ($count == 1) {
- print("fastest run: $newAverage\n");
-} else {
- print("average of fastest $count runs: $newAverage\n");
- printf("range of fastest $count runs: %.2f%% (%d)\n", $newRangePercent, $newRange);
-}
-
-my $gainOrLoss = $newAverage <= $oldAverage ? "GAIN" : "LOSS";
-my $difference = abs($newAverage - $oldAverage);
-my $differencePercent = $difference / $oldAverage * 100;
-printf("\nperformance %s of %.2f%% (%.1f / %.1f)\n", $gainOrLoss, $differencePercent, $difference, $oldAverage);
-print "\n";
-
-sub parseResults
-{
- my ($file) = @_;
-
- open(FILE, $file) or die "Couldn't open file: $file";
- my @results = <FILE>;
- close(FILE);
-
- @results = sort(@results);
- my $total = 0;
- for (my $i = 0; $i < $count; $i++) {
- $results[$i] =~ s/\D*//; # cut out non-digits
- $total += $results[$i];
- }
- my $average = $total / $count;
- my $range = $results[$count - 1] - $results[0];
- my $rangePercent = $range / $results[$count - 1] * 100;
-
- return ($average, $range, $rangePercent);
-}
-
diff --git a/WebKitTools/Scripts/create-exports b/WebKitTools/Scripts/create-exports
deleted file mode 100755
index c645d55..0000000
--- a/WebKitTools/Scripts/create-exports
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/perl -w
-
-while (<>) {
- print "$1\n" if /^\s*\"(.+)\", referenced from:$/;
-}
diff --git a/WebKitTools/Scripts/debug-safari b/WebKitTools/Scripts/debug-safari
deleted file mode 100755
index 52e97fe..0000000
--- a/WebKitTools/Scripts/debug-safari
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2007 Apple Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Script to run Safari in the platform's debugger for the WebKit Open Source Project.
-
-use strict;
-use FindBin;
-use lib $FindBin::Bin;
-use webkitdirs;
-
-setConfiguration();
-
-exit exitStatus(runSafari(1));
diff --git a/WebKitTools/Scripts/do-file-rename b/WebKitTools/Scripts/do-file-rename
deleted file mode 100755
index ac5099e..0000000
--- a/WebKitTools/Scripts/do-file-rename
+++ /dev/null
@@ -1,115 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2006, 2008 Apple Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Script to do file renaming.
-
-use strict;
-use FindBin;
-use lib $FindBin::Bin;
-use webkitdirs;
-use File::Find;
-
-setConfiguration();
-chdirWebKit();
-
-my %words;
-
-# find all files we want to process
-
-my @paths;
-find(\&wanted, "JavaScriptCore");
-find(\&wanted, "JavaScriptGlue");
-find(\&wanted, "WebCore");
-find(\&wanted, "WebKit");
-
-sub wanted
-{
- my $file = $_;
-
- if ($file eq "icu") {
- $File::Find::prune = 1;
- return;
- }
-
- if ($file =~ /^\../) {
- $File::Find::prune = 1;
- return;
- }
-
- return if $file =~ /^ChangeLog/;
- return if -d $file;
-
- push @paths, $File::Find::name;
-}
-
-my %renames = (
-);
-
-my %renamesContemplatedForTheFuture = (
-);
-
-# rename files
-
-my %newFile;
-for my $file (sort @paths) {
- my $f = $file;
- $f = "$1$renames{$2}" if $f =~ /^(.*\/)(\w+\.\w+)$/ && $renames{$2};
- $newFile{$file} = $f if $f ne $file;
-}
-
-for my $file (sort @paths) {
- if ($newFile{$file}) {
- my $newFile = $newFile{$file};
- print "Renaming $file to $newFile\n";
- system "svn move $file $newFile";
- }
-}
-
-# change all file contents
-
-for my $file (sort @paths) {
- $file = $newFile{$file} if $newFile{$file};
- my $contents;
- {
- local $/;
- open FILE, $file or die;
- $contents = <FILE>;
- close FILE;
- }
- my $newContents = $contents;
-
- for my $from (keys %renames) {
- $newContents =~ s/\b\Q$from\E(?!\w)/$renames{$from}/g; # this " unconfuses Xcode syntax highlighting
- }
-
- if ($newContents ne $contents) {
- open FILE, ">", $file or die;
- print FILE $newContents;
- close FILE;
- }
-}
diff --git a/WebKitTools/Scripts/do-webcore-rename b/WebKitTools/Scripts/do-webcore-rename
deleted file mode 100755
index edfe2dc..0000000
--- a/WebKitTools/Scripts/do-webcore-rename
+++ /dev/null
@@ -1,199 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Script to do a rename in JavaScriptCore, WebCore, and WebKit.
-
-use strict;
-use FindBin;
-use lib $FindBin::Bin;
-use webkitdirs;
-use File::Find;
-
-setConfiguration();
-chdirWebKit();
-
-my %words;
-
-# find all files we want to process
-
-my @paths;
-find(\&wanted, "JavaScriptCore");
-find(\&wanted, "JavaScriptGlue");
-find(\&wanted, "WebCore");
-find(\&wanted, "WebKit");
-
-sub wanted
-{
- my $file = $_;
-
- if ($file eq "icu") {
- $File::Find::prune = 1;
- return;
- }
-
- if ($file =~ /^\../) {
- $File::Find::prune = 1;
- return;
- }
-
- return if $file =~ /^ChangeLog/;
- return if -d $file;
-
- push @paths, $File::Find::name;
-}
-
-my %renames = (
-);
-
-my %renamesContemplatedForTheFuture = (
- "StructureID" => "Structure",
- "StructureIDChain" => "StructureChain",
- "StructureIDs" => "Structures",
- "StructureID_h" => "Structure_h",
- "StructureIDChain_h" => "StructureChain_h",
- "activationStructureID" => "activationStructure",
- "createStructureID" => "createStructure",
- "currStructureID" => "currStructure",
- "derefStructureIDs" => "derefStructures",
- "liveStructureIDSet" => "liveStructureSet",
- "m_structureID" => "mm_structure",
- "newStructureID" => "newStructureID",
- "numberStructureID" => "numberStructure",
- "oldStructureID" => "oldStructure",
- "printStructureIDs" => "printStructures",
- "refStructureIDs" => "refStructures",
- "repatchGetByIdDefaultStructureID" => "repatchGetByIdDefaultStructure",
- "repatchOffsetGetByIdStructureID" => "repatchOffsetGetByIdStructure",
- "repatchOffsetPutByIdStructureID" => "repatchOffsetPutByIdStructure",
- "sIDC" => "chain",
- "setCachedStructureID" => "setCachedStructureID",
- "staticScopeStructureID" => "staticScopeStructure",
- "stringStructureID" => "stringStructure",
- "structureID" => "structure",
- "structureIDAddr" => "structureAddress",
- "structureIDChain" => "structureChain",
- "structureIDCounter" => "structureCounter",
- "structureIDInstructionIndex" => "structureInstructionIndex",
- "structureIDInstructions" => "structureInstructions",
-
- "DOMObject" => "JSDOMObject",
-
- "runtimeObjectGetter" => "pluginElementGetter",
- "runtimeObjectPropertyGetter" => "pluginElementPropertyGetter",
- "runtimeObjectCustomGetOwnPropertySlot" => "pluginElementCustomGetOwnPropertySlot",
- "runtimeObjectCustomPut" => "pluginElementCustomPut",
- "runtimeObjectImplementsCall" => "pluginElementImplementsCall",
- "runtimeObjectCallAsFunction" => "pluginElementCallAsFunction",
-
- "CLONE_CONTENTS" => "Clone",
- "DELETE_CONTENTS" => "Delete",
- "EXTRACT_CONTENTS" => "Extract",
-
- "DateInstance" => "JSDate",
- "ErrorInstance" => "JSError",
-
- "ImageConstructorImp" => "JSImageConstructor",
- "Navigator" => "JSNavigator",
-
- "JSHTMLOptionElementConstructor" => "JSOptionConstructor",
- "XSLTProcessorPrototypeTable" => "JSXSLTProcessorPrototypeTable",
-
- "KURL" => "URL",
- "KURLCFNet" => "URLCF",
- "KURLHash" => "URLHash",
- "KURLMac" => "URLMac",
- "KURL_H_" => "URL_h",
-
- "ThreadSafeShared" => "ThreadSafeRefCounted",
- "TreeShared" => "TreeRefCounted",
-
- "StringImpl" => "SharedString",
-
- "RenderView" => "RenderViewport",
-
- "ObjcFallbackObjectImp" => "ObjCFallbackObject",
- "RuntimeObjectImp" => "ForeignObject",
-
- "equalIgnoringCase" => "equalFoldingCase",
-
- "FTPDirectoryTokenizer" => "FTPDirectoryDocumentBuilder",
- "HTMLTokenizer" => "HTMLDocumentBuilder",
- "ImageTokenizer" => "ImageDocumentBuilder",
- "PluginTokenizer" => "PluginDocumentBuilder",
- "TextTokenizer" => "TextDocumentBuilder",
- "Tokenizer" => "DocumentBuilder",
- "Tokenizer_h" => "DocumentBuilder_h",
- "XMLTokenizer" => "XMLDocumentBuilder",
- "isHTMLTokenizer" => "isHTMLDocumentBuilder",
- "m_tokenizer" => "m_builder",
- "createTokenizer" => "createBuilder",
- "tokenizerProcessedData" => "documentBuilderProcessedData",
-);
-
-# rename files
-
-my %newFile;
-for my $file (sort @paths) {
- my $f = $file;
- $f = "$1$renames{$2}$3" if $f =~ /^(.*\/)(\w+)(\.\w+)$/ && $renames{$2};
- if ($f ne $file) {
- $newFile{$file} = $f;
- }
-}
-
-for my $file (sort @paths) {
- if ($newFile{$file}) {
- my $newFile = $newFile{$file};
- print "Renaming $file to $newFile\n";
- system "svn move $file $newFile";
- }
-}
-
-# change all file contents
-
-for my $file (sort @paths) {
- $file = $newFile{$file} if $newFile{$file};
- my $contents;
- {
- local $/;
- open FILE, $file or die;
- $contents = <FILE>;
- close FILE;
- }
- my $newContents = $contents;
-
- for my $from (keys %renames) {
- $newContents =~ s/\b$from(?!["\w])/$renames{$from}/g; # this " unconfuses Xcode syntax highlighting
- }
-
- if ($newContents ne $contents) {
- open FILE, ">", $file or die;
- print FILE $newContents;
- close FILE;
- }
-}
diff --git a/WebKitTools/Scripts/extract-localizable-strings b/WebKitTools/Scripts/extract-localizable-strings
deleted file mode 100755
index 420624b..0000000
--- a/WebKitTools/Scripts/extract-localizable-strings
+++ /dev/null
@@ -1,351 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# This script is like the genstrings tool (minus most of the options) with these differences.
-#
-# 1) It uses the names UI_STRING and UI_STRING_WITH_KEY for the macros, rather than the macros
-# from NSBundle.h, and doesn't support tables (although they would be easy to add).
-# 2) It supports UTF-8 in key strings (and hence uses "" strings rather than @"" strings;
-# @"" strings only reliably support ASCII since they are decoded based on the system encoding
-# at runtime, so give different results on US and Japanese systems for example).
-# 3) It looks for strings that are not marked for localization, using both macro names that are
-# known to be used for debugging in Intrigue source code and an exceptions file.
-# 4) It finds the files to work on rather than taking them as parameters, and also uses a
-# hardcoded location for both the output file and the exceptions file.
-# It would have been nice to use the project to find the source files, but it's too hard to
-# locate source files after parsing a .pbxproj file.
-
-# The exceptions file has a list of strings in quotes, filenames, and filename/string pairs separated by :.
-
-use strict;
-
-my %isDebugMacro = ( ASSERT_WITH_MESSAGE => 1, LOG_ERROR => 1, ERROR => 1, NSURL_ERROR => 1, FATAL => 1, LOG => 1, LOG_WARNING => 1, UI_STRING_LOCALIZE_LATER => 1, LPCTSTR_UI_STRING_LOCALIZE_LATER => 1, UNLOCALIZED_STRING => 1, UNLOCALIZED_LPCTSTR => 1, dprintf => 1, NSException => 1, NSLog => 1, printf => 1 );
-
-@ARGV >= 1 or die "Usage: extract-localizable-strings <exceptions file> [ directory... ]\nDid you mean to run extract-webkit-localizable-strings instead?\n";
-
-my $exceptionsFile = shift @ARGV;
--f $exceptionsFile or die "Couldn't find exceptions file $exceptionsFile\n";
-
-my $fileToUpdate = shift @ARGV;
--f $fileToUpdate or die "Couldn't find file to update $fileToUpdate\n";
-
-my @directories = ();
-my @directoriesToSkip = ();
-if (@ARGV < 1) {
- push(@directories, ".");
-} else {
- for my $dir (@ARGV) {
- if ($dir =~ /^-(.*)$/) {
- push @directoriesToSkip, $1;
- } else {
- push @directories, $dir;
- }
- }
-}
-
-my $sawError = 0;
-
-my $localizedCount = 0;
-my $keyCollisionCount = 0;
-my $notLocalizedCount = 0;
-my $NSLocalizeCount = 0;
-
-my %exception;
-my %usedException;
-
-if (open EXCEPTIONS, $exceptionsFile) {
- while (<EXCEPTIONS>) {
- chomp;
- if (/^"([^\\"]|\\.)*"$/ or /^[-_\/\w.]+.(h|m|mm|c|cpp)$/ or /^[-_\/\w.]+.(h|m|mm|c|cpp):"([^\\"]|\\.)*"$/) {
- if ($exception{$_}) {
- print "$exceptionsFile:$.:exception for $_ appears twice\n";
- print "$exceptionsFile:$exception{$_}:first appearance\n";
- } else {
- $exception{$_} = $.;
- }
- } else {
- print "$exceptionsFile:$.:syntax error\n";
- }
- }
- close EXCEPTIONS;
-}
-
-my $quotedDirectoriesString = '"' . join('" "', @directories) . '"';
-for my $dir (@directoriesToSkip) {
- $quotedDirectoriesString .= ' -path "' . $dir . '" -prune';
-}
-
-my @files = ( split "\n", `find $quotedDirectoriesString -name "*.h" -o -name "*.m" -o -name "*.mm" -o -name "*.c" -o -name "*.cpp"` );
-
-for my $file (sort @files) {
- next if $file =~ /\/WebLocalizableStrings\.h$/;
- next if $file =~ /\/icu\//;
-
- $file =~ s-^./--;
-
- open SOURCE, $file or die "can't open $file\n";
-
- my $inComment = 0;
-
- my $expected = "";
- my $macroLine;
- my $macro;
- my $UIString;
- my $key;
- my $comment;
-
- my $string;
- my $stringLine;
- my $nestingLevel;
-
- my $previousToken = "";
-
- while (<SOURCE>) {
- chomp;
-
- # Handle continued multi-line comment.
- if ($inComment) {
- next unless s-.*\*/--;
- $inComment = 0;
- }
-
- # Handle all the tokens in the line.
- while (s-^\s*([#\w]+|/\*|//|[^#\w/'"()\[\],]+|.)--) {
- my $token = $1;
-
- if ($token eq "\"") {
- if ($expected and $expected ne "a quoted string") {
- print "$file:$.:ERROR:found a quoted string but expected $expected\n";
- $sawError = 1;
- $expected = "";
- }
- if (s-^(([^\\$token]|\\.)*?)$token--) {
- if (!defined $string) {
- $stringLine = $.;
- $string = $1;
- } else {
- $string .= $1;
- }
- } else {
- print "$file:$.:ERROR:mismatched quotes\n";
- $sawError = 1;
- $_ = "";
- }
- next;
- }
-
- if (defined $string) {
-handleString:
- if ($expected) {
- if (!defined $UIString) {
- # FIXME: Validate UTF-8 here?
- $UIString = $string;
- $expected = ",";
- } elsif (($macro =~ /UI_STRING_KEY$/) and !defined $key) {
- # FIXME: Validate UTF-8 here?
- $key = $string;
- $expected = ",";
- } elsif (!defined $comment) {
- # FIXME: Validate UTF-8 here?
- $comment = $string;
- $expected = ")";
- }
- } else {
- if (defined $nestingLevel) {
- # In a debug macro, no need to localize.
- } elsif ($previousToken eq "#include" or $previousToken eq "#import") {
- # File name, no need to localize.
- } elsif ($previousToken eq "extern" and $string eq "C") {
- # extern "C", no need to localize.
- } elsif ($string eq "") {
- # Empty string can sometimes be localized, but we need not complain if not.
- } elsif ($exception{$file}) {
- $usedException{$file} = 1;
- } elsif ($exception{"\"$string\""}) {
- $usedException{"\"$string\""} = 1;
- } elsif ($exception{"$file:\"$string\""}) {
- $usedException{"$file:\"$string\""} = 1;
- } else {
- print "$file:$stringLine:\"$string\" is not marked for localization\n";
- $notLocalizedCount++;
- }
- }
- $string = undef;
- last if !defined $token;
- }
-
- $previousToken = $token;
-
- if ($token =~ /^NSLocalized/ && $token !~ /NSLocalizedDescriptionKey/ && $token !~ /NSLocalizedStringFromTableInBundle/) {
- print "$file:$.:ERROR:found a use of an NSLocalized macro; not supported\n";
- $nestingLevel = 0 if !defined $nestingLevel;
- $sawError = 1;
- $NSLocalizeCount++;
- } elsif ($token eq "/*") {
- if (!s-^.*?\*/--) {
- $_ = ""; # If the comment doesn't end, discard the result of the line and set flag
- $inComment = 1;
- }
- } elsif ($token eq "//") {
- $_ = ""; # Discard the rest of the line
- } elsif ($token eq "'") {
- if (!s-([^\\]|\\.)'--) { #' <-- that single quote makes the Project Builder editor less confused
- print "$file:$.:ERROR:mismatched single quote\n";
- $sawError = 1;
- $_ = "";
- }
- } else {
- if ($expected and $expected ne $token) {
- print "$file:$.:ERROR:found $token but expected $expected\n";
- $sawError = 1;
- $expected = "";
- }
- if ($token =~ /UI_STRING(_KEY)?$/) {
- $expected = "(";
- $macro = $token;
- $UIString = undef;
- $key = undef;
- $comment = undef;
- $macroLine = $.;
- } elsif ($token eq "(" or $token eq "[") {
- ++$nestingLevel if defined $nestingLevel;
- $expected = "a quoted string" if $expected;
- } elsif ($token eq ",") {
- $expected = "a quoted string" if $expected;
- } elsif ($token eq ")" or $token eq "]") {
- $nestingLevel = undef if defined $nestingLevel && !--$nestingLevel;
- if ($expected) {
- $key = $UIString if !defined $key;
- HandleUIString($UIString, $key, $comment, $file, $macroLine);
- $macro = "";
- $expected = "";
- $localizedCount++;
- }
- } elsif ($isDebugMacro{$token}) {
- $nestingLevel = 0 if !defined $nestingLevel;
- }
- }
- }
-
- }
-
- goto handleString if defined $string;
-
- if ($expected) {
- print "$file:ERROR:reached end of file but expected $expected\n";
- $sawError = 1;
- }
-
- close SOURCE;
-}
-
-my %stringByKey;
-my %commentByKey;
-my %fileByKey;
-my %lineByKey;
-
-sub HandleUIString
-{
- my ($string, $key, $comment, $file, $line) = @_;
-
- my $bad = 0;
- if (grep { $_ == 0xFFFD } unpack "U*", $string) {
- print "$file:$line:ERROR:string for translation has illegal UTF-8 -- most likely a problem with the Text Encoding of the source file\n";
- $bad = 1;
- }
- if ($string ne $key && grep { $_ == 0xFFFD } unpack "U*", $key) {
- print "$file:$line:ERROR:key has illegal UTF-8 -- most likely a problem with the Text Encoding of the source file\n";
- $bad = 1;
- }
- if (grep { $_ == 0xFFFD } unpack "U*", $comment) {
- print "$file:$line:ERROR:comment for translation has illegal UTF-8 -- most likely a problem with the Text Encoding of the source file\n";
- $bad = 1;
- }
- if ($bad) {
- $sawError = 1;
- return;
- }
-
- if ($stringByKey{$key} && $stringByKey{$key} ne $string) {
- print "$file:$line:encountered the same key, \"$key\", twice, with different strings\n";
- print "$fileByKey{$key}:$lineByKey{$key}:previous occurrence\n";
- $keyCollisionCount++;
- return;
- }
- if ($commentByKey{$key} && $commentByKey{$key} ne $comment) {
- print "$file:$line:encountered the same key, \"$key\", twice, with different comments\n";
- print "$fileByKey{$key}:$lineByKey{$key}:previous occurrence\n";
- $keyCollisionCount++;
- return;
- }
-
- $fileByKey{$key} = $file;
- $lineByKey{$key} = $line;
- $stringByKey{$key} = $string;
- $commentByKey{$key} = $comment;
-}
-
-print "\n" if $sawError || $notLocalizedCount || $NSLocalizeCount;
-
-my @unusedExceptions = sort grep { !$usedException{$_} } keys %exception;
-if (@unusedExceptions) {
- for my $unused (@unusedExceptions) {
- print "$exceptionsFile:$exception{$unused}:exception $unused not used\n";
- }
- print "\n";
-}
-
-print "$localizedCount localizable strings\n" if $localizedCount;
-print "$keyCollisionCount key collisions\n" if $keyCollisionCount;
-print "$notLocalizedCount strings not marked for localization\n" if $notLocalizedCount;
-print "$NSLocalizeCount uses of NSLocalize\n" if $NSLocalizeCount;
-print scalar(@unusedExceptions), " unused exceptions\n" if @unusedExceptions;
-
-if ($sawError) {
- print "\nErrors encountered. Exiting without writing to $fileToUpdate.\n";
- exit 1;
-}
-
-my $localizedStrings = "";
-
-for my $key (sort keys %commentByKey) {
- $localizedStrings .= "/* $commentByKey{$key} */\n\"$key\" = \"$stringByKey{$key}\";\n\n";
-}
-
-# Write out the strings file in UTF-16 with a BOM.
-utf8::decode($localizedStrings) if $^V ge chr(5).chr(8);
-my $output = pack "n*", (0xFEFF, unpack "U*", $localizedStrings);
-
-if (-e "$fileToUpdate") {
- open STRINGS, ">", "$fileToUpdate" or die;
- print STRINGS $output;
- close STRINGS;
-} else {
- print "$fileToUpdate does not exist\n";
- exit 1;
-}
diff --git a/WebKitTools/Scripts/find-extra-includes b/WebKitTools/Scripts/find-extra-includes
deleted file mode 100755
index 1286cd5..0000000
--- a/WebKitTools/Scripts/find-extra-includes
+++ /dev/null
@@ -1,102 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# "find-extra-includes" script for Web Kit Open Source Project
-
-use strict;
-use File::Find;
-
-find(\&wanted, @ARGV ? @ARGV : ".");
-
-my %paths;
-my %includes;
-
-sub wanted
-{
- my $file = $_;
-
- if ($file eq "icu") {
- $File::Find::prune = 1;
- return;
- }
-
- if ($file !~ /^\./ && $file =~ /\.(h|cpp|c|mm|m)$/) {
- $paths{$file} = $File::Find::name;
- open FILE, $file or die;
- while (<FILE>) {
- if (m-^\s*#\s*(include|import)\s+["<]((\S+/)*)(\S+)[">]-) {
- my $include = ($2 eq "sys/" ? $2 : "") . $4;
- $includes{$file}{$include}++;
- }
- }
- close FILE;
- }
-}
-
-my %totalIncludes;
-
-sub fillOut
-{
- my ($file) = @_;
-
- return if defined $totalIncludes{$file};
-
- for my $include (keys %{ $includes{$file} }) {
- $totalIncludes{$file}{$include} = 1;
- fillOut($include);
- for my $i (keys %{ $totalIncludes{$include} }) {
- $totalIncludes{$file}{$i} = 1;
- }
- }
-}
-
-sub check
-{
- my ($file) = @_;
-
- for my $include (keys %{ $includes{$file} }) {
- fillOut($include);
- }
- for my $i1 (sort keys %{ $includes{$file} }) {
- for my $i2 (keys %{ $includes{$file} }) {
- next if $i1 eq $i2;
- if ($totalIncludes{$i2}{$i1}) {
- my $b1 = $i1;
- my $b2 = $file;
- $b1 =~ s/\..+$//;
- $b2 =~ s/\..+$//;
- print "$paths{$file} does not need to include $i1, because $i2 does\n" if $b1 ne $b2;
- last;
- }
- }
- }
-}
-
-for my $file (sort keys %includes) {
- check($file);
-}
diff --git a/WebKitTools/Scripts/find-included-framework-headers b/WebKitTools/Scripts/find-included-framework-headers
deleted file mode 100755
index 3e7aaf6..0000000
--- a/WebKitTools/Scripts/find-included-framework-headers
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-
-FILE_EXTENSIONS_TO_SEARCH="cpp h m mm"
-
-for framework in $*; do
- echo -e "\n$framework\n=================="
- for ext in ${FILE_EXTENSIONS_TO_SEARCH}; do
- find . -name "*.$ext" -exec grep $framework {} ';' | grep '\(include\|import\)' | sed -e 's|.*/\(.*\.h\).*|\1|'
- done | sort | uniq
-done
diff --git a/WebKitTools/Scripts/gdb-safari b/WebKitTools/Scripts/gdb-safari
deleted file mode 100755
index f87f965..0000000
--- a/WebKitTools/Scripts/gdb-safari
+++ /dev/null
@@ -1,83 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Simplified "run under gdb" script for WebKit Open Source Project.
-
-use strict;
-use File::Temp qw/:mktemp/;
-use FindBin;
-use Getopt::Long;
-use lib $FindBin::Bin;
-use webkitdirs;
-
-my $programName = basename($0);
-my $showHelp = 0;
-my $run64Bit;
-
-my $usage = <<EOF;
-Usage: $programName [options]
- --help Show this help message
- --64-bit Run in 64-bit mode
-EOF
-
-my $getOptionsResult = GetOptions(
- 'help' => \$showHelp,
- '64-bit!' => \$run64Bit
-);
-
-if (!$getOptionsResult || $showHelp) {
- print STDERR $usage;
- exit 1;
-}
-
-setRun64Bit($run64Bit);
-setConfiguration();
-my $productDir = productDir();
-my $safariPath = safariPath();
-
-# Check to see that gdb is in the usual place.
-my $gdbPath = "/usr/bin/gdb";
-die "Can't find gdb executable. Is gdb installed?\n" unless -x $gdbPath;
-
-# Check to see that all the frameworks are built.
-checkFrameworks();
-
-# Put a command to set DYLD_FRAMEWORK_PATH in a temp file.
-# Also set WEBKIT_UNSET_DYLD_FRAMEWORK_PATH to YES in this environment, so that
-# executables launched by Safari don't inherit using the new frameworks.
-my ($fh, $path) = mkstemp("/tmp/gdb-safari-XXXX");
-print $fh "set env DYLD_FRAMEWORK_PATH $productDir\n";
-print $fh "set env WEBKIT_UNSET_DYLD_FRAMEWORK_PATH YES\n";
-
-my @architectureFlags = ("-arch", preferredArchitecture()) if isOSX();
-# Start up Safari.
-print "Start Safari under gdb with DYLD_FRAMEWORK_PATH set to point to built WebKit in $productDir.\n";
-exec $gdbPath, "-x", $path, @architectureFlags, $safariPath or die;
-
-# Delete the temporary file.
-unlink0($fh, $path) or die "Error unlinking file $path safely";
diff --git a/WebKitTools/Scripts/generate-coverage-data b/WebKitTools/Scripts/generate-coverage-data
deleted file mode 100644
index 7ed36aa..0000000
--- a/WebKitTools/Scripts/generate-coverage-data
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2005, 2006 Apple Computer, Inc. All rights reserved.
-# Copyright (C) 2007 Holger Hans Peter Freyther. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Simple script to build, run and visualize coverage information
-
-use strict;
-use File::Basename;
-use File::Spec;
-use FindBin;
-use Getopt::Long qw(:config pass_through);
-use lib $FindBin::Bin;
-use webkitdirs;
-use POSIX;
-
-# Generate a name for our results
-my $svnVersion = determineCurrentSVNRevision();
-my @timeData = localtime(time);
-my $resultName = $svnVersion . "-" . join('_', @timeData);
-my @otherOptions = ();
-
-# Move to the source directory
-# Delete old gcov files
-# Compile WebKit and run the tests
-# Generate the coverage graph...
-# Upload
-
-$ENV{'WEBKIT_COVERAGE_BUILD'} = 1;
-chdirWebKit();
-
-# Clean-up old files
-print "Cleaning up\n";
-system("if [ -d WebKitBuild ]; then find WebKitBuild -name '*.gcda' -delete; fi;") == 0 or die;
-
-
-print "Building and testing\n";
-system("WebKitTools/Scripts/build-webkit", "--coverage", @ARGV) == 0 or die;
-system "WebKitTools/Scripts/run-webkit-tests", "--no-launch-safari";
-system "WebKitTools/Scripts/run-javascriptcore-tests", "--coverage", @ARGV;
-
-# Collect the data and generate a report
-print "Collecting coverage data\n";
-system("WebKitTools/CodeCoverage/run-generate-coverage-data", $resultName, "WebKitBuild/Coverage") == 0 or die;
-system("WebKitTools/CodeCoverage/regenerate-coverage-display", "WebKitBuild/Coverage", "WebKitBuild/Coverage/html") == 0 or die;
-
-print "Done\n";
diff --git a/WebKitTools/Scripts/make-js-test-wrappers b/WebKitTools/Scripts/make-js-test-wrappers
deleted file mode 100755
index 4ac21ea..0000000
--- a/WebKitTools/Scripts/make-js-test-wrappers
+++ /dev/null
@@ -1,159 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Script to generate HTML wrappers for JavaScript tests from templates
-
-use strict;
-
-use FindBin;
-use lib $FindBin::Bin;
-
-use File::Basename;
-use File::Find;
-use Getopt::Long;
-use webkitdirs;
-
-sub directoryFilter;
-sub findTemplateFiles(@);
-
-my $showHelp;
-
-my $result = GetOptions(
- "help" => \$showHelp,
-);
-
-if (!$result || $showHelp) {
- print STDERR basename($0) . " [-h|--help] [path ...]\n";
- exit 1;
-}
-
-setConfiguration();
-my $productDir = productDir();
-
-chdirWebKit();
-
-my @templates = findTemplateFiles(@ARGV);
-
-for my $tfile (@templates) {
-
- my $tpath = $tfile;
- $tpath =~ s:/resources/TEMPLATE.html$::;
-
- print "${tpath}\n";
-
- chdirWebKit();
- chdir($tpath);
-
- my @files;
- my $fileFilter = sub {
- push @files, $File::Find::name if substr($_, -3) eq ".js";
- };
- find({ preprocess => \&directoryFilter, wanted => $fileFilter }, "resources");
-
- open TEMPLATE, "<resources/TEMPLATE.html";
- my $template = do { local $/; <TEMPLATE> };
- close TEMPLATE;
-
- my $templateNegative = $template;
- if (-e "resources/TEMPLATE-n.html") {
- open TEMPLATE, "<resources/TEMPLATE-n.html";
- $templateNegative = do { local $/; <TEMPLATE> };
- close TEMPLATE;
- }
-
- for my $file (@files) {
- next if $file =~ /js-test-.*\.js$/;
- next if $file =~ /SVGTestCase\.js/;
-
- next if $file =~ m:resources/NSResolver-exceptions\.js$:;
- next if $file =~ m:resources/attr-case-sensitivity\.js$:;
- next if $file =~ m:resources/codegen-temporaries-multiple-global-blocks-1\.js$:;
- next if $file =~ m:resources/codegen-temporaries-multiple-global-blocks-2\.js$:;
- next if $file =~ m:resources/constructors-cached-navigate\.js$:;
- next if $file =~ m:resources/frame-loading-via-document-write\.js$:;
- next if $file =~ m:resources/id-fastpath-almost-strict\.js$:;
- next if $file =~ m:resources/id-fastpath-strict\.js$:;
- next if $file =~ m:resources/intersectsNode\.js$:;
- next if $file =~ m:resources/p-in-scope\.js$:;
- next if $file =~ m:resources/script-element-gc\.js$:;
- next if $file =~ m:resources/script-element-gc\.js$:;
- next if $file =~ m:resources/script3\.js$:;
- next if $file =~ m:resources/script4\.js$:;
- next if $file =~ m:resources/script5\.js$:;
- next if $file =~ m:resources/select-options-remove\.js$:;
- next if $file =~ m:resources/shadow-offset\.js$:;
- next if $file =~ m:resources/tabindex-focus-blur-all\.js$:;
- next if $file =~ m:resources/use-instanceRoot-event-bubbling\.js$:;
- next if $file =~ m:resources/use-instanceRoot-event-listeners\.js$:;
- next if $file =~ m:resources/wrapper-identity-base\.js$:;
- next if $file =~ m:resources/xhtml-scripts\.js$:;
-
- my $html = $file;
- $html =~ s:resources/(.*)\.js:$1.html:;
- next if -f "$html-disabled";
-
- system("grep -q 'successfullyParsed =' $file");
- if ($? != 0) {
- `echo "" >> "${file}"`;
- `echo "var successfullyParsed = true;" >> "${file}"`;
- }
-
- print " ${html}\n";
- open HTML, ">$html";
- my $output = ($file =~ /-n\.js/) ? $templateNegative : $template;
- $output =~ s:YOUR_JS_FILE_HERE:$file:;
- print HTML $output;
-
- close HTML;
- }
-}
-
-exit 0;
-
-sub directoryFilter
-{
- return () if basename($File::Find::dir) eq ".svn";
- return @_;
-}
-
-sub findTemplateFiles(@) {
- my @args = @_;
- my @templateFiles;
-
- push @args, "LayoutTests" if scalar(@args) == 0;
-
- my @paths = map { -f $_ ? dirname($_) : $_ } @args;
-
- my $fileFilter = sub {
- push @templateFiles, $File::Find::name if $_ eq "TEMPLATE.html";
- };
-
- find({ preprocess => \&directoryFilter, wanted => $fileFilter }, @paths);
-
- return @templateFiles;
-}
diff --git a/WebKitTools/Scripts/num-cpus b/WebKitTools/Scripts/num-cpus
deleted file mode 100755
index c5f28a1..0000000
--- a/WebKitTools/Scripts/num-cpus
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use warnings;
-
-use Win32API::Registry 0.21 qw( :ALL );
-
-
-my $key;
-my $i = 0;
-while (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\$i", 0, KEY_READ, $key)) {
- $i++;
- RegCloseKey($key);
-}
-
-print "$i\n";
diff --git a/WebKitTools/Scripts/parallelcl b/WebKitTools/Scripts/parallelcl
deleted file mode 100755
index 532079f..0000000
--- a/WebKitTools/Scripts/parallelcl
+++ /dev/null
@@ -1,224 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use warnings;
-
-use File::Basename;
-use File::Spec;
-use File::Temp;
-use POSIX;
-
-sub makeJob(\@$);
-sub forkAndCompileFiles(\@$);
-sub Exec($);
-sub waitForChild(\@);
-sub cleanup(\@);
-
-my $debug = 0;
-
-chomp(my $clexe = `cygpath -u '$ENV{'VS80COMNTOOLS'}/../../VC/bin/cl.exe'`);
-
-if ($debug) {
- print STDERR "Received " . @ARGV . " arguments:\n";
- foreach my $arg (@ARGV) {
- print STDERR "$arg\n";
- }
-}
-
-my $commandFile;
-foreach my $arg (@ARGV) {
- if ($arg =~ /^[\/-](E|EP|P)$/) {
- print STDERR "The invoking process wants preprocessed source, so let's hand off this whole command to the real cl.exe\n" if $debug;
- Exec("\"$clexe\" \"" . join('" "', @ARGV) . "\"");
- } elsif ($arg =~ /^@(.*)$/) {
- chomp($commandFile = `cygpath -u '$1'`);
- }
-}
-
-die "No command file specified!" unless $commandFile;
-die "Couldn't find $commandFile!" unless -f $commandFile;
-
-my @sources;
-
-open(COMMAND, '<:raw:encoding(UTF16-LE):crlf:utf8', $commandFile) or die "Couldn't open $commandFile!";
-
-# The first line of the command file contains all the options to cl.exe plus the first (possibly quoted) filename
-my $firstLine = <COMMAND>;
-$firstLine =~ s/\r?\n$//;
-
-# To find the start of the first filename, look for either the last space on the line.
-# If the filename is quoted, the last character on the line will be a quote, so look for the quote before that.
-my $firstFileIndex;
-print STDERR "Last character of first line = '" . substr($firstLine, -1, 1) . "'\n" if $debug;
-if (substr($firstLine, -1, 1) eq '"') {
- print STDERR "First file is quoted\n" if $debug;
- $firstFileIndex = rindex($firstLine, '"', length($firstLine) - 2);
-} else {
- print STDERR "First file is NOT quoted\n" if $debug;
- $firstFileIndex = rindex($firstLine, ' ') + 1;
-}
-
-my $options = substr($firstLine, 0, $firstFileIndex) . join(' ', @ARGV[1 .. $#ARGV]);
-my $possibleFirstFile = substr($firstLine, $firstFileIndex);
-if ($possibleFirstFile =~ /\.(cpp|c)/) {
- push(@sources, $possibleFirstFile);
-} else {
- $options .= " $possibleFirstFile";
-}
-
-print STDERR "######## Found options $options ##########\n" if $debug;
-print STDERR "####### Found first source file $sources[0] ########\n" if @sources && $debug;
-
-# The rest of the lines of the command file just contain source files, one per line
-while (my $source = <COMMAND>) {
- chomp($source);
- $source =~ s/^\s+//;
- $source =~ s/\s+$//;
- push(@sources, $source) if length($source);
-}
-close(COMMAND);
-
-my $numSources = @sources;
-exit unless $numSources > 0;
-
-my $numJobs;
-if ($options =~ s/-j\s*([0-9]+)//) {
- $numJobs = $1;
-} else {
- chomp($numJobs = `num-cpus`);
-}
-
-print STDERR "\n\n####### RUNNING AT MOST $numJobs PARALLEL INSTANCES OF cl.exe ###########\n\n";# if $debug;
-
-# Magic determination of job size
-# The hope is that by splitting the source files up into 2*$numJobs pieces, we
-# won't suffer too much if one job finishes much more quickly than another.
-# However, we don't want to split it up too much due to cl.exe overhead, so set
-# the minimum job size to 5.
-my $jobSize = POSIX::ceil($numSources / (2 * $numJobs));
-$jobSize = $jobSize < 5 ? 5 : $jobSize;
-
-print STDERR "######## jobSize = $jobSize ##########\n" if $debug;
-
-# Sort the source files randomly so that we don't end up with big clumps of large files (aka SVG)
-sub fisher_yates_shuffle(\@)
-{
- my ($array) = @_;
- for (my $i = @{$array}; --$i; ) {
- my $j = int(rand($i+1));
- next if $i == $j;
- @{$array}[$i,$j] = @{$array}[$j,$i];
- }
-}
-
-fisher_yates_shuffle(@sources); # permutes @array in place
-
-my @children;
-my @tmpFiles;
-my $status = 0;
-while (@sources) {
- while (@sources && @children < $numJobs) {
- my $pid;
- my $tmpFile;
- my $job = makeJob(@sources, $jobSize);
- ($pid, $tmpFile) = forkAndCompileFiles(@{$job}, $options);
-
- print STDERR "####### Spawned child with PID $pid and tmpFile $tmpFile ##########\n" if $debug;
- push(@children, $pid);
- push(@tmpFiles, $tmpFile);
- }
-
- $status |= waitForChild(@children);
-}
-
-while (@children) {
- $status |= waitForChild(@children);
-}
-cleanup(@tmpFiles);
-
-exit WEXITSTATUS($status);
-
-
-sub makeJob(\@$)
-{
- my ($files, $jobSize) = @_;
-
- my @job;
- if (@{$files} > ($jobSize * 1.5)) {
- @job = splice(@{$files}, -$jobSize);
- } else {
- # Compile all the remaining files in this job to avoid having a small job later
- @job = splice(@{$files});
- }
-
- return \@job;
-}
-
-sub forkAndCompileFiles(\@$)
-{
- print STDERR "######## forkAndCompileFiles()\n" if $debug;
- my ($files, $options) = @_;
-
- if ($debug) {
- foreach my $file (@{$files}) {
- print STDERR "######## $file\n";
- }
- }
-
- my (undef, $tmpFile) = File::Temp::tempfile('clcommandXXXXX', DIR => File::Spec->tmpdir, OPEN => 0);
-
- my $pid = fork();
- die "Fork failed" unless defined($pid);
-
- unless ($pid) {
- # Child process
- open(TMP, '>:raw:encoding(UTF16-LE):crlf:utf8', $tmpFile) or die "Couldn't open $tmpFile";
- print TMP "$options\n";
- foreach my $file (@{$files}) {
- print TMP "$file\n";
- }
- close(TMP);
-
- chomp(my $winTmpFile = `cygpath -m $tmpFile`);
- Exec "\"$clexe\" \@\"$winTmpFile\"";
- } else {
- return ($pid, $tmpFile);
- }
-}
-
-sub Exec($)
-{
- my ($command) = @_;
-
- print STDERR "Exec($command)\n" if $debug;
-
- exec($command);
-}
-
-sub waitForChild(\@)
-{
- my ($children) = @_;
-
- return unless @{$children};
-
- my $deceased = wait();
- my $status = $?;
- print STDERR "######## Child with PID $deceased finished ###########\n" if $debug;
- for (my $i = 0; $i < @{$children}; $i++) {
- if ($children->[$i] == $deceased) {
- splice(@{$children}, $i, 1);
- last;
- }
- }
-
- return $status;
-}
-
-sub cleanup(\@)
-{
- my ($tmpFiles) = @_;
-
- foreach my $file (@{$tmpFiles}) {
- unlink $file;
- }
-}
diff --git a/WebKitTools/Scripts/parse-malloc-history b/WebKitTools/Scripts/parse-malloc-history
deleted file mode 100755
index 76ca74b..0000000
--- a/WebKitTools/Scripts/parse-malloc-history
+++ /dev/null
@@ -1,154 +0,0 @@
-#!/usr/bin/perl
-
-# Copyright (C) 2007 Apple Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Parses the callstacks in a file with malloc_history formatted content, sorting
-# based on total number of bytes allocated, and filtering based on command-line
-# parameters.
-
-use Getopt::Long;
-use File::Basename;
-
-use strict;
-use warnings;
-
-sub commify($);
-
-sub main()
-{
- my $usage =
- "Usage: " . basename($0) . " [options] malloc_history.txt\n" .
- " --grep-regexp Include only call stacks that match this regular expression.\n" .
- " --byte-minimum Include only call stacks with allocation sizes >= this value.\n" .
- " --merge-regexp Merge all call stacks that match this regular expression.\n" .
- " --merge-depth Merge all call stacks that match at this stack depth and above.\n";
-
- my $grepRegexp = "";
- my $byteMinimum = "";
- my @mergeRegexps = ();
- my $mergeDepth = "";
- my $getOptionsResult = GetOptions(
- "grep-regexp:s" => \$grepRegexp,
- "byte-minimum:i" => \$byteMinimum,
- "merge-regexp:s" => \@mergeRegexps,
- "merge-depth:i" => \$mergeDepth
- );
- my $fileName = $ARGV[0];
- die $usage if (!$getOptionsResult || !$fileName);
-
- open FILE, "<$fileName" or die "bad file: $fileName";
- my @file = <FILE>;
- close FILE;
-
- my %callstacks = ();
- my $byteCountTotal = 0;
-
- for (my $i = 0; $i < @file; $i++) {
- my $line = $file[$i];
- my ($callCount, $byteCount);
-
- next if $line =~ /^\-/;
-
- # First try malloc_history format
- # 6 calls for 664 bytes thread_ffffffff |0x0 | start
- ($callCount, $byteCount) = ($line =~ /(\d+) calls for (\d+) bytes/);
-
- # Then try leaks format
- # Leak: 0x0ac3ca40 size=48
- # 0x00020001 0x00000001 0x00000000 0x00000000 ................
- # Call stack: [thread ffffffff]: | 0x0 | start
- if (!$callCount || !$byteCount) {
- $callCount = 1;
- ($byteCount) = ($line =~ /Leak: [x[:xdigit:]]* size=(\d+)/);
-
- if ($byteCount) {
- while (!($line =~ "Call stack: ")) {
- $i++;
- $line = $file[$i];
- }
- }
- }
-
- # Then give up
- next if (!$callCount || !$byteCount);
-
- $byteCountTotal += $byteCount;
-
- next if ($grepRegexp && !($line =~ $grepRegexp));
-
- my $callstackBegin = 0;
- if ($mergeDepth) {
- # count stack frames backwards from end of callstack
- $callstackBegin = length($line);
- for (my $pipeCount = 0; $pipeCount < $mergeDepth; $pipeCount++) {
- my $rindexResult = rindex($line, "|", $callstackBegin - 1);
- last if $rindexResult == -1;
- $callstackBegin = $rindexResult;
- }
- } else {
- # start at beginning of callstack
- $callstackBegin = index($line, "|");
- }
-
- my $callstack = substr($line, $callstackBegin + 2); # + 2 skips "| "
- for my $regexp (@mergeRegexps) {
- if ($callstack =~ $regexp) {
- $callstack = $regexp . "\n";
- last;
- }
- }
-
- if (!$callstacks{$callstack}) {
- $callstacks{$callstack} = {"callCount" => 0, "byteCount" => 0};
- }
-
- $callstacks{$callstack}{"callCount"} += $callCount;
- $callstacks{$callstack}{"byteCount"} += $byteCount;
- }
-
- my $byteCountTotalReported = 0;
- for my $callstack (sort { $callstacks{$b}{"byteCount"} <=> $callstacks{$a}{"byteCount"} } keys %callstacks) {
- my $callCount = $callstacks{$callstack}{"callCount"};
- my $byteCount = $callstacks{$callstack}{"byteCount"};
- last if ($byteMinimum && $byteCount < $byteMinimum);
-
- $byteCountTotalReported += $byteCount;
- print commify($callCount) . " calls for " . commify($byteCount) . " bytes: $callstack\n";
- }
-
- print "total: " . commify($byteCountTotalReported) . " bytes (" . commify($byteCountTotal - $byteCountTotalReported) . " bytes excluded).\n";
-}
-
-exit(main());
-
-# Copied from perldoc -- please excuse the style
-sub commify($)
-{
- local $_ = shift;
- 1 while s/^([-+]?\d+)(\d{3})/$1,$2/;
- return $_;
-}
diff --git a/WebKitTools/Scripts/pdevenv b/WebKitTools/Scripts/pdevenv
deleted file mode 100755
index 1931211..0000000
--- a/WebKitTools/Scripts/pdevenv
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/perl -w
-
-use strict;
-use warnings;
-
-use File::Temp qw/tempfile/;
-use FindBin;
-
-my ($fh, $path) = tempfile(UNLINK => 0, SUFFIX => '.cmd') or die;
-
-chomp(my $vcBin = `cygpath -w "$FindBin::Bin/../vcbin"`);
-
-print $fh "\@echo off\n\n";
-print $fh "call \"\%VS80COMNTOOLS\%\\vsvars32.bat\"\n\n";
-print $fh "set PATH=$vcBin;\%PATH\%\n\n";
-print $fh "IF EXIST \"\%VSINSTALLDIR\%\\Common7\\IDE\\devenv.com\" (devenv.com /useenv " . join(" ", @ARGV) . ") ELSE ";
-print $fh "VCExpress.exe /useenv " . join(" ", @ARGV) . "\n";
-
-close $fh;
-
-chmod 0755, $path;
-
-chomp($path = `cygpath -w -s '$path'`);
-
-exec("cmd /c \"call $path\"");
diff --git a/WebKitTools/Scripts/prepare-ChangeLog b/WebKitTools/Scripts/prepare-ChangeLog
deleted file mode 100755
index ff4ce80..0000000
--- a/WebKitTools/Scripts/prepare-ChangeLog
+++ /dev/null
@@ -1,1436 +0,0 @@
-#!/usr/bin/perl -w
-# -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-
-#
-# Copyright (C) 2000, 2001 Eazel, Inc.
-# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Apple Inc. All rights reserved.
-#
-# prepare-ChangeLog is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public
-# License as published by the Free Software Foundation; either
-# version 2 of the License, or (at your option) any later version.
-#
-# prepare-ChangeLog is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public
-# License along with this program; if not, write to the Free
-# Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-#
-
-
-# Perl script to create a ChangeLog entry with names of files
-# and functions from a diff.
-#
-# Darin Adler <darin@bentspoon.com>, started 20 April 2000
-# Java support added by Maciej Stachowiak <mjs@eazel.com>
-# Objective-C, C++ and Objective-C++ support added by Maciej Stachowiak <mjs@apple.com>
-# Git support added by Adam Roben <aroben@apple.com>
-
-
-#
-# TODO:
-# List functions that have been removed too.
-# Decide what a good logical order is for the changed files
-# other than a normal text "sort" (top level first?)
-# (group directories?) (.h before .c?)
-# Handle yacc source files too (other languages?).
-# Help merge when there are ChangeLog conflicts or if there's
-# already a partly written ChangeLog entry.
-# Add command line option to put the ChangeLog into a separate
-# file or just spew it out stdout.
-# Add SVN version numbers for commit (can't do that until
-# the changes are checked in, though).
-# Work around diff stupidity where deleting a function that starts
-# with a comment makes diff think that the following function
-# has been changed (if the following function starts with a comment
-# with the same first line, such as /**)
-# Work around diff stupidity where deleting an entire function and
-# the blank lines before it makes diff think you've changed the
-# previous function.
-
-use strict;
-use warnings;
-
-use File::Basename;
-use File::Spec;
-use FindBin;
-use Getopt::Long;
-use lib $FindBin::Bin;
-use POSIX qw(strftime);
-use VCSUtils;
-
-sub changeLogDate($);
-sub firstDirectoryOrCwd();
-sub diffFromToString();
-sub diffCommand(@);
-sub statusCommand(@);
-sub createPatchCommand($);
-sub diffHeaderFormat();
-sub findOriginalFileFromSvn($);
-sub generateFileList(\@\@\%);
-sub gitConfig($);
-sub isModifiedStatus($);
-sub isAddedStatus($);
-sub isConflictStatus($);
-sub statusDescription($$);
-sub extractLineRange($);
-sub canonicalizePath($);
-sub testListForChangeLog(@);
-sub get_function_line_ranges($$);
-sub get_function_line_ranges_for_c($$);
-sub get_function_line_ranges_for_java($$);
-sub get_function_line_ranges_for_javascript($$);
-sub method_decl_to_selector($);
-sub processPaths(\@);
-sub reviewerAndDescriptionForGitCommit($);
-
-# Project time zone for Cupertino, CA, US
-my $changeLogTimeZone = "PST8PDT";
-
-my $gitCommit = 0;
-my $gitReviewer = "";
-my $openChangeLogs = 0;
-my $showHelp = 0;
-my $spewDiff = $ENV{"PREPARE_CHANGELOG_DIFF"};
-my $updateChangeLogs = 1;
-my $parseOptionsResult =
- GetOptions("diff|d!" => \$spewDiff,
- "git-commit:s" => \$gitCommit,
- "git-reviewer:s" => \$gitReviewer,
- "help|h!" => \$showHelp,
- "open|o!" => \$openChangeLogs,
- "update!" => \$updateChangeLogs);
-if (!$parseOptionsResult || $showHelp) {
- print STDERR basename($0) . " [-d|--diff] [-h|--help] [-o|--open] [--git-commit=<committish>] [--git-reviewer=<name>] [svndir1 [svndir2 ...]]\n";
- print STDERR " -d|--diff Spew diff to stdout when running\n";
- print STDERR " --git-commit Populate the ChangeLogs from the specified git commit\n";
- print STDERR " --git-reviewer When populating the ChangeLogs from a git commit claim that the spcified name reviewed the change.\n";
- print STDERR " This option is useful when the git commit lacks a Signed-Off-By: line\n";
- print STDERR " -h|--help Show this help message\n";
- print STDERR " -o|--open Open ChangeLogs in an editor when done\n";
- print STDERR " --[no-]update Update ChangeLogs from svn before adding entry (default: update)\n";
- exit 1;
-}
-
-my %paths = processPaths(@ARGV);
-
-my $isGit = isGitDirectory(firstDirectoryOrCwd());
-my $isSVN = isSVNDirectory(firstDirectoryOrCwd());
-
-$isSVN || $isGit || die "Couldn't determine your version control system.";
-
-# Find the list of modified files
-my @changed_files;
-my $changed_files_string;
-my %changed_line_ranges;
-my %function_lists;
-my @conflict_files;
-
-my $SVN = "svn";
-my $GIT = "git";
-
-my %supportedTestExtensions = map { $_ => 1 } qw(html shtml svg xml xhtml pl php);
-my @addedRegressionTests = ();
-my $didChangeRegressionTests = 0;
-
-generateFileList(@changed_files, @conflict_files, %function_lists);
-
-if (!@changed_files && !@conflict_files && !keys %function_lists) {
- print STDERR " No changes found.\n";
- exit 1;
-}
-
-if (@conflict_files) {
- print STDERR " The following files have conflicts. Run prepare-ChangeLog again after fixing the conflicts:\n";
- print STDERR join("\n", @conflict_files), "\n";
- exit 1;
-}
-
-if (@changed_files) {
- $changed_files_string = "'" . join ("' '", @changed_files) . "'";
-
- # For each file, build a list of modified lines.
- # Use line numbers from the "after" side of each diff.
- print STDERR " Reviewing diff to determine which lines changed.\n";
- my $file;
- open DIFF, "-|", diffCommand(@changed_files) or die "The diff failed: $!.\n";
- while (<DIFF>) {
- $file = makeFilePathRelative($1) if $_ =~ diffHeaderFormat();
- if (defined $file) {
- my ($start, $end) = extractLineRange($_);
- if ($start >= 0 && $end >= 0) {
- push @{$changed_line_ranges{$file}}, [ $start, $end ];
- } elsif (/DO_NOT_COMMIT/) {
- print STDERR "WARNING: file $file contains the string DO_NOT_COMMIT, line $.\n";
- }
- }
- }
- close DIFF;
-}
-
-# For each source file, convert line range to function list.
-if (%changed_line_ranges) {
- print STDERR " Extracting affected function names from source files.\n";
- foreach my $file (keys %changed_line_ranges) {
- # Only look for function names in certain source files.
- next unless $file =~ /\.(c|cpp|m|mm|h|java|js)/;
-
- # Find all the functions in the file.
- open SOURCE, $file or next;
- my @function_ranges = get_function_line_ranges(\*SOURCE, $file);
- close SOURCE;
-
- # Find all the modified functions.
- my @functions;
- my %saw_function;
- my @change_ranges = (@{$changed_line_ranges{$file}}, []);
- my @change_range = (0, 0);
- FUNCTION: foreach my $function_range_ref (@function_ranges) {
- my @function_range = @$function_range_ref;
-
- # Advance to successive change ranges.
- for (;; @change_range = @{shift @change_ranges}) {
- last FUNCTION unless @change_range;
-
- # If past this function, move on to the next one.
- next FUNCTION if $change_range[0] > $function_range[1];
-
- # If an overlap with this function range, record the function name.
- if ($change_range[1] >= $function_range[0]
- and $change_range[0] <= $function_range[1]) {
- if (!$saw_function{$function_range[2]}) {
- $saw_function{$function_range[2]} = 1;
- push @functions, $function_range[2];
- }
- next FUNCTION;
- }
- }
- }
-
- # Format the list of functions now.
-
- if (@functions) {
- $function_lists{$file} = "" if !defined $function_lists{$file};
- $function_lists{$file} .= "\n (" . join("):\n (", @functions) . "):";
- }
- }
-}
-
-# Get some parameters for the ChangeLog we are about to write.
-my $date = changeLogDate($changeLogTimeZone);
-my $name = $ENV{CHANGE_LOG_NAME}
- || $ENV{REAL_NAME}
- || gitConfig("user.name")
- || (split /\s*,\s*/, (getpwuid $<)[6])[0]
- || "set REAL_NAME environment variable";
-my $email_address = $ENV{CHANGE_LOG_EMAIL_ADDRESS}
- || $ENV{EMAIL_ADDRESS}
- || gitConfig("user.email")
- || "set EMAIL_ADDRESS environment variable";
-
-if ($gitCommit) {
- $name = `$GIT log --max-count=1 --pretty=\"format:%an\" \"$gitCommit\"`;
- $email_address = `$GIT log --max-count=1 --pretty=\"format:%ae\" \"$gitCommit\"`;
-}
-
-# Remove trailing parenthesized notes from user name (bit of hack).
-$name =~ s/\(.*?\)\s*$//g;
-
-# Find the change logs.
-my %has_log;
-my %files;
-foreach my $file (sort keys %function_lists) {
- my $prefix = $file;
- my $has_log = 0;
- while ($prefix) {
- $prefix =~ s-/[^/]+/?$-/- or $prefix = "";
- $has_log = $has_log{$prefix};
- if (!defined $has_log) {
- $has_log = -f "${prefix}ChangeLog";
- $has_log{$prefix} = $has_log;
- }
- last if $has_log;
- }
- if (!$has_log) {
- print STDERR "No ChangeLog found for $file.\n";
- } else {
- push @{$files{$prefix}}, $file;
- }
-}
-
-# Get the latest ChangeLog files from svn.
-my @logs = ();
-foreach my $prefix (sort keys %files) {
- push @logs, File::Spec->catfile($prefix || ".", "ChangeLog");
-}
-
-if (@logs && $updateChangeLogs && $isSVN) {
- print STDERR " Running 'svn update' to update ChangeLog files.\n";
- open ERRORS, "-|", $SVN, "update", @logs
- or die "The svn update of ChangeLog files failed: $!.\n";
- my @conflictedChangeLogs;
- while (my $line = <ERRORS>) {
- print STDERR " ", $line;
- push @conflictedChangeLogs, $1 if $line =~ m/^C\s+(.+)\s*$/;
- }
- close ERRORS;
-
- if (@conflictedChangeLogs) {
- print STDERR " Attempting to merge conflicted ChangeLogs.\n";
- my $resolveChangeLogsPath = File::Spec->catfile(dirname($0), "resolve-ChangeLogs");
- open RESOLVE, "-|", $resolveChangeLogsPath, "--no-warnings", @conflictedChangeLogs
- or die "Could not open resolve-ChangeLogs script: $!.\n";
- print STDERR " $_" while <RESOLVE>;
- close RESOLVE;
- }
-}
-
-# Write out a new ChangeLog file.
-foreach my $prefix (sort keys %files) {
- my $changeLogPath = File::Spec->catfile($prefix || ".", "ChangeLog");
- print STDERR " Editing the ${changeLogPath} file.\n";
- open OLD_CHANGE_LOG, ${changeLogPath} or die "Could not open ${changeLogPath} file: $!.\n";
- # It's less efficient to read the whole thing into memory than it would be
- # to read it while we prepend to it later, but I like doing this part first.
- my @old_change_log = <OLD_CHANGE_LOG>;
- close OLD_CHANGE_LOG;
- open CHANGE_LOG, "> ${changeLogPath}" or die "Could not write ${changeLogPath}\n.";
- print CHANGE_LOG "$date $name <$email_address>\n\n";
-
- my ($reviewer, $description) = reviewerAndDescriptionForGitCommit($gitCommit) if $gitCommit;
- $reviewer = "NOBODY (OO" . "PS!)" if !$reviewer;
-
- print CHANGE_LOG " Reviewed by $reviewer.\n\n";
- print CHANGE_LOG $description . "\n" if $description;
-
- if ($prefix =~ m/WebCore/ || `pwd` =~ m/WebCore/) {
- if ($didChangeRegressionTests) {
- print CHANGE_LOG testListForChangeLog(sort @addedRegressionTests);
- } else {
- print CHANGE_LOG " WARNING: NO TEST CASES ADDED OR CHANGED\n\n";
- }
- }
-
- foreach my $file (sort @{$files{$prefix}}) {
- my $file_stem = substr $file, length $prefix;
- print CHANGE_LOG " * $file_stem:$function_lists{$file}\n";
- }
- print CHANGE_LOG "\n", @old_change_log;
- close CHANGE_LOG;
-}
-
-# Write out another diff.
-if ($spewDiff && @changed_files) {
- print STDERR " Running diff to help you write the ChangeLog entries.\n";
- local $/ = undef; # local slurp mode
- open DIFF, "-|", createPatchCommand($changed_files_string) or die "The diff failed: $!.\n";
- print <DIFF>;
- close DIFF;
-}
-
-# Open ChangeLogs.
-if ($openChangeLogs && @logs) {
- print STDERR " Opening the edited ChangeLog files.\n";
- my $editor = $ENV{"CHANGE_LOG_EDIT_APPLICATION"};
- if ($editor) {
- system "open", "-a", $editor, @logs;
- } else {
- system "open", "-e", @logs;
- }
-}
-
-# Done.
-exit;
-
-sub canonicalizePath($)
-{
- my ($file) = @_;
-
- # Remove extra slashes and '.' directories in path
- $file = File::Spec->canonpath($file);
-
- # Remove '..' directories in path
- my @dirs = ();
- foreach my $dir (File::Spec->splitdir($file)) {
- if ($dir eq '..' && $#dirs >= 0 && $dirs[$#dirs] ne '..') {
- pop(@dirs);
- } else {
- push(@dirs, $dir);
- }
- }
- return ($#dirs >= 0) ? File::Spec->catdir(@dirs) : ".";
-}
-
-sub changeLogDate($)
-{
- my ($timeZone) = @_;
- my $savedTimeZone = $ENV{'TZ'};
- # Set TZ temporarily so that localtime() is in that time zone
- $ENV{'TZ'} = $timeZone;
- my $date = strftime("%Y-%m-%d", localtime());
- if (defined $savedTimeZone) {
- $ENV{'TZ'} = $savedTimeZone;
- } else {
- delete $ENV{'TZ'};
- }
- return $date;
-}
-
-sub get_function_line_ranges($$)
-{
- my ($file_handle, $file_name) = @_;
-
- if ($file_name =~ /\.(c|cpp|m|mm|h)$/) {
- return get_function_line_ranges_for_c ($file_handle, $file_name);
- } elsif ($file_name =~ /\.java$/) {
- return get_function_line_ranges_for_java ($file_handle, $file_name);
- } elsif ($file_name =~ /\.js$/) {
- return get_function_line_ranges_for_javascript ($file_handle, $file_name);
- }
- return ();
-}
-
-
-sub method_decl_to_selector($)
-{
- (my $method_decl) = @_;
-
- $_ = $method_decl;
-
- if ((my $comment_stripped) = m-([^/]*)(//|/*).*-) {
- $_ = $comment_stripped;
- }
-
- s/,\s*...//;
-
- if (/:/) {
- my @components = split /:/;
- pop @components if (scalar @components > 1);
- $_ = (join ':', map {s/.*[^[:word:]]//; scalar $_;} @components) . ':';
- } else {
- s/\s*$//;
- s/.*[^[:word:]]//;
- }
-
- return $_;
-}
-
-
-
-# Read a file and get all the line ranges of the things that look like C functions.
-# A function name is the last word before an open parenthesis before the outer
-# level open brace. A function starts at the first character after the last close
-# brace or semicolon before the function name and ends at the close brace.
-# Comment handling is simple-minded but will work for all but pathological cases.
-#
-# Result is a list of triples: [ start_line, end_line, function_name ].
-
-sub get_function_line_ranges_for_c($$)
-{
- my ($file_handle, $file_name) = @_;
-
- my @ranges;
-
- my $in_comment = 0;
- my $in_macro = 0;
- my $in_method_declaration = 0;
- my $in_parentheses = 0;
- my $in_braces = 0;
- my $brace_start = 0;
- my $brace_end = 0;
- my $skip_til_brace_or_semicolon = 0;
-
- my $word = "";
- my $interface_name = "";
-
- my $potential_method_char = "";
- my $potential_method_spec = "";
-
- my $potential_start = 0;
- my $potential_name = "";
-
- my $start = 0;
- my $name = "";
-
- my $next_word_could_be_namespace = 0;
- my $potential_namespace = "";
- my @namespaces;
-
- while (<$file_handle>) {
- # Handle continued multi-line comment.
- if ($in_comment) {
- next unless s-.*\*/--;
- $in_comment = 0;
- }
-
- # Handle continued macro.
- if ($in_macro) {
- $in_macro = 0 unless /\\$/;
- next;
- }
-
- # Handle start of macro (or any preprocessor directive).
- if (/^\s*\#/) {
- $in_macro = 1 if /^([^\\]|\\.)*\\$/;
- next;
- }
-
- # Handle comments and quoted text.
- while (m-(/\*|//|\'|\")-) { # \' and \" keep emacs perl mode happy
- my $match = $1;
- if ($match eq "/*") {
- if (!s-/\*.*?\*/--) {
- s-/\*.*--;
- $in_comment = 1;
- }
- } elsif ($match eq "//") {
- s-//.*--;
- } else { # ' or "
- if (!s-$match([^\\]|\\.)*?$match--) {
- warn "mismatched quotes at line $. in $file_name\n";
- s-$match.*--;
- }
- }
- }
-
-
- # continued method declaration
- if ($in_method_declaration) {
- my $original = $_;
- my $method_cont = $_;
-
- chomp $method_cont;
- $method_cont =~ s/[;\{].*//;
- $potential_method_spec = "${potential_method_spec} ${method_cont}";
-
- $_ = $original;
- if (/;/) {
- $potential_start = 0;
- $potential_method_spec = "";
- $potential_method_char = "";
- $in_method_declaration = 0;
- s/^[^;\{]*//;
- } elsif (/{/) {
- my $selector = method_decl_to_selector ($potential_method_spec);
- $potential_name = "${potential_method_char}\[${interface_name} ${selector}\]";
-
- $potential_method_spec = "";
- $potential_method_char = "";
- $in_method_declaration = 0;
-
- $_ = $original;
- s/^[^;{]*//;
- } elsif (/\@end/) {
- $in_method_declaration = 0;
- $interface_name = "";
- $_ = $original;
- } else {
- next;
- }
- }
-
-
- # start of method declaration
- if ((my $method_char, my $method_spec) = m&^([-+])([^0-9;][^;]*);?$&) {
- my $original = $_;
-
- if ($interface_name) {
- chomp $method_spec;
- $method_spec =~ s/\{.*//;
-
- $potential_method_char = $method_char;
- $potential_method_spec = $method_spec;
- $potential_start = $.;
- $in_method_declaration = 1;
- } else {
- warn "declaring a method but don't have interface on line $. in $file_name\n";
- }
- $_ = $original;
- if (/\{/) {
- my $selector = method_decl_to_selector ($potential_method_spec);
- $potential_name = "${potential_method_char}\[${interface_name} ${selector}\]";
-
- $potential_method_spec = "";
- $potential_method_char = "";
- $in_method_declaration = 0;
- $_ = $original;
- s/^[^{]*//;
- } elsif (/\@end/) {
- $in_method_declaration = 0;
- $interface_name = "";
- $_ = $original;
- } else {
- next;
- }
- }
-
-
- # Find function, interface and method names.
- while (m&((?:[[:word:]]+::)*operator(?:[ \t]*\(\)|[^()]*)|[[:word:]:~]+|[(){}:;])|\@(?:implementation|interface|protocol)\s+(\w+)[^{]*&g) {
- # interface name
- if ($2) {
- $interface_name = $2;
- next;
- }
-
- # Open parenthesis.
- if ($1 eq "(") {
- $potential_name = $word unless $in_parentheses || $skip_til_brace_or_semicolon;
- $in_parentheses++;
- next;
- }
-
- # Close parenthesis.
- if ($1 eq ")") {
- $in_parentheses--;
- next;
- }
-
- # C++ constructor initializers
- if ($1 eq ":") {
- $skip_til_brace_or_semicolon = 1 unless ($in_parentheses || $in_braces);
- }
-
- # Open brace.
- if ($1 eq "{") {
- $skip_til_brace_or_semicolon = 0;
-
- if ($potential_namespace) {
- push @namespaces, $potential_namespace;
- $potential_namespace = "";
- next;
- }
-
- # Promote potential name to real function name at the
- # start of the outer level set of braces (function body?).
- if (!$in_braces and $potential_start) {
- $start = $potential_start;
- $name = $potential_name;
- if (@namespaces && (length($name) < 2 || substr($name,1,1) ne "[")) {
- $name = join ('::', @namespaces, $name);
- }
- }
-
- $in_method_declaration = 0;
-
- $brace_start = $. if (!$in_braces);
- $in_braces++;
- next;
- }
-
- # Close brace.
- if ($1 eq "}") {
- if (!$in_braces && @namespaces) {
- pop @namespaces;
- next;
- }
-
- $in_braces--;
- $brace_end = $. if (!$in_braces);
-
- # End of an outer level set of braces.
- # This could be a function body.
- if (!$in_braces and $name) {
- push @ranges, [ $start, $., $name ];
- $name = "";
- }
-
- $potential_start = 0;
- $potential_name = "";
- next;
- }
-
- # Semicolon.
- if ($1 eq ";") {
- $skip_til_brace_or_semicolon = 0;
- $potential_start = 0;
- $potential_name = "";
- $in_method_declaration = 0;
- next;
- }
-
- # Ignore "const" method qualifier.
- if ($1 eq "const") {
- next;
- }
-
- if ($1 eq "namespace" || $1 eq "class" || $1 eq "struct") {
- $next_word_could_be_namespace = 1;
- next;
- }
-
- # Word.
- $word = $1;
- if (!$skip_til_brace_or_semicolon) {
- if ($next_word_could_be_namespace) {
- $potential_namespace = $word;
- $next_word_could_be_namespace = 0;
- } elsif ($potential_namespace) {
- $potential_namespace = "";
- }
-
- if (!$in_parentheses) {
- $potential_start = 0;
- $potential_name = "";
- }
- if (!$potential_start) {
- $potential_start = $.;
- $potential_name = "";
- }
- }
- }
- }
-
- warn "missing close braces in $file_name (probable start at $brace_start)\n" if ($in_braces > 0);
- warn "too many close braces in $file_name (probable start at $brace_end)\n" if ($in_braces < 0);
-
- warn "mismatched parentheses in $file_name\n" if $in_parentheses;
-
- return @ranges;
-}
-
-
-
-# Read a file and get all the line ranges of the things that look like Java
-# classes, interfaces and methods.
-#
-# A class or interface name is the word that immediately follows
-# `class' or `interface' when followed by an open curly brace and not
-# a semicolon. It can appear at the top level, or inside another class
-# or interface block, but not inside a function block
-#
-# A class or interface starts at the first character after the first close
-# brace or after the function name and ends at the close brace.
-#
-# A function name is the last word before an open parenthesis before
-# an open brace rather than a semicolon. It can appear at top level or
-# inside a class or interface block, but not inside a function block.
-#
-# A function starts at the first character after the first close
-# brace or after the function name and ends at the close brace.
-#
-# Comment handling is simple-minded but will work for all but pathological cases.
-#
-# Result is a list of triples: [ start_line, end_line, function_name ].
-
-sub get_function_line_ranges_for_java($$)
-{
- my ($file_handle, $file_name) = @_;
-
- my @current_scopes;
-
- my @ranges;
-
- my $in_comment = 0;
- my $in_macro = 0;
- my $in_parentheses = 0;
- my $in_braces = 0;
- my $in_non_block_braces = 0;
- my $class_or_interface_just_seen = 0;
-
- my $word = "";
-
- my $potential_start = 0;
- my $potential_name = "";
- my $potential_name_is_class_or_interface = 0;
-
- my $start = 0;
- my $name = "";
- my $current_name_is_class_or_interface = 0;
-
- while (<$file_handle>) {
- # Handle continued multi-line comment.
- if ($in_comment) {
- next unless s-.*\*/--;
- $in_comment = 0;
- }
-
- # Handle continued macro.
- if ($in_macro) {
- $in_macro = 0 unless /\\$/;
- next;
- }
-
- # Handle start of macro (or any preprocessor directive).
- if (/^\s*\#/) {
- $in_macro = 1 if /^([^\\]|\\.)*\\$/;
- next;
- }
-
- # Handle comments and quoted text.
- while (m-(/\*|//|\'|\")-) { # \' and \" keep emacs perl mode happy
- my $match = $1;
- if ($match eq "/*") {
- if (!s-/\*.*?\*/--) {
- s-/\*.*--;
- $in_comment = 1;
- }
- } elsif ($match eq "//") {
- s-//.*--;
- } else { # ' or "
- if (!s-$match([^\\]|\\.)*?$match--) {
- warn "mismatched quotes at line $. in $file_name\n";
- s-$match.*--;
- }
- }
- }
-
- # Find function names.
- while (m-(\w+|[(){};])-g) {
- # Open parenthesis.
- if ($1 eq "(") {
- if (!$in_parentheses) {
- $potential_name = $word;
- $potential_name_is_class_or_interface = 0;
- }
- $in_parentheses++;
- next;
- }
-
- # Close parenthesis.
- if ($1 eq ")") {
- $in_parentheses--;
- next;
- }
-
- # Open brace.
- if ($1 eq "{") {
- # Promote potential name to real function name at the
- # start of the outer level set of braces (function/class/interface body?).
- if (!$in_non_block_braces
- and (!$in_braces or $current_name_is_class_or_interface)
- and $potential_start) {
- if ($name) {
- push @ranges, [ $start, ($. - 1),
- join ('.', @current_scopes) ];
- }
-
-
- $current_name_is_class_or_interface = $potential_name_is_class_or_interface;
-
- $start = $potential_start;
- $name = $potential_name;
-
- push (@current_scopes, $name);
- } else {
- $in_non_block_braces++;
- }
-
- $potential_name = "";
- $potential_start = 0;
-
- $in_braces++;
- next;
- }
-
- # Close brace.
- if ($1 eq "}") {
- $in_braces--;
-
- # End of an outer level set of braces.
- # This could be a function body.
- if (!$in_non_block_braces) {
- if ($name) {
- push @ranges, [ $start, $.,
- join ('.', @current_scopes) ];
-
- pop (@current_scopes);
-
- if (@current_scopes) {
- $current_name_is_class_or_interface = 1;
-
- $start = $. + 1;
- $name = $current_scopes[$#current_scopes-1];
- } else {
- $current_name_is_class_or_interface = 0;
- $start = 0;
- $name = "";
- }
- }
- } else {
- $in_non_block_braces-- if $in_non_block_braces;
- }
-
- $potential_start = 0;
- $potential_name = "";
- next;
- }
-
- # Semicolon.
- if ($1 eq ";") {
- $potential_start = 0;
- $potential_name = "";
- next;
- }
-
- if ($1 eq "class" or $1 eq "interface") {
- $class_or_interface_just_seen = 1;
- next;
- }
-
- # Word.
- $word = $1;
- if (!$in_parentheses) {
- if ($class_or_interface_just_seen) {
- $potential_name = $word;
- $potential_start = $.;
- $class_or_interface_just_seen = 0;
- $potential_name_is_class_or_interface = 1;
- next;
- }
- }
- if (!$potential_start) {
- $potential_start = $.;
- $potential_name = "";
- }
- $class_or_interface_just_seen = 0;
- }
- }
-
- warn "mismatched braces in $file_name\n" if $in_braces;
- warn "mismatched parentheses in $file_name\n" if $in_parentheses;
-
- return @ranges;
-}
-
-
-
-# Read a file and get all the line ranges of the things that look like
-# JavaScript functions.
-#
-# A function name is the word that immediately follows `function' when
-# followed by an open curly brace. It can appear at the top level, or
-# inside other functions.
-#
-# An anonymous function name is the identifier chain immediately before
-# an assignment with the equals operator or object notation that has a
-# value starting with `function' followed by an open curly brace.
-#
-# A getter or setter name is the word that immediately follows `get' or
-# `set' when followed by an open curly brace .
-#
-# Comment handling is simple-minded but will work for all but pathological cases.
-#
-# Result is a list of triples: [ start_line, end_line, function_name ].
-
-sub get_function_line_ranges_for_javascript($$)
-{
- my ($fileHandle, $fileName) = @_;
-
- my @currentScopes;
- my @currentIdentifiers;
- my @currentFunctionNames;
- my @currentFunctionDepths;
- my @currentFunctionStartLines;
-
- my @ranges;
-
- my $inComment = 0;
- my $parenthesesDepth = 0;
- my $bracesDepth = 0;
-
- my $functionJustSeen = 0;
- my $getterJustSeen = 0;
- my $setterJustSeen = 0;
- my $assignmentJustSeen = 0;
-
- my $word = "";
-
- while (<$fileHandle>) {
- # Handle continued multi-line comment.
- if ($inComment) {
- next unless s-.*\*/--;
- $inComment = 0;
- }
-
- # Handle comments and quoted text.
- while (m-(/\*|//|\'|\")-) { # \' and \" keep emacs perl mode happy
- my $match = $1;
- if ($match eq '/*') {
- if (!s-/\*.*?\*/--) {
- s-/\*.*--;
- $inComment = 1;
- }
- } elsif ($match eq '//') {
- s-//.*--;
- } else { # ' or "
- if (!s-$match([^\\]|\\.)*?$match--) {
- warn "mismatched quotes at line $. in $fileName\n";
- s-$match.*--;
- }
- }
- }
-
- # Find function names.
- while (m-(\w+|[(){}=:;])-g) {
- # Open parenthesis.
- if ($1 eq '(') {
- $parenthesesDepth++;
- next;
- }
-
- # Close parenthesis.
- if ($1 eq ')') {
- $parenthesesDepth--;
- next;
- }
-
- # Open brace.
- if ($1 eq '{') {
- push(@currentScopes, join(".", @currentIdentifiers));
- @currentIdentifiers = ();
-
- $bracesDepth++;
- next;
- }
-
- # Close brace.
- if ($1 eq '}') {
- $bracesDepth--;
-
- if (@currentFunctionDepths and $bracesDepth == $currentFunctionDepths[$#currentFunctionDepths]) {
- pop(@currentFunctionDepths);
-
- my $currentFunction = pop(@currentFunctionNames);
- my $start = pop(@currentFunctionStartLines);
-
- push(@ranges, [$start, $., $currentFunction]);
- }
-
- pop(@currentScopes);
- @currentIdentifiers = ();
-
- next;
- }
-
- # Semicolon.
- if ($1 eq ';') {
- @currentIdentifiers = ();
- next;
- }
-
- # Function.
- if ($1 eq 'function') {
- $functionJustSeen = 1;
-
- if ($assignmentJustSeen) {
- my $currentFunction = join('.', (@currentScopes, @currentIdentifiers));
- $currentFunction =~ s/\.{2,}/\./g; # Removes consecutive periods.
-
- push(@currentFunctionNames, $currentFunction);
- push(@currentFunctionDepths, $bracesDepth);
- push(@currentFunctionStartLines, $.);
- }
-
- next;
- }
-
- # Getter prefix.
- if ($1 eq 'get') {
- $getterJustSeen = 1;
- next;
- }
-
- # Setter prefix.
- if ($1 eq 'set') {
- $setterJustSeen = 1;
- next;
- }
-
- # Assignment operator.
- if ($1 eq '=' or $1 eq ':') {
- $assignmentJustSeen = 1;
- next;
- }
-
- next if $parenthesesDepth;
-
- # Word.
- $word = $1;
- $word = "get $word" if $getterJustSeen;
- $word = "set $word" if $setterJustSeen;
-
- if (($functionJustSeen and !$assignmentJustSeen) or $getterJustSeen or $setterJustSeen) {
- push(@currentIdentifiers, $word);
-
- my $currentFunction = join('.', (@currentScopes, @currentIdentifiers));
- $currentFunction =~ s/\.{2,}/\./g; # Removes consecutive periods.
-
- push(@currentFunctionNames, $currentFunction);
- push(@currentFunctionDepths, $bracesDepth);
- push(@currentFunctionStartLines, $.);
- } elsif ($word ne 'if' and $word ne 'for' and $word ne 'do' and $word ne 'while' and $word ne 'which' and $word ne 'var') {
- push(@currentIdentifiers, $word);
- }
-
- $functionJustSeen = 0;
- $getterJustSeen = 0;
- $setterJustSeen = 0;
- $assignmentJustSeen = 0;
- }
- }
-
- warn "mismatched braces in $fileName\n" if $bracesDepth;
- warn "mismatched parentheses in $fileName\n" if $parenthesesDepth;
-
- return @ranges;
-}
-
-
-sub processPaths(\@)
-{
- my ($paths) = @_;
- return ("." => 1) if (!@{$paths});
-
- my %result = ();
-
- for my $file (@{$paths}) {
- die "can't handle absolute paths like \"$file\"\n" if File::Spec->file_name_is_absolute($file);
- die "can't handle empty string path\n" if $file eq "";
- die "can't handle path with single quote in the name like \"$file\"\n" if $file =~ /'/; # ' (keep Xcode syntax highlighting happy)
-
- my $untouchedFile = $file;
-
- $file = canonicalizePath($file);
-
- die "can't handle paths with .. like \"$untouchedFile\"\n" if $file =~ m|/\.\./|;
-
- $result{$file} = 1;
- }
-
- return ("." => 1) if ($result{"."});
-
- # Remove any paths that also have a parent listed.
- for my $path (keys %result) {
- for (my $parent = dirname($path); $parent ne '.'; $parent = dirname($parent)) {
- if ($result{$parent}) {
- delete $result{$path};
- last;
- }
- }
- }
-
- return %result;
-}
-
-sub diffFromToString()
-{
- return "" if $isSVN;
- return $gitCommit if $gitCommit =~ m/.+\.\..+/;
- return "\"$gitCommit^\" \"$gitCommit\"" if $gitCommit;
- return "HEAD" if $isGit;
-}
-
-sub diffCommand(@)
-{
- my @paths = @_;
-
- my $pathsString = "'" . join("' '", @paths) . "'";
-
- my $command;
- if ($isSVN) {
- $command = "$SVN diff --diff-cmd diff -x -N $pathsString";
- } elsif ($isGit) {
- $command = "$GIT diff -U0 " . diffFromToString();
- $command .= " -- $pathsString" unless $gitCommit;
- }
-
- return $command;
-}
-
-sub statusCommand(@)
-{
- my @files = @_;
-
- my $filesString = "'" . join ("' '", @files) . "'";
- my $command;
- if ($isSVN) {
- $command = "$SVN stat $filesString";
- } elsif ($isGit) {
- $command = "$GIT diff -r --name-status -C -C -M " . diffFromToString();
- $command .= " -- $filesString" unless $gitCommit;
- }
-
- return "$command 2>&1";
-}
-
-sub createPatchCommand($)
-{
- my ($changedFilesString) = @_;
-
- my $command;
- if ($isSVN) {
- $command = "'$FindBin::Bin/svn-create-patch' $changedFilesString";
- } elsif ($isGit) {
- $command = "$GIT diff -C -C -M " . diffFromToString();
- $command .= " -- $changedFilesString" unless $gitCommit;
- }
-
- return $command;
-}
-
-sub diffHeaderFormat()
-{
- return qr/^Index: (\S+)$/ if $isSVN;
- return qr/^diff --git a\/.+ b\/(.+)$/ if $isGit;
-}
-
-sub findOriginalFileFromSvn($)
-{
- my ($file) = @_;
- my $baseUrl;
- open INFO, "$SVN info . |" or die;
- while (<INFO>) {
- if (/^URL: (.+)/) {
- $baseUrl = $1;
- last;
- }
- }
- close INFO;
- my $sourceFile;
- open INFO, "$SVN info '$file' |" or die;
- while (<INFO>) {
- if (/^Copied From URL: (.+)/) {
- $sourceFile = File::Spec->abs2rel($1, $baseUrl);
- last;
- }
- }
- close INFO;
- return $sourceFile;
-}
-
-sub generateFileList(\@\@\%)
-{
- my ($changedFiles, $conflictFiles, $functionLists) = @_;
- print STDERR " Running status to find changed, added, or removed files.\n";
- open STAT, "-|", statusCommand(keys %paths) or die "The status failed: $!.\n";
- my $inGitCommitSection = 0;
- while (<STAT>) {
- my $status;
- my $original;
- my $file;
-
- if ($isSVN) {
- if (/^([ACDMR]).{5} (.+)$/) {
- $status = $1;
- $file = $2;
- $original = findOriginalFileFromSvn($file) if substr($_, 3, 1) eq "+";
- } else {
- print; # error output from svn stat
- }
- } elsif ($isGit) {
- if (/^([ADM])\t(.+)$/) {
- $status = $1;
- $file = $2;
- } elsif (/^([CR])[0-9]{1,3}\t([^\t]+)\t([^\t\n]+)$/) { # for example: R90% newfile oldfile
- $status = $1;
- $original = $2;
- $file = $3;
- } else {
- print; # error output from git diff
- }
- }
-
- next unless $status;
-
- $file = makeFilePathRelative($file);
-
- if (isModifiedStatus($status) || isAddedStatus($status)) {
- my @components = File::Spec->splitdir($file);
- if ($components[0] eq "LayoutTests") {
- $didChangeRegressionTests = 1;
- push @addedRegressionTests, $file
- if isAddedStatus($status)
- && $file =~ /\.([a-zA-Z]+)$/
- && $supportedTestExtensions{lc($1)}
- && !scalar(grep(/^resources$/i, @components));
- }
- push @{$changedFiles}, $file if $components[$#components] ne "ChangeLog";
- } elsif (isConflictStatus($status)) {
- push @{$conflictFiles}, $file;
- }
- if (basename($file) ne "ChangeLog") {
- my $description = statusDescription($status, $original);
- $functionLists->{$file} = $description if defined $description;
- }
- }
- close STAT;
-}
-
-sub gitConfig($)
-{
- return unless $isGit;
-
- my ($config) = @_;
-
- my $result = `$GIT config $config`;
- if (($? >> 8) != 0) {
- $result = `$GIT repo-config $config`;
- }
- chomp $result;
- return $result;
-}
-
-sub isModifiedStatus($)
-{
- my ($status) = @_;
-
- my %statusCodes = (
- "M" => 1,
- );
-
- return $statusCodes{$status};
-}
-
-sub isAddedStatus($)
-{
- my ($status) = @_;
-
- my %statusCodes = (
- "A" => 1,
- "C" => $isGit,
- "R" => 1,
- );
-
- return $statusCodes{$status};
-}
-
-sub isConflictStatus($)
-{
- my ($status) = @_;
-
- my %svn = (
- "C" => 1,
- );
-
- my %git = (
- "U" => 1,
- );
-
- return 0 if $gitCommit; # an existing commit cannot have conflicts
- return $svn{$status} if $isSVN;
- return $git{$status} if $isGit;
-}
-
-sub statusDescription($$)
-{
- my ($status, $original) = @_;
-
- my %svn = (
- "A" => defined $original ? " Copied from \%s." : " Added.",
- "D" => " Removed.",
- "M" => "",
- "R" => defined $original ? " Replaced with \%s." : " Replaced.",
- );
-
- my %git = %svn;
- $git{"A"} = " Added.";
- $git{"C"} = " Copied from \%s.";
- $git{"R"} = " Renamed from \%s.";
-
- return sprintf($svn{$status}, $original) if $isSVN && exists $svn{$status};
- return sprintf($git{$status}, $original) if $isGit && exists $git{$status};
- return undef;
-}
-
-sub extractLineRange($)
-{
- my ($string) = @_;
-
- my ($start, $end) = (-1, -1);
-
- if ($isSVN && $string =~ /^\d+(,\d+)?[acd](\d+)(,(\d+))?/) {
- $start = $2;
- $end = $4 || $2;
- } elsif ($isGit && $string =~ /^@@ -\d+(,\d+)? \+(\d+)(,(\d+))? @@/) {
- $start = $2;
- $end = defined($4) ? $4 + $2 - 1 : $2;
- }
-
- return ($start, $end);
-}
-
-sub firstDirectoryOrCwd()
-{
- my $dir = ".";
- my @dirs = keys(%paths);
-
- $dir = -d $dirs[0] ? $dirs[0] : dirname($dirs[0]) if @dirs;
-
- return $dir;
-}
-
-sub testListForChangeLog(@)
-{
- my (@tests) = @_;
-
- return "" unless @tests;
-
- my $leadString = " Test" . (@tests == 1 ? "" : "s") . ": ";
- my $list = $leadString;
- foreach my $i (0..$#tests) {
- $list .= " " x length($leadString) if $i;
- my $test = $tests[$i];
- $test =~ s/^LayoutTests\///;
- $list .= "$test\n";
- }
- $list .= "\n";
-
- return $list;
-}
-
-sub reviewerAndDescriptionForGitCommit($)
-{
- my ($commit) = @_;
-
- my $description = '';
- my $reviewer;
-
- my @args = qw(rev-list --pretty);
- push @args, '-1' if $commit !~ m/.+\.\..+/;
- my $gitLog;
- {
- local $/ = undef;
- open(GIT, "-|", $GIT, @args, $commit) || die;
- $gitLog = <GIT>;
- close(GIT);
- }
-
- my @commitLogs = split(/^[Cc]ommit [a-f0-9]{40}/m, $gitLog);
- shift @commitLogs; # Remove initial blank commit log
- my $commitLogCount = 0;
- foreach my $commitLog (@commitLogs) {
- $description .= "\n" if $commitLogCount;
- $commitLogCount++;
- my $inHeader = 1;
- my @lines = split(/\n/, $commitLog);
- shift @lines; # Remove initial blank line
- foreach my $line (@lines) {
- if ($inHeader) {
- if (!$line) {
- $inHeader = 0;
- }
- next;
- } elsif ($line =~ /[Ss]igned-[Oo]ff-[Bb]y: (.+)/) {
- if (!$reviewer) {
- $reviewer = $1;
- } else {
- $reviewer .= ", " . $1;
- }
- } elsif (length $line == 0) {
- $description = $description . "\n";
- } else {
- $line =~ s/^\s*//;
- $description = $description . " " . $line . "\n";
- }
- }
- }
- if (!$reviewer) {
- $reviewer = $gitReviewer;
- }
-
- return ($reviewer, $description);
-}
diff --git a/WebKitTools/Scripts/print-msvc-project-dependencies b/WebKitTools/Scripts/print-msvc-project-dependencies
deleted file mode 100755
index dbc8402..0000000
--- a/WebKitTools/Scripts/print-msvc-project-dependencies
+++ /dev/null
@@ -1,143 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2008 Apple Inc. All Rights Reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
-# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-use strict;
-use File::Basename;
-
-sub printDependencyTree($);
-
-my $basename = basename($0);
-@ARGV or die "Usage: $basename sln1 [sln2 sln3...]";
-
-foreach my $sln (@ARGV) {
- printDependencyTree($sln);
-}
-
-exit;
-
-sub printDependencyTree($)
-{
- my ($sln) = @_;
-
- unless (-f $sln) {
- warn "Warning: Can't find $sln; skipping\n";
- return;
- }
-
- unless (open SLN, "<", $sln) {
- warn "Warning: Can't open $sln; skipping\n";
- return;
- }
-
- my %projectsByUUID = ();
- my $currentProject;
-
- my $state = "initial";
- foreach my $line (<SLN>) {
- if ($state eq "initial") {
- if ($line =~ /^Project\([^\)]+\) = "([^"]+)", "[^"]+", "([^"]+)"\r?$/) {
- my $name = $1;
- my $uuid = $2;
- if (exists $projectsByUUID{$uuid}) {
- warn "Warning: Project $name appears more than once in $sln; using first definition\n";
- next;
- }
- $currentProject = {
- name => $name,
- uuid => $uuid,
- dependencies => {},
- };
- $projectsByUUID{$uuid} = $currentProject;
-
- $state = "inProject";
- }
-
- next;
- }
-
- if ($state eq "inProject") {
- defined($currentProject) or die;
-
- if ($line =~ /^\s*ProjectSection\(ProjectDependencies\) = postProject\r?$/) {
- $state = "inDependencies";
- } elsif ($line =~ /^EndProject\r?$/) {
- $currentProject = undef;
- $state = "initial";
- }
-
- next;
- }
-
- if ($state eq "inDependencies") {
- defined($currentProject) or die;
-
- if ($line =~ /^\s*({[^}]+}) = ({[^}]+})\r?$/) {
- my $uuid1 = $1;
- my $uuid2 = $2;
- if (exists $currentProject->{dependencies}->{$uuid1}) {
- warn "Warning: UUID $uuid1 listed more than once as dependency of project ", $currentProject->{name}, "\n";
- next;
- }
-
- $uuid1 eq $uuid2 or warn "Warning: UUIDs in depedency section of project ", $currentProject->{name}, " don't match: $uuid1 $uuid2; using first UUID\n";
-
- $currentProject->{dependencies}->{$uuid1} = 1;
- } elsif ($line =~ /^\s*EndProjectSection\r?$/) {
- $state = "inProject";
- }
-
- next;
- }
- }
-
- close SLN or warn "Warning: Can't close $sln\n";
-
- my %projectsNotDependedUpon = %projectsByUUID;
- CANDIDATE: foreach my $candidateUUID (keys %projectsByUUID) {
- foreach my $projectUUID (keys %projectsByUUID) {
- next if $candidateUUID eq $projectUUID;
- foreach my $dependencyUUID (keys %{$projectsByUUID{$projectUUID}->{dependencies}}) {
- if ($candidateUUID eq $dependencyUUID) {
- delete $projectsNotDependedUpon{$candidateUUID};
- next CANDIDATE;
- }
- }
- }
- }
-
- foreach my $project (values %projectsNotDependedUpon) {
- printProjectAndDependencies($project, 0, \%projectsByUUID);
- }
-}
-
-sub printProjectAndDependencies
-{
- my ($project, $indentLevel, $projectsByUUID) = @_;
-
- print " " x $indentLevel, $project->{name}, "\n";
- foreach my $dependencyUUID (keys %{$project->{dependencies}}) {
- printProjectAndDependencies($projectsByUUID->{$dependencyUUID}, $indentLevel + 1, $projectsByUUID);
- }
-}
diff --git a/WebKitTools/Scripts/report-include-statistics b/WebKitTools/Scripts/report-include-statistics
deleted file mode 100755
index f81c3c3..0000000
--- a/WebKitTools/Scripts/report-include-statistics
+++ /dev/null
@@ -1,114 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2005, 2006 Apple Computer, Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# "report-include-statistics" script for Web Kit Open Source Project
-
-use strict;
-use File::Find;
-
-find(\&wanted, @ARGV ? @ARGV : ".");
-
-my %paths;
-my %sources;
-my %includes;
-
-sub wanted
-{
- my $file = $_;
-
- if ($file eq "icu") {
- $File::Find::prune = 1;
- return;
- }
-
- if ($file !~ /^\./ && $file =~ /\.(h|cpp|c|mm|m)$/) {
- $paths{$file} = $File::Find::name;
- $sources{$file} = $File::Find::name if $file !~ /\.h/;
- open FILE, $file or die;
- while (<FILE>) {
- if (m-^\s*#\s*(include|import)\s+["<]((\S+/)*)(\S+)[">]-) {
- my $include = ($2 eq "sys/" ? $2 : "") . $4;
- $includes{$file}{$include}++;
- }
- }
- close FILE;
- }
-}
-
-my %totalIncludes;
-
-sub fillOut
-{
- my ($file) = @_;
-
- return if defined $totalIncludes{$file};
-
- for my $include (keys %{ $includes{$file} }) {
- $totalIncludes{$file}{$include} = 1;
- fillOut($include);
- for my $i (keys %{ $totalIncludes{$include} }) {
- $totalIncludes{$file}{$i} = 1;
- }
- }
-}
-
-my %inclusionCounts;
-for my $file (keys %includes) {
- $inclusionCounts{$file} = 0;
- fillOut($file);
-}
-
-for my $file (keys %sources) {
- for my $include (keys %{ $totalIncludes{$file} }) {
- $inclusionCounts{$include}++;
- }
-}
-
-for my $file (sort mostincludedcmp keys %includes) {
- next if !$paths{$file};
- my $count = $inclusionCounts{$file};
- my $numIncludes = keys %{ $includes{$file} };
- my $numTotalIncludes = keys %{ $totalIncludes{$file} };
- print "$file is included $count times, includes $numIncludes files directly, $numTotalIncludes files total.\n"
-}
-
-# Sort most-included files first.
-sub mostincludedcmp($$)
-{
- my ($filea, $fileb) = @_;
-
- my $counta = $inclusionCounts{$filea} || 0;
- my $countb = $inclusionCounts{$fileb} || 0;
- return $countb <=> $counta if $counta != $countb;
-
- my $ta = keys %{ $totalIncludes{$filea} };
- my $tb = keys %{ $totalIncludes{$fileb} };
- return $ta <=> $tb if $ta != $tb;
-
- return $filea cmp $fileb;
-}
diff --git a/WebKitTools/Scripts/resolve-ChangeLogs b/WebKitTools/Scripts/resolve-ChangeLogs
deleted file mode 100755
index 58471ec..0000000
--- a/WebKitTools/Scripts/resolve-ChangeLogs
+++ /dev/null
@@ -1,468 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Merge and resolve ChangeLog conflicts for svn and git repositories
-
-use strict;
-
-use FindBin;
-use lib $FindBin::Bin;
-
-use File::Basename;
-use File::Path;
-use File::Spec;
-use Getopt::Long;
-use POSIX;
-use VCSUtils;
-
-sub conflictFiles($);
-sub findChangeLog($);
-sub fixChangeLogPatch($);
-sub fixMergedChangeLogs($;@);
-sub fixOneMergedChangeLog($);
-sub mergeChanges($$$);
-sub parseFixMerged($$;$);
-sub removeChangeLogArguments();
-sub resolveChangeLog($);
-sub resolveConflict($);
-sub showStatus($;$);
-sub usageAndExit();
-
-my $SVN = "svn";
-my $GIT = "git";
-
-my $fixMerged;
-my $printWarnings = 1;
-my $showHelp;
-
-my $getOptionsResult = GetOptions(
- 'f|fix-merged:s' => \&parseFixMerged,
- 'h|help' => \$showHelp,
- 'w|warnings!' => \$printWarnings,
-);
-
-my @changeLogFiles = removeChangeLogArguments();
-
-if (scalar(@ARGV) > 0) {
- print STDERR "ERROR: Files listed on command-line that are not ChangeLogs.\n";
- undef $getOptionsResult;
-} elsif (!defined $fixMerged && scalar(@changeLogFiles) == 0) {
- print STDERR "ERROR: No ChangeLog files listed on command-line.\n";
- undef $getOptionsResult;
-} elsif (defined $fixMerged && !isGit()) {
- print STDERR "ERROR: --fix-merged may only be used with a git repository\n";
- undef $getOptionsResult;
-}
-
-sub usageAndExit()
-{
- print STDERR <<__END__;
-Usage: @{[ basename($0) ]} [options] path/to/ChangeLog [path/to/another/ChangeLog ...]
- -f|--fix-merged [revision-range] fix git-merged ChangeLog entries; if a revision-range
- is specified, run git filter-branch on the range
- -h|--help show this help message
- -w|--[no-]warnings show or suppress warnings (default: show warnings)
-__END__
- exit 1;
-}
-
-if (!$getOptionsResult || $showHelp) {
- usageAndExit();
-}
-
-if (defined $fixMerged && length($fixMerged) > 0) {
- my $commitRange = $fixMerged;
- $commitRange = $commitRange . "..HEAD" if index($commitRange, "..") < 0;
- fixMergedChangeLogs($commitRange, @changeLogFiles);
-} elsif (@changeLogFiles) {
- for my $file (@changeLogFiles) {
- if (defined $fixMerged) {
- fixOneMergedChangeLog($file);
- } else {
- resolveChangeLog($file);
- }
- }
-} else {
- print STDERR "ERROR: Unknown combination of switches and arguments.\n";
- usageAndExit();
-}
-
-exit 0;
-
-sub conflictFiles($)
-{
- my ($file) = @_;
- my $fileMine;
- my $fileOlder;
- my $fileNewer;
-
- if (-e $file && -e "$file.orig" && -e "$file.rej") {
- return ("$file.rej", "$file.orig", $file);
- }
-
- if (isSVN()) {
- open STAT, "-|", $SVN, "status", $file || die;
- my $status = <STAT>;
- close STAT;
- if (!$status || $status !~ m/^C\s+/) {
- print STDERR "WARNING: ${file} is not in a conflicted state.\n" if $printWarnings;
- return ();
- }
-
- $fileMine = "${file}.mine" if -e "${file}.mine";
-
- my $currentRevision;
- open INFO, "-|", $SVN, "info", $file || die;
- while (my $line = <INFO>) {
- $currentRevision = $1 if $line =~ m/^Revision: ([0-9]+)/;
- }
- close INFO;
- $fileNewer = "${file}.r${currentRevision}" if -e "${file}.r${currentRevision}";
-
- my @matchingFiles = grep { $_ ne $fileNewer } glob("${file}.r[0-9][0-9]*");
- if (scalar(@matchingFiles) > 1) {
- print STDERR "WARNING: Too many conflict files exist for ${file}!\n" if $printWarnings;
- } else {
- $fileOlder = shift @matchingFiles;
- }
- } elsif (isGit()) {
- my $gitPrefix = `$GIT rev-parse --show-prefix`;
- chomp $gitPrefix;
- open GIT, "-|", $GIT, "ls-files", "--unmerged", $file || die;
- while (my $line = <GIT>) {
- my ($mode, $hash, $stage, $fileName) = split(' ', $line);
- my $outputFile;
- if ($stage == 1) {
- $fileOlder = "${file}.BASE.$$";
- $outputFile = $fileOlder;
- } elsif ($stage == 2) {
- $fileNewer = "${file}.LOCAL.$$";
- $outputFile = $fileNewer;
- } elsif ($stage == 3) {
- $fileMine = "${file}.REMOTE.$$";
- $outputFile = $fileMine;
- } else {
- die "Unknown file stage: $stage";
- }
- system("$GIT cat-file blob :${stage}:${gitPrefix}${file} > $outputFile");
- }
- close GIT;
- } else {
- die "Unknown version control system";
- }
-
- if (!$fileMine && !$fileOlder && !$fileNewer) {
- print STDERR "WARNING: ${file} does not need merging.\n" if $printWarnings;
- } elsif (!$fileMine || !$fileOlder || !$fileNewer) {
- print STDERR "WARNING: ${file} is missing some conflict files.\n" if $printWarnings;
- }
-
- return ($fileMine, $fileOlder, $fileNewer);
-}
-
-sub findChangeLog($) {
- return $_[0] if basename($_[0]) eq "ChangeLog";
-
- my $file = File::Spec->catfile($_[0], "ChangeLog");
- return $file if -d $_[0] and -e $file;
-
- return undef;
-}
-
-sub fixChangeLogPatch($)
-{
- my $patch = shift;
- my $contextLineCount = 3;
-
- return $patch if $patch !~ /\n@@ -1,(\d+) \+1,(\d+) @@\n( .*\n)+(\+.*\n)+( .*\n){$contextLineCount}$/m;
- my ($oldLineCount, $newLineCount) = ($1, $2);
- return $patch if $oldLineCount <= $contextLineCount;
-
- # The diff(1) command is greedy when matching lines, so a new ChangeLog entry will
- # have lines of context at the top of a patch when the existing entry has the same
- # date and author as the new entry. This nifty loop alters a ChangeLog patch so
- # that the added lines ("+") in the patch always start at the beginning of the
- # patch and there are no initial lines of context.
- my $newPatch;
- my $lineCountInState = 0;
- my $oldContentLineCountReduction = $oldLineCount - $contextLineCount;
- my $newContentLineCountWithoutContext = $newLineCount - $oldLineCount - $oldContentLineCountReduction;
- my ($stateHeader, $statePreContext, $stateNewChanges, $statePostContext) = (1..4);
- my $state = $stateHeader;
- foreach my $line (split(/\n/, $patch)) {
- $lineCountInState++;
- if ($state == $stateHeader && $line =~ /^@@ -1,$oldLineCount \+1,$newLineCount @\@$/) {
- $line = "@@ -1,$contextLineCount +1," . ($newLineCount - $oldContentLineCountReduction) . " @@";
- $lineCountInState = 0;
- $state = $statePreContext;
- } elsif ($state == $statePreContext && substr($line, 0, 1) eq " ") {
- $line = "+" . substr($line, 1);
- if ($lineCountInState == $oldContentLineCountReduction) {
- $lineCountInState = 0;
- $state = $stateNewChanges;
- }
- } elsif ($state == $stateNewChanges && substr($line, 0, 1) eq "+") {
- # No changes to these lines
- if ($lineCountInState == $newContentLineCountWithoutContext) {
- $lineCountInState = 0;
- $state = $statePostContext;
- }
- } elsif ($state == $statePostContext) {
- if (substr($line, 0, 1) eq "+" && $lineCountInState <= $oldContentLineCountReduction) {
- $line = " " . substr($line, 1);
- } elsif ($lineCountInState > $contextLineCount && substr($line, 0, 1) eq " ") {
- next; # Discard
- }
- }
- $newPatch .= $line . "\n";
- }
-
- return $newPatch;
-}
-
-sub fixMergedChangeLogs($;@)
-{
- my $revisionRange = shift;
- my @changedFiles = @_;
-
- if (scalar(@changedFiles) < 1) {
- # Read in list of files changed in $revisionRange
- open GIT, "-|", $GIT, "diff", "--name-only", $revisionRange || die;
- push @changedFiles, <GIT>;
- close GIT || die;
- die "No changed files in $revisionRange" if scalar(@changedFiles) < 1;
- chomp @changedFiles;
- }
-
- my @changeLogs = grep { defined $_ } map { findChangeLog($_) } @changedFiles;
- die "No changed ChangeLog files in $revisionRange" if scalar(@changeLogs) < 1;
-
- system("$GIT filter-branch --tree-filter 'PREVIOUS_COMMIT=\`$GIT rev-parse \$GIT_COMMIT^\` && MAPPED_PREVIOUS_COMMIT=\`map \$PREVIOUS_COMMIT\` $0 -f \"" . join('" "', @changeLogs) . "\"' $revisionRange");
-
- # On success, remove the backup refs directory
- if (WEXITSTATUS($?) == 0) {
- rmtree(qw(.git/refs/original));
- }
-}
-
-sub fixOneMergedChangeLog($)
-{
- my $file = shift;
- my $patch;
-
- # Read in patch for incorrectly merged ChangeLog entry
- {
- local $/ = undef;
- open GIT, "-|", $GIT, "diff", ($ENV{GIT_COMMIT} || "HEAD") . "^", $file || die;
- $patch = <GIT>;
- close GIT || die;
- }
-
- # Always checkout the previous commit's copy of the ChangeLog
- system($GIT, "checkout", $ENV{MAPPED_PREVIOUS_COMMIT} || "HEAD^", $file);
-
- # The patch must have 0 or more lines of context, then 1 or more lines
- # of additions, and then 1 or more lines of context. If not, we skip it.
- if ($patch =~ /\n@@ -(\d+),(\d+) \+(\d+),(\d+) @@\n( .*\n)*((\+.*\n)+)( .*\n)+$/m) {
- # Copy the header from the original patch.
- my $newPatch = substr($patch, 0, index($patch, "@@ -${1},${2} +${3},${4} @@"));
-
- # Generate a new set of line numbers and patch lengths. Our new
- # patch will start with the lines for the fixed ChangeLog entry,
- # then have 3 lines of context from the top of the current file to
- # make the patch apply cleanly.
- $newPatch .= "@@ -1,3 +1," . ($4 - $2 + 3) . " @@\n";
-
- # We assume that top few lines of the ChangeLog entry are actually
- # at the bottom of the list of added lines (due to the way the patch
- # algorithm works), so we simply search through the lines until we
- # find the date line, then move the rest of the lines to the top.
- my @patchLines = map { $_ . "\n" } split(/\n/, $6);
- foreach my $i (0 .. $#patchLines) {
- if ($patchLines[$i] =~ /^\+\d{4}-\d{2}-\d{2} /) {
- unshift(@patchLines, splice(@patchLines, $i, scalar(@patchLines) - $i));
- last;
- }
- }
-
- $newPatch .= join("", @patchLines);
-
- # Add 3 lines of context to the end
- open FILE, "<", $file || die;
- for (my $i = 0; $i < 3; $i++) {
- $newPatch .= " " . <FILE>;
- }
- close FILE;
-
- # Apply the new patch
- open(PATCH, "| patch -p1 $file > /dev/null") || die;
- print PATCH $newPatch;
- close(PATCH) || die;
-
- # Run "git add" on the fixed ChangeLog file
- system($GIT, "add", $file);
-
- showStatus($file, 1);
- } elsif ($patch) {
- # Restore the current copy of the ChangeLog file since we can't repatch it
- system($GIT, "checkout", $ENV{GIT_COMMIT} || "HEAD", $file);
- print STDERR "WARNING: Last change to ${file} could not be fixed and re-merged.\n" if $printWarnings;
- }
-}
-
-sub mergeChanges($$$)
-{
- my ($fileMine, $fileOlder, $fileNewer) = @_;
-
- my $traditionalReject = $fileMine =~ /\.rej$/ ? 1 : 0;
-
- local $/ = undef;
-
- my $patch;
- if ($traditionalReject) {
- open(DIFF, "<", $fileMine);
- $patch = <DIFF>;
- close(DIFF);
- rename($fileMine, "$fileMine.save");
- rename($fileOlder, "$fileOlder.save");
- } else {
- open(DIFF, "-|", qw(diff -u), $fileOlder, $fileMine) || die;
- $patch = <DIFF>;
- close(DIFF);
- }
-
- unlink("${fileNewer}.orig");
- unlink("${fileNewer}.rej");
-
- open(PATCH, "| patch --fuzz=3 $fileNewer > /dev/null") || die;
- print PATCH fixChangeLogPatch($patch);
- close(PATCH);
-
- my $result;
-
- # Refuse to merge the patch if it did not apply cleanly
- if (-e "${fileNewer}.rej") {
- unlink("${fileNewer}.rej");
- unlink($fileNewer);
- rename("${fileNewer}.orig", $fileNewer);
- $result = 0;
- } else {
- unlink("${fileNewer}.orig");
- $result = 1;
- }
-
- if ($traditionalReject) {
- rename("$fileMine.save", $fileMine);
- rename("$fileOlder.save", $fileOlder);
- }
-
- return $result;
-}
-
-sub parseFixMerged($$;$)
-{
- my ($switchName, $key, $value) = @_;
- if (defined $key) {
- if (defined findChangeLog($key)) {
- unshift(@ARGV, $key);
- $fixMerged = "";
- } else {
- $fixMerged = $key;
- }
- } else {
- $fixMerged = "";
- }
-}
-
-sub removeChangeLogArguments()
-{
- my @results = ();
-
- for (my $i = 0; $i < scalar(@ARGV); ) {
- my $file = findChangeLog($ARGV[$i]);
- if (defined $file) {
- splice(@ARGV, $i, 1);
- push @results, $file;
- } else {
- $i++;
- }
- }
-
- return @results;
-}
-
-sub resolveChangeLog($)
-{
- my ($file) = @_;
-
- my ($fileMine, $fileOlder, $fileNewer) = conflictFiles($file);
-
- return unless $fileMine && $fileOlder && $fileNewer;
-
- if (mergeChanges($fileMine, $fileOlder, $fileNewer)) {
- if ($file ne $fileNewer) {
- unlink($file);
- rename($fileNewer, $file) || die;
- }
- unlink($fileMine, $fileOlder);
- resolveConflict($file);
- showStatus($file, 1);
- } else {
- showStatus($file);
- print STDERR "WARNING: ${file} could not be merged using fuzz level 3.\n" if $printWarnings;
- unlink($fileMine, $fileOlder, $fileNewer) if isGit();
- }
-}
-
-sub resolveConflict($)
-{
- my ($file) = @_;
-
- if (isSVN()) {
- system($SVN, "resolved", $file);
- } elsif (isGit()) {
- system($GIT, "add", $file);
- } else {
- die "Unknown version control system";
- }
-}
-
-sub showStatus($;$)
-{
- my ($file, $isConflictResolved) = @_;
-
- if (isSVN()) {
- system($SVN, "status", $file);
- } elsif (isGit()) {
- my @args = qw(--name-status);
- unshift @args, qw(--cached) if $isConflictResolved;
- system($GIT, "diff", @args, $file);
- } else {
- die "Unknown version control system";
- }
-}
diff --git a/WebKitTools/Scripts/run-drawtest b/WebKitTools/Scripts/run-drawtest
deleted file mode 100755
index 2cd61de..0000000
--- a/WebKitTools/Scripts/run-drawtest
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Simplified "run" script for WebKit Open Source Project.
-
-use strict;
-use FindBin;
-use lib $FindBin::Bin;
-use webkitdirs;
-
-setConfiguration();
-my $productDir = productDir();
-
-# Check to see that all the frameworks are built (w/ SVG support).
-checkFrameworks();
-checkWebCoreSVGSupport(1);
-
-# Set up DYLD_FRAMEWORK_PATH to point to the product directory.
-print "Start DrawTest with DYLD_FRAMEWORK_PATH set to point to built WebKit in $productDir.\n";
-$ENV{DYLD_FRAMEWORK_PATH} = $productDir;
-my $drawtestPath = "$productDir/DrawTest.app/Contents/MacOS/DrawTest";
-exec $drawtestPath or die;
diff --git a/WebKitTools/Scripts/run-iexploder-tests b/WebKitTools/Scripts/run-iexploder-tests
deleted file mode 100755
index f5e8a6c..0000000
--- a/WebKitTools/Scripts/run-iexploder-tests
+++ /dev/null
@@ -1,172 +0,0 @@
-#!/usr/bin/perl
-
-# Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com)
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# A script to semi-automatically run iExploder tests.
-
-use strict;
-use warnings;
-
-use Cwd;
-use FindBin;
-use Getopt::Long;
-use IPC::Open2;
-
-use lib $FindBin::Bin;
-use webkitdirs;
-
-sub openHTTPDIfNeeded();
-sub closeHTTPD();
-sub runSafariWithIExploder();
-
-# Argument handling
-my $guardMalloc = '';
-my $httpdPort = 8000;
-my $downloadTest;
-
-GetOptions(
- 'guard-malloc|g' => \$guardMalloc,
- 'get=s' => \$downloadTest,
- 'port=i' => \$httpdPort
-);
-
-
-setConfiguration();
-my $productDir = productDir();
-
-chdirWebKit();
-
-checkFrameworks();
-
-my $httpdOpen = 0;
-openHTTPDIfNeeded();
-
-if ($downloadTest) {
- system "/usr/bin/curl -o ~/Desktop/iexploder$downloadTest.html \"http://127.0.0.1:$httpdPort/iexploder.cgi?lookup=1&test=$downloadTest\"";
- print "Saved the test as iexploder$downloadTest.html on the desktop\n";
-} else {
- runSafariWithIExploder();
- print "Last generated tests:\n";
- system "grep 'iexploder.cgi' /tmp/WebKit/access_log.txt | tail -n -5 | awk -F'[ =&\\?]' '{if (\$8 == \"lookup\") print \$11; else print \$9}'";
-}
-
-closeHTTPD();
-
-
-sub runSafariWithIExploder()
-{
- my $redirectTo;
- if (@ARGV) {
- $redirectTo = "http://127.0.0.1:$httpdPort/iexploder.cgi?lookup=1&test=$ARGV[0]";
- } else {
- $redirectTo = "http://127.0.0.1:$httpdPort/index.html";
- }
-
- open REDIRECT_HTML, ">", "/tmp/WebKit/redirect.html" or die;
- print REDIRECT_HTML "<html>\n";
- print REDIRECT_HTML " <head>\n";
- print REDIRECT_HTML " <meta http-equiv=\"refresh\" content=\"1;URL=$redirectTo\" />\n";
- print REDIRECT_HTML " <script type=\"text/javascript\">\n";
- print REDIRECT_HTML " document.location = \"$redirectTo\";\n";
- print REDIRECT_HTML " </script>\n";
- print REDIRECT_HTML " </head>\n";
- print REDIRECT_HTML " <body>\n";
- print REDIRECT_HTML " </body>\n";
- print REDIRECT_HTML "</html>\n";
- close REDIRECT_HTML;
-
- local %ENV;
- $ENV{DYLD_INSERT_LIBRARIES} = "/usr/lib/libgmalloc.dylib" if $guardMalloc;
- system "WebKitTools/Scripts/run-safari", "-NSOpen", "/tmp/WebKit/redirect.html";
-}
-
-sub openHTTPDIfNeeded()
-{
- return if $httpdOpen;
-
- mkdir "/tmp/WebKit";
-
- if (-f "/tmp/WebKit/httpd.pid") {
- my $oldPid = `cat /tmp/WebKit/httpd.pid`;
- chomp $oldPid;
- if (0 != kill 0, $oldPid) {
- print "\nhttpd is already running: pid $oldPid, killing...\n";
- kill 15, $oldPid;
-
- my $retryCount = 20;
- while ((0 != kill 0, $oldPid) && $retryCount) {
- sleep 1;
- --$retryCount;
- }
-
- die "Timed out waiting for httpd to quit" unless $retryCount;
- }
- }
-
- my $testDirectory = getcwd() . "/LayoutTests";
- my $iExploderDirectory = getcwd() . "/WebKitTools/iExploder";
- my $httpdPath = "/usr/sbin/httpd";
- my $httpdConfig = "$testDirectory/http/conf/httpd.conf";
- $httpdConfig = "$testDirectory/http/conf/apache2-httpd.conf" if `$httpdPath -v` =~ m|Apache/2|;
- my $documentRoot = "$iExploderDirectory/htdocs";
- my $typesConfig = "$testDirectory/http/conf/mime.types";
- my $sslCertificate = "$testDirectory/http/conf/webkit-httpd.pem";
- my $listen = "127.0.0.1:$httpdPort";
-
- open2(\*HTTPDIN, \*HTTPDOUT, $httpdPath,
- "-f", "$httpdConfig",
- "-C", "DocumentRoot \"$documentRoot\"",
- "-C", "Listen $listen",
- "-c", "TypesConfig \"$typesConfig\"",
- "-c", "CustomLog \"/tmp/WebKit/access_log.txt\" common",
- "-c", "ErrorLog \"/tmp/WebKit/error_log.txt\"",
- "-c", "SSLCertificateFile \"$sslCertificate\"",
- # Apache wouldn't run CGIs with permissions==700 otherwise
- "-c", "User \"#$<\"");
-
- my $retryCount = 20;
- while (system("/usr/bin/curl -q --silent --stderr - --output /dev/null $listen") && $retryCount) {
- sleep 1;
- --$retryCount;
- }
-
- die "Timed out waiting for httpd to start" unless $retryCount;
-
- $httpdOpen = 1;
-}
-
-sub closeHTTPD()
-{
- return if !$httpdOpen;
-
- close HTTPDIN;
- close HTTPDOUT;
-
- kill 15, `cat /tmp/WebKit/httpd.pid` if -f "/tmp/WebKit/httpd.pid";
-
- $httpdOpen = 0;
-}
diff --git a/WebKitTools/Scripts/run-javascriptcore-tests b/WebKitTools/Scripts/run-javascriptcore-tests
deleted file mode 100755
index afd0ab4..0000000
--- a/WebKitTools/Scripts/run-javascriptcore-tests
+++ /dev/null
@@ -1,189 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
-# Copyright (C) 2007 Eric Seidel <eric@webkit.org>
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Script to run the Web Kit Open Source Project JavaScriptCore tests (adapted from Mozilla).
-
-use strict;
-use FindBin;
-use Getopt::Long qw(:config pass_through);
-use lib $FindBin::Bin;
-use webkitdirs;
-use POSIX;
-
-my $coverageSupport = 0;
-GetOptions('coverage!' => \$coverageSupport);
-
-my @coverageSupportOption = ();
-if ($coverageSupport) {
- push @coverageSupportOption, "GCC_GENERATE_TEST_COVERAGE_FILES=YES";
- push @coverageSupportOption, "GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES";
- push @coverageSupportOption, "EXTRA_LINK= -ftest-coverage -fprofile-arcs";
- push @coverageSupportOption, "OTHER_CFLAGS= -MD";
- push @coverageSupportOption, "OTHER_LDFLAGS= -ftest-coverage -fprofile-arcs -framework AppKit";
-}
-
-# determine configuration
-my $configuration;
-setConfiguration();
-$configuration = configuration();
-
-my @jsArgs;
-my @xcodeArgs;
-my $root;
-my $run64Bit;
-
-# pre-evaluate arguments. jsDriver args have - preceding, xcode args do not.
-# special arguments
-# --root=<path to webkit root> use pre-built root
-# --gtk build gtk
-# --no-64-bit or --64-bit
-foreach my $arg(@ARGV) {
- print $arg."\n";
- if( $arg =~ /root=(.*)/ ){
- $root = $1;
- } elsif( $arg =~ /^--gtk$/i || $arg =~ /^--qt$/i || $arg =~ /^--wx$/i ){
- } elsif( $arg =~ /(no-)?64-bit/ ) {
- $run64Bit = !defined($1);
- } elsif( $arg =~ /^-/ or !($arg =~/=/)){
- push( @jsArgs, $arg );
- } else {
- push( @xcodeArgs, $arg );
- }
-}
-
-setConfigurationProductDir(Cwd::abs_path($root)) if (defined($root));
-
-if (isOSX() && !isTiger()) {
- my $preferredArch = preferredArchitecture("JavaScriptCore");
- setRun64Bit($run64Bit);
- my $arch = preferredArchitecture("JavaScriptCore");
- if ($arch ne $preferredArch) {
- push(@jsArgs, "-a", $arch);
- }
-}
-
-if(!defined($root)){
- chdirWebKit();
- push(@xcodeArgs, "--" . $configuration);
-
- # FIXME: These should be stored per-config and ignored here
- push(@xcodeArgs, "--qt") if isQt();
- push(@xcodeArgs, "--gtk") if isGtk();
- push(@xcodeArgs, "--wx") if isWx();
-
- my $arch = preferredArchitecture("JavaScriptCore");
- push(@xcodeArgs, "ARCHS=$arch") if (isOSX());
-
- my $buildResult = system "perl", "WebKitTools/Scripts/build-jsc", @xcodeArgs;
- if ($buildResult) {
- print STDERR "Compiling jsc failed!\n";
- exit exitStatus($buildResult);
- }
-}
-
-# Find JavaScriptCore directory
-chdirWebKit();
-chdir("JavaScriptCore");
-
-my $productDir = productDir();
-chdir "tests/mozilla" or die;
-$productDir .= "/JavaScriptCore" if isQt();
-$productDir .= "/Programs" if isGtk();
-$ENV{DYLD_FRAMEWORK_PATH} = $productDir;
-setPathForRunningWebKitApp(\%ENV) if isCygwin();
-
-sub jscPath($)
-{
- my ($productDir) = @_;
- my $jscName = "jsc";
- $jscName .= "_debug" if (isCygwin() && ($configuration eq "Debug"));
- return "$productDir/$jscName";
-}
-
-my $result = system "perl", "jsDriver.pl", "-e", "squirrelfish", "-s", jscPath($productDir), "-f", "actual.html", @jsArgs;
-exit exitStatus($result) if $result;
-
-my %failures;
-
-open EXPECTED, "expected.html" or die;
-while (<EXPECTED>) {
- last if /failures reported\.$/;
-}
-while (<EXPECTED>) {
- chomp;
- $failures{$_} = 1;
-}
-close EXPECTED;
-
-my %newFailures;
-
-open ACTUAL, "actual.html" or die;
-while (<ACTUAL>) {
- last if /failures reported\.$/;
-}
-while (<ACTUAL>) {
- chomp;
- if ($failures{$_}) {
- delete $failures{$_};
- } else {
- $newFailures{$_} = 1;
- }
-}
-close ACTUAL;
-
-my $numNewFailures = keys %newFailures;
-if ($numNewFailures) {
- print "\n** Danger, Will Robinson! Danger! The following failures have been introduced:\n";
- foreach my $failure (sort keys %newFailures) {
- print "\t$failure\n";
- }
-}
-
-my $numOldFailures = keys %failures;
-if ($numOldFailures) {
- print "\nYou fixed the following test";
- print "s" if $numOldFailures != 1;
- print ":\n";
- foreach my $failure (sort keys %failures) {
- print "\t$failure\n";
- }
-}
-
-print "\n";
-
-print "$numNewFailures regression";
-print "s" if $numNewFailures != 1;
-print " found.\n";
-
-print "$numOldFailures test";
-print "s" if $numOldFailures != 1;
-print " fixed.\n";
-
-print "OK.\n" if $numNewFailures == 0;
-exit(1) if $numNewFailures;
diff --git a/WebKitTools/Scripts/run-jsc b/WebKitTools/Scripts/run-jsc
deleted file mode 100755
index 20dc5e8..0000000
--- a/WebKitTools/Scripts/run-jsc
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/usr/bin/perl
-
-# Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# This script runs a list of scripts through jsc a specified number of times.
-
-use strict;
-use warnings;
-use FindBin;
-use lib $FindBin::Bin;
-use Getopt::Long;
-use webkitdirs;
-
-my $usage = "Usage: run-jsc [--count run_count] [--verbose] shell_file [file2...]";
-
-my $count = 1;
-my $verbose = 0;
-GetOptions("count|c=i" => \$count,
- "verbose|v" => \$verbose);
-die "$usage\n" if (@ARGV < 1);
-
-my $jsc = productDir() . "/jsc @ARGV";
-$jsc .= " 2> /dev/null" unless $verbose;
-
-my $dyld = productDir();
-
-$ENV{"DYLD_FRAMEWORK_PATH"} = $dyld;
-print STDERR "Running $count time(s): DYLD_FRAMEWORK_PATH=$dyld $jsc\n";
-while ($count--) {
- if (system("$jsc") != 0) {
- last;
- }
-}
-
diff --git a/WebKitTools/Scripts/run-launcher b/WebKitTools/Scripts/run-launcher
deleted file mode 100755
index f2b58cb..0000000
--- a/WebKitTools/Scripts/run-launcher
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2007 Apple Computer, Inc. All rights reserved.
-# Copyright (C) 2007 Staikos Computing Services, Inc. <info@staikos.net>
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Simplified "run" script for WebKit Open Source Project.
-
-use strict;
-use File::Spec::Functions qw/catdir/;
-use File::Temp qw/tempfile/;
-use FindBin;
-use lib $FindBin::Bin;
-use webkitdirs;
-
-setConfiguration();
-my $productDir = productDir();
-my $launcherPath = productDir();
-my @args = @ARGV;
-
-# Check to see that all the frameworks are built.
-checkFrameworks();
-
-# Set paths according to the build system used
-if (isQt()) {
- my $libDir = catdir(productDir(), 'lib');
- $launcherPath = catdir($launcherPath, "bin", "QtLauncher");
-
- # Set up LD_LIBRARY_PATH to point to the product directory.
- print "Starting webkit launcher with LD_LIBRARY_PATH set to point to built WebKit in $libDir.\n";
-
- $ENV{LD_LIBRARY_PATH} = $ENV{LD_LIBRARY_PATH} ? "$libDir:$ENV{LD_LIBRARY_PATH}" : $libDir;
- $ENV{DYLD_LIBRARY_PATH} = $ENV{DYLD_LIBRARY_PATH} ? "$libDir:$ENV{DYLD_LIBRARY_PATH}" : $libDir;
-} else {
-
- if (isGtk()) {
- $launcherPath = catdir($launcherPath, "Programs", "GtkLauncher");
- # Strip --gtk from the arg-list, since otherwise GtkLauncher will try to
- # interpret it as a URL.
- @args = grep(!/^(--gtk)$/, @args);
- }
-
- print "Starting webkit launcher.\n";
-}
-
-exec $launcherPath, @args or die;
-
diff --git a/WebKitTools/Scripts/run-leaks b/WebKitTools/Scripts/run-leaks
deleted file mode 100755
index d8f89d3..0000000
--- a/WebKitTools/Scripts/run-leaks
+++ /dev/null
@@ -1,212 +0,0 @@
-#!/usr/bin/perl
-
-# Copyright (C) 2007 Apple Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Script to run the Mac OS X leaks tool with more expressive '-exclude' lists.
-
-use strict;
-use warnings;
-
-use File::Basename;
-use Getopt::Long;
-
-sub runLeaks($);
-sub parseLeaksOutput(\@);
-sub removeMatchingRecords(\@$\@);
-sub reportError($);
-
-sub main()
-{
- # Read options.
- my $usage =
- "Usage: " . basename($0) . " [options] pid | executable name\n" .
- " --exclude-callstack regexp Exclude leaks whose call stacks match the regular expression 'regexp'.\n" .
- " --exclude-type regexp Exclude leaks whose data types match the regular expression 'regexp'.\n" .
- " --help Show this help message.\n";
-
- my @callStacksToExclude = ();
- my @typesToExclude = ();
- my $help = 0;
-
- my $getOptionsResult = GetOptions(
- 'exclude-callstack:s' => \@callStacksToExclude,
- 'exclude-type:s' => \@typesToExclude,
- 'help' => \$help
- );
- my $pidOrExecutableName = $ARGV[0];
-
- if (!$getOptionsResult || $help) {
- print STDERR $usage;
- return 1;
- }
-
- if (!$pidOrExecutableName) {
- reportError("Missing argument: pid | executable.");
- print STDERR $usage;
- return 1;
- }
-
- # Run leaks tool.
- my $leaksOutput = runLeaks($pidOrExecutableName);
- if (!$leaksOutput) {
- return 1;
- }
-
- my $leakList = parseLeaksOutput(@$leaksOutput);
- if (!$leakList) {
- return 1;
- }
-
- # Filter output.
- my $leakCount = @$leakList;
- removeMatchingRecords(@$leakList, "callStack", @callStacksToExclude);
- removeMatchingRecords(@$leakList, "type", @typesToExclude);
- my $excludeCount = $leakCount - @$leakList;
-
- # Dump results.
- print $leaksOutput->[0];
- print $leaksOutput->[1];
- foreach my $leak (@$leakList) {
- print $leak->{"leaksOutput"};
- }
-
- if ($excludeCount) {
- print "$excludeCount leaks excluded (not printed)\n";
- }
-
- return 0;
-}
-
-exit(main());
-
-# Returns the output of the leaks tool in list form.
-sub runLeaks($)
-{
- my ($pidOrExecutableName) = @_;
-
- my @leaksOutput = `leaks $pidOrExecutableName`;
- if (!@leaksOutput) {
- reportError("Error running leaks tool.");
- return;
- }
-
- return \@leaksOutput;
-}
-
-# Returns a list of hash references with the keys { address, size, type, callStack, leaksOutput }
-sub parseLeaksOutput(\@)
-{
- my ($leaksOutput) = @_;
-
- # Format:
- # Process 00000: 1234 nodes malloced for 1234 KB
- # Process 00000: XX leaks for XXX total leaked bytes.
- # Leak: 0x00000000 size=1234 [instance of 'blah']
- # 0x00000000 0x00000000 0x00000000 0x00000000 a..d.e.e
- # ...
- # Call stack: leak_caller() | leak() | malloc
- #
- # We treat every line except for Process 00000: and Leak: as optional
-
- my ($leakCount) = ($leaksOutput->[1] =~ /[[:blank:]]+([0-9]+)[[:blank:]]+leaks?/);
- if (!defined($leakCount)) {
- reportError("Could not parse leak count reported by leaks tool.");
- return;
- }
-
- my @leakList = ();
- for my $line (@$leaksOutput) {
- next if $line =~ /^Process/;
- next if $line =~ /^node buffer added/;
-
- if ($line =~ /^Leak: /) {
- my ($address) = ($line =~ /Leak: ([[:xdigit:]x]+)/);
- if (!defined($address)) {
- reportError("Could not parse Leak address.");
- return;
- }
-
- my ($size) = ($line =~ /size=([[:digit:]]+)/);
- if (!defined($size)) {
- reportError("Could not parse Leak size.");
- return;
- }
-
- my ($type) = ($line =~ /'([^']+)'/); #'
- if (!defined($type)) {
- $type = ""; # The leaks tool sometimes omits the type.
- }
-
- my %leak = (
- "address" => $address,
- "size" => $size,
- "type" => $type,
- "callStack" => "", # The leaks tool sometimes omits the call stack.
- "leaksOutput" => $line
- );
- push(@leakList, \%leak);
- } else {
- $leakList[$#leakList]->{"leaksOutput"} .= $line;
- if ($line =~ /Call stack:/) {
- $leakList[$#leakList]->{"callStack"} = $line;
- }
- }
- }
-
- if (@leakList != $leakCount) {
- my $parsedLeakCount = @leakList;
- reportError("Parsed leak count($parsedLeakCount) does not match leak count reported by leaks tool($leakCount).");
- return;
- }
-
- return \@leakList;
-}
-
-sub removeMatchingRecords(\@$\@)
-{
- my ($recordList, $key, $regexpList) = @_;
-
- RECORD: for (my $i = 0; $i < @$recordList;) {
- my $record = $recordList->[$i];
-
- foreach my $regexp (@$regexpList) {
- if ($record->{$key} =~ $regexp) {
- splice(@$recordList, $i, 1);
- next RECORD;
- }
- }
-
- $i++;
- }
-}
-
-sub reportError($)
-{
- my ($errorMessage) = @_;
-
- print STDERR basename($0) . ": $errorMessage\n";
-}
diff --git a/WebKitTools/Scripts/run-mangleme-tests b/WebKitTools/Scripts/run-mangleme-tests
deleted file mode 100755
index 93b7894..0000000
--- a/WebKitTools/Scripts/run-mangleme-tests
+++ /dev/null
@@ -1,175 +0,0 @@
-#!/usr/bin/perl
-
-# Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com)
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# A script to semi-automatically run mangleme tests.
-
-use strict;
-use warnings;
-
-use Cwd;
-use FindBin;
-use Getopt::Long;
-use IPC::Open2;
-
-use lib $FindBin::Bin;
-use webkitdirs;
-
-sub openHTTPDIfNeeded();
-sub closeHTTPD();
-sub runSafariWithMangleme();
-
-# Argument handling
-my $guardMalloc = '';
-my $httpdPort = 8000;
-my $downloadTest;
-
-GetOptions(
- 'guard-malloc|g' => \$guardMalloc,
- 'get=s' => \$downloadTest,
- 'port=i' => \$httpdPort
-);
-
-
-setConfiguration();
-my $productDir = productDir();
-
-chdirWebKit();
-
-checkFrameworks();
-
-mkdir "WebKitBuild/mangleme";
-(system "/usr/bin/make", "-C", "WebKitTools/mangleme") == 0 or die;
-
-my $httpdOpen = 0;
-openHTTPDIfNeeded();
-
-if ($downloadTest) {
- system "/usr/bin/curl -o ~/Desktop/mangleme$downloadTest.html http://127.0.0.1:$httpdPort/remangle.cgi?$downloadTest";
- print "Saved the test as mangleme$downloadTest.html on the desktop\n";
-} else {
- runSafariWithMangleme();
- print "Last generated tests:\n";
- system "grep 'Mangle attempt' /tmp/WebKit/error_log.txt | tail -n -5 | awk ' {print \$4}'";
-}
-
-closeHTTPD();
-
-
-sub runSafariWithMangleme()
-{
- my $redirectTo;
- if (@ARGV) {
- $redirectTo = "http://127.0.0.1:$httpdPort/remangle.cgi?$ARGV[0]";
- } else {
- $redirectTo = "http://127.0.0.1:$httpdPort/mangle.cgi";
- }
-
- open REDIRECT_HTML, ">", "/tmp/WebKit/redirect.html" or die;
- print REDIRECT_HTML "<html>\n";
- print REDIRECT_HTML " <head>\n";
- print REDIRECT_HTML " <meta http-equiv=\"refresh\" content=\"1;URL=$redirectTo\" />\n";
- print REDIRECT_HTML " <script type=\"text/javascript\">\n";
- print REDIRECT_HTML " document.location = \"$redirectTo\";\n";
- print REDIRECT_HTML " </script>\n";
- print REDIRECT_HTML " </head>\n";
- print REDIRECT_HTML " <body>\n";
- print REDIRECT_HTML " </body>\n";
- print REDIRECT_HTML "</html>\n";
- close REDIRECT_HTML;
-
- local %ENV;
- $ENV{DYLD_INSERT_LIBRARIES} = "/usr/lib/libgmalloc.dylib" if $guardMalloc;
- system "WebKitTools/Scripts/run-safari", "-NSOpen", "/tmp/WebKit/redirect.html";
-}
-
-sub openHTTPDIfNeeded()
-{
- return if $httpdOpen;
-
- mkdir "/tmp/WebKit";
-
- if (-f "/tmp/WebKit/httpd.pid") {
- my $oldPid = `cat /tmp/WebKit/httpd.pid`;
- chomp $oldPid;
- if (0 != kill 0, $oldPid) {
- print "\nhttpd is already running: pid $oldPid, killing...\n";
- kill 15, $oldPid;
-
- my $retryCount = 20;
- while ((0 != kill 0, $oldPid) && $retryCount) {
- sleep 1;
- --$retryCount;
- }
-
- die "Timed out waiting for httpd to quit" unless $retryCount;
- }
- }
-
- my $testDirectory = getcwd() . "/LayoutTests";
- my $manglemeDirectory = getcwd() . "/WebKitBuild/mangleme";
- my $httpdPath = "/usr/sbin/httpd";
- my $httpdConfig = "$testDirectory/http/conf/httpd.conf";
- $httpdConfig = "$testDirectory/http/conf/apache2-httpd.conf" if `$httpdPath -v` =~ m|Apache/2|;
- my $documentRoot = "$manglemeDirectory";
- my $typesConfig = "$testDirectory/http/conf/mime.types";
- my $sslCertificate = "$testDirectory/http/conf/webkit-httpd.pem";
- my $listen = "127.0.0.1:$httpdPort";
-
- open2(\*HTTPDIN, \*HTTPDOUT, $httpdPath,
- "-f", "$httpdConfig",
- "-C", "DocumentRoot \"$documentRoot\"",
- "-C", "Listen $listen",
- "-c", "TypesConfig \"$typesConfig\"",
- "-c", "CustomLog \"/tmp/WebKit/access_log.txt\" common",
- "-c", "ErrorLog \"/tmp/WebKit/error_log.txt\"",
- "-c", "SSLCertificateFile \"$sslCertificate\"",
- # Apache wouldn't run CGIs with permissions==700 otherwise
- "-c", "User \"#$<\"");
-
- my $retryCount = 20;
- while (system("/usr/bin/curl -q --silent --stderr - --output /dev/null $listen") && $retryCount) {
- sleep 1;
- --$retryCount;
- }
-
- die "Timed out waiting for httpd to start" unless $retryCount;
-
- $httpdOpen = 1;
-}
-
-sub closeHTTPD()
-{
- return if !$httpdOpen;
-
- close HTTPDIN;
- close HTTPDOUT;
-
- kill 15, `cat /tmp/WebKit/httpd.pid` if -f "/tmp/WebKit/httpd.pid";
-
- $httpdOpen = 0;
-}
diff --git a/WebKitTools/Scripts/run-pageloadtest b/WebKitTools/Scripts/run-pageloadtest
deleted file mode 100755
index ad6daa1..0000000
--- a/WebKitTools/Scripts/run-pageloadtest
+++ /dev/null
@@ -1,92 +0,0 @@
-#!/usr/bin/perl
-
-# Copyright (C) 2006 Eric Seidel (eric@webkit.org)
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Script to run the WebKit Open Source Project page load tests (PLTs).
-
-# Run all the tests passed in on the command line.
-
-use strict;
-use warnings;
-
-use File::Basename;
-use File::Spec;
-use FindBin;
-use Getopt::Long;
-
-use lib $FindBin::Bin;
-use webkitdirs;
-
-# Argument handling
-my $testName = 'svg';
-my $showHelp = 0;
-
-my $usage =
- "Usage: " . basename($0) . "[options] testName\n" .
- " --help Show this help message\n";
-
-my $getOptionsResult = GetOptions('help' => \$showHelp);
-
-if (!$getOptionsResult || $showHelp) {
- print STDERR $usage;
- exit 1;
-}
-
-$testName = shift @ARGV if (@ARGV);
-
-my $safariExecutablePath = safariPath();
-my $safariResourcePath = File::Spec->catdir(dirname(dirname($safariExecutablePath)), "Resources");
-
-# Check to see that all the frameworks are built.
-checkFrameworks();
-
-chdirWebKit();
-
-if ($testName eq 'svg') {
- my $suiteFile = "PageLoadTests/$testName/$testName.pltsuite";
- my $webkitPath = sourceDir();
- `cat "$suiteFile" | perl -pe 's|WEBKIT_PATH|$webkitPath|' > $safariResourcePath/$testName.pltsuite`
-}
-
-die "Please copy ${testName}.pltsuite to ${safariResourcePath}/${testName}.pltsuite"
- if (! -f "${safariResourcePath}/${testName}.pltsuite");
-
-setConfiguration();
-
-my $productDir = productDir();
-
-# Set up DYLD_FRAMEWORK_PATH to point to the product directory.
-print "Starting Safari with DYLD_FRAMEWORK_PATH set to point to built WebKit in $productDir.\n";
-$ENV{DYLD_FRAMEWORK_PATH} = $productDir;
-$ENV{WEBKIT_UNSET_DYLD_FRAMEWORK_PATH} = "YES";
-
-my @testCommands = ('activate');
-# Autovicki would clear history, we skip that here as this is likely an active user account
-@testCommands = (@testCommands, ("run $testName", 'emptyCache', 'wait 30'));
-@testCommands = (@testCommands, (("run $testName", 'wait 10') x 3));
-my $testCommandsString = join('; ', @testCommands);
-exec $safariExecutablePath, '--test-commands', $testCommandsString or die;
diff --git a/WebKitTools/Scripts/run-safari b/WebKitTools/Scripts/run-safari
deleted file mode 100755
index f31fed3..0000000
--- a/WebKitTools/Scripts/run-safari
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2005, 2007 Apple Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Simplified "run" script for WebKit Open Source Project.
-
-use strict;
-use FindBin;
-use Getopt::Long qw(:config pass_through);
-use lib $FindBin::Bin;
-use webkitdirs;
-
-my $programName = basename($0);
-my $showHelp = 0;
-my $run64Bit;
-
-my $usage = <<EOF;
-Usage: $programName [options]
- --help Show this help message
- --64-bit Run in 64-bit mode
-EOF
-
-my $getOptionsResult = GetOptions(
- 'help' => \$showHelp,
- '64-bit!' => \$run64Bit
-);
-
-if (!$getOptionsResult || $showHelp) {
- print STDERR $usage;
- exit 1;
-}
-
-setRun64Bit($run64Bit);
-setConfiguration();
-
-# Check to see that all the frameworks are built.
-checkFrameworks();
-
-exit exitStatus(runSafari());
diff --git a/WebKitTools/Scripts/run-sunspider b/WebKitTools/Scripts/run-sunspider
deleted file mode 100755
index 2e58418..0000000
--- a/WebKitTools/Scripts/run-sunspider
+++ /dev/null
@@ -1,131 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2007 Apple Inc. All rights reserved.
-# Copyright (C) 2007 Eric Seidel <eric@webkit.org>
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
-# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-use strict;
-use FindBin;
-use Getopt::Long qw(:config pass_through);
-use lib $FindBin::Bin;
-use webkitdirs;
-use POSIX;
-
-# determine configuration, but default to "Release" instead of last-used configuration
-setConfiguration("Release");
-setConfiguration();
-my $configuration = configuration();
-
-my $root;
-my $testRuns = 10; # This number may be different from what sunspider defaults to (that's OK)
-my $runShark = 0;
-my $runShark20 = 0;
-my $runSharkCache = 0;
-my $ubench = 0;
-my $v8 = 0;
-my $setBaseline = 0;
-my $showHelp = 0;
-my $testsPattern;
-
-my $programName = basename($0);
-my $usage = <<EOF;
-Usage: $programName [options] [options to pass to build system]
- --help Show this help message
- --set-baseline Set baseline for future comparisons
- --root Path to root tools build
- --runs Number of times to run tests (default: $testRuns)
- --tests Only run tests matching provided pattern
- --shark Sample with the Mac OS X "Shark" performance testing tool (implies --runs=1)
- --shark20 Like --shark, but with a 20 microsecond sampling interval
- --shark-cache Like --shark, but performs a L2 cache-miss sample instead of time sample
- --ubench Use microbenchmark suite instead of regular tests (to check for core execution regressions)
- --v8 Use the V8 benchmark suite.
-EOF
-
-GetOptions('root=s' => sub { my ($x, $value) = @_; $root = $value; setConfigurationProductDir(Cwd::abs_path($root)); },
- 'runs=i' => \$testRuns,
- 'set-baseline' => \$setBaseline,
- 'shark' => \$runShark,
- 'shark20' => \$runShark20,
- 'shark-cache' => \$runSharkCache,
- 'ubench' => \$ubench,
- 'v8' => \$v8,
- 'tests=s' => \$testsPattern,
- 'help' => \$showHelp);
-
-if ($showHelp) {
- print STDERR $usage;
- exit 1;
-}
-
-sub buildJSC
-{
- if (!defined($root)){
- push(@ARGV, "--" . $configuration);
-
- chdirWebKit();
- my $buildResult = system "WebKitTools/Scripts/build-jsc", @ARGV;
- if ($buildResult) {
- print STDERR "Compiling jsc failed!\n";
- exit exitStatus($buildResult);
- }
- }
-}
-
-sub setupEnvironmentForExecution($)
-{
- my ($productDir) = @_;
- print "Starting sunspider with DYLD_FRAMEWORK_PATH set to point to built JavaScriptCore in $productDir.\n";
- $ENV{DYLD_FRAMEWORK_PATH} = $productDir;
- # FIXME: Other platforms may wish to augment this method to use LD_LIBRARY_PATH, etc.
-}
-
-sub jscPath($)
-{
- my ($productDir) = @_;
- my $jscName = "jsc";
- $jscName .= "_debug" if (isCygwin() && ($configuration eq "Debug"));
- return "$productDir/$jscName";
-}
-
-buildJSC();
-
-chdirWebKit();
-chdir("SunSpider");
-
-my $productDir = productDir();
-# FIXME: This hack should be pushed down into productDir()
-$productDir .= "/JavaScriptCore" if (isQt() or isGtk());
-
-setupEnvironmentForExecution($productDir);
-my @args = ("--shell", jscPath($productDir), "--runs", $testRuns);
-# This code could be removed if we chose to pass extra args to sunspider instead of Xcode
-push @args, "--set-baseline" if $setBaseline;
-push @args, "--shark" if $runShark;
-push @args, "--shark20" if $runShark20;
-push @args, "--shark-cache" if $runSharkCache;
-push @args, "--ubench" if $ubench;
-push @args, "--v8" if $v8;
-push @args, "--tests", $testsPattern if $testsPattern;
-
-exec "./sunspider", @args;
diff --git a/WebKitTools/Scripts/run-webkit-app b/WebKitTools/Scripts/run-webkit-app
deleted file mode 100755
index 36b9a58..0000000
--- a/WebKitTools/Scripts/run-webkit-app
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Simplified "run" script for Web Kit Open Source Project.
-
-use strict;
-use FindBin;
-use lib $FindBin::Bin;
-use webkitdirs;
-
-setConfiguration();
-my $productDir = productDir();
-
-die "Did not specify an application to open (e.g. run-webkit-app AppName).\n" unless length($ARGV[0]) > 0;
-
-# Check to see that all the frameworks are built.
-checkFrameworks();
-
-# Set up DYLD_FRAMEWORK_PATH to point to the product directory.
-print "Start $ARGV[0] with DYLD_FRAMEWORK_PATH set to point to built WebKit in $productDir.\n";
-$ENV{DYLD_FRAMEWORK_PATH} = $productDir;
-$ENV{WEBKIT_UNSET_DYLD_FRAMEWORK_PATH} = "YES";
-
-unshift(@ARGV, "-a");
-exec "open", @ARGV;
diff --git a/WebKitTools/Scripts/run-webkit-httpd b/WebKitTools/Scripts/run-webkit-httpd
deleted file mode 100755
index a64eef6..0000000
--- a/WebKitTools/Scripts/run-webkit-httpd
+++ /dev/null
@@ -1,127 +0,0 @@
-#!/usr/bin/perl
-
-# Copyright (C) 2005, 2006, 2007 Apple Inc. All rights reserved.
-# Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com)
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Script to run Apache with the same configuration as used in http layout tests.
-
-use strict;
-use warnings;
-
-use Cwd;
-use File::Basename;
-use Getopt::Long;
-use FindBin;
-
-use lib $FindBin::Bin;
-use webkitdirs;
-
-# Argument handling
-my $httpdPort = 8000;
-my $allInterfaces = 0;
-my $showHelp;
-
-my $result = GetOptions(
- 'all-interfaces|a' => \$allInterfaces,
- 'help|h' => \$showHelp,
- 'port=i' => \$httpdPort,
-);
-
-if (!$result || @ARGV || $showHelp) {
- print "Usage: " . basename($0) . " [options]\n";
- print " -a|--all-interfaces Bind to all interfaces\n";
- print " -h|--help Show this help message\n";
- print " -p|--port NNNN Bind to port NNNN\n";
- exit 1;
-}
-
-setConfiguration();
-my $productDir = productDir();
-chdirWebKit();
-
-mkdir "/tmp/WebKit";
-
-if (-f "/tmp/WebKit/httpd.pid") {
- my $oldPid = `cat /tmp/WebKit/httpd.pid`;
- chomp $oldPid;
- if (0 != kill 0, $oldPid) {
- print "\nhttpd is already running: pid $oldPid, killing...\n";
- kill 15, $oldPid;
-
- my $retryCount = 20;
- while ((0 != kill 0, $oldPid) && $retryCount) {
- sleep 1;
- --$retryCount;
- }
-
- die "Timed out waiting for httpd to quit" unless $retryCount;
- }
-}
-
-my $testDirectory = getcwd() . "/LayoutTests";
-my $httpdPath = "/usr/sbin/httpd";
-$httpdPath = "/usr/sbin/apache2" if isDebianBased();
-my $httpdConfig = "$testDirectory/http/conf/httpd.conf";
-$httpdConfig = "$testDirectory/http/conf/cygwin-httpd.conf" if isCygwin();
-$httpdConfig = "$testDirectory/http/conf/apache2-httpd.conf" if `$httpdPath -v` =~ m|Apache/2|;
-$httpdConfig = "$testDirectory/http/conf/apache2-debian-httpd.conf" if isDebianBased();
-my $documentRoot = "$testDirectory/http/tests";
-my $typesConfig = "$testDirectory/http/conf/mime.types";
-my $sslCertificate = "$testDirectory/http/conf/webkit-httpd.pem";
-
-my $listen = "127.0.0.1:$httpdPort";
-$listen = "$httpdPort" if ($allInterfaces);
-
-if ($allInterfaces) {
- print "Starting httpd on port $httpdPort (all interfaces)...\n";
-} else {
- print "Starting httpd on <http://$listen/>...\n";
-}
-print "Press Ctrl+C to stop it.\n\n";
-
-my @args = (
- "-f", "$httpdConfig",
- "-C", "DocumentRoot \"$documentRoot\"",
- "-C", "Listen $listen",
- "-c", "TypesConfig \"$typesConfig\"",
- "-c", "CustomLog |/usr/bin/tee common",
- "-c", "ErrorLog |/usr/bin/tee",
- # Apache wouldn't run CGIs with permissions==700 otherwise.
- "-c", "User \"#$<\"",
- # Run in single-process mode, do not detach from the controlling terminal.
- "-X",
- # Disable Keep-Alive support. Makes testing in multiple browsers easier (no need to wait
- # for another browser's connection to expire).
- "-c", "KeepAlive 0"
-);
-
-# FIXME: Enable this on Windows once <rdar://problem/5345985> is fixed
-push(@args, "-c", "SSLCertificateFile \"$sslCertificate\"") unless isCygwin();
-
-system($httpdPath, @args);
-
-unlink "/tmp/WebKit/httpd.pid";
diff --git a/WebKitTools/Scripts/run-webkit-nightly.cmd b/WebKitTools/Scripts/run-webkit-nightly.cmd
deleted file mode 100755
index 93037ab..0000000
--- a/WebKitTools/Scripts/run-webkit-nightly.cmd
+++ /dev/null
@@ -1,10 +0,0 @@
-@echo off
-set script="%TMP%\run-webkit-nightly2.cmd"
-set vsvars="%VS80COMNTOOLS%\vsvars32.bat"
-if exist %vsvars% (
- copy %vsvars% "%script%"
-) else (
- del "%script%"
-)
-FindSafari.exe %1 /printSafariLauncher >> "%script%"
-call %script%
diff --git a/WebKitTools/Scripts/run-webkit-tests b/WebKitTools/Scripts/run-webkit-tests
deleted file mode 100755
index 4f129b7..0000000
--- a/WebKitTools/Scripts/run-webkit-tests
+++ /dev/null
@@ -1,1862 +0,0 @@
-#!/usr/bin/perl
-
-# Copyright (C) 2005, 2006, 2007 Apple Inc. All rights reserved.
-# Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com)
-# Copyright (C) 2007 Matt Lilek (pewtermoose@gmail.com)
-# Copyright (C) 2007 Eric Seidel <eric@webkit.org>
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Script to run the WebKit Open Source Project layout tests.
-
-# Run all the tests passed in on the command line.
-# If no tests are passed, find all the .html, .shtml, .xml, .xhtml, .pl, .php (and svg) files in the test directory.
-
-# Run each text.
-# Compare against the existing file xxx-expected.txt.
-# If there is a mismatch, generate xxx-actual.txt and xxx-diffs.txt.
-
-# At the end, report:
-# the number of tests that got the expected results
-# the number of tests that ran, but did not get the expected results
-# the number of tests that failed to run
-# the number of tests that were run but had no expected results to compare against
-
-use strict;
-use warnings;
-
-use Cwd;
-use Fcntl qw(F_GETFL F_SETFL O_NONBLOCK);
-use File::Basename;
-use File::Copy;
-use File::Find;
-use File::Path;
-use File::Spec;
-use File::Spec::Functions;
-use FindBin;
-use Getopt::Long;
-use IPC::Open2;
-use IPC::Open3;
-use Time::HiRes qw(time usleep);
-
-use List::Util 'shuffle';
-
-use lib $FindBin::Bin;
-use webkitdirs;
-use POSIX;
-
-sub openDumpTool();
-sub closeDumpTool();
-sub dumpToolDidCrash();
-sub closeHTTPD();
-sub countAndPrintLeaks($$$);
-sub fileNameWithNumber($$);
-sub numericcmp($$);
-sub openHTTPDIfNeeded();
-sub pathcmp($$);
-sub processIgnoreTests($);
-sub slowestcmp($$);
-sub splitpath($);
-sub stripExtension($);
-sub isTextOnlyTest($);
-sub expectedDirectoryForTest($;$;$);
-sub countFinishedTest($$$$);
-sub testCrashedOrTimedOut($$$$$);
-sub sampleDumpTool();
-sub printFailureMessageForTest($$);
-sub toURL($);
-sub toWindowsPath($);
-sub closeCygpaths();
-sub validateSkippedArg($$;$);
-sub htmlForResultsSection(\@$&);
-sub deleteExpectedAndActualResults($);
-sub recordActualResultsAndDiff($$);
-sub buildPlatformHierarchy();
-sub epiloguesAndPrologues($$);
-sub parseLeaksandPrintUniqueLeaks();
-sub readFromDumpToolWithTimer(*;$);
-sub setFileHandleNonBlocking(*$);
-sub writeToFile($$);
-
-# Argument handling
-my $addPlatformExceptions = 0;
-my $complexText = 0;
-my $configuration = configuration();
-my $guardMalloc = '';
-my $httpdPort = 8000;
-my $httpdSSLPort = 8443;
-my $ignoreTests = '';
-my $launchSafari = 1;
-my $platform;
-my $pixelTests = '';
-my $quiet = '';
-my $report10Slowest = 0;
-my $resetResults = 0;
-my $shouldCheckLeaks = 0;
-my $showHelp = 0;
-my $testsPerDumpTool;
-my $testHTTP = 1;
-my $testMedia = 1;
-my $testResultsDirectory = "/tmp/layout-test-results";
-my $threaded = 0;
-my $tolerance = 0;
-my $treatSkipped = "default";
-my $verbose = 0;
-my $useValgrind = 0;
-my $strictTesting = 0;
-my $generateNewResults = 1;
-my $stripEditingCallbacks = isCygwin();
-my $runSample = 1;
-my $root;
-my $reverseTests = 0;
-my $randomizeTests = 0;
-my $mergeDepth;
-my @leaksFilenames;
-my $run64Bit;
-
-# Default to --no-http for Qt, Gtk and wx for now.
-$testHTTP = 0 if (isQt() || isGtk() || isWx());
-
-my $expectedTag = "expected";
-my $actualTag = "actual";
-my $diffsTag = "diffs";
-my $errorTag = "stderr";
-
-if (isTiger()) {
- $platform = "mac-tiger";
-} elsif (isLeopard()) {
- $platform = "mac-leopard";
-} elsif (isSnowLeopard()) {
- $platform = "mac-snowleopard";
-} elsif (isOSX()) {
- $platform = "mac";
-} elsif (isQt()) {
- $platform = "qt";
-} elsif (isGtk()) {
- $platform = "gtk";
-} elsif (isCygwin()) {
- $platform = "win";
-}
-
-if (!defined($platform)) {
- print "WARNING: Your platform is not recognized. Any platform-specific results will be generated in platform/undefined.\n";
- $platform = "undefined";
-}
-
-my $programName = basename($0);
-my $launchSafariDefault = $launchSafari ? "launch" : "do not launch";
-my $httpDefault = $testHTTP ? "run" : "do not run";
-my $sampleDefault = $runSample ? "run" : "do not run";
-
-# FIXME: "--strict" should be renamed to qt-mac-comparison, or something along those lines.
-my $usage = <<EOF;
-Usage: $programName [options] [testdir|testpath ...]
- --add-platform-exceptions Put new results for non-platform-specific failing tests into the platform-specific results directory
- --complex-text Use the complex text code path for all text (Mac OS X and Windows only)
- -c|--configuration config Set DumpRenderTree build configuration
- -g|--guard-malloc Enable malloc guard
- --help Show this help message
- --[no-]http Run (or do not run) http tests (default: $httpDefault)
- -i|--ignore-tests Comma-separated list of directories or tests to ignore
- --[no-]launch-safari Launch (or do not launch) Safari to display test results (default: $launchSafariDefault)
- -l|--leaks Enable leaks checking
- --[no-]new-test-results Generate results for new tests
- -p|--pixel-tests Enable pixel tests
- --tolerance t Ignore image differences less than this percentage (implies --pixel-tests)
- --platform Override the detected platform to use for tests and results (default: $platform)
- --port Web server port to use with http tests
- -q|--quiet Less verbose output
- --reset-results Reset ALL results (including pixel tests if --pixel-tests is set)
- -o|--results-directory Output results directory (default: $testResultsDirectory)
- --random Run the tests in a random order
- --reverse Run the tests in reverse alphabetical order
- --root Path to root tools build
- --[no-]sample-on-timeout Run sample on timeout (default: $sampleDefault) (Mac OS X only)
- -1|--singly Isolate each test case run (implies --verbose)
- --skipped=[default|ignore|only] Specifies how to treat the Skipped file
- default: Tests/directories listed in the Skipped file are not tested
- ignore: The Skipped file is ignored
- only: Only those tests/directories listed in the Skipped file will be run
- --slowest Report the 10 slowest tests
- --strict Do a comparison with the output on Mac (Qt only)
- --[no-]strip-editing-callbacks Remove editing callbacks from expected results
- -t|--threaded Run a concurrent JavaScript thead with each test
- --valgrind Run DumpRenderTree inside valgrind (Qt/Linux only)
- -v|--verbose More verbose output (overrides --quiet)
- -m|--merge-leak-depth arg Merges leak callStacks and prints the number of unique leaks beneath a callstack depth of arg. Defaults to 5.
- --64-bit run in 64bit mode
-EOF
-
-# Process @ARGV for configuration switches before calling GetOptions()
-$configuration = passedConfiguration() || configuration();
-
-my $getOptionsResult = GetOptions(
- 'complex-text' => \$complexText,
- 'c|configuration=s' => \$configuration,
- 'guard-malloc|g' => \$guardMalloc,
- 'help' => \$showHelp,
- 'http!' => \$testHTTP,
- 'ignore-tests|i=s' => \$ignoreTests,
- 'launch-safari!' => \$launchSafari,
- 'leaks|l' => \$shouldCheckLeaks,
- 'pixel-tests|p' => \$pixelTests,
- 'platform=s' => \$platform,
- 'port=i' => \$httpdPort,
- 'quiet|q' => \$quiet,
- 'reset-results' => \$resetResults,
- 'new-test-results!' => \$generateNewResults,
- 'results-directory|o=s' => \$testResultsDirectory,
- 'singly|1' => sub { $testsPerDumpTool = 1; },
- 'nthly=i' => \$testsPerDumpTool,
- 'skipped=s' => \&validateSkippedArg,
- 'slowest' => \$report10Slowest,
- 'threaded|t' => \$threaded,
- 'tolerance=f' => \$tolerance,
- 'verbose|v' => \$verbose,
- 'valgrind' => \$useValgrind,
- 'sample-on-timeout!' => \$runSample,
- 'strict' => \$strictTesting,
- 'strip-editing-callbacks!' => \$stripEditingCallbacks,
- 'random' => \$randomizeTests,
- 'reverse' => \$reverseTests,
- 'root=s' => \$root,
- 'add-platform-exceptions' => \$addPlatformExceptions,
- 'merge-leak-depth|m:5' => \$mergeDepth,
- '64-bit!' => \$run64Bit
-);
-
-if (!$getOptionsResult || $showHelp) {
- print STDERR $usage;
- exit 1;
-}
-
-my $ignoreSkipped = $treatSkipped eq "ignore";
-my $skippedOnly = $treatSkipped eq "only";
-
-!$skippedOnly || @ARGV == 0 or die "--skipped=only cannot be used when tests are specified on the command line.";
-
-setConfiguration($configuration);
-
-my $configurationOption = "--" . lc($configuration);
-
-$pixelTests = 1 if $tolerance > 0;
-
-$testsPerDumpTool = 1000 if !$testsPerDumpTool;
-
-$verbose = 1 if $testsPerDumpTool == 1;
-
-if ($shouldCheckLeaks && $testsPerDumpTool > 1000) {
- print STDERR "\nWARNING: Running more than 1000 tests at a time with MallocStackLogging enabled may cause a crash.\n\n";
-}
-
-# Stack logging does not play well with QuickTime on Tiger (rdar://problem/5537157)
-$testMedia = 0 if $shouldCheckLeaks && isTiger();
-
-setConfigurationProductDir(Cwd::abs_path($root)) if (defined($root));
-my $productDir = productDir();
-$productDir .= "/bin" if isQt();
-$productDir .= "/Programs" if isGtk();
-setRun64Bit($run64Bit);
-
-chdirWebKit();
-
-if (!defined($root)) {
- # Push the parameters to build-dumprendertree as an array
- my @args;
- push(@args, $configurationOption);
- push(@args, "--qt") if isQt();
- push(@args, "--gtk") if isGtk();
-
- if (isOSX()) {
- my $arch = preferredArchitecture();
- push(@args, "ARCHS=$arch");
- }
-
- my $buildResult = system "WebKitTools/Scripts/build-dumprendertree", @args;
- if ($buildResult) {
- print STDERR "Compiling DumpRenderTree failed!\n";
- exit exitStatus($buildResult);
- }
-}
-
-my $dumpToolName = "DumpRenderTree";
-$dumpToolName .= "_debug" if isCygwin() && $configuration ne "Release";
-my $dumpTool = "$productDir/$dumpToolName";
-die "can't find executable $dumpToolName (looked in $productDir)\n" unless -x $dumpTool;
-
-my $imageDiffTool = "$productDir/ImageDiff";
-$imageDiffTool .= "_debug" if isCygwin() && $configuration ne "Release";
-die "can't find executable $imageDiffTool (looked in $productDir)\n" if $pixelTests && !-x $imageDiffTool;
-
-checkFrameworks() unless isCygwin();
-
-my $layoutTestsName = "LayoutTests";
-my $testDirectory = File::Spec->rel2abs($layoutTestsName);
-my $expectedDirectory = $testDirectory;
-my $platformBaseDirectory = catdir($testDirectory, "platform");
-my $platformTestDirectory = catdir($platformBaseDirectory, $platform);
-my @platformHierarchy = buildPlatformHierarchy();
-
-$expectedDirectory = $ENV{"WebKitExpectedTestResultsDirectory"} if $ENV{"WebKitExpectedTestResultsDirectory"};
-
-my $testResults = catfile($testResultsDirectory, "results.html");
-
-print "Running tests from $testDirectory\n";
-
-my @tests = ();
-my %testType = ();
-
-system "ln", "-s", $testDirectory, "/tmp/LayoutTests" unless -x "/tmp/LayoutTests";
-
-my %ignoredFiles = ();
-my %ignoredDirectories = map { $_ => 1 } qw(platform);
-my %ignoredLocalDirectories = map { $_ => 1 } qw(.svn _svn resources);
-my %supportedFileExtensions = map { $_ => 1 } qw(html shtml xml xhtml pl php);
-if (checkWebCoreSVGSupport(0)) {
- $supportedFileExtensions{'svg'} = 1;
-} elsif (isCygwin()) {
- # FIXME: We should fix webkitdirs.pm:hasSVGSupport() to do the correct
- # check for Windows instead of forcing this here.
- $supportedFileExtensions{'svg'} = 1;
-} else {
- $ignoredLocalDirectories{'svg'} = 1;
-}
-if (!$testHTTP) {
- $ignoredDirectories{'http'} = 1;
-}
-
-if (!$testMedia) {
- $ignoredDirectories{'media'} = 1;
- $ignoredDirectories{'http/tests/media'} = 1;
-}
-
-if ($ignoreTests) {
- processIgnoreTests($ignoreTests);
-}
-
-if (!$ignoreSkipped) {
- foreach my $level (@platformHierarchy) {
- if (open SKIPPED, "<", "$level/Skipped") {
- if ($verbose && !$skippedOnly) {
- my ($dir, $name) = splitpath($level);
- print "Skipped tests in $name:\n";
- }
-
- while (<SKIPPED>) {
- my $skipped = $_;
- chomp $skipped;
- $skipped =~ s/^[ \n\r]+//;
- $skipped =~ s/[ \n\r]+$//;
- if ($skipped && $skipped !~ /^#/) {
- if ($skippedOnly) {
- push(@ARGV, $skipped);
- } else {
- if ($verbose) {
- print " $skipped\n";
- }
- processIgnoreTests($skipped);
- }
- }
- }
- close SKIPPED;
- }
- }
-}
-
-
-my $directoryFilter = sub {
- return () if exists $ignoredLocalDirectories{basename($File::Find::dir)};
- return () if exists $ignoredDirectories{File::Spec->abs2rel($File::Find::dir, $testDirectory)};
- return @_;
-};
-
-my $fileFilter = sub {
- my $filename = $_;
- if ($filename =~ /\.([^.]+)$/) {
- if (exists $supportedFileExtensions{$1}) {
- my $path = File::Spec->abs2rel(catfile($File::Find::dir, $filename), $testDirectory);
- push @tests, $path if !exists $ignoredFiles{$path};
- }
- }
-};
-
-for my $test (@ARGV) {
- $test =~ s/^($layoutTestsName|$testDirectory)\///;
- my $fullPath = catfile($testDirectory, $test);
- if (file_name_is_absolute($test)) {
- print "can't run test $test outside $testDirectory\n";
- } elsif (-f $fullPath) {
- my ($filename, $pathname, $fileExtension) = fileparse($test, qr{\.[^.]+$});
- if (!exists $supportedFileExtensions{substr($fileExtension, 1)}) {
- print "test $test does not have a supported extension\n";
- } elsif ($testHTTP || $pathname !~ /^http\//) {
- push @tests, $test;
- }
- } elsif (-d $fullPath) {
- find({ preprocess => $directoryFilter, wanted => $fileFilter }, $fullPath);
-
- for my $level (@platformHierarchy) {
- my $platformPath = catfile($level, $test);
- find({ preprocess => $directoryFilter, wanted => $fileFilter }, $platformPath) if (-d $platformPath);
- }
- } else {
- print "test $test not found\n";
- }
-}
-if (!scalar @ARGV) {
- find({ preprocess => $directoryFilter, wanted => $fileFilter }, $testDirectory);
-
- for my $level (@platformHierarchy) {
- find({ preprocess => $directoryFilter, wanted => $fileFilter }, $level);
- }
-}
-
-die "no tests to run\n" if !@tests;
-
-@tests = sort pathcmp @tests;
-
-my %counts;
-my %tests;
-my %imagesPresent;
-my %imageDifferences;
-my %durations;
-my $count = 0;
-my $leaksOutputFileNumber = 1;
-my $totalLeaks = 0;
-
-my @toolArgs = ();
-push @toolArgs, "--pixel-tests" if $pixelTests;
-push @toolArgs, "--threaded" if $threaded;
-push @toolArgs, "--complex-text" if $complexText;
-push @toolArgs, "-";
-
-my @diffToolArgs = ();
-push @diffToolArgs, "--tolerance", $tolerance;
-
-$| = 1;
-
-my $imageDiffToolPID;
-if ($pixelTests) {
- local %ENV;
- $ENV{MallocStackLogging} = 1 if $shouldCheckLeaks;
- $imageDiffToolPID = open2(\*DIFFIN, \*DIFFOUT, $imageDiffTool, @diffToolArgs) or die "unable to open $imageDiffTool\n";
- $ENV{MallocStackLogging} = 0 if $shouldCheckLeaks;
-}
-
-my $dumpToolPID;
-my $isDumpToolOpen = 0;
-my $dumpToolCrashed = 0;
-
-my $atLineStart = 1;
-my $lastDirectory = "";
-
-my $isHttpdOpen = 0;
-
-sub catch_pipe { $dumpToolCrashed = 1; }
-$SIG{"PIPE"} = "catch_pipe";
-
-print "Testing ", scalar @tests, " test cases.\n";
-my $overallStartTime = time;
-
-my %expectedResultPaths;
-
-# Reverse the tests
-@tests = reverse @tests if $reverseTests;
-
-# Shuffle the array
-@tests = shuffle(@tests) if $randomizeTests;
-
-for my $test (@tests) {
- next if $test eq 'results.html';
-
- my $newDumpTool = not $isDumpToolOpen;
- openDumpTool();
-
- my $base = stripExtension($test);
- my $expectedExtension = ".txt";
-
- my $dir = $base;
- $dir =~ s|/[^/]+$||;
-
- if ($newDumpTool || $dir ne $lastDirectory) {
- foreach my $logue (epiloguesAndPrologues($newDumpTool ? "" : $lastDirectory, $dir)) {
- if (isCygwin()) {
- $logue = toWindowsPath($logue);
- } else {
- $logue = canonpath($logue);
- }
- if ($verbose) {
- print "running epilogue or prologue $logue\n";
- }
- print OUT "$logue\n";
- # Throw away output from DumpRenderTree.
- # Once for the test output and once for pixel results (empty)
- while (<IN>) {
- last if /#EOF/;
- }
- while (<IN>) {
- last if /#EOF/;
- }
- }
- }
-
- if ($verbose) {
- print "running $test -> ";
- $atLineStart = 0;
- } elsif (!$quiet) {
- if ($dir ne $lastDirectory) {
- print "\n" unless $atLineStart;
- print "$dir ";
- }
- print ".";
- $atLineStart = 0;
- }
-
- $lastDirectory = $dir;
-
- my $result;
-
- my $startTime = time if $report10Slowest;
-
- # Try to read expected hash file for pixel tests
- my $suffixExpectedHash = "";
- if ($pixelTests && !$resetResults) {
- my $expectedPixelDir = expectedDirectoryForTest($base, 0, "png");
- if (open EXPECTEDHASH, "$expectedPixelDir/$base-$expectedTag.checksum") {
- my $expectedHash = <EXPECTEDHASH>;
- chomp($expectedHash);
- close EXPECTEDHASH;
-
- # Format expected hash into a suffix string that is appended to the path / URL passed to DRT
- $suffixExpectedHash = "'$expectedHash";
- }
- }
-
- if ($test !~ /^http\//) {
- my $testPath = "$testDirectory/$test";
- if (isCygwin()) {
- $testPath = toWindowsPath($testPath);
- } else {
- $testPath = canonpath($testPath);
- }
- print OUT "$testPath$suffixExpectedHash\n";
- } else {
- openHTTPDIfNeeded();
- if ($test !~ /^http\/tests\/local\// && $test !~ /^http\/tests\/ssl\// && $test !~ /^http\/tests\/media\//) {
- my $path = canonpath($test);
- $path =~ s/^http\/tests\///;
- print OUT "http://127.0.0.1:$httpdPort/$path$suffixExpectedHash\n";
- } elsif ($test =~ /^http\/tests\/ssl\//) {
- my $path = canonpath($test);
- $path =~ s/^http\/tests\///;
- print OUT "https://127.0.0.1:$httpdSSLPort/$path$suffixExpectedHash\n";
- } else {
- my $testPath = "$testDirectory/$test";
- if (isCygwin()) {
- $testPath = toWindowsPath($testPath);
- } else {
- $testPath = canonpath($testPath);
- }
- print OUT "$testPath$suffixExpectedHash\n";
- }
- }
-
- # DumpRenderTree is expected to dump two "blocks" to stdout for each test.
- # Each block is terminated by a #EOF on a line by itself.
- # The first block is the output of the test (in text, RenderTree or other formats).
- # The second block is for optional pixel data in PNG format, and may be empty if
- # pixel tests are not being run, or the test does not dump pixels (e.g. text tests).
-
- my $actualRead = readFromDumpToolWithTimer(IN);
- my $errorRead = readFromDumpToolWithTimer(ERROR, $actualRead->{status} eq "timedOut");
-
- my $actual = $actualRead->{output};
- my $error = $errorRead->{output};
-
- $expectedExtension = $actualRead->{extension};
- my $expectedFileName = "$base-$expectedTag.$expectedExtension";
-
- my $isText = isTextOnlyTest($actual);
-
- my $expectedDir = expectedDirectoryForTest($base, $isText, $expectedExtension);
- $expectedResultPaths{$base} = "$expectedDir/$expectedFileName";
-
- unless ($actualRead->{status} eq "success" && $errorRead->{status} eq "success") {
- my $crashed = $actualRead->{status} eq "crashed" || $errorRead->{status} eq "crashed";
- testCrashedOrTimedOut($test, $base, $crashed, $actual, $error);
- countFinishedTest($test, $base, $crashed ? "crash" : "timedout", 0);
- next;
- }
-
- $durations{$test} = time - $startTime if $report10Slowest;
-
- my $expected;
-
- if (!$resetResults && open EXPECTED, "<", "$expectedDir/$expectedFileName") {
- $expected = "";
- while (<EXPECTED>) {
- next if $stripEditingCallbacks && $_ =~ /^EDITING DELEGATE:/;
- $expected .= $_;
- }
- close EXPECTED;
- }
- my $expectedMac;
- if (!isOSX() && $strictTesting && !$isText) {
- if (!$resetResults && open EXPECTED, "<", "$testDirectory/platform/mac/$expectedFileName") {
- $expectedMac = "";
- while (<EXPECTED>) {
- $expectedMac .= $_;
- }
- close EXPECTED;
- }
- }
-
- if ($shouldCheckLeaks && $testsPerDumpTool == 1) {
- print " $test -> ";
- }
-
- my $actualPNG = "";
- my $diffPNG = "";
- my $diffPercentage = "";
- my $diffResult = "passed";
-
- my $actualHash = "";
- my $expectedHash = "";
- my $actualPNGSize = 0;
-
- while (<IN>) {
- last if /#EOF/;
- if (/ActualHash: ([a-f0-9]{32})/) {
- $actualHash = $1;
- } elsif (/ExpectedHash: ([a-f0-9]{32})/) {
- $expectedHash = $1;
- } elsif (/Content-Length: (\d+)\s*/) {
- $actualPNGSize = $1;
- read(IN, $actualPNG, $actualPNGSize);
- }
- }
-
- if ($verbose && $pixelTests && !$resetResults && $actualPNGSize) {
- if ($actualHash eq "" && $expectedHash eq "") {
- printFailureMessageForTest($test, "WARNING: actual & expected pixel hashes are missing!");
- } elsif ($actualHash eq "") {
- printFailureMessageForTest($test, "WARNING: actual pixel hash is missing!");
- } elsif ($expectedHash eq "") {
- printFailureMessageForTest($test, "WARNING: expected pixel hash is missing!");
- }
- }
-
- if ($actualPNGSize > 0) {
- my $expectedPixelDir = expectedDirectoryForTest($base, 0, "png");
-
- if (!$resetResults && ($expectedHash ne $actualHash || ($actualHash eq "" && $expectedHash eq ""))) {
- if (-f "$expectedPixelDir/$base-$expectedTag.png") {
- my $expectedPNGSize = -s "$expectedPixelDir/$base-$expectedTag.png";
- my $expectedPNG = "";
- open EXPECTEDPNG, "$expectedPixelDir/$base-$expectedTag.png";
- read(EXPECTEDPNG, $expectedPNG, $expectedPNGSize);
-
- print DIFFOUT "Content-Length: $actualPNGSize\n";
- print DIFFOUT $actualPNG;
-
- print DIFFOUT "Content-Length: $expectedPNGSize\n";
- print DIFFOUT $expectedPNG;
-
- while (<DIFFIN>) {
- last if /^error/ || /^diff:/;
- if (/Content-Length: (\d+)\s*/) {
- read(DIFFIN, $diffPNG, $1);
- }
- }
-
- if (/^diff: (.+)% (passed|failed)/) {
- $diffPercentage = $1;
- $imageDifferences{$base} = $diffPercentage;
- $diffResult = $2;
- }
-
- if ($diffPercentage == 0) {
- printFailureMessageForTest($test, "pixel hash failed (but pixel test still passes)");
- }
- } elsif ($verbose) {
- printFailureMessageForTest($test, "WARNING: expected image is missing!");
- }
- }
-
- if ($resetResults || !-f "$expectedPixelDir/$base-$expectedTag.png") {
- mkpath catfile($expectedPixelDir, dirname($base)) if $testDirectory ne $expectedPixelDir;
- writeToFile("$expectedPixelDir/$base-$expectedTag.png", $actualPNG);
- }
-
- if ($actualHash ne "" && ($resetResults || !-f "$expectedPixelDir/$base-$expectedTag.checksum")) {
- writeToFile("$expectedPixelDir/$base-$expectedTag.checksum", $actualHash);
- }
- }
-
- if (!isOSX() && $strictTesting && !$isText) {
- if (defined $expectedMac) {
- my $simplified_actual;
- $simplified_actual = $actual;
- $simplified_actual =~ s/at \(-?[0-9]+,-?[0-9]+\) *//g;
- $simplified_actual =~ s/size -?[0-9]+x-?[0-9]+ *//g;
- $simplified_actual =~ s/text run width -?[0-9]+: //g;
- $simplified_actual =~ s/text run width -?[0-9]+ [a-zA-Z ]+: //g;
- $simplified_actual =~ s/RenderButton {BUTTON} .*/RenderButton {BUTTON}/g;
- $simplified_actual =~ s/RenderImage {INPUT} .*/RenderImage {INPUT}/g;
- $simplified_actual =~ s/RenderBlock {INPUT} .*/RenderBlock {INPUT}/g;
- $simplified_actual =~ s/RenderTextControl {INPUT} .*/RenderTextControl {INPUT}/g;
- $simplified_actual =~ s/\([0-9]+px/px/g;
- $simplified_actual =~ s/ *" *\n +" */ /g;
- $simplified_actual =~ s/" +$/"/g;
-
- $simplified_actual =~ s/- /-/g;
- $simplified_actual =~ s/\n( *)"\s+/\n$1"/g;
- $simplified_actual =~ s/\s+"\n/"\n/g;
-
- $expectedMac =~ s/at \(-?[0-9]+,-?[0-9]+\) *//g;
- $expectedMac =~ s/size -?[0-9]+x-?[0-9]+ *//g;
- $expectedMac =~ s/text run width -?[0-9]+: //g;
- $expectedMac =~ s/text run width -?[0-9]+ [a-zA-Z ]+: //g;
- $expectedMac =~ s/RenderButton {BUTTON} .*/RenderButton {BUTTON}/g;
- $expectedMac =~ s/RenderImage {INPUT} .*/RenderImage {INPUT}/g;
- $expectedMac =~ s/RenderBlock {INPUT} .*/RenderBlock {INPUT}/g;
- $expectedMac =~ s/RenderTextControl {INPUT} .*/RenderTextControl {INPUT}/g;
- $expectedMac =~ s/\([0-9]+px/px/g;
- $expectedMac =~ s/ *" *\n +" */ /g;
- $expectedMac =~ s/" +$/"/g;
-
- $expectedMac =~ s/- /-/g;
- $expectedMac =~ s/\n( *)"\s+/\n$1"/g;
- $expectedMac =~ s/\s+"\n/"\n/g;
-
- if ($simplified_actual ne $expectedMac) {
- writeToFile("/tmp/actual.txt", $simplified_actual);
- writeToFile("/tmp/expected.txt", $expectedMac);
- system "diff -u \"/tmp/expected.txt\" \"/tmp/actual.txt\" > \"/tmp/simplified.diff\"";
-
- $diffResult = "failed";
- if ($verbose) {
- print "\n";
- system "cat /tmp/simplified.diff";
- print "failed!!!!!";
- }
- }
- }
- }
-
- if (dumpToolDidCrash()) {
- $result = "crash";
- testCrashedOrTimedOut($test, $base, 1, $actual, $error);
- } elsif (!defined $expected) {
- if ($verbose) {
- print "new " . ($resetResults ? "result" : "test") ."\n";
- $atLineStart = 1;
- }
- $result = "new";
-
- if ($generateNewResults || $resetResults) {
- mkpath catfile($expectedDir, dirname($base)) if $testDirectory ne $expectedDir;
- writeToFile("$expectedDir/$expectedFileName", $actual);
- }
- deleteExpectedAndActualResults($base);
- unless ($resetResults) {
- # Always print the file name for new tests, as they will probably need some manual inspection.
- # in verbose mode we already printed the test case, so no need to do it again.
- unless ($verbose) {
- print "\n" unless $atLineStart;
- print "$test -> ";
- }
- my $resultsDir = catdir($expectedDir, dirname($base));
- print "new (results generated in $resultsDir)\n";
- $atLineStart = 1;
- }
- } elsif ($actual eq $expected && $diffResult eq "passed") {
- if ($verbose) {
- print "succeeded\n";
- $atLineStart = 1;
- }
- $result = "match";
- deleteExpectedAndActualResults($base);
- } else {
- $result = "mismatch";
-
- my $message = $actual eq $expected ? "pixel test failed" : "failed";
-
- if ($actual ne $expected && $addPlatformExceptions) {
- my $testBase = catfile($testDirectory, $base);
- my $expectedBase = catfile($expectedDir, $base);
- my $testIsMaximallyPlatformSpecific = $testBase =~ m|^\Q$platformTestDirectory\E/|;
- my $expectedResultIsMaximallyPlatformSpecific = $expectedBase =~ m|^\Q$platformTestDirectory\E/|;
- if (!$testIsMaximallyPlatformSpecific && !$expectedResultIsMaximallyPlatformSpecific) {
- mkpath catfile($platformTestDirectory, dirname($base));
- my $expectedFile = catfile($platformTestDirectory, "$expectedFileName");
- writeToFile("$expectedFile", $actual);
- $message .= " (results generated in $platformTestDirectory)";
- }
- }
-
- printFailureMessageForTest($test, $message);
-
- my $dir = "$testResultsDirectory/$base";
- $dir =~ s|/([^/]+)$|| or die "Failed to find test name from base\n";
- my $testName = $1;
- mkpath $dir;
-
- deleteExpectedAndActualResults($base);
- recordActualResultsAndDiff($base, $actual);
-
- if ($pixelTests && $diffPNG && $diffPNG ne "") {
- $imagesPresent{$base} = 1;
-
- writeToFile("$testResultsDirectory/$base-$actualTag.png", $actualPNG);
- writeToFile("$testResultsDirectory/$base-$diffsTag.png", $diffPNG);
-
- my $expectedPixelDir = expectedDirectoryForTest($base, 0, "png");
- copy("$expectedPixelDir/$base-$expectedTag.png", "$testResultsDirectory/$base-$expectedTag.png");
-
- open DIFFHTML, ">$testResultsDirectory/$base-$diffsTag.html" or die;
- print DIFFHTML "<html>\n";
- print DIFFHTML "<head>\n";
- print DIFFHTML "<title>$base Image Compare</title>\n";
- print DIFFHTML "<script language=\"Javascript\" type=\"text/javascript\">\n";
- print DIFFHTML "var currentImage = 0;\n";
- print DIFFHTML "var imageNames = new Array(\"Actual\", \"Expected\");\n";
- print DIFFHTML "var imagePaths = new Array(\"$testName-$actualTag.png\", \"$testName-$expectedTag.png\");\n";
- if (-f "$testDirectory/$base-w3c.png") {
- copy("$testDirectory/$base-w3c.png", "$testResultsDirectory/$base-w3c.png");
- print DIFFHTML "imageNames.push(\"W3C\");\n";
- print DIFFHTML "imagePaths.push(\"$testName-w3c.png\");\n";
- }
- print DIFFHTML "function animateImage() {\n";
- print DIFFHTML " var image = document.getElementById(\"animatedImage\");\n";
- print DIFFHTML " var imageText = document.getElementById(\"imageText\");\n";
- print DIFFHTML " image.src = imagePaths[currentImage];\n";
- print DIFFHTML " imageText.innerHTML = imageNames[currentImage] + \" Image\";\n";
- print DIFFHTML " currentImage = (currentImage + 1) % imageNames.length;\n";
- print DIFFHTML " setTimeout('animateImage()',2000);\n";
- print DIFFHTML "}\n";
- print DIFFHTML "</script>\n";
- print DIFFHTML "</head>\n";
- print DIFFHTML "<body onLoad=\"animateImage();\">\n";
- print DIFFHTML "<table>\n";
- if ($diffPercentage) {
- print DIFFHTML "<tr>\n";
- print DIFFHTML "<td>Difference between images: <a href=\"$testName-$diffsTag.png\">$diffPercentage%</a></td>\n";
- print DIFFHTML "</tr>\n";
- }
- print DIFFHTML "<tr>\n";
- print DIFFHTML "<td><a href=\"" . toURL("$testDirectory/$test") . "\">test file</a></td>\n";
- print DIFFHTML "</tr>\n";
- print DIFFHTML "<tr>\n";
- print DIFFHTML "<td id=\"imageText\" style=\"text-weight: bold;\">Actual Image</td>\n";
- print DIFFHTML "</tr>\n";
- print DIFFHTML "<tr>\n";
- print DIFFHTML "<td><img src=\"$testName-$actualTag.png\" id=\"animatedImage\"></td>\n";
- print DIFFHTML "</tr>\n";
- print DIFFHTML "</table>\n";
- print DIFFHTML "</body>\n";
- print DIFFHTML "</html>\n";
- }
- }
-
- if ($error) {
- my $dir = "$testResultsDirectory/$base";
- $dir =~ s|/([^/]+)$|| or die "Failed to find test name from base\n";
- mkpath $dir;
-
- writeToFile("$testResultsDirectory/$base-$errorTag.txt", $error);
-
- $counts{error}++;
- push @{$tests{error}}, $test;
- }
-
- countFinishedTest($test, $base, $result, $isText);
-}
-printf "\n%0.2fs total testing time\n", (time - $overallStartTime) . "";
-
-!$isDumpToolOpen || die "Failed to close $dumpToolName.\n";
-
-closeHTTPD();
-
-# Because multiple instances of this script are running concurrently we cannot
-# safely delete this symlink.
-# system "rm /tmp/LayoutTests";
-
-# FIXME: Do we really want to check the image-comparison tool for leaks every time?
-if ($shouldCheckLeaks && $pixelTests) {
- $totalLeaks += countAndPrintLeaks("ImageDiff", $imageDiffToolPID, "$testResultsDirectory/ImageDiff-leaks.txt");
-}
-
-if ($totalLeaks) {
- if ($mergeDepth) {
- parseLeaksandPrintUniqueLeaks();
- }
- else {
- print "\nWARNING: $totalLeaks total leaks found!\n";
- print "See above for individual leaks results.\n" if ($leaksOutputFileNumber > 2);
- }
-}
-
-close IN;
-close OUT;
-close ERROR;
-
-if ($report10Slowest) {
- print "\n\nThe 10 slowest tests:\n\n";
- my $count = 0;
- for my $test (sort slowestcmp keys %durations) {
- printf "%0.2f secs: %s\n", $durations{$test}, $test;
- last if ++$count == 10;
- }
-}
-
-print "\n";
-
-if ($skippedOnly && $counts{"match"}) {
- print "The following tests are in the Skipped file (" . File::Spec->abs2rel("$platformTestDirectory/Skipped", $testDirectory) . "), but succeeded:\n";
- foreach my $test (@{$tests{"match"}}) {
- print " $test\n";
- }
-}
-
-if ($resetResults || ($counts{match} && $counts{match} == $count)) {
- print "all $count test cases succeeded\n";
- unlink $testResults;
- exit;
-}
-
-
-my %text = (
- match => "succeeded",
- mismatch => "had incorrect layout",
- new => "were new",
- timedout => "timed out",
- crash => "crashed",
- error => "had stderr output"
-);
-
-for my $type ("match", "mismatch", "new", "timedout", "crash", "error") {
- my $c = $counts{$type};
- if ($c) {
- my $t = $text{$type};
- my $message;
- if ($c == 1) {
- $t =~ s/were/was/;
- $message = sprintf "1 test case (%d%%) %s\n", 1 * 100 / $count, $t;
- } else {
- $message = sprintf "%d test cases (%d%%) %s\n", $c, $c * 100 / $count, $t;
- }
- $message =~ s-\(0%\)-(<1%)-;
- print $message;
- }
-}
-
-mkpath $testResultsDirectory;
-
-open HTML, ">", $testResults or die;
-print HTML "<html>\n";
-print HTML "<head>\n";
-print HTML "<title>Layout Test Results</title>\n";
-print HTML "</head>\n";
-print HTML "<body>\n";
-
-print HTML htmlForResultsSection(@{$tests{mismatch}}, "Tests where results did not match expected results", \&linksForMismatchTest);
-print HTML htmlForResultsSection(@{$tests{timedout}}, "Tests that timed out", \&linksForErrorTest);
-print HTML htmlForResultsSection(@{$tests{crash}}, "Tests that caused the DumpRenderTree tool to crash", \&linksForErrorTest);
-print HTML htmlForResultsSection(@{$tests{error}}, "Tests that had stderr output", \&linksForErrorTest);
-print HTML htmlForResultsSection(@{$tests{new}}, "Tests that had no expected results (probably new)", \&linksForNewTest);
-
-print HTML "</body>\n";
-print HTML "</html>\n";
-close HTML;
-
-if (isQt()) {
- system "WebKitTools/Scripts/run-launcher", "--qt", $configurationOption, $testResults if $launchSafari;
-} elsif (isGtk()) {
- system "WebKitTools/Scripts/run-launcher", "--gtk", $configurationOption, $testResults if $launchSafari;
-} elsif (isCygwin()) {
- system "cygstart", $testResults if $launchSafari;
-} else {
- system "WebKitTools/Scripts/run-safari", $configurationOption, "-NSOpen", $testResults if $launchSafari;
-}
-
-closeCygpaths() if isCygwin();
-
-exit 1;
-
-sub countAndPrintLeaks($$$)
-{
- my ($dumpToolName, $dumpToolPID, $leaksFilePath) = @_;
-
- print "\n" unless $atLineStart;
- $atLineStart = 1;
-
- # We are excluding the following reported leaks so they don't get in our way when looking for WebKit leaks:
- # This allows us ignore known leaks and only be alerted when new leaks occur. Some leaks are in the old
- # versions of the system frameworks that are being used by the leaks bots. Even though a leak has been
- # fixed, it will be listed here until the bot has been updated with the newer frameworks.
-
- my @typesToExclude = (
- );
-
- my @callStacksToExclude = (
- "Flash_EnforceLocalSecurity" # leaks in Flash plug-in code, rdar://problem/4449747
- );
-
- if (isTiger()) {
- # Leak list for the version of Tiger used on the build bot.
- push @callStacksToExclude, (
- "CFRunLoopRunSpecific \\| malloc_zone_malloc", "CFRunLoopRunSpecific \\| CFAllocatorAllocate ", # leak in CFRunLoopRunSpecific, rdar://problem/4670839
- "CGImageSourceGetPropertiesAtIndex", # leak in ImageIO, rdar://problem/4628809
- "FOGetCoveredUnicodeChars", # leak in ATS, rdar://problem/3943604
- "GetLineDirectionPreference", "InitUnicodeUtilities", # leaks tool falsely reporting leak in CFNotificationCenterAddObserver, rdar://problem/4964790
- "ICCFPrefWrapper::GetPrefDictionary", # leaks in Internet Config. code, rdar://problem/4449794
- "NSHTTPURLProtocol setResponseHeader:", # leak in multipart/mixed-replace handling in Foundation, no Radar, but fixed in Leopard
- "NSURLCache cachedResponseForRequest", # leak in CFURL cache, rdar://problem/4768430
- "PCFragPrepareClosureFromFile", # leak in Code Fragment Manager, rdar://problem/3426998
- "WebCore::Selection::toRange", # bug in 'leaks', rdar://problem/4967949
- "WebCore::SubresourceLoader::create", # bug in 'leaks', rdar://problem/4985806
- "_CFPreferencesDomainDeepCopyDictionary", # leak in CFPreferences, rdar://problem/4220786
- "_objc_msgForward", # leak in NSSpellChecker, rdar://problem/4965278
- "gldGetString", # leak in OpenGL, rdar://problem/5013699
- "_setDefaultUserInfoFromURL", # leak in NSHTTPAuthenticator, rdar://problem/5546453
- "SSLHandshake", # leak in SSL, rdar://problem/5546440
- "SecCertificateCreateFromData", # leak in SSL code, rdar://problem/4464397
- );
- push @typesToExclude, (
- "THRD", # bug in 'leaks', rdar://problem/3387783
- "DRHT", # ditto (endian little hate i)
- );
- }
-
- if (isLeopard()) {
- # Leak list for the version of Leopard used on the build bot.
- push @callStacksToExclude, (
- "CFHTTPMessageAppendBytes", # leak in CFNetwork, rdar://problem/5435912
- "sendDidReceiveDataCallback", # leak in CFNetwork, rdar://problem/5441619
- "_CFHTTPReadStreamReadMark", # leak in CFNetwork, rdar://problem/5441468
- "httpProtocolStart", # leak in CFNetwork, rdar://problem/5468837
- "_CFURLConnectionSendCallbacks", # leak in CFNetwork, rdar://problem/5441600
- "DispatchQTMsg", # leak in QuickTime, PPC only, rdar://problem/5667132
- "QTMovieContentView createVisualContext", # leak in QuickTime, PPC only, rdar://problem/5667132
- "_CopyArchitecturesForJVMVersion", # leak in Java, rdar://problem/5910823
- );
- }
-
- my $leaksTool = sourceDir() . "/WebKitTools/Scripts/run-leaks";
- my $excludeString = "--exclude-callstack '" . (join "' --exclude-callstack '", @callStacksToExclude) . "'";
- $excludeString .= " --exclude-type '" . (join "' --exclude-type '", @typesToExclude) . "'" if @typesToExclude;
-
- print " ? checking for leaks in $dumpToolName\n";
- my $leaksOutput = `$leaksTool $excludeString $dumpToolPID`;
- my ($count, $bytes) = $leaksOutput =~ /Process $dumpToolPID: (\d+) leaks? for (\d+) total/;
- my ($excluded) = $leaksOutput =~ /(\d+) leaks? excluded/;
-
- my $adjustedCount = $count;
- $adjustedCount -= $excluded if $excluded;
-
- if (!$adjustedCount) {
- print " - no leaks found\n";
- unlink $leaksFilePath;
- return 0;
- } else {
- my $dir = $leaksFilePath;
- $dir =~ s|/[^/]+$|| or die;
- mkpath $dir;
-
- if ($excluded) {
- print " + $adjustedCount leaks ($bytes bytes including $excluded excluded leaks) were found, details in $leaksFilePath\n";
- } else {
- print " + $count leaks ($bytes bytes) were found, details in $leaksFilePath\n";
- }
-
- writeToFile($leaksFilePath, $leaksOutput);
-
- push( @leaksFilenames, $leaksFilePath );
- }
-
- return $adjustedCount;
-}
-
-sub writeToFile($$)
-{
- my ($filePath, $contents) = @_;
- open NEWFILE, ">", "$filePath" or die "could not create $filePath\n";
- print NEWFILE $contents;
- close NEWFILE;
-}
-
-# Break up a path into the directory (with slash) and base name.
-sub splitpath($)
-{
- my ($path) = @_;
-
- my $pathSeparator = "/";
- my $dirname = dirname($path) . $pathSeparator;
- $dirname = "" if $dirname eq "." . $pathSeparator;
-
- return ($dirname, basename($path));
-}
-
-# Sort first by directory, then by file, so all paths in one directory are grouped
-# rather than being interspersed with items from subdirectories.
-# Use numericcmp to sort directory and filenames to make order logical.
-sub pathcmp($$)
-{
- my ($patha, $pathb) = @_;
-
- my ($dira, $namea) = splitpath($patha);
- my ($dirb, $nameb) = splitpath($pathb);
-
- return numericcmp($dira, $dirb) if $dira ne $dirb;
- return numericcmp($namea, $nameb);
-}
-
-# Sort numeric parts of strings as numbers, other parts as strings.
-# Makes 1.33 come after 1.3, which is cool.
-sub numericcmp($$)
-{
- my ($aa, $bb) = @_;
-
- my @a = split /(\d+)/, $aa;
- my @b = split /(\d+)/, $bb;
-
- # Compare one chunk at a time.
- # Each chunk is either all numeric digits, or all not numeric digits.
- while (@a && @b) {
- my $a = shift @a;
- my $b = shift @b;
-
- # Use numeric comparison if chunks are non-equal numbers.
- return $a <=> $b if $a =~ /^\d/ && $b =~ /^\d/ && $a != $b;
-
- # Use string comparison if chunks are any other kind of non-equal string.
- return $a cmp $b if $a ne $b;
- }
-
- # One of the two is now empty; compare lengths for result in this case.
- return @a <=> @b;
-}
-
-# Sort slowest tests first.
-sub slowestcmp($$)
-{
- my ($testa, $testb) = @_;
-
- my $dura = $durations{$testa};
- my $durb = $durations{$testb};
- return $durb <=> $dura if $dura != $durb;
- return pathcmp($testa, $testb);
-}
-
-sub openDumpTool()
-{
- return if $isDumpToolOpen;
-
- # Save some requires variables for the linux environment...
- my $homeDir = $ENV{'HOME'};
- my $libraryPath = $ENV{'LD_LIBRARY_PATH'};
- my $dyldLibraryPath = $ENV{'DYLD_LIBRARY_PATH'};
- my $dbusAddress = $ENV{'DBUS_SESSION_BUS_ADDRESS'};
- my $display = $ENV{'DISPLAY'};
- my $testfonts = $ENV{'WEBKIT_TESTFONTS'};
-
- my $homeDrive = $ENV{'HOMEDRIVE'};
- my $homePath = $ENV{'HOMEPATH'};
-
- local %ENV;
- if (isQt() || isGtk()) {
- if (defined $display) {
- $ENV{DISPLAY} = $display;
- } else {
- $ENV{DISPLAY} = ":1";
- }
- $ENV{'WEBKIT_TESTFONTS'} = $testfonts if defined($testfonts);
- $ENV{HOME} = $homeDir;
- if (defined $libraryPath) {
- $ENV{LD_LIBRARY_PATH} = $libraryPath;
- }
- if (defined $dyldLibraryPath) {
- $ENV{DYLD_LIBRARY_PATH} = $dyldLibraryPath;
- }
- if (defined $dbusAddress) {
- $ENV{DBUS_SESSION_BUS_ADDRESS} = $dbusAddress;
- }
- }
- $ENV{DYLD_FRAMEWORK_PATH} = $productDir;
- $ENV{XML_CATALOG_FILES} = ""; # work around missing /etc/catalog <rdar://problem/4292995>
- $ENV{DYLD_INSERT_LIBRARIES} = "/usr/lib/libgmalloc.dylib" if $guardMalloc;
-
- if (isCygwin()) {
- $ENV{HOMEDRIVE} = $homeDrive;
- $ENV{HOMEPATH} = $homePath;
- if ($testfonts) {
- $ENV{WEBKIT_TESTFONTS} = $testfonts;
- }
- setPathForRunningWebKitApp(\%ENV) if isCygwin();
- }
-
- exportArchPreference();
-
- my @args = @toolArgs;
- unshift @args, $dumpTool;
- if (isOSX and !isTiger()) {
- unshift @args, "arch";
- }
- if ($useValgrind) {
- unshift @args, "valgrind";
- }
-
- $ENV{MallocStackLogging} = 1 if $shouldCheckLeaks;
- $dumpToolPID = open3(\*OUT, \*IN, \*ERROR, @args) or die "Failed to start tool: $dumpTool\n";
- $ENV{MallocStackLogging} = 0 if $shouldCheckLeaks;
- $isDumpToolOpen = 1;
- $dumpToolCrashed = 0;
-}
-
-sub closeDumpTool()
-{
- return if !$isDumpToolOpen;
-
- close IN;
- close OUT;
- waitpid $dumpToolPID, 0;
-
- # check for WebCore counter leaks.
- if ($shouldCheckLeaks) {
- while (<ERROR>) {
- print;
- }
- }
- close ERROR;
- $isDumpToolOpen = 0;
-}
-
-sub dumpToolDidCrash()
-{
- return 1 if $dumpToolCrashed;
- return 0 unless $isDumpToolOpen;
-
- my $pid = waitpid(-1, WNOHANG);
- return 1 if ($pid == $dumpToolPID);
-
- # On Mac OS X, crashing may be significantly delayed by crash reporter.
- return 0 unless isOSX();
-
- my $tryingToExit = 0;
- open PS, "ps -o state -p $dumpToolPID |";
- <PS>; # skip header
- $tryingToExit = 1 if <PS> =~ /E/;
- close PS;
- return $tryingToExit;
-}
-
-sub openHTTPDIfNeeded()
-{
- return if $isHttpdOpen;
-
- mkdir "/tmp/WebKit";
-
- if (-f "/tmp/WebKit/httpd.pid") {
- my $oldPid = `cat /tmp/WebKit/httpd.pid`;
- chomp $oldPid;
- if (0 != kill 0, $oldPid) {
- print "\nhttpd is already running: pid $oldPid, killing...\n";
- kill 15, $oldPid;
-
- my $retryCount = 20;
- while ((0 != kill 0, $oldPid) && $retryCount) {
- sleep 1;
- --$retryCount;
- }
-
- die "Timed out waiting for httpd to quit" unless $retryCount;
- }
- }
-
- my $httpdPath = "/usr/sbin/httpd";
- my $httpdConfig;
- if (isCygwin()) {
- my $windowsConfDirectory = "$testDirectory/http/conf/";
- unless (-x "/usr/lib/apache/libphp4.dll") {
- copy("$windowsConfDirectory/libphp4.dll", "/usr/lib/apache/libphp4.dll");
- chmod(0755, "/usr/lib/apache/libphp4.dll");
- }
- $httpdConfig = "$windowsConfDirectory/cygwin-httpd.conf";
- } elsif (isDebianBased()) {
- $httpdPath = "/usr/sbin/apache2";
- $httpdConfig = "$testDirectory/http/conf/apache2-debian-httpd.conf";
- } else {
- $httpdConfig = "$testDirectory/http/conf/httpd.conf";
- $httpdConfig = "$testDirectory/http/conf/apache2-httpd.conf" if `$httpdPath -v` =~ m|Apache/2|;
- }
- my $documentRoot = "$testDirectory/http/tests";
- my $typesConfig = "$testDirectory/http/conf/mime.types";
- my $listen = "127.0.0.1:$httpdPort";
- my $absTestResultsDirectory = File::Spec->rel2abs(glob $testResultsDirectory);
- my $sslCertificate = "$testDirectory/http/conf/webkit-httpd.pem";
-
- mkpath $absTestResultsDirectory;
-
- my @args = (
- "-f", "$httpdConfig",
- "-C", "DocumentRoot \"$documentRoot\"",
- "-C", "Listen $listen",
- "-c", "TypesConfig \"$typesConfig\"",
- "-c", "CustomLog \"$absTestResultsDirectory/access_log.txt\" common",
- "-c", "ErrorLog \"$absTestResultsDirectory/error_log.txt\"",
- # Apache wouldn't run CGIs with permissions==700 otherwise
- "-c", "User \"#$<\""
- );
-
- # FIXME: Enable this on Windows once <rdar://problem/5345985> is fixed
- push(@args, "-c", "SSLCertificateFile \"$sslCertificate\"") unless isCygwin();
-
- open2(\*HTTPDIN, \*HTTPDOUT, $httpdPath, @args);
-
- my $retryCount = 20;
- while (system("/usr/bin/curl -q --silent --stderr - --output /dev/null $listen") && $retryCount) {
- sleep 1;
- --$retryCount;
- }
-
- die "Timed out waiting for httpd to start" unless $retryCount;
-
- $isHttpdOpen = 1;
-}
-
-sub closeHTTPD()
-{
- return if !$isHttpdOpen;
-
- close HTTPDIN;
- close HTTPDOUT;
-
- kill 15, `cat /tmp/WebKit/httpd.pid` if -f "/tmp/WebKit/httpd.pid";
-
- $isHttpdOpen = 0;
-}
-
-sub fileNameWithNumber($$)
-{
- my ($base, $number) = @_;
- return "$base$number" if ($number > 1);
- return $base;
-}
-
-sub processIgnoreTests($) {
- my @ignoreList = split(/\s*,\s*/, shift);
- my $addIgnoredDirectories = sub {
- return () if exists $ignoredLocalDirectories{basename($File::Find::dir)};
- $ignoredDirectories{File::Spec->abs2rel($File::Find::dir, $testDirectory)} = 1;
- return @_;
- };
- foreach my $item (@ignoreList) {
- my $path = catfile($testDirectory, $item);
- if (-d $path) {
- $ignoredDirectories{$item} = 1;
- find({ preprocess => $addIgnoredDirectories, wanted => sub {} }, $path);
- }
- elsif (-f $path) {
- $ignoredFiles{$item} = 1;
- }
- else {
- print "ignoring '$item' on ignore-tests list\n";
- }
- }
-}
-
-sub stripExtension($)
-{
- my ($test) = @_;
-
- $test =~ s/\.[a-zA-Z]+$//;
- return $test;
-}
-
-sub isTextOnlyTest($)
-{
- my ($actual) = @_;
- my $isText;
- if ($actual =~ /^layer at/ms) {
- $isText = 0;
- } else {
- $isText = 1;
- }
- return $isText;
-}
-
-sub expectedDirectoryForTest($;$;$)
-{
- my ($base, $isText, $expectedExtension) = @_;
-
- my @directories = @platformHierarchy;
- push @directories, map { catdir($platformBaseDirectory, $_) } qw(mac-leopard mac) if isCygwin();
- push @directories, $expectedDirectory;
-
- # If we already have expected results, just return their location.
- foreach my $directory (@directories) {
- return $directory if (-f "$directory/$base-$expectedTag.$expectedExtension");
- }
-
- # For platform-specific tests, the results should go right next to the test itself.
- # Note: The return value of this subroutine will be concatenated with $base
- # to determine the location of the new results, so returning $expectedDirectory
- # will put the results right next to the test.
- # FIXME: We want to allow platform/mac tests with platform/mac-leopard results,
- # so this needs to be enhanced.
- return $expectedDirectory if $base =~ /^platform/;
-
- # For cross-platform tests, text-only results should go in the cross-platform directory,
- # while render tree dumps should go in the least-specific platform directory.
- return $isText ? $expectedDirectory : $platformHierarchy[$#platformHierarchy];
-}
-
-sub countFinishedTest($$$$) {
- my ($test, $base, $result, $isText) = @_;
-
- if (($count + 1) % $testsPerDumpTool == 0 || $count == $#tests) {
- if ($shouldCheckLeaks) {
- my $fileName;
- if ($testsPerDumpTool == 1) {
- $fileName = "$testResultsDirectory/$base-leaks.txt";
- } else {
- $fileName = "$testResultsDirectory/" . fileNameWithNumber($dumpToolName, $leaksOutputFileNumber) . "-leaks.txt";
- }
- my $leakCount = countAndPrintLeaks($dumpToolName, $dumpToolPID, $fileName);
- $totalLeaks += $leakCount;
- $leaksOutputFileNumber++ if ($leakCount);
- }
-
- closeDumpTool();
- }
-
- $count++;
- $counts{$result}++;
- push @{$tests{$result}}, $test;
- $testType{$test} = $isText;
-}
-
-sub testCrashedOrTimedOut($$$$$)
-{
- my ($test, $base, $didCrash, $actual, $error) = @_;
-
- printFailureMessageForTest($test, $didCrash ? "crashed" : "timed out");
-
- sampleDumpTool() unless $didCrash;
-
- my $dir = "$testResultsDirectory/$base";
- $dir =~ s|/([^/]+)$|| or die "Failed to find test name from base\n";
- mkpath $dir;
-
- deleteExpectedAndActualResults($base);
-
- if (defined($error) && length($error)) {
- writeToFile("$testResultsDirectory/$base-$errorTag.txt", $error);
- }
-
- recordActualResultsAndDiff($base, $actual);
-
- kill 9, $dumpToolPID unless $didCrash;
-
- closeDumpTool();
-}
-
-sub printFailureMessageForTest($$)
-{
- my ($test, $description) = @_;
-
- unless ($verbose) {
- print "\n" unless $atLineStart;
- print "$test -> ";
- }
- print "$description\n";
- $atLineStart = 1;
-}
-
-my %cygpaths = ();
-
-sub openCygpathIfNeeded($)
-{
- my ($options) = @_;
-
- return unless isCygwin();
- return $cygpaths{$options} if $cygpaths{$options} && $cygpaths{$options}->{"open"};
-
- local (*CYGPATHIN, *CYGPATHOUT);
- my $pid = open2(\*CYGPATHIN, \*CYGPATHOUT, "cygpath -f - $options");
- my $cygpath = {
- "pid" => $pid,
- "in" => *CYGPATHIN,
- "out" => *CYGPATHOUT,
- "open" => 1
- };
-
- $cygpaths{$options} = $cygpath;
-
- return $cygpath;
-}
-
-sub closeCygpaths()
-{
- return unless isCygwin();
-
- foreach my $cygpath (values(%cygpaths)) {
- close $cygpath->{"in"};
- close $cygpath->{"out"};
- waitpid($cygpath->{"pid"}, 0);
- $cygpath->{"open"} = 0;
-
- }
-}
-
-sub convertPathUsingCygpath($$)
-{
- my ($path, $options) = @_;
-
- my $cygpath = openCygpathIfNeeded($options);
- local *inFH = $cygpath->{"in"};
- local *outFH = $cygpath->{"out"};
- print outFH $path . "\n";
- chomp(my $convertedPath = <inFH>);
- return $convertedPath;
-}
-
-sub toWindowsPath($)
-{
- my ($path) = @_;
- return unless isCygwin();
-
- return convertPathUsingCygpath($path, "-w");
-}
-
-sub toURL($)
-{
- my ($path) = @_;
- return $path unless isCygwin();
-
- return "file:///" . convertPathUsingCygpath($path, "-m");
-}
-
-sub validateSkippedArg($$;$)
-{
- my ($option, $value, $value2) = @_;
- my %validSkippedValues = map { $_ => 1 } qw(default ignore only);
- $value = lc($value);
- die "Invalid argument '" . $value . "' for option $option" unless $validSkippedValues{$value};
- $treatSkipped = $value;
-}
-
-sub htmlForResultsSection(\@$&)
-{
- my ($tests, $description, $linkGetter) = @_;
-
- my @html = ();
- return join("\n", @html) unless @{$tests};
-
- push @html, "<p>$description:</p>";
- push @html, "<table>";
- foreach my $test (@{$tests}) {
- push @html, "<tr>";
- push @html, "<td><a href=\"" . toURL("$testDirectory/$test") . "\">$test</a></td>";
- foreach my $link (@{&{$linkGetter}($test)}) {
- push @html, "<td><a href=\"$link->{href}\">$link->{text}</a></td>";
- }
- push @html, "</tr>";
- }
- push @html, "</table>";
-
- return join("\n", @html);
-}
-
-sub linksForExpectedAndActualResults($)
-{
- my ($base) = @_;
-
- my @links = ();
-
- return \@links unless -s "$testResultsDirectory/$base-$diffsTag.txt";
-
- my $expectedResultPath = $expectedResultPaths{$base};
- my ($expectedResultFileName, $expectedResultsDirectory, $expectedResultExtension) = fileparse($expectedResultPath, qr{\.[^.]+$});
-
- push @links, { href => "$base-$expectedTag$expectedResultExtension", text => "expected" };
- push @links, { href => "$base-$actualTag$expectedResultExtension", text => "actual" };
- push @links, { href => "$base-$diffsTag.txt", text => "diffs" };
-
- return \@links;
-}
-
-sub linksForMismatchTest
-{
- my ($test) = @_;
-
- my @links = ();
-
- my $base = stripExtension($test);
-
- push @links, @{linksForExpectedAndActualResults($base)};
- return \@links unless $pixelTests && $imagesPresent{$base};
-
- push @links, { href => "$base-$expectedTag.png", text => "expected image" };
- push @links, { href => "$base-$diffsTag.html", text => "image diffs" };
- push @links, { href => "$base-$diffsTag.png", text => "$imageDifferences{$base}%" };
-
- return \@links;
-}
-
-sub linksForErrorTest
-{
- my ($test) = @_;
-
- my @links = ();
-
- my $base = stripExtension($test);
-
- push @links, @{linksForExpectedAndActualResults($base)};
- push @links, { href => "$base-$errorTag.txt", text => "stderr" };
-
- return \@links;
-}
-
-sub linksForNewTest
-{
- my ($test) = @_;
-
- my @links = ();
-
- my $base = stripExtension($test);
- my $expectedResultPath = $expectedResultPaths{$base};
- my $expectedResultPathMinusExtension = stripExtension($expectedResultPath);
-
- push @links, { href => toURL($expectedResultPath), text => "results" };
- if ($pixelTests && -f "$expectedResultPathMinusExtension.png") {
- push @links, { href => toURL("$expectedResultPathMinusExtension.png"), text => "image" };
- }
-
- return \@links;
-}
-
-sub deleteExpectedAndActualResults($)
-{
- my ($base) = @_;
-
- unlink "$testResultsDirectory/$base-$actualTag.txt";
- unlink "$testResultsDirectory/$base-$diffsTag.txt";
- unlink "$testResultsDirectory/$base-$errorTag.txt";
-}
-
-sub recordActualResultsAndDiff($$)
-{
- my ($base, $actualResults) = @_;
-
- return unless defined($actualResults) && length($actualResults);
-
- my $expectedResultPath = $expectedResultPaths{$base};
- my ($expectedResultFileNameMinusExtension, $expectedResultDirectoryPath, $expectedResultExtension) = fileparse($expectedResultPath, qr{\.[^.]+$});
- my $actualResultsPath = "$testResultsDirectory/$base-$actualTag$expectedResultExtension";
- my $copiedExpectedResultsPath = "$testResultsDirectory/$base-$expectedTag$expectedResultExtension";
- writeToFile("$actualResultsPath", $actualResults);
- copy("$expectedResultPath", "$copiedExpectedResultsPath");
-
- system "diff -u \"$copiedExpectedResultsPath\" \"$actualResultsPath\" > \"$testResultsDirectory/$base-$diffsTag.txt\"";
-}
-
-sub buildPlatformHierarchy()
-{
- mkpath($platformTestDirectory) if ($platform eq "undefined" && !-d "$platformTestDirectory");
-
- my @platforms = split('-', $platform);
- my @hierarchy;
- for (my $i=0; $i < @platforms; $i++) {
- my $scoped = catdir($platformBaseDirectory, join('-', @platforms[0..($#platforms - $i)]));
- push(@hierarchy, $scoped) if (-d $scoped);
- }
-
- return @hierarchy;
-}
-
-sub epiloguesAndPrologues($$) {
- my ($lastDirectory, $directory) = @_;
- my @lastComponents = split('/', $lastDirectory);
- my @components = split('/', $directory);
-
- while (@lastComponents) {
- if (!defined($components[0]) || $lastComponents[0] ne $components[0]) {
- last;
- }
- shift @components;
- shift @lastComponents;
- }
-
- my @result;
- my $leaving = $lastDirectory;
- foreach (@lastComponents) {
- my $epilogue = $leaving . "/resources/run-webkit-tests-epilogue.html";
- foreach (@platformHierarchy) {
- push @result, catdir($_, $epilogue) if (stat(catdir($_, $epilogue)));
- }
- push @result, catdir($testDirectory, $epilogue) if (stat(catdir($testDirectory, $epilogue)));
- $leaving =~ s|(^\|/)[^/]+$||;
- }
-
- my $entering = $leaving;
- foreach (@components) {
- $entering .= '/' . $_;
- my $prologue = $entering . "/resources/run-webkit-tests-prologue.html";
- push @result, catdir($testDirectory, $prologue) if (stat(catdir($testDirectory, $prologue)));
- foreach (reverse @platformHierarchy) {
- push @result, catdir($_, $prologue) if (stat(catdir($_, $prologue)));
- }
- }
- return @result;
-}
-
-sub parseLeaksandPrintUniqueLeaks() {
- return unless @leaksFilenames;
-
- my $mergedFilenames = join " ", @leaksFilenames;
- my $parseMallocHistoryTool = sourceDir() . "/WebKitTools/Scripts/parse-malloc-history";
-
- open MERGED_LEAKS, "cat $mergedFilenames | $parseMallocHistoryTool --merge-depth $mergeDepth - |" ;
- my @leakLines = <MERGED_LEAKS>;
- close MERGED_LEAKS;
-
- my $uniqueLeakCount = 0;
- my $totalBytes;
- foreach my $line (@leakLines) {
- ++$uniqueLeakCount if ($line =~ /^(\d*)\scalls/);
- $totalBytes = $1 if $line =~ /^total\:\s(.*)\s\(/;
- }
-
- print "\nWARNING: $totalLeaks total leaks found for a total of $totalBytes!\n";
- print "WARNING: $uniqueLeakCount unique leaks found!\n";
- print "See above for individual leaks results.\n" if ($leaksOutputFileNumber > 2);
-
-}
-
-sub extensionForMimeType($)
-{
- my ($mimeType) = @_;
-
- if ($mimeType eq "application/x-webarchive") {
- return "webarchive";
- } elsif ($mimeType eq "application/pdf") {
- return "pdf";
- }
- return "txt";
-}
-
-# Read up to the first #EOF (the content block of the test), or until detecting crashes or timeouts.
-sub readFromDumpToolWithTimer(*;$)
-{
- my ($fh, $dontWaitForTimeOut) = @_;
-
- setFileHandleNonBlocking($fh, 1);
-
- my $maximumSecondsWithoutOutput = 60;
- $maximumSecondsWithoutOutput *= 10 if $guardMalloc;
- my $microsecondsToWaitBeforeReadingAgain = 1000;
-
- my $timeOfLastSuccessfulRead = time;
-
- my @output = ();
- my $status = "success";
- my $mimeType = "text/plain";
- # We don't have a very good way to know when the "headers" stop
- # and the content starts, so we use this as a hack:
- my $haveSeenContentType = 0;
-
- while (1) {
- if (time - $timeOfLastSuccessfulRead > $maximumSecondsWithoutOutput) {
- $status = dumpToolDidCrash() ? "crashed" : "timedOut";
- last;
- }
-
- my $line = readline($fh);
- if (!defined($line)) {
- if ($! != EAGAIN) {
- $status = "crashed";
- last;
- }
-
- if ($dontWaitForTimeOut) {
- last;
- }
-
- # No data ready
- usleep($microsecondsToWaitBeforeReadingAgain);
- next;
- }
-
- $timeOfLastSuccessfulRead = time;
-
- if (!$haveSeenContentType && $line =~ /^Content-Type: (\S+)$/) {
- $mimeType = $1;
- $haveSeenContentType = 1;
- next;
- }
- last if ($line =~ /#EOF/);
-
- push @output, $line;
- }
-
- setFileHandleNonBlocking($fh, 0);
- return {
- output => join("", @output),
- status => $status,
- mimeType => $mimeType,
- extension => extensionForMimeType($mimeType)
- };
-}
-
-sub setFileHandleNonBlocking(*$)
-{
- my ($fh, $nonBlocking) = @_;
-
- my $flags = fcntl($fh, F_GETFL, 0) or die "Couldn't get filehandle flags";
-
- if ($nonBlocking) {
- $flags |= O_NONBLOCK;
- } else {
- $flags &= ~O_NONBLOCK;
- }
-
- fcntl($fh, F_SETFL, $flags) or die "Couldn't set filehandle flags";
-
- return 1;
-}
-
-sub sampleDumpTool()
-{
- return unless isOSX();
- return unless $runSample;
-
- my $outputDirectory = "$ENV{HOME}/Library/Logs/DumpRenderTree";
- -d $outputDirectory or mkdir $outputDirectory;
-
- my $outputFile = "$outputDirectory/HangReport.txt";
- system "/usr/bin/sample", $dumpToolPID, qw(10 10 -file), $outputFile;
-}
diff --git a/WebKitTools/Scripts/set-webkit-configuration b/WebKitTools/Scripts/set-webkit-configuration
deleted file mode 100755
index 8735140..0000000
--- a/WebKitTools/Scripts/set-webkit-configuration
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-use strict;
-use FindBin;
-use lib $FindBin::Bin;
-use webkitdirs;
-
-my $configuration = passedConfiguration();
-die "Please specify either --debug or --release.\n" if !$configuration;
-
-my $baseProductDir = baseProductDir();
-system "mkdir", "-p", "$baseProductDir";
-open CONFIGURATION, ">", "$baseProductDir/Configuration" or die;
-print CONFIGURATION $configuration;
-close CONFIGURATION;
diff --git a/WebKitTools/Scripts/sort-Xcode-project-file b/WebKitTools/Scripts/sort-Xcode-project-file
deleted file mode 100755
index a35fe73..0000000
--- a/WebKitTools/Scripts/sort-Xcode-project-file
+++ /dev/null
@@ -1,114 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2007 Apple Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Script to sort "files=(...);" sections in Xcode project.pbxproj files
-
-use strict;
-
-use File::Basename;
-use File::Temp qw(tempfile);
-use Getopt::Long;
-
-sub sortByFileName($$);
-
-my $printWarnings = 1;
-my $showHelp;
-
-my $getOptionsResult = GetOptions(
- 'h|help' => \$showHelp,
- 'w|warnings!' => \$printWarnings,
-);
-
-if (scalar(@ARGV) == 0) {
- print STDERR "ERROR: No Xcode project files (project.pbxproj) listed on command-line.\n";
- undef $getOptionsResult;
-}
-
-if (!$getOptionsResult || $showHelp) {
- print STDERR <<__END__;
-Usage: @{[ basename($0) ]} [options] path/to/project.pbxproj [path/to/project.pbxproj ...]
- -h|--help show this help message
- -w|--[no-]warnings show or suppress warnings (default: show warnings)
-__END__
- exit 1;
-}
-
-for my $projectFile (@ARGV) {
- if (basename($projectFile) ne "project.pbxproj") {
- print STDERR "WARNING: Not an Xcode project file: $projectFile\n" if $printWarnings;
- next;
- }
-
- my ($OUT, $tempFileName) = tempfile(
- basename($projectFile) . "-XXXXXXXX",
- DIR => dirname($projectFile),
- UNLINK => 0,
- );
-
- # Clean up temp file in case of die()
- $SIG{__DIE__} = sub {
- close(IN);
- close($OUT);
- unlink($tempFileName);
- };
-
- open(IN, "< $projectFile") || die "Could not open $projectFile: $!";
- while (my $line = <IN>) {
- if ($line =~ /^(\s*)files = \(\s*$/) {
- print $OUT $line;
- my $endMarker = $1 . ");";
- my @files;
- while (my $fileLine = <IN>) {
- if ($fileLine =~ /^\Q$endMarker\E\s*$/) {
- $endMarker = $fileLine;
- last;
- }
- push @files, $fileLine;
- }
- print $OUT sort sortByFileName @files;
- print $OUT $endMarker;
- } else {
- print $OUT $line;
- }
- }
- close(IN);
- close($OUT);
-
- unlink($projectFile) || die "Could not delete $projectFile: $!";
- rename($tempFileName, $projectFile) || die "Could not rename $tempFileName to $projectFile: $!";
-}
-
-exit 0;
-
-sub sortByFileName($$)
-{
- my ($a, $b) = @_;
- my $aFileName = $1 if $a =~ /^\s*[A-Z0-9]{24} \/\* (.+) in /;
- my $bFileName = $1 if $b =~ /^\s*[A-Z0-9]{24} \/\* (.+) in /;
- return $aFileName cmp $bFileName;
-}
diff --git a/WebKitTools/Scripts/split-file-by-class b/WebKitTools/Scripts/split-file-by-class
deleted file mode 100755
index b6aeb68..0000000
--- a/WebKitTools/Scripts/split-file-by-class
+++ /dev/null
@@ -1,159 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Used for splitting a single file into multiple class files
-# Usage: split-class <header file>
-
-use strict;
-use File::Copy;
-use FindBin;
-use lib $FindBin::Bin;
-use SpacingHeuristics;
-
-
-for my $filename (@ARGV) {
-
- $filename =~ m/^(\w+)\.h$/ or die "Command line args must be .h files.\n";
- my $basename = $1;
-
- open(OLDFILE, "<", $filename) or die "File does not exist: $filename\n";
- print "Splitting class $filename.{h,cpp}:\n";
-
- my $currentClassName = "";
- my $classIndent = "";
- my $fileContent = "";
- my %classDefs = ();
- while (my $line = <OLDFILE>) {
- if ($currentClassName) {
- $classDefs{$currentClassName} .= $line;
- if ($line =~ /^$classIndent};\s*$/) {
- $currentClassName = "";
- }
- } else {
- if ($line =~ /^(\s*)class\s+(\w+)\s+[^;]*$/) {
- $classIndent = $1;
- $currentClassName = $2;
- $classDefs{$currentClassName} .= $line;
- $fileContent .= "###CLASS###$currentClassName\n";
- } else {
- $fileContent .= $line;
- }
- }
- }
- close(OLDFILE);
-
- if (scalar(keys(%classDefs)) == 1) { # degenerate case
- my ($classname) = keys(%classDefs);
- if (!($classname eq $basename)) {
- print "Skipping $filename, already correctly named.\n";
- } else {
- print "$filename only includes one class, renaming to $classname.h\n";
- system("svn rm --force $classname.h") if (-r "$classname.h");
- system "svn mv $basename.h $classname.h";
- }
- } else {
- while (my ($classname, $classDef) = each(%classDefs)) {
- if (($classname eq $basename)) {
- print "Skipping $filename, already correctly named.\n";
- } else {
- print "Using SVN to copy $basename.{h,cpp} to $classname.{h,cpp}\n";
-
- system("svn rm --force $classname.h") if (-r "$classname.h");
- system "svn cp $basename.h $classname.h";
-
- system("svn rm --force $classname.cpp") if (-r "$classname.cpp");
- system "svn cp $basename.cpp $classname.cpp";
- }
-
- print "Fixing $classname.h as much as possible.\n";
- open(NEWHEADER, ">", "$classname.h") or die "File does not exist: $filename\n";
- my @lines = split("\n", $fileContent);
- foreach my $line (@lines) {
- if ($line =~ /^###CLASS###(\w+)/) {
- if ($1 eq $classname) {
- print NEWHEADER $classDef . "\n";
- }
- } else {
- print NEWHEADER $line . "\n";
- }
- }
- close(NEWHEADER);
-
- print "Fixing $classname.cpp as much as possible.\n";
- copy("$classname.cpp", "$classname.cpp.original");
- open(OLDCPP, "<", "$classname.cpp.original") or die "Failed to copy file for reading: $filename\n";
- open(NEWCPP, ">", "$classname.cpp") or die "File does not exist: $filename\n";
- my $insideMemberFunction = 0;
- my $shouldPrintMemberFunction = 0;
- resetSpacingHeuristics();
- while (my $line = <OLDCPP>) {
- if ($insideMemberFunction) {
- if ($shouldPrintMemberFunction) {
- print NEWCPP $line;
- #setPreviousAllowedLine($line);
- } else {
- ignoringLine($line);
- }
- if ($line =~ /^}\s*$/) {
- $insideMemberFunction = 0;
- }
- } elsif ($line =~ /$filename/) {
- print NEWCPP "#include \"config.h\"\n";
- print NEWCPP "#include \"$classname.h\"\n";
- } elsif ($line =~ /#include/ || $line =~ /#import/) {
- next; # skip includes, they're generally wrong or unecessary anyway.
- } else {
- $line =~ s/DOM:://;
- $line =~ s/khtml:://;
- $line =~ s/namespace DOM/namespace WebCore/;
- $line =~ s/namespace khtml/namespace WebCore/;
-
- if ($line =~ /^(.*?\s+)?(\*|&)?(\w+)::(~)?\w+\s*\(/) {
- $insideMemberFunction = 1;
- $shouldPrintMemberFunction = ($classname eq $3);
- if ($shouldPrintMemberFunction) {
- printPendingEmptyLines(*NEWCPP, $line);
- print NEWCPP $line;
- }
- } else {
- next if isOnlyWhiteSpace($line);
- next if ($line =~ m/------------/);
- printPendingEmptyLines(*NEWCPP, $line);
- applySpacingHeuristicsAndPrint(*NEWCPP, $line);
- }
- }
- }
- close(NEWCPP);
- close(OLDCPP);
- unlink("$classname.cpp.original");
- }
- }
-
- print "Opening new files...\n";
- system("open " . join(".* ", keys(%classDefs)) . ".*");
-} \ No newline at end of file
diff --git a/WebKitTools/Scripts/sunspider-compare-results b/WebKitTools/Scripts/sunspider-compare-results
deleted file mode 100755
index ec0863a..0000000
--- a/WebKitTools/Scripts/sunspider-compare-results
+++ /dev/null
@@ -1,101 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2007 Apple Inc. All rights reserved.
-# Copyright (C) 2007 Eric Seidel <eric@webkit.org>
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
-# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-use strict;
-use File::Spec;
-use FindBin;
-use Getopt::Long qw(:config pass_through);
-use lib $FindBin::Bin;
-use webkitdirs;
-use POSIX;
-
-# determine configuration, but default to "Release" instead of last-used configuration to match run-sunspider
-setConfiguration("Release");
-setConfiguration();
-my $configuration = configuration();
-
-my $root;
-my $showHelp = 0;
-
-my $programName = basename($0);
-my $usage = <<EOF;
-Usage: $programName [options] FILE FILE
- --help Show this help message
- --root Path to root tools build
-EOF
-
-GetOptions('root=s' => sub { my ($argName, $value); setConfigurationProductDir(Cwd::abs_path($value)); },
- 'help' => \$showHelp);
-
-if ($showHelp) {
- print STDERR $usage;
- exit 1;
-}
-
-@ARGV = map { File::Spec->rel2abs($_) } @ARGV;
-
-sub buildJSC
-{
- if (!defined($root)){
- chdirWebKit();
- my $buildResult = system "WebKitTools/Scripts/build-jsc", "--" . $configuration;
- if ($buildResult) {
- print STDERR "Compiling jsc failed!\n";
- exit WEXITSTATUS($buildResult);
- }
- }
-}
-
-sub setupEnvironmentForExecution($)
-{
- my ($productDir) = @_;
- print "Starting sunspider-compare-results with DYLD_FRAMEWORK_PATH set to point to built JavaScriptCore in $productDir.\n";
- $ENV{DYLD_FRAMEWORK_PATH} = $productDir;
- # FIXME: Other platforms may wish to augment this method to use LD_LIBRARY_PATH, etc.
-}
-
-sub jscPath($)
-{
- my ($productDir) = @_;
- my $jscName = "jsc";
- $jscName .= "_debug" if (isCygwin() && ($configuration eq "Debug"));
- return "$productDir/$jscName";
-}
-
-buildJSC();
-
-chdirWebKit();
-chdir("SunSpider");
-
-my $productDir = productDir();
-# FIXME: This hack should be pushed down into productDir()
-$productDir .= "/JavaScriptCore" if (isQt() or isGtk());
-
-setupEnvironmentForExecution($productDir);
-my @args = ("--shell", jscPath($productDir));
-# This code could be removed if we chose to pass extra args to sunspider instead of Xcode
-
-exec "./sunspider-compare-results", @args, @ARGV;
diff --git a/WebKitTools/Scripts/svn-apply b/WebKitTools/Scripts/svn-apply
deleted file mode 100755
index d43d525..0000000
--- a/WebKitTools/Scripts/svn-apply
+++ /dev/null
@@ -1,443 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2005, 2006, 2007 Apple Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# "patch" script for WebKit Open Source Project, used to apply patches.
-
-# Differences from invoking "patch -p0":
-#
-# Handles added files (does a svn add with logic to handle local changes).
-# Handles added directories (does a svn add).
-# Handles removed files (does a svn rm with logic to handle local changes).
-# Handles removed directories--those with no more files or directories left in them
-# (does a svn rm).
-# Has mode where it will roll back to svn version numbers in the patch file so svn
-# can do a 3-way merge.
-# Paths from Index: lines are used rather than the paths on the patch lines, which
-# makes patches generated by "cvs diff" work (increasingly unimportant since we
-# use Subversion now).
-# ChangeLog patches use --fuzz=3 to prevent rejects, and the entry date is set in
-# the patch to today's date using $changeLogTimeZone.
-# Handles binary files (requires patches made by svn-create-patch).
-# Handles copied and moved files (requires patches made by svn-create-patch).
-# Handles git-diff patches (without binary changes) created at the top-level directory
-#
-# Missing features:
-#
-# Handle property changes.
-# Handle copied and moved directories (would require patches made by svn-create-patch).
-# When doing a removal, check that old file matches what's being removed.
-# Notice a patch that's being applied at the "wrong level" and make it work anyway.
-# Do a dry run on the whole patch and don't do anything if part of the patch is
-# going to fail (probably too strict unless we exclude ChangeLog).
-# Handle git-diff patches with binary changes
-
-use strict;
-use warnings;
-
-use Cwd;
-use Digest::MD5;
-use File::Basename;
-use File::Spec;
-use Getopt::Long;
-use MIME::Base64;
-use POSIX qw(strftime);
-
-sub addDirectoriesIfNeeded($);
-sub applyPatch($$;$);
-sub checksum($);
-sub fixChangeLogPatch($);
-sub gitdiff2svndiff($);
-sub handleBinaryChange($$);
-sub isDirectoryEmptyForRemoval($);
-sub patch($);
-sub removeDirectoriesIfNeeded();
-sub setChangeLogDateAndReviewer($$);
-sub svnStatus($);
-
-# Project time zone for Cupertino, CA, US
-my $changeLogTimeZone = "PST8PDT";
-
-my $merge = 0;
-my $showHelp = 0;
-my $reviewer;
-if (!GetOptions("merge!" => \$merge, "help!" => \$showHelp, "reviewer=s" => \$reviewer) || $showHelp) {
- print STDERR basename($0) . " [-h|--help] [-m|--merge] [-r|--reviewer name] patch1 [patch2 ...]\n";
- exit 1;
-}
-
-my %removeDirectoryIgnoreList = (
- '.' => 1,
- '..' => 1,
- '.svn' => 1,
- '_svn' => 1,
-);
-
-my %checkedDirectories;
-my %copiedFiles;
-my @patches;
-my %versions;
-
-my $copiedFromPath;
-my $filter;
-my $indexPath;
-my $patch;
-while (<>) {
- s/([\n\r]+)$//mg;
- my $eol = $1;
- if (!defined($indexPath) && m#^diff --git a/#) {
- $filter = \&gitdiff2svndiff;
- }
- $_ = &$filter($_) if $filter;
- if (/^Index: (.+)/) {
- $indexPath = $1;
- if ($patch) {
- if (!$copiedFromPath) {
- push @patches, $patch;
- }
- $copiedFromPath = "";
- $patch = "";
- }
- }
- if ($indexPath) {
- # Fix paths on diff, ---, and +++ lines to match preceding Index: line.
- s/\S+$/$indexPath/ if /^diff/;
- s/^--- \S+/--- $indexPath/;
- if (/^--- .+\(from (\S+):(\d+)\)$/) {
- $copiedFromPath = $1;
- $copiedFiles{$indexPath} = $copiedFromPath;
- $versions{$copiedFromPath} = $2 if ($2 != 0);
- }
- elsif (/^--- .+\(revision (\d+)\)$/) {
- $versions{$indexPath} = $1 if ($1 != 0);
- }
- if (s/^\+\+\+ \S+/+++ $indexPath/) {
- $indexPath = "";
- }
- }
- $patch .= $_;
- $patch .= $eol;
-}
-
-if ($patch && !$copiedFromPath) {
- push @patches, $patch;
-}
-
-if ($merge) {
- for my $file (sort keys %versions) {
- print "Getting version $versions{$file} of $file\n";
- system "svn", "update", "-r", $versions{$file}, $file;
- }
-}
-
-# Handle copied and moved files first since moved files may have their source deleted before the move.
-for my $file (keys %copiedFiles) {
- addDirectoriesIfNeeded(dirname($file));
- system "svn", "copy", $copiedFiles{$file}, $file;
-}
-
-for $patch (@patches) {
- patch($patch);
-}
-
-removeDirectoriesIfNeeded();
-
-exit 0;
-
-sub addDirectoriesIfNeeded($)
-{
- my ($path) = @_;
- my @dirs = File::Spec->splitdir($path);
- my $dir = ".";
- while (scalar @dirs) {
- $dir = File::Spec->catdir($dir, shift @dirs);
- next if exists $checkedDirectories{$dir};
- if (! -e $dir) {
- mkdir $dir or die "Failed to create required directory '$dir' for path '$path'\n";
- system "svn", "add", $dir;
- $checkedDirectories{$dir} = 1;
- }
- elsif (-d $dir) {
- my $svnOutput = svnStatus($dir);
- if ($svnOutput && $svnOutput =~ m#\?\s+$dir\n#) {
- system "svn", "add", $dir;
- }
- $checkedDirectories{$dir} = 1;
- }
- else {
- die "'$dir' is not a directory";
- }
- }
-}
-
-sub applyPatch($$;$)
-{
- my ($patch, $fullPath, $options) = @_;
- $options = [] if (! $options);
- my $command = "patch " . join(" ", "-p0", @{$options});
- open PATCH, "| $command" or die "Failed to patch $fullPath\n";
- print PATCH $patch;
- close PATCH;
-}
-
-sub checksum($)
-{
- my $file = shift;
- open(FILE, $file) or die "Can't open '$file': $!";
- binmode(FILE);
- my $checksum = Digest::MD5->new->addfile(*FILE)->hexdigest();
- close(FILE);
- return $checksum;
-}
-
-sub fixChangeLogPatch($)
-{
- my $patch = shift;
- my $contextLineCount = 3;
-
- return $patch if $patch !~ /\n@@ -1,(\d+) \+1,(\d+) @@\n( .*\n)+(\+.*\n)+( .*\n){$contextLineCount}$/m;
- my ($oldLineCount, $newLineCount) = ($1, $2);
- return $patch if $oldLineCount <= $contextLineCount;
-
- # The diff(1) command is greedy when matching lines, so a new ChangeLog entry will
- # have lines of context at the top of a patch when the existing entry has the same
- # date and author as the new entry. This nifty loop alters a ChangeLog patch so
- # that the added lines ("+") in the patch always start at the beginning of the
- # patch and there are no initial lines of context.
- my $newPatch;
- my $lineCountInState = 0;
- my $oldContentLineCountReduction = $oldLineCount - $contextLineCount;
- my $newContentLineCountWithoutContext = $newLineCount - $oldLineCount - $oldContentLineCountReduction;
- my ($stateHeader, $statePreContext, $stateNewChanges, $statePostContext) = (1..4);
- my $state = $stateHeader;
- foreach my $line (split(/\n/, $patch)) {
- $lineCountInState++;
- if ($state == $stateHeader && $line =~ /^@@ -1,$oldLineCount \+1,$newLineCount @\@$/) {
- $line = "@@ -1,$contextLineCount +1," . ($newLineCount - $oldContentLineCountReduction) . " @@";
- $lineCountInState = 0;
- $state = $statePreContext;
- } elsif ($state == $statePreContext && substr($line, 0, 1) eq " ") {
- $line = "+" . substr($line, 1);
- if ($lineCountInState == $oldContentLineCountReduction) {
- $lineCountInState = 0;
- $state = $stateNewChanges;
- }
- } elsif ($state == $stateNewChanges && substr($line, 0, 1) eq "+") {
- # No changes to these lines
- if ($lineCountInState == $newContentLineCountWithoutContext) {
- $lineCountInState = 0;
- $state = $statePostContext;
- }
- } elsif ($state == $statePostContext) {
- if (substr($line, 0, 1) eq "+" && $lineCountInState <= $oldContentLineCountReduction) {
- $line = " " . substr($line, 1);
- } elsif ($lineCountInState > $contextLineCount && substr($line, 0, 1) eq " ") {
- next; # Discard
- }
- }
- $newPatch .= $line . "\n";
- }
-
- return $newPatch;
-}
-
-sub gitdiff2svndiff($)
-{
- $_ = shift @_;
- if (m#^diff --git a/(.+) b/(.+)#) {
- return "Index: $1";
- } elsif (m/^new file.*/) {
- return "";
- } elsif (m#^index [0-9a-f]{7}\.\.[0-9a-f]{7} [0-9]{6}#) {
- return "===================================================================";
- } elsif (m#^--- a/(.+)#) {
- return "--- $1";
- } elsif (m#^\+\+\+ b/(.+)#) {
- return "+++ $1";
- }
- return $_;
-}
-
-sub handleBinaryChange($$)
-{
- my ($fullPath, $contents) = @_;
- if ($contents =~ m#((\n[A-Za-z0-9+/]{76})+\n[A-Za-z0-9+/=]{4,76}\n)#) {
- # Addition or Modification
- open FILE, ">", $fullPath or die;
- print FILE decode_base64($1);
- close FILE;
- my $svnOutput = svnStatus($fullPath);
- if ($svnOutput && substr($svnOutput, 0, 1) eq "?") {
- # Addition
- system "svn", "add", $fullPath;
- } else {
- # Modification
- print $svnOutput if $svnOutput;
- }
- } else {
- # Deletion
- system "svn", "rm", $fullPath;
- }
-}
-
-sub isDirectoryEmptyForRemoval($)
-{
- my ($dir) = @_;
- my $directoryIsEmpty = 1;
- opendir DIR, $dir or die "Could not open '$dir' to list files: $?";
- for (my $item = readdir DIR; $item && $directoryIsEmpty; $item = readdir DIR) {
- next if exists $removeDirectoryIgnoreList{$item};
- if (! -d File::Spec->catdir($dir, $item)) {
- $directoryIsEmpty = 0;
- } else {
- my $svnOutput = svnStatus(File::Spec->catdir($dir, $item));
- next if $svnOutput && substr($svnOutput, 0, 1) eq "D";
- $directoryIsEmpty = 0;
- }
- }
- closedir DIR;
- return $directoryIsEmpty;
-}
-
-sub patch($)
-{
- my ($patch) = @_;
- return if !$patch;
-
- unless ($patch =~ m|^Index: ([^\n]+)|) {
- my $separator = '-' x 67;
- warn "Failed to find 'Index:' in:\n$separator\n$patch\n$separator\n";
- return;
- }
- my $fullPath = $1;
-
- my $deletion = 0;
- my $addition = 0;
- my $isBinary = 0;
-
- $addition = 1 if $patch =~ /\n--- .+\(revision 0\)\n/;
- $deletion = 1 if $patch =~ /\n@@ .* \+0,0 @@/;
- $isBinary = 1 if $patch =~ /\nCannot display: file marked as a binary type\./;
-
- if (!$addition && !$deletion && !$isBinary) {
- # Standard patch, patch tool can handle this.
- if (basename($fullPath) eq "ChangeLog") {
- my $changeLogDotOrigExisted = -f "${fullPath}.orig";
- applyPatch(setChangeLogDateAndReviewer(fixChangeLogPatch($patch), $reviewer), $fullPath, ["--fuzz=3"]);
- unlink("${fullPath}.orig") if (! $changeLogDotOrigExisted);
- } else {
- applyPatch($patch, $fullPath);
- }
- } else {
- # Either a deletion, an addition or a binary change.
-
- addDirectoriesIfNeeded(dirname($fullPath));
-
- if ($isBinary) {
- # Binary change
- handleBinaryChange($fullPath, $patch);
- } elsif ($deletion) {
- # Deletion
- applyPatch($patch, $fullPath, ["--force"]);
- system "svn", "rm", "--force", $fullPath;
- } else {
- # Addition
- rename($fullPath, "$fullPath.orig") if -e $fullPath;
- applyPatch($patch, $fullPath);
- unlink("$fullPath.orig") if -e "$fullPath.orig" && checksum($fullPath) eq checksum("$fullPath.orig");
- system "svn", "add", $fullPath;
- system "svn", "stat", "$fullPath.orig" if -e "$fullPath.orig";
- }
- }
-}
-
-sub removeDirectoriesIfNeeded()
-{
- foreach my $dir (reverse sort keys %checkedDirectories) {
- if (isDirectoryEmptyForRemoval($dir)) {
- my $svnOutput;
- open SVN, "svn rm '$dir' |" or die;
- # Only save the last line since Subversion lists all changed statuses below $dir
- while (<SVN>) {
- $svnOutput = $_;
- }
- close SVN;
- print $svnOutput if $svnOutput;
- }
- }
-}
-
-sub setChangeLogDateAndReviewer($$)
-{
- my $patch = shift;
- my $reviewer = shift;
- my $savedTimeZone = $ENV{'TZ'};
- # Set TZ temporarily so that localtime() is in that time zone
- $ENV{'TZ'} = $changeLogTimeZone;
- my $newDate = strftime("%Y-%m-%d", localtime());
- if (defined $savedTimeZone) {
- $ENV{'TZ'} = $savedTimeZone;
- } else {
- delete $ENV{'TZ'};
- }
- $patch =~ s/(\n\+)\d{4}-[^-]{2}-[^-]{2}( )/$1$newDate$2/;
- if (defined($reviewer)) {
- $patch =~ s/NOBODY \(OOPS!\)/$reviewer/;
- }
- return $patch;
-}
-
-sub svnStatus($)
-{
- my ($fullPath) = @_;
- my $svnStatus;
- open SVN, "svn status --non-interactive --non-recursive '$fullPath' |" or die;
- if (-d $fullPath) {
- # When running "svn stat" on a directory, we can't assume that only one
- # status will be returned (since any files with a status below the
- # directory will be returned), and we can't assume that the directory will
- # be first (since any files with unknown status will be listed first).
- my $normalizedFullPath = File::Spec->catdir(File::Spec->splitdir($fullPath));
- while (<SVN>) {
- chomp;
- my $normalizedStatPath = File::Spec->catdir(File::Spec->splitdir(substr($_, 7)));
- if ($normalizedFullPath eq $normalizedStatPath) {
- $svnStatus = $_;
- last;
- }
- }
- # Read the rest of the svn command output to avoid a broken pipe warning.
- local $/ = undef;
- <SVN>;
- }
- else {
- # Files will have only one status returned.
- $svnStatus = <SVN>;
- }
- close SVN;
- return $svnStatus;
-}
diff --git a/WebKitTools/Scripts/svn-create-patch b/WebKitTools/Scripts/svn-create-patch
deleted file mode 100755
index 365737a..0000000
--- a/WebKitTools/Scripts/svn-create-patch
+++ /dev/null
@@ -1,442 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2005, 2006 Apple Computer, Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Extended "svn diff" script for WebKit Open Source Project, used to make patches.
-
-# Differences from standard "svn diff":
-#
-# Uses the real diff, not svn's built-in diff.
-# Always passes "-p" to diff so it will try to include function names.
-# Handles binary files (encoded as a base64 chunk of text).
-# Sorts the diffs alphabetically by text files, then binary files.
-# Handles copied and moved files.
-#
-# Missing features:
-#
-# Handle copied and moved directories.
-
-use strict;
-use warnings;
-
-use Config;
-use Cwd;
-use File::Basename;
-use File::Spec;
-use File::stat;
-use Getopt::Long;
-use MIME::Base64;
-use POSIX qw(:errno_h);
-use Time::gmtime;
-
-sub binarycmp($$);
-sub canonicalizePath($);
-sub findBaseUrl($);
-sub findMimeType($;$);
-sub findModificationType($);
-sub findSourceFileAndRevision($);
-sub fixChangeLogPatch($);
-sub generateDiff($);
-sub generateFileList($\%);
-sub isBinaryMimeType($);
-sub manufacturePatchForAdditionWithHistory($);
-sub numericcmp($$);
-sub outputBinaryContent($);
-sub patchpathcmp($$);
-sub pathcmp($$);
-sub processPaths(\@);
-sub splitpath($);
-sub testfilecmp($$);
-
-$ENV{'LC_ALL'} = 'C';
-
-my $showHelp;
-
-my $result = GetOptions(
- "help" => \$showHelp,
-);
-if (!$result || $showHelp) {
- print STDERR basename($0) . " [-h|--help] [svndir1 [svndir2 ...]]\n";
- exit 1;
-}
-
-# Sort the diffs for easier reviewing.
-my %paths = processPaths(@ARGV);
-
-# Generate a list of files requiring diffs.
-my %diffFiles;
-for my $path (keys %paths) {
- generateFileList($path, %diffFiles);
-}
-
-# Generate the diffs, in a order chosen for easy reviewing.
-for my $path (sort patchpathcmp values %diffFiles) {
- generateDiff($path);
-}
-
-exit 0;
-
-# Overall sort, considering multiple criteria.
-sub patchpathcmp($$)
-{
- my ($a, $b) = @_;
-
- # All binary files come after all non-binary files.
- my $result = binarycmp($a, $b);
- return $result if $result;
-
- # All test files come after all non-test files.
- $result = testfilecmp($a, $b);
- return $result if $result;
-
- # Final sort is a "smart" sort by directory and file name.
- return pathcmp($a, $b);
-}
-
-# Sort so text files appear before binary files.
-sub binarycmp($$)
-{
- my ($fileDataA, $fileDataB) = @_;
- return $fileDataA->{isBinary} <=> $fileDataB->{isBinary};
-}
-
-sub canonicalizePath($)
-{
- my ($file) = @_;
-
- # Remove extra slashes and '.' directories in path
- $file = File::Spec->canonpath($file);
-
- # Remove '..' directories in path
- my @dirs = ();
- foreach my $dir (File::Spec->splitdir($file)) {
- if ($dir eq '..' && $#dirs >= 0 && $dirs[$#dirs] ne '..') {
- pop(@dirs);
- } else {
- push(@dirs, $dir);
- }
- }
- return ($#dirs >= 0) ? File::Spec->catdir(@dirs) : ".";
-}
-
-sub findBaseUrl($)
-{
- my ($infoPath) = @_;
- my $baseUrl;
- open INFO, "svn info '$infoPath' |" or die;
- while (<INFO>) {
- if (/^URL: (.+)/) {
- $baseUrl = $1;
- last;
- }
- }
- close INFO;
- return $baseUrl;
-}
-
-sub findMimeType($;$)
-{
- my ($file, $revision) = @_;
- my $args = $revision ? "--revision $revision" : "";
- open PROPGET, "svn propget svn:mime-type $args '$file' |" or die;
- my $mimeType = <PROPGET>;
- close PROPGET;
- chomp $mimeType if $mimeType;
- return $mimeType;
-}
-
-sub findModificationType($)
-{
- my ($stat) = @_;
- my $fileStat = substr($stat, 0, 1);
- my $propertyStat = substr($stat, 1, 1);
- if ($fileStat eq "A") {
- my $additionWithHistory = substr($stat, 3, 1);
- return $additionWithHistory eq "+" ? "additionWithHistory" : "addition";
- }
- return "modification" if ($fileStat eq "M" || $propertyStat eq "M");
- return "deletion" if ($fileStat eq "D");
- return undef;
-}
-
-sub findSourceFileAndRevision($)
-{
- my ($file) = @_;
- my $baseUrl = findBaseUrl(".");
- my $sourceFile;
- my $sourceRevision;
- open INFO, "svn info '$file' |" or die;
- while (<INFO>) {
- if (/^Copied From URL: (.+)/) {
- $sourceFile = File::Spec->abs2rel($1, $baseUrl);
- } elsif (/^Copied From Rev: ([0-9]+)/) {
- $sourceRevision = $1;
- }
- }
- close INFO;
- return ($sourceFile, $sourceRevision);
-}
-
-sub fixChangeLogPatch($)
-{
- my $patch = shift;
- my $contextLineCount = 3;
-
- return $patch if $patch !~ /\n@@ -1,(\d+) \+1,(\d+) @@\n( .*\n)+(\+.*\n)+( .*\n){$contextLineCount}$/m;
- my ($oldLineCount, $newLineCount) = ($1, $2);
- return $patch if $oldLineCount <= $contextLineCount;
-
- # The diff(1) command is greedy when matching lines, so a new ChangeLog entry will
- # have lines of context at the top of a patch when the existing entry has the same
- # date and author as the new entry. This nifty loop alters a ChangeLog patch so
- # that the added lines ("+") in the patch always start at the beginning of the
- # patch and there are no initial lines of context.
- my $newPatch;
- my $lineCountInState = 0;
- my $oldContentLineCountReduction = $oldLineCount - $contextLineCount;
- my $newContentLineCountWithoutContext = $newLineCount - $oldLineCount - $oldContentLineCountReduction;
- my ($stateHeader, $statePreContext, $stateNewChanges, $statePostContext) = (1..4);
- my $state = $stateHeader;
- foreach my $line (split(/\n/, $patch)) {
- $lineCountInState++;
- if ($state == $stateHeader && $line =~ /^@@ -1,$oldLineCount \+1,$newLineCount @\@$/) {
- $line = "@@ -1,$contextLineCount +1," . ($newLineCount - $oldContentLineCountReduction) . " @@";
- $lineCountInState = 0;
- $state = $statePreContext;
- } elsif ($state == $statePreContext && substr($line, 0, 1) eq " ") {
- $line = "+" . substr($line, 1);
- if ($lineCountInState == $oldContentLineCountReduction) {
- $lineCountInState = 0;
- $state = $stateNewChanges;
- }
- } elsif ($state == $stateNewChanges && substr($line, 0, 1) eq "+") {
- # No changes to these lines
- if ($lineCountInState == $newContentLineCountWithoutContext) {
- $lineCountInState = 0;
- $state = $statePostContext;
- }
- } elsif ($state == $statePostContext) {
- if (substr($line, 0, 1) eq "+" && $lineCountInState <= $oldContentLineCountReduction) {
- $line = " " . substr($line, 1);
- } elsif ($lineCountInState > $contextLineCount && substr($line, 0, 1) eq " ") {
- next; # Discard
- }
- }
- $newPatch .= $line . "\n";
- }
-
- return $newPatch;
-}
-
-sub generateDiff($)
-{
- my ($fileData) = @_;
- my $file = $fileData->{path};
- my $patch;
- if ($fileData->{modificationType} eq "additionWithHistory") {
- manufacturePatchForAdditionWithHistory($fileData);
- }
- open DIFF, "svn diff --diff-cmd diff -x -uaNp '$file' |" or die;
- while (<DIFF>) {
- $patch .= $_;
- }
- close DIFF;
- $patch = fixChangeLogPatch($patch) if basename($file) eq "ChangeLog";
- print $patch if $patch;
- if ($fileData->{isBinary}) {
- print "\n" if ($patch && $patch =~ m/\n\S+$/m);
- outputBinaryContent($file);
- }
-}
-
-sub generateFileList($\%)
-{
- my ($statPath, $diffFiles) = @_;
- my %testDirectories = map { $_ => 1 } qw(LayoutTests);
- open STAT, "svn stat '$statPath' |" or die;
- while (my $line = <STAT>) {
- chomp $line;
- my $stat = substr($line, 0, 7);
- my $path = substr($line, 7);
- next if -d $path;
- my $modificationType = findModificationType($stat);
- if ($modificationType) {
- $diffFiles->{$path}->{path} = $path;
- $diffFiles->{$path}->{modificationType} = $modificationType;
- $diffFiles->{$path}->{isBinary} = isBinaryMimeType($path);
- $diffFiles->{$path}->{isTestFile} = exists $testDirectories{(File::Spec->splitdir($path))[0]} ? 1 : 0;
- if ($modificationType eq "additionWithHistory") {
- my ($sourceFile, $sourceRevision) = findSourceFileAndRevision($path);
- $diffFiles->{$path}->{sourceFile} = $sourceFile;
- $diffFiles->{$path}->{sourceRevision} = $sourceRevision;
- }
- } else {
- print STDERR $line, "\n";
- }
- }
- close STAT;
-}
-
-sub isBinaryMimeType($)
-{
- my ($file) = @_;
- my $mimeType = findMimeType($file);
- return 0 if (!$mimeType || substr($mimeType, 0, 5) eq "text/");
- return 1;
-}
-
-sub manufacturePatchForAdditionWithHistory($)
-{
- my ($fileData) = @_;
- my $file = $fileData->{path};
- print "Index: ${file}\n";
- print "=" x 67, "\n";
- my $sourceFile = $fileData->{sourceFile};
- my $sourceRevision = $fileData->{sourceRevision};
- print "--- ${file}\t(revision ${sourceRevision})\t(from ${sourceFile}:${sourceRevision})\n";
- print "+++ ${file}\t(working copy)\n";
- if ($fileData->{isBinary}) {
- print "\nCannot display: file marked as a binary type.\n";
- my $mimeType = findMimeType($file, $sourceRevision);
- print "svn:mime-type = ${mimeType}\n\n";
- } else {
- print `svn cat ${sourceFile} | diff -u /dev/null - | tail -n +3`;
- }
-}
-
-# Sort numeric parts of strings as numbers, other parts as strings.
-# Makes 1.33 come after 1.3, which is cool.
-sub numericcmp($$)
-{
- my ($aa, $bb) = @_;
-
- my @a = split /(\d+)/, $aa;
- my @b = split /(\d+)/, $bb;
-
- # Compare one chunk at a time.
- # Each chunk is either all numeric digits, or all not numeric digits.
- while (@a && @b) {
- my $a = shift @a;
- my $b = shift @b;
-
- # Use numeric comparison if chunks are non-equal numbers.
- return $a <=> $b if $a =~ /^\d/ && $b =~ /^\d/ && $a != $b;
-
- # Use string comparison if chunks are any other kind of non-equal string.
- return $a cmp $b if $a ne $b;
- }
-
- # One of the two is now empty; compare lengths for result in this case.
- return @a <=> @b;
-}
-
-sub outputBinaryContent($)
-{
- my ($path) = @_;
- # Deletion
- return if (! -e $path);
- # Addition or Modification
- my $buffer;
- open BINARY, $path or die;
- while (read(BINARY, $buffer, 60*57)) {
- print encode_base64($buffer);
- }
- close BINARY;
- print "\n";
-}
-
-# Sort first by directory, then by file, so all paths in one directory are grouped
-# rather than being interspersed with items from subdirectories.
-# Use numericcmp to sort directory and filenames to make order logical.
-# Also include a special case for ChangeLog, which comes first in any directory.
-sub pathcmp($$)
-{
- my ($fileDataA, $fileDataB) = @_;
-
- my ($dira, $namea) = splitpath($fileDataA->{path});
- my ($dirb, $nameb) = splitpath($fileDataB->{path});
-
- return numericcmp($dira, $dirb) if $dira ne $dirb;
- return -1 if $namea eq "ChangeLog" && $nameb ne "ChangeLog";
- return +1 if $namea ne "ChangeLog" && $nameb eq "ChangeLog";
- return numericcmp($namea, $nameb);
-}
-
-sub processPaths(\@)
-{
- my ($paths) = @_;
- return ("." => 1) if (!@{$paths});
-
- my %result = ();
-
- for my $file (@{$paths}) {
- die "can't handle absolute paths like \"$file\"\n" if File::Spec->file_name_is_absolute($file);
- die "can't handle empty string path\n" if $file eq "";
- die "can't handle path with single quote in the name like \"$file\"\n" if $file =~ /'/; # ' (keep Xcode syntax highlighting happy)
-
- my $untouchedFile = $file;
-
- $file = canonicalizePath($file);
-
- die "can't handle paths with .. like \"$untouchedFile\"\n" if $file =~ m|/\.\./|;
-
- $result{$file} = 1;
- }
-
- return ("." => 1) if ($result{"."});
-
- # Remove any paths that also have a parent listed.
- for my $path (keys %result) {
- for (my $parent = dirname($path); $parent ne '.'; $parent = dirname($parent)) {
- if ($result{$parent}) {
- delete $result{$path};
- last;
- }
- }
- }
-
- return %result;
-}
-
-# Break up a path into the directory (with slash) and base name.
-sub splitpath($)
-{
- my ($path) = @_;
-
- my $pathSeparator = "/";
- my $dirname = dirname($path) . $pathSeparator;
- $dirname = "" if $dirname eq "." . $pathSeparator;
-
- return ($dirname, basename($path));
-}
-
-# Sort so source code files appear before test files.
-sub testfilecmp($$)
-{
- my ($fileDataA, $fileDataB) = @_;
- return $fileDataA->{isTestFile} <=> $fileDataB->{isTestFile};
-}
diff --git a/WebKitTools/Scripts/svn-unapply b/WebKitTools/Scripts/svn-unapply
deleted file mode 100755
index 11e3ddb..0000000
--- a/WebKitTools/Scripts/svn-unapply
+++ /dev/null
@@ -1,374 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2005, 2006, 2007 Apple Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# "unpatch" script for Web Kit Open Source Project, used to remove patches.
-
-# Differences from invoking "patch -p0 -R":
-#
-# Handles added files (does a svn revert with additional logic to handle local changes).
-# Handles added directories (does a svn revert and a rmdir).
-# Handles removed files (does a svn revert with additional logic to handle local changes).
-# Handles removed directories (does a svn revert).
-# Paths from Index: lines are used rather than the paths on the patch lines, which
-# makes patches generated by "cvs diff" work (increasingly unimportant since we
-# use Subversion now).
-# ChangeLog patches use --fuzz=3 to prevent rejects, and the entry date is reset in
-# the patch before it is applied (svn-apply sets it when applying a patch).
-# Handles binary files (requires patches made by svn-create-patch).
-# Handles copied and moved files (requires patches made by svn-create-patch).
-# Handles git-diff patches (without binary changes) created at the top-level directory
-#
-# Missing features:
-#
-# Handle property changes.
-# Handle copied and moved directories (would require patches made by svn-create-patch).
-# Use version numbers in the patch file and do a 3-way merge.
-# When reversing an addition, check that the file matches what's being removed.
-# Notice a patch that's being unapplied at the "wrong level" and make it work anyway.
-# Do a dry run on the whole patch and don't do anything if part of the patch is
-# going to fail (probably too strict unless we exclude ChangeLog).
-# Handle git-diff patches with binary changes
-
-use strict;
-use warnings;
-
-use Cwd;
-use Digest::MD5;
-use Fcntl qw(:DEFAULT :seek);
-use File::Basename;
-use File::Spec;
-use File::Temp qw(tempfile);
-use Getopt::Long;
-
-sub checksum($);
-sub fixChangeLogPatch($);
-sub gitdiff2svndiff($);
-sub patch($);
-sub revertDirectories();
-sub svnStatus($);
-sub unapplyPatch($$;$);
-sub unsetChangeLogDate($$);
-
-my $showHelp = 0;
-if (!GetOptions("help!" => \$showHelp) || $showHelp) {
- print STDERR basename($0) . " [-h|--help] patch1 [patch2 ...]\n";
- exit 1;
-}
-
-my @copiedFiles;
-my %directoriesToCheck;
-
-my $copiedFromPath;
-my $filter;
-my $indexPath;
-my $patch;
-while (<>) {
- s/([\n\r]+)$//mg;
- my $eol = $1;
- if (!defined($indexPath) && m#^diff --git a/#) {
- $filter = \&gitdiff2svndiff;
- }
- $_ = &$filter($_) if $filter;
- if (/^Index: (.*)/) {
- $indexPath = $1;
- if ($patch) {
- if ($copiedFromPath) {
- push @copiedFiles, $patch;
- } else {
- patch($patch);
- }
- $copiedFromPath = "";
- $patch = "";
- }
- }
- if ($indexPath) {
- # Fix paths on diff, ---, and +++ lines to match preceding Index: line.
- s/^--- \S+/--- $indexPath/;
- if (/^--- .+\(from (\S+):\d+\)$/) {
- $copiedFromPath = $1;
- }
- if (s/^\+\+\+ \S+/+++ $indexPath/) {
- $indexPath = "";
- }
- }
- $patch .= $_;
- $patch .= $eol;
-}
-
-if ($patch) {
- if ($copiedFromPath) {
- push @copiedFiles, $patch;
- } else {
- patch($patch);
- }
-}
-
-# Handle copied and moved files last since they may have had post-copy changes that have now been unapplied
-for $patch (@copiedFiles) {
- patch($patch);
-}
-
-revertDirectories();
-
-exit 0;
-
-sub checksum($)
-{
- my $file = shift;
- open(FILE, $file) or die "Can't open '$file': $!";
- binmode(FILE);
- my $checksum = Digest::MD5->new->addfile(*FILE)->hexdigest();
- close(FILE);
- return $checksum;
-}
-
-sub fixChangeLogPatch($)
-{
- my $patch = shift;
- my $contextLineCount = 3;
-
- return $patch if $patch !~ /\n@@ -1,(\d+) \+1,(\d+) @@\n( .*\n)+(\+.*\n)+( .*\n){$contextLineCount}$/m;
- my ($oldLineCount, $newLineCount) = ($1, $2);
- return $patch if $oldLineCount <= $contextLineCount;
-
- # The diff(1) command is greedy when matching lines, so a new ChangeLog entry will
- # have lines of context at the top of a patch when the existing entry has the same
- # date and author as the new entry. This nifty loop alters a ChangeLog patch so
- # that the added lines ("+") in the patch always start at the beginning of the
- # patch and there are no initial lines of context.
- my $newPatch;
- my $lineCountInState = 0;
- my $oldContentLineCountReduction = $oldLineCount - $contextLineCount;
- my $newContentLineCountWithoutContext = $newLineCount - $oldLineCount - $oldContentLineCountReduction;
- my ($stateHeader, $statePreContext, $stateNewChanges, $statePostContext) = (1..4);
- my $state = $stateHeader;
- foreach my $line (split(/\n/, $patch)) {
- $lineCountInState++;
- if ($state == $stateHeader && $line =~ /^@@ -1,$oldLineCount \+1,$newLineCount @\@$/) {
- $line = "@@ -1,$contextLineCount +1," . ($newLineCount - $oldContentLineCountReduction) . " @@";
- $lineCountInState = 0;
- $state = $statePreContext;
- } elsif ($state == $statePreContext && substr($line, 0, 1) eq " ") {
- $line = "+" . substr($line, 1);
- if ($lineCountInState == $oldContentLineCountReduction) {
- $lineCountInState = 0;
- $state = $stateNewChanges;
- }
- } elsif ($state == $stateNewChanges && substr($line, 0, 1) eq "+") {
- # No changes to these lines
- if ($lineCountInState == $newContentLineCountWithoutContext) {
- $lineCountInState = 0;
- $state = $statePostContext;
- }
- } elsif ($state == $statePostContext) {
- if (substr($line, 0, 1) eq "+" && $lineCountInState <= $oldContentLineCountReduction) {
- $line = " " . substr($line, 1);
- } elsif ($lineCountInState > $contextLineCount && substr($line, 0, 1) eq " ") {
- next; # Discard
- }
- }
- $newPatch .= $line . "\n";
- }
-
- return $newPatch;
-}
-
-sub gitdiff2svndiff($)
-{
- $_ = shift @_;
- if (m#^diff --git a/(.+) b/(.+)#) {
- return "Index: $1";
- } elsif (m/^new file.*/) {
- return "";
- } elsif (m#^index [0-9a-f]{7}\.\.[0-9a-f]{7} [0-9]{6}#) {
- return "===================================================================";
- } elsif (m#^--- a/(.+)#) {
- return "--- $1";
- } elsif (m#^\+\+\+ b/(.+)#) {
- return "+++ $1";
- }
- return $_;
-}
-
-sub patch($)
-{
- my ($patch) = @_;
- return if !$patch;
-
- unless ($patch =~ m|^Index: ([^\n]+)|) {
- my $separator = '-' x 67;
- warn "Failed to find 'Index:' in:\n$separator\n$patch\n$separator\n";
- return;
- }
- my $fullPath = $1;
- $directoriesToCheck{dirname($fullPath)} = 1;
-
- my $deletion = 0;
- my $addition = 0;
- my $isBinary = 0;
-
- $addition = 1 if ($patch =~ /\n--- .+\(revision 0\)\n/ || $patch =~ /\n@@ -0,0 .* @@/);
- $deletion = 1 if $patch =~ /\n@@ .* \+0,0 @@/;
- $isBinary = 1 if $patch =~ /\nCannot display: file marked as a binary type\./;
-
- if (!$addition && !$deletion && !$isBinary) {
- # Standard patch, patch tool can handle this.
- if (basename($fullPath) eq "ChangeLog") {
- my $changeLogDotOrigExisted = -f "${fullPath}.orig";
- unapplyPatch(unsetChangeLogDate($fullPath, fixChangeLogPatch($patch)), $fullPath, ["--fuzz=3"]);
- unlink("${fullPath}.orig") if (! $changeLogDotOrigExisted);
- } else {
- unapplyPatch($patch, $fullPath);
- }
- } else {
- # Either a deletion, an addition or a binary change.
-
- if ($isBinary) {
- # Reverse binary change
- unlink($fullPath) if (-e $fullPath);
- system "svn", "revert", $fullPath;
- } elsif ($deletion) {
- # Reverse deletion
- rename($fullPath, "$fullPath.orig") if -e $fullPath;
-
- unapplyPatch($patch, $fullPath);
-
- # If we don't ask for the filehandle here, we always get a warning.
- my ($fh, $tempPath) = tempfile(basename($fullPath) . "-XXXXXXXX",
- DIR => dirname($fullPath), UNLINK => 1);
- close($fh);
-
- # Keep the version from the patch in case it's different from svn.
- rename($fullPath, $tempPath);
- system "svn", "revert", $fullPath;
- rename($tempPath, $fullPath);
-
- # This works around a bug in the svn client.
- # [Issue 1960] file modifications get lost due to FAT 2s time resolution
- # http://subversion.tigris.org/issues/show_bug.cgi?id=1960
- system "touch", $fullPath;
-
- # Remove $fullPath.orig if it is the same as $fullPath
- unlink("$fullPath.orig") if -e "$fullPath.orig" && checksum($fullPath) eq checksum("$fullPath.orig");
-
- # Show status if the file is modifed
- system "svn", "stat", $fullPath;
- } else {
- # Reverse addition
- unapplyPatch($patch, $fullPath, ["--force"]);
- unlink($fullPath) if -z $fullPath;
- system "svn", "revert", $fullPath;
- }
- }
-}
-
-sub revertDirectories()
-{
- my %checkedDirectories;
- foreach my $path (reverse sort keys %directoriesToCheck) {
- my @dirs = File::Spec->splitdir($path);
- while (scalar @dirs) {
- my $dir = File::Spec->catdir(@dirs);
- pop(@dirs);
- next if (exists $checkedDirectories{$dir});
- if (-d $dir) {
- my $svnOutput = svnStatus($dir);
- if ($svnOutput && $svnOutput =~ m#A\s+$dir\n#) {
- system "svn", "revert", $dir;
- rmdir $dir;
- }
- elsif ($svnOutput && $svnOutput =~ m#D\s+$dir\n#) {
- system "svn", "revert", $dir;
- }
- else {
- # Modification
- print $svnOutput if $svnOutput;
- }
- $checkedDirectories{$dir} = 1;
- }
- else {
- die "'$dir' is not a directory";
- }
- }
- }
-}
-
-sub svnStatus($)
-{
- my ($fullPath) = @_;
- my $svnStatus;
- open SVN, "svn status --non-interactive --non-recursive '$fullPath' |" or die;
- if (-d $fullPath) {
- # When running "svn stat" on a directory, we can't assume that only one
- # status will be returned (since any files with a status below the
- # directory will be returned), and we can't assume that the directory will
- # be first (since any files with unknown status will be listed first).
- my $normalizedFullPath = File::Spec->catdir(File::Spec->splitdir($fullPath));
- while (<SVN>) {
- chomp;
- my $normalizedStatPath = File::Spec->catdir(File::Spec->splitdir(substr($_, 7)));
- if ($normalizedFullPath eq $normalizedStatPath) {
- $svnStatus = $_;
- last;
- }
- }
- # Read the rest of the svn command output to avoid a broken pipe warning.
- local $/ = undef;
- <SVN>;
- }
- else {
- # Files will have only one status returned.
- $svnStatus = <SVN>;
- }
- close SVN;
- return $svnStatus;
-}
-
-sub unapplyPatch($$;$)
-{
- my ($patch, $fullPath, $options) = @_;
- $options = [] if (! $options);
- my $command = "patch " . join(" ", "-p0", "-R", @{$options});
- open PATCH, "| $command" or die "Failed to patch $fullPath: $!";
- print PATCH $patch;
- close PATCH;
-}
-
-sub unsetChangeLogDate($$)
-{
- my $fullPath = shift;
- my $patch = shift;
- my $newDate;
- sysopen(CHANGELOG, $fullPath, O_RDONLY) or die "Failed to open $fullPath: $!";
- sysseek(CHANGELOG, 0, SEEK_SET);
- my $byteCount = sysread(CHANGELOG, $newDate, 10);
- die "Failed reading $fullPath: $!" if !$byteCount || $byteCount != 10;
- close(CHANGELOG);
- $patch =~ s/(\n\+)\d{4}-[^-]{2}-[^-]{2}( )/$1$newDate$2/;
- return $patch;
-}
diff --git a/WebKitTools/Scripts/update-iexploder-cssproperties b/WebKitTools/Scripts/update-iexploder-cssproperties
deleted file mode 100755
index b7ae6cb..0000000
--- a/WebKitTools/Scripts/update-iexploder-cssproperties
+++ /dev/null
@@ -1,112 +0,0 @@
-#!/usr/bin/perl
-
-# Copyright (C) 2007 Apple Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# This script updates WebKitTools/iExploder/htdocs/cssproperties.in based on
-# WebCore/css/CSSPropertyNames.in.
-
-use warnings;
-use strict;
-
-use FindBin;
-use lib $FindBin::Bin;
-use webkitdirs;
-
-use File::Spec;
-
-sub generateSectionFromCSSPropertyNamesFile();
-sub readiExploderFile();
-sub svnRevision($);
-sub writeiExploderFile();
-
-my $iExploderFile = File::Spec->catfile(sourceDir(), split("/", "WebKitTools/iExploder/htdocs/cssproperties.in"));
-my $cssPropertyNamesFile = File::Spec->catfile(sourceDir(), split("/", "WebCore/css/CSSPropertyNames.in"));
-
-my @sections = readiExploderFile();
-$sections[0] = generateSectionFromCSSPropertyNamesFile();
-writeiExploderFile();
-
-print `svn stat $iExploderFile`;
-print "Successfully updated!\n";
-
-exit 0;
-
-sub generateSectionFromCSSPropertyNamesFile()
-{
- my $revision = svnRevision($cssPropertyNamesFile);
- my $path = File::Spec->abs2rel($cssPropertyNamesFile, sourceDir());
- my $result = "# From WebKit svn r" . $revision . " (" . $path . ")\n";
-
- my @properties = ();
-
- open(IN, $cssPropertyNamesFile) || die "$!";
- while (my $l = <IN>) {
- chomp $l;
- next if $l =~ m/^\s*#/ || $l =~ m/^\s*$/;
- push(@properties, $l);
- }
- close(IN);
-
- $result .= join("\n", sort { $a cmp $b } @properties) . "\n\n";
-
- return $result;
-}
-
-sub readiExploderFile()
-{
- my @sections = ();
- local $/ = "\n\n";
-
- open(IN, $iExploderFile) || die "$!";
- @sections = <IN>;
- close(IN);
-
- return @sections;
-}
-
-sub svnRevision($)
-{
- my ($file) = @_;
- my $revision = "";
-
- open INFO, "svn info '$file' |" or die;
- while (<INFO>) {
- if (/^Revision: (.+)/) {
- $revision = $1;
- }
- }
- close INFO;
-
- return $revision ? $revision : "UNKNOWN";
-}
-
-sub writeiExploderFile()
-{
- open(OUT, "> $iExploderFile") || die "$!";
- print OUT join("", @sections);
- close(OUT);
-}
diff --git a/WebKitTools/Scripts/update-javascriptcore-test-results b/WebKitTools/Scripts/update-javascriptcore-test-results
deleted file mode 100755
index dd8b9b6..0000000
--- a/WebKitTools/Scripts/update-javascriptcore-test-results
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2005, 2007 Apple Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-use strict;
-use FindBin;
-use Getopt::Long;
-use lib $FindBin::Bin;
-use webkitdirs;
-
-chdirWebKit();
-chdir "JavaScriptCore/tests/mozilla" or die;
-
-my $force = 0;
-GetOptions('force' => \$force);
-
-open EXPECTED, "expected.html" or die;
-while (<EXPECTED>) {
- last if /failures reported\.$/;
-}
-my %expected;
-while (<EXPECTED>) {
- chomp;
- $expected{$_} = 1;
-}
-close EXPECTED;
-
-open ACTUAL, "actual.html" or die;
-my $actual;
-while (<ACTUAL>) {
- $actual .= $_;
- last if /failures reported\.$/;
-}
-my $failed = 0;
-while (<ACTUAL>) {
- $actual .= $_;
- chomp;
- if (!$expected{$_}) {
- $failed = 1;
- print "failure not expected: $_\n";
- }
-}
-close ACTUAL;
-
-die "won't update, failures introduced\n" if $failed && !$force;
-
-open EXPECTED, ">expected.html";
-print EXPECTED $actual;
-close EXPECTED;
diff --git a/WebKitTools/Scripts/update-sources-list.py b/WebKitTools/Scripts/update-sources-list.py
deleted file mode 100644
index e565059..0000000
--- a/WebKitTools/Scripts/update-sources-list.py
+++ /dev/null
@@ -1,93 +0,0 @@
-#!/usr/bin/python
-
-# Copyright (C) 2007 Kevin Ollivier All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
-# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# Make sure any port-independent files added to the Bakefile are
-# added to GTK, QT, etc. so that file updates can happen in one place.
-
-import os, sys
-from xml.dom import minidom
-
-scriptDir = os.path.abspath(sys.path[0])
-wkroot = os.path.abspath(os.path.join(scriptDir, "../.."))
-
-def getWebCoreFilesDict():
- """
- This method parses the WebCoreSources.bkl file, which has a list of all sources not specific
- to any port, and returns the result as a dictionary with items of the form
- (groupName, groupFiles).
- """
- sources = {}
- sources_prefix = "WEBCORE_"
- filepath = os.path.join(wkroot, "WebCore/WebCoreSources.bkl")
- assert(os.path.exists(filepath))
-
- doc = minidom.parse(filepath)
- for sourceGroup in doc.getElementsByTagName("set"):
- groupName = ""
- if sourceGroup.attributes.has_key("var"):
- groupName = sourceGroup.attributes["var"].value
- groupName = groupName.replace(sources_prefix, "")
-
- sourcesList = []
- for node in sourceGroup.childNodes:
- if node.nodeType == node.TEXT_NODE:
- sourcesText = node.nodeValue.strip()
- sourcesList = sourcesText.split("\n")
-
- assert(groupName != "")
- assert(sourcesList != [])
-
- sources[groupName] = sourcesList
-
- return sources
-
-def generateWebCoreSourcesGTKAndQT(sources):
- """
- Convert the dictionary obtained from getWebCoreFilesDict() into a Unix makefile syntax,
- which IIUC is suitable for both GTK and QT build systems. To take advantage of this,
- QT and GTK would have to include the file "WebCore/sources.inc" into their makefiles.
- """
- makefileString = ""
-
- for key in sources.keys():
- makefileString += key + "+="
- for source in sources[key]:
- makefileString += " \\\n\t\t" + source.strip()
-
- makefileString += "\n\n"
-
- makefileString += "BASE_SOURCES +="
- for key in sources.keys():
- makefileString += " \\\n\t\t" + key
-
- outfile = os.path.join(wkroot, "WebCore/sources.inc")
- sourcefile = open(outfile, "w")
- sourcefile.write(makefileString)
- sourcefile.close()
-
-sources = getWebCoreFilesDict()
-generateWebCoreSourcesGTKAndQT(sources)
-
-# Coming soon - MSVC and hopefully XCode support!
diff --git a/WebKitTools/Scripts/update-webkit b/WebKitTools/Scripts/update-webkit
deleted file mode 100755
index e0c0d82..0000000
--- a/WebKitTools/Scripts/update-webkit
+++ /dev/null
@@ -1,92 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Update script for Web Kit Open Source Project.
-
-use strict;
-use FindBin;
-use lib $FindBin::Bin;
-use File::Basename;
-use File::Spec;
-use Getopt::Long;
-use webkitdirs;
-
-sub runSvnUpdate();
-
-# Handle options
-my $quiet = '';
-my $showHelp;
-
-my $getOptionsResult = GetOptions(
- 'h|help' => \$showHelp,
- 'q|quiet' => \$quiet,
-);
-
-if (!$getOptionsResult || $showHelp) {
- print STDERR <<__END__;
-Usage: @{[ basename($0) ]} [options]
- -h|--help show the help message
- -q|--quiet pass -q to svn update for quiet updates
-__END__
- exit 1;
-}
-
-my @svnOptions = ();
-push @svnOptions, '-q' if $quiet;
-
-chdirWebKit();
-print "Updating OpenSource\n" unless $quiet;
-runSvnUpdate();
-
-if (-d "../Internal") {
- chdir("../Internal");
- print "Updating Internal\n" unless $quiet;
- runSvnUpdate();
-} elsif (isCygwin()) {
- system("perl", "WebKitTools/Scripts/update-webkit-auxiliary-libs") == 0 or die;
-}
-
-exit 0;
-
-sub runSvnUpdate()
-{
- open UPDATE, "-|", "svn", "update", @svnOptions or die;
- my @conflictedChangeLogs;
- while (my $line = <UPDATE>) {
- print $line;
- push @conflictedChangeLogs, $1 if $line =~ m/^C\s+(.+)\s*$/ && basename($1) eq "ChangeLog";
- }
- close UPDATE or die;
-
- if (@conflictedChangeLogs) {
- print "Attempting to merge conflicted ChangeLogs.\n";
- my $resolveChangeLogsPath = File::Spec->catfile(dirname($0), "resolve-ChangeLogs");
- (system($resolveChangeLogsPath, "--no-warnings", @conflictedChangeLogs) == 0)
- or die "Could not open resolve-ChangeLogs script: $!.\n";
- }
-}
diff --git a/WebKitTools/Scripts/update-webkit-auxiliary-libs b/WebKitTools/Scripts/update-webkit-auxiliary-libs
deleted file mode 100755
index 1d6943c..0000000
--- a/WebKitTools/Scripts/update-webkit-auxiliary-libs
+++ /dev/null
@@ -1,121 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2005, 2006, 2007 Apple Computer, Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Updates a development environment to the new WebKitAuxiliaryLibrary
-
-use strict;
-use warnings;
-
-use HTTP::Date qw(str2time);
-use File::Find;
-use File::Temp;
-use File::Spec;
-use FindBin;
-use lib $FindBin::Bin;
-use webkitdirs;
-
-sub lastModifiedToUnixTime($);
-
-# Time in seconds that the new zip file must be newer than the old for us to
-# consider them to be different. If the difference in modification time is less
-# than this threshold, we assume that the files are the same. We need this
-# because the zip file is served from a set of mirrors with slightly different
-# Last-Modified times.
-my $newnessThreshold = 30;
-
-my $sourceDir = sourceDir();
-my $file = "WebKitAuxiliaryLibrary";
-my $zipFile = "$file.zip";
-my $auxiliaryLibsURL = "http://developer.apple.com/opensource/internet/$zipFile";
-my $webkitLibrariesDir = toUnixPath($ENV{'WEBKITLIBRARIESDIR'}) || "$sourceDir/WebKitLibraries/win";
-my $tmpDir = File::Spec->rel2abs(File::Temp::tempdir("webkitlibsXXXXXXX", TMPDIR => 1, CLEANUP => 1));
-
-print "Checking Last-Modified date of $zipFile...\n";
-
-my $result = system "curl -s -I $auxiliaryLibsURL | grep Last-Modified > \"$tmpDir/$file.headers\"";
-print STDERR "Couldn't check Last-Modified date of new $zipFile.\n" if $result;
-
-if (!$result && open NEW, "$tmpDir/$file.headers") {
- my $new = lastModifiedToUnixTime(<NEW>);
- close NEW;
-
- if (defined $new && open OLD, "$webkitLibrariesDir/$file.headers") {
- my $old = lastModifiedToUnixTime(<OLD>);
- close OLD;
- if (defined $old && abs($new - $old) < $newnessThreshold) {
- print "Current $file is up to date\n";
- exit 0;
- }
- }
-}
-
-print "Downloading $zipFile...\n\n";
-$result = system "curl -o \"$tmpDir/$zipFile\" $auxiliaryLibsURL";
-die "Couldn't download $zipFile!" if $result;
-
-$result = system "unzip", "-q", "-d", $tmpDir, "$tmpDir/$zipFile";
-die "Couldn't unzip $zipFile." if $result;
-
-print "\nInstalling $file...\n";
-
-sub wanted
-{
- my $relativeName = File::Spec->abs2rel($File::Find::name, "$tmpDir/$file/win");
- my $destination = "$webkitLibrariesDir/$relativeName";
-
- if (-d $_) {
- mkdir $destination;
- return;
- }
-
- system "cp", $_, $destination;
-}
-
-File::Find::find(\&wanted, "$tmpDir/$file");
-
-$result = system "mv", "$tmpDir/$file.headers", $webkitLibrariesDir;
-print STDERR "Couldn't move $file.headers to $webkitLibrariesDir" . ".\n" if $result;
-
-print "The $file has been sucessfully installed in\n $webkitLibrariesDir\n";
-exit;
-
-sub toUnixPath
-{
- my $path = shift;
- return unless $path;
- chomp($path = `cygpath -u '$path'`);
- return $path;
-}
-
-sub lastModifiedToUnixTime($)
-{
- my ($str) = @_;
-
- $str =~ /^Last-Modified: (.*)$/ or return;
- return str2time($1);
-}
diff --git a/WebKitTools/Scripts/update-webkit-localizable-strings b/WebKitTools/Scripts/update-webkit-localizable-strings
deleted file mode 100755
index 350bf21..0000000
--- a/WebKitTools/Scripts/update-webkit-localizable-strings
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-use strict;
-use warnings;
-
-use File::Basename;
-use FindBin;
-use lib $FindBin::Bin;
-use webkitdirs;
-
-my @directoriesToScan = ("WebKit/mac", "WebKit/win");
-my $fileToUpdate = "WebKit/English.lproj/Localizable.strings";
-my $exceptionsFile = "WebKit/StringsNotToBeLocalized.txt";
-
-@ARGV == 0 or die "Usage: " . basename($0) . "\n";
-
-chdirWebKit();
-
-system "sort -u $exceptionsFile -o $exceptionsFile";
-exec "extract-localizable-strings", $exceptionsFile, $fileToUpdate, @directoriesToScan;
diff --git a/WebKitTools/Scripts/update-webkit-support-libs b/WebKitTools/Scripts/update-webkit-support-libs
deleted file mode 100755
index e9c302b..0000000
--- a/WebKitTools/Scripts/update-webkit-support-libs
+++ /dev/null
@@ -1,105 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2005, 2006, 2007 Apple Computer, Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Updates a development environment to the new WebKitSupportLibrary
-
-use strict;
-use warnings;
-
-use File::Find;
-use File::Temp;
-use File::Spec;
-use FindBin;
-use lib $FindBin::Bin;
-use webkitdirs;
-
-my $sourceDir = sourceDir();
-my $file = "WebKitSupportLibrary";
-my $zipFile = "$file.zip";
-my $zipDirectory = toUnixPath($ENV{'WEBKITSUPPORTLIBRARIESZIPDIR'}) || $sourceDir;
-my $pathToZip = File::Spec->catfile($zipDirectory, $zipFile);
-my $webkitLibrariesDir = toUnixPath($ENV{'WEBKITLIBRARIESDIR'}) || "$sourceDir/WebKitLibraries/win";
-my $tmpDir = File::Spec->rel2abs(File::Temp::tempdir("webkitlibsXXXXXXX", TMPDIR => 1, CLEANUP => 1));
-
-# Make sure the file zipfile exists before doing anything.
-die "$zipFile could not be found in your root source directory. Please\n" .
- "download it from http://developer.apple.com/opensource/internet/webkit_sptlib_agree.html and place it in \n" .
- "$sourceDir\n and then run update-webkit again.\n" unless (-f "$pathToZip");
-
-print "Checking mod-date of $zipFile...\n";
-open MOD, ">$tmpDir/$file.modified" or die "Couldn't open $tmpDir/$file.modified for writing";
-print MOD (stat $pathToZip)[9] . "\n";
-close MOD;
-
-if (open NEW, "$tmpDir/$file.modified") {
- my $new = <NEW>;
- close NEW;
-
- if (open OLD, "$webkitLibrariesDir/$file.modified") {
- my $old = <OLD>;
- close OLD;
- if ($old eq $new) {
- print "Current $file is up to date\n";
- exit 0;
- }
- }
-}
-
-my $result = system "unzip", "-q", "-d", $tmpDir, $pathToZip;
-die "Couldn't unzip $zipFile." if $result;
-
-print "\nInstalling $file...\n";
-
-sub wanted
-{
- my $relativeName = File::Spec->abs2rel($File::Find::name, "$tmpDir/$file/win");
- my $destination = "$webkitLibrariesDir/$relativeName";
-
- if (-d $_) {
- mkdir $destination;
- return;
- }
-
- system "cp", $_, $destination;
-}
-
-File::Find::find(\&wanted, "$tmpDir/$file");
-
-$result = system "mv", "$tmpDir/$file.modified", $webkitLibrariesDir;
-print STDERR "Couldn't move $file.modified to $webkitLibrariesDir" . ".\n" if $result;
-
-print "The $file has been sucessfully installed in\n $webkitLibrariesDir\n";
-exit;
-
-sub toUnixPath
-{
- my $path = shift;
- return unless $path;
- chomp($path = `cygpath -u '$path'`);
- return $path;
-}
diff --git a/WebKitTools/Scripts/webkitdirs.pm b/WebKitTools/Scripts/webkitdirs.pm
deleted file mode 100644
index 728e7c0..0000000
--- a/WebKitTools/Scripts/webkitdirs.pm
+++ /dev/null
@@ -1,984 +0,0 @@
-# Copyright (C) 2005, 2006, 2007 Apple Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Module to share code to get to WebKit directories.
-
-use strict;
-use warnings;
-use FindBin;
-use File::Basename;
-use POSIX;
-use VCSUtils;
-
-BEGIN {
- use Exporter ();
- our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
- $VERSION = 1.00;
- @ISA = qw(Exporter);
- @EXPORT = qw(&chdirWebKit &baseProductDir &productDir &XcodeOptions &XcodeOptionString &XcodeOptionStringNoConfig &passedConfiguration &setConfiguration &safariPath &checkFrameworks &currentSVNRevision);
- %EXPORT_TAGS = ( );
- @EXPORT_OK = ();
-}
-
-our @EXPORT_OK;
-
-my $baseProductDir;
-my @baseProductDirOption;
-my $configuration;
-my $configurationForVisualStudio;
-my $configurationProductDir;
-my $sourceDir;
-my $currentSVNRevision;
-my $osXVersion;
-my $isQt;
-my $isGtk;
-my $isWx;
-my $forceRun64Bit;
-
-# Variables for Win32 support
-my $vcBuildPath;
-my $windowsTmpPath;
-
-sub determineSourceDir
-{
- return if $sourceDir;
- $sourceDir = $FindBin::Bin;
- $sourceDir =~ s|/+$||; # Remove trailing '/' as we would die later
-
- # walks up path checking each directory to see if it is the main WebKit project dir,
- # defined by containing JavaScriptCore, WebCore, and WebKit
- until ((-d "$sourceDir/JavaScriptCore" && -d "$sourceDir/WebCore" && -d "$sourceDir/WebKit") || (-d "$sourceDir/Internal" && -d "$sourceDir/OpenSource"))
- {
- if ($sourceDir !~ s|/[^/]+$||) {
- die "Could not find top level webkit directory above source directory using FindBin.\n";
- }
- }
-
- $sourceDir = "$sourceDir/OpenSource" if -d "$sourceDir/OpenSource";
-}
-
-# used for scripts which are stored in a non-standard location
-sub setSourceDir($)
-{
- ($sourceDir) = @_;
-}
-
-sub determineBaseProductDir
-{
- return if defined $baseProductDir;
- determineSourceDir();
- if (isOSX()) {
- open PRODUCT, "defaults read com.apple.Xcode PBXApplicationwideBuildSettings 2> /dev/null |" or die;
- $baseProductDir = join '', <PRODUCT>;
- close PRODUCT;
-
- $baseProductDir = $1 if $baseProductDir =~ /SYMROOT\s*=\s*\"(.*?)\";/s;
- undef $baseProductDir unless $baseProductDir =~ /^\//;
-
- if (!defined($baseProductDir)) {
- open PRODUCT, "defaults read com.apple.Xcode PBXProductDirectory 2> /dev/null |" or die;
- $baseProductDir = <PRODUCT>;
- close PRODUCT;
- if ($baseProductDir) {
- chomp $baseProductDir;
- undef $baseProductDir unless $baseProductDir =~ /^\//;
- }
- }
- } else {
- $baseProductDir = $ENV{"WEBKITOUTPUTDIR"};
- if (isCygwin() && $baseProductDir) {
- my $unixBuildPath = `cygpath --unix \"$baseProductDir\"`;
- chomp $unixBuildPath;
- $baseProductDir = $unixBuildPath;
- }
- }
-
- if ($baseProductDir && isOSX()) {
- $baseProductDir =~ s|^\Q$(SRCROOT)/..\E$|$sourceDir|;
- $baseProductDir =~ s|^\Q$(SRCROOT)/../|$sourceDir/|;
- $baseProductDir =~ s|^~/|$ENV{HOME}/|;
- die "Can't handle Xcode product directory with a ~ in it.\n" if $baseProductDir =~ /~/;
- die "Can't handle Xcode product directory with a variable in it.\n" if $baseProductDir =~ /\$/;
- @baseProductDirOption = ();
- }
-
- if (!defined($baseProductDir)) {
- $baseProductDir = "$sourceDir/WebKitBuild";
-
- if (isGit() && isGitBranchBuild()) {
- my $branch = gitBranch();
- $baseProductDir = "$baseProductDir/$branch";
- }
-
- @baseProductDirOption = ("SYMROOT=$baseProductDir", "OBJROOT=$baseProductDir") if (isOSX());
- if (isCygwin()) {
- my $dosBuildPath = `cygpath --windows \"$baseProductDir\"`;
- chomp $dosBuildPath;
- $ENV{"WEBKITOUTPUTDIR"} = $dosBuildPath;
- }
- }
-}
-
-sub setBaseProductDir($)
-{
- ($baseProductDir) = @_;
-}
-
-sub determineConfiguration
-{
- return if defined $configuration;
- determineBaseProductDir();
- if (open CONFIGURATION, "$baseProductDir/Configuration") {
- $configuration = <CONFIGURATION>;
- close CONFIGURATION;
- }
- if ($configuration) {
- chomp $configuration;
- # compatibility for people who have old Configuration files
- $configuration = "Release" if $configuration eq "Deployment";
- $configuration = "Debug" if $configuration eq "Development";
- } else {
- $configuration = "Release";
- }
-}
-
-sub determineConfigurationForVisualStudio
-{
- return if defined $configurationForVisualStudio;
- determineConfiguration();
- $configurationForVisualStudio = $configuration;
- return unless $configuration eq "Debug";
- setupCygwinEnv();
- chomp(my $dir = `cygpath -ua '$ENV{WEBKITLIBRARIESDIR}'`);
- $configurationForVisualStudio = "Debug_Internal" if -f "$dir/bin/CoreFoundation_debug.dll";
-}
-
-sub determineConfigurationProductDir
-{
- return if defined $configurationProductDir;
- determineBaseProductDir();
- determineConfiguration();
- if (isCygwin() && !isWx()) {
- $configurationProductDir = "$baseProductDir/bin";
- } else {
- $configurationProductDir = "$baseProductDir/$configuration";
- }
-}
-
-sub setConfigurationProductDir($)
-{
- ($configurationProductDir) = @_;
-}
-
-sub determineCurrentSVNRevision
-{
- return if defined $currentSVNRevision;
- determineSourceDir();
- my $svnInfo = `LC_ALL=C svn info $sourceDir | grep Revision:`;
- ($currentSVNRevision) = ($svnInfo =~ m/Revision: (\d+).*/g);
- die "Unable to determine current SVN revision in $sourceDir" unless (defined $currentSVNRevision);
- return $currentSVNRevision;
-}
-
-
-sub chdirWebKit
-{
- determineSourceDir();
- chdir $sourceDir or die;
-}
-
-sub baseProductDir
-{
- determineBaseProductDir();
- return $baseProductDir;
-}
-
-sub sourceDir
-{
- determineSourceDir();
- return $sourceDir;
-}
-
-sub productDir
-{
- determineConfigurationProductDir();
- return $configurationProductDir;
-}
-
-sub configuration()
-{
- determineConfiguration();
- return $configuration;
-}
-
-sub configurationForVisualStudio()
-{
- determineConfigurationForVisualStudio();
- return $configurationForVisualStudio;
-}
-
-sub currentSVNRevision
-{
- determineCurrentSVNRevision();
- return $currentSVNRevision;
-}
-
-sub XcodeOptions
-{
- determineBaseProductDir();
- determineConfiguration();
- return (@baseProductDirOption, "-configuration", $configuration);
-}
-
-sub XcodeOptionString
-{
- return join " ", XcodeOptions();
-}
-
-sub XcodeOptionStringNoConfig
-{
- return join " ", @baseProductDirOption;
-}
-
-my $passedConfiguration;
-my $searchedForPassedConfiguration;
-sub determinePassedConfiguration
-{
- return if $searchedForPassedConfiguration;
- $searchedForPassedConfiguration = 1;
-
- my $isWinCairo = grep(/^--cairo-win32$/i, @ARGV);
-
- for my $i (0 .. $#ARGV) {
- my $opt = $ARGV[$i];
- if ($opt =~ /^--debug$/i || $opt =~ /^--devel/i) {
- splice(@ARGV, $i, 1);
- $passedConfiguration = "Debug";
- $passedConfiguration .= "_Cairo" if ($isWinCairo && isCygwin());
- return;
- }
- if ($opt =~ /^--release$/i || $opt =~ /^--deploy/i) {
- splice(@ARGV, $i, 1);
- $passedConfiguration = "Release";
- $passedConfiguration .= "_Cairo" if ($isWinCairo && isCygwin());
- return;
- }
- if ($opt =~ /^--profil(e|ing)$/i) {
- splice(@ARGV, $i, 1);
- $passedConfiguration = "Profiling";
- $passedConfiguration .= "_Cairo" if ($isWinCairo && isCygwin());
- return;
- }
- }
- $passedConfiguration = undef;
-}
-
-sub passedConfiguration
-{
- determinePassedConfiguration();
- return $passedConfiguration;
-}
-
-sub setConfiguration
-{
- if (my $config = shift @_) {
- $configuration = $config;
- return;
- }
-
- determinePassedConfiguration();
- $configuration = $passedConfiguration if $passedConfiguration;
-}
-
-sub safariPathFromSafariBundle
-{
- my ($safariBundle) = @_;
-
- return "$safariBundle/Contents/MacOS/Safari" if isOSX();
- return $safariBundle if isCygwin();
-}
-
-sub installedSafariPath
-{
- my $safariBundle;
-
- if (isOSX()) {
- $safariBundle = "/Applications/Safari.app";
- } elsif (isCygwin()) {
- $safariBundle = `"$configurationProductDir/FindSafari.exe"`;
- $safariBundle =~ s/[\r\n]+$//;
- $safariBundle = `cygpath -u '$safariBundle'`;
- $safariBundle =~ s/[\r\n]+$//;
- $safariBundle .= "Safari.exe";
- }
-
- return safariPathFromSafariBundle($safariBundle);
-}
-
-# Locate Safari.
-sub safariPath
-{
- # Use WEBKIT_SAFARI environment variable if present.
- my $safariBundle = $ENV{WEBKIT_SAFARI};
- if (!$safariBundle) {
- determineConfigurationProductDir();
- # Use Safari.app in product directory if present (good for Safari development team).
- if (isOSX() && -d "$configurationProductDir/Safari.app") {
- $safariBundle = "$configurationProductDir/Safari.app";
- } elsif (isCygwin() && -x "$configurationProductDir/bin/Safari.exe") {
- $safariBundle = "$configurationProductDir/bin/Safari.exe";
- } else {
- return installedSafariPath();
- }
- }
- my $safariPath = safariPathFromSafariBundle($safariBundle);
- die "Can't find executable at $safariPath.\n" if isOSX() && !-x $safariPath;
- return $safariPath;
-}
-
-sub builtDylibPathForName
-{
- my $framework = shift;
- determineConfigurationProductDir();
- if (isQt() or isGtk()) {
- return "$configurationProductDir/$framework";
- }
- if (isOSX()) {
- return "$configurationProductDir/$framework.framework/Versions/A/$framework";
- }
- if (isCygwin()) {
- if ($framework eq "JavaScriptCore") {
- return "$baseProductDir/lib/$framework.lib";
- } else {
- return "$baseProductDir/$framework.intermediate/$configuration/$framework.intermediate/$framework.lib";
- }
- }
-
- die "Unsupported platform, can't determine built library locations.";
-}
-
-# Check to see that all the frameworks are built.
-sub checkFrameworks
-{
- return if isCygwin();
- my @frameworks = ("JavaScriptCore", "WebCore");
- push(@frameworks, "WebKit") if isOSX();
- for my $framework (@frameworks) {
- my $path = builtDylibPathForName($framework);
- die "Can't find built framework at \"$path\".\n" unless -x $path;
- }
-}
-
-sub hasSVGSupport
-{
- return 0 if isCygwin();
-
- my $path = shift;
-
- if (isQt()) {
- return 1;
- }
-
- if (isGtk() and $path =~ /WebCore/) {
- $path .= "/../.libs/webkit-1.0.so";
- }
-
- my $hasSVGSupport = 0;
- if (-e $path) {
- open NM, "-|", "nm", $path or die;
- while (<NM>) {
- $hasSVGSupport = 1 if /SVGElement/;
- }
- close NM;
- }
- return $hasSVGSupport;
-}
-
-sub removeLibraryDependingOnSVG
-{
- my $frameworkName = shift;
- my $shouldHaveSVG = shift;
-
- my $path = builtDylibPathForName($frameworkName);
- return unless -x $path;
-
- my $hasSVG = hasSVGSupport($path);
- system "rm -f $path" if ($shouldHaveSVG xor $hasSVG);
-}
-
-sub checkWebCoreSVGSupport
-{
- my $required = shift;
- my $framework = "WebCore";
- my $path = builtDylibPathForName($framework);
- my $hasSVG = hasSVGSupport($path);
- if ($required && !$hasSVG) {
- die "$framework at \"$path\" does not include SVG Support, please run build-webkit --svg\n";
- }
- return $hasSVG;
-}
-
-sub isQt()
-{
- determineIsQt();
- return $isQt;
-}
-
-sub checkArgv($)
-{
- my $argToCheck = shift;
- foreach my $opt (@ARGV) {
- if ($opt =~ /^$argToCheck/i ) {
- @ARGV = grep(!/^$argToCheck/i, @ARGV);
- return 1;
- }
- }
- return 0;
-}
-
-sub determineIsQt()
-{
- return if defined($isQt);
-
- # Allow override in case QTDIR is not set.
- if (checkArgv("--qt")) {
- $isQt = 1;
- return;
- }
-
- # The presence of QTDIR only means Qt if --gtk is not on the command-line
- if (isGtk()) {
- $isQt = 0;
- return;
- }
-
- $isQt = defined($ENV{'QTDIR'});
-}
-
-sub isGtk()
-{
- determineIsGtk();
- return $isGtk;
-}
-
-sub determineIsGtk()
-{
- return if defined($isGtk);
-
- if (checkArgv("--gtk")) {
- $isGtk = 1;
- } else {
- $isGtk = 0;
- }
-}
-
-sub isWx()
-{
- determineIsWx();
- return $isWx;
-}
-
-sub determineIsWx()
-{
- return if defined($isWx);
-
- if (checkArgv("--wx")) {
- $isWx = 1;
- } else {
- $isWx = 0;
- }
-}
-
-# Determine if this is debian, ubuntu, linspire, or something similar.
-sub isDebianBased()
-{
- return -e "/etc/debian_version";
-}
-
-sub isCygwin()
-{
- return ($^O eq "cygwin") || 0;
-}
-
-sub isDarwin()
-{
- return ($^O eq "darwin") || 0;
-}
-
-# isOSX() only returns true for Apple's port, not for other ports that can be
-# built/run on OS X.
-sub isOSX()
-{
- return isDarwin() unless (isQt() or isGtk() or isWx());
- return 0;
-}
-
-sub determineOSXVersion()
-{
- return if $osXVersion;
-
- if (!isOSX()) {
- $osXVersion = -1;
- return;
- }
-
- my $version = `sw_vers -productVersion`;
- my @splitVersion = split(/\./, $version);
- @splitVersion >= 2 or die "Invalid version $version";
- $osXVersion = {
- "major" => $splitVersion[0],
- "minor" => $splitVersion[1],
- "subminor" => (defined($splitVersion[2]) ? $splitVersion[2] : 0),
- };
-}
-
-sub osXVersion()
-{
- determineOSXVersion();
- return $osXVersion;
-}
-
-sub isTiger()
-{
- return isOSX() && osXVersion()->{"minor"} == 4;
-}
-
-sub isLeopard()
-{
- return isOSX() && osXVersion()->{"minor"} == 5;
-}
-
-sub isSnowLeopard()
-{
- return isOSX() && osXVersion()->{"minor"} == 6;
-}
-
-sub relativeScriptsDir()
-{
- my $scriptDir = File::Spec->catpath("", File::Spec->abs2rel(dirname($0), getcwd()), "");
- if ($scriptDir eq "") {
- $scriptDir = ".";
- }
- return $scriptDir;
-}
-
-sub launcherPath()
-{
- my $relativeScriptsPath = relativeScriptsDir();
- if (isGtk() || isQt()) {
- return "$relativeScriptsPath/run-launcher";
- } elsif (isOSX() || isCygwin()) {
- return "$relativeScriptsPath/run-safari";
- }
-}
-
-sub launcherName()
-{
- if (isGtk()) {
- return "GtkLauncher";
- } elsif (isQt()) {
- return "QtLauncher";
- } elsif (isOSX() || isCygwin()) {
- return "Safari";
- }
-}
-
-sub checkRequiredSystemConfig
-{
- if (isOSX()) {
- chomp(my $productVersion = `sw_vers -productVersion`);
- if ($productVersion lt "10.4") {
- print "*************************************************************\n";
- print "Mac OS X Version 10.4.0 or later is required to build WebKit.\n";
- print "You have " . $productVersion . ", thus the build will most likely fail.\n";
- print "*************************************************************\n";
- }
- my $xcodeVersion = `xcodebuild -version`;
- if ($xcodeVersion !~ /DevToolsCore-(\d+)/ || $1 < 747) {
- print "*************************************************************\n";
- print "Xcode Version 2.3 or later is required to build WebKit.\n";
- print "You have an earlier version of Xcode, thus the build will\n";
- print "most likely fail. The latest Xcode is available from the web:\n";
- print "http://developer.apple.com/tools/xcode\n";
- print "*************************************************************\n";
- }
- } elsif (isGtk() or isQt() or isWx()) {
- my @cmds = qw(flex bison gperf);
- my @missing = ();
- foreach my $cmd (@cmds) {
- if (not `$cmd --version`) {
- push @missing, $cmd;
- }
- }
- if (@missing) {
- my $list = join ", ", @missing;
- die "ERROR: $list missing but required to build WebKit.\n";
- }
- }
- # Win32 and other platforms may want to check for minimum config
-}
-
-sub setupCygwinEnv()
-{
- return if !isCygwin();
- return if $vcBuildPath;
-
- my $programFilesPath = `cygpath "$ENV{'PROGRAMFILES'}"`;
- chomp $programFilesPath;
- $vcBuildPath = "$programFilesPath/Microsoft Visual Studio 8/Common7/IDE/devenv.com";
- if (! -e $vcBuildPath) {
- # VC++ not found, try VC++ Express
- my $vsInstallDir;
- if ($ENV{'VSINSTALLDIR'}) {
- $vsInstallDir = $ENV{'VSINSTALLDIR'};
- } else {
- $programFilesPath = $ENV{'PROGRAMFILES'} || "C:\\Program Files";
- $vsInstallDir = "$programFilesPath/Microsoft Visual Studio 8";
- }
- $vsInstallDir = `cygpath "$vsInstallDir"`;
- chomp $vsInstallDir;
- $vcBuildPath = "$vsInstallDir/Common7/IDE/VCExpress.exe";
- if (! -e $vcBuildPath) {
- print "*************************************************************\n";
- print "Cannot find '$vcBuildPath'\n";
- print "Please execute the file 'vcvars32.bat' from\n";
- print "'$programFilesPath\\Microsoft Visual Studio 8\\VC\\bin\\'\n";
- print "to setup the necessary environment variables.\n";
- print "*************************************************************\n";
- die;
- }
- }
-
- my $qtSDKPath = "$programFilesPath/QuickTime SDK";
- if (0 && ! -e $qtSDKPath) {
- print "*************************************************************\n";
- print "Cannot find '$qtSDKPath'\n";
- print "Please download the QuickTime SDK for Windows from\n";
- print "http://developer.apple.com/quicktime/download/\n";
- print "*************************************************************\n";
- die;
- }
-
- chomp($ENV{'WEBKITLIBRARIESDIR'} = `cygpath -wa "$sourceDir/WebKitLibraries/win"`) unless $ENV{'WEBKITLIBRARIESDIR'};
-
- $windowsTmpPath = `cygpath -w /tmp`;
- chomp $windowsTmpPath;
- print "Building results into: ", baseProductDir(), "\n";
- print "WEBKITOUTPUTDIR is set to: ", $ENV{"WEBKITOUTPUTDIR"}, "\n";
- print "WEBKITLIBRARIESDIR is set to: ", $ENV{"WEBKITLIBRARIESDIR"}, "\n";
-}
-
-sub buildVisualStudioProject
-{
- my ($project, $clean) = @_;
- setupCygwinEnv();
-
- my $config = configurationForVisualStudio();
-
- chomp(my $winProjectPath = `cygpath -w "$project"`);
-
- my $command = "/build";
- if ($clean) {
- $command = "/clean";
- }
-
- print "$vcBuildPath $winProjectPath /build $config\n";
- return system $vcBuildPath, $winProjectPath, $command, $config;
-}
-
-sub retrieveQMakespecVar
-{
- my $mkspec = $_[0];
- my $varname = $_[1];
-
- my $compiler = "unknown";
- #print "retrieveMakespecVar " . $mkspec . ", " . $varname . "\n";
-
- local *SPEC;
- open SPEC, "<$mkspec" or return "make";
- while (<SPEC>) {
- if ($_ =~ /\s*include\((.+)\)/) {
- # open the included mkspec
- my $oldcwd = getcwd();
- (my $volume, my $directories, my $file) = File::Spec->splitpath($mkspec);
- chdir "$volume$directories";
- $compiler = retrieveQMakespecVar($1, $varname);
- chdir $oldcwd;
- } elsif ($_ =~ /$varname\s*=\s*([^\s]+)/) {
- $compiler = $1;
- last;
- }
- }
- close SPEC;
- return $compiler;
-}
-
-sub qtMakeCommand($)
-{
- my ($qmakebin) = @_;
- chomp(my $mkspec = `$qmakebin -query QMAKE_MKSPECS`);
- $mkspec .= "/default";
- my $compiler = retrieveQMakespecVar("$mkspec/qmake.conf", "QMAKE_CC");
-
- #print "default spec: " . $mkspec . "\n";
- #print "compiler found: " . $compiler . "\n";
-
- if ($compiler eq "cl") {
- return "nmake";
- }
-
- return "make";
-}
-
-sub autotoolsFlag($$)
-{
- my ($flag, $feature) = @_;
- my $prefix = $flag ? "--enable" : "--disable";
-
- return $prefix . '-' . $feature;
-}
-
-sub buildAutotoolsProject($@)
-{
- my ($clean, @buildArgs) = @_;
-
- my $make = 'make';
- my $dir = productDir();
- my $config = passedConfiguration() || configuration();
- my $prefix = $ENV{"WebKitInstallationPrefix"};
-
- # check if configuration is Debug
- if ($config =~ m/debug/i) {
- push @buildArgs, "--enable-debug";
- } else {
- push @buildArgs, "--disable-debug";
- }
-
- if (! -d $dir) {
- system "mkdir", "-p", "$dir";
- if (! -d $dir) {
- die "Failed to create build directory " . $dir;
- }
- }
-
- chdir $dir or die "Failed to cd into " . $dir . "\n";
-
- my $result;
- if ($clean) {
- $result = system $make, "distclean";
- return 0;
- }
-
- print "Calling configure in " . $dir . "\n\n";
- print "Installation directory: $prefix\n" if(defined($prefix));
-
- $result = system "$sourceDir/autogen.sh", @buildArgs;
- if ($result ne 0) {
- die "Failed to setup build environment using 'autotools'!\n";
- }
-
- $result = system $make;
- if ($result ne 0) {
- die "\nFailed to build WebKit using '$make'!\n";
- }
-
- chdir ".." or die;
- return $result;
-}
-
-sub buildQMakeProject($@)
-{
- my ($clean, @buildArgs) = @_;
-
- push @buildArgs, "-r";
-
- my $qmakebin = "qmake"; # Allow override of the qmake binary from $PATH
- for my $i (0 .. $#ARGV) {
- my $opt = $ARGV[$i];
- if ($opt =~ /^--qmake=(.*)/i ) {
- $qmakebin = $1;
- } elsif ($opt =~ /^--qmakearg=(.*)/i ) {
- push @buildArgs, $1;
- }
- }
-
- my $make = qtMakeCommand($qmakebin);
- my $config = configuration();
- my $prefix = $ENV{"WebKitInstallationPrefix"};
-
- push @buildArgs, "OUTPUT_DIR=" . baseProductDir() . "/$config";
- push @buildArgs, sourceDir() . "/WebKit.pro";
- if ($config =~ m/debug/i) {
- push @buildArgs, "CONFIG-=release";
- push @buildArgs, "CONFIG+=debug";
- } else {
- push @buildArgs, "CONFIG+=release";
- push @buildArgs, "CONFIG-=debug";
- }
-
- my $dir = baseProductDir();
- if (! -d $dir) {
- system "mkdir", "-p", "$dir";
- if (! -d $dir) {
- die "Failed to create product directory " . $dir;
- }
- }
- $dir = $dir . "/$config";
- if (! -d $dir) {
- system "mkdir", "-p", "$dir";
- if (! -d $dir) {
- die "Failed to create build directory " . $dir;
- }
- }
-
- chdir $dir or die "Failed to cd into " . $dir . "\n";
-
- print "Calling '$qmakebin @buildArgs' in " . $dir . "\n\n";
- print "Installation directory: $prefix\n" if(defined($prefix));
-
- my $result = system $qmakebin, @buildArgs;
- if ($result ne 0) {
- die "Failed to setup build environment using $qmakebin!\n";
- }
-
- if ($clean) {
- $result = system "$make distclean";
- } else {
- $result = system "$make";
- }
-
- chdir ".." or die;
- return $result;
-}
-
-sub buildQMakeQtProject($$)
-{
- my ($project, $clean) = @_;
-
- my @buildArgs = ("CONFIG+=qt-port");
- return buildQMakeProject($clean, @buildArgs);
-}
-
-sub buildGtkProject($$@)
-{
- my ($project, $clean, @buildArgs) = @_;
-
- if ($project ne "WebKit") {
- die "The Gtk port builds JavaScriptCore, WebCore and WebKit in one shot! Only call it for 'WebKit'.\n";
- }
-
- return buildAutotoolsProject($clean, @buildArgs);
-}
-
-sub setPathForRunningWebKitApp
-{
- my ($env) = @_;
-
- return unless isCygwin();
-
- $env->{PATH} = join(':', productDir(), dirname(installedSafariPath()), $env->{PATH} || "");
-}
-
-sub exitStatus($)
-{
- my ($returnvalue) = @_;
- if ($^O eq "MSWin32") {
- return $returnvalue >> 8;
- }
- return WEXITSTATUS($returnvalue);
-}
-
-sub runSafari
-{
- my ($debugger) = @_;
-
- if (isOSX()) {
- return system "$FindBin::Bin/gdb-safari", @ARGV if $debugger;
-
- my $productDir = productDir();
- print "Starting Safari with DYLD_FRAMEWORK_PATH set to point to built WebKit in $productDir.\n";
- $ENV{DYLD_FRAMEWORK_PATH} = $productDir;
- $ENV{WEBKIT_UNSET_DYLD_FRAMEWORK_PATH} = "YES";
- exportArchPreference();
- if (!isTiger()) {
- return system "arch", safariPath(), @ARGV;
- } else {
- return system safariPath(), @ARGV;
- }
- }
-
- if (isCygwin()) {
- my $script = "run-webkit-nightly.cmd";
- my $result = system "cp", "$FindBin::Bin/$script", productDir();
- return $result if $result;
-
- my $cwd = getcwd();
- chdir productDir();
-
- my $debuggerFlag = $debugger ? "/debugger" : "";
- $result = system "cmd", "/c", "call $script $debuggerFlag";
- chdir $cwd;
- return $result;
- }
-
- return 1;
-}
-
-sub setRun64Bit($)
-{
- ($forceRun64Bit) = @_;
-}
-
-sub preferredArchitecture
-{
- return unless isOSX();
-
- my $framework = shift;
- $framework = "WebKit" if !defined($framework);
-
- my $currentArchitecture = `arch`;
- chomp($currentArchitecture);
-
- my $run64Bit = 0;
- if (!defined($forceRun64Bit)) {
- my $frameworkPath = builtDylibPathForName($framework);
- die "Couldn't find path for $framework" if !defined($frameworkPath);
- # The binary is 64-bit if one of the architectures it contains has "64" in the name
- $run64Bit = `lipo -info "$frameworkPath"` =~ /(are|architecture):.*64/;
- }
-
- if ($forceRun64Bit or $run64Bit) {
- return ($currentArchitecture eq "i386") ? "x86_64" : "ppc64";
- }
- return $currentArchitecture;
-}
-
-sub exportArchPreference
-{
- $ENV{ARCHPREFERENCE} = preferredArchitecture() if isOSX();
-}
-
-1;
diff --git a/WebKitTools/Scripts/wkstyle b/WebKitTools/Scripts/wkstyle
deleted file mode 100755
index 4b3447f..0000000
--- a/WebKitTools/Scripts/wkstyle
+++ /dev/null
@@ -1,89 +0,0 @@
-
-# Copyright (C) 2006 Michael Emmel<mike.emmel@gmail.com> All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-cmdcpp="astyle \
---unpad=paren \
---style=linux \
---brackets=linux \
---indent=spaces=4 \
---indent-switches \
---convert-tabs"
-
-cmdh="astyle \
---unpad=paren \
---style=linux \
---brackets=break \
---indent=spaces=4 \
---convert-tabs"
-
-#astyle does not support unpadding so we use sed
-for i in $@
-do
-echo $i
-
-ext=`echo $i|awk -F . '{print $NF}'`
-
-cmd=$cmdcpp
-
-if [ $ext == "h" ] ; then
- cmd=$cmdh
-fi
-
-$cmd $i
-
-#first print the changes we are making
-sed -n -e '
-/( .*/p
-s/( /(/gp
-/*. )/p
-s/ )/)/gp
-#supress printing this
-#/^namespace WebCore/{
-#N
-#s/\n{/ {/p
-#}
-' $i
-
-#do it for real
-sed -e '
-#unpad leading spaces
-s/( /(/g
-#unpad traling spaces
-s/ )/)/g
-#fixup the namspec decl
-/^namespace WebCore/{
-N
-s/\n{/ {/
-}
-#fixup extra tab in constructor initalizer
-/^ \+,/{s/^ //}
-/^ \+:/{s/^ //}
-' $i > $i.sed
-mv $i.sed $i
-done
-
-
diff --git a/WebKitTools/WebKitLauncher/Info.plist b/WebKitTools/WebKitLauncher/Info.plist
deleted file mode 100644
index 9317bd4..0000000
--- a/WebKitTools/WebKitLauncher/Info.plist
+++ /dev/null
@@ -1,476 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleDocumentTypes</key>
- <array>
- <dict>
- <key>CFBundleTypeExtensions</key>
- <array>
- <string>css</string>
- </array>
- <key>CFBundleTypeIconFile</key>
- <string>document.icns</string>
- <key>CFBundleTypeMIMETypes</key>
- <array>
- <string>text/css</string>
- </array>
- <key>CFBundleTypeName</key>
- <string>CSS style sheet</string>
- <key>CFBundleTypeRole</key>
- <string>Viewer</string>
- <key>NSDocumentClass</key>
- <string>BrowserDocument</string>
- </dict>
- <dict>
- <key>CFBundleTypeExtensions</key>
- <array>
- <string>pdf</string>
- </array>
- <key>CFBundleTypeIconFile</key>
- <string>document.icns</string>
- <key>CFBundleTypeMIMETypes</key>
- <array>
- <string>application/pdf</string>
- </array>
- <key>CFBundleTypeName</key>
- <string>PDF document</string>
- <key>CFBundleTypeRole</key>
- <string>Viewer</string>
- <key>NSDocumentClass</key>
- <string>BrowserDocument</string>
- </dict>
- <dict>
- <key>CFBundleTypeExtensions</key>
- <array>
- <string>webarchive</string>
- </array>
- <key>CFBundleTypeIconFile</key>
- <string>webarchive.icns</string>
- <key>CFBundleTypeMIMETypes</key>
- <array>
- <string>application/x-webarchive</string>
- </array>
- <key>CFBundleTypeName</key>
- <string>Web archive</string>
- <key>CFBundleTypeRole</key>
- <string>Viewer</string>
- <key>NSDocumentClass</key>
- <string>BrowserDocument</string>
- </dict>
- <dict>
- <key>CFBundleTypeExtensions</key>
- <array>
- <string>syndarticle</string>
- </array>
- <key>CFBundleTypeIconFile</key>
- <string>document.icns</string>
- <key>CFBundleTypeName</key>
- <string>RSS article</string>
- <key>CFBundleTypeRole</key>
- <string>Viewer</string>
- <key>NSDocumentClass</key>
- <string>BrowserDocument</string>
- </dict>
- <dict>
- <key>CFBundleTypeExtensions</key>
- <array>
- <string>webbookmark</string>
- </array>
- <key>CFBundleTypeIconFile</key>
- <string>document.icns</string>
- <key>CFBundleTypeName</key>
- <string>Safari bookmark</string>
- <key>CFBundleTypeRole</key>
- <string>Viewer</string>
- <key>NSDocumentClass</key>
- <string>BrowserDocument</string>
- </dict>
- <dict>
- <key>CFBundleTypeExtensions</key>
- <array>
- <string>webloc</string>
- </array>
- <key>CFBundleTypeIconFile</key>
- <string>document.icns</string>
- <key>CFBundleTypeName</key>
- <string>Web internet location</string>
- <key>CFBundleTypeOSTypes</key>
- <array>
- <string>ilht</string>
- </array>
- <key>CFBundleTypeRole</key>
- <string>Viewer</string>
- <key>NSDocumentClass</key>
- <string>BrowserDocument</string>
- </dict>
- <dict>
- <key>CFBundleTypeExtensions</key>
- <array>
- <string>download</string>
- </array>
- <key>CFBundleTypeIconFile</key>
- <string>download10.icns</string>
- <key>CFBundleTypeName</key>
- <string>Safari download</string>
- <key>CFBundleTypeRole</key>
- <string>Editor</string>
- <key>LSTypeIsPackage</key>
- <true/>
- <key>NSDocumentClass</key>
- <string>BrowserDocument</string>
- </dict>
- <dict>
- <key>CFBundleTypeExtensions</key>
- <array>
- <string>gif</string>
- </array>
- <key>CFBundleTypeIconFile</key>
- <string>document.icns</string>
- <key>CFBundleTypeMIMETypes</key>
- <array>
- <string>image/gif</string>
- </array>
- <key>CFBundleTypeName</key>
- <string>GIF image</string>
- <key>CFBundleTypeOSTypes</key>
- <array>
- <string>GIFf</string>
- </array>
- <key>CFBundleTypeRole</key>
- <string>Viewer</string>
- <key>NSDocumentClass</key>
- <string>BrowserDocument</string>
- </dict>
- <dict>
- <key>CFBundleTypeExtensions</key>
- <array>
- <string>html</string>
- <string>htm</string>
- <string>shtml</string>
- <string>jhtml</string>
- </array>
- <key>CFBundleTypeIconFile</key>
- <string>document.icns</string>
- <key>CFBundleTypeMIMETypes</key>
- <array>
- <string>text/html</string>
- </array>
- <key>CFBundleTypeName</key>
- <string>HTML document</string>
- <key>CFBundleTypeOSTypes</key>
- <array>
- <string>HTML</string>
- </array>
- <key>CFBundleTypeRole</key>
- <string>Viewer</string>
- <key>NSDocumentClass</key>
- <string>BrowserDocument</string>
- </dict>
- <dict>
- <key>CFBundleTypeExtensions</key>
- <array>
- <string>js</string>
- </array>
- <key>CFBundleTypeIconFile</key>
- <string>document.icns</string>
- <key>CFBundleTypeMIMETypes</key>
- <array>
- <string>application/x-javascript</string>
- </array>
- <key>CFBundleTypeName</key>
- <string>JavaScript script</string>
- <key>CFBundleTypeRole</key>
- <string>Viewer</string>
- <key>NSDocumentClass</key>
- <string>BrowserDocument</string>
- </dict>
- <dict>
- <key>CFBundleTypeExtensions</key>
- <array>
- <string>jpg</string>
- <string>jpeg</string>
- </array>
- <key>CFBundleTypeIconFile</key>
- <string>document.icns</string>
- <key>CFBundleTypeMIMETypes</key>
- <array>
- <string>image/jpeg</string>
- </array>
- <key>CFBundleTypeName</key>
- <string>JPEG image</string>
- <key>CFBundleTypeOSTypes</key>
- <array>
- <string>JPEG</string>
- </array>
- <key>CFBundleTypeRole</key>
- <string>Viewer</string>
- <key>NSDocumentClass</key>
- <string>BrowserDocument</string>
- </dict>
- <dict>
- <key>CFBundleTypeExtensions</key>
- <array>
- <string>jp2</string>
- </array>
- <key>CFBundleTypeIconFile</key>
- <string>document.icns</string>
- <key>CFBundleTypeMIMETypes</key>
- <array>
- <string>image/jp2</string>
- </array>
- <key>CFBundleTypeName</key>
- <string>JPEG 2000 image</string>
- <key>CFBundleTypeOSTypes</key>
- <array>
- <string>jp2 </string>
- </array>
- <key>CFBundleTypeRole</key>
- <string>Viewer</string>
- <key>NSDocumentClass</key>
- <string>BrowserDocument</string>
- </dict>
- <dict>
- <key>CFBundleTypeExtensions</key>
- <array>
- <string>txt</string>
- <string>text</string>
- </array>
- <key>CFBundleTypeIconFile</key>
- <string>document.icns</string>
- <key>CFBundleTypeMIMETypes</key>
- <array>
- <string>text/plain</string>
- </array>
- <key>CFBundleTypeName</key>
- <string>Plain text document</string>
- <key>CFBundleTypeOSTypes</key>
- <array>
- <string>TEXT</string>
- </array>
- <key>CFBundleTypeRole</key>
- <string>Viewer</string>
- <key>NSDocumentClass</key>
- <string>BrowserDocument</string>
- </dict>
- <dict>
- <key>CFBundleTypeExtensions</key>
- <array>
- <string>png</string>
- </array>
- <key>CFBundleTypeIconFile</key>
- <string>document.icns</string>
- <key>CFBundleTypeMIMETypes</key>
- <array>
- <string>image/png</string>
- </array>
- <key>CFBundleTypeName</key>
- <string>PNG image</string>
- <key>CFBundleTypeOSTypes</key>
- <array>
- <string>PNGf</string>
- </array>
- <key>CFBundleTypeRole</key>
- <string>Viewer</string>
- <key>NSDocumentClass</key>
- <string>BrowserDocument</string>
- </dict>
- <dict>
- <key>CFBundleTypeExtensions</key>
- <array>
- <string>rtf</string>
- </array>
- <key>CFBundleTypeIconFile</key>
- <string>document.icns</string>
- <key>CFBundleTypeMIMETypes</key>
- <array>
- <string>application/rtf</string>
- </array>
- <key>CFBundleTypeName</key>
- <string>Rich Text Format (RTF) document</string>
- <key>CFBundleTypeOSTypes</key>
- <array>
- <string>RTF </string>
- </array>
- <key>CFBundleTypeRole</key>
- <string>Viewer</string>
- <key>NSDocumentClass</key>
- <string>BrowserDocument</string>
- </dict>
- <dict>
- <key>CFBundleTypeExtensions</key>
- <array>
- <string>tiff</string>
- <string>tif</string>
- </array>
- <key>CFBundleTypeIconFile</key>
- <string>document.icns</string>
- <key>CFBundleTypeMIMETypes</key>
- <array>
- <string>image/tiff</string>
- </array>
- <key>CFBundleTypeName</key>
- <string>TIFF image</string>
- <key>CFBundleTypeOSTypes</key>
- <array>
- <string>TIFF</string>
- </array>
- <key>CFBundleTypeRole</key>
- <string>Viewer</string>
- <key>NSDocumentClass</key>
- <string>BrowserDocument</string>
- </dict>
- <dict>
- <key>CFBundleTypeExtensions</key>
- <array>
- <string>url</string>
- </array>
- <key>CFBundleTypeIconFile</key>
- <string>document.icns</string>
- <key>CFBundleTypeName</key>
- <string>Web site location</string>
- <key>CFBundleTypeOSTypes</key>
- <array>
- <string>LINK</string>
- </array>
- <key>CFBundleTypeRole</key>
- <string>Viewer</string>
- <key>NSDocumentClass</key>
- <string>BrowserDocument</string>
- </dict>
- <dict>
- <key>CFBundleTypeExtensions</key>
- <array>
- <string>ico</string>
- </array>
- <key>CFBundleTypeIconFile</key>
- <string>document.icns</string>
- <key>CFBundleTypeMIMETypes</key>
- <array>
- <string>image/x-icon</string>
- </array>
- <key>CFBundleTypeName</key>
- <string>Windows icon image</string>
- <key>CFBundleTypeOSTypes</key>
- <array>
- <string>ICO </string>
- </array>
- <key>CFBundleTypeRole</key>
- <string>Viewer</string>
- <key>NSDocumentClass</key>
- <string>BrowserDocument</string>
- </dict>
- <dict>
- <key>CFBundleTypeExtensions</key>
- <array>
- <string>xhtml</string>
- <string>xhtm</string>
- </array>
- <key>CFBundleTypeIconFile</key>
- <string>document.icns</string>
- <key>CFBundleTypeMIMETypes</key>
- <array>
- <string>application/xhtml+xml</string>
- </array>
- <key>CFBundleTypeName</key>
- <string>XHTML document</string>
- <key>CFBundleTypeRole</key>
- <string>Viewer</string>
- <key>NSDocumentClass</key>
- <string>BrowserDocument</string>
- </dict>
- <dict>
- <key>CFBundleTypeExtensions</key>
- <array>
- <string>xml</string>
- <string>xbl</string>
- <string>xsl</string>
- <string>xslt</string>
- </array>
- <key>CFBundleTypeIconFile</key>
- <string>document.icns</string>
- <key>CFBundleTypeMIMETypes</key>
- <array>
- <string>application/xml</string>
- <string>text/xml</string>
- </array>
- <key>CFBundleTypeName</key>
- <string>XML document</string>
- <key>CFBundleTypeRole</key>
- <string>Viewer</string>
- <key>NSDocumentClass</key>
- <string>BrowserDocument</string>
- </dict>
- </array>
- <key>CFBundleExecutable</key>
- <string>${EXECUTABLE_NAME}</string>
- <key>CFBundleGetInfoString</key>
- <string>rVERSION, Copyright 2005, 2006, 2007 Apple Inc.</string>
- <key>CFBundleIconFile</key>
- <string>webkit.icns</string>
- <key>CFBundleIdentifier</key>
- <string>org.webkit.nightly.WebKit</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>${PRODUCT_NAME}</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleSignature</key>
- <string>wbkt</string>
- <key>CFBundleVersion</key>
- <string>VERSION</string>
- <key>CFBundleShortVersionString</key>
- <string>rVERSION</string>
- <key>NSPrincipalClass</key>
- <string>BrowserApplication</string>
-
- <key>CFBundleHelpBookFolder</key>
- <string>SafariHelp</string>
- <key>CFBundleHelpBookName</key>
- <string>Safari Help</string>
- <key>CFBundleURLTypes</key>
- <array>
- <dict>
- <key>CFBundleURLName</key>
- <string>Web site URL</string>
- <key>CFBundleURLSchemes</key>
- <array>
- <string>http</string>
- <string>https</string>
- </array>
- </dict>
- <dict>
- <key>CFBundleURLName</key>
- <string>local file URL</string>
- <key>CFBundleURLSchemes</key>
- <array>
- <string>file</string>
- </array>
- </dict>
- </array>
- <key>NSAppleScriptEnabled</key>
- <string>Yes</string>
- <key>UTExportedTypeDeclarations</key>
- <array>
- <dict>
- <key>UTTypeConformsTo</key>
- <string>public.data</string>
- <key>UTTypeDescription</key>
- <string>Safari bookmark</string>
- <key>UTTypeIdentifier</key>
- <string>com.apple.safari.bookmark</string>
- <key>UTTypeTagSpecification</key>
- <dict>
- <key>public.filename-extension</key>
- <array>
- <string>webbookmark</string>
- </array>
- </dict>
- </dict>
- </array>
-
-</dict>
-</plist>
diff --git a/WebKitTools/WebKitLauncher/VERSION b/WebKitTools/WebKitLauncher/VERSION
deleted file mode 100644
index fd85e30..0000000
--- a/WebKitTools/WebKitLauncher/VERSION
+++ /dev/null
@@ -1 +0,0 @@
-VERSION
diff --git a/WebKitTools/WebKitLauncher/WebKitLauncher.xcodeproj/project.pbxproj b/WebKitTools/WebKitLauncher/WebKitLauncher.xcodeproj/project.pbxproj
deleted file mode 100644
index 67250dd..0000000
--- a/WebKitTools/WebKitLauncher/WebKitLauncher.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,358 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 42;
- objects = {
-
-/* Begin PBXBuildFile section */
- 5D41141C0A50A9DE00C84CF0 /* VERSION in Resources */ = {isa = PBXBuildFile; fileRef = 5D41141B0A50A9DE00C84CF0 /* VERSION */; };
- 5D4DF982097F89FB0083D5E5 /* start.html in Resources */ = {isa = PBXBuildFile; fileRef = 5D4DF981097F89FB0083D5E5 /* start.html */; };
- 5D650F3609DB8B370075E9A8 /* WebKitNightlyEnabler.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D650F3509DB8B370075E9A8 /* WebKitNightlyEnabler.m */; };
- 5D650F3A09DB8B410075E9A8 /* WebKitNightlyEnabler.dylib in Resources */ = {isa = PBXBuildFile; fileRef = 5D650F3409DB8B280075E9A8 /* WebKitNightlyEnabler.dylib */; };
- 5D877FCD0A5795F200D0C67B /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
- 5DB70525097B94CD009875EC /* webkit.icns in Resources */ = {isa = PBXBuildFile; fileRef = 5DB70524097B94CD009875EC /* webkit.icns */; };
- 8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };
- 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
- 5D650F4409DB8B830075E9A8 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 5D650F3309DB8B280075E9A8;
- remoteInfo = WebKitNightlyEnabler;
- };
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXFileReference section */
- 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
- 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; };
- 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
- 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
- 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
- 5D41141B0A50A9DE00C84CF0 /* VERSION */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = VERSION; sourceTree = "<group>"; };
- 5D4DF981097F89FB0083D5E5 /* start.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; path = start.html; sourceTree = "<group>"; };
- 5D650F3409DB8B280075E9A8 /* WebKitNightlyEnabler.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = WebKitNightlyEnabler.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
- 5D650F3509DB8B370075E9A8 /* WebKitNightlyEnabler.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = WebKitNightlyEnabler.m; sourceTree = "<group>"; };
- 5D650F7509DB8CB40075E9A8 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; };
- 5DB70524097B94CD009875EC /* webkit.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = webkit.icns; sourceTree = "<group>"; };
- 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
- 8D1107320486CEB800E47090 /* WebKit.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WebKit.app; sourceTree = BUILT_PRODUCTS_DIR; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 5D650F3209DB8B280075E9A8 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 5D877FCD0A5795F200D0C67B /* Cocoa.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 8D11072E0486CEB800E47090 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 080E96DDFE201D6D7F000001 /* Classes */ = {
- isa = PBXGroup;
- children = (
- );
- name = Classes;
- sourceTree = "<group>";
- };
- 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {
- isa = PBXGroup;
- children = (
- 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
- );
- name = "Linked Frameworks";
- sourceTree = "<group>";
- };
- 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = {
- isa = PBXGroup;
- children = (
- 5D650F7509DB8CB40075E9A8 /* CoreFoundation.framework */,
- 29B97324FDCFA39411CA2CEA /* AppKit.framework */,
- 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */,
- 29B97325FDCFA39411CA2CEA /* Foundation.framework */,
- );
- name = "Other Frameworks";
- sourceTree = "<group>";
- };
- 19C28FACFE9D520D11CA2CBB /* Products */ = {
- isa = PBXGroup;
- children = (
- 8D1107320486CEB800E47090 /* WebKit.app */,
- 5D650F3409DB8B280075E9A8 /* WebKitNightlyEnabler.dylib */,
- );
- name = Products;
- sourceTree = "<group>";
- };
- 29B97314FDCFA39411CA2CEA /* WebKit */ = {
- isa = PBXGroup;
- children = (
- 080E96DDFE201D6D7F000001 /* Classes */,
- 29B97315FDCFA39411CA2CEA /* Other Sources */,
- 29B97317FDCFA39411CA2CEA /* Resources */,
- 29B97323FDCFA39411CA2CEA /* Frameworks */,
- 19C28FACFE9D520D11CA2CBB /* Products */,
- );
- name = WebKit;
- sourceTree = "<group>";
- };
- 29B97315FDCFA39411CA2CEA /* Other Sources */ = {
- isa = PBXGroup;
- children = (
- 5D650F3509DB8B370075E9A8 /* WebKitNightlyEnabler.m */,
- 29B97316FDCFA39411CA2CEA /* main.m */,
- );
- name = "Other Sources";
- sourceTree = "<group>";
- };
- 29B97317FDCFA39411CA2CEA /* Resources */ = {
- isa = PBXGroup;
- children = (
- 5D4DF981097F89FB0083D5E5 /* start.html */,
- 5DB70524097B94CD009875EC /* webkit.icns */,
- 8D1107310486CEB800E47090 /* Info.plist */,
- 5D41141B0A50A9DE00C84CF0 /* VERSION */,
- );
- name = Resources;
- sourceTree = "<group>";
- };
- 29B97323FDCFA39411CA2CEA /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,
- 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */,
- );
- name = Frameworks;
- sourceTree = "<group>";
- };
-/* End PBXGroup section */
-
-/* Begin PBXHeadersBuildPhase section */
- 5D650F3009DB8B280075E9A8 /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXHeadersBuildPhase section */
-
-/* Begin PBXNativeTarget section */
- 5D650F3309DB8B280075E9A8 /* WebKitNightlyEnabler */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 5D650F3709DB8B370075E9A8 /* Build configuration list for PBXNativeTarget "WebKitNightlyEnabler" */;
- buildPhases = (
- 5D650F3009DB8B280075E9A8 /* Headers */,
- 5D650F3109DB8B280075E9A8 /* Sources */,
- 5D650F3209DB8B280075E9A8 /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = WebKitNightlyEnabler;
- productName = WebKitNightlyEnabler;
- productReference = 5D650F3409DB8B280075E9A8 /* WebKitNightlyEnabler.dylib */;
- productType = "com.apple.product-type.library.dynamic";
- };
- 8D1107260486CEB800E47090 /* WebKit */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "WebKit" */;
- buildPhases = (
- 8D1107290486CEB800E47090 /* Resources */,
- 8D11072C0486CEB800E47090 /* Sources */,
- 8D11072E0486CEB800E47090 /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- 5D650F4509DB8B830075E9A8 /* PBXTargetDependency */,
- );
- name = WebKit;
- productInstallPath = "$(HOME)/Applications";
- productName = WebKit;
- productReference = 8D1107320486CEB800E47090 /* WebKit.app */;
- productType = "com.apple.product-type.application";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 29B97313FDCFA39411CA2CEA /* Project object */ = {
- isa = PBXProject;
- buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "WebKitLauncher" */;
- compatibilityVersion = "Xcode 2.4";
- hasScannedForEncodings = 1;
- mainGroup = 29B97314FDCFA39411CA2CEA /* WebKit */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- 8D1107260486CEB800E47090 /* WebKit */,
- 5D650F3309DB8B280075E9A8 /* WebKitNightlyEnabler */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- 8D1107290486CEB800E47090 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 5D41141C0A50A9DE00C84CF0 /* VERSION in Resources */,
- 5D650F3A09DB8B410075E9A8 /* WebKitNightlyEnabler.dylib in Resources */,
- 5D4DF982097F89FB0083D5E5 /* start.html in Resources */,
- 5DB70525097B94CD009875EC /* webkit.icns in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 5D650F3109DB8B280075E9A8 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 5D650F3609DB8B370075E9A8 /* WebKitNightlyEnabler.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 8D11072C0486CEB800E47090 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 8D11072D0486CEB800E47090 /* main.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXTargetDependency section */
- 5D650F4509DB8B830075E9A8 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = 5D650F3309DB8B280075E9A8 /* WebKitNightlyEnabler */;
- targetProxy = 5D650F4409DB8B830075E9A8 /* PBXContainerItemProxy */;
- };
-/* End PBXTargetDependency section */
-
-/* Begin XCBuildConfiguration section */
- 5D650F3809DB8B370075E9A8 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
- PRODUCT_NAME = WebKitNightlyEnabler;
- SDKROOT_ppc = /Developer/SDKs/MacOSX10.4u.sdk;
- };
- name = Debug;
- };
- 5D650F3909DB8B370075E9A8 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- MACOSX_DEPLOYMENT_TARGET_ppc = 10.4;
- PRODUCT_NAME = WebKitNightlyEnabler;
- SDKROOT_ppc = /Developer/SDKs/MacOSX10.4u.sdk;
- };
- name = Release;
- };
- C01FCF4B08A954540054247B /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = NO;
- GCC_DEBUGGING_SYMBOLS = full;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_ENABLE_FIX_AND_CONTINUE = YES;
- GCC_MODEL_TUNING = G5;
- GCC_OPTIMIZATION_LEVEL = 0;
- INFOPLIST_FILE = Info.plist;
- INSTALL_PATH = "$(HOME)/Applications";
- PRODUCT_NAME = WebKit;
- WRAPPER_EXTENSION = app;
- };
- name = Debug;
- };
- C01FCF4C08A954540054247B /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- DEAD_CODE_STRIPPING = YES;
- DEPLOYMENT_POSTPROCESSING = YES;
- GCC_DEBUGGING_SYMBOLS = full;
- GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
- INFOPLIST_FILE = Info.plist;
- PRODUCT_NAME = WebKit;
- WRAPPER_EXTENSION = app;
- };
- name = Release;
- };
- C01FCF4F08A954540054247B /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- DEBUG_INFORMATION_FORMAT = dwarf;
- GCC_WARN_ABOUT_RETURN_TYPE = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- MACOSX_DEPLOYMENT_TARGET = 10.2;
- MACOSX_DEPLOYMENT_TARGET_i386 = 10.4;
- MACOSX_DEPLOYMENT_TARGET_ppc = 10.2;
- PREBINDING = NO;
- SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
- };
- name = Debug;
- };
- C01FCF5008A954540054247B /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- DEBUG_INFORMATION_FORMAT = dwarf;
- GCC_WARN_ABOUT_RETURN_TYPE = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- MACOSX_DEPLOYMENT_TARGET_i386 = 10.4;
- MACOSX_DEPLOYMENT_TARGET_ppc = 10.2;
- PREBINDING = NO;
- SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 5D650F3709DB8B370075E9A8 /* Build configuration list for PBXNativeTarget "WebKitNightlyEnabler" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 5D650F3809DB8B370075E9A8 /* Debug */,
- 5D650F3909DB8B370075E9A8 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "WebKit" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- C01FCF4B08A954540054247B /* Debug */,
- C01FCF4C08A954540054247B /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- C01FCF4E08A954540054247B /* Build configuration list for PBXProject "WebKitLauncher" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- C01FCF4F08A954540054247B /* Debug */,
- C01FCF5008A954540054247B /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
-}
diff --git a/WebKitTools/WebKitLauncher/WebKitNightlyEnabler.m b/WebKitTools/WebKitLauncher/WebKitNightlyEnabler.m
deleted file mode 100644
index 8c6eb84..0000000
--- a/WebKitTools/WebKitLauncher/WebKitNightlyEnabler.m
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
- * Copyright (C) 2006 Graham Dennis. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <Cocoa/Cocoa.h>
-
-static void enableWebKitNightlyBehaviour() __attribute__ ((constructor));
-
-static NSString *WKNERunState = @"WKNERunState";
-static NSString *WKNEShouldMonitorShutdowns = @"WKNEShouldMonitorShutdowns";
-
-typedef enum {
- RunStateShutDown,
- RunStateInitializing,
- RunStateRunning
-} WKNERunStates;
-
-static bool extensionBundlesWereLoaded = NO;
-static NSSet *extensionPaths = nil;
-
-static void myBundleDidLoad(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo)
-{
- // Break out early if we have already detected an extension
- if (extensionBundlesWereLoaded)
- return;
-
- NSBundle *bundle = (NSBundle *)object;
- NSString *bundlePath = [[bundle bundlePath] stringByAbbreviatingWithTildeInPath];
- NSString *bundleFileName = [bundlePath lastPathComponent];
-
- // Explicitly ignore SIMBL.bundle, as its only purpose is to load extensions
- // on a per-application basis. It's presence indicates a user has application
- // extensions, but not that any will be loaded into Safari
- if ([bundleFileName isEqualToString:@"SIMBL.bundle"])
- return;
-
- // If the bundle lives inside a known extension path, flag it as an extension
- NSEnumerator *e = [extensionPaths objectEnumerator];
- NSString *path = nil;
- while (path = [e nextObject]) {
- if ([bundlePath length] < [path length])
- continue;
-
- if ([[bundlePath substringToIndex:[path length]] isEqualToString:path]) {
- extensionBundlesWereLoaded = YES;
- break;
- }
- }
-}
-
-static void myApplicationWillFinishLaunching(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo)
-{
- CFNotificationCenterRemoveObserver(CFNotificationCenterGetLocalCenter(), &myApplicationWillFinishLaunching, NULL, NULL);
- CFNotificationCenterRemoveObserver(CFNotificationCenterGetLocalCenter(), &myBundleDidLoad, NULL, NULL);
- [extensionPaths release];
- extensionPaths = nil;
-
- NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
- [userDefaults setInteger:RunStateRunning forKey:WKNERunState];
- [userDefaults synchronize];
-
- if (extensionBundlesWereLoaded)
- NSRunInformationalAlertPanel(@"Safari extensions detected",
- @"Safari extensions were detected on your system. Extensions are incompatible with nightly builds of WebKit, and may cause crashes or incorrect behavior. Please disable them if you experience such behavior.", @"Continue",
- nil, nil);
-}
-
-static void myApplicationWillTerminate(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo)
-{
- NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
- [userDefaults setInteger:RunStateShutDown forKey:WKNERunState];
- [userDefaults synchronize];
-}
-
-extern char **_CFGetProcessPath() __attribute__((weak));
-
-static void poseAsWebKitApp()
-{
- char *webKitAppPath = getenv("WebKitAppPath");
- if (!webKitAppPath || !_CFGetProcessPath)
- return;
-
- // Set up the main bundle early so it points at Safari.app
- CFBundleGetMainBundle();
-
- // Fiddle with CoreFoundation to have it pick up the executable path as being within WebKit.app
- char **processPath = _CFGetProcessPath();
- *processPath = NULL;
- setenv("CFProcessPath", webKitAppPath, 1);
- _CFGetProcessPath();
-
- // Clean up
- unsetenv("CFProcessPath");
- unsetenv("WebKitAppPath");
-}
-
-static void enableWebKitNightlyBehaviour()
-{
- unsetenv("DYLD_INSERT_LIBRARIES");
- poseAsWebKitApp();
-
- extensionPaths = [[NSSet alloc] initWithObjects:@"~/Library/InputManagers/", @"/Library/InputManagers/",
- @"~/Library/Application Support/SIMBL/Plugins/", @"/Library/Application Support/SIMBL/Plugins/",
- @"~/Library/Application Enhancers/", @"/Library/Application Enhancers/",
- nil];
-
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
- NSDictionary *defaultPrefs = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:RunStateShutDown], WKNERunState,
- [NSNumber numberWithBool:YES], WKNEShouldMonitorShutdowns, nil];
- [userDefaults registerDefaults:defaultPrefs];
- if ([userDefaults boolForKey:WKNEShouldMonitorShutdowns]) {
- WKNERunStates savedState = (WKNERunStates)[userDefaults integerForKey:WKNERunState];
- if (savedState == RunStateInitializing) {
- // Use CoreFoundation here as AppKit hasn't been initialized at this stage of Safari's lifetime
- CFOptionFlags responseFlags;
- CFUserNotificationDisplayAlert(0, kCFUserNotificationCautionAlertLevel,
- NULL, NULL, NULL,
- CFSTR("WebKit failed to open correctly"),
- CFSTR("WebKit failed to open correctly on your previous attempt. Please disable any Safari extensions that you may have installed. If the problem continues to occur, please file a bug report at http://webkit.org/quality/reporting.html"),
- CFSTR("Continue"), NULL, NULL, &responseFlags);
- }
- else if (savedState == RunStateRunning) {
- NSLog(@"WebKit failed to shut down cleanly. Checking for Safari extensions.");
- CFNotificationCenterAddObserver(CFNotificationCenterGetLocalCenter(), &myBundleDidLoad,
- myBundleDidLoad, (CFStringRef) NSBundleDidLoadNotification,
- NULL, CFNotificationSuspensionBehaviorDeliverImmediately);
- }
- }
- [userDefaults setInteger:RunStateInitializing forKey:WKNERunState];
- [userDefaults synchronize];
-
- CFNotificationCenterAddObserver(CFNotificationCenterGetLocalCenter(), &myApplicationWillFinishLaunching,
- myApplicationWillFinishLaunching, (CFStringRef) NSApplicationWillFinishLaunchingNotification,
- NULL, CFNotificationSuspensionBehaviorDeliverImmediately);
- CFNotificationCenterAddObserver(CFNotificationCenterGetLocalCenter(), &myApplicationWillTerminate,
- myApplicationWillTerminate, (CFStringRef) NSApplicationWillTerminateNotification,
- NULL, CFNotificationSuspensionBehaviorDeliverImmediately);
- [pool release];
-}
diff --git a/WebKitTools/WebKitLauncher/main.m b/WebKitTools/WebKitLauncher/main.m
deleted file mode 100644
index 7d13994..0000000
--- a/WebKitTools/WebKitLauncher/main.m
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import <Cocoa/Cocoa.h>
-#import <CoreFoundation/CoreFoundation.h>
-
-void displayErrorAndQuit(NSString *title, NSString *message)
-{
- NSApplicationLoad();
- NSRunCriticalAlertPanel(title, message, @"Quit", nil, nil);
- exit(0);
-}
-
-void checkMacOSXVersion()
-{
- long versionNumber = 0;
- OSErr error = Gestalt(gestaltSystemVersion, &versionNumber);
- if (error != noErr || versionNumber < 0x1040)
- displayErrorAndQuit(@"Mac OS X 10.4 is Required", @"Nightly builds of WebKit require Mac OS X 10.4 or newer.");
-}
-
-int getLastVersionShown()
-{
- [[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObject:@"-1" forKey:@"StartPageShownInVersion"]];
- return [[NSUserDefaults standardUserDefaults] integerForKey:@"StartPageShownInVersion"];
-}
-
-void saveLastVersionShown(int lastVersion)
-{
- [[NSUserDefaults standardUserDefaults] setInteger:lastVersion forKey:@"StartPageShownInVersion"];
- [[NSUserDefaults standardUserDefaults] synchronize];
-}
-
-NSString *getPathForStartPage()
-{
- return [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"start.html"];
-}
-
-int getShowStartPageVersion()
-{
- return getCurrentVersion() + 1;
-}
-
-int getCurrentVersion()
-{
- return [[[[NSBundle mainBundle] infoDictionary] valueForKey:(NSString *)kCFBundleVersionKey] intValue];
-}
-
-BOOL startPageDisabled()
-{
- return [[NSUserDefaults standardUserDefaults] boolForKey:@"StartPageDisabled"];
-}
-
-void addStartPageToArgumentsIfNeeded(NSMutableArray *arguments)
-{
- if (startPageDisabled())
- return;
-
- if (getLastVersionShown() < getShowStartPageVersion()) {
- saveLastVersionShown(getCurrentVersion());
- NSString *startPagePath = getPathForStartPage();
- if (startPagePath)
- [arguments addObject:startPagePath];
- }
-}
-
-static void myExecve(NSString *executable, NSArray *args, NSDictionary *environment)
-{
- char **argv = (char **)calloc(sizeof(char *), [args count] + 1);
- char **env = (char **)calloc(sizeof(char *), [environment count] + 1);
-
- NSEnumerator *e = [args objectEnumerator];
- NSString *s;
- int i = 0;
- while (s = [e nextObject])
- argv[i++] = (char *) [s UTF8String];
-
- e = [environment keyEnumerator];
- i = 0;
- while (s = [e nextObject])
- env[i++] = (char *) [[NSString stringWithFormat:@"%@=%@", s, [environment objectForKey:s]] UTF8String];
-
- execve([executable fileSystemRepresentation], argv, env);
-}
-
-NSBundle *locateSafariBundle()
-{
- NSArray *applicationDirectories = NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSAllDomainsMask, YES);
- NSEnumerator *e = [applicationDirectories objectEnumerator];
- NSString *applicationDirectory;
- while (applicationDirectory = [e nextObject]) {
- NSString *possibleSafariPath = [applicationDirectory stringByAppendingPathComponent:@"Safari.app"];
- NSBundle *possibleSafariBundle = [NSBundle bundleWithPath:possibleSafariPath];
- if ([[possibleSafariBundle bundleIdentifier] isEqualToString:@"com.apple.Safari"])
- return possibleSafariBundle;
- }
-
- CFURLRef safariURL = nil;
- OSStatus err = LSFindApplicationForInfo(kLSUnknownCreator, CFSTR("com.apple.Safari"), nil, nil, &safariURL);
- if (err != noErr)
- displayErrorAndQuit(@"Unable to locate Safari", @"Nightly builds of WebKit require Safari to run. Please check that it is available and then try again.");
-
- NSBundle *safariBundle = [NSBundle bundleWithPath:[(NSURL *)safariURL path]];
- CFRelease(safariURL);
- return safariBundle;
-}
-
-int main(int argc, char *argv[])
-{
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- checkMacOSXVersion();
-
- NSBundle *safariBundle = locateSafariBundle();
- NSString *executablePath = [safariBundle executablePath];
- NSString *frameworkPath = [[NSBundle mainBundle] resourcePath];
- NSString *pathToEnablerLib = [[NSBundle mainBundle] pathForResource:@"WebKitNightlyEnabler" ofType:@"dylib"];
-
- if ([frameworkPath rangeOfString:@":"].location != NSNotFound ||
- [pathToEnablerLib rangeOfString:@":"].location != NSNotFound)
- displayErrorAndQuit(@"Unable to launch Safari",
- @"WebKit is located at a path containing an unsupported character. Please move WebKit to a different location and try again.");
-
- NSMutableArray *arguments = [NSMutableArray arrayWithObjects:executablePath, @"-WebKitDeveloperExtras", @"YES", @"-WebKitScriptDebuggerEnabled", @"YES", nil];
- NSMutableDictionary *environment = [NSDictionary dictionaryWithObjectsAndKeys:frameworkPath, @"DYLD_FRAMEWORK_PATH", @"YES", @"WEBKIT_UNSET_DYLD_FRAMEWORK_PATH",
- pathToEnablerLib, @"DYLD_INSERT_LIBRARIES", [[NSBundle mainBundle] executablePath], @"WebKitAppPath", nil];
- addStartPageToArgumentsIfNeeded(arguments);
-
- while (*++argv)
- [arguments addObject:[NSString stringWithUTF8String:*argv]];
-
- myExecve(executablePath, arguments, environment);
-
- char *error = strerror(errno);
- NSString *errorMessage = [NSString stringWithFormat:@"Launching Safari at %@ failed with the error '%s' (%d)", [safariBundle bundlePath], error, errno];
- displayErrorAndQuit(@"Unable to launch Safari", errorMessage);
-
- [pool release];
- return 0;
-}
diff --git a/WebKitTools/WebKitLauncher/start.html b/WebKitTools/WebKitLauncher/start.html
deleted file mode 100644
index 2c94e79..0000000
--- a/WebKitTools/WebKitLauncher/start.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<html>
- <head>
- <title>Loading WebKit...</title>
- <meta http-equiv="refresh" content="1;URL=http://nightly.webkit.org/start/" />
- <script type="text/javascript">
- function getWebKitRevision()
- {
- var request = new XMLHttpRequest();
- request.open("GET", "VERSION", false);
- request.send();
- var revision = parseInt(request.responseText);
- if (isNaN(revision))
- return "";
-
- return revision;
- }
-
- function getWebKitBranch()
- {
- var request = new XMLHttpRequest();
- request.open("GET", "BRANCH", false);
- request.send();
- return (request.responseText || "trunk").replace(/\s/g, '')
- }
-
- var revision = getWebKitRevision();
- var branch = getWebKitBranch();
- document.location = "http://nightly.webkit.org/start/" + branch + "/" + revision;
- </script>
- </head>
- <body>
- </body>
-</html>
diff --git a/WebKitTools/WebKitLauncher/webkit.icns b/WebKitTools/WebKitLauncher/webkit.icns
deleted file mode 100644
index bf629bf..0000000
--- a/WebKitTools/WebKitLauncher/webkit.icns
+++ /dev/null
Binary files differ
diff --git a/WebKitTools/WinLauncher/WinLauncher.cpp b/WebKitTools/WinLauncher/WinLauncher.cpp
deleted file mode 100644
index 4d60115..0000000
--- a/WebKitTools/WinLauncher/WinLauncher.cpp
+++ /dev/null
@@ -1,408 +0,0 @@
-/*
- * Copyright (C) 2006, 2008 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "stdafx.h"
-#include "WinLauncher.h"
-#include "WebKit.h"
-
-#include <commctrl.h>
-#include <objbase.h>
-#include <shlwapi.h>
-#include <wininet.h>
-
-#define MAX_LOADSTRING 100
-#define URLBAR_HEIGHT 24
-
-// Global Variables:
-HINSTANCE hInst; // current instance
-HWND hMainWnd;
-HWND hURLBarWnd;
-long DefEditProc;
-IWebView* gWebView = 0;
-HWND gViewWindow = 0;
-WinLauncherWebHost* gWebHost = 0;
-TCHAR szTitle[MAX_LOADSTRING]; // The title bar text
-TCHAR szWindowClass[MAX_LOADSTRING]; // the main window class name
-
-// Forward declarations of functions included in this code module:
-ATOM MyRegisterClass(HINSTANCE hInstance);
-BOOL InitInstance(HINSTANCE, int);
-LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
-INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
-LRESULT CALLBACK MyEditProc(HWND, UINT, WPARAM, LPARAM);
-
-static void loadURL(BSTR urlBStr);
-
-HRESULT WinLauncherWebHost::updateAddressBar(IWebView* webView)
-{
- IWebFrame* mainFrame = 0;
- IWebDataSource* dataSource = 0;
- IWebMutableURLRequest* request = 0;
- BSTR frameURL = 0;
-
- HRESULT hr = S_OK;
-
- hr = webView->mainFrame(&mainFrame);
- if (FAILED(hr))
- goto exit;
-
- hr = mainFrame->dataSource(&dataSource);
- if (FAILED(hr) || !dataSource)
- hr = mainFrame->provisionalDataSource(&dataSource);
- if (FAILED(hr) || !dataSource)
- goto exit;
-
- hr = dataSource->request(&request);
- if (FAILED(hr) || !request)
- goto exit;
-
- hr = request->mainDocumentURL(&frameURL);
- if (FAILED(hr))
- goto exit;
-
- SendMessage(hURLBarWnd, (UINT)WM_SETTEXT, 0, (LPARAM)frameURL);
-
-exit:
- if (mainFrame)
- mainFrame->Release();
- if (dataSource)
- dataSource->Release();
- if (request)
- request->Release();
- SysFreeString(frameURL);
- return 0;
-}
-
-HRESULT STDMETHODCALLTYPE WinLauncherWebHost::QueryInterface(REFIID riid, void** ppvObject)
-{
- *ppvObject = 0;
- if (IsEqualGUID(riid, IID_IUnknown))
- *ppvObject = static_cast<IWebFrameLoadDelegate*>(this);
- else if (IsEqualGUID(riid, IID_IWebFrameLoadDelegate))
- *ppvObject = static_cast<IWebFrameLoadDelegate*>(this);
- else
- return E_NOINTERFACE;
-
- AddRef();
- return S_OK;
-}
-
-ULONG STDMETHODCALLTYPE WinLauncherWebHost::AddRef(void)
-{
- return ++m_refCount;
-}
-
-ULONG STDMETHODCALLTYPE WinLauncherWebHost::Release(void)
-{
- ULONG newRef = --m_refCount;
- if (!newRef)
- delete(this);
-
- return newRef;
-}
-
-static void resizeSubViews()
-{
- RECT rcClient;
- GetClientRect(hMainWnd, &rcClient);
- MoveWindow(hURLBarWnd, 0, 0, rcClient.right, URLBAR_HEIGHT, TRUE);
- MoveWindow(gViewWindow, 0, URLBAR_HEIGHT, rcClient.right, rcClient.bottom - URLBAR_HEIGHT, TRUE);
-}
-
-int APIENTRY _tWinMain(HINSTANCE hInstance,
- HINSTANCE hPrevInstance,
- LPTSTR lpCmdLine,
- int nCmdShow)
-{
-#ifdef _CRTDBG_MAP_ALLOC
- _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR);
- _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
-#endif
-
- UNREFERENCED_PARAMETER(hPrevInstance);
- UNREFERENCED_PARAMETER(lpCmdLine);
-
- // TODO: Place code here.
- MSG msg;
- HACCEL hAccelTable;
-
- INITCOMMONCONTROLSEX InitCtrlEx;
-
- InitCtrlEx.dwSize = sizeof(INITCOMMONCONTROLSEX);
- InitCtrlEx.dwICC = 0x00004000; //ICC_STANDARD_CLASSES;
- InitCommonControlsEx(&InitCtrlEx);
-
- // Initialize global strings
- LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
- LoadString(hInstance, IDC_WINLAUNCHER, szWindowClass, MAX_LOADSTRING);
- MyRegisterClass(hInstance);
-
- // Perform application initialization:
- if (!InitInstance (hInstance, nCmdShow))
- return FALSE;
-
- // Init COM
- OleInitialize(NULL);
-
- hURLBarWnd = CreateWindow(L"EDIT", 0,
- WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT | ES_AUTOVSCROLL,
- 0, 0, 0, 0,
- hMainWnd,
- 0,
- hInstance, 0);
-
- DefEditProc = GetWindowLong(hURLBarWnd, GWL_WNDPROC);
- SetWindowLong(hURLBarWnd, GWL_WNDPROC,(long)MyEditProc);
- SetFocus(hURLBarWnd);
-
- HRESULT hr = CoCreateInstance(CLSID_WebView, 0, CLSCTX_ALL, IID_IWebView, (void**)&gWebView);
- if (FAILED(hr))
- goto exit;
-
- gWebHost = new WinLauncherWebHost();
- gWebHost->AddRef();
- hr = gWebView->setFrameLoadDelegate(gWebHost);
- if (FAILED(hr))
- goto exit;
-
- hr = gWebView->setHostWindow((OLE_HANDLE) hMainWnd);
- if (FAILED(hr))
- goto exit;
-
- RECT clientRect;
- GetClientRect(hMainWnd, &clientRect);
- hr = gWebView->initWithFrame(clientRect, 0, 0);
- if (FAILED(hr))
- goto exit;
-
- IWebFrame* frame;
- hr = gWebView->mainFrame(&frame);
- if (FAILED(hr))
- goto exit;
- static BSTR defaultHTML = 0;
- if (!defaultHTML)
- defaultHTML = SysAllocString(TEXT("<p style=\"background-color: #00FF00\">Testing</p><img src=\"http://webkit.org/images/icon-gold.png\" alt=\"Face\"><div style=\"border: solid blue\" contenteditable=\"true\">div with blue border</div><ul><li>foo<li>bar<li>baz</ul>"));
- frame->loadHTMLString(defaultHTML, 0);
- frame->Release();
-
- IWebViewPrivate* viewExt;
- hr = gWebView->QueryInterface(IID_IWebViewPrivate, (void**)&viewExt);
- if (FAILED(hr))
- goto exit;
- hr = viewExt->viewWindow((OLE_HANDLE*) &gViewWindow);
- viewExt->Release();
- if (FAILED(hr) || !gViewWindow)
- goto exit;
-
- resizeSubViews();
-
- ShowWindow(gViewWindow, nCmdShow);
- UpdateWindow(gViewWindow);
-
- hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WINLAUNCHER));
-
- // Main message loop:
- while (GetMessage(&msg, NULL, 0, 0)) {
- if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- }
-
-exit:
- delete gWebView;
-#ifdef _CRTDBG_MAP_ALLOC
- _CrtDumpMemoryLeaks();
-#endif
-
- // Shut down COM.
- OleUninitialize();
-
- return (int) msg.wParam;
-}
-
-ATOM MyRegisterClass(HINSTANCE hInstance)
-{
- WNDCLASSEX wcex;
-
- wcex.cbSize = sizeof(WNDCLASSEX);
-
- wcex.style = CS_HREDRAW | CS_VREDRAW;
- wcex.lpfnWndProc = WndProc;
- wcex.cbClsExtra = 0;
- wcex.cbWndExtra = 0;
- wcex.hInstance = hInstance;
- wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINLAUNCHER));
- wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
- wcex.hbrBackground = 0;
- wcex.lpszMenuName = MAKEINTRESOURCE(IDC_WINLAUNCHER);
- wcex.lpszClassName = szWindowClass;
- wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
-
- return RegisterClassEx(&wcex);
-}
-
-BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
-{
- hInst = hInstance; // Store instance handle in our global variable
-
- hMainWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
- CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
-
- if (!hMainWnd)
- return FALSE;
-
- ShowWindow(hMainWnd, nCmdShow);
- UpdateWindow(hMainWnd);
-
- return TRUE;
-}
-
-LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
-{
- int wmId, wmEvent;
- PAINTSTRUCT ps;
- HDC hdc;
-
- switch (message) {
- case WM_COMMAND:
- wmId = LOWORD(wParam);
- wmEvent = HIWORD(wParam);
- // Parse the menu selections:
- switch (wmId) {
- case IDM_ABOUT:
- DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
- break;
- case IDM_EXIT:
- DestroyWindow(hWnd);
- break;
- default:
- return DefWindowProc(hWnd, message, wParam, lParam);
- }
- break;
- case WM_DESTROY:
- PostQuitMessage(0);
- break;
- case WM_SIZE:
- if (!gWebView)
- break;
- resizeSubViews();
- break;
- default:
- return DefWindowProc(hWnd, message, wParam, lParam);
- }
- return 0;
-}
-
-
-#define MAX_URL_LENGTH 1024
-
-LRESULT CALLBACK MyEditProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
- switch (message) {
- case WM_CHAR:
- if( wParam == 13 ) { // Enter Key
- wchar_t strPtr[MAX_URL_LENGTH];
- *((LPWORD)strPtr) = MAX_URL_LENGTH;
- int strLen = SendMessage(hDlg, EM_GETLINE, 0, (LPARAM)strPtr);
-
- BSTR bstr = SysAllocStringLen(strPtr, strLen);
- loadURL(bstr);
- SysFreeString(bstr);
-
- return 0;
- } else
- return (LRESULT)CallWindowProc((WNDPROC)DefEditProc,hDlg,message,wParam,lParam);
- break;
- default:
- return (LRESULT)CallWindowProc((WNDPROC)DefEditProc,hDlg,message,wParam,lParam);
- break;
- }
- return 0;
-}
-
-
-// Message handler for about box.
-INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
- UNREFERENCED_PARAMETER(lParam);
- switch (message) {
- case WM_INITDIALOG:
- return (INT_PTR)TRUE;
-
- case WM_COMMAND:
- if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) {
- EndDialog(hDlg, LOWORD(wParam));
- return (INT_PTR)TRUE;
- }
- break;
- }
- return (INT_PTR)FALSE;
-}
-
-static void loadURL(BSTR urlBStr)
-{
- IWebFrame* frame = 0;
- IWebMutableURLRequest* request = 0;
- static BSTR methodBStr = 0;
-
- if (!methodBStr)
- methodBStr = SysAllocString(TEXT("GET"));
-
- if (urlBStr && urlBStr[0] && (PathFileExists(urlBStr) || PathIsUNC(urlBStr))) {
- TCHAR fileURL[INTERNET_MAX_URL_LENGTH];
- DWORD fileURLLength = sizeof(fileURL)/sizeof(fileURL[0]);
- if (SUCCEEDED(UrlCreateFromPath(urlBStr, fileURL, &fileURLLength, 0)))
- urlBStr = fileURL;
- }
-
- HRESULT hr = gWebView->mainFrame(&frame);
- if (FAILED(hr))
- goto exit;
-
- hr = CoCreateInstance(CLSID_WebMutableURLRequest, 0, CLSCTX_ALL, IID_IWebMutableURLRequest, (void**)&request);
- if (FAILED(hr))
- goto exit;
-
- hr = request->initWithURL(urlBStr, WebURLRequestUseProtocolCachePolicy, 0);
- if (FAILED(hr))
- goto exit;
-
- hr = request->setHTTPMethod(methodBStr);
- if (FAILED(hr))
- goto exit;
-
- hr = frame->loadRequest(request);
- if (FAILED(hr))
- goto exit;
-
- SetFocus(gViewWindow);
-
-exit:
- if (frame)
- frame->Release();
- if (request)
- request->Release();
-}
diff --git a/WebKitTools/WinLauncher/WinLauncher.h b/WebKitTools/WinLauncher/WinLauncher.h
deleted file mode 100644
index 1f57bff..0000000
--- a/WebKitTools/WinLauncher/WinLauncher.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#pragma once
-
-#include "resource.h"
-#include "WebKit.h"
-
-class WinLauncherWebHost : public IWebFrameLoadDelegate
-{
-public:
- WinLauncherWebHost() : m_refCount(1) {}
-
- // IUnknown
- virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
- virtual ULONG STDMETHODCALLTYPE AddRef(void);
- virtual ULONG STDMETHODCALLTYPE Release(void);
-
- // IWebFrameLoadDelegate
- virtual HRESULT STDMETHODCALLTYPE didStartProvisionalLoadForFrame(
- /* [in] */ IWebView* webView,
- /* [in] */ IWebFrame* /*frame*/) { return S_OK; }
-
- virtual HRESULT STDMETHODCALLTYPE didReceiveServerRedirectForProvisionalLoadForFrame(
- /* [in] */ IWebView *webView,
- /* [in] */ IWebFrame *frame) { return S_OK; }
-
- virtual HRESULT STDMETHODCALLTYPE didFailProvisionalLoadWithError(
- /* [in] */ IWebView *webView,
- /* [in] */ IWebError *error,
- /* [in] */ IWebFrame *frame) { return S_OK; }
-
- virtual HRESULT STDMETHODCALLTYPE didCommitLoadForFrame(
- /* [in] */ IWebView *webView,
- /* [in] */ IWebFrame *frame) { return updateAddressBar(webView); }
-
- virtual HRESULT STDMETHODCALLTYPE didReceiveTitle(
- /* [in] */ IWebView *webView,
- /* [in] */ BSTR title,
- /* [in] */ IWebFrame *frame) { return S_OK; }
-
- virtual HRESULT STDMETHODCALLTYPE didReceiveIcon(
- /* [in] */ IWebView *webView,
- /* [in] */ OLE_HANDLE hBitmap,
- /* [in] */ IWebFrame *frame) { return S_OK; }
-
- virtual HRESULT STDMETHODCALLTYPE didFinishLoadForFrame(
- /* [in] */ IWebView* webView,
- /* [in] */ IWebFrame* /*frame*/) { return S_OK; }
-
- virtual HRESULT STDMETHODCALLTYPE didFailLoadWithError(
- /* [in] */ IWebView *webView,
- /* [in] */ IWebError *error,
- /* [in] */ IWebFrame *forFrame) { return S_OK; }
-
- virtual HRESULT STDMETHODCALLTYPE didChangeLocationWithinPageForFrame(
- /* [in] */ IWebView *webView,
- /* [in] */ IWebFrame *frame) { return S_OK; }
-
- virtual HRESULT STDMETHODCALLTYPE willPerformClientRedirectToURL(
- /* [in] */ IWebView *webView,
- /* [in] */ BSTR url,
- /* [in] */ double delaySeconds,
- /* [in] */ DATE fireDate,
- /* [in] */ IWebFrame *frame) { return S_OK; }
-
- virtual HRESULT STDMETHODCALLTYPE didCancelClientRedirectForFrame(
- /* [in] */ IWebView *webView,
- /* [in] */ IWebFrame *frame) { return S_OK; }
-
- virtual HRESULT STDMETHODCALLTYPE willCloseFrame(
- /* [in] */ IWebView *webView,
- /* [in] */ IWebFrame *frame) { return S_OK; }
-
- virtual /* [local] */ HRESULT STDMETHODCALLTYPE windowScriptObjectAvailable(
- /* [in] */ IWebView *webView,
- /* [in] */ JSContextRef context,
- /* [in] */ JSObjectRef windowScriptObject) { return S_OK; }
-
- // WinLauncherWebHost
-
-protected:
- HRESULT updateAddressBar(IWebView* webView);
-
-protected:
- ULONG m_refCount;
-};
diff --git a/WebKitTools/WinLauncher/WinLauncher.ico b/WebKitTools/WinLauncher/WinLauncher.ico
deleted file mode 100644
index d551aa3..0000000
--- a/WebKitTools/WinLauncher/WinLauncher.ico
+++ /dev/null
Binary files differ
diff --git a/WebKitTools/WinLauncher/WinLauncher.rc b/WebKitTools/WinLauncher/WinLauncher.rc
deleted file mode 100644
index f4b2cd4..0000000
--- a/WebKitTools/WinLauncher/WinLauncher.rc
+++ /dev/null
@@ -1,136 +0,0 @@
-// Microsoft Visual C++ generated resource script.
-//
-#include "resource.h"
-
-#define APSTUDIO_READONLY_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 2 resource.
-//
-#define APSTUDIO_HIDDEN_SYMBOLS
-#include "windows.h"
-#undef APSTUDIO_HIDDEN_SYMBOLS
-
-/////////////////////////////////////////////////////////////////////////////
-#undef APSTUDIO_READONLY_SYMBOLS
-
-/////////////////////////////////////////////////////////////////////////////
-// English (U.S.) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-#ifdef _WIN32
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-#pragma code_page(1252)
-#endif //_WIN32
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Icon
-//
-
-// Icon with lowest ID value placed first to ensure application icon
-// remains consistent on all systems.
-IDI_WINLAUNCHER ICON "WinLauncher.ico"
-IDI_SMALL ICON "small.ico"
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Menu
-//
-
-IDC_WINLAUNCHER MENU
-BEGIN
- POPUP "&File"
- BEGIN
- MENUITEM "E&xit", IDM_EXIT
- END
- POPUP "&Help"
- BEGIN
- MENUITEM "&About ...", IDM_ABOUT
- END
-END
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Accelerator
-//
-
-IDC_WINLAUNCHER ACCELERATORS
-BEGIN
- "?", IDM_ABOUT, ASCII, ALT
- "/", IDM_ABOUT, ASCII, ALT
-END
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
-IDD_ABOUTBOX DIALOGEX 22, 17, 230, 75
-STYLE DS_SETFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-CAPTION "About"
-FONT 8, "System", 0, 0, 0x0
-BEGIN
- ICON IDI_WINLAUNCHER,IDC_MYICON,14,9,20,20
- LTEXT "WinLauncher Version 1.1",IDC_STATIC,49,10,119,8,SS_NOPREFIX
- LTEXT "Copyright (C) 2008",IDC_STATIC,49,20,119,8
- DEFPUSHBUTTON "OK",IDOK,195,6,30,11,WS_GROUP
-END
-
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-1 TEXTINCLUDE
-BEGIN
- "resource.h\0"
-END
-
-2 TEXTINCLUDE
-BEGIN
- "#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
- "#include ""windows.h""\r\n"
- "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
- "\0"
-END
-
-3 TEXTINCLUDE
-BEGIN
- "\r\n"
- "\0"
-END
-
-#endif // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// String Table
-//
-
-STRINGTABLE
-BEGIN
- IDS_APP_TITLE "WinLauncher"
- IDC_WINLAUNCHER "WINLAUNCHER"
-END
-
-#endif // English (U.S.) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-
-
-/////////////////////////////////////////////////////////////////////////////
-#endif // not APSTUDIO_INVOKED
-
diff --git a/WebKitTools/WinLauncher/WinLauncher.vcproj b/WebKitTools/WinLauncher/WinLauncher.vcproj
deleted file mode 100644
index 4aec2c6..0000000
--- a/WebKitTools/WinLauncher/WinLauncher.vcproj
+++ /dev/null
@@ -1,260 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="WinLauncher"
- ProjectGUID="{114FCA11-216B-4C8C-957E-30A75AE80443}"
- RootNamespace="WinLauncher"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(WebKitOutputDir)\bin"
- IntermediateDirectory="$(WebKitOutputDir)\obj\$(ProjectName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(WebKitLibrariesDir)\tools\vsprops\common.vsprops;$(WebKitLibrariesDir)\tools\vsprops\debug.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="&quot;$(WebKitOutputDir)\include\WebKit&quot;;&quot;$(WebKitOutputDir)\Include&quot;;&quot;$(WebKitLibrariesDir)\Include&quot;;&quot;$(WebKitOutputDir)\Include\WebCore&quot;;&quot;$(WebKitLibrariesDir)\Include\WebCore&quot;;&quot;$(WebKitOutputDir)\Include\WebCore\ForwardingHeaders&quot;;&quot;$(WebKitLibrariesDir)\Include\WebCore\ForwardingHeaders&quot;;&quot;$(WebKitOutputDir)\Include\JavaScriptCore&quot;;&quot;$(WebKitLibrariesDir)\Include\JavaScriptCore&quot;;&quot;$(ProjectDir)\..&quot;;&quot;$(ProjectDir)&quot;;&quot;$(IntDir)\Include&quot;;&quot;$(WebKitOutputDir)\obj\WebKit\DerivedSources&quot;"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE"
- MinimalRebuild="true"
- ExceptionHandling="0"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- RuntimeTypeInfo="false"
- UsePrecompiledHeader="2"
- WarningLevel="1"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- LinkLibraryDependencies="false"
- AdditionalDependencies="comctl32.lib shlwapi.lib user32.lib ole32.lib oleaut32.lib WebKitGUID$(WebKitConfigSuffix).lib WebKit$(WebKitDLLConfigSuffix).lib"
- LinkIncremental="2"
- AdditionalLibraryDirectories="&quot;$(WebKitOutputDir)\lib&quot;;&quot;$(ProjectDir)\..\..\..\&quot;"
- GenerateDebugInformation="true"
- SubSystem="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- TypeLibraryFile="$(WebKitOutputDir)\lib\WebKit.tlb"
- ComponentFileName="WebKit$(WebKitDLLConfigSuffix)"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(WebKitOutputDir)\bin"
- IntermediateDirectory="$(WebKitOutputDir)\obj\$(ProjectName)\$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(WebKitLibrariesDir)\tools\vsprops\common.vsprops;$(WebKitLibrariesDir)\tools\vsprops\release.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="&quot;$(WebKitOutputDir)\include\WebKit&quot;;&quot;$(WebKitOutputDir)\Include&quot;;&quot;$(WebKitLibrariesDir)\Include&quot;;&quot;$(WebKitOutputDir)\Include\WebCore&quot;;&quot;$(WebKitLibrariesDir)\Include\WebCore&quot;;&quot;$(WebKitOutputDir)\Include\WebCore\ForwardingHeaders&quot;;&quot;$(WebKitLibrariesDir)\Include\WebCore\ForwardingHeaders&quot;;&quot;$(WebKitOutputDir)\Include\JavaScriptCore&quot;;&quot;$(WebKitLibrariesDir)\Include\JavaScriptCore&quot;;&quot;$(WebKitOutputDir)\Include\icu&quot;;&quot;$(WebKitLibrariesDir)\Include\icu&quot;;&quot;$(WebKitLibrariesDir)\include\pthreads&quot;;&quot;$(WebKitOutputDir)\Include\CoreFoundation\OSXCompatibilityHeaders&quot;;&quot;$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders&quot;;&quot;$(WebKitOutputDir)\Include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility&quot;;&quot;$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility&quot;;&quot;$(ProjectDir)\..&quot;;&quot;$(ProjectDir)&quot;;&quot;$(IntDir)\include&quot;;&quot;$(WebKitOutputDir)\obj\WebKit\DerivedSources&quot;"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_WIN32_WINNT=0x501"
- ExceptionHandling="0"
- RuntimeLibrary="2"
- RuntimeTypeInfo="false"
- UsePrecompiledHeader="2"
- WarningLevel="1"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- LinkLibraryDependencies="false"
- AdditionalOptions="&#x0D;&#x0A;"
- AdditionalDependencies="comctl32.lib shlwapi.lib user32.lib ole32.lib oleaut32.lib WebKitGUID$(WebKitConfigSuffix).lib WebKit$(WebKitDLLConfigSuffix).lib"
- LinkIncremental="1"
- AdditionalLibraryDirectories="&quot;$(WebKitOutputDir)\lib&quot;;&quot;$(ProjectDir)\..\..\..\&quot;"
- GenerateDebugInformation="true"
- SubSystem="2"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- TypeLibraryFile="$(WebKitOutputDir)\lib\WebKit.tlb"
- ComponentFileName="WebKit$(WebKitDLLConfigSuffix)"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
- >
- <File
- RelativePath=".\stdafx.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- UsePrecompiledHeader="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- UsePrecompiledHeader="1"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath=".\WinLauncher.cpp"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
- >
- <File
- RelativePath=".\Resource.h"
- >
- </File>
- <File
- RelativePath=".\stdafx.h"
- >
- </File>
- <File
- RelativePath=".\WinLauncher.h"
- >
- </File>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
- >
- <File
- RelativePath=".\small.ico"
- >
- </File>
- <File
- RelativePath=".\WinLauncher.ico"
- >
- </File>
- <File
- RelativePath=".\WinLauncher.rc"
- >
- </File>
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/WebKitTools/WinLauncher/resource.h b/WebKitTools/WinLauncher/resource.h
deleted file mode 100644
index 6a21684..0000000
--- a/WebKitTools/WinLauncher/resource.h
+++ /dev/null
@@ -1,27 +0,0 @@
-//{{NO_DEPENDENCIES}}
-// Microsoft Visual C++ generated include file.
-// Used by WinLauncher.rc
-//
-#define IDC_MYICON 2
-#define IDD_WINLAUNCHER_DIALOG 102
-#define IDS_APP_TITLE 103
-#define IDD_ABOUTBOX 103
-#define IDM_ABOUT 104
-#define IDM_EXIT 105
-#define IDI_WINLAUNCHER 107
-#define IDI_SMALL 108
-#define IDC_WINLAUNCHER 109
-#define IDR_MAINFRAME 128
-#define IDC_STATIC -1
-
-// Next default values for new objects
-//
-#ifdef APSTUDIO_INVOKED
-#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NO_MFC 1
-#define _APS_NEXT_RESOURCE_VALUE 129
-#define _APS_NEXT_COMMAND_VALUE 32771
-#define _APS_NEXT_CONTROL_VALUE 1000
-#define _APS_NEXT_SYMED_VALUE 110
-#endif
-#endif
diff --git a/WebKitTools/WinLauncher/small.ico b/WebKitTools/WinLauncher/small.ico
deleted file mode 100644
index d551aa3..0000000
--- a/WebKitTools/WinLauncher/small.ico
+++ /dev/null
Binary files differ
diff --git a/WebKitTools/WinLauncher/stdafx.cpp b/WebKitTools/WinLauncher/stdafx.cpp
deleted file mode 100644
index 541dcb1..0000000
--- a/WebKitTools/WinLauncher/stdafx.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// stdafx.cpp : source file that includes just the standard includes
-// Spinneret.pch will be the pre-compiled header
-// stdafx.obj will contain the pre-compiled type information
-
-#include "stdafx.h"
-
-// TODO: reference any additional headers you need in STDAFX.H
-// and not in this file
diff --git a/WebKitTools/WinLauncher/stdafx.h b/WebKitTools/WinLauncher/stdafx.h
deleted file mode 100644
index 86f76cc..0000000
--- a/WebKitTools/WinLauncher/stdafx.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// stdafx.h : include file for standard system include files,
-// or project specific include files that are used frequently, but
-// are changed infrequently
-//
-
-#pragma once
-
-// Modify the following defines if you have to target a platform prior to the ones specified below.
-// Refer to MSDN for the latest info on corresponding values for different platforms.
-#ifndef WINVER // Allow use of features specific to Windows XP or later.
-#define WINVER 0x0501 // Change this to the appropriate value to target other versions of Windows.
-#endif
-
-#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later.
-#define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows.
-#endif
-
-#ifndef _WIN32_WINDOWS // Allow use of features specific to Windows 98 or later.
-#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later.
-#endif
-
-#ifndef _WIN32_IE // Allow use of features specific to IE 6.0 or later.
-#define _WIN32_IE 0x0600 // Change this to the appropriate value to target other versions of IE.
-#endif
-
-#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
-// Windows Header Files:
-#include <windows.h>
-
-// C RunTime Header Files
-#include <stdlib.h>
-#include <malloc.h>
-#include <memory.h>
-#include <tchar.h>
-
-#if 0
-// Visual Studio Leak Detection
-// <http://msdn2.microsoft.com/en-US/library/e5ewb1h3.aspx>
-#if defined(_MSC_VER) && defined(_DEBUG)
-#define _CRTDBG_MAP_ALLOC
-#include <stdlib.h>
-#include <crtdbg.h>
-#endif
-#endif
diff --git a/WebKitTools/iExploder/CHANGELOG.txt b/WebKitTools/iExploder/CHANGELOG.txt
deleted file mode 100644
index a9d5060..0000000
--- a/WebKitTools/iExploder/CHANGELOG.txt
+++ /dev/null
@@ -1,328 +0,0 @@
-------------------------------------------------------------------------
-r618 | thomas | 2006-04-21 09:55:51 -0400 (Fri, 21 Apr 2006) | 1 line
-Changed paths:
- M /iexploder/README.txt
- M /iexploder/htdocs/iexploder.cgi
- M /iexploder/htdocs/iexploder.rb
- M /iexploder/htdocs/webserver.rb
-
-1.3.2.. minor adjustment to title and where gets set
-------------------------------------------------------------------------
-r617 | thomas | 2006-04-19 17:14:26 -0400 (Wed, 19 Apr 2006) | 1 line
-Changed paths:
- A /iexploder/testcases/safari/2500_163-Safari-2.0.3_Mac_OS_X-Crash.html
-
-Add h4+pre+cite+nolayer+code crash for Safari 2.0.3
-------------------------------------------------------------------------
-r616 | thomas | 2006-04-19 17:01:48 -0400 (Wed, 19 Apr 2006) | 1 line
-Changed paths:
- A /iexploder/tools/showtest.rb
-
-showtest.rb: easily download a testcase
-------------------------------------------------------------------------
-r615 | thomas | 2006-04-19 16:07:13 -0400 (Wed, 19 Apr 2006) | 1 line
-Changed paths:
- M /iexploder/htdocs/iexploder.rb
-
-Remove stopping debug message
-------------------------------------------------------------------------
-r614 | thomas | 2006-04-19 16:02:48 -0400 (Wed, 19 Apr 2006) | 1 line
-Changed paths:
- M /iexploder/README.txt
- M /iexploder/htdocs/iexploder.rb
-
-New subtest algorithm: double the tag count each iteration
-------------------------------------------------------------------------
-r613 | thomas | 2006-04-19 15:05:30 -0400 (Wed, 19 Apr 2006) | 1 line
-Changed paths:
- M /iexploder/htdocs/cssproperties.in
-
-remove IE dupes: text-overflow and word-wrap
-------------------------------------------------------------------------
-r612 | thomas | 2006-04-19 12:48:07 -0400 (Wed, 19 Apr 2006) | 1 line
-Changed paths:
- M /iexploder/README.txt
- M /iexploder/htdocs/config.rb
- M /iexploder/htdocs/iexploder.rb
-
-Add some benchmark/performance info.. set MAX_TAGS default to 96
-------------------------------------------------------------------------
-r611 | thomas | 2006-04-19 10:22:33 -0400 (Wed, 19 Apr 2006) | 1 line
-Changed paths:
- M /iexploder/htdocs/iexploder.cgi
- M /iexploder/htdocs/iexploder.rb
- M /iexploder/htdocs/webserver.rb
-
-Add stop parameter, fix port assignment issue, fix indentation
-------------------------------------------------------------------------
-r610 | thomas | 2006-04-19 10:22:06 -0400 (Wed, 19 Apr 2006) | 1 line
-Changed paths:
- M /iexploder/README.txt
-
-1.3.0
-------------------------------------------------------------------------
-r609 | thomas | 2006-04-18 22:46:35 -0400 (Tue, 18 Apr 2006) | 1 line
-Changed paths:
- A /iexploder/testcases/safari/16170_44-Safari-Nightly-420+-2006-r13911-2006-04-18.html
-
-applet+param Hashmap crash in Safari
-------------------------------------------------------------------------
-r608 | thomas | 2006-04-18 22:07:45 -0400 (Tue, 18 Apr 2006) | 1 line
-Changed paths:
- M /iexploder/htdocs/iexploder.cgi
- M /iexploder/htdocs/webserver.rb
-
-1.3.0
-------------------------------------------------------------------------
-r607 | thomas | 2006-04-18 22:05:47 -0400 (Tue, 18 Apr 2006) | 1 line
-Changed paths:
- M /iexploder/README.txt
- M /iexploder/htdocs/webserver.rb
- M /iexploder/tools/osx_last_crash.rb
-
-commit osx_last_crash minutes->days change, document that you can pass a new port number to the webserver.rb program
-------------------------------------------------------------------------
-r606 | thomas | 2006-04-18 22:02:16 -0400 (Tue, 18 Apr 2006) | 1 line
-Changed paths:
- A /iexploder/testcases/safari/2969_421-Safari-2.0.3_Mac_OS_X-Crash.html
- A /iexploder/testcases/safari/5763_181-Safari-Nightly-420+-2006-r13911-2006-04-18.html
-
-Add more Safari crashes to the testcases list
-------------------------------------------------------------------------
-r605 | thomas | 2006-04-18 19:05:46 -0400 (Tue, 18 Apr 2006) | 1 line
-Changed paths:
- M /iexploder/README.txt
- M /iexploder/htdocs/config.rb
- M /iexploder/htdocs/iexploder.cgi
- M /iexploder/htdocs/iexploder.rb
- M /iexploder/htdocs/webserver.rb
-
-Greatly improve subtests. Not only do we iterate around each tag, but we steadily increase the amount of tags we input as well
-------------------------------------------------------------------------
-r604 | thomas | 2006-04-18 17:04:17 -0400 (Tue, 18 Apr 2006) | 1 line
-Changed paths:
- M /iexploder/README.txt
- M /iexploder/htdocs/config.rb
-
-1.3b1.. also, raise max tags to 48 now that we have fixed subtest bugs
-------------------------------------------------------------------------
-r603 | thomas | 2006-04-18 16:59:20 -0400 (Tue, 18 Apr 2006) | 1 line
-Changed paths:
- M /iexploder/htdocs/iexploder.cgi
- M /iexploder/htdocs/iexploder.rb
- A /iexploder/htdocs/webserver.rb
-
-New Webrick based option for standalone hosting
-------------------------------------------------------------------------
-r602 | thomas | 2006-04-18 16:18:35 -0400 (Tue, 18 Apr 2006) | 1 line
-Changed paths:
- A /iexploder/htdocs/config.rb
- M /iexploder/htdocs/cssproperties.in
- M /iexploder/htdocs/iexploder.cgi
- A /iexploder/htdocs/iexploder.rb
-
-Split iexploder.cgi into iexploder.rb and config.rb
-------------------------------------------------------------------------
-r601 | thomas | 2006-04-18 13:36:25 -0400 (Tue, 18 Apr 2006) | 1 line
-Changed paths:
- M /iexploder/htdocs/cssvalues.in
-
-Add items from WebKit/WebCore/css/CSSValueKeywords.in
-------------------------------------------------------------------------
-r600 | thomas | 2006-04-18 13:32:45 -0400 (Tue, 18 Apr 2006) | 1 line
-Changed paths:
- A /iexploder/testcases/opera/4750_Opera_8.5.4_Mac_OS_X-Crash.html
-
-Add odd new crash from Opera 8.5.4 for Mac
-------------------------------------------------------------------------
-r599 | thomas | 2006-04-18 13:10:15 -0400 (Tue, 18 Apr 2006) | 1 line
-Changed paths:
- A /iexploder/testcases/safari/7483_Safari-Nightly-420+-2006-r13911-2006-04-18.html
-
-Add new Safari test case
-------------------------------------------------------------------------
-r598 | thomas | 2006-04-18 12:25:39 -0400 (Tue, 18 Apr 2006) | 1 line
-Changed paths:
- M /iexploder/LICENSE.txt
- M /iexploder/README.txt
- M /iexploder/htdocs/htmlattrs.in
- M /iexploder/htdocs/htmltags.in
- M /iexploder/htdocs/iexploder.cgi
-
-iExploder 1.3: sync with modern rendering kits
-------------------------------------------------------------------------
-r597 | thomas | 2006-04-18 12:25:18 -0400 (Tue, 18 Apr 2006) | 1 line
-Changed paths:
- A /iexploder/testcases/firefox/354_1-Firefox-1.5.0.1_Solaris-Crash.html
- A /iexploder/testcases/firefox/44_9-Firefox-1.5.0.1_Solaris-Crash.html
- A /iexploder/testcases/internet_explorer/8386_11-Internet-Explorer-6.0_WinXP-DoS.html (from /iexploder/testcases/safari/8386_11-Internet-Explorer-6.0_WinXP-DoS.html:596)
- A /iexploder/testcases/safari/218-Safari-2.0.3_Mac_OS_X-Crash.html
- D /iexploder/testcases/safari/8386_11-Internet-Explorer-6.0_WinXP-DoS.html
-
-New testcases
-------------------------------------------------------------------------
-r596 | thomas | 2006-04-18 12:23:48 -0400 (Tue, 18 Apr 2006) | 1 line
-Changed paths:
- D /iexploder/testcases/119_4-Safari-Nightly-420+-2005-10-21-Crash.html
- D /iexploder/testcases/165367_15-FireFox-1.4.1-Crash.html
- D /iexploder/testcases/2009-iCab-3.0.1-Mac_OS_X-Crash.html
- D /iexploder/testcases/2289-iCab-3.0.1-Crash.html
- D /iexploder/testcases/25057-OmniWeb-5.1.1-Crash.html
- D /iexploder/testcases/2624-Opera-8.5-Mac_OS_X-Crash.html
- D /iexploder/testcases/502701_7-FireFox-1.4.1-Crash.html
- D /iexploder/testcases/60253-OmniWeb-5.1.1-Crash.html
- D /iexploder/testcases/6134_19-Safari-2.0.1-412.5-Crash.html
- D /iexploder/testcases/8386_11-Internet-Explorer-6.0_WinXP-DoS.html
- A /iexploder/testcases/firefox
- A /iexploder/testcases/firefox/165367_15-Firefox-1.4.1-Crash.html (from /iexploder/testcases/165367_15-FireFox-1.4.1-Crash.html:595)
- A /iexploder/testcases/firefox/502701_7-Firefox-1.4.1-Crash.html (from /iexploder/testcases/502701_7-FireFox-1.4.1-Crash.html:595)
- A /iexploder/testcases/icab
- A /iexploder/testcases/icab/2009-iCab-3.0.1-Mac_OS_X-Crash.html (from /iexploder/testcases/2009-iCab-3.0.1-Mac_OS_X-Crash.html:595)
- A /iexploder/testcases/icab/2289-iCab-3.0.1-Crash.html (from /iexploder/testcases/2289-iCab-3.0.1-Crash.html:595)
- A /iexploder/testcases/internet_explorer
- A /iexploder/testcases/omniweb
- A /iexploder/testcases/omniweb/25057-OmniWeb-5.1.1-Crash.html (from /iexploder/testcases/25057-OmniWeb-5.1.1-Crash.html:595)
- A /iexploder/testcases/omniweb/60253-OmniWeb-5.1.1-Crash.html (from /iexploder/testcases/60253-OmniWeb-5.1.1-Crash.html:595)
- A /iexploder/testcases/opera
- A /iexploder/testcases/opera/2624-Opera-8.5-Mac_OS_X-Crash.html (from /iexploder/testcases/2624-Opera-8.5-Mac_OS_X-Crash.html:595)
- A /iexploder/testcases/safari
- A /iexploder/testcases/safari/119_4-Safari-Nightly-420+-2005-10-21-Crash.html (from /iexploder/testcases/119_4-Safari-Nightly-420+-2005-10-21-Crash.html:595)
- A /iexploder/testcases/safari/6134_19-Safari-2.0.1-412.5-Crash.html (from /iexploder/testcases/6134_19-Safari-2.0.1-412.5-Crash.html:595)
- A /iexploder/testcases/safari/8386_11-Internet-Explorer-6.0_WinXP-DoS.html (from /iexploder/testcases/8386_11-Internet-Explorer-6.0_WinXP-DoS.html:595)
-
-Reshuffle testcases
-------------------------------------------------------------------------
-r521 | thomas | 2005-11-03 22:01:43 -0500 (Thu, 03 Nov 2005) | 1 line
-Changed paths:
- A /iexploder/testcases/2289-iCab-3.0.1-Crash.html
- A /iexploder/testcases/60253-OmniWeb-5.1.1-Crash.html
-
-add some test cases
-------------------------------------------------------------------------
-r520 | thomas | 2005-11-03 22:01:19 -0500 (Thu, 03 Nov 2005) | 1 line
-Changed paths:
- M /iexploder/htdocs/iexploder.cgi
-
-Add some cute tabs
-------------------------------------------------------------------------
-r508 | thomas | 2005-10-21 15:34:38 -0400 (Fri, 21 Oct 2005) | 1 line
-Changed paths:
- A /iexploder/testcases/165367_15-FireFox-1.4.1-Crash.html (from /iexploder/testcases/165367_15-FireFox-1.4.1-Mac_OS_X-Crash.html:505)
- D /iexploder/testcases/165367_15-FireFox-1.4.1-Mac_OS_X-Crash.html
-
-Crash is not OSX specific
-------------------------------------------------------------------------
-r507 | thomas | 2005-10-21 14:59:41 -0400 (Fri, 21 Oct 2005) | 1 line
-Changed paths:
- M /iexploder/README.txt
-
-Mention the fact that testcases may not be portable across installations
-------------------------------------------------------------------------
-r506 | thomas | 2005-10-21 14:45:48 -0400 (Fri, 21 Oct 2005) | 1 line
-Changed paths:
- M /iexploder/htdocs/index.html
-
-Fix lookup html code
-------------------------------------------------------------------------
-r505 | thomas | 2005-10-21 14:22:10 -0400 (Fri, 21 Oct 2005) | 1 line
-Changed paths:
- A /iexploder/testcases/165367_15-FireFox-1.4.1-Mac_OS_X-Crash.html
-
-QuickDraw crash for Mac OS X
-------------------------------------------------------------------------
-r504 | thomas | 2005-10-21 14:14:34 -0400 (Fri, 21 Oct 2005) | 1 line
-Changed paths:
- A /iexploder/testcases/25057-OmniWeb-5.1.1-Crash.html
-
-New crash
-------------------------------------------------------------------------
-r503 | thomas | 2005-10-21 14:06:45 -0400 (Fri, 21 Oct 2005) | 1 line
-Changed paths:
- A /iexploder/testcases/8386_11-Internet-Explorer-6.0_WinXP-DoS.html
-
-IE DoS
-------------------------------------------------------------------------
-r502 | thomas | 2005-10-21 13:24:02 -0400 (Fri, 21 Oct 2005) | 1 line
-Changed paths:
- M /iexploder/README.txt
- M /iexploder/htdocs/cssvalues.in
- M /iexploder/htdocs/iexploder.cgi
- M /iexploder/htdocs/index.html
- D /iexploder/testcases/100482.html
- D /iexploder/testcases/103399-nscssvaluelist.html
- A /iexploder/testcases/119_4-Safari-Nightly-420+-2005-10-21-Crash.html
- A /iexploder/testcases/2009-iCab-3.0.1-Mac_OS_X-Crash.html
- A /iexploder/testcases/2624-Opera-8.5-Mac_OS_X-Crash.html
- A /iexploder/testcases/502701_7-FireFox-1.4.1-Crash.html
- A /iexploder/testcases/6134_19-Safari-2.0.1-412.5-Crash.html
- D /iexploder/testcases/firefox-caption-iframe-table-47179.html
- D /iexploder/testcases/firefox-caption-marquee-27473.html
- D /iexploder/testcases/firefox-caption-marquee-66937.html
- D /iexploder/testcases/firefox-isindex-18149.html
- D /iexploder/testcases/firefox-visibility-caption-111895.html
-
-1.2 Update, mostly documentation and test cases
-------------------------------------------------------------------------
-r501 | thomas | 2005-10-21 11:41:39 -0400 (Fri, 21 Oct 2005) | 1 line
-Changed paths:
- M /iexploder/tools/osx_last_crash.rb
-
-back to days, filter out synergy
-------------------------------------------------------------------------
-r500 | thomas | 2005-10-21 11:25:28 -0400 (Fri, 21 Oct 2005) | 1 line
-Changed paths:
- M /iexploder/htdocs/cssvalues.in
- M /iexploder/htdocs/iexploder.cgi
- M /iexploder/tools/lasthit.rb
-
-1.2: We now use javascript reloads after 1 second in case the meta breaks (IE)
-------------------------------------------------------------------------
-r499 | thomas | 2005-10-21 08:51:07 -0400 (Fri, 21 Oct 2005) | 1 line
-Changed paths:
- M /iexploder/htdocs/iexploder.cgi
-
-1.1: Fix up our subtest model
-------------------------------------------------------------------------
-r498 | thomas | 2005-10-20 21:55:59 -0400 (Thu, 20 Oct 2005) | 1 line
-Changed paths:
- M /iexploder/htdocs/iexploder.cgi
-
-Support for subtests, and compatibility with mod_ruby
-------------------------------------------------------------------------
-r497 | thomas | 2005-10-20 20:48:59 -0400 (Thu, 20 Oct 2005) | 1 line
-Changed paths:
- M /iexploder/htdocs/cssproperties.in
- M /iexploder/htdocs/cssvalues.in
- M /iexploder/htdocs/htmlattrs.in
- M /iexploder/htdocs/htmlvalues.in
- M /iexploder/htdocs/iexploder.cgi
-
-update to v1.0
-------------------------------------------------------------------------
-r455 | tstrombe | 2005-02-28 08:13:25 -0500 (Mon, 28 Feb 2005) | 1 line
-Changed paths:
- A /iexploder
- A /iexploder/LICENSE.txt
- A /iexploder/README.txt
- A /iexploder/htdocs
- A /iexploder/htdocs/cssproperties.in
- A /iexploder/htdocs/cssvalues.in
- A /iexploder/htdocs/htmlattrs.in
- A /iexploder/htdocs/htmltags.in
- A /iexploder/htdocs/htmlvalues.in
- A /iexploder/htdocs/iexploder.cgi
- A /iexploder/htdocs/index.html
- A /iexploder/testcases
- A /iexploder/testcases/100482.html
- A /iexploder/testcases/103399-nscssvaluelist.html
- A /iexploder/testcases/firefox-caption-iframe-table-47179.html
- A /iexploder/testcases/firefox-caption-marquee-27473.html
- A /iexploder/testcases/firefox-caption-marquee-66937.html
- A /iexploder/testcases/firefox-isindex-18149.html
- A /iexploder/testcases/firefox-visibility-caption-111895.html
- A /iexploder/tools
- A /iexploder/tools/lasthit.rb
- A /iexploder/tools/osx_last_crash.rb
-
-iexploder software
-------------------------------------------------------------------------
diff --git a/WebKitTools/iExploder/LICENSE.txt b/WebKitTools/iExploder/LICENSE.txt
deleted file mode 100644
index 5199718..0000000
--- a/WebKitTools/iExploder/LICENSE.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-#
-# Copyright (c) 2005 Thomas Stromberg <thomas%stromberg.org>
-#
-# This software is provided 'as-is', without any express or implied warranty.
-# In no event will the authors be held liable for any damages arising from the
-# use of this software.
-#
-# Permission is granted to anyone to use this software for any purpose,
-# including commercial applications, and to alter it and redistribute it
-# freely, subject to the following restrictions:
-#
-# 1. The origin of this software must not be misrepresented; you must not
-# claim that you wrote the original software. If you use this software in a
-# product, an acknowledgment in the product documentation would be appreciated
-# but is not required.
-#
-# 2. Altered source versions must be plainly marked as such, and must not be
-# misrepresented as being the original software.
-#
-# 3. This notice may not be removed or altered from any source distribution.
diff --git a/WebKitTools/iExploder/README.txt b/WebKitTools/iExploder/README.txt
deleted file mode 100644
index a941697..0000000
--- a/WebKitTools/iExploder/README.txt
+++ /dev/null
@@ -1,149 +0,0 @@
-iExploder 1.3.2
-===============
-
-Welcome to iExploder. a highly inefficient, but fairly effective web
-browser tester. The code still has a lot of work to be done, but it's
-definitely usable. Here are some notable features:
-
-* Tests all common HTML and CSS tags and attributes, as parsed from
-the KHTML, WebKit and Mozilla source trees, as well as tags for
-Internet Explorer from MSDN. This also includes a few Javascript hooks.
-* Numeric, and String overflow and formatting tests
-* Sequential and Randomized Test Case Generation
-* Test Case Lookups
-* Subtest generation
-
-
-Installation (Standalone)
--------------------------
-Make sure you have Ruby installed (comes with Mac OS X, most Linux
-distributions). See http://www.ruby-lang.org/ if you do not.
-
-If you do not already have a webserver setup, you can use the server
-built into iexploder. Simply go into the htdocs directory and type:
-
-% ruby webserver.rb
-
-A webserver will then start on port 2000 with the iexploder form. If
-port 2000 is not preferable, you can pass it another port on the command
-line:
-
-% ruby webserver.rb 2001
-
-Please note that lasthit.rb does not currently work with the logs output
-from this method. I recommend using a seperate instance/port number
-for each browser you test simultaneous using this method.
-
-
-Installation (External Webserver)
----------------------------------
-If you wish to use an external webserver (required for lasthit.rb use),
-you may do so. IExploder has been tested with apache.
-
-Copy the contents of the htdocs/ folder to any directory served
-by your webserver. Make sure that directory can execute CGI scripts. If
-performance seems to be low, please try using mod_ruby.
-
-
-FAQ:
-----
-1) Are the tests always the same?
-
- The test cases should always be the same on a single installation, but not
-necessarily on different installations of iExploder. Random generator seeds
-may differ between operating systems and platforms. If you alter the tag and
-property counts in config.rb, it will change the test cases as well.
-
-
-2) How do I look up the last successful test for a client?
-
-Use tools/lasthit.rb. When I get a crash, I usually do something like:
-
- % tail -15000 /var/log/apache2/access_log | ./lasthit.rb
-
-Letting you know how many tests and what the last test id was for each
-client tested. You can then try to repeat the test, or go through the
-subtests to see if you can repeat the crash.
-
-
-3) How do subtests work?
-
-If you see a crash on a particular test, and would like to determine the exact
-line that is crashing it, you can use subtests. To do so, go back to the test
-submission form, and start the test from the number that a crash was indicated
-on. Instead of leaving the "subtest" field blank, set it to 1. This will rotate
-through each subtest for a particular test.
-
-Each subtest will rotate through a tag offset and a number of tags to
-garble, which should help you isolate the instance. The number of tags
-used doubles each cycle. Here is an idea of how many subtests to expect
-based on your $HTML_MAX_TAGS settings:
-
-tags subtests
-----------------
-32 138
-48 236
-64 332
-96 558
-128 782
-
-Most of the time you will be able to replicate a crash within the first
-$HTML_MAX_TAGS subtests, but sometimes crashes are due to a combination
-of corrupted tags.
-
-
-4) How come I can't seem to repeat the crash?
-
- Many browser crashes are race conditions that are not easy to repeat. Some
-crashes only happen when going from test 4 -> test 5 -> test 6. If you can't
-repeat the crash through subtests or a lookup of the failing test, try going
-back a few tests.
-
-That said, some crashes are due to race conditions that are very difficult
-to replicate.
-
-
-5) Why did you write this?
-
- I wanted to make sure that FireFox had as many bugs fixed in it as possible
-before the 1.0 release. After 1.0 came out, I kept improving it.
-
-
-6) Why does Internet Explorer run the tests so slowly?
-
- <META> refresh tags are very fragile in Internet Explorer, and can be easily
-be rendered useless by other tags on the page. If this happens, a javascript
-refresh will execute after a 1 second delay.
-
-
-
-7) How do I change the number of tags iExploder tests per page?
-
-See config.rb. I personally recommend 32-128 HTML tags per page. While this
-seems to be a lot to go through when designing a test case, that's why the
-subtest engine was made. Different web browsers will have different
-performance characteristics when it comes to the number of tags per page.
-
-Here are the results with Firefox 2.0b1 (Bon Echo) and the iExploder
-built-in webserver running tests 1-250.
-
-tags seconds pages/second tags/second
------------------------------------------
-32 60 4.0 131
-48 85 2.9 141
-64 95 2.6 168
-96 120 2.1 200 *DEFAULT*
-128 140 1.8 228
-196 228 1.1 210
-256 308 0.8 207
-
-If you find pages/second to be more important than tags/second, I would
-change $HTML_MAX_TAGS to 32. Do keep in mind that large tag counts mean
-longer subtest generation periods.
-
-
-8) What other performance enhancements can I make?
-
-* Before using iExploder, reset your browser history
-* Minimize your browser while iExploder is running
-* If using Apache, make use of mod_ruby
diff --git a/WebKitTools/iExploder/htdocs/config.rb b/WebKitTools/iExploder/htdocs/config.rb
deleted file mode 100644
index d9e7e1b..0000000
--- a/WebKitTools/iExploder/htdocs/config.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-# Configuration for iExploder.. not generally tuned.
-
-$HTML_MAX_TAGS = 96;
-$HTML_MAX_ATTRS = 4;
-$CSS_MAX_PROPS = 5;
-
diff --git a/WebKitTools/iExploder/htdocs/cssproperties.in b/WebKitTools/iExploder/htdocs/cssproperties.in
deleted file mode 100644
index 2eb9e7a..0000000
--- a/WebKitTools/iExploder/htdocs/cssproperties.in
+++ /dev/null
@@ -1,348 +0,0 @@
-# From WebKit svn r24249 (WebCore/css/CSSPropertyNames.in)
--webkit-appearance
--webkit-background-clip
--webkit-background-composite
--webkit-background-origin
--webkit-background-size
--webkit-binding
--webkit-border-bottom-left-radius
--webkit-border-bottom-right-radius
--webkit-border-fit
--webkit-border-horizontal-spacing
--webkit-border-image
--webkit-border-radius
--webkit-border-top-left-radius
--webkit-border-top-right-radius
--webkit-border-vertical-spacing
--webkit-box-align
--webkit-box-direction
--webkit-box-flex
--webkit-box-flex-group
--webkit-box-lines
--webkit-box-ordinal-group
--webkit-box-orient
--webkit-box-pack
--webkit-box-shadow
--webkit-box-sizing
--webkit-column-break-after
--webkit-column-break-before
--webkit-column-break-inside
--webkit-column-count
--webkit-column-gap
--webkit-column-rule
--webkit-column-rule-color
--webkit-column-rule-style
--webkit-column-rule-width
--webkit-column-width
--webkit-columns
--webkit-dashboard-region
--webkit-font-size-delta
--webkit-highlight
--webkit-line-break
--webkit-line-clamp
--webkit-margin-bottom-collapse
--webkit-margin-collapse
--webkit-margin-start
--webkit-margin-top-collapse
--webkit-marquee
--webkit-marquee-direction
--webkit-marquee-increment
--webkit-marquee-repetition
--webkit-marquee-speed
--webkit-marquee-style
--webkit-match-nearest-mail-blockquote-color
--webkit-nbsp-mode
--webkit-padding-start
--webkit-rtl-ordering
--webkit-text-decorations-in-effect
--webkit-text-fill-color
--webkit-text-security
--webkit-text-size-adjust
--webkit-text-stroke
--webkit-text-stroke-color
--webkit-text-stroke-width
--webkit-user-drag
--webkit-user-modify
--webkit-user-select
-background
-background-attachment
-background-color
-background-image
-background-position
-background-position-x
-background-position-y
-background-repeat
-border
-border-bottom
-border-bottom-color
-border-bottom-style
-border-bottom-width
-border-collapse
-border-color
-border-left
-border-left-color
-border-left-style
-border-left-width
-border-right
-border-right-color
-border-right-style
-border-right-width
-border-spacing
-border-style
-border-top
-border-top-color
-border-top-style
-border-top-width
-border-width
-bottom
-caption-side
-clear
-clip
-color
-content
-counter-increment
-counter-reset
-cursor
-direction
-display
-empty-cells
-float
-font
-font-family
-font-size
-font-stretch
-font-style
-font-variant
-font-weight
-height
-left
-letter-spacing
-line-height
-list-style
-list-style-image
-list-style-position
-list-style-type
-margin
-margin-bottom
-margin-left
-margin-right
-margin-top
-max-height
-max-width
-min-height
-min-width
-opacity
-orphans
-outline
-outline-color
-outline-offset
-outline-style
-outline-width
-overflow
-overflow-x
-overflow-y
-padding
-padding-bottom
-padding-left
-padding-right
-padding-top
-page
-page-break-after
-page-break-before
-page-break-inside
-position
-quotes
-resize
-right
-scrollbar-3dlight-color
-scrollbar-arrow-color
-scrollbar-darkshadow-color
-scrollbar-face-color
-scrollbar-highlight-color
-scrollbar-shadow-color
-scrollbar-track-color
-size
-table-layout
-text-align
-text-decoration
-text-indent
-text-line-through
-text-line-through-color
-text-line-through-mode
-text-line-through-style
-text-line-through-width
-text-overflow
-text-overline
-text-overline-color
-text-overline-mode
-text-overline-style
-text-overline-width
-text-shadow
-text-transform
-text-underline
-text-underline-color
-text-underline-mode
-text-underline-style
-text-underline-width
-top
-unicode-bidi
-vertical-align
-visibility
-white-space
-widows
-width
-word-break
-word-spacing
-word-wrap
-z-index
-
-# CSS3 properties - http://www.css3.info/preview/
-background-clip
-background-origin
-border-image
-border-radius
-box-shadow
-box-sizing
-column-count
-column-gap
-column-min-width
-column-rule
-column-rule-color
-column-rule-style
-column-rule-width
-column-space-distribution
-column-span
-column-width
-column-width-policy
-
-# All of the following are from khtml's cssproperties.in as of 19oct2004, but are no longer in WebKit
--khtml-border-horizontal-spacing
--khtml-border-vertical-spacing
--khtml-flow-mode
--khtml-marquee
--khtml-marquee-direction
--khtml-marquee-increment
--khtml-marquee-repetition
--khtml-marquee-speed
--khtml-marquee-style
--khtml-text-decoration-color
--khtml-user-input
-scrollbar-base-color
-
-# Internet Explorer 6.0 - http://msdn.microsoft.com/workshop/author/css/reference/attributes.asp
-filter:progid:
-filter:
-ime-mode
-layout-flow
-layout-grid
-layout-grid-char
-layout-grid-line
-layout-grid-mode
-layout-grid-type
-line-break
-overflow-x
-overflow-y
-pagebreakafter
-pagebreakbefore
-ruby-align
-ruby-overhang
-ruby-position
-text-autospace
-text-justify
-text-kashida-space
-text-underline-position
-word-break
-writing-mode
-zoom
-
-# from http://msdn.microsoft.com/library/default.asp?url=/workshop/author/filter/reference/reference.asp
-filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(
-filter:progid:DXImageTransform.Microsoft.Blur(
-filter:progid:DXImageTransform.Microsoft.MotionBlur(
-filter:progid:DXImageTransform.Microsoft.Gradient(
-filter:progid:DXImageTransform.Microsoft.Pixelate(
-
-# From Mozilla Firefox CVS on 2006-04-15 (layout/style/nsCSSPropList.h)
-# grep "^CSS_PROP" nsCSSPropList.h | grep -v "_SVG" |cut -d, -f1 | cut -d\( -f2 | sort
-++ /tmp/moz Tue Apr 18 13:45:30 2006
--moz-appearance
--moz-background-clip
--moz-background-inline-policy
--moz-background-origin
--moz-binding
--moz-border-bottom-colors
--moz-border-left-colors
--moz-border-radius
--moz-border-radius-bottomleft
--moz-border-radius-bottomright
--moz-border-radius-topleft
--moz-border-radius-topright
--moz-border-right-colors
--moz-border-top-colors
--moz-box-align
--moz-box-direction
--moz-box-flex
--moz-box-ordinal-group
--moz-box-orient
--moz-box-pack
--moz-box-sizing
--moz-column-count
--moz-column-gap
--moz-column-width
--moz-float-edge
--moz-force-broken-image-icon
--moz-image-region
--moz-margin-end
--moz-margin-start
--moz-outline-radius
--moz-outline-radius-bottomleft
--moz-outline-radius-bottomright
--moz-outline-radius-topleft
--moz-outline-radius-topright
--moz-padding-end
--moz-padding-start
--moz-user-focus
--moz-user-input
--moz-user-modify
--moz-user-select
--x-background-x-position
--x-background-y-position
-azimuth
-cue
-cue-after
-cue-before
-elevation
-font-size-adjust
-margin-end-value
-margin-left-ltr-source
-margin-left-rtl-source
-margin-left-value
-margin-right-ltr-source
-margin-right-rtl-source
-margin-right-value
-margin-start-value
-marker
-marker-offset
-marks
-padding-end-value
-padding-left-ltr-source
-padding-left-rtl-source
-padding-left-value
-padding-right-ltr-source
-padding-right-rtl-source
-padding-right-value
-padding-start-value
-pause
-pause-after
-pause-before
-pitch
-pitch-range
-richness
-speak
-speak-header
-speak-numeral
-speak-punctuation
-speech-rate
-stress
-voice-family
-volume
diff --git a/WebKitTools/iExploder/htdocs/cssvalues.in b/WebKitTools/iExploder/htdocs/cssvalues.in
deleted file mode 100644
index c19f78f..0000000
--- a/WebKitTools/iExploder/htdocs/cssvalues.in
+++ /dev/null
@@ -1,339 +0,0 @@
-"Trebuchet MS",Verdana, Arial, Helvetica, sans-serif
-#339933 !important !important !important
-#9999999999999999999999999999999999999999999
--5, -5, -5
--9999%
--999999999999999999999999999%
--999999999999999999999999999em
--999999999999999999999999999px
--9999em
--9999px
--webkit-activelink
--webkit-auto
--webkit-baseline-middle
--webkit-body
--webkit-box
--webkit-center
--webkit-focus-ring-color
--webkit-inline-box
--webkit-left
--webkit-link
--webkit-marquee
--webkit-nowrap
--webkit-overlay
--webkit-right
--webkit-text
--webkit-xxx-large
-0
-0 auto
-0 fixed
-2%
-90000000000000000000000000000000000000000000%
-9999999999999999999999
-99999999999999999999999999999999999999 auto
-99999999999999999999999999999999999999999999px
-999999px solid #fff
-above
-absolute
-activeborder
-activecaption
-after-white-space
-ahead
-alternate
-always
-appworkspace
-aqua
-armenian
-attr("ATTRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
-auto
-avoid
-background
-backwards
-baseline
-below
-bidi-override
-black
-blink
-block
-block clear
-block width
-block-axis
-blue
-bold
-bolder
-border
-border-box
-both
-bottom
-break-word
-button
-button-bevel
-buttonface
-buttonhighlight
-buttonshadow
-buttontext
-capitalize
-caption
-captiontext
-caret
-center
-checkbox
-circle
-cjk-ideographic
-clip
-clip:rect(-0px -2000000px -200000px -0px)
-clip:rect(0px 2000000px 200000px 0px)
-close-quote
-collapse
-compact
-condensed
-content
-content-box
-continuous
-crop
-cross
-crosshair
-cursive
-dashed
-decimal
-decimal-leading-zero
-default
-disc
-discard
-dot-dash
-dot-dot-dash
-dotted
-double
-down
-e-resize
-element
-ellipsis
-embed
-end
-expanded
-extra-condensed
-extra-expanded
-fantasy
-fast
-fixed
-forwards
-fuchsia
-georgian
-gray
-graytext
-green
-grey
-groove
-hand
-hebrew
-help
-helvetica, arial, Courier New, Courier, Mono, Blah, Blah, Blah
-hidden
-hide
-higher
-highlight
-highlighttext
-hiragana
-hiragana-iroha
-horizontal
-icon
-ignore
-inactiveborder
-inactivecaption
-inactivecaptiontext
-infinite
-infobackground
-infotext
-inherit
-initial
-inline
-inline-axis
-inline-block
-inline-table
-inset
-inside
-intrinsic
-invert
-italic
-justify
-katakana
-katakana-iroha
-landscape
-large
-larger
-left
-level
-lighter
-lime
-line-through
-list-item
-listbox
-listitem
-logical
-loud
-lower
-lower-alpha
-lower-greek
-lower-latin
-lower-roman
-lowercase
-ltr
-marker
-maroon
-match
-medium
-menu
-menulist
-menulist-button
-menulist-text
-menulist-textfield
-menutext
-message-box
-middle
-min-intrinsic
-mix
-monospace
-move
-multiple
-n-resize
-narrower
-navy
-ne-resize
-no-close
-no-close-quote
-no-open-quote
-no-repeat
-none
-normal
-normal !important
-nowrap
-nw-resize
-oblique
-olive
-once
-open-quote
-orange
-outset
-outside
-overline
-padding
-pointer
-portrait
-pre
-pre-line
-pre-wrap
-purple
-push-button
-radio
-read-only
-read-write
-read-write-plaintext-only
-red
-relative
-repeat
-repeat-x
-repeat-y
-reverse
-rgb(9999999999, 999999999, 9999999999999)
-ridge
-right
-round
-rtl
-run-in
-s-resize
-sans-serif
-scroll
-scrollbar
-scrollbarbutton-down
-scrollbarbutton-left
-scrollbarbutton-right
-scrollbarbutton-up
-scrollbargripper-horizontal
-scrollbargripper-vertical
-scrollbarthumb-horizontal
-scrollbarthumb-vertical
-scrollbartrack-horizontal
-scrollbartrack-vertical
-se-resize
-searchfield
-searchfield-close
-searchfield-results
-semi-condensed
-semi-expanded
-separate
-serif
-show
-silver
-single
-skip-white-space
-slide
-slider-horizontal
-slider-vertical
-sliderthumb-horizontal
-sliderthumb-vertical
-slow
-small
-small-caps
-small-caption
-smaller
-solid
-space
-square
-square-button
-start
-static
-status-bar
-stretch
-sub
-super
-sw-resize
-table
-table-caption
-table-cell
-table-column
-table-column-group
-table-footer-group
-table-header-group
-table-row
-table-row-group
-teal
-text
-text-bottom
-text-top
-textfield
-thick
-thick dashed yellow
-thick dotted blue
-thin
-threeddarkshadow
-threedface
-threedhighlight
-threedlightshadow
-threedshadow
-top
-transparent
-ultra-condensed
-ultra-expanded
-underline
-unfurl
-up
-upper-alpha
-upper-latin
-upper-roman
-uppercase
-vertical
-visible
-visual
-w-resize
-wait
-wave
-white
-wider
-window
-windowframe
-windowtext
-x-large
-x-small
-xx-large
-xx-small
-yellow
diff --git a/WebKitTools/iExploder/htdocs/htmlattrs.in b/WebKitTools/iExploder/htdocs/htmlattrs.in
deleted file mode 100644
index ad92384..0000000
--- a/WebKitTools/iExploder/htdocs/htmlattrs.in
+++ /dev/null
@@ -1,259 +0,0 @@
-# the following come from WebCore 2006-04-15 (WebKit/WebCore/html/HTMLNames.h)
-
-abbr
-accept
-accept_charset
-accesskey
-action
-align
-alink
-alt
-archive
-autocomplete
-autosave
-axis
-background
-behavior
-bgcolor
-bgproperties
-border
-bordercolor
-cellborder
-cellpadding
-cellspacing
-challenge
-char
-charoff
-charset
-checked
-cite
-class
-classid
-clear
-code
-codebase
-codetype
-color
-cols
-colspan
-compact
-composite
-content
-contenteditable
-coords
-data
-datetime
-declare
-defer
-dir
-direction
-disabled
-enctype
-face
-for
-frame
-frameborder
-headers
-height
-hidden
-href
-hreflang
-hspace
-http_equiv
-id
-incremental
-ismap
-keytype
-label
-lang
-language
-left
-leftmargin
-link
-longdesc
-loop
-marginheight
-marginwidth
-max
-maxlength
-mayscript
-media
-method
-min
-multiple
-name
-nohref
-noresize
-noshade
-nowrap
-object
-onabort
-onbeforecopy
-onbeforecut
-onbeforepaste
-onbeforeunload
-onblur
-onchange
-onclick
-oncontextmenu
-oncopy
-oncut
-ondblclick
-ondrag
-ondragend
-ondragenter
-ondragleave
-ondragover
-ondragstart
-ondrop
-onerror
-onfocus
-oninput
-onkeydown
-onkeypress
-onkeyup
-onload
-onmousedown
-onmousemove
-onmouseout
-onmouseover
-onmouseup
-onmousewheel
-onpaste
-onreset
-onresize
-onscroll
-onsearch
-onselect
-onselectstart
-onsubmit
-onunload
-pagex
-pagey
-placeholder
-plain
-pluginpage
-pluginspage
-pluginurl
-precision
-profile
-prompt
-readonly
-rel
-results
-rev
-rows
-rowspan
-rules
-scheme
-scope
-scrollamount
-scrolldelay
-scrolling
-selected
-shape
-size
-span
-src
-standby
-start
-style
-summary
-tabindex
-tableborder
-target
-text
-title
-top
-topmargin
-truespeed
-type
-usemap
-valign
-value
-valuetype
-version
-vlink
-vspace
-width
-wrap
-
-# was in khtml in 2004, but is no longer in WebCore
-accept-charset
-html
-http-equiv
-nosave
-oversrc
-unknown
-visibility
-z-index
-
-# From Mozilla CVS 2006-04-15 (mozilla/layout/style/xbl-marquee)
-bounce
-finish
-onbounce
-onfinish
-onstart
-
-
-# IE specific, from msdn.microsoft.com/workshop/author/dhtml/reference/properties
-acceptcharset
-allowtransparency
-balance
-choff
-datafld
-dataformatas
-datapagesize
-datasrc
-dynsrc
-framespacing
-galleryimg
-hidefocus
-methods
-scroll
-units
-urn
-volume
-
-# From Mozilla CVS 2006-04-15 (mozilla/content/base/src/nsGkAtomList.h)
-# To get these, I used:
-# ggrep -r "Get.*Attr" * | perl -ne 'if (/nsHTMLAtoms::(\w+)/) { \
-# system("grep \\($1, content/base/src/nsGkAtomList.h"); }' \
-# | cut -d\" -f2 | sort -u
-autocheck
-base
-bottommargin
-event
-font-weight
-handler
-layout
-observer
-ping
-point-size
-rightmargin
-variable
-
-# events from Mozilla CVS 2006-04-15 (mozilla/content/base/src/nsGkAtomList.h)
-# cat nsGkAtomList.h | grep GK_ATOM | cut -d\" -f2 | egrep "^on[a-z]+"
-onzoom
-onunderflow
-ontext
-onset
-onpopupshown
-onpopupshowing
-onpopuphiding
-onpopuphidden
-onpaint
-onpageshow
-onpagehide
-onoverflowchanged
-onoverflow
-onget
-ondraggesture
-ondragexit
-ondragdrop
-oncompositionstart
-oncompositionend
-oncommandupdate
-oncommand
-onclose
diff --git a/WebKitTools/iExploder/htdocs/htmltags.in b/WebKitTools/iExploder/htdocs/htmltags.in
deleted file mode 100644
index acac8f3..0000000
--- a/WebKitTools/iExploder/htdocs/htmltags.in
+++ /dev/null
@@ -1,128 +0,0 @@
-# The following come from khtml's htmltags.in from 19oct2004
-# From WebCore svn tree, 2006-04-18 (WebKit/WebCore/html/HTMLNames.h)
-
-a
-abbr
-acronym
-address
-applet
-area
-b
-base
-basefont
-bdo
-big
-blockquote
-body
-br
-button
-canvas
-caption
-center
-cite
-code
-col
-colgroup
-dd
-del
-dfn
-dir
-div
-dl
-dt
-em
-embed
-fieldset
-font
-form
-frame
-frameset
-h1
-h2
-h3
-h4
-h5
-h6
-head
-hr
-html
-i
-iframe
-image
-img
-input
-ins
-isindex
-kbd
-keygen
-label
-layer
-legend
-li
-link
-listing
-map
-marquee
-menu
-meta
-nobr
-noembed
-noframes
-nolayer
-noscript
-object
-ol
-optgroup
-option
-p
-param
-plaintext
-pre
-q
-s
-samp
-script
-select
-small
-span
-strike
-strong
-style
-sub
-sup
-table
-tbody
-td
-textarea
-tfoot
-th
-thead
-title
-tr
-tt
-u
-ul
-var
-wbr
-xmp
-
-# This was in khtml in 10-2004
-ilayer
-
-# Additions from Mozilla CVS, 2006-04-18.
-# mozilla/parser/htmlparser/public/nsHTMLTagList.h
-bgsound
-blink
-multicol
-spacer
-
-# The following tags used to be in Mozilla in 10-2004, now removed
-counter
-endnote
-parsererror
-server
-sound
-sourcetext
-
-# From Internet Explorer - http://msdn.microsoft.com/workshop/author/html/reference/elements.asp
-xml
diff --git a/WebKitTools/iExploder/htdocs/htmlvalues.in b/WebKitTools/iExploder/htdocs/htmlvalues.in
deleted file mode 100644
index d54984f..0000000
--- a/WebKitTools/iExploder/htdocs/htmlvalues.in
+++ /dev/null
@@ -1,35 +0,0 @@
-# Many of the following are from mangleme.cgi.c's make_up_value() function
-#
-*
-_blank
-_parent
-_self
-_top
-about:
-about:plugins
-file:
-http:
-jar:
-javascript:
-left
-top
-%n%n%n%n%n
-ftp:
-right
-wysiwyg:
-bottom
-none
-ldap:
-%i %i
-999999999,9999999,999999999,9999999,999999999,9999999,999999999,9999999,9
-999999999,9999999,9
-999999999,9999999
-true
-false
-_SEARCH
-javascript
-off
-on
-vbscript
-password
-image
diff --git a/WebKitTools/iExploder/htdocs/iexploder.cgi b/WebKitTools/iExploder/htdocs/iexploder.cgi
deleted file mode 100755
index 89e099c..0000000
--- a/WebKitTools/iExploder/htdocs/iexploder.cgi
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/usr/bin/ruby
-# iExploder - Generates bad HTML files to perform QA for web browsers.
-# Developed for the Mozilla Foundation.
-#####################
-#
-# Copyright (c) 2006 Thomas Stromberg <thomas%stromberg.org>
-#
-# This software is provided 'as-is', without any express or implied warranty.
-# In no event will the authors be held liable for any damages arising from the
-# use of this software.
-#
-# Permission is granted to anyone to use this software for any purpose,
-# including commercial applications, and to alter it and redistribute it
-# freely, subject to the following restrictions:
-#
-# 1. The origin of this software must not be misrepresented; you must not
-# claim that you wrote the original software. If you use this software in a
-# product, an acknowledgment in the product documentation would be appreciated
-# but is not required.
-#
-# 2. Altered source versions must be plainly marked as such, and must not be
-# misrepresented as being the original software.
-#
-# 3. This notice may not be removed or altered from any source distribution.
-
-require 'cgi';
-require 'iexploder';
-require 'config';
-
-### THE INTERACTION ##################################
-ie = IExploder.new($HTML_MAX_TAGS, $HTML_MAX_ATTRS, $CSS_MAX_PROPS)
-ie.readTagFiles()
-
-cgi = CGI.new("html4");
-ie.url=ENV['SCRIPT_NAME'] || '?'
-ie.test_num = cgi.params['test'][0].to_i
-ie.subtest_num = cgi.params['subtest'][0].to_i || 0
-ie.random_mode = cgi.params['random'][0]
-ie.lookup_mode = cgi.params['lookup'][0]
-ie.stop_num = cgi.params['stop'][0].to_i || 0
-ie.setRandomSeed
-
-cgi.out('type' => 'text/html') do
- ie.buildPage()
-end
diff --git a/WebKitTools/iExploder/htdocs/iexploder.rb b/WebKitTools/iExploder/htdocs/iexploder.rb
deleted file mode 100644
index eee3e38..0000000
--- a/WebKitTools/iExploder/htdocs/iexploder.rb
+++ /dev/null
@@ -1,337 +0,0 @@
-# iExploder - Generates bad HTML files to perform QA for web browsers.
-# Developed for the Mozilla Foundation.
-#####################
-#
-# Copyright (c) 2006 Thomas Stromberg <thomas%stromberg.org>
-#
-# This software is provided 'as-is', without any express or implied warranty.
-# In no event will the authors be held liable for any damages arising from the
-# use of this software.
-#
-# Permission is granted to anyone to use this software for any purpose,
-# including commercial applications, and to alter it and redistribute it
-# freely, subject to the following restrictions:
-#
-# 1. The origin of this software must not be misrepresented; you must not
-# claim that you wrote the original software. If you use this software in a
-# product, an acknowledgment in the product documentation would be appreciated
-# but is not required.
-#
-# 2. Altered source versions must be plainly marked as such, and must not be
-# misrepresented as being the original software.
-#
-# 3. This notice may not be removed or altered from any source distribution.
-
-$VERSION="1.3.2"
-
-class IExploder
- attr_accessor :test_num, :subtest_num, :lookup_mode, :random_mode, :url
- attr_accessor :offset, :lines, :stop_num
-
- def initialize(max_tags, max_attrs, max_props)
- @htmlMaxTags = max_tags
- @htmlMaxAttrs = max_attrs
- @cssMaxProps = max_props
- @mangledTagTotal = 0
- @stop_num = 0
- end
-
- def setRandomSeed
- if @test_num > 0
- srand(@test_num)
- else
- srand
- end
- end
-
-
- def readTagFiles
- # These if statements are so that mod_ruby doesn't have to reload the files
- # each time
-
- if (! @cssTags)
- @cssTags = readTagFile('cssproperties.in');
- end
-
- if (! @htmlTags)
- @htmlTags = readTagFile('htmltags.in');
- end
- if (! @htmlAttr)
- @htmlAttr = readTagFile('htmlattrs.in');
- end
-
- if (! @htmlValues)
- @htmlValues = readTagFile('htmlvalues.in');
- end
-
- if (! @cssValues)
- @cssValues = readTagFile('cssvalues.in');
- end
-
- end
-
-
- def readTagFile(filename)
- list = Array.new
- File.new(filename).readlines.each { |line|
- line.chop!
-
- # Don't include comments.
- if (line !~ /^# /) && (line.length > 0)
- list << line
- end
- }
- return list
- end
-
- # based on make_up_value, essentially.
- def inventValue
- value = rand(19);
- case value
- when 1..3 then return (@htmlValues[rand(@htmlValues.length)])
- when 4..5 then return (@htmlValues[rand(@htmlValues.length)] + inventValue())
- when 6 then return (@htmlValues[rand(@htmlValues.length)] + "//" + inventValue())
- when 7 then return ''
- # this may return negative argument?
- when 8..10 then return rand(255).chr * (rand(256)+8)
- when 11 then return rand(255).chr * (rand(2048)+8)
- when 12 then return "#" + rand(999999).to_s
- when 13 then return rand(999999).to_s + "%"
- when 14..15 then return "&" + rand(999999).to_s + ";"
- # filters
- when 16 then
- return inventValue() + "=" + inventValue()
-
- # this my return undefined method + for nil:NilClass
- when 17 then return inventValue() + "," + inventValue()
- else
- if rand(5) > 3
- return "-" + rand(999999).to_s
- else
- return rand(999999).to_s
- end
- end
- end
-
- # based on make_up_value, essentially.
- def inventCssValue(tag)
- value = rand(23);
- case value
- when 1..10 then return @cssValues[rand(@cssValues.length)]
- when 11 then return ''
- when 12 then return rand(255).chr * (rand(8192)+8)
- when 13
- length = rand(1024) + 8
- return (rand(255).chr * length) + " " + (rand(255).chr * length) + " " + (rand(255).chr * length)
- when 14 then return (rand(255).chr * (rand(1024)+3)) + "px"
- when 15 then return (rand(255).chr * (rand(1024)+3)) + "em"
- when 16 then return "url(" + inventValue() + ")"
- when 17..18 then return "#" + rand(999999999).to_s
- when 19 then return "-" + rand(99999999).to_s
- else return rand(99999999).to_s;
- end
- end
-
-
- def mangleTag(tag)
- @mangledTagTotal += 1
- out = ''
-
- # 20% chance of closing a tag instead of opening it. This
- # still counts against @mangledTagTotal, however.
- if rand(10) > 8
- out = "</" + tag + ">"
- return out
- end
-
- # we're opening it.
- out = "<" + tag
-
- # forgot the space between the tag and the attributes
- if rand(15) > 1
- out << ' '
- end
-
- attrNum = rand(@htmlMaxAttrs) + 1
-
- 1.upto(attrNum) {
- attr = @htmlAttr[rand(@htmlAttr.length)]
-
- out << attr
-
- # 7.5% of the time we skip the = sign. Don't prefix it
- # if the attribute ends with a ( however.
-
-
- if rand(15) > 1
- out << '='
- end
-
- # sometimes quote it, sometimes not. I doubt the importance
- # of this test, but mangleme-1.2 added it, and adding more
- # random-ness never hurt anything but time. I'll do it less often.
- quote = rand(2)
- if (quote > 1)
- out << "\""
- end
-
- out << inventValue()
-
- # end the quote when you are done
- if (quote > 1)
- out << "\" "
- end
-
- # 5% chance we skip the space at the end of the name
- if rand(20) > 1
- out << ' '
- end
-
- }
-
- # CSS styles!
- if rand(4) > 1
- out << " style=\""
- 1.upto(rand(@cssMaxProps)+1) {
- out << @cssTags[rand(@cssTags.length)]
-
- # very small chance we let the tag run on.
- if rand(50) > 1
- out << ": "
- end
-
- out << inventCssValue(tag)
- # we almost always put the ; there.
- if rand(50) > 1
- out << '; '
- end
- }
- out << "\""
- end
-
- out << ">\n"
-
- # support our local troops!
- if (@subtest_num > 0) && filterSubTest()
- if tag =~ /html|body|head/
- return '<' + tag + '>'
- else
- return "<x-#@mangledTagTotal>\n"
- end
- else
- return out
- end
- end
- #end
-
- def filterSubTest()
- result = 1
- if (@mangledTagTotal >= @offset) && (@mangledTagTotal < (@offset + @lines))
- result = nil
- end
- return result
- end
-
- def nextTestNum()
- if random_mode
- n = rand(99999999)
- else
- if @test_num
- n = @test_num + 1
- else
- n = 1
- end
- end
- return n
- end
-
- # If we are at line 30 with 8 extra lines, there is no point to try line 31
- # with 8 lines as well.. skip back to 1 and bump up the line count.
- def nextSubTestNum()
- if (@offset + @lines) > @htmlMaxTags
- nextNum = ((@lines * 2 -1)) * @htmlMaxTags
- else
- nextNum = @subtest_num + 1
- end
- return nextNum
- end
-
-
- def buildPage
- if (! @test_num) || (@test_num < 1)
- @test_num = 1
- end
- next_num=nextTestNum()
- @lines = @subtest_num.div(@htmlMaxTags) + 1
- @offset = @subtest_num.modulo(@htmlMaxTags)
-
- # building the HTML
- bodyText = mangleTag('html')
- bodyText << "\n<head>\n"
-
- # Only do redirects if lookup=1 has not been specified.
- if (! @lookup_mode) && (@lines <= @htmlMaxTags) && (@stop_num != @test_num)
- newpage = @url + "?"
- if @subtest_num > 0
- newpage << "test=" << @test_num.to_s << "&subtest=" << nextSubTestNum().to_s
- else
- newpage << "test=" << next_num.to_s
- end
-
- if @random_mode
- newpage << "&random=1"
- end
-
- if @stop_num > 0
- newpage << "&stop=" << @stop_num.to_s
- end
-
- bodyText << "\t<META HTTP-EQUIV=\"Refresh\" content=\"0;URL=#{newpage}\">\n"
- # use both techniques, because you never know how you might be corrupting yourself.
- bodyText << "\t<script language=\"javascript\">setTimeout('window.location=\"#{newpage}\"', 1000);</script>\n"
- end
-
- bodyText << "\t" << mangleTag('meta')
- bodyText << "\t" << mangleTag('meta')
- bodyText << "\t" << mangleTag('link')
-
- bodyText << "\t<title>[#@test_num] iExploder #{$VERSION} - #{inventValue()}</title>\n"
- bodyText << "</head>\n\n"
-
- # What tags will we be messing with ######################
- tagList = [ 'body']
-
- # we already have 5 tags?
- 1.upto(@htmlMaxTags - 5 ) { tagList << @htmlTags[rand(@htmlTags.length)] }
-
- tagList.each { |tag|
- bodyText << mangleTag(tag)
- bodyText << inventValue() + "\n"
- }
- bodyText << "</body>\n</html>"
- end
-end
-
-
-
-if $0 == __FILE__
- max=ARGV[0].to_i
- puts "testing #{max} tags"
- test = IExploder.new(max, 5, 5)
- test.readTagFiles()
- test.test_num=1
- test.subtest_num=1
- counter=0
- test.lines=0
-
- while test.lines < max
- test.lines = test.subtest_num.div(max) + 1
- test.offset = test.subtest_num.modulo(max)
- test.subtest_num=test.nextSubTestNum
- counter = counter + 1
- puts "[#{counter}] subtest #{test.subtest_num} is #{test.lines} lines with #{test.offset} offset"
- end
-
- puts "for #{max} tests, you will have #{counter} iterations until #{test.subtest_num}"
-end
-
diff --git a/WebKitTools/iExploder/htdocs/index.html b/WebKitTools/iExploder/htdocs/index.html
deleted file mode 100644
index 849bc6b..0000000
--- a/WebKitTools/iExploder/htdocs/index.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
- <title>iExploder 1.3.2</title>
-</head>
-<body>
-<h2>iExploder: Web Browser Quality Assurance Tester</h2>
-<small>Written by <a href="http://toadstool.se/">Thomas Str&ouml;mberg</a> for the
-<a href="http://www.mozilla.org/firefox/">Mozilla FireFox</a> project</small>
-
-
-<ul>
- <li><a href="iexploder.cgi">Start test sequence from the beginning!</a></li>
- <li><a href="iexploder.cgi?random=1">Start test sequence in random</a></li>
- <li>Start testing from a test number:
- <form method="get" action="iexploder.cgi" name="test">
- Test: <input size="9" name="test" value="1"> Subtest: <input size="2" name="subtest" value="">
- <input value="Start" type="submit">
- </form>
- </li>
-
- <li>Lookup a single test number:
- <form method="get" action="iexploder.cgi" name="test">
- <input type="hidden" name="lookup" value="1">
- Test: <input size="9" name="test" value="1"> Subtest: <input size="2" name="subtest" value="">
- <input value="Lookup" type="submit"></form>
- </li>
-</ul>
-
-If your browser crashes, please contact thomas%stromberg.org!
-
-</body>
-</html>
-
diff --git a/WebKitTools/iExploder/htdocs/webserver.rb b/WebKitTools/iExploder/htdocs/webserver.rb
deleted file mode 100755
index 5176172..0000000
--- a/WebKitTools/iExploder/htdocs/webserver.rb
+++ /dev/null
@@ -1,75 +0,0 @@
-#!/usr/bin/ruby
-# iExploder - Generates bad HTML files to perform QA for web browsers.
-# Developed for the Mozilla Foundation.
-#####################
-#
-# Copyright (c) 2006 Thomas Stromberg <thomas%stromberg.org>
-#
-# This software is provided 'as-is', without any express or implied warranty.
-# In no event will the authors be held liable for any damages arising from the
-# use of this software.
-#
-# Permission is granted to anyone to use this software for any purpose,
-# including commercial applications, and to alter it and redistribute it
-# freely, subject to the following restrictions:
-#
-# 1. The origin of this software must not be misrepresented; you must not
-# claim that you wrote the original software. If you use this software in a
-# product, an acknowledgment in the product documentation would be appreciated
-# but is not required.
-#
-# 2. Altered source versions must be plainly marked as such, and must not be
-# misrepresented as being the original software.
-#
-# 3. This notice may not be removed or altered from any source distribution.
-
-require 'webrick'
-require 'iexploder';
-require 'config';
-
-include WEBrick
-### THE INTERACTION ##################################
-$ie_preload = IExploder.new($HTML_MAX_TAGS, $HTML_MAX_ATTRS, $CSS_MAX_PROPS)
-$ie_preload.readTagFiles()
-$ie_preload.url='/iexploder.cgi'
-
-if ARGV[0]
- port = ARGV[0].to_i
-else
- port = 2000
-end
-
-puts "* iExploder #{$VERSION} will be available at http://localhost:#{port}"
-puts "* Max Tags: #$HTML_MAX_TAGS Max Attrs: #$HTML_MAX_ATTRS Max Props: #$CSS_MAX_PROPS"
-puts
-
-s = HTTPServer.new( :Port => port )
-class IEServlet < HTTPServlet::AbstractServlet
- def do_GET(req, res)
- ie = $ie_preload.dup
- ie.test_num = req.query['test'].to_i
- ie.subtest_num = req.query['subtest'].to_i || 0
- ie.random_mode = req.query['random']
- ie.lookup_mode = req.query['lookup']
- ie.stop_num = req.query['stop'].to_i
- ie.setRandomSeed
-
- res['Content-Type'] = 'text/html'
- res.body = ie.buildPage()
- end
-end
-
-class IEForm < HTTPServlet::AbstractServlet
- def do_GET(req, res)
- res['Content-Type'] = 'text/html'
- res.body = File.open("index.html").readlines.join("\n")
- end
-end
-
-
-
-s.mount("/iexploder.cgi", IEServlet)
-s.mount("/", IEForm)
-trap("INT") { s.shutdown }
-
-s.start
diff --git a/WebKitTools/iExploder/tools/lasthit.rb b/WebKitTools/iExploder/tools/lasthit.rb
deleted file mode 100755
index b569deb..0000000
--- a/WebKitTools/iExploder/tools/lasthit.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/usr/bin/ruby
-# lasthit, part of iExploder
-#
-# Shows statistics about recent agents that have tested with iExploder.
-# It takes all or part of an apache logfile via stdin, and outputs a list
-# of all the agents who tested within that section, what their last test
-# was, and how many tests they have done.
-
-# The usefulness is finding out where a browser crashed.
-
-
-hostHash = Hash.new
-
-if (ARGV[0])
- file = File.open(ARGV[0])
-else
- file = $stdin
-end
-
-file.readlines.each { |line|
- if (line =~ /^(.*?) .*iexploder.*?test=(\d+).* HTTP.* \"(.*?)\"$/)
- host = $1
- testnum = $2
- agent = $3
- if (! hostHash[host])
- hostHash[host] = Hash.new
- end
- if (! hostHash[host][agent])
- hostHash[host][agent] = Hash.new
- hostHash[host][agent]['total'] = 0
- end
-
- hostHash[host][agent]['last'] = testnum
- if line =~ /subtest=(\d+)/
- hostHash[host][agent]['subtest'] = $1
- else
- hostHash[host][agent]['subtest'] = ''
- end
- hostHash[host][agent]['total'] = hostHash[host][agent]['total'] + 1
- end
-}
-
-printf("%14.14s | %8.8s | %3.3s | %8.8s | %s\n",
- "IP", "Test", "SubTest", "Total", "Agent")
-puts "---------------------------------------------------------------------------"
-hostHash.each_key { |host|
-
- hostHash[host].each_key { |agent|
- printf("%14.14s | %8.8s | %3.3s | %8.8s | %s\n",
- host, hostHash[host][agent]['last'], hostHash[host][agent]['subtest'], hostHash[host][agent]['total'], agent);
- }
-}
-
diff --git a/WebKitTools/iExploder/tools/osx_last_crash.rb b/WebKitTools/iExploder/tools/osx_last_crash.rb
deleted file mode 100755
index 5b62c6d..0000000
--- a/WebKitTools/iExploder/tools/osx_last_crash.rb
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/usr/bin/ruby
-# Gives you information about the most recent crash for each application
-# that has crashed within the last 2 days
-
-$LogDir=ENV['HOME'] + '/Library/Logs/CrashReporter'
-$Days=1
-$StackCount=5
-
-files=`find #$LogDir -mtime -#$Days -type f | grep -v synergy`
-files.each { |filename|
- filename.chop!
- record = 0
- date=''
- stackTrace = []
-
- File.open(filename).readlines.each { |line|
- #puts line
-
- if line =~ /^Date.*(200.*)/
- date = $1
- end
-
- if line =~ /^Thread \d+ Crashed/
- record = 1
- # reset the stack trace
- stackTrace = []
- end
-
- if record
- stackTrace << line
- record = record + 1
-
- # stop recording after $StackCount lines
- if record > ($StackCount + 2)
- record = nil
- end
- end
- }
-
- puts File.basename(filename) + " - " + date
- puts "==================================================="
- stackTrace.each { |line|
- puts line
- }
- puts ""
-}
-
-
diff --git a/WebKitTools/iExploder/tools/showtest.rb b/WebKitTools/iExploder/tools/showtest.rb
deleted file mode 100755
index af6b101..0000000
--- a/WebKitTools/iExploder/tools/showtest.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/bin/ruby
-# showtest.rb - simple CLI interface to grab a testcase
-#####################
-#
-# Copyright (c) 2006 Thomas Stromberg <thomas%stromberg.org>
-#
-# This software is provided 'as-is', without any express or implied warranty.
-# In no event will the authors be held liable for any damages arising from the
-# use of this software.
-#
-# Permission is granted to anyone to use this software for any purpose,
-# including commercial applications, and to alter it and redistribute it
-# freely, subject to the following restrictions:
-#
-# 1. The origin of this software must not be misrepresented; you must not
-# claim that you wrote the original software. If you use this software in a
-# product, an acknowledgment in the product documentation would be appreciated
-# but is not required.
-#
-# 2. Altered source versions must be plainly marked as such, and must not be
-# misrepresented as being the original software.
-#
-# 3. This notice may not be removed or altered from any source distribution.
-
-Dir.chdir('../htdocs')
-require 'iexploder';
-require 'config';
-
-### THE INTERACTION ##################################
-ie = IExploder.new($HTML_MAX_TAGS, $HTML_MAX_ATTRS, $CSS_MAX_PROPS)
-ie.readTagFiles()
-
-if ! ARGV[0]
- puts "syntax: showtest.rb [test#] [subtest#]"
- exit
-end
-
-ie.test_num = ARGV[0].to_i
-ie.subtest_num = ARGV[1].to_i || 0
-ie.lookup_mode = 1
-ie.setRandomSeed
-
-puts ie.buildPage()
diff --git a/WebKitTools/mangleme/LICENSE b/WebKitTools/mangleme/LICENSE
deleted file mode 100644
index 5ab7695..0000000
--- a/WebKitTools/mangleme/LICENSE
+++ /dev/null
@@ -1,504 +0,0 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL. It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
- When we speak of free software, we are referring to freedom of use,
-not price. Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
- To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
- To protect each distributor, we want to make it very clear that
-there is no warranty for the free library. Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
- Finally, software patents pose a constant threat to the existence of
-any free program. We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder. Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
- Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License. This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License. We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
- When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library. The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom. The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
- We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License. It also provides other free software developers Less
-of an advantage over competing non-free programs. These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries. However, the Lesser license provides advantages in certain
-special circumstances.
-
- For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard. To achieve this, non-free programs must be
-allowed to use the library. A more frequent case is that a free
-library does the same job as widely used non-free libraries. In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
- In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software. For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
- Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
- GNU LESSER GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (1) uses at run time a
- copy of the library already present on the user's computer system,
- rather than copying library functions into the executable, and (2)
- will operate properly with a modified version of the library, if
- the user installs one, as long as the modified version is
- interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- d) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- e) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded. In such case, this License incorporates the limitation as if
-written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
- NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Libraries
-
- If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change. You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
- To apply these terms, attach the following notices to the library. It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
- <one line to give the library's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
- <signature of Ty Coon>, 1 April 1990
- Ty Coon, President of Vice
-
-That's all there is to it!
-
-
diff --git a/WebKitTools/mangleme/Makefile b/WebKitTools/mangleme/Makefile
deleted file mode 100644
index 90d01e9..0000000
--- a/WebKitTools/mangleme/Makefile
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-# HTML manglizer
-# --------------
-# Copyright (C) 2004 by Michal Zalewski <lcamtuf@coredump.cx>
-#
-# Makefile adapted for WebKit project.
-
-CC = gcc
-CFLAGS = -Wall -O3 -fomit-frame-pointer -funroll-loops
-OUTDIR = ../../WebKitBuild/mangleme
-
-all: $(OUTDIR)/mangle.cgi $(OUTDIR)/remangle.cgi
-
-$(OUTDIR)/%.cgi: %.cgi.c
- if [ ! -d $(OUTDIR) ]; then mkdir -p $(OUTDIR); fi
- $(CC) $(CFLAGS) $< -o $(OUTDIR)/$*.cgi
diff --git a/WebKitTools/mangleme/README b/WebKitTools/mangleme/README
deleted file mode 100644
index 4fe2928..0000000
--- a/WebKitTools/mangleme/README
+++ /dev/null
@@ -1,20 +0,0 @@
-
- HTML manglizer
- --------------
-
- Copyright (C) 2004 by Michal Zalewski <lcamtuf@coredump.cx>
-
- A trivial utility to automatically check for HTML parsing flaws. Generates
- a basic set of badly mangled tags on request, with auto-refresh back to the
- script, so that you can point a browser to it once, and let it run until
- it crashes.
-
- Put it in your cgi-bin directory or any other Apache folder with ExecCGI option
- enabled, then visit the URL http://<yourserver>/<cgidir>/mangleme.cgi.
-
- When the browser crashes, error-log should be examined for the last matching
- entry generated by mangle.cgi; extract the hexadecimal value, then invoke
- remangle.cgi?hex_value from the browser again. If it crashes, you've reproduced
- the problem, and can save the remangle.cgi page using wget or such.
-
- Check gallery/ for some samples.
diff --git a/WebKitTools/mangleme/mangle.cgi.c b/WebKitTools/mangleme/mangle.cgi.c
deleted file mode 100644
index 12ca948..0000000
--- a/WebKitTools/mangleme/mangle.cgi.c
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
-
- HTML manglizer
- --------------
- Copyright (C) 2004 by Michal Zalewski <lcamtuf@coredump.cx>
-
- HTML manglizer library. Logs random seeds to error-log; find the last entry before
- crash, then pass it to remangle.cgi to reproduce the problem.
-
- */
-
-
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-
-#include "tags.h"
-
-#define R(x) (rand() % (x))
-
-#define MAXTCOUNT 100
-#define MAXPCOUNT 20
-#define MAXSTR2 80
-
-void make_up_value(void) {
- char c=R(2);
-
- if (c) putchar('"');
-
- switch (R(31)) {
-
- case 0: printf("javascript:"); make_up_value(); break;
-// case 1: printf("jar:"); make_up_value(); break;
- case 2: printf("mk:"); make_up_value(); break;
- case 3: printf("file:"); make_up_value(); break;
- case 4: printf("http:"); make_up_value(); break;
- case 5: printf("about:"); make_up_value(); break;
- case 6: printf("_blank"); break;
- case 7: printf("_self"); break;
- case 8: printf("top"); break;
- case 9: printf("left"); break;
- case 10: putchar('&'); make_up_value(); putchar(';'); break;
- case 11: make_up_value(); make_up_value(); break;
-
- case 12 ... 20: {
- int c = R(10) ? R(10) : (1 + R(MAXSTR2) * R(MAXSTR2));
- char* x = malloc(c);
- memset(x,R(256),c);
- fwrite(x,c,1,stdout);
- free(x);
- break;
- }
-
- case 21: printf("%s","%n%n%n%n%n%n"); break;
- case 22: putchar('#'); break;
- case 23: putchar('*'); break;
- default: if (R(2)) putchar('-'); printf("%d",rand()); break;
-
- }
-
- if (c) putchar('"');
-
-}
-
-
-void random_tag(void) {
- int tn, tc;
-
- do tn = R(MAXTAGS); while (!tags[tn][0]);
- tc = R(MAXPCOUNT) + 1;
-
- putchar('<');
-
- switch (R(10)) {
- case 0: putchar(R(256)); break;
- case 1: putchar('/');
- }
-
- printf("%s", tags[tn][0]);
-
- while (tc--) {
- int pn;
- switch (R(32)) {
- case 0: putchar(R(256));
- case 1: break;
- default: putchar(' ');
- }
- do pn = R(MAXPARS-1) + 1; while (!tags[tn][pn]);
- printf("%s", tags[tn][pn]);
- switch (R(32)) {
- case 0: putchar(R(256));
- case 1: break;
- default: putchar('=');
- }
-
- make_up_value();
-
- }
-
- putchar('>');
-
-}
-
-
-int main(int argc,char** argv) {
- int tc,seed;
-
- printf("Content-Type: text/html;charset=utf-8\nRefresh: 0;URL=mangle.cgi\n\n");
- printf("<HTML><HEAD><META HTTP-EQUIV=\"Refresh\" content=\"0;URL=mangle.cgi\">\n");
- printf("<script language=\"javascript\">setTimeout('window.location=\"mangle.cgi\"', 1000);</script>\n");
-
- seed = (time(0) ^ (getpid() << 16));
- fprintf(stderr,"[%u] Mangle attempt 0x%08x (%s) -- %s\n", (int)time(0), seed, getenv("HTTP_USER_AGENT"), getenv("REMOTE_ADDR"));
- srand(seed);
-
- tc = R(MAXTCOUNT) + 1;
- while (tc--) random_tag();
- fflush(0);
- return 0;
-}
diff --git a/WebKitTools/mangleme/remangle.cgi.c b/WebKitTools/mangleme/remangle.cgi.c
deleted file mode 100644
index ccc4472..0000000
--- a/WebKitTools/mangleme/remangle.cgi.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
-
- HTML manglizer
- --------------
- Copyright (C) 2004 by Michal Zalewski <lcamtuf@coredump.cx>
-
- Fault reproduction utility.
-
- */
-
-
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-
-#include "tags.h"
-
-#define R(x) (rand() % (x))
-
-#define MAXTCOUNT 100
-#define MAXPCOUNT 20
-#define MAXSTR2 80
-
-void make_up_value(void) {
- char c=R(2);
-
- if (c) putchar('"');
-
- switch (R(31)) {
-
- case 0: printf("javascript:"); make_up_value(); break;
-// case 1: printf("jar:"); make_up_value(); break;
- case 2: printf("mk:"); make_up_value(); break;
- case 3: printf("file:"); make_up_value(); break;
- case 4: printf("http:"); make_up_value(); break;
- case 5: printf("about:"); make_up_value(); break;
- case 6: printf("_blank"); break;
- case 7: printf("_self"); break;
- case 8: printf("top"); break;
- case 9: printf("left"); break;
- case 10: putchar('&'); make_up_value(); putchar(';'); break;
- case 11: make_up_value(); make_up_value(); break;
-
- case 12 ... 20: {
- int c = R(10) ? R(10) : (1 + R(MAXSTR2) * R(MAXSTR2));
- char* x = malloc(c);
- memset(x,R(256),c);
- fwrite(x,c,1,stdout);
- free(x);
- break;
- }
-
- case 21: printf("%s","%n%n%n%n%n%n"); break;
- case 22: putchar('#'); break;
- case 23: putchar('*'); break;
- default: if (R(2)) putchar('-'); printf("%d",rand()); break;
-
- }
-
- if (c) putchar('"');
-
-}
-
-
-void random_tag(void) {
- int tn, tc;
-
- do tn = R(MAXTAGS); while (!tags[tn][0]);
- tc = R(MAXPCOUNT) + 1;
-
- putchar('<');
-
- switch (R(10)) {
- case 0: putchar(R(256)); break;
- case 1: putchar('/');
- }
-
- printf("%s", tags[tn][0]);
-
- while (tc--) {
- int pn;
- switch (R(32)) {
- case 0: putchar(R(256));
- case 1: break;
- default: putchar(' ');
- }
- do pn = R(MAXPARS-1) + 1; while (!tags[tn][pn]);
- printf("%s", tags[tn][pn]);
- switch (R(32)) {
- case 0: putchar(R(256));
- case 1: break;
- default: putchar('=');
- }
-
- make_up_value();
-
- }
-
- putchar('>');
-
-}
-
-
-int main(int argc,char** argv) {
- int tc,seed;
- char* x = getenv("QUERY_STRING");
-
- if (!x || sscanf(x,"%x",&seed) != 1) {
- printf("Content-type: text/plain\n\nMissing or invalid parameter.\n");
- exit(1);
- }
-
- printf("Content-Type: text/html;charset=utf-8\nRefresh: 0;URL=remangle.cgi?0x%08x\n\n", seed);
- printf("<HTML><HEAD><META HTTP-EQUIV=\"Refresh\" content=\"0;URL=remangle.cgi?0x%08x\">\n", seed);
- printf("<script language=\"javascript\">setTimeout('window.location=\"remangle.cgi?0x%08x\"', 1000);</script>\n", seed);
-
- srand(seed);
-
- tc = R(MAXTCOUNT) + 1;
- while (tc--) random_tag();
- fflush(0);
- return 0;
-}
diff --git a/WebKitTools/mangleme/tags.h b/WebKitTools/mangleme/tags.h
deleted file mode 100644
index 5789441..0000000
--- a/WebKitTools/mangleme/tags.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
-
- HTML manglizer
- --------------
- Copyright (C) 2004 by Michal Zalewski <lcamtuf@coredump.cx>
-
- Tag and parameter list: guesstimating / reference compilation.
-
- */
-
-
-#define MAXTAGS 80
-#define MAXPARS 20
-
-static char* tags[MAXTAGS][MAXPARS] = {
- { "A", "NAME", "HREF", "REF", "REV", "TITLE", "TARGET", "SHAPE", "onLoad", "STYLE", 0 },
- { "APPLET", "CODEBASE", "CODE", "NAME", "ALIGN", "ALT", "HEIGHT", "WIDTH", "HSPACE", "VSPACE", "DOWNLOAD", "HEIGHT", "NAME", "TITLE", "onLoad", "STYLE", 0 },
- { "AREA", "SHAPE", "ALT", "CO-ORDS", "HREF", "onLoad", "STYLE", 0 },
- { "B", "onLoad", "STYLE", 0 },
- { "BANNER", "onLoad", "STYLE", 0 },
- { "BASE", "HREF", "TARGET", "onLoad", "STYLE", 0 },
- { "BASEFONT", "SIZE", "onLoad", "STYLE", 0 },
- { "BGSOUND", "SRC", "LOOP", "onLoad", "STYLE", 0 },
- { "BQ", "CLEAR", "NOWRAP", "onLoad", "STYLE", 0 },
- { "BODY", "BACKGROUND", "BGCOLOR", "TEXT", "LINK", "ALINK", "VLINK", "LEFTMARGIN", "TOPMARGIN", "BGPROPERTIES", "onLoad", "STYLE", 0 },
- { "CAPTION", "ALIGN", "VALIGN", "onLoad", "STYLE", 0 },
- { "CENTER", "onLoad", "STYLE", 0 },
- { "COL", "ALIGN", "SPAN", "onLoad", "STYLE", 0 },
- { "COLGROUP", "ALIGN", "VALIGN", "HALIGN", "WIDTH", "SPAN", "onLoad", "STYLE", 0 },
- { "DIV", "ALIGN", "CLASS", "LANG", "onLoad", "STYLE", 0 },
- { "EMBED", "SRC", "HEIGHT", "WIDTH", "UNITS", "NAME", "PALETTE", "onLoad", "STYLE", 0 },
- { "FIG", "SRC", "ALIGN", "HEIGHT", "WIDTH", "UNITS", "IMAGEMAP", "onLoad", "STYLE", 0 },
- { "FN", "ID", "onLoad", "STYLE", 0 },
- { "FONT", "SIZE", "COLOR", "FACE", "onLoad", "STYLE", 0 },
- { "FORM", "ACTION", "METHOD", "ENCTYPE", "TARGET", "SCRIPT", "onLoad", "STYLE", 0 },
- { "FRAME", "SRC", "NAME", "MARGINWIDTH", "MARGINHEIGHT", "SCROLLING", "FRAMESPACING", "onLoad", "STYLE", 0 },
- { "FRAMESET", "ROWS", "COLS", "onLoad", "STYLE", 0 },
- { "H1", "SRC", "DINGBAT", "onLoad", "STYLE", 0 },
- { "HEAD", "onLoad", "STYLE", 0 },
- { "HR", "SRC", "SIZE", "WIDTH", "ALIGN", "COLOR", "onLoad", "STYLE", 0 },
- { "HTML", "onLoad", "STYLE", 0 },
- { "IFRAME", "ALIGN", "FRAMEBORDER", "HEIGHT", "MARGINHEIGHT", "MARGINWIDTH", "NAME", "SCROLLING", "SRC", "ADDRESS", "WIDTH", "onLoad", "STYLE", 0 },
- { "IMG", "ALIGN", "ALT", "SRC", "BORDER", "DYNSRC", "HEIGHT", "HSPACE", "ISMAP", "LOOP", "LOWSRC", "START", "UNITS", "USEMAP", "WIDTH", "VSPACE", "onLoad", "STYLE", 0 },
- { "INPUT", "TYPE", "NAME", "VALUE", "onLoad", "STYLE", 0 },
- { "ISINDEX", "HREF", "PROMPT", "onLoad", "STYLE", 0 },
- { "LI", "SRC", "DINGBAT", "SKIP", "TYPE", "VALUE", "onLoad", "STYLE", 0 },
- { "LINK", "REL", "REV", "HREF", "TITLE", "onLoad", "STYLE", 0 },
- { "MAP", "NAME", "onLoad", "STYLE", 0 },
- { "MARQUEE", "ALIGN", "BEHAVIOR", "BGCOLOR", "DIRECTION", "HEIGHT", "HSPACE", "LOOP", "SCROLLAMOUNT", "SCROLLDELAY", "WIDTH", "VSPACE", "onLoad", "STYLE", 0 },
- { "MENU", "onLoad", "STYLE", 0 },
- { "META", "HTTP-EQUIV", "CONTENT", "NAME", "onLoad", "STYLE", 0 },
- { "MULTICOL", "COLS", "GUTTER", "WIDTH", "onLoad", "STYLE", 0 },
- { "NOFRAMES", "onLoad", "STYLE", 0 },
- { "NOTE", "CLASS", "SRC", "onLoad", "STYLE", 0 },
- { "OVERLAY", "SRC", "X", "Y", "HEIGHT", "WIDTH", "UNITS", "IMAGEMAP", "onLoad", "STYLE", 0 },
- { "PARAM", "NAME", "VALUE", "onLoad", "STYLE", 0 },
- { "RANGE", "FROM", "UNTIL", "onLoad", "STYLE", 0 },
- { "SCRIPT", "LANGUAGE", "onLoad", "STYLE", 0 },
- { "SELECT", "NAME", "SIZE", "MULTIPLE", "WIDTH", "HEIGHT", "UNITS", "onLoad", "STYLE", 0 },
- { "OPTION", "VALUE", "SHAPE", "onLoad", "STYLE", 0 },
- { "SPACER", "TYPE", "SIZE", "WIDTH", "HEIGHT", "ALIGN", "onLoad", "STYLE", 0 },
- { "SPOT", "ID", "onLoad", "STYLE", 0 },
- { "TAB", "INDENT", "TO", "ALIGN", "DP", "onLoad", "STYLE", 0 },
- { "TABLE", "ALIGN", "WIDTH", "BORDER", "CELLPADDING", "CELLSPACING", "BGCOLOR", "VALIGN", "COLSPEC", "UNITS", "DP", "onLoad", "STYLE", 0 },
- { "TBODY", "CLASS", "ID", "onLoad", "STYLE", 0 },
- { "TD", "COLSPAN", "ROWSPAN", "ALIGN", "VALIGN", "BGCOLOR", "onLoad", "STYLE", 0 },
- { "TEXTAREA", "NAME", "COLS", "ROWS", "onLoad", "STYLE", 0 },
- { "TEXTFLOW", "CLASS", "ID", "onLoad", "STYLE", 0 },
- { "TFOOT", "COLSPAN", "ROWSPAN", "ALIGN", "VALIGN", "BGCOLOR", "onLoad", "STYLE", 0 },
- { "TH", "ALIGN", "CLASS", "ID", "onLoad", "STYLE", 0 },
- { "TITLE", "onLoad", "STYLE", 0 },
- { "TR", "ALIGN", "VALIGN", "BGCOLOR", "CLASS", "onLoad", "STYLE", 0 },
- { "UL", "SRC", "DINGBAT", "WRAP", "TYPE", "PLAIN", "onLoad", "STYLE", 0 },
- { 0 }
-};
-
diff --git a/WebKitTools/record-memory-win/main.cpp b/WebKitTools/record-memory-win/main.cpp
deleted file mode 100644
index e660afe..0000000
--- a/WebKitTools/record-memory-win/main.cpp
+++ /dev/null
@@ -1,187 +0,0 @@
-#include <windows.h>
-#include <assert.h>
-#include <psapi.h>
-#include <stdio.h>
-#include <tchar.h>
-#include <time.h>
-#include "Shlwapi.h"
-
-#pragma comment(lib, "psapi.lib")
-#pragma comment(lib, "shlwapi.lib")
-
-bool gSingleProcess = true;
-int gQueryInterval = 5; // seconds
-time_t gDuration = 0; // seconds
-LPTSTR gCommandLine;
-
-HRESULT ProcessArgs(int argc, TCHAR *argv[]);
-HRESULT PrintUsage();
-void UseImage(void (functionForQueryType(HANDLE)));
-void QueryContinuously(HANDLE hProcess);
-time_t ElapsedTime(time_t startTime);
-unsigned int OneQuery(HANDLE hProcess);
-unsigned int OneQueryMP(HANDLE hProcess);
-
-int __cdecl _tmain (int argc, TCHAR *argv[])
-{
- HRESULT result = ProcessArgs(argc, argv);
- if (FAILED(result))
- return result;
-
- UseImage(QueryContinuously);
- return S_OK;
-}
-
-HRESULT ProcessArgs(int argc, TCHAR *argv[])
-{
- LPTSTR argument;
- for( int count = 1; count < argc; count++ ) {
- argument = argv[count] ;
- if (wcsstr(argument, _T("-h")) ||
- wcsstr(argument, _T("--help")))
- return PrintUsage();
- else if (wcsstr(argument, _T("--exe"))) {
- gCommandLine = argv[++count];
- if (wcsstr(gCommandLine, _T("chrome.exe")))
- gSingleProcess = false;
- } else if (wcsstr(argument, _T("-i")) ||
- wcsstr(argument, _T("--interval"))) {
- gQueryInterval = _wtoi(argv[++count]);
- if (gQueryInterval < 1) {
- printf("ERROR: invalid interval\n");
- return E_INVALIDARG;
- }
- } else if (wcsstr(argument, _T("-d")) ||
- wcsstr(argument, _T("--duration"))) {
- gDuration = _wtoi(argv[++count]);
- if (gDuration < 1) {
- printf("ERROR: invalid duration\n");
- return E_INVALIDARG;
- }
- } else {
- _tprintf(_T("ERROR: unrecognized argument \"%s\"\n"), (LPCTSTR)argument);
- return PrintUsage();
- }
- }
- if (argc < 2 || !wcslen(gCommandLine) ) {
- printf("ERROR: executable path is required\n");
- return PrintUsage();
- }
- return S_OK;
-}
-
-HRESULT PrintUsage()
-{
- printf("record-memory-win --exe EXE_PATH\n");
- printf(" Launch an executable and print the memory usage (in Private Bytes)\n");
- printf(" of the process.\n\n");
- printf("Usage:\n");
- printf("-h [--help] : Print usage\n");
- printf("--exe arg : Launch specified image. Required\n");
- printf("-i [--interval] arg : Print memory usage every arg seconds. Default: 5 seconds\n");
- printf("-d [--duration] arg : Run for up to arg seconds. Default: no limit\n\n");
- printf("Examples:\n");
- printf(" record-memory-win --exe \"C:\\Program Files\\Safari\\Safari.exe\"\n");
- printf(" record-memory-win --exe Safari.exe -i 10 -d 7200\n");
- return E_FAIL;
-}
-
-void UseImage(void (functionForQueryType(HANDLE)))
-{
- STARTUPINFO si = {0};
- si.cb = sizeof(STARTUPINFO);
- PROCESS_INFORMATION pi = {0};
-
- // Start the child process.
- if(!CreateProcess( NULL, // No module name (use command line)
- gCommandLine, // Command line
- NULL, // Process handle not inheritable
- NULL, // Thread handle not inheritable
- FALSE, // Set handle inheritance to FALSE
- 0, // No creation flags
- NULL, // Use parent's environment block
- NULL, // Use parent's starting directory
- &si, // Pointer to STARTUPINFO structure
- &pi )) // Pointer to PROCESS_INFORMATION structure
- printf("CreateProcess failed (%d)\n", GetLastError());
- else {
- printf("Created process\n");
- functionForQueryType(pi.hProcess);
- // Close process and thread handles.
- CloseHandle( pi.hProcess );
- CloseHandle( pi.hThread );
- }
-}
-
-void QueryContinuously(HANDLE hProcess)
-{
- Sleep(2000); // give the process some time to launch
- bool pastDuration = false;
- time_t startTime = time(NULL);
- unsigned int memUsage = gSingleProcess ? OneQuery(hProcess) : OneQueryMP(hProcess);
- while(memUsage && !pastDuration) {
- printf( "%u\n", memUsage );
- Sleep(gQueryInterval*1000);
- memUsage = gSingleProcess ? OneQuery(hProcess) : OneQueryMP(hProcess);
- pastDuration = gDuration > 0 ? ElapsedTime(startTime) > gDuration : false;
- }
-}
-
-// returns elapsed time in seconds
-time_t ElapsedTime(time_t startTime)
-{
- time_t currentTime = time(NULL);
- return currentTime - startTime;
-}
-
-// returns Commit Size (Private Bytes) in bytes
-unsigned int OneQuery(HANDLE hProcess)
-{
- PROCESS_MEMORY_COUNTERS_EX pmc;
- if (NULL == hProcess)
- return 0;
- if (GetProcessMemoryInfo(hProcess, (PPROCESS_MEMORY_COUNTERS)&pmc, sizeof(pmc)))
- return (unsigned)pmc.PrivateUsage;
- return 0;
-}
-
-// returns Commit Size (Private Bytes) in bytes for multi-process executables
-unsigned int OneQueryMP(HANDLE hProcess)
-{
- unsigned int memUsage = 0;
- TCHAR monitoredProcessName[MAX_PATH];
- GetProcessImageFileName(hProcess, monitoredProcessName, sizeof(monitoredProcessName)/sizeof(TCHAR));
- LPTSTR shortProcessName = PathFindFileName(monitoredProcessName);
- DWORD aProcesses[1024], cbNeeded, cProcesses;
- HANDLE hFoundProcess;
- if (!EnumProcesses(aProcesses, sizeof(aProcesses), &cbNeeded))
- return 0;
-
- // Calculate how many process identifiers were returned.
- cProcesses = cbNeeded / sizeof(DWORD);
- // find existing process
- for (unsigned int i = 0; i < cProcesses; i++)
- if (aProcesses[i] != 0) {
- DWORD retVal = 0;
- TCHAR foundProcessName[MAX_PATH];
-
- // Get a handle to the process.
- hFoundProcess = OpenProcess(PROCESS_QUERY_INFORMATION |
- PROCESS_VM_READ,
- FALSE, aProcesses[i]);
-
- // Get the process name.
- if (NULL != hFoundProcess) {
- HMODULE hMod;
- DWORD cbNeeded;
-
- if (EnumProcessModules(hFoundProcess, &hMod, sizeof(hMod), &cbNeeded)) {
- GetModuleBaseName(hFoundProcess, hMod, foundProcessName, sizeof(foundProcessName)/sizeof(TCHAR));
- if (wcsstr(foundProcessName, shortProcessName))
- memUsage += OneQuery(hFoundProcess);
- }
- }
- CloseHandle(hFoundProcess);
- }
- return memUsage;
-}
diff --git a/WebKitTools/vcbin/cl.exe b/WebKitTools/vcbin/cl.exe
deleted file mode 100755
index 2ec78c9..0000000
--- a/WebKitTools/vcbin/cl.exe
+++ /dev/null
Binary files differ
diff --git a/WebKitTools/vcbin/midl.exe b/WebKitTools/vcbin/midl.exe
deleted file mode 100755
index 55ecd1d..0000000
--- a/WebKitTools/vcbin/midl.exe
+++ /dev/null
Binary files differ
diff --git a/WebKitTools/wx/browser/browser.bkl b/WebKitTools/wx/browser/browser.bkl
deleted file mode 100644
index 0a60fd9..0000000
--- a/WebKitTools/wx/browser/browser.bkl
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" ?>
-<!--
-Copyright (C) 2007 Kevin Ollivier <kevino@theolliviers.com>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- its contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-wxWebKit sample application build file
--->
-
-<makefile>
- <set var="WX_UNICODE">1</set>
- <set var="WX_SHARED">1</set>
-
- <include file="../../../WebKit/wx/wxwk-settings.bkl"/>
-
- <!-- the WX_PYTHON option was added to presets/wx.bkl in 2.8.5, so define
- it in case the presets/wx.bkl doesn't define it for us. -->
- <if cond="not isdefined('WX_PYTHON')">
- <set var="WX_PYTHON">0</set>
- </if>
- <template id="wxwebkit">
- <lib-path>$(WKOUTPUTDIR)</lib-path>
- <sys-lib>wxwebkit</sys-lib>
- </template>
- <exe id="wxBrowser" template="wxwk,xml2,iconv,xslt,icu,jscore,webcore,wxwebkit,curl,pthreads">
- <app-type>gui</app-type>
- <runtime-libs>dynamic</runtime-libs>
-
- <include>$(WK_ROOT)/WebCore/platform/wx</include>
- <include>$(WK_ROOT)/WebCore/bridge/wx</include>
- <include>$(WK_ROOT)/WebCore/page/wx</include>
- <include>$(WK_ROOT)/WebKit/wx</include>
- <include>$(WK_ROOT)/WebKit/wx/WebKitSupport</include>
-
- <sources>
- browser.cpp
- </sources>
-
- </exe>
-
-</makefile>
diff --git a/WebKitTools/wx/browser/browser.cpp b/WebKitTools/wx/browser/browser.cpp
deleted file mode 100644
index 83f909b..0000000
--- a/WebKitTools/wx/browser/browser.cpp
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2007 Kevin Ollivier <kevino@theolliviers.com>
- *
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// webkit includes
-#include "WebView.h"
-#include "WebBrowserShell.h"
-
-#include "wx/wxprec.h"
-#ifndef WX_PRECOMP
- #include "wx/wx.h"
-#endif
-
-class MyApp : public wxApp
-{
-public:
-
- virtual bool OnInit();
-};
-
-
-IMPLEMENT_APP(MyApp)
-
-bool MyApp::OnInit()
-{
- wxInitAllImageHandlers();
-
- // create the main application window
- // see WebKit/wx/WebFrame.cpp for how to write a shell around wxWebView.
- wxWebBrowserShell *frame = new wxWebBrowserShell(_T("wxWebKit Test App"));
-
-#ifndef NDEBUG
- frame->ShowDebugMenu(true);
-#endif
- frame->CentreOnScreen();
- frame->Show(true);
-
- return true;
-}
diff --git a/WebKitTools/wx/build-wxwebkit b/WebKitTools/wx/build-wxwebkit
deleted file mode 100755
index 0fb5b89..0000000
--- a/WebKitTools/wx/build-wxwebkit
+++ /dev/null
@@ -1,407 +0,0 @@
-#!/bin/bash
-
-# Copyright (C) 2007 Robin Dunn, Kevin Ollivier All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
-# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# Driver for the wxWebKit build process.
-
-set -o errexit
-#set -o xtrace
-
-#----------------------------------------------------------------------
-# Set up the environment
-
-scriptDir="$(cd $(dirname $0);pwd)"
-WK_ROOT=$scriptDir/../..
-WK_ROOTDIR="$WK_ROOT"
-
-cd $scriptDir
-
-if [ -z $WEBKITOUTPUTDIR ]; then
- WEBKITOUTPUTDIR=`cd $WK_ROOT/WebKitTools/Scripts; perl -e "use webkitdirs; print productDir()"`
-fi
-
-WKWINLIBS=WebKitLibraries/win
-WINDEPS=" $WKWINLIBS/lib/pthreadVC2.dll"
-WINDEPS="$WINDEPS $WKWINLIBS/bin/icuuc34.dll $WKWINLIBS/bin/icudt34.dll $WKWINLIBS/bin/icuin34.dll"
-WINDEPS="$WINDEPS $WKWINLIBS/bin/libcurl.dll $WKWINLIBS/bin/libeay32.dll $WKWINLIBS/bin/ssleay32.dll $WKWINLIBS/bin/zlib1.dll"
-WINDEPS="$WINDEPS $WKWINLIBS/lib/sqlite3.dll"
-WINDEPS="$WINDEPS $WKWINLIBS/bin/libxml2.dll $WKWINLIBS/bin/libxslt.dll"
-WINDEPS="$WINDEPS $WKWINLIBS/bin/iconv.dll"
-
-# TODO: check that we are running from the root of the source tree...
-
-# cygpath will bork if the dir doesn't exist...
-mkdir -p $WEBKITOUTPUTDIR
-
-if [ $OSTYPE == cygwin ]; then
- EXE=.exe
- WK_ROOTDIR=`cygpath -d $WK_ROOT`
- WEBKITOUTPUTDIR=`cygpath -d $WEBKITOUTPUTDIR`
- export WEBKITOUTPUTDIR
- if [ -z $WXWIN ]; then
- echo "Error, you must set WXWIN to your wxWidgets root directory."
- exit 1
- fi
- if [ -z $WX_PREFIX ]; then
- WX_PREFIX=$WXWIN
- fi
- if [ -z $BAKEFILE_PATHS ]; then
- export BAKEFILE_PATHS=$WXWIN/build/bakefiles/wxpresets
- fi
- LINKER=`which link`
- if [ "$LINKER" = "/usr/bin/link" ]; then
- echo "WARNING: wxWebKit builds using MSVC on Windows, but it looks like"
- echo "you have the GCC linker on your path. If /usr/bin/link does NOT point"
- echo "to the MSVC linker, you need to move it or change your path to pick up"
- echo "Microsoft's link.exe program first."
- fi
-
-else
- export WEBKITOUTPUTDIR
- WX_PREFIX=`wx-config --prefix`
- if [ ! -d "$WX_PREFIX" ]; then
- echo "ERROR: Cannot find your wxWidgets installation."
- echo "Make sure wx-config is on your PATH and points to a valid wxWidgets installation."
- exit 1
- fi
-
- CONFIG=`wx-config --selected-config`
- if [ "${CONFIG:0:4}" != "gtk2" -a "${CONFIG:0:3}" != "mac" ]; then
- echo "ERROR: This configuration '$CONFIG' is not currently supported by wxWebKit. Please use the win, mac, or gtk2 port depending on your platform."
- exit 1
- fi
-
- if [ ! -d "$WX_PREFIX/share/bakefile" ]; then
- echo "ERROR: wxWidgets installation does not have wxpresets."
- echo "wx-config is pointing to an installation that does not have Bakefile presets installed. Run `wx-config --version` to ensure your wxWidgets is of version 2.8+."
- exit 1
- fi
-
- if [ -z $BAKEFILE_PATHS ]; then
- export BAKEFILE_PATHS=$WX_PREFIX/share/bakefile
- fi
-fi
-
-# after all that, make sure that BAKEFILE_PATHS was either set
-# previously, or by the code above
-if [ -z $BAKEFILE_PATHS ]; then
- echo "Error, you must set BAKEFILE_PATHS to the directory containing wxpresets."
- exit 1
-fi
-
-#----------------------------------------------------------------------
-# process command line args
-build_type_set=0
-
-do_bake=0
-do_prep=0
-do_extras=0
-do_build=0
-do_clean=0
-do_install=0
-use_wxgc=0
-debug=1
-wxdebug=0
-wxpython=0
-make_args=''
-other_args=''
-
-for flag in $*; do
- case $flag in
- bake) do_bake=1 ;;
- prep) do_prep=1 ;;
- build) do_build=1 ;;
- all) do_extras=1; do_bake=1; do_prep=1; do_build=1 ;;
- clean) other_args=clean; do_clean=1 ;;
- wxgc) use_wxgc=1 ;;
- wxdebug) wxdebug=1 ;;
- wxpython) wxpython=1 ;;
- wxpython-install) wxpython_install=1 ;;
- *) export $flag ;; #other_args='$other_args "$flag"' ;;
- esac
-done
-
-
-#----------------------------------------------------------------------
-
-# if no arguments were passed, do a full build.
-if [ $do_bake == 0 -a $do_prep == 0 -a $do_build == 0 -a $do_clean == 0 ]; then
- do_bake=1; do_prep=1; do_build=1
-fi
-
-if [ -f $WK_ROOT/WebKitBuild/Configuration ]; then
- BUILD_TYPE=`cat $WK_ROOT/WebKitBuild/Configuration`
- echo "Configuration is: $BUILD_TYPE"
-
- if [ $BUILD_TYPE == "Release" ]; then
- debug=0
- fi
- if [ $BUILD_TYPE == "Debug" ]; then
- debug=1
- fi
-
-fi
-
-function do_make {
- dir=$1
- cxxflags=$2
- olddir=$PWD
- shift
- shift
- # NOTE: If we try to do make clean after the Bakefiles were cleaned out, or before they were
- # first generated, we will get errors about missing files, so we need to check that the
- # makefile exists before running it.
- if [ $OSTYPE == cygwin ]; then
- cd $dir
- if [ -f makefile.vc ]; then
- nmake -f makefile.vc CXXFLAGS="$cxxflags" $@
- fi
- cd $olddir
- else
- if [ -f $dir/GNUmakefile ]; then
- make -C $dir -f GNUmakefile $MAKE_ARGS CXXFLAGS="$cxxflags" $@
- fi
- fi
- if [ $? != 0 ]; then
- exit $?
- fi
-}
-
-# output the first parameter that is a dir and exists
-function find_existing_dir {
- for arg in $*; do
- tester=$arg
- if [ $OSTYPE == cygwin ]; then
- tester=`cygpath -u $arg`
- fi
- if [ -d $tester ]; then
- echo $arg
- return
- fi
- done
-}
-
-
-olddir=$PWD
-
-if [ $do_clean != 1 ]; then
-
- mkdir -p $WEBKITOUTPUTDIR/build
-
- if [ $do_bake == 1 ]; then
- # bakefile stuff
- cd $WK_ROOT/WebKit/wx
- bakefile_gen
-
- # we need to do this because Bakefile doesn't know which
- # platform it's running on with GNU format, and so it defaults
- # to the standard Unix file endings and linker args.
- if [ "${OSTYPE:0:6}" = "darwin" ]; then
- sed "s/libwebcore-wx.so/libwebcore-wx.dylib/" < $WK_ROOT/WebCore/GNUmakefile > temp
- mv temp $WK_ROOT/WebCore/GNUmakefile
-
- sed "s/\-shared/\-dynamiclib/" < $WK_ROOT/WebCore/GNUmakefile > temp
- mv temp $WK_ROOT/WebCore/GNUmakefile
-
- sed "s/libwxwebkit.so/libwxwebkit.dylib/" < $WK_ROOT/WebKit/wx/GNUmakefile > temp
- mv temp $WK_ROOT/WebKit/wx/GNUmakefile
-
- sed "s/\-shared/\-dynamiclib/" < $WK_ROOT/WebKit/wx/GNUmakefile > temp
- mv temp $WK_ROOT/WebKit/wx/GNUmakefile
- fi
- fi
-
- if [ $do_prep == 1 ]; then
- # Other preparation steps
-
- # since the buildbot will wipe the build tree clean sometimes, we need to reinstall
- # the dependencies if they aren't installed.
- if [ "${OSTYPE:0:6}" == "darwin" ]; then
- $WK_ROOT/WebKitTools/wx/install-unix-extras
- fi
-
- cd $WK_ROOT/JavaScriptCore
- ./make-generated-sources.sh
- if [ $? != 0 ]; then
- exit $?
- fi
-
- cd $WK_ROOT/WebCore
- ./make-generated-sources.sh platform/wx/wx-encodings.txt
- if [ $? != 0 ]; then
- exit $?
- fi
- fi
-fi
-
-
-if [ $do_build == 1 -o $do_clean == 1 ]; then
- # Build steps
- WXGC_DEFINE=""
- if [ $use_wxgc == 1 ]; then
- WXGC_DEFINE="-DWTF_USE_WXGC=1"
- fi
- WX_EXT=
- if [ "${OSTYPE:0:6}" == "cygwin" -a $wxdebug == 1 ]; then
- WX_EXT=d
- fi
- if [ "${OSTYPE:0:6}" == "cygwin" -a $wxpython == 1 ]; then
- other_args=WX_PYTHON=1
- WX_EXT=h
- wxdebug=1
- fi
-
- if [ "${OSTYPE:0:6}" == "cygwin" ]; then
- PLATFORM_OS="win"
- elif [ "${OSTYPE:0:6}" == "darwin" ]; then
- PLATFORM_OS="mac"
- else
- PLATFORM_OS="linux"
- use_wxgc=1 # Linux requires us to use wxgc to get proper drawing.
- fi
-
- WINDEPS="$WINDEPS $WXWIN/lib/vc_dll/wxmsw28u${WX_EXT}_core_vc.dll $WXWIN/lib/vc_dll/wxbase28u${WX_EXT}_vc.dll"
-
- do_make $WK_ROOT/JavaScriptCore "-DBUILDING_WX__=1 $WXGC_DEFINE" WX_DEBUG=$wxdebug DEBUG=$debug WEBKIT_ROOT=$WK_ROOTDIR PLATFORM_OS=$PLATFORM_OS $other_args
-
- mkdir -p $WEBKITOUTPUTDIR/JavaScriptCore
- cp -p $WK_ROOT/JavaScriptCore/API/*.h $WEBKITOUTPUTDIR/JavaScriptCore/
-
- do_make $WK_ROOT/WebCore "-DBUILDING_WX__=1 $WXGC_DEFINE" WX_DEBUG=$wxdebug WEBKIT_ROOT=$WK_ROOTDIR DEBUG=$debug PLATFORM_OS=$PLATFORM_OS $other_args
- do_make $WK_ROOT/WebKit/wx "-DBUILDING_WX__=1 -DWXMAKINGDLL_WEBKIT=1 $WXGC_DEFINE" WX_DEBUG=$wxdebug DEBUG=$debug WEBKIT_ROOT=$WK_ROOTDIR PLATFORM_OS=$PLATFORM_OS $other_args
- do_make $WK_ROOT/WebKitTools/wx/browser "-DBUILDING_WX__=1 -DWXUSINGDLL_WEBKIT=1 $WXGC_DEFINE" WX_DEBUG=$wxdebug DEBUG=$debug WEBKIT_ROOT=$WK_ROOTDIR PLATFORM_OS=$PLATFORM_OS $other_args
-
- if [ $do_clean == 1 ]; then
- rm -rf $WK_ROOT/JavaScriptCore/DerivedSources
- rm -rf $WK_ROOT/WebCore/DerivedSources
- rm -rf $WK_ROOT/WebCore/include/JavaScriptCore
- fi
-
- if [ $do_build == 1 ]; then
- if [ "${OSTYPE:0:6}" = "darwin" ]; then
- cd $WEBKITOUTPUTDIR
- mkdir -p wxBrowser.app/Contents/MacOS
- mkdir -p wxBrowser.app/Contents/Frameworks
- cp wxBrowser wxBrowser.app/Contents/MacOS
- install_name_tool -change libwxwebkit.dylib @executable_path/../Frameworks/libwxwebkit.dylib wxBrowser.app/Contents/MacOS/wxBrowser
- if [ ! -f "$WEBKITOUTPUTDIR/libwxwebkit.dylib" ]; then
- ln -s $WEBKITOUTPUTDIR/libwxwebkit.dylib wxBrowser.app/Contents/Frameworks
- fi
- fi
-
- if [ $wxpython == 1 ]; then
- if [ -z $SWIG ]; then
- SWIG=`which swig`
- fi
-
- if [ ! -f "$SWIG" ]; then
- echo "ERROR: Cannot find SWIG. Make sure that SWIG 1.3.29 is located on your path.";
- exit 1;
- fi
-
- cd $WK_ROOT/WebKit/wx/bindings/python
-
- SWIG_FLAGS=`python -c "import wx.build.config; import string; print string.join(wx.build.config.swig_args, ' ')"`
- WEBKIT_INCLUDE="-I$WK_ROOT/WebKit/wx"
- if [ "${OSTYPE:0:6}" == "cygwin" ]; then
- WEBKIT_INCLUDE="-I`cygpath -d $WK_ROOT/WebKit/wx`"
- fi
-
- # Determine which include path to use for wxPython's *.i files
- # Options are:
- # wxPython installed on a posix system
- # the wxPython win32 devel tarball
- # a wx source tree from a tarball where wxPython is in the wx dir
- # a wx source tree from SVN where wxPython is a sibling of the wx dir
- WXPY_INCLUDE=`find_existing_dir \
- $WX_PREFIX/include/wx-2.8/wx/wxPython/i_files \
- $WX_PREFIX/include/wx/wxPython/i_files \
- $WX_PREFIX/wxPython/src \
- $WX_PREFIX/../wxPython/src`
- if [ -z $WXPY_INCLUDE ]; then
- echo "ERROR: Unable to find wxPython's *.i files"
- exit 1
- fi
-
- # Run SWIG
- $SWIG $SWIG_FLAGS -I$WXPY_INCLUDE $WEBKIT_INCLUDE -o webview.cpp webview.i
- cp webview.py $WEBKITOUTPUTDIR/webview.py
-
- PY_INCLUDE=`python -c "import sys,distutils.sysconfig; sys.stdout.write(distutils.sysconfig.get_python_inc())"`
- PY_VERSION=`python -c "import sys; sys.stdout.write(str(sys.version_info[0]) + str(sys.version_info[1]))"`
- PY_LIBDIR=`python -c "import distutils.sysconfig; import sys; sys.stdout.write(distutils.sysconfig.PREFIX)"`
-
- if [ "${OSTYPE:0:6}" == "cygwin" ]; then
- PY_LIBDIR="$PY_LIBDIR\\Libs"
- else
- PY_LIBDIR="$PY_LIBDIR/lib"
- fi
-
- do_make $WK_ROOT/WebKit/wx/bindings/python "-DBUILDING_WX__=1 -DWXUSINGDLL=1 -DWXUSINGDLL_WEBKIT=1 -I$PY_INCLUDE -I$WX_PREFIX/wxPython/include -I$WX_PREFIX/../wxPython/include $WXGC_DEFINE" \
- WX_DEBUG=$wxdebug DEBUG=$debug WEBKIT_ROOT=$WK_ROOTDIR PLATFORM_OS=$PLATFORM_OS PYTHON_VERSION=$PY_VERSION PYTHON_LIBDIR=$PY_LIBDIR $other_args
- if [ "${OSTYPE:0:6}" == "cygwin" ]; then
- if [ -f $WEBKITOUTPUTDIR/_webview.pyd -a -f $WEBKITOUTPUTDIR/_webview.dll ]; then
- rm $WEBKITOUTPUTDIR/_webview.pyd
- mv $WEBKITOUTPUTDIR/_webview.dll $WEBKITOUTPUTDIR/_webview.pyd
- fi
- fi
- fi
-
-
- if [ "$OSTYPE" == "cygwin" ]; then
- echo "Copying necessary DLLs to run test and sample applications..."
- cd $WK_ROOT
- cp $WINDEPS `cygpath -u $WEBKITOUTPUTDIR`
- chmod +x `cygpath -u $WEBKITOUTPUTDIR/`*.dll
- if [ -e `cygpath -u $WEBKITOUTPUTDIR/_webview.dll` ]; then
- mv `cygpath -u $WEBKITOUTPUTDIR/_webview.dll` `cygpath -u $WEBKITOUTPUTDIR/_webview.pyd`
- fi
- fi
-
- BROWSERAPP="wxBrowser"
-
- if [ "${OSTYPE:0:6}" == "darwin" ]; then
- BROWSERAPP="wxBrowser.app/Contents/MacOS/wxBrowser"
- fi
-
- echo ""
- echo ""
- echo "--- BUILD COMPLETE ---"
- echo ""
- echo "Next steps:"
- echo ""
- echo "-- Run '$WK_ROOT/WebKitTools/Scripts/run-javascriptcore-tests --wx' to ensure JSCore tests pass."
- echo ""
- echo "-- Run $WEBKITOUTPUTDIR/$BROWSERAPP to test your wxWebKit build."
- echo ""
- echo ""
- fi
-fi
-
-if [ $do_clean == 1 ]; then
- cd $WK_ROOT/WebKit/wx
- bakefile_gen --clean
-fi
-
-cd $olddir
diff --git a/WebKitTools/wx/install-unix-extras b/WebKitTools/wx/install-unix-extras
deleted file mode 100755
index 19df45c..0000000
--- a/WebKitTools/wx/install-unix-extras
+++ /dev/null
@@ -1,172 +0,0 @@
-#!/bin/sh
-
-# Copyright (C) 2005, 2006 Apple Computer, Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
-# its contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# A script to download the extra libraries needed to build WebKit on UNIX-based OSes.
-# libxml/libxslt need to be added, but so far I've had them on all the (UNIX) machines
-# I've tested on, so I don't have a machine to test the code on.
-
-DL_CMD="curl -L"
-
-scriptDir="$(cd $(dirname $0);pwd)"
-WK_ROOT=$scriptDir/../..
-WK_ROOTDIR=$WK_ROOT
-
-DL_DIR=/tmp/webkit-deps
-# NOTE: If you change this, make sure the dir is on the path.
-DEPS_PREFIX=$WK_ROOT/WebKitLibraries/unix
-DLLEXT=so
-
-if [ "${OSTYPE:0:6}" == "darwin" ]; then
- DLLEXT=dylib
-fi
-
-mkdir -p $DL_DIR
-mkdir -p $DEPS_PREFIX
-
-ICU_VERSION="3.4.1"
-ICU_TARBALL="icu-$ICU_VERSION.tgz"
-ICU_URL="ftp://ftp.software.ibm.com/software/globalization/icu/$ICU_VERSION/$ICU_TARBALL"
-
-# dependent app, not lib, what should we do for these?
-
-GPERF_VERSION="3.0.1"
-GPERF_TARBALL="gperf-$GPERF_VERSION.tar.gz"
-GPERF_URL="ftp://mirrors.kernel.org/gnu/gperf/$GPERF_TARBALL"
-
-PKG_CONFIG_VERSION="0.20"
-PKG_CONFIG_TARBALL="pkg-config-$PKG_CONFIG_VERSION.tar.gz"
-PKG_CONFIG_URL="http://pkgconfig.freedesktop.org/releases/$PKG_CONFIG_TARBALL"
-
-ICONV_VERSION="1.9.2"
-ICONV_TARBALL="libiconv-$ICONV_VERSION.tar.gz"
-ICONV_URL="http://ftp.gnu.org/pub/gnu/libiconv/$ICONV_TARBALL"
-
-LIBJPEG_VERSION="6b"
-LIBJPEG_TARBALL="jpegsrc.v$LIBJPEG_VERSION.tar.gz"
-LIBJPEG_URL="http://www.ijg.org/files/$LIBJPEG_TARBALL"
-
-LIBPNG_VERSION="1.2.32"
-LIBPNG_TARBALL="libpng-$LIBPNG_VERSION.tar.gz"
-LIBPNG_URL="ftp://ftp.simplesystems.org/pub/libpng/png/src/$LIBPNG_TARBALL"
-
-cd $DL_DIR
-# build ICU
-if [ `which icu-config >/dev/null 2>&1` ]; then
- $DL_CMD -o $DL_DIR/$ICU_TARBALL $ICU_URL
-
- tar xzvf $DL_DIR/$ICU_TARBALL
- cd $DL_DIR/icu/source
-
- chmod +x configure install-sh
-
- if [ "${OSTYPE:0:6}" == "darwin" ]; then
- ./configure --prefix=$DEPS_PREFIX --disable-dependency-tracking
- make CFLAGS="-O -g -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc" \
- LDFLAGS="-arch i386 -arch ppc"
- make install
- else
- ./configure --prefix=$DEPS_PREFIX
-
- make
- #make check
- make install
- fi
- cd $DL_DIR
- rm -rf icu
-fi
-
-# TODO: What would be a good way to test for this?
-if [ ! -f $DEPS_PREFIX/lib/libiconv.$DLLEXT ]; then
- $DL_CMD -o $DL_DIR/$ICONV_TARBALL $ICONV_URL
-
- tar xzvf $DL_DIR/$ICONV_TARBALL
- cd $DL_DIR/libiconv-$ICONV_VERSION
-
- if [ "${OSTYPE:0:6}" == "darwin" ]; then
- ./configure --prefix=$DEPS_PREFIX --disable-dependency-tracking
- make CFLAGS="-O -g -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc" \
- LDFLAGS="-arch i386 -arch ppc"
- make install
- else
- ./configure --prefix=$DEPS_PREFIX
-
- make
- make install
- fi
- cd $DL_DIR
- rm -rf $DL_DIR/libiconv-$ICONV_VERSION
-fi
-
-if [ ! -f $DEPS_PREFIX/lib/libjpeg.a ]; then
- $DL_CMD -o $DL_DIR/$LIBJPEG_TARBALL $LIBJPEG_URL
-
- tar xzvf $DL_DIR/$LIBJPEG_TARBALL
- cd $DL_DIR/jpeg-$LIBJPEG_VERSION
-
- # jpeg install command expects this to exist.
- mkdir -p $DEPS_PREFIX/man/man1
-
- if [ "${OSTYPE:0:6}" == "darwin" ]; then
- ./configure --prefix=$DEPS_PREFIX --disable-dependency-tracking
- make CFLAGS="-O -g -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc" \
- LDFLAGS="-arch i386 -arch ppc"
- make install
- else
- ./configure --prefix=$DEPS_PREFIX
-
- make
- fi
-
- cp libjpeg.a $DEPS_PREFIX/lib
- cp *.h $DEPS_PREFIX/include
-
- cd $DL_DIR
- rm -rf $DL_DIR/jpeg-$LIBJPEG_VERSION
-fi
-
-if [ ! -f $DEPS_PREFIX/lib/libpng.a ]; then
- $DL_CMD -o $DL_DIR/$LIBPNG_TARBALL $LIBPNG_URL
-
- tar xzvf $DL_DIR/$LIBPNG_TARBALL
- cd $DL_DIR/libpng-$LIBPNG_VERSION
-
- if [ "${OSTYPE:0:6}" == "darwin" ]; then
- ./configure --prefix=$DEPS_PREFIX --disable-dependency-tracking
- make CFLAGS="-O -g -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc" \
- LDFLAGS="-arch i386 -arch ppc"
- make install
- else
- ./configure --prefix=$DEPS_PREFIX
-
- make
- make install
- fi
-
- cd $DL_DIR
- rm -rf $DL_DIR/libpng-$LIBPNG_VERSION
-fi
diff --git a/acinclude.m4 b/acinclude.m4
deleted file mode 100644
index 5353429..0000000
--- a/acinclude.m4
+++ /dev/null
@@ -1,359 +0,0 @@
-dnl dolt, a replacement for libtool
-dnl Copyright © 2007-2008 Josh Triplett <josh@freedesktop.org>
-dnl Copying and distribution of this file, with or without modification,
-dnl are permitted in any medium without royalty provided the copyright
-dnl notice and this notice are preserved.
-dnl
-dnl To use dolt, invoke the DOLT macro immediately after the libtool macros.
-dnl Optionally, copy this file into acinclude.m4, to avoid the need to have it
-dnl installed when running autoconf on your project.
-
-AC_DEFUN([DOLT], [
-AC_REQUIRE([AC_CANONICAL_HOST])
-# dolt, a replacement for libtool
-# Josh Triplett <josh@freedesktop.org>
-AC_PATH_PROG(DOLT_BASH, bash)
-AC_MSG_CHECKING([if dolt supports this host])
-dolt_supported=yes
-if test x$DOLT_BASH = x; then
- dolt_supported=no
-fi
-if test x$GCC != xyes; then
- dolt_supported=no
-fi
-case $host in
-i?86-*-linux*|x86_64-*-linux*|powerpc-*-linux* \
-|amd64-*-freebsd*|i?86-*-freebsd*|ia64-*-freebsd*)
- pic_options='-fPIC'
- ;;
-i?86-apple-darwin*)
- pic_options='-fno-common'
- ;;
-*mingw32*)
- pic_options='-DDLL_EXPORT'
- ;;
-*)
- dolt_supported=no
- ;;
-esac
-if test x$dolt_supported = xno ; then
- AC_MSG_RESULT([no, falling back to libtool])
- LTCOMPILE='$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(COMPILE)'
- LTCXXCOMPILE='$(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXXCOMPILE)'
-else
- AC_MSG_RESULT([yes, replacing libtool])
-
-dnl Start writing out doltcompile.
- cat <<__DOLTCOMPILE__EOF__ >doltcompile
-#!$DOLT_BASH
-__DOLTCOMPILE__EOF__
- cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
-args=("$[]@")
-for ((arg=0; arg<${#args@<:@@@:>@}; arg++)) ; do
- if test x"${args@<:@$arg@:>@}" = x-o ; then
- objarg=$((arg+1))
- break
- fi
-done
-if test x$objarg = x ; then
- echo 'Error: no -o on compiler command line' 1>&2
- exit 1
-fi
-lo="${args@<:@$objarg@:>@}"
-obj="${lo%.lo}"
-if test x"$lo" = x"$obj" ; then
- echo "Error: libtool object file name \"$lo\" does not end in .lo" 1>&2
- exit 1
-fi
-objbase="${obj##*/}"
-__DOLTCOMPILE__EOF__
-
-dnl Write out shared compilation code.
- if test x$enable_shared = xyes; then
- cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
-libobjdir="${obj%$objbase}.libs"
-if test ! -d "$libobjdir" ; then
- mkdir_out="$(mkdir "$libobjdir" 2>&1)"
- mkdir_ret=$?
- if test "$mkdir_ret" -ne 0 && test ! -d "$libobjdir" ; then
- echo "$mkdir_out" 1>&2
- exit $mkdir_ret
- fi
-fi
-pic_object="$libobjdir/$objbase.o"
-args@<:@$objarg@:>@="$pic_object"
-__DOLTCOMPILE__EOF__
- cat <<__DOLTCOMPILE__EOF__ >>doltcompile
-"\${args@<:@@@:>@}" $pic_options -DPIC || exit \$?
-__DOLTCOMPILE__EOF__
- fi
-
-dnl Write out static compilation code.
-dnl Avoid duplicate compiler output if also building shared objects.
- if test x$enable_static = xyes; then
- cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
-non_pic_object="$obj.o"
-args@<:@$objarg@:>@="$non_pic_object"
-__DOLTCOMPILE__EOF__
- if test x$enable_shared = xyes; then
- cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
-"${args@<:@@@:>@}" >/dev/null 2>&1 || exit $?
-__DOLTCOMPILE__EOF__
- else
- cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
-"${args@<:@@@:>@}" || exit $?
-__DOLTCOMPILE__EOF__
- fi
- fi
-
-dnl Write out the code to write the .lo file.
-dnl The second line of the .lo file must match "^# Generated by .*libtool"
- cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
-{
-echo "# $lo - a libtool object file"
-echo "# Generated by doltcompile, not libtool"
-__DOLTCOMPILE__EOF__
-
- if test x$enable_shared = xyes; then
- cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
-echo "pic_object='.libs/${objbase}.o'"
-__DOLTCOMPILE__EOF__
- else
- cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
-echo pic_object=none
-__DOLTCOMPILE__EOF__
- fi
-
- if test x$enable_static = xyes; then
- cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
-echo "non_pic_object='${objbase}.o'"
-__DOLTCOMPILE__EOF__
- else
- cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
-echo non_pic_object=none
-__DOLTCOMPILE__EOF__
- fi
-
- cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
-} > "$lo"
-__DOLTCOMPILE__EOF__
-
-dnl Done writing out doltcompile; substitute it for libtool compilation.
- chmod +x doltcompile
- LTCOMPILE='$(top_builddir)/doltcompile $(COMPILE)'
- LTCXXCOMPILE='$(top_builddir)/doltcompile $(CXXCOMPILE)'
-
-dnl automake ignores LTCOMPILE and LTCXXCOMPILE when it has separate CFLAGS for
-dnl a target, so write out a libtool wrapper to handle that case.
-dnl Note that doltlibtool does not handle inferred tags or option arguments
-dnl without '=', because automake does not use them.
- cat <<__DOLTLIBTOOL__EOF__ > doltlibtool
-#!$DOLT_BASH
-__DOLTLIBTOOL__EOF__
- cat <<'__DOLTLIBTOOL__EOF__' >>doltlibtool
-top_builddir_slash="${0%%doltlibtool}"
-: ${top_builddir_slash:=./}
-args=()
-modeok=false
-tagok=false
-for arg in "$[]@"; do
- case "$arg" in
- --mode=compile) modeok=true ;;
- --tag=CC|--tag=CXX) tagok=true ;;
- *) args@<:@${#args[@]}@:>@="$arg" ;;
- esac
-done
-if $modeok && $tagok ; then
- . ${top_builddir_slash}doltcompile "${args@<:@@@:>@}"
-else
- exec ${top_builddir_slash}libtool "$[]@"
-fi
-__DOLTLIBTOOL__EOF__
-
-dnl Done writing out doltlibtool; substitute it for libtool.
- chmod +x doltlibtool
- LIBTOOL='$(top_builddir)/doltlibtool'
-fi
-AC_SUBST(LTCOMPILE)
-AC_SUBST(LTCXXCOMPILE)
-# end dolt
-])
-
-# ===========================================================================
-# http://autoconf-archive.cryp.to/ax_compare_version.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-# AX_COMPARE_VERSION(VERSION_A, OP, VERSION_B, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
-#
-# DESCRIPTION
-#
-# This macro compares two version strings. Due to the various number of
-# minor-version numbers that can exist, and the fact that string
-# comparisons are not compatible with numeric comparisons, this is not
-# necessarily trivial to do in a autoconf script. This macro makes doing
-# these comparisons easy.
-#
-# The six basic comparisons are available, as well as checking equality
-# limited to a certain number of minor-version levels.
-#
-# The operator OP determines what type of comparison to do, and can be one
-# of:
-#
-# eq - equal (test A == B)
-# ne - not equal (test A != B)
-# le - less than or equal (test A <= B)
-# ge - greater than or equal (test A >= B)
-# lt - less than (test A < B)
-# gt - greater than (test A > B)
-#
-# Additionally, the eq and ne operator can have a number after it to limit
-# the test to that number of minor versions.
-#
-# eq0 - equal up to the length of the shorter version
-# ne0 - not equal up to the length of the shorter version
-# eqN - equal up to N sub-version levels
-# neN - not equal up to N sub-version levels
-#
-# When the condition is true, shell commands ACTION-IF-TRUE are run,
-# otherwise shell commands ACTION-IF-FALSE are run. The environment
-# variable 'ax_compare_version' is always set to either 'true' or 'false'
-# as well.
-#
-# Examples:
-#
-# AX_COMPARE_VERSION([3.15.7],[lt],[3.15.8])
-# AX_COMPARE_VERSION([3.15],[lt],[3.15.8])
-#
-# would both be true.
-#
-# AX_COMPARE_VERSION([3.15.7],[eq],[3.15.8])
-# AX_COMPARE_VERSION([3.15],[gt],[3.15.8])
-#
-# would both be false.
-#
-# AX_COMPARE_VERSION([3.15.7],[eq2],[3.15.8])
-#
-# would be true because it is only comparing two minor versions.
-#
-# AX_COMPARE_VERSION([3.15.7],[eq0],[3.15])
-#
-# would be true because it is only comparing the lesser number of minor
-# versions of the two values.
-#
-# Note: The characters that separate the version numbers do not matter. An
-# empty string is the same as version 0. OP is evaluated by autoconf, not
-# configure, so must be a string, not a variable.
-#
-# The author would like to acknowledge Guido Draheim whose advice about
-# the m4_case and m4_ifvaln functions make this macro only include the
-# portions necessary to perform the specific comparison specified by the
-# OP argument in the final configure script.
-#
-# LAST MODIFICATION
-#
-# 2008-04-12
-#
-# COPYLEFT
-#
-# Copyright (c) 2008 Tim Toolan <toolan@ele.uri.edu>
-#
-# Copying and distribution of this file, with or without modification, are
-# permitted in any medium without royalty provided the copyright notice
-# and this notice are preserved.
-
-dnl #########################################################################
-AC_DEFUN([AX_COMPARE_VERSION], [
- AC_PROG_AWK
-
- # Used to indicate true or false condition
- ax_compare_version=false
-
- # Convert the two version strings to be compared into a format that
- # allows a simple string comparison. The end result is that a version
- # string of the form 1.12.5-r617 will be converted to the form
- # 0001001200050617. In other words, each number is zero padded to four
- # digits, and non digits are removed.
- AS_VAR_PUSHDEF([A],[ax_compare_version_A])
- A=`echo "$1" | sed -e 's/\([[0-9]]*\)/Z\1Z/g' \
- -e 's/Z\([[0-9]]\)Z/Z0\1Z/g' \
- -e 's/Z\([[0-9]][[0-9]]\)Z/Z0\1Z/g' \
- -e 's/Z\([[0-9]][[0-9]][[0-9]]\)Z/Z0\1Z/g' \
- -e 's/[[^0-9]]//g'`
-
- AS_VAR_PUSHDEF([B],[ax_compare_version_B])
- B=`echo "$3" | sed -e 's/\([[0-9]]*\)/Z\1Z/g' \
- -e 's/Z\([[0-9]]\)Z/Z0\1Z/g' \
- -e 's/Z\([[0-9]][[0-9]]\)Z/Z0\1Z/g' \
- -e 's/Z\([[0-9]][[0-9]][[0-9]]\)Z/Z0\1Z/g' \
- -e 's/[[^0-9]]//g'`
-
- dnl # In the case of le, ge, lt, and gt, the strings are sorted as necessary
- dnl # then the first line is used to determine if the condition is true.
- dnl # The sed right after the echo is to remove any indented white space.
- m4_case(m4_tolower($2),
- [lt],[
- ax_compare_version=`echo "x$A
-x$B" | sed 's/^ *//' | sort -r | sed "s/x${A}/false/;s/x${B}/true/;1q"`
- ],
- [gt],[
- ax_compare_version=`echo "x$A
-x$B" | sed 's/^ *//' | sort | sed "s/x${A}/false/;s/x${B}/true/;1q"`
- ],
- [le],[
- ax_compare_version=`echo "x$A
-x$B" | sed 's/^ *//' | sort | sed "s/x${A}/true/;s/x${B}/false/;1q"`
- ],
- [ge],[
- ax_compare_version=`echo "x$A
-x$B" | sed 's/^ *//' | sort -r | sed "s/x${A}/true/;s/x${B}/false/;1q"`
- ],[
- dnl Split the operator from the subversion count if present.
- m4_bmatch(m4_substr($2,2),
- [0],[
- # A count of zero means use the length of the shorter version.
- # Determine the number of characters in A and B.
- ax_compare_version_len_A=`echo "$A" | $AWK '{print(length)}'`
- ax_compare_version_len_B=`echo "$B" | $AWK '{print(length)}'`
-
- # Set A to no more than B's length and B to no more than A's length.
- A=`echo "$A" | sed "s/\(.\{$ax_compare_version_len_B\}\).*/\1/"`
- B=`echo "$B" | sed "s/\(.\{$ax_compare_version_len_A\}\).*/\1/"`
- ],
- [[0-9]+],[
- # A count greater than zero means use only that many subversions
- A=`echo "$A" | sed "s/\(\([[0-9]]\{4\}\)\{m4_substr($2,2)\}\).*/\1/"`
- B=`echo "$B" | sed "s/\(\([[0-9]]\{4\}\)\{m4_substr($2,2)\}\).*/\1/"`
- ],
- [.+],[
- AC_WARNING(
- [illegal OP numeric parameter: $2])
- ],[])
-
- # Pad zeros at end of numbers to make same length.
- ax_compare_version_tmp_A="$A`echo $B | sed 's/./0/g'`"
- B="$B`echo $A | sed 's/./0/g'`"
- A="$ax_compare_version_tmp_A"
-
- # Check for equality or inequality as necessary.
- m4_case(m4_tolower(m4_substr($2,0,2)),
- [eq],[
- test "x$A" = "x$B" && ax_compare_version=true
- ],
- [ne],[
- test "x$A" != "x$B" && ax_compare_version=true
- ],[
- AC_WARNING([illegal OP parameter: $2])
- ])
- ])
-
- AS_VAR_POPDEF([A])dnl
- AS_VAR_POPDEF([B])dnl
-
- dnl # Execute ACTION-IF-TRUE / ACTION-IF-FALSE.
- if test "$ax_compare_version" = "true" ; then
- m4_ifvaln([$4],[$4],[:])dnl
- m4_ifvaln([$5],[else $5])dnl
- fi
-]) dnl AX_COMPARE_VERSION
diff --git a/autogen.sh b/autogen.sh
deleted file mode 100755
index a929538..0000000
--- a/autogen.sh
+++ /dev/null
@@ -1,57 +0,0 @@
-#! /bin/sh
-
-# Allow invocation from a separate build directory; in that case, we change
-# to the source directory to run the auto*, then change back before running configure
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-
-ORIGDIR=`pwd`
-cd $srcdir
-
-DIE=0
-
-(autoconf --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "You must have autoconf installed to compile $PROJECT."
- echo "Install the appropriate package for your distribution,"
- echo "or get the source tarball at http://ftp.gnu.org/gnu/autoconf/"
- DIE=1
-}
-
-(automake --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "You must have automake installed to compile $PROJECT."
- echo "Install the appropriate package for your distribution,"
- echo "or get the source tarball at http://ftp.gnu.org/gnu/automake/"
- DIE=1
-}
-
-LIBTOOLIZE=libtoolize
-($LIBTOOLIZE --version) < /dev/null > /dev/null 2>&1 || {
- LIBTOOLIZE=glibtoolize
- ($LIBTOOLIZE --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "You must have libtool installed to compile $PROJECT."
- echo "Install the appropriate package for your distribution,"
- echo "or get the source tarball at http://ftp.gnu.org/gnu/libtool/"
- DIE=1
- }
-}
-
-if test "$DIE" -eq 1; then
- exit 1
-fi
-
-rm -rf $top_srcdir/autom4te.cache
-
-touch README INSTALL
-
-aclocal || exit $?
-$LIBTOOLIZE --force || exit $?
-autoheader || exit $?
-automake --foreign --add-missing || exit $?
-autoconf || exit $?
-
-cd $ORIGDIR || exit 1
-
-$srcdir/configure $AUTOGEN_CONFIGURE_ARGS "$@" || exit $?
diff --git a/configure.ac b/configure.ac
deleted file mode 100644
index e1cf6ad..0000000
--- a/configure.ac
+++ /dev/null
@@ -1,748 +0,0 @@
-AC_PREREQ(2.59)
-
-m4_define([webkit_major_version], [1])
-m4_define([webkit_minor_version], [0])
-m4_define([webkit_micro_version], [3])
-
-AC_INIT([WebKit],[webkit_major_version.webkit_minor_version.webkit_micro_version],[http://bugs.webkit.org/])
-
-AC_CONFIG_HEADERS([autotoolsconfig.h])
-AC_CANONICAL_SYSTEM
-
-WEBKIT_MAJOR_VERSION=webkit_major_version
-WEBKIT_MINOR_VERSION=webkit_minor_version
-WEBKIT_MICRO_VERSION=webkit_micro_version
-AC_SUBST(WEBKIT_MAJOR_VERSION)
-AC_SUBST(WEBKIT_MINOR_VERSION)
-AC_SUBST(WEBKIT_MICRO_VERSION)
-
-AC_CONFIG_SRCDIR([WebCore/config.h])
-
-dnl # Libtool library version, not to confuse with API version
-dnl # see http://www.gnu.org/software/libtool/manual.html#Versioning
-LIBWEBKITGTK_VERSION=1:0:0
-AC_SUBST([LIBWEBKITGTK_VERSION])
-
-AM_INIT_AUTOMAKE([foreign subdir-objects])
-
-# host checking - inspired by the GTK+ configure.in
-# TODO: os_mac, os_bsd
-AC_MSG_CHECKING([for native Win32])
-case "$host" in
- *-*-mingw*)
- os_win32=yes
- ;;
- *)
- os_win32=no
- ;;
-esac
-AC_MSG_RESULT([$os_win32])
-
-case "$host" in
- *-*-linux*)
- os_linux=yes
- ;;
- *-*-freebsd*)
- os_freebsd=yes
- ;;
- *-*-darwin*)
- os_darwin=yes
- ;;
-esac
-
-case "$host_os" in
- gnu* | linux* | k*bsd*-gnu)
- os_gnu=yes
- ;;
- *)
- os_gnu=no
- ;;
-esac
-
-# If CXXFLAGS and CFLAGS are unset, default to empty.
-# This is to tell automake not to include '-g' if CXXFLAGS is not set
-# For more info - http://www.gnu.org/software/automake/manual/autoconf.html#C_002b_002b-Compiler
-if test -z "$CXXFLAGS"; then
- CXXFLAGS=""
-fi
-if test -z "$CFLAGS"; then
- CFLAGS=""
-fi
-
-AM_PROG_CC_STDC
-AM_PROG_CC_C_O
-AC_PROG_CXX
-AC_PROG_INSTALL
-AC_DISABLE_STATIC
-AC_LIBTOOL_WIN32_DLL
-AC_PROG_LIBTOOL
-AC_SYS_LARGEFILE
-DOLT
-
-# check for -fvisibility=hidden compiler support (GCC >= 4)
-saved_CFLAGS="$CFLAGS"
-CFLAGS="$CFLAGS -fvisibility=hidden -fvisibility-inlines-hidden"
-AC_MSG_CHECKING([if ${CXX} supports -fvisibility=hidden -fvisibility-inlines-hidden])
-AC_COMPILE_IFELSE([char foo;],
- [ AC_MSG_RESULT([yes])
- SYMBOL_VISIBILITY="-fvisibility=hidden" SYMBOL_VISIBILITY_INLINES="-fvisibility-inlines-hidden" ],
- AC_MSG_RESULT([no]))
-CFLAGS="$saved_CFLAGS"
-AC_SUBST(SYMBOL_VISIBILITY)
-AC_SUBST(SYMBOL_VISIBILITY_INLINES)
-
-AC_PATH_PROG(PERL, perl)
-if test -z "$PERL"; then
- AC_MSG_ERROR([You need 'perl' to compile WebKit])
-fi
-
-AC_PATH_PROG(BISON, bison)
-if test -z "$BISON"; then
- AC_MSG_ERROR([You need the 'bison' parser generator to compile WebKit])
-fi
-
-AC_PATH_PROG(FLEX, flex)
-if test -z "$FLEX"; then
- AC_MSG_ERROR([You need the 'flex' lexer generator to compile WebKit])
-else
- FLEX_VERSION=`$FLEX --version | sed 's,.*\ \([0-9]*\.[0-9]*\.[0-9]*\)$,\1,'`
- AX_COMPARE_VERSION([2.5.33],[gt],[$FLEX_VERSION],
- AC_MSG_WARN([You need at least version 2.5.33 of the 'flex' lexer generator to compile WebKit correctly]))
-fi
-
-AC_PATH_PROG(GPERF, gperf)
-if test -z "$GPERF"; then
- AC_MSG_ERROR([You need the 'gperf' hash function generator to compile WebKit])
-fi
-
-AC_PATH_PROG(MV, mv)
-if test -z "$MV"; then
- AC_MSG_ERROR([You need 'mv' to compile WebKit])
-fi
-
-# GTK+ port only
-# Check for glib-genmarshal and glib-mkenums
-AC_PATH_PROG([GLIB_GENMARSHAL], [glib-genmarshal])
-AC_PATH_PROG([GLIB_MKENUMS],[glib-mkenums])
-if test -z "$GLIB_GENMARSHAL" || test -z "$GLIB_MKENUMS"; then
- AC_MSG_ERROR([You need the GLib dev tools in your path])
-fi
-
-# Check whether a C++ was found (AC_PROG_CXX sets $CXX to "g++" even when it
-# doesn't exist)
-AC_LANG_PUSH([C++])
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],[],[AC_MSG_ERROR([No C++ compiler found])])
-AC_LANG_POP([C++])
-
-# C/C++ Language Features
-AC_C_CONST
-AC_C_INLINE
-AC_C_VOLATILE
-
-# C/C++ Headers
-AC_HEADER_STDC
-AC_HEADER_STDBOOL
-
-# pthread (not needed on Windows)
-if test "$os_win32" = "no"; then
-AC_CHECK_HEADERS([pthread.h],
- AC_DEFINE([HAVE_PTHREAD_H],[1],[Define if pthread exists]),
- AC_MSG_ERROR([pthread support is required to build WebKit]))
-fi
-
-# check for libjpeg the way Gtk does it.
-AC_CHECK_LIB(jpeg, jpeg_destroy_decompress,
- jpeg_ok=yes, jpeg_ok=no
- AC_MSG_ERROR([JPEG library (libjpeg) not found]))
-if test "$jpeg_ok" = yes; then
- AC_MSG_CHECKING([for jpeglib])
- AC_TRY_CPP(
-[#include <stdio.h>
-#undef PACKAGE
-#undef VERSION
-#undef HAVE_STDLIB_H
-#include <jpeglib.h>],
- jpeg_ok=yes,
- jpeg_ok=no)
- AC_MSG_RESULT($jpeg_ok)
- if test "$jpeg_ok" = yes; then
- JPEG_LIBS="-ljpeg"
- # should we check for progressive JPEG like GTK+ as well?
- else
- AC_MSG_ERROR([JPEG library (libjpeg) not found])
- fi
-fi
-AC_SUBST([JPEG_LIBS])
-
-# check for pkg-config
-AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
-if test "$PKG_CONFIG" = "no"; then
- AC_MSG_ERROR([Cannot find pkg-config, make sure it is installed in your PATH])
-fi
-
-# Check for libpng the way Gtk+ does it
-AC_MSG_CHECKING(for libpng12)
-if $PKG_CONFIG --exists libpng12 ; then
- AC_MSG_RESULT(yes)
- PNG_LIBS=`$PKG_CONFIG --libs libpng12`
-else
- AC_MSG_RESULT(no)
- AC_CHECK_LIB(png, png_read_info,
- [AC_CHECK_HEADER(png.h,
- png_ok=yes,
- png_ok=no)],
- AC_MSG_ERROR([PNG library (libpng) not found]), -lz -lm)
- if test "$png_ok" = yes; then
- AC_MSG_CHECKING([for png_structp in png.h])
- AC_TRY_COMPILE([#include <png.h>],
- [png_structp pp; png_infop info; png_colorp cmap; png_create_read_struct;],
- png_ok=yes,
- png_ok=no)
- AC_MSG_RESULT($png_ok)
- if test "$png_ok" = yes; then
- PNG_LIBS='-lpng -lz'
- else
- AC_MSG_ERROR([PNG library (libpng) not found])
- fi
- else
- AC_MSG_ERROR([PNG library (libpng) not found])
- fi
-fi
-AC_SUBST([PNG_LIBS])
-
-# determine the Unicode backend
-AC_MSG_CHECKING([the Unicode backend to use])
-AC_ARG_WITH(unicode_backend,
- AC_HELP_STRING([--with-unicode-backend=@<:@icu@:>@],
- [Select Unicode backend [default=icu]]),
- [],[unicode_backend="icu"])
-
-case "$unicode_backend" in
- icu) ;;
- *) AC_MSG_ERROR([Invalid Unicode backend: must be icu.]) ;;
-esac
-
-AC_MSG_RESULT([$unicode_backend])
-
-if test "$unicode_backend" = "icu"; then
- if test "$os_darwin" = "yes"; then
- UNICODE_CFLAGS="-I\$(srcdir)/JavaScriptCore/icu -I\$(srcdir)/WebCore/icu"
- UNICODE_LIBS="-licucore"
- elif test "$os_win32" = "yes"; then
- UNICODE_CFLAGS=""
- UNICODE_LIBS="-licuin -licuuc"
- else
- AC_PATH_PROG(icu_config, icu-config, no)
- if test "$icu_config" = "no"; then
- AC_MSG_ERROR([Cannot find icu-config. The ICU library is needed.])
- fi
-
- # We don't use --cflags as this gives us a lot of things that we don't
- # necessarily want, like debugging and optimization flags
- # See man (1) icu-config for more info.
- UNICODE_CFLAGS=`$icu_config --cppflags`
- UNICODE_LIBS=`$icu_config --ldflags`
- fi
-fi
-
-AC_SUBST([UNICODE_CFLAGS])
-AC_SUBST([UNICODE_LIBS])
-
-# determine the GDK/GTK+ target
-AC_MSG_CHECKING([the target windowing system])
-AC_ARG_WITH(target,
- AC_HELP_STRING([--with-target=@<:@x11/win32/quartz/directfb@:>@],
- [Select webkit target [default=x11]]),
- [],[with_target="x11"])
-
-case "$with_target" in
- x11|win32|quartz|directfb) ;;
- *) AC_MSG_ERROR([Invalid target: must be x11, quartz, win32, or directfb.]) ;;
-esac
-
-AC_MSG_RESULT([$with_target])
-
-AC_MSG_CHECKING([for Hildon UI extensions])
-AC_ARG_WITH(hildon,
- AC_HELP_STRING([--with-hildon],
- [Use Hildon UI extensions [default=no]]),
- [],[with_hildon="no"])
-AC_MSG_RESULT([$with_hildon])
-
-if test "$with_hildon" = "yes"; then
- HILDON_CPPFLAGS="-DMAEMO_CHANGES"
- PKG_CHECK_MODULES([HILDON], [hildon-1])
- AC_SUBST([HILDON_CPPFLAGS])
- AC_SUBST([HILDON_CFLAGS])
- AC_SUBST([HILDON_LIBS])
-fi
-
-# determine the http backend
-AC_MSG_CHECKING([the HTTP backend to use])
-AC_ARG_WITH(http_backend,
- AC_HELP_STRING([--with-http-backend=@<:@curl/soup@:>@],
- [Select HTTP backend [default=curl]]),
- [],[with_http_backend="curl"])
-
-case "$with_http_backend" in
- curl|soup) ;;
- *) AC_MSG_ERROR([Invalid HTTP backend: must be curl, soup.]) ;;
-esac
-
-AC_MSG_RESULT([$with_http_backend])
-
-# minimum base dependencies
-CAIRO_REQUIRED_VERSION=1.2
-FONTCONFIG_REQUIRED_VERSION=2.4
-FREETYPE2_REQUIRED_VERSION=9.0
-LIBXML_REQUIRED_VERSION=2.6
-
-# minimum GTK+ base dependencies
-GLIB_REQUIRED_VERSION=2.0
-GOBJECT_REQUIRED_VERSION=2.0
-GTHREAD_REQUIRED_VERSION=2.0
-PANGO_REQUIRED_VERSION=1.0
-GTK_REQUIRED_VERSION=2.8
-
-# optional modules
-LIBCURL_REQUIRED_VERSION=7.15
-LIBSOUP_REQUIRED_VERSION=2.23
-LIBXSLT_REQUIRED_VERSION=1.1.7
-SQLITE_REQUIRED_VERSION=3.0
-GSTREAMER_REQUIRED_VERSION=0.10
-
-PKG_CHECK_MODULES([GLOBALDEPS],
- [glib-2.0 >= $GLIB_REQUIRED_VERSION
- gobject-2.0 >= $GOBJECT_REQUIRED_VERSION
- gthread-2.0 >= $GTHREAD_REQUIRED_VERSION])
-AC_SUBST([GLOBALDEPS_CFLAGS])
-AC_SUBST([GLOBALDEPS_LIBS])
-
-PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= $LIBXML_REQUIRED_VERSION)
-AC_SUBST(LIBXML_CFLAGS)
-AC_SUBST(LIBXML_LIBS)
-
-PKG_CHECK_MODULES(PANGO, pango >= $PANGO_REQUIRED_VERSION)
-AC_SUBST(PANGO_CFLAGS)
-AC_SUBST(PANGO_LIBS)
-
-# check for target-specific dependencies
-if test "$with_target" = "directfb"; then
- PKG_CHECK_MODULES(CAIRO, cairo-directfb >= $CAIRO_REQUIRED_VERSION)
- PKG_CHECK_MODULES(GTK, gtk+-directfb-2.0 >= $GTK_REQUIRED_VERSION)
- AC_DEFINE([WTF_PLATFORM_DIRECTFB],[1],[Define if target is DirectFB])
-else
- PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_REQUIRED_VERSION)
- PKG_CHECK_MODULES(GTK, gtk+-2.0 >= $GTK_REQUIRED_VERSION)
-
- if test "$with_target" = "x11" && test "$os_win32" = "no"; then
- # check for XT
- PKG_CHECK_MODULES([XT],
- [xt],
- [xt_has_pkg_config=yes],
- [xt_has_pkg_config=no])
- # some old versions of Xt do not provide xt.pc, so try to link against Xt
- # and if it's installed fall back to just adding -lXt
- if test "$xt_has_pkg_config" = "no"; then
- # using AC_CHECK_LIB instead of AC_SEARCH_LIB is fine in this case as
- # we don't care about the XtOpenDisplay symbol but only about the
- # existence of libXt
- AC_CHECK_LIB([Xt], [XtOpenDisplay],
- [XT_CFLAGS=""; XT_LIBS="-lXt"],
- [AC_MSG_ERROR([X Toolkit Intrinsics library (libXt) not found])])
- fi
- AC_SUBST([XT_CFLAGS])
- AC_SUBST([XT_LIBS])
- AC_DEFINE([WTF_PLATFORM_X11],[1],[Define if target is X11])
- fi
-fi
-AC_SUBST(GTK_CFLAGS)
-AC_SUBST(GTK_LIBS)
-AC_SUBST(CAIRO_CFLAGS)
-AC_SUBST(CAIRO_LIBS)
-
-# check whether to build with debugging enabled
-AC_MSG_CHECKING([whether to do a debug build])
-AC_ARG_ENABLE(debug,
- AC_HELP_STRING([--enable-debug],
- [turn on debugging [default=no]]),
- [],[enable_debug="no"])
-AC_MSG_RESULT([$enable_debug])
-
-# check whether to enable optimized builds
-AC_MSG_CHECKING([whether to enable optimized builds])
-AC_ARG_ENABLE(optimizations,
- AC_HELP_STRING([--enable-optimizations],
- [turn on optimize builds (GCC only)
- [default=yes]]),
- [enable_optimizations=$enableval],
- [if test "$enable_debug" = "yes"; then enable_optimizations="no"; else enable_optimizations="yes"; fi])
-AC_MSG_RESULT([$enable_optimizations])
-
-# check whether to enable dashboard support
-AC_MSG_CHECKING([whether to enable Dashboard support])
-AC_ARG_ENABLE(dashboard_support,
- AC_HELP_STRING([--enable-dashboard-support],
- [enable Dashboard support [default=yes]]),
- [],[enable_dashboard_support="yes"])
-AC_MSG_RESULT([$enable_dashboard_support])
-
-# check whether to enable HTML5 Offline Web Applications support
-AC_MSG_CHECKING([whether to enable HTML5 offline web applications support])
-AC_ARG_ENABLE(offline_web_applications,
- AC_HELP_STRING([--enable-offline-web-applications],
- [enable HTML5 offline web applications support [default=yes]]),
- [],[enable_offline_web_applications="yes"])
-AC_MSG_RESULT([$enable_offline_web_applications])
-
-# check whether to enable HTML5 client-side session and persitent storage support
-AC_MSG_CHECKING([whether to enable HTML5 client-side session and persistent storage support])
-AC_ARG_ENABLE(dom_storage,
- AC_HELP_STRING([--enable-dom-storage],
- [enable HTML5 client-side session and persistent storage support [default=yes]]),
- [],[enable_dom_storage="yes"])
-AC_MSG_RESULT([$enable_dom_storage])
-
-# check whether to build with database support
-AC_MSG_CHECKING([whether to enable HTML5 client-side database storage support])
-AC_ARG_ENABLE(database,
- AC_HELP_STRING([--enable-database],
- [enable HTML5 client-side database storage support [default=yes]]),
- [],[enable_database="yes"])
-AC_MSG_RESULT([$enable_database])
-
-# check whether to build with icon database support
-AC_MSG_CHECKING([whether to enable icon database support])
-AC_ARG_ENABLE(icon_database,
- AC_HELP_STRING([--enable-icon-database],
- [enable icon database [default=yes]]),
- [],[enable_icon_database="yes"])
-AC_MSG_RESULT([$enable_icon_database])
-
-# check whether to enable HTML5 audio/video support
-AC_MSG_CHECKING([whether to enable HTML5 video support])
-AC_ARG_ENABLE(video,
- AC_HELP_STRING([--enable-video],
- [enable HTML5 video support [default=no]]),
- [],[enable_video="no"])
-AC_MSG_RESULT([$enable_video])
-
-# check whether to enable XPath support
-AC_MSG_CHECKING([whether to enable XPath support])
-AC_ARG_ENABLE(xpath,
- AC_HELP_STRING([--enable-xpath],
- [enable support for XPath [default=yes]]),
- [],[enable_xpath="yes"])
-AC_MSG_RESULT([$enable_xpath])
-
-# check whether to enable XSLT support
-AC_MSG_CHECKING([whether to enable XSLT support])
-AC_ARG_ENABLE(xslt,
- AC_HELP_STRING([--enable-xslt],
- [enable support for XSLT [default=yes]]),
- [],[enable_xslt="yes"])
-AC_MSG_RESULT([$enable_xslt])
-
-# check whether to enable SVG support
-AC_MSG_CHECKING([whether to enable SVG support])
-AC_ARG_ENABLE(svg,
- AC_HELP_STRING([--enable-svg],
- [enable support for SVG [default=yes]]),
- [],[enable_svg="yes"])
-AC_MSG_RESULT([$enable_svg])
-
-# turn off svg features if --disable-svg is requested
-if test "$enable_svg" = "no"; then
- enable_svg_animation=no
- enable_svg_filters=no
- enable_svg_fonts=no
- enable_svg_foreign_object=no
- enable_svg_as_image=no
- enable_svg_use_element=no
-fi
-
-# check whether to enable support for SVG animation
-AC_MSG_CHECKING([whether to enable support for SVG animation])
-AC_ARG_ENABLE(svg_animation,
- AC_HELP_STRING([--enable-svg-animation],
- [enable support for SVG animation (experimental) [default=yes]]),
- [],[enable_svg_animation="yes"])
-AC_MSG_RESULT([$enable_svg_animation])
-
-# check whether to enable support for SVG filters
-AC_MSG_CHECKING([whether to enable support for SVG filters])
-AC_ARG_ENABLE(svg_filters,
- AC_HELP_STRING([--enable-svg-filters],
- [enable support for SVG filters (experimental) [default=no]]),
- [],[enable_svg_filters="no"])
-AC_MSG_RESULT([$enable_svg_filters])
-
-# check whether to enable support for SVG fonts
-AC_MSG_CHECKING([whether to enable support for SVG fonts])
-AC_ARG_ENABLE(svg_fonts,
- AC_HELP_STRING([--enable-svg-fonts],
- [enable support for SVG fonts (experimental) [default=yes]]),
- [],[enable_svg_fonts="yes"])
-AC_MSG_RESULT([$enable_svg_fonts])
-
-# check whether to enable foreign objects support for SVG
-AC_MSG_CHECKING([whether to enable support for SVG foreign objects])
-AC_ARG_ENABLE(svg_foreign_object,
- AC_HELP_STRING([--enable-svg-foreign-object],
- [enable support for SVG foreign objects (experimental) [default=yes]]),
- [],[enable_svg_foreign_object="yes"])
-AC_MSG_RESULT([$enable_svg_foreign_object])
-
-# check whether to enable SVG As Image support
-AC_MSG_CHECKING([whether to enable SVG as Image support])
-AC_ARG_ENABLE(svg_as_image,
- AC_HELP_STRING([--enable-svg-as-image],
- [enable SVG as Image support (experimental) [default=yes]]),
- [],[enable_svg_as_image="yes"])
-AC_MSG_RESULT([$enable_svg_as_image])
-
-# check whether to enable SVG USE element support
-AC_MSG_CHECKING([whether to enable support for SVG use element])
-AC_ARG_ENABLE(svg_use_element,
- AC_HELP_STRING([--enable-svg-use-element],
- [enable SVG use element support (experimental) [default=yes]]),
- [],[enable_svg_use_element="yes"])
-AC_MSG_RESULT([$enable_svg_use_element])
-
-# check for SVG features, enabling SVG if necessary
-if test "$enable_svg_animation" = "yes" || \
- test "$enable_svg_filters" = "yes" || \
- test "$enable_svg_fonts" = "yes" || \
- test "$enable_svg_foreign_object" = "yes" || \
- test "$enable_svg_as_image" = "yes" || \
- test "$enable_svg_use_element" = "yes"; then
- svg_flags=yes
- if test "$enable_svg" = "no"; then
- AC_MSG_WARN([SVG feature(s) requested but SVG is disabled.. Enabling SVG support])
- enable_svg=yes
- fi
-fi
-
-# check whether to enable code coverage
-AC_MSG_CHECKING([whether to enable code coverage support])
-AC_ARG_ENABLE(coverage,
- AC_HELP_STRING([--enable-coverage],
- [enable code coverage support [default=no]]),
- [],[enable_coverage="no"])
-AC_MSG_RESULT([$enable_coverage])
-
-# check whether to enable FastMalloc
-AC_MSG_CHECKING([whether to enable optimized memory allocator])
-AC_ARG_ENABLE(fast_malloc,
- AC_HELP_STRING([--enable-fast-malloc],
- [enable optimized memory allocator default=yes, default=no for debug builds]),
- [],[if test "$enable_debug" = "yes"; then enable_fast_malloc="no"; else enable_fast_malloc="yes"; fi])
-AC_MSG_RESULT([$enable_fast_malloc])
-
-AC_MSG_CHECKING([whether to enable JIT compilation])
-AC_ARG_ENABLE([jit],
- AC_HELP_STRING([--enable-jit],
- [Enable JIT compilation default=yes]),
- [],[enable_jit="yes"])
-if test "$enable_jit" = "yes"; then
- case "$target_cpu" in
- i*86)
- AC_DEFINE([ENABLE_CTI], [1], [Define to enable CTI])
- AC_DEFINE([ENABLE_WREC], [1], [Define to enable WREC])
- ;;
- *)
- enable_jit="no (CPU '$target_cpu' not supported)"
- ;;
- esac
-fi
-AC_MSG_RESULT([$enable_jit])
-
-# determine the font backend
-AC_MSG_CHECKING([the font backend to use])
-AC_ARG_WITH(font_backend,
- AC_HELP_STRING([--with-font-backend=@<:@freetype/pango@:>@],
- [Select font backend [default=freetype]]),
- [],[with_font_backend="freetype"])
-
-case "$with_font_backend" in
- freetype|pango) ;;
- *) AC_MSG_ERROR([Invalid font backend: must be freetype or pango.]) ;;
-esac
-AC_MSG_RESULT([$with_font_backend])
-
-# Add '-g' flag to gcc if it's debug build
-if test "$enable_debug" = "yes"; then
- CXXFLAGS="$CXXFLAGS -g"
- CFLAGS="$CFLAGS -g"
-else
- AC_DEFINE([NDEBUG], [1], [Define to disable debugging features])
-fi
-
-# Add the appropriate 'O' level for optimized builds
-if test "$enable_optimizations" = "yes"; then
- CXXFLAGS="$CXXFLAGS -O2"
- CFLAGS="$CFLAGS -O2"
-else
- CXXFLAGS="$CXXFLAGS -O0"
- CFLAGS="$CFLAGS -O0"
-fi
-
-# check if curl is available
-if test "$with_http_backend" = "curl"; then
- PKG_CHECK_MODULES([LIBCURL],
- [libcurl >= $LIBCURL_REQUIRED_VERSION])
- if test "$os_win32" = "yes"; then
- LIBCURL_LIBS="$LIBCURL_LIBS -lws2_32"
- fi
- AC_SUBST([LIBCURL_CFLAGS])
- AC_SUBST([LIBCURL_LIBS])
-fi
-
-if test "$with_http_backend" = "soup"; then
- PKG_CHECK_MODULES([LIBSOUP],
- [libsoup-2.4 >= $LIBSOUP_REQUIRED_VERSION])
- AC_SUBST([LIBSOUP_CFLAGS])
- AC_SUBST([LIBSOUP_LIBS])
-fi
-
-# check if FreeType/FontConfig are available
-if test "$with_font_backend" = "freetype"; then
- if test "$with_target" = "directfb"; then
- PKG_CHECK_MODULES([FREETYPE],
- [fontconfig >= $FONTCONFIG_REQUIRED_VERSION
- freetype2 >= $FREETYPE2_REQUIRED_VERSION])
- else
- PKG_CHECK_MODULES([FREETYPE],
- [cairo-ft
- pangoft2
- fontconfig >= $FONTCONFIG_REQUIRED_VERSION
- freetype2 >= $FREETYPE2_REQUIRED_VERSION])
- fi
- AC_SUBST([FREETYPE_CFLAGS])
- AC_SUBST([FREETYPE_LIBS])
-fi
-
-# check if sqlite 3 is available
-if test "$enable_icon_database" = "yes" || \
- test "$enable_database" = "yes" || \
- test "$enable_offline_web_applications" = "yes" || \
- test "$enable_dom_storage" = "yes"; then
- PKG_CHECK_MODULES([SQLITE3], [sqlite3 >= $SQLITE_REQUIRED_VERSION])
- AC_SUBST([SQLITE3_CFLAGS])
- AC_SUBST([SQLITE3_LIBS])
-fi
-
-# check if libxslt is available
-if test "$enable_xslt" = "yes"; then
- PKG_CHECK_MODULES([LIBXSLT],[libxslt >= $LIBXSLT_REQUIRED_VERSION])
- AC_SUBST([LIBXSLT_CFLAGS])
- AC_SUBST([LIBXSLT_LIBS])
-fi
-
-# check if gstreamer is available
-if test "$enable_video" = "yes"; then
- PKG_CHECK_MODULES([GSTREAMER],
- [gstreamer-0.10 >= $GSTREAMER_REQUIRED_VERSION
- gstreamer-base-0.10,
- gstreamer-plugins-base-0.10])
- AC_SUBST([GSTREAMER_CFLAGS])
- AC_SUBST([GSTREAMER_LIBS])
-fi
-
-# check for code coverage support
-if test "$enable_coverage" = "yes"; then
- COVERAGE_CFLAGS="-MD"
- COVERAGE_LDFLAGS="-ftest-coverage -fprofile-arcs"
- AC_SUBST([COVERAGE_CFLAGS])
- AC_SUBST([COVERAGE_LDFLAGS])
-fi
-
-# check for HTML features
-if test "$enable_video" = "yes"; then
- html_flags=yes
-fi
-
-# OS conditionals
-AM_CONDITIONAL([OS_WIN32],[test "$os_win32" = "yes"])
-AM_CONDITIONAL([OS_UNIX],[test "$os_win32" = "no"])
-AM_CONDITIONAL([OS_LINUX],[test "$os_linux" = "yes"])
-AM_CONDITIONAL([OS_GNU],[test "$os_gnu" = "yes"])
-AM_CONDITIONAL([OS_FREEBSD],[test "$os_freebsd" = "yes"])
-
-# target conditionals
-AM_CONDITIONAL([TARGET_X11], [test "$with_target" = "x11"])
-AM_CONDITIONAL([TARGET_WIN32], [test "$with_target" = "win32"])
-AM_CONDITIONAL([TARGET_QUARTZ], [test "$with_target" = "quartz"])
-AM_CONDITIONAL([TARGET_DIRECTFB], [test "$with_target" = "directfb"])
-
-# HTTP backend conditionals
-AM_CONDITIONAL([USE_CURL], [test "$with_http_backend" = "curl"])
-AM_CONDITIONAL([USE_SOUP], [test "$with_http_backend" = "soup"])
-
-# Font backend conditionals
-AM_CONDITIONAL([USE_FREETYPE], [test "$with_font_backend" = "freetype"])
-AM_CONDITIONAL([USE_PANGO], [test "$with_font_backend" = "pango"])
-
-# WebKit feature conditionals
-AM_CONDITIONAL([ENABLE_DEBUG],[test "$enable_debug" = "yes"])
-AM_CONDITIONAL([ENABLE_DASHBOARD_SUPPORT],[test "$enable_dashboard_support" = "yes"])
-AM_CONDITIONAL([ENABLE_OFFLINE_WEB_APPLICATIONS],[test "$enable_offline_web_applications" = "yes"])
-AM_CONDITIONAL([ENABLE_DOM_STORAGE],[test "$enable_dom_storage" = "yes"])
-AM_CONDITIONAL([ENABLE_DATABASE],[test "$enable_database" = "yes"])
-AM_CONDITIONAL([ENABLE_ICONDATABASE],[test "$enable_icon_database" = "yes"])
-AM_CONDITIONAL([ENABLE_XPATH],[test "$enable_xpath" = "yes"])
-AM_CONDITIONAL([ENABLE_XSLT],[test "$enable_xslt" = "yes"])
-AM_CONDITIONAL([ENABLE_VIDEO],[test "$enable_video" = "yes"])
-AM_CONDITIONAL([ENABLE_SVG],[test "$enable_svg" = "yes"])
-AM_CONDITIONAL([ENABLE_SVG_ANIMATION],[test "$enable_svg_animation" = "yes"])
-AM_CONDITIONAL([ENABLE_SVG_FILTERS],[test "$enable_svg_filters" = "yes"])
-AM_CONDITIONAL([ENABLE_SVG_FONTS],[test "$enable_svg_fonts" = "yes"])
-AM_CONDITIONAL([ENABLE_SVG_FOREIGN_OBJECT],[test "$enable_svg_foreign_object" = "yes"])
-AM_CONDITIONAL([ENABLE_SVG_AS_IMAGE],[test "$enable_svg_as_image" = "yes"])
-AM_CONDITIONAL([ENABLE_SVG_USE],[test "$enable_svg_use_element" = "yes"])
-AM_CONDITIONAL([ENABLE_COVERAGE],[test "$enable_coverage" = "yes"])
-AM_CONDITIONAL([ENABLE_FAST_MALLOC],[test "$enable_fast_malloc" = "yes"])
-AM_CONDITIONAL([SVG_FLAGS],[test "$svg_flags" = "yes"])
-AM_CONDITIONAL([HTML_FLAGS],[test "$html_flags" = "yes"])
-
-AC_CONFIG_FILES([
-GNUmakefile
-WebKit/gtk/webkit-1.0.pc:WebKit/gtk/webkit.pc.in
-WebKit/gtk/webkit/webkitversion.h
-]
-)
-
-AC_OUTPUT
-
-echo "
-WebKit was configured with the following options:
-
-Build configuration:
- Enable debugging (slow) : $enable_debug
- Enable GCC build optimization : $enable_optimizations
- Code coverage support : $enable_coverage
- Unicode backend : $unicode_backend
- HTTP backend : $with_http_backend
- Font backend : $with_font_backend
- Optimized memory allocator : $enable_fast_malloc
-Features:
- JIT compilation : $enable_jit
- Dashboard support : $enable_dashboard_support
- HTML5 offline web applications support : $enable_offline_web_applications
- HTML5 client-side session and persistent storage support : $enable_dom_storage
- HTML5 client-side database storage support : $enable_database
- HTML5 video element support : $enable_video
- Icon database support : $enable_icon_database
- SVG support : $enable_svg
- SVG animation support : $enable_svg_animation
- SVG filters support : $enable_svg_filters
- SVG fonts support : $enable_svg_fonts
- SVG foreign object support : $enable_svg_foreign_object
- SVG as image support : $enable_svg_as_image
- SVG use element support : $enable_svg_use_element
- XPATH support : $enable_xpath
- XSLT support : $enable_xslt
-GTK+ configuration:
- GDK target : $with_target
- Hildon UI extensions : $with_hildon
-"
diff --git a/symbols.filter b/symbols.filter
deleted file mode 100644
index f5af6ba..0000000
--- a/symbols.filter
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-local:
-_ZSt*;
-_ZNSt*;
-};